// Runs as we're exiting the menu void GameParamUserInterface::onEscape() { EditorUserInterface *ui = getUIManager()->getUI<EditorUserInterface>(); string newFilename = getMenuItem(1)->getValue(); bool filenameChanged = mLevelFilename != newFilename; if(filenameChanged) ui->setLevelFileName(newFilename); GameType *gameType = getUIManager()->getUI<EditorUserInterface>()->getLevel()->getGameType(); const Vector<string> *keys = gameType->getGameParameterMenuKeys(); for(S32 i = 0; i < keys->size(); i++) { MenuItemMap::iterator iter = mMenuItemMap.find(keys->get(i)); MenuItem *menuItem = iter->second.get(); gameType->saveMenuItem(menuItem, keys->get(i)); } if(anythingChanged() || filenameChanged) { EditorUserInterface *ui = getUIManager()->getUI<EditorUserInterface>(); // TODO -->Save undo state here!!! ui->validateLevel(); } // Now back to our previously scheduled program... (which will be the editor, of course) getUIManager()->reactivatePrevUI(); }