2/19 Changelog

Hello Team Strikeforce,

I am currently in the process of uploading my latest alterations to our
Github collaboration, and figured I'd notify you all as to changes I've
made to our C++ files.

--------------------------------------------------------------------------------------------------------------
Replaced int and double fields in Item, Weapon and Armor classes with
strings to account for exception cases (e.g. formulas, "NULL"s or
objects which have special text where others have a numerical value. D&D
is weird). I don't suspect we were intending to do math with these
fields anyways, but if we are you can all use conditionals to check if
it is an exception case, and if not, use stoi or stod to convert to the
correct data type.
Modified DBIO callback functions accordingly with variable type changes
in Item.h.
Accounted for the 22 different 'class names' a Cleric's spells may be
under.
Added a "Class Name" field to the class member vector "LearnsSpells" to
better handle Clerics (else you would not be able to know which type of
Cleric could learn the spell).
Integrated the concept of Base Saves into the Class class. Base Save
varies for each class by level, so they are all stored in a vector
(vector<baseSave> baseSaves) which may be accessed with the Class member
function GetBaseSaves(). When accessing a character's base save vector,
do like so: "myChar.GetClass().GetBaseSaves()". You will then need to
find the vector element which corresponds to the character's level.
Removed limit on number of instances of custom classes DBIO can support
(was roughly 5000 of each, now should only be limited by hardware/max
size of a vector). I'm aware no one else probably knew about this, but
regardless, it's gone now.
Cleaned up some now redundant member variables.
General bug fixing.

--------------------------------------------------------------------------------------------------------------

I also decided to test how quickly all the data loads (as TJ wants me to
make a loading screen for while the user waits). I'm happy to say my
computer takes roughly 0.85-1.05 seconds to fetch all the data within
our database (including over 600 spells, 150 items, 110 feats and easily
thousands of other objects which exists in our many member-data
vectors).

Of course, our database is still lacking in Characters and their
associated member data, but I am confident those will not add on much
more time (at worst maybe another 25-50%) ...

...and also, my tests are only one data point on a particularly fast
laptop.

I've included the file "LoadFromDB.cpp" in our Github for anyone who'd
like to try running my speed test as well. It is also the general format
of what we will be putting in the program initialization section to load
everything from the database.

Should you test it on your machine, please be aware that the second time
(referred to as "To complete") refers to completing the member data of
Character by fleshing out the vector of spells, items, skills, etc which
that character has. We have those functions due to limitations in the
relational database schema (translates to OO schema very poorly). That
time is currently 0 as there are no characters in our database, it will
not be 0 once there are.

Regardless, I currently suspect any sort of elaborate loading screen is
going to be a waste of our time. I'd like to do some tests on other
computers to get a feeling for how their loading times will vary, but
I've not done anything particularly fancy with this code and I feel it's
already quite fast (for file I/O, and considering the enormous size of
this code). If it turns out that loading times can get pretty bad, I'll
come up with something to occupy the user while the program loads.

--------------------------------------------------------------------------------------------------------------

Over the next few days I'll be making a few more changes, as I've just
identified an issue with the character's owned items vector (being that
it is comprised of three classes, two of which are inherited from the
third- perhaps I'll use a vector of structs. If anyone has a better
idea, please let me know), so expect the files to change a bit more.

--------------------------------------------------------------------------------------------------------------

That's roughly it! I'll be happy to clarify any questions anyone may
have,

Steven