I have torn my poor modules into pieces and brought them back together again as a "single game plan" (rather than a "plan to form multiple different games from assembling modules in different ways"). Doing so allowed my to get rid of a whole 4 files. Hooray! So far I've been concentrating on the menu, and making it as robust as possible. The way I see it, a game and it's menu (while obviously connected) are sort of two different things. Once I get the menu running really well, it's as simple as a call to openMenu().
And speaking of a menu running really well, so far so good! I didn't really realize how much would have to go into a robust menu! So far, this is what I have:
*Characters, items, spells, and menu options can be added and removed on the fly. The menu(s) will automatically accommodate them.
*Current menu options : Item, Magic, Equip, and Status.
*All menus are navigated with a scrolling cursor (no "type a number" here!) by using the up and down arrow keys and enter.
*All menus have an option to display "command keys", specialized for each individual menu.
*Items: Shared by all characters.
-"Basic" type can be used, anything but "Key" type can be discarded.
-Items stack if you add one you had already, and automatically decrement when used or discarded.
-Pressing left or right will cycle through displaying: # held, type, description, pow, and def.
-Sort inventory based on name, type, pow, def, or manual sorting. (Select the same sort option to reverse the sort. Each sort option preserves the last one as much as possible).
*Magic: Shared by all characters.
-"White" type can be used.
-Spells can use MP or have a set number of uses, mix and match is OK!
-Pressing left or right will cycle through displaying: cost, type, and description.
-Sort inventory based on name, type, mp cost, # of uses, or manual sorting. (Select the same sort option to reverse the sort. Each sort option preserves the last one as much as possible).
*Equip: Dynamic, the number of equip slots and what they hold is set when giving a character their initial equipment.
-Redirects to a character selection menu.
-Displays what the character has equipped currently.
-Selecting a slot displays available equipment for that slot, including the item's pow and def.
*Status: Dynamic, the number of stats and what they hold is set when creating a character. Stats can modified easily using a single call.
-Pretty simple, redirects the the character select menu and displays the selected character's stats.
When I type it out, it looks a little... lackluster ...but as with most code, there is more going on behind the scenes that I can't really accurately or concisely record here. I don't claim to be doing things elegantly, or the so called "correct way", but for now... I'm pleased.
*Actually selecting an item from the equip menu and equipping/unequipping it (thereby removing or re-adding it to the inventory).
Other Immediate Plans:
*Equipment subtypes (different kinds of weapons/armor for different classes)
*Skills (character independent, unlike magic. Related to classes and/or weapon subtypes)
*Update aesthetics (even plain text can be beautiful!)
The going is slow, but the progress is undeniable. I'll keep at it!
Thanks for reading!