Status Box
Right before implementing the gameplay, I added a status box that will show the attributes of the hero and the ship. Aside from 'Hunter', 'Explorer', 'Mechanic' and Ship's 'Level', I think they are self-explanatory. The 3 attributes on the player's side (hunter, explorer, mechanic) relates to the level of the hero at that specific category. The higher the number, the higher the level, thus increase the chance of success on specific actions that relates to that category. The ship's 'Level' category relates to the travelling speed and defense of the ship. When the ship is travelling, random events would occur such as a debris hitting the ship, I originally imagined there would be random space battles but since there are < 3 days left, it's a feature that I would most likely implement after the jam.
Nested Menus
I decided to stick to 5 at maximum (maybe a scrollable menu in the future), to avoid making it too overwhelming. I changed some of the options (e.g. ASTROMECH -> LAND on ShipState, ASTROMECH -> SHIP on PlanetState) since I had some change of mind on the gameplay. Anyway, each option leads to a new set of options, and each option will have their own results. The deepest it would go at the moment is 2, so that would mean I would have less than 30 options. The way I did it is pretty similar on how one would do a naive text-based game. I used a stack data structure to keep track of the inputs. If the stack is empty that means no option has been selected yet (i.e. player's at the base menu). The first element in the stack (index = 0) is always either going to be navigate, hero, ship, land, or options. After that you would have another <= 5 sets of options (and stop here since 2 is the highest level it would go). If the player presses back or presses an action (at level 2), It will do whatever it needs to do (if it's an action) then It'll empty the stack and it'll be back the base menu with 0 inputs. I used a stack because I was planning on using the pop, e.g. if it was at 3 levels deep, then a pop would bring it up level 2 options. Since each option would provide extremely different results, what it ends up being is each index = 0 option will call a specific method, e.g. NAVIGATE option will call navigateOptions(), HERO option will call heroOptions() and so on (although I was able to create a single function for some results such as dialogue descriptions). If it was 3 levels, then you can see how much of a mess it would turn into. This is something I definitely have to work on in the future https://en.wikipedia.org/wiki/Composite_pattern.
Development
Above you could see the status changes on the actions. I still have to provide a solid and reasonable status changes on each action, but since I have done a lot of helping functions, I'll be able to focus on that for the next hours that I spend on this game. The gameplay is mostly option choices so it's roleplay-heavy. I still have a lot to work on, and after finishing the Ship state, I would need to finish up 2 more states for the planets (hostile and civilian) then finally a Game Over state. The ship might end up just being a box by the due date lol.