Editor: warn if map isn't saved when quitting
This commit is contained in:
@@ -8,13 +8,19 @@
|
||||
bool __update_scenes_main_menu = false;
|
||||
bool __quit_scenes_main_menu = false;
|
||||
bool __started_main_menu = false;
|
||||
bool *__quit_flag = nullptr;
|
||||
uint64_t __cur_button_index_main_menu = -1;
|
||||
uint64_t __cur_button_index_main_menu_down = -1;
|
||||
std::vector<std::shared_ptr<Button>> __buttons_main_menu{};
|
||||
std::shared_ptr<SDLPP::RectangleRender> __mouse_main_menu{};
|
||||
|
||||
void quitMainMenu() {
|
||||
g_quit = true;
|
||||
game_scenes.pop_back();
|
||||
if (__quit_flag != nullptr) {
|
||||
*__quit_flag = true;
|
||||
} else {
|
||||
g_quit = true;
|
||||
}
|
||||
}
|
||||
|
||||
void resumeMainMenu() {
|
||||
@@ -34,9 +40,10 @@ void loadFinished(const std::string level_name) {
|
||||
loadMapDialogCallback(level_name);
|
||||
}
|
||||
|
||||
void showLoadMenu(void */*UNUSED*/, Button */*UNUSED*/) {
|
||||
void showLoadMenu(void * /*UNUSED*/, Button * /*UNUSED*/) {
|
||||
// TODO levels
|
||||
auto loadMenu = createLoadScene(__buttons_main_menu.back()->getRenderer(), "levels", loadFinished);
|
||||
auto loadMenu = createLoadScene(__buttons_main_menu.back()->getRenderer(),
|
||||
"levels", loadFinished);
|
||||
game_scenes.push_back(loadMenu);
|
||||
}
|
||||
|
||||
@@ -46,8 +53,7 @@ void __updateSelectedButton_MainMenu(uint64_t new_index) {
|
||||
__buttons_main_menu[new_index]->setHighlight();
|
||||
|
||||
if (__cur_button_index_main_menu != (uint64_t)-1) {
|
||||
__buttons_main_menu[__cur_button_index_main_menu]
|
||||
->unsetHighlight();
|
||||
__buttons_main_menu[__cur_button_index_main_menu]->unsetHighlight();
|
||||
}
|
||||
__cur_button_index_main_menu = new_index;
|
||||
}
|
||||
@@ -67,7 +73,7 @@ void handleKeyUpMainMenu(SDL_Keycode key, SDLPP::Scene & /*UNUSED*/) {
|
||||
break;
|
||||
case SDLK_DOWN:
|
||||
case SDLK_s:
|
||||
if(__cur_button_index_main_menu == __buttons_main_menu.size() - 1) {
|
||||
if (__cur_button_index_main_menu == __buttons_main_menu.size() - 1) {
|
||||
__updateSelectedButton_MainMenu(0);
|
||||
} else {
|
||||
__updateSelectedButton_MainMenu(__cur_button_index_main_menu + 1);
|
||||
@@ -75,14 +81,15 @@ void handleKeyUpMainMenu(SDL_Keycode key, SDLPP::Scene & /*UNUSED*/) {
|
||||
break;
|
||||
case SDLK_UP:
|
||||
case SDLK_w:
|
||||
if(__cur_button_index_main_menu == 0) {
|
||||
if (__cur_button_index_main_menu == 0) {
|
||||
__updateSelectedButton_MainMenu(__buttons_main_menu.size() - 1);
|
||||
} else {
|
||||
__updateSelectedButton_MainMenu(__cur_button_index_main_menu - 1);
|
||||
}
|
||||
break;
|
||||
case SDLK_RETURN:
|
||||
if(__cur_button_index_main_menu >= 0 && __cur_button_index_main_menu < __buttons_main_menu.size()) {
|
||||
if (__cur_button_index_main_menu >= 0 &&
|
||||
__cur_button_index_main_menu < __buttons_main_menu.size()) {
|
||||
__buttons_main_menu[__cur_button_index_main_menu]
|
||||
->performFunction();
|
||||
}
|
||||
@@ -129,9 +136,9 @@ createSceneMainMenu(std::shared_ptr<SDLPP::Renderer> &renderer) {
|
||||
SDLPP::OBJ_CENTER);
|
||||
__buttons_main_menu.back()->setPermanent();
|
||||
__buttons_main_menu.back()->setButtonIndex(__buttons_main_menu.size() - 1);
|
||||
__buttons_main_menu.emplace_back(std::make_shared<Button>(
|
||||
0.2, 0.4, 0.6, 0.1, renderer, "LOAD", default_button_theme,
|
||||
showLoadMenu, nullptr));
|
||||
__buttons_main_menu.emplace_back(
|
||||
std::make_shared<Button>(0.2, 0.4, 0.6, 0.1, renderer, "LOAD",
|
||||
default_button_theme, showLoadMenu, nullptr));
|
||||
__buttons_main_menu.back()->setAlignment(SDLPP::OBJ_CENTER,
|
||||
SDLPP::OBJ_CENTER);
|
||||
__buttons_main_menu.back()->setPermanent();
|
||||
@@ -221,12 +228,14 @@ void pollEventsMainMenu(std::shared_ptr<SDLPP::Scene> &scene) {
|
||||
}
|
||||
|
||||
SceneStruct
|
||||
createEditorMainMenuScene(std::shared_ptr<SDLPP::Renderer> &renderer) {
|
||||
createEditorMainMenuScene(std::shared_ptr<SDLPP::Renderer> &renderer,
|
||||
bool *quit_flag) {
|
||||
SceneStruct ret{};
|
||||
ret.scene = createSceneMainMenu(renderer);
|
||||
ret.additionalRender = additionalRenderMainMenu;
|
||||
ret.doInput = pollEventsMainMenu;
|
||||
__update_scenes_main_menu = true;
|
||||
__updateSelectedButton_MainMenu(0);
|
||||
__quit_flag = quit_flag;
|
||||
return ret;
|
||||
}
|
||||
Reference in New Issue
Block a user