Upon returning to my project, I realize that the very first thing I need to do is simplify. Basically, I've got a GUI structure that works like this right now:
- A player "assumes control" of a vehicle.
- The appropriate "assume control" procedure goes through the contents of the mob for /obj/functions and generates corresponding /obj/hotkeys
- The player now selects a hotkey and double-clicks somewhere on the map. This triggers the obj/hotkey to queue a obj/function on the vehicle's ActionQueue.
- The vehicle runs through its action queue every second via its ongoing HeartBeat() proc. If it has actions queued, it performs them by invoking procs off of the /obj/functions it has queued. (These /obj/functions also contained the current plan to perform them, as well as AI that generates these plans.)
- If the vehicle is out of functions in its action queue, the /mob Heartbeat() assesses its situation and chooses a new action to queue. If it's under the control of a player, it does not perform this assessment, and merely idles.
A better approach is to try to work within the conventions of what I've been given as much as possible. My new design calls for this:
- /obj/functions are simply replaced with verbs/procs located on the appropriate mobs. There's no longer any object bloat floating around inside of the mob inventories.
- The action queue simply exists inside the individual mobs' Heartbeat() procs.
- Any hotkeys generated will correspond to the verb list of the mobs. (They are necessary because the stat panel isn't in my game.)
I've decided that this will be a game you can play three different ways, depending on which faction you choose.
- If you choose the hive-like aliens, you never take control of a single unit, but rather you simply designate things to be done and this is automatically allocated between the members of the hive. Think: Dwarf Fortress.
- If you choose the human-like colonists, the game plays out as a standard real-time strategy game. Think: Space Castle or Gold Guardians (the BYOND games). Except it's all on a large persistent space with aliens and mercs harassing you.
- If you choose to play an independent mercenary, the game plays out like the "vehicle war" concept I had at the beginning, with upgradable vehicles. Think: Tanks (the BYOND game).
This tri-game focus might sound like it conflicts with my earlier KISS statement, but actually I think I've got the idea well enough in hand that it should be doable. It's one of those "too cool of an idea not to do" circumstances.