Right now I'm trying to figure out how I should manage and store my menu's once they're all hooked together like they should be.

Each menu as you can see is simply a class that points to other menu's, which might have selections instead of new menu's.

The trick is making it so only the active menu's commands are accepted at any given time. If we type in the command magic, it should open the magic menu, and also tell the interpreter what new selections are available. I'm trying to figure this out now...

Code:
#include <string>
#include "Menu.h"
#include <list>


class Interpreter
{
public:
	
	virtual void Navigate_Menu(std::string Command)
	{	
		
	}

private:

	std::list<std::string*> Valid_Commands;
	
};
Navigate Menu has to find a menu which basically just tells the interpreter what commands are available in that menu. First of all we have to first figure out how we will store our menu classes, which are really in full construction multiple menu classes linked together.

I guess my main problem is deciding how to store the menu's in memory.

The process has to go like this.

A command is given to the interpreter, the interpreter looks through sets of menu's depending on what kind of game mode is currently running. Are we fighting a monster? Talking to a NPC? Navigating our inventory, or in story mode?

Each mode will have a set of menu's. So we're in battle mode, and we type in Talk, it obviously won't work because talk is a menu in the story mode. But, if we type in Magic, hopefully it will find magic in the battle menu's, and hopefully the magic menu will do its job and return to the interpreter a list of commands that are now valid. Now since we're in the magic menu, only the menu selections fire or ice will work.

If we now type in Ice, the menu knows that there are no submenu's under ice, so it will return ice as the only valid selection, which will then be sent on to the battle system to be processed.

So yeah, thats what I have in mind for my text engine.