/// <summary> /// Clears all <c>Lists</c> and <c>Dictionaries</c>. /// </summary> void ClearData() { Spells.Clear(); SpellsChanged.Clear(); Races.Clear(); RacesChanged.Clear(); Classes.Clear(); ClassesChanged.Clear(); }
/// <summary> /// Handles the GlobalApply it. Applies all altered data to their /// <c>structs</c>. /// </summary> /// <param name="sender"> /// <list type="bullet"> /// <item><c><see cref="it_ApplyGlobal"/></c></item> /// <item><c><see cref="it_Save"/></c></item> /// <item><c><see cref="it_Saveas"/></c></item> /// </list></param> /// <param name="e"></param> /// <remarks>See <c><see cref="Click_apply()">Click_apply()</see></c> to /// apply altered data to only the selected <c>struct</c>.</remarks> void Click_applyGlobal(object sender, EventArgs e) { SetTitleText(); // TitleText will be written again (properly) by Write2daFile() if saved. it_ApplyGlobal.Enabled = false; int total; switch (Type) { case Type2da.Spells: { Spell spell; total = Spells.Count; for (int id = 0; id != total; ++id) { spell = Spells[id]; if (spell.differ != control_Spells.bit_clean) { spell.differ = control_Spells.bit_clean; spell.isChanged = true; // this flag will be cleared by Write2daFile() SpellChanged spellchanged = SpellsChanged[id]; spell.spellinfo = spellchanged.spellinfo; spell.targetinfo = spellchanged.targetinfo; spell.effectweight = spellchanged.effectweight; spell.effecttypes = spellchanged.effecttypes; spell.damageinfo = spellchanged.damageinfo; spell.savetype = spellchanged.savetype; spell.savedctype = spellchanged.savedctype; Spells[id] = spell; SpellsChanged.Remove(id); if (id == Id) // is currently selected tree-node { HenchControl.SetResetColor(DefaultForeColor); AfterSelect_node(null, null); // refresh all displayed data for the current spell jic } Tree.Nodes[id].ForeColor = Color.Blue; } } break; } case Type2da.Racial: { Race race; total = Races.Count; for (int id = 0; id != total; ++id) { race = Races[id]; if (race.differ != control_Racial.bit_clean) { race.differ = control_Racial.bit_clean; race.isChanged = true; // this flag will be cleared by Write2daFile() RaceChanged racechanged = RacesChanged[id]; race.flags = racechanged.flags; race.feat1 = racechanged.feat1; race.feat2 = racechanged.feat2; race.feat3 = racechanged.feat3; race.feat4 = racechanged.feat4; race.feat5 = racechanged.feat5; Races[id] = race; RacesChanged.Remove(id); if (id == Id) // is currently selected tree-node { HenchControl.SetResetColor(DefaultForeColor); AfterSelect_node(null, null); // refresh all displayed data for the current race jic } Tree.Nodes[id].ForeColor = Color.Blue; } } break; } case Type2da.Classes: { Class @class; total = Classes.Count; for (int id = 0; id != total; ++id) { @class = Classes[id]; if (@class.differ != control_Classes.bit_clean) { @class.differ = control_Classes.bit_clean; @class.isChanged = true; // this flag will be cleared by Write2daFile() ClassChanged classchanged = ClassesChanged[id]; @class.flags = classchanged.flags; @class.feat1 = classchanged.feat1; @class.feat2 = classchanged.feat2; @class.feat3 = classchanged.feat3; @class.feat4 = classchanged.feat4; @class.feat5 = classchanged.feat5; @class.feat6 = classchanged.feat6; @class.feat7 = classchanged.feat7; @class.feat8 = classchanged.feat8; @class.feat9 = classchanged.feat9; @class.feat10 = classchanged.feat10; @class.feat11 = classchanged.feat11; Classes[id] = @class; ClassesChanged.Remove(id); if (id == Id) // is currently selected tree-node { HenchControl.SetResetColor(DefaultForeColor); AfterSelect_node(null, null); // refresh all displayed data for the current class jic } Tree.Nodes[id].ForeColor = Color.Blue; } } break; } } }
/// <summary> /// This funct is used only for /// <c><see cref="Click_clearCoreAiVersion()">Click_clearCoreAiVersion()</see></c>. /// </summary> /// <param name="str"></param> /// <param name="all"></param> /// <remarks>Used to be a helper for <c>Click_setCoreAiVersion()</c>.</remarks> void SetInfoVersion_spells(string str, bool all) { Spell spell; SpellChanged spellchanged; int spellinfo0, spellinfo, differ; bool dirty; int ver = Int32.Parse(str) << HENCH_SPELL_INFO_VERSION_SHIFT; // the return from the dialog. int total = Spells.Count; for (int id = 0; id != total; ++id) { spell = Spells[id]; if (dirty = ((spell.differ & control_Spells.bit_spellinfo) != 0)) { spellinfo0 = SpellsChanged[id].spellinfo; } else if (all || spell.isChanged) { spellinfo0 = spell.spellinfo; } else { continue; // ignore clean spell-structs if !all } if (spellinfo0 == 0) { continue; // if spellinfo is blank leave it blank } if ((spellinfo0 & ~hc.HENCH_SPELL_INFO_VERSION_MASK) == 0) // force-clear the version if the rest of spellinfo is blank { spellinfo = 0; } else { spellinfo = ((spellinfo0 & ~hc.HENCH_SPELL_INFO_VERSION_MASK) | ver); } if (spellinfo != spellinfo0) { if (id == Id) { HenchControl.SetMasterText(spellinfo.ToString()); // firing the TextChanged event takes care of it. } else { if (dirty) { spellchanged = SpellsChanged[id]; } else { spellchanged = new SpellChanged(); spellchanged.targetinfo = spell.targetinfo; spellchanged.effectweight = spell.effectweight; spellchanged.effecttypes = spell.effecttypes; spellchanged.damageinfo = spell.damageinfo; spellchanged.savetype = spell.savetype; spellchanged.savedctype = spell.savedctype; } spellchanged.spellinfo = spellinfo; // check it differ = control_Spells.SpellDiffer(spell, spellchanged); spell.differ = differ; Spells[id] = spell; Color color; if (differ != control_Spells.bit_clean) { SpellsChanged[id] = spellchanged; color = Color.Crimson; } else { SpellsChanged.Remove(id); if (spell.isChanged) { color = Color.Blue; } else { color = DefaultForeColor; } } Tree.Nodes[id].ForeColor = color; } } } }