annotate GUI/UI/UITransition.cpp @ 2575:a76d408c5132 tip

DrawTranslucent -> DrawTextureGrayShade Removed old texture drawing stuff
author a.parshin
date Wed, 09 Mar 2016 01:39:52 +0200
parents dd36326a9994
children
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"
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
22 #include "GUI/UI/UIGame.h"
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
23
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
24 #include "Media/Audio/AudioPlayer.h"
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
25 #include "Media/MediaPlayer.h"
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
26
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
27
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
28
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
29
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
30 Image *transition_ui_icon = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
31
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
32
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
33 void GUIWindow_Travel::Release()
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
34 {
2549
3121fb54a110 Rest & Spelbook refactored into class
a.parshin
parents: 2546
diff changeset
35 // -----------------------------------------
3121fb54a110 Rest & Spelbook refactored into class
a.parshin
parents: 2546
diff changeset
36 // 0041C26A void GUIWindow::Release --- part
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
37 if (transition_ui_icon)
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
38 {
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
39 transition_ui_icon->Release();
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
40 transition_ui_icon = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
41 }
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
42
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
43 if (game_ui_dialogue_background)
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
44 {
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
45 game_ui_dialogue_background->Release();
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
46 game_ui_dialogue_background = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
47 }
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
48
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
49 current_screen_type = prev_screen_type;
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
50
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
51 GUIWindow::Release();
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
52 }
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
53
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
54 void GUIWindow_Transition::Release()
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
55 {
2549
3121fb54a110 Rest & Spelbook refactored into class
a.parshin
parents: 2546
diff changeset
56 // -----------------------------------------
3121fb54a110 Rest & Spelbook refactored into class
a.parshin
parents: 2546
diff changeset
57 // 0041C26A void GUIWindow::Release --- part
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
58 //pVideoPlayer->Unload();
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
59 if (transition_ui_icon)
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
60 {
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
61 transition_ui_icon->Release();
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
62 transition_ui_icon = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
63 }
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
64
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
65 if (game_ui_dialogue_background)
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
66 {
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
67 game_ui_dialogue_background->Release();
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
68 game_ui_dialogue_background = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
69 }
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
70
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
71 current_screen_type = prev_screen_type;
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
72
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
73 GUIWindow::Release();
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
74 }
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
75
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
76
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
77 //----- (00444839) --------------------------------------------------------
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
78 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
79 GUIWindow(0, 0, window->GetWidth(), window->GetHeight(), 0, nullptr)
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
80 {
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
81 // ----------------------------------
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
82 // 00444839 TransitionUI_Load -- part
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
83 const char *v15; // eax@14
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
84 char pContainer[40]; // [sp+Ch] [bp-2Ch]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
85
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
86 dword_59117C_teleportx = x;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
87 dword_591178_teleporty = y;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
88 dword_591174_teleportz = z;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
89 dword_591170_teleport_directiony = directiony;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
90 dword_59116C_teleport_directionx = directionx;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
91 dword_591168_teleport_speedz = a8;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
92 dword_591164_teleport_map_name = (char *)pLocationName;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
93 uCurrentHouse_Animation = anim_id;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
94 pEventTimer->Pause();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
95 pAudioPlayer->StopChannels(-1, -1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
96
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
97 switch (pParty->alignment)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
98 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
99 case PartyAlignment_Good: sprintfex(pContainer, "evt%02d-b", const_2()); break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
100 case PartyAlignment_Neutral: sprintfex(pContainer, "evt%02d", const_2()); break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
101 case PartyAlignment_Evil: sprintfex(pContainer, "evt%02d-c", const_2()); break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
102 default: Error("Invalid alignment: %u", pParty->alignment);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
103 }
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
104 game_ui_dialogue_background = assets->GetImage_16Bit(pContainer);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
105
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
106 transition_ui_icon = assets->GetImage_16Bit(pHouse_ExitPictures[exit_pic_id]);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
107 if (anim_id)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
108 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
109 if ( !IndoorLocation::GetLocationIndex(pLocationName) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
110 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
111
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
112 v15 = pLocationName;
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
113 if (*pLocationName == 48)
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
114 v15 = pCurrentMapName;
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
115 if (pMapStats->GetMapInfo(v15))
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
116 {
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
117 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
118 if (uCurrentlyLoadedLevelType == LEVEL_Indoor && uActiveCharacter && pParty->uFlags & 0x30)
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
119 pPlayers[uActiveCharacter]->PlaySound(SPEECH_47, 0);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
120 if (IndoorLocation::GetLocationIndex(pLocationName))
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
121 uCurrentHouse_Animation = IndoorLocation::GetLocationIndex(pLocationName);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
122 }
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
123 else
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
124 {
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
125 strcpy(sHouseName.data(), pGlobalTXT_LocalizationStrings[73]);//Войти
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
126 //if ( pAnimatedRooms[p2DEvents[anim_id].uAnimationID].uRoomSoundId )
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
127 //PlayHouseSound(anim_id, HouseSound_Greeting);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
128 if (uCurrentlyLoadedLevelType == LEVEL_Indoor && uActiveCharacter && pParty->uFlags & 0x30)
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
129 pPlayers[uActiveCharacter]->PlaySound(SPEECH_47, 0);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
130 if (IndoorLocation::GetLocationIndex(pLocationName))
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
131 uCurrentHouse_Animation = IndoorLocation::GetLocationIndex(pLocationName);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
132 }
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
133 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
134 else if ( !IndoorLocation::GetLocationIndex(pLocationName) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
135 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
136 if ( pMapStats->GetMapInfo(pCurrentMapName) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
137 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
138 sprintfex(sHouseName.data(), pGlobalTXT_LocalizationStrings[410], pMapStats->pInfos[pMapStats->GetMapInfo(pCurrentMapName)].pName); // "Leave %s"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
139 //if ( pAnimatedRooms[p2DEvents[anim_id].uAnimationID].uRoomSoundId )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
140 //PlayHouseSound(anim_id, HouseSound_Greeting);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
141 if ( uCurrentlyLoadedLevelType == LEVEL_Indoor && uActiveCharacter && pParty->uFlags & 0x30 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
142 pPlayers[uActiveCharacter]->PlaySound(SPEECH_47, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
143 if ( IndoorLocation::GetLocationIndex(pLocationName) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
144 uCurrentHouse_Animation = IndoorLocation::GetLocationIndex(pLocationName);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
145 }
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
146 else
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
147 {
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
148 strcpy(sHouseName.data(), pGlobalTXT_LocalizationStrings[79]);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
149 //if ( pAnimatedRooms[p2DEvents[anim_id].uAnimationID].uRoomSoundId )
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
150 //PlayHouseSound(anim_id, HouseSound_Greeting);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
151 if (uCurrentlyLoadedLevelType == LEVEL_Indoor && uActiveCharacter && pParty->uFlags & 0x30)
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
152 pPlayers[uActiveCharacter]->PlaySound(SPEECH_47, 0);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
153 if (IndoorLocation::GetLocationIndex(pLocationName))
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
154 uCurrentHouse_Animation = IndoorLocation::GetLocationIndex(pLocationName);
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
155 }
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
156 }
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
157
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
158 auto hint = this->Hint = sHouseName.data();
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
159
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
160 //
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
161 // --------------------------------
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
162 // 0041C432 GUIWindow c-tor -- part
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
163 prev_screen_type = current_screen_type;
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
164 current_screen_type = SCREEN_INPUT_BLV;
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
165 pBtn_ExitCancel = CreateButton(0x236u, 0x1BDu, 0x4Bu, 0x21u, 1, 0, UIMSG_TransitionWindowCloseBtn, 0, 'N', pGlobalTXT_LocalizationStrings[34], ui_buttdesc2, 0); // Cancel / Отмена
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
166 pBtn_YES = CreateButton(0x1E6u, 0x1BDu, 0x4Bu, 0x21u, 1, 0, UIMSG_TransitionUI_Confirm, 0, 'Y', hint, ui_buttyes2, 0);
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
167 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
168 CreateButton(8, 8, 0x1CCu, 0x158u, 1, 0, UIMSG_TransitionUI_Confirm, 1u, 0, hint, 0);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
169 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
170
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
171
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2545
diff changeset
172
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
173 //----- (00444C8F) --------------------------------------------------------
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
174 GUIWindow_Travel::GUIWindow_Travel() :
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
175 GUIWindow(0, 0, window->GetWidth(), window->GetHeight(), 0, nullptr)
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
176 {
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
177 // ------------------------------
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
178 // 00444C8F TravelUI_Load -- part
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
179 char pContainer[32]; // [sp+0h] [bp-28h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
180
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
181 pEventTimer->Pause();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
182
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
183 switch (pParty->alignment)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
184 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
185 case PartyAlignment_Good: sprintfex(pContainer, "evt%02d-b", const_2()); break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
186 case PartyAlignment_Neutral: sprintfex(pContainer, "evt%02d", const_2()); break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
187 case PartyAlignment_Evil: sprintfex(pContainer, "evt%02d-c", const_2()); break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
188 default: Error("Invalid alignment: %u", pParty->alignment);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
189 }
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
190 game_ui_dialogue_background = assets->GetImage_16Bit(pContainer);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
191
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
192 transition_ui_icon = assets->GetImage_16Bit("outside");
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
193 if ( pMapStats->GetMapInfo(pCurrentMapName) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
194 sprintfex(sHouseName.data(), pGlobalTXT_LocalizationStrings[410], pMapStats->pInfos[pMapStats->GetMapInfo(pCurrentMapName)].pName);// "Leave %s"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
195 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
196 strcpy(sHouseName.data(), pGlobalTXT_LocalizationStrings[79]);// "Exit"
2545
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
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
199
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
200 auto hint = this->Hint = sHouseName.data();
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
201
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 // 0041C432 GUIWindow c-tor -- part
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
204 prev_screen_type = current_screen_type;
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
205 current_screen_type = SCREEN_CHANGE_LOCATION;
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
206 pBtn_ExitCancel = CreateButton(
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
207 566, 445, 75, 33, 1, 0,
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
208 UIMSG_CHANGE_LOCATION_ClickCencelBtn,
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
209 0,
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
210 'N',
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
211 pGlobalTXT_LocalizationStrings[156],
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
212 ui_buttdesc2,
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
213 0
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
214 );// Stay in this area / Остаться в этой области
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
215 pBtn_YES = CreateButton(
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
216 486, 445, 75, 33, 1, 0,
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
217 UIMSG_OnTravelByFoot,
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
218 0,
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
219 'Y',
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
220 hint,
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
221 ui_buttyes2,
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
222 0
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
223 );
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
224 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
225 CreateButton(8, 8, 460, 344, 1, 0, UIMSG_OnTravelByFoot, 1, 0, hint, 0);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
226 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
227
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
228
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
229
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
230 //----- (00444DCA) --------------------------------------------------------
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
231 void GUIWindow_Travel::Update()
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
232 {
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2545
diff changeset
233 // -----------------------------------
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2545
diff changeset
234 // 004156F0 GUI_UpdateWindows --- part
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
235 GUIWindow travel_window; // [sp+Ch] [bp-78h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
236 char pDestinationMapName[32]; // [sp+60h] [bp-24h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
237
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
238 memcpy(&travel_window, pPrimaryWindow, sizeof(travel_window));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
239 pOutdoor->GetTravelDestination(pParty->vPosition.x, pParty->vPosition.y, pDestinationMapName, 20);
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
240 pRenderer->DrawTextureNew(477/640.0f, 0, game_ui_dialogue_background);
2573
0c67be4ec900 DrawTextureIndexed renamed to DrawTextureTransparentColorKey
a.parshin
parents: 2572
diff changeset
241 pRenderer->DrawTextureAlphaNew(468/640.0f, 0, game_ui_right_panel_frame);
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
242 pRenderer->DrawTextureNew(pNPCPortraits_x[0][0]/640.0f, pNPCPortraits_y[0][0]/480.0f, transition_ui_icon);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
243 pRenderer->DrawTextureAlphaNew(556/640.0f, 451/480.0f, dialogue_ui_x_x_u);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
244 pRenderer->DrawTextureAlphaNew(476/640.0f, 451/480.0f, dialogue_ui_x_ok_u);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
245 if ( pMapStats->GetMapInfo(pDestinationMapName) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
246 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
247 travel_window.uFrameX = 493;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
248 travel_window.uFrameWidth = 126;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
249 travel_window.uFrameZ = 366;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
250 travel_window.DrawTitleText(pFontCreate, 0, 4, 0, pMapStats->pInfos[pMapStats->GetMapInfo(pDestinationMapName)].pName, 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
251 travel_window.uFrameX = 483;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
252 travel_window.uFrameWidth = 148;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
253 travel_window.uFrameZ = 334;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
254 if ( GetTravelTime() == 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
255 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
256 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
257 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
258
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
259 strcat(pTmpBuf.data(), "\n \n");
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
260 sprintfex(pTmpBuf2.data(), pGlobalTXT_LocalizationStrings[126], pMapStats->pInfos[pMapStats->GetMapInfo(pCurrentMapName)].pName);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
261 strcat(pTmpBuf.data(), pTmpBuf2.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
262 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
263 _unused_5B5924_is_travel_ui_drawn = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
264 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
265 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
266
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
267
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
268
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
269 //----- (00444A51) --------------------------------------------------------
2545
e06a3fe9ad6e TravelUI init logic moved to GUIWindow_Travel
a.parshin
parents: 2544
diff changeset
270 void GUIWindow_Transition::Update()
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
271 {
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2545
diff changeset
272 // -----------------------------------
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2545
diff changeset
273 // 004156F0 GUI_UpdateWindows --- part
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
274 unsigned int v4; // [sp-10h] [bp-7Ch]@12
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
275 GUIWindow transition_window; // [sp+Ch] [bp-60h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
276 unsigned int v9; // [sp+60h] [bp-Ch]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
277 unsigned int map_id; // [sp+64h] [bp-8h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
278
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
279 memcpy(&transition_window, pPrimaryWindow, sizeof(transition_window));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
280 v9 = IndoorLocation::GetLocationIndex(dword_591164_teleport_map_name);
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
281 pRenderer->DrawTextureNew(477/640.0f, 0, game_ui_dialogue_background);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
282 pRenderer->DrawTextureAlphaNew((pNPCPortraits_x[0][0] - 4)/640.0f, (pNPCPortraits_y[0][0] - 4)/480.0f, game_ui_evtnpc);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
283 pRenderer->DrawTextureNew(pNPCPortraits_x[0][0]/640.0f, pNPCPortraits_y[0][0]/480.0f, transition_ui_icon);
2573
0c67be4ec900 DrawTextureIndexed renamed to DrawTextureTransparentColorKey
a.parshin
parents: 2572
diff changeset
284
0c67be4ec900 DrawTextureIndexed renamed to DrawTextureTransparentColorKey
a.parshin
parents: 2572
diff changeset
285 pRenderer->DrawTextureAlphaNew(468/640.0f, 0, game_ui_right_panel_frame);
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
286 pRenderer->DrawTextureAlphaNew(556/640.0f, 451/480.0f, dialogue_ui_x_x_u);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
287 pRenderer->DrawTextureAlphaNew(476/640.0f, 451/480.0f, dialogue_ui_x_ok_u);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
288 map_id = pMapStats->GetMapInfo(pCurrentMapName);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
289 if ( (pMovie_Track || v9) && *dword_591164_teleport_map_name != ' ' )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
290 map_id = pMapStats->GetMapInfo(dword_591164_teleport_map_name);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
291 transition_window.uFrameX = 493;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
292 transition_window.uFrameWidth = 126;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
293 transition_window.uFrameZ = 366;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
294 transition_window.DrawTitleText(pFontCreate, 0, 5, 0, pMapStats->pInfos[map_id].pName, 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
295 transition_window.uFrameX = 483;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
296 transition_window.uFrameWidth = 148;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
297 transition_window.uFrameZ = 334;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
298
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
299 if ( uCurrentHouse_Animation )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
300 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
301 v4 = (212 - pFontCreate->CalcTextHeight(pTransitionStrings[uCurrentHouse_Animation], &transition_window, 0, 0)) / 2 + 101;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
302 transition_window.DrawTitleText(pFontCreate, 0, v4, 0, pTransitionStrings[uCurrentHouse_Animation], 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
303 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
304 else if ( map_id )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
305 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
306 sprintfex(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[409], pMapStats->pInfos[map_id].pName);// "Do you wish to leave %s?"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
307 v4 = (212 - pFontCreate->CalcTextHeight(pTmpBuf.data(), &transition_window, 0, 0)) / 2 + 101;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
308 transition_window.DrawTitleText(pFontCreate, 0, v4, 0, pTmpBuf.data(), 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
309 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
310 else Error("Troubles in da house");
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
311
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
312 _unused_5B5924_is_travel_ui_drawn = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
313 }