diff --git a/JGE/src/JGui.cpp b/JGE/src/JGui.cpp index a27fa91fe..e105462a7 100644 --- a/JGE/src/JGui.cpp +++ b/JGE/src/JGui.cpp @@ -90,9 +90,9 @@ void JGuiController::Render() for (int i = 0; i < mCount; i++) if (mObjects[i] != NULL) mObjects[i]->Render(); } + bool JGuiController::CheckUserInput(JButton key) { - if (!mCount) return false; if (key == mActionButton) { @@ -112,8 +112,8 @@ bool JGuiController::CheckUserInput(JButton key) else if (JGE_BTN_CANCEL == key) { if (mListener != NULL) mListener->ButtonPressed(mId, kInfoMenuID); + return true; } - else if ((JGE_BTN_LEFT == key) || (JGE_BTN_UP == key)) // || mEngine->GetAnalogY() < 64 || mEngine->GetAnalogX() < 64) { int n = mCurr; @@ -185,6 +185,7 @@ bool JGuiController::CheckUserInput(JButton key) } return false; } + void JGuiController::Update(float dt) { for (int i = 0; i < mCount; i++) diff --git a/projects/mtg/include/SimpleMenu.h b/projects/mtg/include/SimpleMenu.h index 85a67f314..d2211e42c 100644 --- a/projects/mtg/include/SimpleMenu.h +++ b/projects/mtg/include/SimpleMenu.h @@ -32,6 +32,7 @@ class SimpleMenu:public JGuiController{ public: bool autoTranslate; SimpleMenu(int id, JGuiListener* listener, int fontId, float x, float y, const char * _title = "", int _maxItems = 7); + virtual ~SimpleMenu(); void Render(); void Update(float dt); void Add(int id, const char * Text,string desc = "", bool forceFocus = false); diff --git a/projects/mtg/src/ActionLayer.cpp b/projects/mtg/src/ActionLayer.cpp index bf14fefb5..f9f04cc6d 100644 --- a/projects/mtg/src/ActionLayer.cpp +++ b/projects/mtg/src/ActionLayer.cpp @@ -307,17 +307,22 @@ void ActionLayer::doReactTo(int menuIndex) void ActionLayer::ButtonPressed(int controllerid, int controlid) { - if (controlid != -1) + if (controlid >= 0 && controlid < mObjects.size()) { ActionElement * currentAction = (ActionElement *) mObjects[controlid]; currentAction->reactToTargetClick(menuObject); + menuObject = 0; + } + else if (controlid == kCancelMenuID) + { + GameObserver::GetInstance()->mLayers->stackLayer()->endOfInterruption(); + menuObject = 0; } else { - GameObserver::GetInstance()->mLayers->stackLayer()->endOfInterruption(); + // fallthrough case. We have an id we don't recognize - do nothing, don't clear the menu! + //assert(false); } - menuObject = 0; - } ActionLayer::ActionLayer() diff --git a/projects/mtg/src/SimpleMenu.cpp b/projects/mtg/src/SimpleMenu.cpp index 9cd996c42..61a2db50f 100644 --- a/projects/mtg/src/SimpleMenu.cpp +++ b/projects/mtg/src/SimpleMenu.cpp @@ -57,6 +57,10 @@ SimpleMenu::SimpleMenu(int id, JGuiListener* listener, int fontId, float x, floa stars->FireAt(mX, mY); } +SimpleMenu::~SimpleMenu() +{ +} + void SimpleMenu::drawHorzPole(float x, float y, float width) { JRenderer* renderer = JRenderer::GetInstance();