mirror of
https://github.com/glest/glest-source.git
synced 2025-08-20 07:01:21 +02:00
- added ESC key to exit from main menu
This commit is contained in:
@@ -59,6 +59,11 @@ MenuStateRoot::MenuStateRoot(Program *program, MainMenu *mainMenu):
|
|||||||
buttonAbout.setText(lang.get("About"));
|
buttonAbout.setText(lang.get("About"));
|
||||||
buttonExit.setText(lang.get("Exit"));
|
buttonExit.setText(lang.get("Exit"));
|
||||||
labelVersion.setText(glestVersionString);
|
labelVersion.setText(glestVersionString);
|
||||||
|
|
||||||
|
//mesage box
|
||||||
|
mainMessageBox.init(lang.get("Yes"), lang.get("No"));
|
||||||
|
mainMessageBox.setEnabled(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuStateRoot::mouseClick(int x, int y, MouseButton mouseButton){
|
void MenuStateRoot::mouseClick(int x, int y, MouseButton mouseButton){
|
||||||
@@ -90,6 +95,22 @@ void MenuStateRoot::mouseClick(int x, int y, MouseButton mouseButton){
|
|||||||
soundRenderer.playFx(coreData.getClickSoundA());
|
soundRenderer.playFx(coreData.getClickSoundA());
|
||||||
program->exit();
|
program->exit();
|
||||||
}
|
}
|
||||||
|
//exit message box, has to be the last thing to do in this function
|
||||||
|
else if(mainMessageBox.getEnabled()){
|
||||||
|
int button= 1;
|
||||||
|
if(mainMessageBox.mouseClick(x, y, button)) {
|
||||||
|
if(button==1) {
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
soundRenderer.playFx(coreData.getClickSoundA());
|
||||||
|
program->exit();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
//close message box
|
||||||
|
mainMessageBox.setEnabled(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuStateRoot::mouseMove(int x, int y, const MouseState *ms){
|
void MenuStateRoot::mouseMove(int x, int y, const MouseState *ms){
|
||||||
@@ -99,6 +120,10 @@ void MenuStateRoot::mouseMove(int x, int y, const MouseState *ms){
|
|||||||
buttonOptions.mouseMove(x, y);
|
buttonOptions.mouseMove(x, y);
|
||||||
buttonAbout.mouseMove(x, y);
|
buttonAbout.mouseMove(x, y);
|
||||||
buttonExit.mouseMove(x,y);
|
buttonExit.mouseMove(x,y);
|
||||||
|
if (mainMessageBox.getEnabled()) {
|
||||||
|
mainMessageBox.mouseMove(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuStateRoot::render(){
|
void MenuStateRoot::render(){
|
||||||
@@ -119,6 +144,12 @@ void MenuStateRoot::render(){
|
|||||||
renderer.renderButton(&buttonAbout);
|
renderer.renderButton(&buttonAbout);
|
||||||
renderer.renderButton(&buttonExit);
|
renderer.renderButton(&buttonExit);
|
||||||
renderer.renderLabel(&labelVersion);
|
renderer.renderLabel(&labelVersion);
|
||||||
|
|
||||||
|
//exit message box
|
||||||
|
if(mainMessageBox.getEnabled()){
|
||||||
|
renderer.renderMessageBox(&mainMessageBox);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuStateRoot::update(){
|
void MenuStateRoot::update(){
|
||||||
@@ -127,4 +158,35 @@ void MenuStateRoot::update(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MenuStateRoot::keyDown(char key) {
|
||||||
|
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] key = [%c] [%d]\n",__FILE__,__FUNCTION__,__LINE__,key,key);
|
||||||
|
|
||||||
|
Config &configKeys = Config::getInstance(std::pair<ConfigType,ConfigType>(cfgMainKeys,cfgUserKeys));
|
||||||
|
//exit
|
||||||
|
if(key == configKeys.getCharKey("ExitKey")) {
|
||||||
|
Lang &lang= Lang::getInstance();
|
||||||
|
showMessageBox(lang.get("ExitGame?"), "", true);
|
||||||
|
}
|
||||||
|
else if(mainMessageBox.getEnabled() == true && key == vkReturn) {
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
program->exit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MenuStateRoot::showMessageBox(const string &text, const string &header, bool toggle){
|
||||||
|
if(!toggle){
|
||||||
|
mainMessageBox.setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!mainMessageBox.getEnabled()){
|
||||||
|
mainMessageBox.setText(text);
|
||||||
|
mainMessageBox.setHeader(header);
|
||||||
|
mainMessageBox.setEnabled(true);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
mainMessageBox.setEnabled(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}}//end namespace
|
}}//end namespace
|
||||||
|
@@ -20,6 +20,8 @@ namespace Glest{ namespace Game{
|
|||||||
// class MenuStateRoot
|
// class MenuStateRoot
|
||||||
// ===============================
|
// ===============================
|
||||||
|
|
||||||
|
class GraphicMessageBox;
|
||||||
|
|
||||||
class MenuStateRoot: public MenuState{
|
class MenuStateRoot: public MenuState{
|
||||||
private:
|
private:
|
||||||
GraphicButton buttonNewGame;
|
GraphicButton buttonNewGame;
|
||||||
@@ -30,6 +32,8 @@ private:
|
|||||||
GraphicButton buttonExit;
|
GraphicButton buttonExit;
|
||||||
GraphicLabel labelVersion;
|
GraphicLabel labelVersion;
|
||||||
|
|
||||||
|
GraphicMessageBox mainMessageBox;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MenuStateRoot(Program *program, MainMenu *mainMenu);
|
MenuStateRoot(Program *program, MainMenu *mainMenu);
|
||||||
|
|
||||||
@@ -37,6 +41,8 @@ public:
|
|||||||
void mouseMove(int x, int y, const MouseState *mouseState);
|
void mouseMove(int x, int y, const MouseState *mouseState);
|
||||||
void render();
|
void render();
|
||||||
void update();
|
void update();
|
||||||
|
virtual void keyDown(char key);
|
||||||
|
void showMessageBox(const string &text, const string &header, bool toggle);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user