-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathFFXSettings.cs
More file actions
152 lines (131 loc) · 5.96 KB
/
Copy pathFFXSettings.cs
File metadata and controls
152 lines (131 loc) · 5.96 KB
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
using System;
using System.Windows.Forms;
using System.Xml;
using StringList = System.Collections.Generic.List<string>;
namespace LiveSplit.FFX
{
public partial class FFXSettings : UserControl
{
public bool Start { get; set; }
public bool Split { get; set; }
public bool Reset { get; set; }
public bool RemoveLoads { get; set; }
public bool HasChanged;
public FFXSettings()
{
InitializeComponent();
listView.Items.Add(FFXComponent.SINSPAWN_AMMES);
listView.Items.Add(FFXComponent.KLIKK);
listView.Items.Add(FFXComponent.TROS);
listView.Items.Add(FFXComponent.PIRANHAS);
listView.Items.Add(FFXComponent.KIMAHRI);
listView.Items.Add(FFXComponent.SINSPAWN_ECHUILLES);
listView.Items.Add(FFXComponent.SINSPAWN_GENEAUX);
listView.Items.Add(FFXComponent.KILIKA_WOODS);
listView.Items.Add(FFXComponent.OBLITZERATOR);
listView.Items.Add(FFXComponent.BLITZBALL_COMPLETE);
listView.Items.Add(FFXComponent.GARUDA);
listView.Items.Add(FFXComponent.MIIHEN_HIGHROAD);
listView.Items.Add(FFXComponent.OLD_ROAD);
listView.Items.Add(FFXComponent.MUSHROOM_ROCK_ROAD);
listView.Items.Add(FFXComponent.MRR_SKIP);
listView.Items.Add(FFXComponent.SINSPAWN_GUI);
listView.Items.Add(FFXComponent.DJOSE_HIGHROAD);
listView.Items.Add(FFXComponent.MOONFLOW);
listView.Items.Add(FFXComponent.EXTRACTOR);
listView.Items.Add(FFXComponent.GUADOSALAM);
listView.Items.Add(FFXComponent.THUNDER_PLAINS);
listView.Items.Add(FFXComponent.SPHERIMORPH);
listView.Items.Add(FFXComponent.CRAWLER);
listView.Items.Add(FFXComponent.SEYMOUR);
listView.Items.Add(FFXComponent.WENDIGO);
listView.Items.Add(FFXComponent.HOME);
listView.Items.Add(FFXComponent.EVRAE);
listView.Items.Add(FFXComponent.BEVELLE_GUARDS);
listView.Items.Add(FFXComponent.BEVELLE_TRIALS);
listView.Items.Add(FFXComponent.ISAARU);
listView.Items.Add(FFXComponent.SEYMOUR_NATUS);
listView.Items.Add(FFXComponent.BIRAN_YENKE);
listView.Items.Add(FFXComponent.SEYMOUR_FLUX);
listView.Items.Add(FFXComponent.SANCTUARY_KEEPER);
listView.Items.Add(FFXComponent.YUNALESCA);
listView.Items.Add(FFXComponent.SIN_CORE);
listView.Items.Add(FFXComponent.OVERDRIVE_SIN);
listView.Items.Add(FFXComponent.SEYMOUR_OMNIS);
listView.Items.Add(FFXComponent.BRASKAS_FINAL_AEON);
listView.Items.Add(FFXComponent.YU_YEVON);
foreach (ListViewItem listViewItem in listView.Items)
listViewItem.Checked = listViewItem.Text != FFXComponent.MRR_SKIP;
HasChanged = true;
checkboxStart.DataBindings.Add("Checked", this, "Start", false, DataSourceUpdateMode.OnPropertyChanged);
checkboxReset.DataBindings.Add("Checked", this, "Reset", false, DataSourceUpdateMode.OnPropertyChanged);
checkboxSplit.DataBindings.Add("Checked", this, "Split", false, DataSourceUpdateMode.OnPropertyChanged);
checkboxRemoveLoads.DataBindings.Add("Checked", this, "RemoveLoads", false, DataSourceUpdateMode.OnPropertyChanged);
}
/// <summary>
/// Updates the list with the activated splits everytime the settings window is closed.
/// </summary>
private void ConfirmSplits(object sender, EventArgs e) => HasChanged = true;
/// <summary>
/// Returns a StringList of the activated splits and resets the appropriate flag.
/// </summary>
public StringList GetSplits()
{
StringList _activatedSplits = new StringList();
foreach (ListViewItem listViewItem in listView.Items) if (listViewItem.Checked) _activatedSplits.Add(listViewItem.Text);
HasChanged = false;
return _activatedSplits;
}
/// <summary>
/// Generates the XML serialization of the component's settings.
/// </summary>
/// <param name="doc">XML Document</param>
/// <returns>Returns the XML serialization of the component's settings.</returns>
public XmlNode GetSettings(XmlDocument doc)
{
XmlElement settingsNode = doc.CreateElement("Settings");
settingsNode.AppendChild(ToElement(doc, "Start", Start));
settingsNode.AppendChild(ToElement(doc, "Reset", Reset));
settingsNode.AppendChild(ToElement(doc, "Split", Split));
settingsNode.AppendChild(ToElement(doc, "RemoveLoads", RemoveLoads));
foreach (ListViewItem listViewItem in listView.Items)
settingsNode.AppendChild(ToElement(doc, listViewItem.Text, listViewItem.Checked));
return settingsNode;
}
/// <summary>
/// Sets the component settings based on the serialized version of the settings.
/// </summary>
public void SetSettings(XmlNode settings)
{
Start = ParseBool(settings, "Start");
Split = ParseBool(settings, "Split");
Reset = ParseBool(settings, "Reset");
RemoveLoads = ParseBool(settings, "RemoveLoads");
foreach (ListViewItem listViewItem in listView.Items)
listViewItem.Checked = ParseBool(settings, listViewItem.Text);
HasChanged = true;
}
/// <summary>
/// Parses the boolean values based on the serialized version of the settings.
/// </summary>
private static bool ParseBool(XmlNode settings, string setting, bool default_ = false)
=> settings[setting] != null ? (Boolean.TryParse(settings[setting].InnerText, out bool val) ? val : default_) : default_;
/// <summary>
/// Returns a serialized version of a setting based on its identifier.
/// </summary>
private static XmlElement ToElement<T>(XmlDocument document, string name, T value)
{
XmlElement str = document.CreateElement(name);
str.InnerText = value.ToString();
return str;
}
private void BtnCheckAll_Click(object sender, EventArgs e)
{
foreach (ListViewItem listViewItem in listView.Items) listViewItem.Checked = true;
}
private void BtnUncheckAll_Click(object sender, EventArgs e)
{
foreach (ListViewItem listViewItem in listView.Items) listViewItem.Checked = false;
}
}
}