Mercurial > mm7
view Game/MainMenuLoad.cpp @ 2568:f2f2595fe308
rename Decals[], DecalCount
author | Ritor1 |
---|---|
date | Thu, 21 May 2015 18:32:45 +0600 |
parents | 48708da03b7f |
children | d87bfbd3bb3b |
line wrap: on
line source
#include "Engine/Engine.h" #include "Engine/SaveLoad.h" #include "Engine/LOD.h" #include "Engine/Timer.h" #include "Engine/Graphics/IRender.h" #include "Engine/Graphics/Viewport.h" #include "IO/Keyboard.h" #include "GUI/UI/UISaveLoad.h" #include "Game/MainMenu.h" #include "Game/MainMenuLoad.h" void MainMenuLoad_EventLoop() { while (pMessageQueue_50CBD0->uNumMessages) { UIMessageType msg; int param, param2; pMessageQueue_50CBD0->PopMessage(&msg, ¶m, ¶m2); switch (msg) { case UIMSG_LoadGame: { if (!pSavegameUsedSlots[uLoadGameUI_SelectedSlot]) break; SetCurrentMenuID(MENU_LoadingProcInMainMenu); } break; case UIMSG_SelectLoadSlot: { //main menu save/load wnd clicking on savegame lines if (pGUIWindow_CurrentMenu->receives_keyboard_input_2 == WINDOW_INPUT_IN_PROGRESS) pKeyActionMap->SetWindowInputStatus(WINDOW_INPUT_NONE); if (current_screen_type != SCREEN_SAVEGAME || uLoadGameUI_SelectedSlot != param + pSaveListPosition) { //load clicked line int v26 = param + pSaveListPosition; if (dword_6BE138 == v26) { pMessageQueue_50CBD0->AddGUIMessage(UIMSG_SaveLoadBtn, 0, 0); pMessageQueue_50CBD0->AddGUIMessage(UIMSG_LoadGame, 0, 0); } uLoadGameUI_SelectedSlot = v26; dword_6BE138 = v26; } else { //typing in the line pKeyActionMap->EnterText(0, 19, pGUIWindow_CurrentMenu); strcpy(pKeyActionMap->pPressedKeysBuffer, pSavegameHeader[uLoadGameUI_SelectedSlot].pName); pKeyActionMap->uNumKeysPressed = strlen(pKeyActionMap->pPressedKeysBuffer); } } break; case UIMSG_SaveLoadBtn: new OnSaveLoad(pGUIWindow_CurrentMenu->uFrameX + 241, pGUIWindow_CurrentMenu->uFrameY + 302, 61, 28, (int)pBtnLoadSlot, 0); break; case UIMSG_DownArrow: { ++pSaveListPosition; if (pSaveListPosition >= param) pSaveListPosition = param - 1; if (pSaveListPosition < 1) pSaveListPosition = 0; new OnButtonClick2(pGUIWindow_CurrentMenu->uFrameX + 215, pGUIWindow_CurrentMenu->uFrameY + 323, 0, 0, (int)pBtnDownArrow, 0); } break; case UIMSG_ArrowUp: { --pSaveListPosition; if (pSaveListPosition < 0) pSaveListPosition = 0; new OnButtonClick2(pGUIWindow_CurrentMenu->uFrameX + 215, pGUIWindow_CurrentMenu->uFrameY + 197, 0, 0, (int)pBtnArrowUp, 0); } break; case UIMSG_Cancel: new OnCancel3(pGUIWindow_CurrentMenu->uFrameX + 350, pGUIWindow_CurrentMenu->uFrameY + 302, 61, 28, (int)pBtnCancel, 0); break; case UIMSG_Escape: { viewparams->field_48 = 1; //if (current_screen_type == SCREEN_LOADGAME) { pIcons_LOD->RemoveTexturesPackFromTextureList(); //crt_deconstruct_ptr_6A0118(); main_menu_background.Release(); main_menu_background.Load("title.pcx", 0); SetCurrentMenuID(MENU_MAIN); current_screen_type = SCREEN_GAME; pEventTimer->Resume(); viewparams->bRedrawGameUI = true; break; } } break; } } } void MainMenuLoad_Loop() { current_screen_type = SCREEN_LOADGAME; main_menu_background.Release(); main_menu_background.Load("lsave640.pcx", 0); //LoadUI_Load(0); pGUIWindow_CurrentMenu = new GUIWindow_Load(false); while (GetCurrentMenuID() == MENU_SAVELOAD && current_screen_type == SCREEN_LOADGAME) { MSG msg; while (PeekMessageW(&msg, 0, 0, 0, PM_REMOVE)) { if (msg.message == WM_QUIT) Engine_DeinitializeAndTerminate(0); TranslateMessage(&msg); DispatchMessageW(&msg); } if (dword_6BE364_game_settings_1 & GAME_SETTINGS_APP_INACTIVE) { WaitMessage(); continue; } pRenderer->BeginScene(); pRenderer->DrawTextureNew(0, 0, &main_menu_background); MainMenuLoad_EventLoop(); GUI_UpdateWindows(); pRenderer->EndScene(); pRenderer->Present(); } pGUIWindow_CurrentMenu->Release(); pGUIWindow_CurrentMenu = nullptr; }