ConsoleMenu/ConsoleMenu.h

55 lines
1.0 KiB
C
Raw Permalink Normal View History

2017-05-14 23:18:26 +08:00
#ifndef __CONSOLEMENU_H
#define __CONSOLEMENU_H
#include <Windows.h>
#include <vector>
#include <string>
class menuBase{
public:
static std::string cutline;
std::string titleText; //title
std::vector<std::string> options; //options
std::vector<std::string> infos; //help info
std::string menuID; //Must be unique.
int numOfStatus;
int highLightedIndex; //from 0 to numOfStatus
virtual void DrawMenu();
virtual void StatusMove(int status) = 0;
virtual void beginOutPut(){};
virtual void endOutPut(){};
};
class menuManager{
public:
std::vector<menuBase*> menus; //menus
menuBase* activeMenu; //current menu
std::string defaultMenu = "";
private:
menuManager();
static menuManager *instance;
//API
public:
void SetDefaultUI(std::string menuID);
void UIRegistion(menuBase* pmenu);
void UITransform(std::string menuID);
static menuManager* (GetInstance()){
if(instance == nullptr){
instance = new menuManager();
if(instance == nullptr){exit(1);} //alloc failed
}
return instance;
}
};
#endif