Mercurial > mm7
annotate GUIWindow.h @ 810:f5156b8c61ad
savegame refactoring
author | Gloval |
---|---|
date | Tue, 26 Mar 2013 00:57:54 +0400 |
parents | b27dd658ea77 |
children | cfc65feef029 |
rev | line source |
---|---|
0 | 1 #pragma once |
2 #include "GUIButton.h" | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 /* 251 */ | |
9 enum MENU_STATE : __int32 | |
10 { | |
11 MENU_MAIN = 0x0, | |
12 MENU_NEWGAME = 0x1, | |
13 MENU_CREDITS = 0x2, | |
14 MENU_SAVELOAD = 0x3, | |
15 MENU_FINISHED = 0x4, | |
16 MENU_5 = 0x5, | |
17 MENU_CREATEPARTY = 0x6, | |
165 | 18 MENU_NAMEPANELESC = 0x7, |
19 MENU_CREDITSPROC = 0x8, | |
20 MENU_LOADINGPROC = 0x9, | |
0 | 21 MENU_10 = 0xA, |
165 | 22 MENU_CREDITSCLOSE = 0xB, |
0 | 23 }; |
24 | |
25 | |
167 | 26 enum DIALOGUE_TYPE |
27 { | |
248 | 28 DIALOGUE_9 = 9, |
179 | 29 DIALOGUE_13 = 0xD, |
30 DIALOGUE_18 = 0x12, | |
248 | 31 DIALOGUE_19 = 19, |
32 DIALOGUE_20 = 20, | |
33 DIALOGUE_21 = 21, | |
34 DIALOGUE_22 = 22, | |
35 DIALOGUE_23 = 23, | |
179 | 36 DIALOGUE_24 = 0x18, |
248 | 37 DIALOGUE_76 = 76, |
38 DIALOGUE_PROFESSION_DETAILS = 77, | |
179 | 39 DIALOGUE_ARENA_WELCOME = 0x59, |
40 DIALOGUE_ARENA_FIGHT_NOT_OVER_YET = 0x5A, | |
41 DIALOGUE_ARENA_REWARD = 0x5B, | |
42 DIALOGUE_ARENA_ALREADY_WON = 0x5C, | |
167 | 43 }; |
0 | 44 |
45 | |
46 | |
47 | |
48 | |
49 /* 298 */ | |
50 enum WindowType: unsigned __int32 | |
51 { | |
52 WINDOW_null = 0, | |
53 WINDOW_MainMenu = 0x1, | |
17 | 54 WINDOW_3 = 0x3, |
0 | 55 WINDOW_CharacterRecord = 0x4, |
56 WINDOW_Options = 0x6, | |
710 | 57 WINDOW_8 = 8, |
0 | 58 WINDOW_Book = 0x9, |
165 | 59 WINDOW_Dialogue = 0xA, |
710 | 60 WINDOW_QuickReference = 12, |
158 | 61 WINDOW_Rest = 0x10, |
710 | 62 WINDOW_ChangeLocation = 17, |
158 | 63 WINDOW_SpellBook = 0x12, |
710 | 64 WINDOW_GreetingNPC = 19, |
0 | 65 WINDOW_Chest = 0x14, |
710 | 66 WINDOW_17 = 23, |
0 | 67 WINDOW_MainMenu_Load = 0x18, |
68 WINDOW_HouseInterior = 0x19, | |
710 | 69 WINDOW_Transition = 26, |
158 | 70 WINDOW_1B = 0x1B, |
71 WINDOW_Scroll = 0x1E, | |
710 | 72 WINDOW_1F = 31, |
0 | 73 WINDOW_FinalWindow = 0x46, |
17 | 74 WINDOW_50 = 0x50, |
75 WINDOW_59 = 0x59, | |
710 | 76 WINDOW_5A = 90, |
77 WINDOW_5B = 91, | |
187 | 78 WINDOW_VoiceSwitcherButton = 0x5C, |
17 | 79 WINDOW_5D = 0x5D, |
710 | 80 WINDOW_5E = 94, |
4 | 81 WINDOW_5F = 0x5F, |
710 | 82 WINDOW_60 = 96, |
17 | 83 WINDOW_61 = 0x61, |
84 WINDOW_RestWindow = 0x62, | |
710 | 85 WINDOW_63 = 99, |
17 | 86 WINDOW_CharacterWindow_Stats = 0x64, |
87 WINDOW_CharacterWindow_Skills = 0x65, | |
88 WINDOW_CharacterWindow_Awards = 0x66, | |
89 WINDOW_CharacterWindow_Inventory = 0x67, | |
710 | 90 WINDOW_68 = 104, |
0 | 91 WINDOW_KeyMappingOptions = 0x69, |
17 | 92 WINDOW_VideoOptions = 0x6A, |
93 WINDOW_Lloyd = 0xB1, | |
710 | 94 WINDOW_TownPortal = 195, |
95 WINDOW_QuestBook = 200, | |
17 | 96 WINDOW_AutonotesBook = 0xC9, |
97 WINDOW_MapsBook = 0xCA, | |
98 WINDOW_CalendarBook = 0xCB, | |
92 | 99 WINDOW_HistoryBook = 0xE0, |
0 | 100 }; |
101 | |
102 /* 155 */ | |
103 #pragma pack(push, 1) | |
104 struct GUIWindow | |
105 { | |
200 | 106 inline GUIWindow() |
107 { | |
108 pControlsHead = pControlsTail = nullptr; | |
109 eWindowType = WINDOW_null; | |
110 } | |
111 | |
189 | 112 GUIButton *CreateButton(unsigned int uX, unsigned int uY, unsigned int uWidth, unsigned int uHeight, int a6, int a7, |
113 unsigned int uControlID, unsigned int uControlParam, unsigned __int8 uHotkey, const char *pName, Texture *pTextures, ...); | |
0 | 114 void DrawFlashingInputCursor(signed int a3, int a4, struct GUIFont *a2); |
115 int DrawTextInRect(GUIFont *a2, unsigned int uX, unsigned int uY, unsigned int uColor, const char *Str1, int Source, int a8); | |
116 char DrawText(GUIFont *a2, signed int uX, int uY, unsigned int uFontColor, const char *Str, int a7, int a8, unsigned int uFontShadowColor); | |
762 | 117 void DrawTitleText(GUIFont *a2, signed int uHorizontalMargin, unsigned int uVerticalMargin, unsigned __int16 uDefaultColor, const char *pInString, unsigned int uLineSpacing); |
471
c43f156a95c9
ArmorShopDialog crash fixed. All shops show its items
Gloval
parents:
467
diff
changeset
|
118 void DrawCurrentTime(__int64 a2); |
405 | 119 void HouseDialogManager(); |
198 | 120 void OpenSpellBook(); |
0 | 121 void InitializeBookView(); |
122 void DrawMessageBox(int arg0); | |
123 GUIButton *GetControl(unsigned int uID); | |
124 void Release(); | |
125 void _41D08F(int a2, int a3, int a4, int a5); | |
688 | 126 void DrawQuickCharRecord(); |
0 | 127 char _41D73D_draw_buff_tooltip(); |
128 | |
129 static GUIWindow *Create(unsigned int uX, unsigned int uY, unsigned int uWidth, unsigned int uHeight, enum WindowType eType, int a4, int a5); | |
130 | |
131 unsigned int uFrameX; | |
132 unsigned int uFrameY; | |
133 unsigned int uFrameWidth; | |
134 unsigned int uFrameHeight; | |
135 unsigned int uFrameZ; | |
136 unsigned int uFrameW; | |
137 WindowType eWindowType; | |
496 | 138 union{ |
0 | 139 void *ptr_1C; |
496 | 140 unsigned int par1C; |
141 }; | |
0 | 142 unsigned int uNumControls; |
143 int field_24; | |
144 int pNumPresenceButton; | |
145 int pCurrentPosActiveItem; | |
146 int field_30; | |
147 int field_34; | |
148 int pStartingPosActiveItem; | |
496 | 149 int numVisibleWindows; |
0 | 150 int field_40; |
151 int field_44; | |
152 char *Hint; | |
153 GUIButton *pControlsHead; | |
154 GUIButton *pControlsTail; | |
155 }; | |
156 #pragma pack(pop) | |
157 | |
158 | |
159 | |
160 | |
161 | |
162 | |
495 | 163 |
0 | 164 enum UIMessageType |
165 { | |
166 UIMSG_00 = 0x0, | |
167 UIMSG_ChangeGameState = 0x5, | |
151 | 168 UIMSG_A = 0xA, |
169 UIMSG_C = 0xC, | |
170 UIMSG_E = 0xE, | |
171 UIMSG_F = 0xF, | |
3 | 172 UIMSG_11 = 0x11, |
271 | 173 UIMSG_Attack = 23, |
151 | 174 UIMSG_19 = 0x19, |
175 UIMSG_1B = 0x1B, | |
176 UIMSG_1C = 0x1C, | |
0 | 177 UIMSG_PlayArcomage = 0x1D, |
151 | 178 UIMSG_33 = 0x33, |
0 | 179 UIMSG_MainMenu_ShowPartyCreationWnd = 0x36, |
180 UIMSG_MainMenu_ShowLoadWindow = 0x37, | |
181 UIMSG_ShowCredits = 0x38, | |
182 UIMSG_ExitToWindows = 0x39, | |
3 | 183 UIMSG_3A = 0x3A, |
184 UIMSG_PlayerCreationChangeName = 0x3C, | |
0 | 185 UIMSG_PlayerCreationClickPlus = 0x3E, |
186 UIMSG_PlayerCreationClickMinus = 0x3F, | |
187 UIMSG_PlayerCreationSelectActiveSkill = 0x40, | |
188 UIMSG_PlayerCreationSelectClass = 0x41, | |
189 UIMSG_PlayerCreationClickOK = 0x42, | |
190 UIMSG_PlayerCreationClickReset = 0x43, | |
151 | 191 UIMSG_45 = 0x45, |
192 UIMSG_46 = 0x46, | |
193 UIMSG_AutonotesBook = 0x47, | |
0 | 194 UIMSG_PlayerCreationRemoveUpSkill = 0x4A, |
195 UIMSG_PlayerCreationRemoveDownSkill = 0x4B, | |
151 | 196 UIMSG_4E = 0x4E, |
370 | 197 UIMSG_SPellbook_ShowHightlightedSpellInfo = 0x4F, |
735 | 198 UIMSG_BuyInShop_Identify_Repair = 0x51, |
0 | 199 UIMSG_LoadGame = 0x52, |
200 UIMSG_SaveGame = 0x53, | |
151 | 201 UIMSG_54 = 0x54, |
202 UIMSG_55 = 0x55, | |
437 | 203 UIMSG_SelectSpell = 0x56, |
151 | 204 UIMSG_57 = 0x57, |
205 UIMSG_58 = 0x58, | |
783 | 206 UIMSG_OnTravelByFoot = 0x5A, |
151 | 207 UIMSG_5B = 0x5B, |
0 | 208 UIMSG_ShowStatus_DateTime = 0x5C, |
209 UIMSG_ShowStatus_ManaHP = 0x5D, | |
210 UIMSG_ShowStatus_Player = 0x5E, | |
151 | 211 UIMSG_Wait5Minutes = 0x5F, |
212 UIMSG_Wait1Hour = 0x60, | |
213 UIMSG_61 = 0x61, | |
0 | 214 UIMSG_ShowStatus_Food = 0x64, |
215 UIMSG_ShowStatus_Funds = 0x65, | |
151 | 216 UIMSG_68 = 0x68, |
217 UIMSG_69 = 0x69, | |
11 | 218 UIMSG_QuickReference = 0x6A, |
358 | 219 UIMSG_GameMenuButton = 0x6B, |
151 | 220 UIMSG_AlreadyResting = 0x6D, |
0 | 221 UIMSG_SelectCharacter = 0x6E, |
222 UIMSG_ChangeSoundVolume = 0x6F, | |
223 UIMSG_ChangeMusicVolume = 0x70, | |
3 | 224 UIMSG_Escape = 0x71, |
151 | 225 UIMSG_72 = 0x72, |
226 UIMSG_73 = 0x73, | |
227 UIMSG_74 = 0x74, | |
228 UIMSG_75 = 0x75, | |
187 | 229 UIMSG_PlayerCreation_SelectAttribute = 0x76, |
151 | 230 UIMSG_InventoryLeftClick = 0x78, |
0 | 231 UIMSG_SkillUp = 0x79, |
151 | 232 UIMSG_7A = 0x7A, |
369 | 233 UIMSG_GameMenu_ReturnToGame = 0x7B, |
0 | 234 UIMSG_StartNewGame = 0x7C, |
235 UIMSG_Game_OpenLoadGameDialog = 0x7D, | |
151 | 236 UIMSG_Game_OpenSaveGameDialog = 0x7E, |
0 | 237 UIMSG_Game_OpenOptionsDialog = 0x7F, |
151 | 238 UIMSG_80 = 0x80, |
0 | 239 UIMSG_SetGraphicsMode = 0x83, |
240 UIMSG_Quit = 0x84, | |
151 | 241 UIMSG_85 = 0x85, |
199 | 242 UIMSG_StartHireling1Dialogue = 0x86, |
243 UIMSG_StartHireling2Dialogue = 0x87, | |
651 | 244 UIMSG_SelectNPCDialogueOption = 0x88, |
151 | 245 UIMSG_8C = 0x8C, |
246 UIMSG_8D = 0x8D, | |
370 | 247 UIMSG_CastSpellFromBook = 0x8E, |
151 | 248 UIMSG_8F = 0x8F, |
187 | 249 UIMSG_PlayerCreation_VoicePrev = 0x90, |
250 UIMSG_PlayerCreation_VoiceNext = 0x91, | |
151 | 251 UIMSG_92 = 0x92, |
0 | 252 UIMSG_StartNPCDialogue = 0xA1, |
2 | 253 UIMSG_ArrowUp = 0xA2, |
254 UIMSG_DownArrow = 0xA3, | |
255 UIMSG_LoadSlot = 0xA4, | |
3 | 256 UIMSG_SelectLoadSlot = 0xA5, |
2 | 257 UIMSG_Cancel = 0xA6, |
151 | 258 UIMSG_ExitRest = 0xA7, |
0 | 259 UIMSG_A8 = 0xA8, |
260 UIMSG_A9 = 0xA9, | |
261 UIMSG_AA = 0xAA, | |
187 | 262 UIMSG_PlayerCreation_FacePrev = 0xAB, |
263 UIMSG_PlayerCreation_FaceNext = 0xAC, | |
0 | 264 UIMSG_AD = 0xAD, |
265 UIMSG_AE = 0xAE, | |
467 | 266 UIMSG_ClickNPCTopic = 0xAF, |
0 | 267 UIMSG_CycleCharacters = 0xB0, |
268 UIMSG_B1 = 0xB1, | |
269 UIMSG_B2 = 0xB2, | |
270 UIMSG_B3 = 0xB3, | |
271 UIMSG_B4 = 0xB4, | |
272 UIMSG_B5 = 0xB5, | |
273 UIMSG_B6 = 0xB6, | |
274 UIMSG_B7 = 0xB7, | |
275 UIMSG_SetTurnSpeed = 0xB8, | |
276 UIMSG_ToggleWalkSound = 0xB9, | |
277 UIMSG_ChangeVoiceVolume = 0xBA, | |
278 UIMSG_ToggleShowDamage = 0xBB, | |
111 | 279 UIMSG_ScrollNPCPanel = 0xBC, |
0 | 280 UIMSG_BD = 0xBD, |
281 UIMSG_BE = 0xBE, | |
282 UIMSG_BF = 0xBF, | |
283 UIMSG_C0 = 0xC0, | |
284 UIMSG_C1 = 0xC1, | |
285 UIMSG_C2 = 0xC2, | |
710 | 286 UIMSG_OnCastTownPortal = 0xC3, |
0 | 287 UIMSG_C4 = 0xC4, |
288 UIMSG_ShowFinalWindow = 0xC5, | |
289 UIMSG_C6 = 0xC6, | |
290 UIMSG_C7 = 0xC7, | |
291 UIMSG_OpenQuestBook = 0xC8, | |
292 UIMSG_OpenAutonotes = 0xC9, | |
293 UIMSG_OpenMapBook = 0xCA, | |
294 UIMSG_OpenCalendar = 0xCB, | |
295 UIMSG_CC = 0xCC, | |
296 UIMSG_CD = 0xCD, | |
297 UIMSG_CE = 0xCE, | |
298 UIMSG_CF = 0xCF, | |
299 UIMSG_D0 = 0xD0, | |
300 UIMSG_D1 = 0xD1, | |
301 UIMSG_D2 = 0xD2, | |
302 UIMSG_D3 = 0xD3, | |
303 UIMSG_D4 = 0xD4, | |
304 UIMSG_D5 = 0xD5, | |
305 UIMSG_D6 = 0xD6, | |
151 | 306 UIMSG_DD = 0xDD, |
0 | 307 UIMSG_OpenHistoryBook = 0xE0, |
308 UIMSG_ToggleAlwaysRun = 0xE1, | |
309 UIMSG_ToggleFlipOnExit = 0xE2, | |
151 | 310 UIMSG_16F = 0x16F, |
311 UIMSG_170 = 0x170, | |
201 | 312 UIMSG_Game_Action = 0x194, |
651 | 313 UIMSG_SelectShopDialogueOption = 0x195, |
0 | 314 UIMSG_OpenRestUI = 0x199, |
151 | 315 UIMSG_19A = 0x19A, |
434 | 316 UIMSG_TransitionUI_Confirm = 0x19B, |
151 | 317 UIMSG_19C = 0x19C, |
0 | 318 UIMSG_OpenKeyMappingOptions = 0x19F, |
362 | 319 UIMSG_SelectKeyPage1 = 0x1A0, |
320 UIMSG_SelectKeyPage2 = 0x1A1, | |
0 | 321 UIMSG_ResetKeyMapping = 0x1A2, |
362 | 322 UIMSG_ChangeKeyButton = 0x1A3, |
0 | 323 UIMSG_OpenVideoOptions = 0x1A5, |
324 UIMSG_ToggleBloodsplats = 0x1A6, | |
325 UIMSG_ToggleColoredLights = 0x1A7, | |
326 UIMSG_ToggleTint = 0x1A8, | |
151 | 327 UIMSG_1A9 = 0x1A9, |
0 | 328 }; |
629 | 329 |
151 | 330 enum CURRENT_SCREEN |
331 { | |
332 SCREEN_GAME = 0x0, | |
333 SCREEN_MENU = 0x1, | |
334 SCREEN_OPTIONS = 0x2, | |
335 SCREEN_BOOKS = 0x3, | |
336 SCREEN_NPC_DIALOGUE = 0x4, | |
337 SCREEN_REST = 0x5, | |
338 SCREEN_CHARACTERS = 0x7, | |
339 SCREEN_SPELL_BOOK = 0x8, | |
340 SCREEN_CREATORS = 0x9, | |
341 SCREEN_CHEST = 0xA, | |
342 SCREEN_SAVEGAME = 0xB, | |
343 SCREEN_LOADGAME = 0xC, | |
344 SCREEN_HOUSE = 0xD, | |
345 SCREEN_E = 0xE, | |
346 SCREEN_F = 0xF, | |
347 SCREEN_VIDEO = 0x10, | |
348 SCREEN_CHANGE_LOCATION = 0x11, | |
349 SCREEN_INPUT_BLV = 0x12, | |
350 SCREEN_BRANCHLESS_NPC_DIALOG = 0x13, | |
351 SCREEN_PARTY_CREATION = 0x15, | |
352 SCREEN_PRESS_ESCAPE_MESSAGE = 0x16, | |
353 SCREEN_CASTING = 0x17, | |
354 SCREEN_19 = 0x19, | |
355 SCREEN_KEYBOARD_OPTIONS = 0x1A, | |
356 SCREEN_1B = 0x1B, | |
357 SCREEN_VIDEO_OPTIONS = 0x1C, | |
358 SCREEN_63 = 0x63, | |
359 SCREEN_64 = 0x64, | |
360 SCREEN_67 = 0x67, | |
361 SCREEN_QUICK_REFERENCE = 0x68, | |
362 }; | |
0 | 363 |
364 | |
365 | |
366 | |
367 /* 249 */ | |
368 #pragma pack(push, 1) | |
369 struct GUIMessage | |
370 { | |
371 enum UIMessageType eType; | |
372 int param; | |
373 int field_8; | |
374 }; | |
375 #pragma pack(pop) | |
376 | |
377 | |
378 | |
379 | |
437 | 380 #define AddMessage(msg, param, a4) AddMessageImpl((msg), (param), (a4), __FILE__, __LINE__) |
0 | 381 /* 250 */ |
382 #pragma pack(push, 1) | |
383 struct GUIMessageQueue | |
384 { | |
385 inline GUIMessageQueue(): | |
386 uNumMessages(0) | |
387 {} | |
388 | |
783 | 389 void Flush(); |
0 | 390 void PopMessage(UIMessageType *pMsg, int *pParam, int *a4); |
437 | 391 void AddMessageImpl(UIMessageType msg, int param, unsigned int a4, const char *file = nullptr, int line = 0); |
0 | 392 |
393 unsigned int uNumMessages; | |
394 GUIMessage pMessages[40]; | |
437 | 395 |
396 const char *files[40]; | |
397 int lines[40]; | |
0 | 398 }; |
399 #pragma pack(pop) | |
400 | |
401 extern struct GUIMessageQueue *pMessageQueue_50CBD0; // idb | |
402 | |
403 | |
404 | |
405 | |
248 | 406 |
651 | 407 void OnSelectNPCDialogueOption(DIALOGUE_TYPE newDialogueType); |
248 | 408 |
409 | |
410 | |
0 | 411 extern int pWindowList_at_506F50_minus1_indexing_buttons____and_an_int_[]; // idb |
412 extern struct GUIWindow *pWindow_MainMenu; | |
566 | 413 extern struct GUIWindow pWindowList[20]; |
414 | |
415 | |
416 | |
417 | |
418 | |
419 | |
420 void QuickRefDraw(); |