World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Файл UISaveLoad.h

См. исходные тексты.

Классы

class  GUIWindow_Save
 
class  GUIWindow_Load
 

Функции

void MainMenuLoad_Loop ()
 
void MainMenuLoad_EventLoop ()
 

Функции

◆ MainMenuLoad_Loop()

void MainMenuLoad_Loop ( )

См. определение в файле UISaveLoad.cpp строка 399

399  {
402 
404  window->PeekMessageLoop();
405  if (dword_6BE364_game_settings_1 & GAME_SETTINGS_APP_INACTIVE) {
406  OS_WaitMessage();
407  continue;
408  }
409 
410  render->BeginScene();
413  render->Present();
414  }
415 
417  pGUIWindow_CurrentMenu = nullptr;
418 }

Перекрестные ссылки current_screen_type, dword_6BE364_game_settings_1, GetCurrentMenuID(), GUI_UpdateWindows(), MainMenuLoad_EventLoop(), MENU_SAVELOAD, OS_WaitMessage(), pGUIWindow_CurrentMenu, GUIWindow::Release(), render и SCREEN_LOADGAME.

Используется в Application::Game::Loop().

+ Граф вызовов:
+ Граф вызова функции:

◆ MainMenuLoad_EventLoop()

void MainMenuLoad_EventLoop ( )

См. определение в файле UISaveLoad.cpp строка 323

323  {
324  while (!pMessageQueue_50CBD0->Empty()) {
325  UIMessageType msg;
326  int param, param2;
327  pMessageQueue_50CBD0->PopMessage(&msg, &param, &param2);
328 
329  switch (msg) {
330  case UIMSG_LoadGame: {
332  break;
334  break;
335  }
336  case UIMSG_SelectLoadSlot: {
337  // main menu save/load wnd clicking on savegame lines
338  if (pGUIWindow_CurrentMenu->receives_keyboard_input_2 == WINDOW_INPUT_IN_PROGRESS)
339  pKeyActionMap->SetWindowInputStatus(WINDOW_INPUT_NONE);
341  // load clicked line
342  int v26 = param + pSaveListPosition;
343  if (dword_6BE138 == v26) {
344  pMessageQueue_50CBD0->AddGUIMessage(UIMSG_SaveLoadBtn, 0, 0);
345  pMessageQueue_50CBD0->AddGUIMessage(UIMSG_LoadGame, 0, 0);
346  }
348  dword_6BE138 = v26;
349  } else {
350  // typing in the line
354  }
355  break;
356  }
357  case UIMSG_SaveLoadBtn: {
359  break;
360  }
361  case UIMSG_DownArrow: {
363  if (pSaveListPosition > (param - 7))
364  pSaveListPosition = (param - 7);
365  // if (pSaveListPosition < 1)
366  // pSaveListPosition = 0;
368  break;
369  }
370  case UIMSG_ArrowUp: {
372  if (pSaveListPosition < 0)
373  pSaveListPosition = 0;
375  break;
376  }
377  case UIMSG_Cancel: {
379  break;
380  }
381  case UIMSG_Escape: {
382  viewparams->field_48 = 1;
383  // if (current_screen_type == SCREEN_LOADGAME)
384  {
385  // crt_deconstruct_ptr_6A0118();
386 
389  pEventTimer->Resume();
390  viewparams->bRedrawGameUI = true;
391  break;
392  }
393  break;
394  }
395  }
396  }
397 }

Перекрестные ссылки ViewingParams::bRedrawGameUI, current_screen_type, dword_6BE138, GUIMessageQueue::Empty(), KeyboardActionMapping::EnterText(), ViewingParams::field_48, MENU_LoadingProcInMainMenu, MENU_MAIN, pBtnArrowUp, pBtnCancel, pBtnDownArrow, pBtnLoadSlot, pEventTimer, pGUIWindow_CurrentMenu, pKeyActionMap, pMessageQueue_50CBD0, GUIMessageQueue::PopMessage(), KeyboardActionMapping::pPressedKeysBuffer, pSavegameHeader, pSavegameUsedSlots, pSaveListPosition, GUIWindow::receives_keyboard_input_2, Timer::Resume(), SCREEN_GAME, SCREEN_SAVEGAME, SetCurrentMenuID(), KeyboardActionMapping::SetWindowInputStatus(), GUIWindow::uFrameX, GUIWindow::uFrameY, UIMSG_ArrowUp, UIMSG_Cancel, UIMSG_DownArrow, UIMSG_Escape, UIMSG_LoadGame, UIMSG_SaveLoadBtn, UIMSG_SelectLoadSlot, uLoadGameUI_SelectedSlot, KeyboardActionMapping::uNumKeysPressed и viewparams.

Используется в MainMenuLoad_Loop().

