-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathMaterialForm.cs
122 lines (106 loc) · 5.54 KB
/
MaterialForm.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace cdda_item_creator
{
public partial class MaterialForm : Form
{
MaterialType main_material = new MaterialType() { BurnData = new List<BurnDataChunk>() { } };
BindingList<BurnDataChunk> burn_data_list;
private BindingSource MaterialBindingSource;
private void LoadMaterialDataBinding()
{
components = new Container();
MaterialBindingSource = new BindingSource(components);
burn_data_list = new BindingList<BurnDataChunk>(main_material.BurnData);
burnDataGrid.DataSource = new BindingSource(burn_data_list, null);
((ISupportInitialize)(MaterialBindingSource)).BeginInit();
identTextBox.DataBindings.Add(new Binding("Text", MaterialBindingSource, "Ident", true));
nameTextBox.DataBindings.Add(new Binding("Text", MaterialBindingSource, "Name", true));
bashResistUpDown.DataBindings.Add(new Binding("Value", MaterialBindingSource, "BashResist", true));
cutResistUpDown.DataBindings.Add(new Binding("Value", MaterialBindingSource, "CutResist", true));
acidResistUpDown.DataBindings.Add(new Binding("Value", MaterialBindingSource, "AcidResist", true));
elecResistUpDown.DataBindings.Add(new Binding("Value", MaterialBindingSource, "ElecResist", true));
fireResistUpDown.DataBindings.Add(new Binding("Value", MaterialBindingSource, "FireResist", true));
chipResistUpDown.DataBindings.Add(new Binding("Value", MaterialBindingSource, "ChipResist", true));
densityUpDown.DataBindings.Add(new Binding("Value", MaterialBindingSource, "Density", true));
specificHeatLiquidUpDown.DataBindings.Add(new Binding("Value", MaterialBindingSource, "SpecificHeatLiquid", true));
specificHeatSolidUpDown.DataBindings.Add(new Binding("Value", MaterialBindingSource, "SpecificHeatSolid", true));
latentHeatUpDown.DataBindings.Add(new Binding("Value", MaterialBindingSource, "LatentHeat", true));
freezePointUpDown.DataBindings.Add(new Binding("Value", MaterialBindingSource, "FreezePoint", true));
salvagedIntoTextBox.DataBindings.Add(new Binding("Text", MaterialBindingSource, "SalvagedInto", true));
repairedIntoTextBox.DataBindings.Add(new Binding("Text", MaterialBindingSource, "RepairedInto", true));
edibleCheckBox.DataBindings.Add(new Binding("Checked", MaterialBindingSource, "Edible", true));
rottingCheckBox.DataBindings.Add(new Binding("Checked", MaterialBindingSource, "Rotting", true));
softCheckBox.DataBindings.Add(new Binding("Checked", MaterialBindingSource, "Soft", true));
reinforcesCheckBox.DataBindings.Add(new Binding("Checked", MaterialBindingSource, "Reinforces", true));
bashDmgVerbTextBox.DataBindings.Add(new Binding("Text", MaterialBindingSource, "BashDmgVerb", true));
cutDmgVerbTextBox.DataBindings.Add(new Binding("Text", MaterialBindingSource, "CutDmgVerb", true));
((ISupportInitialize)(MaterialBindingSource)).EndInit();
MaterialBindingSource.Add(main_material);
}
private void LoadMaterialList()
{
materialLoaderComboBox.Items.AddRange(Program.LoadedObjectDictionary.GetList("material").ToArray());
}
public MaterialForm()
{
InitializeComponent();
LoadMaterialList();
LoadMaterialDataBinding();
}
private void UpdateMainMaterialBindings()
{
MaterialBindingSource.Clear();
MaterialBindingSource.Add(main_material);
MaterialBindingSource.ResetBindings(false);
burnDataGrid.Rows.Clear();
if (main_material.BurnData != null)
{
burn_data_list = new BindingList<BurnDataChunk>(main_material.BurnData);
burnDataGrid.DataSource = new BindingSource(burn_data_list, null);
}
}
private void materialLoaderComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (materialLoaderComboBox.SelectedIndex == -1)
{
return;
}
// TODO: selector for items, and show what mod they're from
List<MaterialType> mats = Program.LoadedObjectDictionary.GetMaterials(materialLoaderComboBox.Text);
main_material = mats[0].DeepCopy();
UpdateMainMaterialBindings();
}
private void button2_Click(object sender, EventArgs e)
{
IgnoreEmptyEnumerablesResolver contractResolver = new IgnoreEmptyEnumerablesResolver
{
NamingStrategy = new SnakeCaseNamingStrategy()
};
Clipboard.SetText(JsonConvert.SerializeObject(
main_material,
Formatting.Indented,
new JsonSerializerSettings
{
DefaultValueHandling = DefaultValueHandling.Ignore,
ContractResolver = contractResolver
}
));
}
private void clearButton_Click(object sender, EventArgs e)
{
main_material = new MaterialType() { };
materialLoaderComboBox.SelectedIndex = -1;
UpdateMainMaterialBindings();
}
}
}