* Type Safety and Object Cleanup
I have continued to tighten up type conversions, to aid in the quest for stronger type safety.
I have also created some new objects as typed versions of previously generic systems. This has helpfully exposed some hidden issues, but may surface some others in ways that weren’t obvious.
In some cases, I have elected to change to a different sort of collection or list, if it was also typed. This was usually one that should be faster or have lower overhead when not all the features of the original variety were required for a particular implementation or type of data. This may introduce unexpected errors due to the difference between various types being 0-based or 1-based, and some routines iterating based on assumption of the base. In every case I can think of right now (BasicDamages, DamageBreaks, SkillCosts), I went from a 1-based collection to a 0-based list, so problems may show up in two primary ways: (1) the first value in the list never being seen, or (2) the program crashing as it tries to access an item beyond the end of the list.
These factors have, of course, resulted in some changes to the object model.
NOTE: These few sentences don’t do justice to the full impact this work has, especially since it’s not particularly complex in nature. However, this is the most foundationally impactful and invasive work on the core of GCA5 in years, and affects nearly every system and subsystem in use. Hundreds of lines of code were touched, and thousands more affected by the new custom collections, with many previously generic systems replaced by strongly typed ones. If I touched everything I needed to touch correctly, you shouldn’t even notice; if not. . . all sorts of wrong.
And I’m not done yet.
Removed the remaining code for saving characters back to the old GCA4 format. (Saving to GCA4 format was removed a long time ago; this was just some left over code.)
Disabled/hid the Modifiers and Settings tabs on the Build Campaign Book dialog, as those are nowhere near working yet.