annotate Game/MainMenuLoad.cpp @ 2575:a76d408c5132 tip

DrawTranslucent -> DrawTextureGrayShade Removed old texture drawing stuff
author a.parshin
date Wed, 09 Mar 2016 01:39:52 +0200
parents d87bfbd3bb3b
children
rev   line source
2552
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
1 #include "Engine/Engine.h"
2572
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2553
diff changeset
2 #include "Engine/AssetsManager.h"
2552
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
3 #include "Engine/SaveLoad.h"
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
4 #include "Engine/LOD.h"
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
5 #include "Engine/Timer.h"
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
6 #include "Engine/Graphics/IRender.h"
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
7 #include "Engine/Graphics/Viewport.h"
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
8
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
9 #include "IO/Keyboard.h"
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
10
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
11 #include "GUI/UI/UISaveLoad.h"
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
12
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
13 #include "Game/MainMenu.h"
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
14 #include "Game/MainMenuLoad.h"
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
15
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
16 void MainMenuLoad_EventLoop()
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
17 {
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
18 while (pMessageQueue_50CBD0->uNumMessages)
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
19 {
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
20 UIMessageType msg;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
21 int param, param2;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
22 pMessageQueue_50CBD0->PopMessage(&msg, &param, &param2);
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
23
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
24 switch (msg)
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
25 {
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
26 case UIMSG_LoadGame:
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
27 {
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
28 if (!pSavegameUsedSlots[uLoadGameUI_SelectedSlot])
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
29 break;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
30 SetCurrentMenuID(MENU_LoadingProcInMainMenu);
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
31 }
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
32 break;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
33
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
34 case UIMSG_SelectLoadSlot:
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
35 {
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
36 //main menu save/load wnd clicking on savegame lines
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
37 if (pGUIWindow_CurrentMenu->receives_keyboard_input_2 == WINDOW_INPUT_IN_PROGRESS)
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
38 pKeyActionMap->SetWindowInputStatus(WINDOW_INPUT_NONE);
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
39 if (current_screen_type != SCREEN_SAVEGAME || uLoadGameUI_SelectedSlot != param + pSaveListPosition)
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
40 {
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
41 //load clicked line
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
42 int v26 = param + pSaveListPosition;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
43 if (dword_6BE138 == v26)
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
44 {
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
45 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_SaveLoadBtn, 0, 0);
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
46 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_LoadGame, 0, 0);
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
47 }
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
48 uLoadGameUI_SelectedSlot = v26;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
49 dword_6BE138 = v26;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
50 }
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
51 else
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
52 {
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
53 //typing in the line
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
54 pKeyActionMap->EnterText(0, 19, pGUIWindow_CurrentMenu);
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
55 strcpy(pKeyActionMap->pPressedKeysBuffer, pSavegameHeader[uLoadGameUI_SelectedSlot].pName);
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
56 pKeyActionMap->uNumKeysPressed = strlen(pKeyActionMap->pPressedKeysBuffer);
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
57 }
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
58 }
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
59 break;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
60
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
61 case UIMSG_SaveLoadBtn:
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
62 new OnSaveLoad(pGUIWindow_CurrentMenu->uFrameX + 241, pGUIWindow_CurrentMenu->uFrameY + 302, 61, 28, (int)pBtnLoadSlot, 0);
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
63 break;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
64
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
65
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
66 case UIMSG_DownArrow:
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
67 {
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
68 ++pSaveListPosition;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
69 if (pSaveListPosition >= param)
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
70 pSaveListPosition = param - 1;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
71 if (pSaveListPosition < 1)
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
72 pSaveListPosition = 0;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
73 new OnButtonClick2(pGUIWindow_CurrentMenu->uFrameX + 215, pGUIWindow_CurrentMenu->uFrameY + 323, 0, 0, (int)pBtnDownArrow, 0);
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
74 }
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
75 break;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
76
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
77
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
78 case UIMSG_ArrowUp:
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
79 {
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
80 --pSaveListPosition;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
81 if (pSaveListPosition < 0)
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
82 pSaveListPosition = 0;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
83 new OnButtonClick2(pGUIWindow_CurrentMenu->uFrameX + 215, pGUIWindow_CurrentMenu->uFrameY + 197, 0, 0, (int)pBtnArrowUp, 0);
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
84 }
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
85 break;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
86
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
87 case UIMSG_Cancel:
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
88 new OnCancel3(pGUIWindow_CurrentMenu->uFrameX + 350, pGUIWindow_CurrentMenu->uFrameY + 302, 61, 28, (int)pBtnCancel, 0);
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
89 break;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
90
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
91
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
92 case UIMSG_Escape:
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
93 {
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
94 viewparams->field_48 = 1;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
95 //if (current_screen_type == SCREEN_LOADGAME)
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
96 {
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
97 pIcons_LOD->RemoveTexturesPackFromTextureList();
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
98 //crt_deconstruct_ptr_6A0118();
2572
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2553
diff changeset
99
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2553
diff changeset
100 if (main_menu_background)
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2553
diff changeset
101 {
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2553
diff changeset
102 main_menu_background->Release();
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2553
diff changeset
103 main_menu_background = nullptr;
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2553
diff changeset
104 }
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2553
diff changeset
105 main_menu_background = assets->GetImage_PCXFromIconsLOD(L"title.pcx");
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2553
diff changeset
106
2552
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
107 SetCurrentMenuID(MENU_MAIN);
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
108 current_screen_type = SCREEN_GAME;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
109 pEventTimer->Resume();
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
110 viewparams->bRedrawGameUI = true;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
111 break;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
112 }
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
113 }
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
114 break;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
115 }
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
116 }
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
117 }
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
118
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
119 void MainMenuLoad_Loop()
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
120 {
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
121 current_screen_type = SCREEN_LOADGAME;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
122
2572
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2553
diff changeset
123 if (main_menu_background)
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2553
diff changeset
124 {
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2553
diff changeset
125 main_menu_background->Release();
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2553
diff changeset
126 main_menu_background = nullptr;
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2553
diff changeset
127 }
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2553
diff changeset
128 main_menu_background = assets->GetImage_PCXFromIconsLOD(L"lsave640.pcx");
2552
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
129
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
130 //LoadUI_Load(0);
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
131 pGUIWindow_CurrentMenu = new GUIWindow_Load(false);
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
132
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
133
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
134 while (GetCurrentMenuID() == MENU_SAVELOAD && current_screen_type == SCREEN_LOADGAME)
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
135 {
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
136 MSG msg;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
137 while (PeekMessageW(&msg, 0, 0, 0, PM_REMOVE))
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
138 {
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
139 if (msg.message == WM_QUIT)
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
140 Engine_DeinitializeAndTerminate(0);
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
141 TranslateMessage(&msg);
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
142 DispatchMessageW(&msg);
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
143 }
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
144 if (dword_6BE364_game_settings_1 & GAME_SETTINGS_APP_INACTIVE)
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
145 {
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
146 WaitMessage();
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
147 continue;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
148 }
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
149
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
150 pRenderer->BeginScene();
2572
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2553
diff changeset
151 pRenderer->DrawTextureNew(0, 0, main_menu_background);
2552
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
152
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
153 MainMenuLoad_EventLoop();
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
154 GUI_UpdateWindows();
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
155
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
156 pRenderer->EndScene();
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
157 pRenderer->Present();
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
158 }
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
159
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
160 pGUIWindow_CurrentMenu->Release();
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
161 pGUIWindow_CurrentMenu = nullptr;
ac16f4a3a91e Load from MainMenu logic separated from MainMenu window
a.parshin
parents:
diff changeset
162 }