+ Граф вызовов:
+ Граф вызова функции:
MENU_SAVELOAD
@ MENU_SAVELOAD
Definition: GUIWindow.h:254
OnButtonClick2
Definition: GUIWindow.h:523
uLoadGameUI_SelectedSlot
unsigned int uLoadGameUI_SelectedSlot
Definition: mm7_data.cpp:693
ViewingParams::field_48
int field_48
Definition: Viewport.h:75
KeyboardActionMapping::EnterText
void EnterText(int a2, int max_string_len, GUIWindow *pWindow)
Definition: Keyboard.cpp:181
UIMessageType
UIMessageType
Definition: GUIWindow.h:13
GUIMessageQueue::Empty
bool Empty()
Definition: GUIWindow.h:659
UIMSG_Escape
@ UIMSG_Escape
Definition: GUIWindow.h:96
pBtnArrowUp
GUIButton * pBtnArrowUp
Definition: GUIButton.cpp:86
GUIWindow_Load
Definition: UISaveLoad.h:21
Timer::Resume
void Resume()
Definition: Time.cpp:27
pBtnCancel
GUIButton * pBtnCancel
Definition: GUIButton.cpp:87
pGUIWindow_CurrentMenu
GUIWindow * pGUIWindow_CurrentMenu
Definition: GUIWindow.cpp:54
SetCurrentMenuID
void SetCurrentMenuID(MENU_STATE uMenu)
Definition: GUIWindow.cpp:128
MENU_MAIN
@ MENU_MAIN
Definition: GUIWindow.h:251
pSavegameUsedSlots
std::array< unsigned int, MAX_SAVE_SLOTS > pSavegameUsedSlots
Definition: SaveLoad.cpp:43
GUIWindow::Release
virtual void Release()
Definition: GUIWindow.cpp:292
GUIWindow::receives_keyboard_input_2
int receives_keyboard_input_2
Definition: GUIWindow.h:486
current_screen_type
enum CURRENT_SCREEN current_screen_type
Definition: GUIWindow.cpp:83
OnSaveLoad
Definition: GUIWindow.h:558
GetCurrentMenuID
MENU_STATE GetCurrentMenuID()
Definition: GUIWindow.cpp:133
UIMSG_DownArrow
@ UIMSG_DownArrow
Definition: GUIWindow.h:130
OnCancel3
Definition: GUIWindow.h:588
UIMSG_ArrowUp
@ UIMSG_ArrowUp
Definition: GUIWindow.h:129
CURRENT_SCREEN::SCREEN_LOADGAME
@ SCREEN_LOADGAME
param
GLfloat param
Definition: SDL_opengl_glext.h:373
viewparams
struct ViewingParams * viewparams
Definition: mm7_data.cpp:22
KeyboardActionMapping::pPressedKeysBuffer
char pPressedKeysBuffer[257]
Definition: Keyboard.h:66
CURRENT_SCREEN::SCREEN_SAVEGAME
@ SCREEN_SAVEGAME
MainMenuLoad_EventLoop
void MainMenuLoad_EventLoop()
Definition: UISaveLoad.cpp:323
pSaveListPosition
int pSaveListPosition
Definition: mm7_data.cpp:692
window
EGLSurface EGLNativeWindowType * window
Definition: SDL_egl.h:1580
GUI_UpdateWindows
void GUI_UpdateWindows()
Definition: GUIWindow.cpp:956
UIMSG_SaveLoadBtn
@ UIMSG_SaveLoadBtn
Definition: GUIWindow.h:131
GUIMessageQueue::PopMessage
void PopMessage(UIMessageType *pMsg, int *pParam, int *a4)
Definition: GUIWindow.cpp:174
UIMSG_Cancel
@ UIMSG_Cancel
Definition: GUIWindow.h:133
KeyboardActionMapping::SetWindowInputStatus
void SetWindowInputStatus(int a2)
Definition: Keyboard.cpp:195
GUIWindow::uFrameY
unsigned int uFrameY
Definition: GUIWindow.h:469
pBtnLoadSlot
GUIButton * pBtnLoadSlot
Definition: GUIButton.cpp:88
UIMSG_LoadGame
@ UIMSG_LoadGame
Definition: GUIWindow.h:67
pBtnDownArrow
GUIButton * pBtnDownArrow
Definition: GUIButton.cpp:85
MENU_LoadingProcInMainMenu
@ MENU_LoadingProcInMainMenu
Definition: GUIWindow.h:260
CURRENT_SCREEN::SCREEN_GAME
@ SCREEN_GAME
pKeyActionMap
struct KeyboardActionMapping * pKeyActionMap
Definition: Keyboard.cpp:35
UIMSG_SelectLoadSlot
@ UIMSG_SelectLoadSlot
Definition: GUIWindow.h:132
ViewingParams::bRedrawGameUI
int bRedrawGameUI
Definition: Viewport.h:74
dword_6BE364_game_settings_1
int dword_6BE364_game_settings_1
Definition: mm7_data.cpp:714
GUIWindow::uFrameX
unsigned int uFrameX
Definition: GUIWindow.h:468
KeyboardActionMapping::uNumKeysPressed
uint8_t uNumKeysPressed
Definition: Keyboard.h:67
dword_6BE138
int dword_6BE138
Definition: mm7_data.cpp:704
pMessageQueue_50CBD0
struct GUIMessageQueue * pMessageQueue_50CBD0
Definition: GUIWindow.cpp:86
pEventTimer
Timer * pEventTimer
Definition: Time.cpp:8
OS_WaitMessage
void OS_WaitMessage()
Definition: Lin.cpp:32
render
std::shared_ptr< IRender > render
Definition: RenderOpenGL.cpp:52
pSavegameHeader
std::array< SavegameHeader, MAX_SAVE_SLOTS > pSavegameHeader
Definition: SaveLoad.cpp:45