I'm working on the battle engine right now so let's see if we can add a bit of the combat and battle related API to this. (Though there's too much to type everything out right now, here's a brief description.)
*Data*
-character_data
-character_class
-monster_data
(Each of the previous holds base data for attributes, sprite id's, names, script name, description, etc..)
*Game Instances*
-character (initialized from character_data. all characters are )
-party (contains arrays of active/inactive characters, shared inventory, etc.)
-monster (initialized from monster_data. normally temporary objects for battles)
*Combat Instances*
-combatant
-player_combatant (holds a reference to a character)
-enemy_combatant(holds a reference to a monster)
Attributes are pretty much done and I'm in the process of "finalizing" other things as well. All attributes of any object above can be references by scripts by:
These can be kind of tricky at first though. For exampleCode:attributes.max_param[] attributes.stat[] attributes.status_atk[] attributes.status_def attributes.element_atk[] attributes.element_def[] attributes.misc[]
It's easy to type the wrong one.Code:character.attributes.stat[STR] != character.base_attributes.stat[STR];
The difference is character.attributes is read-only since it includes all the modified values from equipment, buffs, modifiers as well, and, accidentally setting base_attributes could be bad.
*Interesting Side-Effects from the design (Due mostly to c++ code-reuse patterns..and/or it was a few extra LOC. I wasn't even planning any of this, I swear!)*
-All monsters can equip items, and hold an inventory! Imagine a group of Goblins each equipped with long swords and leather gear!
-Easily possible to have "capsule monsters" or whatever. There you go.
And that's it for now. It's a WIP.
Right you are. My idea for menus is this:
A specialized, stripped down UI library designed only for console-styled jrpgs. (Obviously anything that can handle this can also handle any other kind of game, that doesn't involve a mouse that is, without too much trouble.) ...And that's it. O_o ...well things like auto-layout and auto-managed lists of various types is a huge win. I think this is the best option overall in terms of useability without tons of stupid windowing layout scripts, anyway.
If you have something better though then let me know, though I think component-based is by far the easiest and most flexible.