annotate GUI/UI/UITransition.cpp @ 2547:fed97f15d1e1

* SaveLoad * QuickReference * Modal * Character
author a.parshin
date Tue, 12 May 2015 01:45:31 +0200
parents 4087cbc62706
children 3121fb54a110
rev   line source
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1 #define _CRTDBG_MAP_ALLOC
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2 #include <stdlib.h>
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
3 #include <crtdbg.h>
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
4
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
5 #define _CRT_SECURE_NO_WARNINGS
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
6 #include <io.h>
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
7
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
8 #include "Engine/Engine.h"
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
9 #include "Engine/Party.h"
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
10 #include "Engine/Graphics/Outdoor.h"
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
11 #include "Engine/LOD.h"
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
12 #include "Engine/Timer.h"
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
13 #include "Engine/stru159.h"
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
14 #include "Engine/Events2D.h"
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
15 #include "Engine/texts.h"
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
16 #include "Engine/MapInfo.h"
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
17
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
18 #include "GUI/UI/UITransition.h"
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
19 #include "GUI/GUIFont.h"
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
20 #include "GUI/GUIProgressBar.h"
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
21 #include "GUI/UI/UIHouses.h"
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
22
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
23 #include "Media/Audio/AudioPlayer.h"
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
24 #include "Media/MediaPlayer.h"
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
25
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
26
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
27
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
28
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
29 void GUIWindow_Travel::Release()
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
30 {
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
31 pTexture_outside->Release();
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
32 pTexture_Dialogue_Background->Release();
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
33 pIcons_LOD->SyncLoadedFilesCount();
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
34 current_screen_type = prev_screen_type;
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
35
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
36 GUIWindow::Release();
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
37 }
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
38
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
39 void GUIWindow_Transition::Release()
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
40 {
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
41 //pVideoPlayer->Unload();
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
42 pTexture_outside->Release();
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
43 pTexture_Dialogue_Background->Release();
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
44 pIcons_LOD->SyncLoadedFilesCount();
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
45 current_screen_type = prev_screen_type;
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
46
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
47 GUIWindow::Release();
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
48 }
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
49
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
50
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
51 //----- (00444839) --------------------------------------------------------
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
52 GUIWindow_Transition::GUIWindow_Transition(uint anim_id, uint exit_pic_id, int x, int y, int z, int directiony, int directionx, int a8, const char *pLocationName) :
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
53 GUIWindow(0, 0, window->GetWidth(), window->GetHeight(), 0, nullptr)
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
54 {
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
55 // ----------------------------------
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
56 // 00444839 TransitionUI_Load -- part
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
57 const char *v15; // eax@14
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
58 char pContainer[40]; // [sp+Ch] [bp-2Ch]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
59
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
60 dword_59117C_teleportx = x;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
61 dword_591178_teleporty = y;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
62 dword_591174_teleportz = z;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
63 dword_591170_teleport_directiony = directiony;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
64 dword_59116C_teleport_directionx = directionx;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
65 dword_591168_teleport_speedz = a8;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
66 dword_591164_teleport_map_name = (char *)pLocationName;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
67 uCurrentHouse_Animation = anim_id;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
68 pEventTimer->Pause();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
69 pAudioPlayer->StopChannels(-1, -1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
70
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
71 switch (pParty->alignment)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
72 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
73 case PartyAlignment_Good: sprintfex(pContainer, "evt%02d-b", const_2()); break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
74 case PartyAlignment_Neutral: sprintfex(pContainer, "evt%02d", const_2()); break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
75 case PartyAlignment_Evil: sprintfex(pContainer, "evt%02d-c", const_2()); break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
76 default: Error("Invalid alignment: %u", pParty->alignment);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
77 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
78
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
79 pTexture_Dialogue_Background = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE)];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
80 pTexture_outside = pIcons_LOD->LoadTexturePtr(pHouse_ExitPictures[exit_pic_id], TEXTURE_16BIT_PALETTE);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
81 if (anim_id)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
82 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
83 if ( !IndoorLocation::GetLocationIndex(pLocationName) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
84 pMediaPlayer->OpenHouseMovie(pAnimatedRooms[p2DEvents[anim_id - 1].uAnimationID].video_name, 1);
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
85
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
86 v15 = pLocationName;
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
87 if (*pLocationName == 48)
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
88 v15 = pCurrentMapName;
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
89 if (pMapStats->GetMapInfo(v15))
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
90 {
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
91 sprintfex(sHouseName.data(), pGlobalTXT_LocalizationStrings[411], pMapStats->pInfos[pMapStats->GetMapInfo(v15)].pName);//Войти в ^Pv[%s]
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
92 if (uCurrentlyLoadedLevelType == LEVEL_Indoor && uActiveCharacter && pParty->uFlags & 0x30)
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
93 pPlayers[uActiveCharacter]->PlaySound(SPEECH_47, 0);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
94 if (IndoorLocation::GetLocationIndex(pLocationName))
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
95 uCurrentHouse_Animation = IndoorLocation::GetLocationIndex(pLocationName);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
96 }
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
97 else
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
98 {
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
99 strcpy(sHouseName.data(), pGlobalTXT_LocalizationStrings[73]);//Войти
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
100 //if ( pAnimatedRooms[p2DEvents[anim_id].uAnimationID].uRoomSoundId )
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
101 //PlayHouseSound(anim_id, HouseSound_Greeting);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
102 if (uCurrentlyLoadedLevelType == LEVEL_Indoor && uActiveCharacter && pParty->uFlags & 0x30)
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
103 pPlayers[uActiveCharacter]->PlaySound(SPEECH_47, 0);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
104 if (IndoorLocation::GetLocationIndex(pLocationName))
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
105 uCurrentHouse_Animation = IndoorLocation::GetLocationIndex(pLocationName);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
106 }
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
107 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
108 else if ( !IndoorLocation::GetLocationIndex(pLocationName) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
109 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
110 if ( pMapStats->GetMapInfo(pCurrentMapName) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
111 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
112 sprintfex(sHouseName.data(), pGlobalTXT_LocalizationStrings[410], pMapStats->pInfos[pMapStats->GetMapInfo(pCurrentMapName)].pName); // "Leave %s"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
113 //if ( pAnimatedRooms[p2DEvents[anim_id].uAnimationID].uRoomSoundId )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
114 //PlayHouseSound(anim_id, HouseSound_Greeting);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
115 if ( uCurrentlyLoadedLevelType == LEVEL_Indoor && uActiveCharacter && pParty->uFlags & 0x30 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
116 pPlayers[uActiveCharacter]->PlaySound(SPEECH_47, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
117 if ( IndoorLocation::GetLocationIndex(pLocationName) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
118 uCurrentHouse_Animation = IndoorLocation::GetLocationIndex(pLocationName);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
119 }
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
120 else
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
121 {
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
122 strcpy(sHouseName.data(), pGlobalTXT_LocalizationStrings[79]);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
123 //if ( pAnimatedRooms[p2DEvents[anim_id].uAnimationID].uRoomSoundId )
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
124 //PlayHouseSound(anim_id, HouseSound_Greeting);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
125 if (uCurrentlyLoadedLevelType == LEVEL_Indoor && uActiveCharacter && pParty->uFlags & 0x30)
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
126 pPlayers[uActiveCharacter]->PlaySound(SPEECH_47, 0);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
127 if (IndoorLocation::GetLocationIndex(pLocationName))
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
128 uCurrentHouse_Animation = IndoorLocation::GetLocationIndex(pLocationName);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
129 }
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
130 }
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
131
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
132 auto hint = this->Hint = sHouseName.data();
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
133
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
134 //
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
135 // --------------------------------
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
136 // 0041C432 GUIWindow c-tor -- part
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
137 prev_screen_type = current_screen_type;
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
138 current_screen_type = SCREEN_INPUT_BLV;
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
139 pBtn_ExitCancel = CreateButton(0x236u, 0x1BDu, 0x4Bu, 0x21u, 1, 0, UIMSG_TransitionWindowCloseBtn, 0, 'N', pGlobalTXT_LocalizationStrings[34], pIcons_LOD->GetTexture(uTextureID_BUTTDESC2), 0); // Cancel / Отмена
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
140 pBtn_YES = CreateButton(0x1E6u, 0x1BDu, 0x4Bu, 0x21u, 1, 0, UIMSG_TransitionUI_Confirm, 0, 'Y', hint, pIcons_LOD->GetTexture(uTextureID_BUTTYES2), 0);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
141 CreateButton(pNPCPortraits_x[0][0], pNPCPortraits_y[0][0], 0x3Fu, 0x49u, 1, 0, UIMSG_TransitionUI_Confirm, 1, 0x20u, hint, 0);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
142 CreateButton(8, 8, 0x1CCu, 0x158u, 1, 0, UIMSG_TransitionUI_Confirm, 1u, 0, hint, 0);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
143 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
144
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
145
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2545
diff changeset
146
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
147 //----- (00444C8F) --------------------------------------------------------
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
148 GUIWindow_Travel::GUIWindow_Travel() :
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
149 GUIWindow(0, 0, window->GetWidth(), window->GetHeight(), 0, nullptr)
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
150 {
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
151 // ------------------------------
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
152 // 00444C8F TravelUI_Load -- part
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
153 char pContainer[32]; // [sp+0h] [bp-28h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
154
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
155 pEventTimer->Pause();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
156
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
157 switch (pParty->alignment)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
158 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
159 case PartyAlignment_Good: sprintfex(pContainer, "evt%02d-b", const_2()); break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
160 case PartyAlignment_Neutral: sprintfex(pContainer, "evt%02d", const_2()); break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
161 case PartyAlignment_Evil: sprintfex(pContainer, "evt%02d-c", const_2()); break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
162 default: Error("Invalid alignment: %u", pParty->alignment);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
163 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
164
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
165 pTexture_Dialogue_Background = pIcons_LOD->LoadTexturePtr(pContainer, TEXTURE_16BIT_PALETTE);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
166 pTexture_outside = pIcons_LOD->LoadTexturePtr("outside", TEXTURE_16BIT_PALETTE);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
167 if ( pMapStats->GetMapInfo(pCurrentMapName) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
168 sprintfex(sHouseName.data(), pGlobalTXT_LocalizationStrings[410], pMapStats->pInfos[pMapStats->GetMapInfo(pCurrentMapName)].pName);// "Leave %s"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
169 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
170 strcpy(sHouseName.data(), pGlobalTXT_LocalizationStrings[79]);// "Exit"
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
171
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
172
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
173
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
174 auto hint = this->Hint = sHouseName.data();
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
175
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
176 // --------------------------------
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
177 // 0041C432 GUIWindow c-tor -- part
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
178 prev_screen_type = current_screen_type;
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
179 current_screen_type = SCREEN_CHANGE_LOCATION;
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
180 pBtn_ExitCancel = CreateButton(
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
181 566, 445, 75, 33, 1, 0,
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
182 UIMSG_CHANGE_LOCATION_ClickCencelBtn,
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
183 0,
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
184 'N',
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
185 pGlobalTXT_LocalizationStrings[156],
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
186 pIcons_LOD->GetTexture(uTextureID_BUTTDESC2),
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
187 0
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
188 );// Stay in this area / Остаться в этой области
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
189 pBtn_YES = CreateButton(
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
190 486, 445, 75, 33, 1, 0,
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
191 UIMSG_OnTravelByFoot,
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
192 0,
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
193 'Y',
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
194 hint,
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
195 pIcons_LOD->GetTexture(uTextureID_BUTTYES2),
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
196 0
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
197 );
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
198 CreateButton(pNPCPortraits_x[0][0], pNPCPortraits_y[0][0], 63, 73, 1, 0, UIMSG_OnTravelByFoot, 1, ' ', hint, 0, 0, 0);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
199 CreateButton(8, 8, 460, 344, 1, 0, UIMSG_OnTravelByFoot, 1, 0, hint, 0);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
200 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
201
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
202
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
203
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
204 //----- (00444DCA) --------------------------------------------------------
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
205 void GUIWindow_Travel::Update()
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
206 {
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2545
diff changeset
207 // -----------------------------------
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2545
diff changeset
208 // 004156F0 GUI_UpdateWindows --- part
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
209 GUIWindow travel_window; // [sp+Ch] [bp-78h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
210 char pDestinationMapName[32]; // [sp+60h] [bp-24h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
211
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
212 memcpy(&travel_window, pPrimaryWindow, sizeof(travel_window));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
213 pOutdoor->GetTravelDestination(pParty->vPosition.x, pParty->vPosition.y, pDestinationMapName, 20);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
214 pRenderer->DrawTextureIndexed(477, 0, pTexture_Dialogue_Background);
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2502
diff changeset
215 pRenderer->DrawTextureIndexedAlpha(468, 0, &pIcons_LOD->pTextures[uTextureID_right_panel_loop]);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
216 pRenderer->DrawTextureIndexed(pNPCPortraits_x[0][0], pNPCPortraits_y[0][0], pTexture_outside);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
217 pRenderer->DrawTextureIndexed(556, 451, pIcons_LOD->GetTexture(uTextureID_x_x_u));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
218 pRenderer->DrawTextureIndexed(476, 451, pIcons_LOD->GetTexture(uTextureID_x_ok_u));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
219 if ( pMapStats->GetMapInfo(pDestinationMapName) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
220 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
221 travel_window.uFrameX = 493;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
222 travel_window.uFrameWidth = 126;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
223 travel_window.uFrameZ = 366;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
224 travel_window.DrawTitleText(pFontCreate, 0, 4, 0, pMapStats->pInfos[pMapStats->GetMapInfo(pDestinationMapName)].pName, 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
225 travel_window.uFrameX = 483;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
226 travel_window.uFrameWidth = 148;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
227 travel_window.uFrameZ = 334;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
228 if ( GetTravelTime() == 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
229 sprintfex(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[663], 1, pMapStats->pInfos[pMapStats->GetMapInfo(pDestinationMapName)].pName);// "It will take %d day to cross to %s."
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
230 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
231 sprintfex(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[128], GetTravelTime(), pMapStats->pInfos[pMapStats->GetMapInfo(pDestinationMapName)].pName);// "It will take %d days to travel to %s."
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
232
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
233 strcat(pTmpBuf.data(), "\n \n");
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
234 sprintfex(pTmpBuf2.data(), pGlobalTXT_LocalizationStrings[126], pMapStats->pInfos[pMapStats->GetMapInfo(pCurrentMapName)].pName);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
235 strcat(pTmpBuf.data(), pTmpBuf2.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
236 travel_window.DrawTitleText(pFontCreate, 0, (212 - pFontCreate->CalcTextHeight(pTmpBuf.data(), &travel_window, 0, 0)) / 2 + 101, 0, pTmpBuf.data(), 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
237 _unused_5B5924_is_travel_ui_drawn = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
238 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
239 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
240
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
241
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
242
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
243 //----- (00444A51) --------------------------------------------------------
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
244 void GUIWindow_Transition::Update()
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
245 {
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2545
diff changeset
246 // -----------------------------------
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2545
diff changeset
247 // 004156F0 GUI_UpdateWindows --- part
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
248 unsigned int v4; // [sp-10h] [bp-7Ch]@12
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
249 GUIWindow transition_window; // [sp+Ch] [bp-60h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
250 unsigned int v9; // [sp+60h] [bp-Ch]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
251 unsigned int map_id; // [sp+64h] [bp-8h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
252
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
253 memcpy(&transition_window, pPrimaryWindow, sizeof(transition_window));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
254 v9 = IndoorLocation::GetLocationIndex(dword_591164_teleport_map_name);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
255 pRenderer->DrawTextureIndexed(0x1DDu, 0, pTexture_Dialogue_Background);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
256 pRenderer->DrawTextureIndexed(pNPCPortraits_x[0][0] - 4, pNPCPortraits_y[0][0] - 4, pIcons_LOD->GetTexture(uTextureID_50795C));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
257 pRenderer->DrawTextureIndexed(pNPCPortraits_x[0][0], pNPCPortraits_y[0][0], pTexture_outside);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
258 uTextureID_right_panel_loop = uTextureID_right_panel;
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2502
diff changeset
259 pRenderer->DrawTextureIndexedAlpha(468, 0, pIcons_LOD->GetTexture(uTextureID_right_panel));
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
260 pRenderer->DrawTextureIndexed(556, 451, pIcons_LOD->GetTexture(uTextureID_x_x_u));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
261 pRenderer->DrawTextureIndexed(476, 451, pIcons_LOD->GetTexture(uTextureID_x_ok_u));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
262 map_id = pMapStats->GetMapInfo(pCurrentMapName);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
263 if ( (pMovie_Track || v9) && *dword_591164_teleport_map_name != ' ' )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
264 map_id = pMapStats->GetMapInfo(dword_591164_teleport_map_name);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
265 transition_window.uFrameX = 493;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
266 transition_window.uFrameWidth = 126;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
267 transition_window.uFrameZ = 366;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
268 transition_window.DrawTitleText(pFontCreate, 0, 5, 0, pMapStats->pInfos[map_id].pName, 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
269 transition_window.uFrameX = 483;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
270 transition_window.uFrameWidth = 148;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
271 transition_window.uFrameZ = 334;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
272
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
273 if ( uCurrentHouse_Animation )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
274 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
275 v4 = (212 - pFontCreate->CalcTextHeight(pTransitionStrings[uCurrentHouse_Animation], &transition_window, 0, 0)) / 2 + 101;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
276 transition_window.DrawTitleText(pFontCreate, 0, v4, 0, pTransitionStrings[uCurrentHouse_Animation], 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
277 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
278 else if ( map_id )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
279 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
280 sprintfex(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[409], pMapStats->pInfos[map_id].pName);// "Do you wish to leave %s?"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
281 v4 = (212 - pFontCreate->CalcTextHeight(pTmpBuf.data(), &transition_window, 0, 0)) / 2 + 101;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
282 transition_window.DrawTitleText(pFontCreate, 0, v4, 0, pTmpBuf.data(), 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
283 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
284 else Error("Troubles in da house");
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
285
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
286 _unused_5B5924_is_travel_ui_drawn = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
287 }