annotate GUI/GUIWindow.cpp @ 2541:a902abdfc7f2

1. Renamed class Game to class Engine. 2. Separated game logic as state of FSM from game logic as engine. 3. Found out that many UI screen initializers were optimized away, intially they all returned newly created window as separate object like it is done in CharacterUI_Initialize.
author a.parshin
date Sun, 10 May 2015 01:29:11 +0200
parents 9ec6b8be16fe
children bacf9809126a
rev   line source
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1 #define _CRTDBG_MAP_ALLOC
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2 #include <stdlib.h>
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3 #include <crtdbg.h>
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
4
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
5 #define _CRT_SECURE_NO_WARNINGS
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
6 #include "Engine/Engine.h"
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
7
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
8 #include "GUIWindow.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
9 #include "GUIFont.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
10 #include "Engine/Party.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
11 #include "Engine/LOD.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
12 #include "IO/Keyboard.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
13 #include "Engine/OurMath.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
14 #include "Engine/Timer.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
15 #include "Media/Audio/AudioPlayer.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
16 #include "IO/Mouse.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
17 #include "Engine/Graphics/Viewport.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
18 #include "Engine/Tables/StorylineTextTable.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
19 #include "GUI\UI\UIHouses.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
20 #include "GUI\UI\UIBooks.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
21 #include "Engine/texts.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
22 #include "Engine/Autonotes.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
23 #include "Engine/Awards.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
24 #include "Engine/Objects/Chest.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
25 #include "Engine/Graphics/Outdoor.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
26 #include "Engine/Tables/IconFrameTable.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
27 #include "Engine/Objects/Actor.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
28
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
29 #include "GUI\UI\UIArena.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
30 #include "Engine/Events.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
31 #include "Engine/Graphics/Level\Decoration.h"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
32
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
33 typedef struct _RGBColor
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
34 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
35 unsigned char R;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
36 unsigned char B;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
37 unsigned char G;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
38 }RGBColor;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
39
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
40
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
41 std::array<RGBColor, 20> spell_tooltip_colors={{
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
42 {0x96, 0xD4, 0xFF},
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
43 {0xFF, 0x80, 0x00},
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
44 {0xFF, 0xFF, 0x9B},
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
45 {0xE1, 0xE1, 0xE1},
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
46 {0x80, 0x80, 0x80},
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
47 {0x96, 0xD4, 0xFF},
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
48 {0xFF, 0x55, 0x00},
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
49 {0x96, 0xD4, 0xFF},
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
50 {0xFF, 0x55, 0x00},
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
51 {0xE1, 0xE1, 0xE1},
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
52 {0xFF, 0x55, 0x00},
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
53 {0x96, 0xD4, 0xFF},
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
54 {0xEB, 0x0F, 0xFF},
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
55 {0xFF, 0x80, 0x00},
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
56 {0x96, 0xD4, 0xFF},
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
57 {0x80, 0x80, 0x80},
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
58 {0xFF, 0x55, 0x00},
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
59 {0x00, 0x80, 0xFF},
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
60 {0x00, 0x80, 0xFF},
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
61 {0x96, 0xD4, 0xFF}}};
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
62
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
63
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
64 int pWindowList_at_506F50_minus1_indexing_buttons____and_an_int_[1]; // idb
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
65 struct GUIWindow *pWindow_MMT_MainMenu;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
66 struct GUIWindow *pWindow_MainMenu;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
67 std::array<struct GUIWindow, 20> pWindowList;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
68
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
69 struct GUIMessageQueue *pMessageQueue_50CBD0 = new GUIMessageQueue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
70 struct GUIMessageQueue *pMessageQueue_50C9E8 = new GUIMessageQueue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
71
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
72
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
73
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
74
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
75
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
76
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
77 // inlined
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
78 //----- (mm6c::00420520) --------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
79 void GUIMessageQueue::Flush()
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
80 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
81 if (uNumMessages)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
82 uNumMessages = pMessages[0].field_8 != 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
83 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
84
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
85 //----- (004356B9) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
86 void GUIMessageQueue::PopMessage(enum UIMessageType *pType, int *pParam, int *a4)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
87 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
88 if ( this->uNumMessages )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
89 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
90 *pType = this->pMessages[0].eType;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
91 *pParam = this->pMessages[0].param;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
92 *a4 = this->pMessages[0].field_8;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
93 if ( (signed int)(this->uNumMessages - 1) > 0 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
94 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
95 for ( uint i = 0; i < (signed int)(this->uNumMessages - 1); ++i )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
96 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
97 this->pMessages[i].eType = this->pMessages[i + 1].eType;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
98 this->pMessages[i].param = this->pMessages[i + 1].param;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
99 this->pMessages[i].field_8 = this->pMessages[i + 1].field_8;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
100 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
101 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
102 --this->uNumMessages;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
103 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
104 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
105
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
106 //----- (0041B4E1) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
107 int __fastcall GUI_ReplaceHotkey(unsigned __int8 uOldHotkey, unsigned __int8 uNewHotkey, char bFirstCall)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
108 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
109 int result; // eax@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
110 int i; // edx@2
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
111 GUIButton *j; // ecx@3
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
112 int k; // edx@7
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
113 GUIButton *l; // ecx@8
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
114 unsigned __int8 v9; // [sp+4h] [bp-8h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
115 char old_hot_key; // [sp+8h] [bp-4h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
116
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
117 //v3 = uNewHotkey;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
118 old_hot_key = toupper(uOldHotkey);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
119 result = toupper(uNewHotkey);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
120 v9 = result;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
121 if ( bFirstCall )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
122 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
123 for ( i = uNumVisibleWindows; i >= 0; --i )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
124 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
125 result = 84 * pVisibleWindowsIdxs[i];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
126 for ( j = pWindowList[pVisibleWindowsIdxs[i] - 1].pControlsHead; j; j = j->pNext )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
127 j->field_28 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
128 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
129 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
130 for ( k = uNumVisibleWindows; k >= 0; --k )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
131 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
132 result = 84 * pVisibleWindowsIdxs[k];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
133 for ( l = pWindowList[pVisibleWindowsIdxs[k] - 1].pControlsHead; l; l = l->pNext )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
134 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
135 LOBYTE(result) = old_hot_key;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
136 if ( l->uHotkey == old_hot_key )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
137 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
138 if ( !l->field_28 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
139 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
140 LOBYTE(result) = v9;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
141 l->field_28 = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
142 l->uHotkey = v9;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
143 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
144 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
145 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
146 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
147 return result;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
148 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
149
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
150 //----- (0041B438) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
151 GUIButton *__fastcall GUI_HandleHotkey(unsigned __int8 uHotkey)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
152 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
153 char Hot_key_num; // al@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
154 GUIWindow *current_window; // ecx@2
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
155 GUIButton *result; // eax@2
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
156
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
157 Hot_key_num = toupper(uHotkey);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
158 for( int i = uNumVisibleWindows; i >= 0 && pVisibleWindowsIdxs[i] > 0; i-- )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
159 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
160 current_window = &pWindowList[pVisibleWindowsIdxs[i] - 1];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
161 for ( result = current_window->pControlsHead; result; result = result->pNext )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
162 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
163 if ( result->uHotkey == Hot_key_num )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
164 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
165 pMessageQueue_50CBD0->AddGUIMessage(result->msg, result->msg_param, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
166 return result;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
167 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
168 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
169 if ( !current_window->uFrameX && !current_window->uFrameY
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
170 && (current_window->uFrameWidth == window->GetWidth() && current_window->uFrameHeight == window->GetWidth()) )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
171 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
172 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
173 return 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
174 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
175 // 5075E0: using guessed type int pVisibleWindowsIdxs[20];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
176
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
177 //----- (0041D73D) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
178 void GUIWindow::_41D73D_draw_buff_tooltip()
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
179 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
180 __int64 remaing_time; // ST28_8@11
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
181 unsigned short text_color;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
182 int Y_pos; // esi@11
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
183 int string_count; // [sp+20h] [bp-4h]@7
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
184
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
185 string_count = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
186 for (int i=0; i<20; ++i)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
187 if ( pParty->pPartyBuffs[i].uExpireTime > 0i64 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
188 ++string_count;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
189
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
190 uFrameHeight = pFontArrus->uFontHeight + 72;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
191 uFrameHeight += (string_count - 1) * pFontArrus->uFontHeight;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
192 uFrameZ = uFrameWidth + uFrameX - 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
193 uFrameW = uFrameY + uFrameHeight - 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
194 DrawMessageBox(0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
195 DrawTitleText(pFontArrus, 0, 12, 0, pGlobalTXT_LocalizationStrings[451], 3);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
196 if ( !string_count )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
197 DrawTitleText(pFontComic, 0, 40, 0, pGlobalTXT_LocalizationStrings[153], 3);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
198
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
199 GetTickCount();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
200 string_count = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
201 for (int i=0; i<20; ++i)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
202 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
203 if ( pParty->pPartyBuffs[i].uExpireTime>0i64 )//!!!
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
204 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
205 remaing_time = pParty->pPartyBuffs[i].uExpireTime- pParty->uTimePlayed;//!!!
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
206 Y_pos = string_count * pFontComic->uFontHeight + 40;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
207 text_color = Color16(spell_tooltip_colors[i].R, spell_tooltip_colors[i].G, spell_tooltip_colors[i].B);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
208 DrawText(pFontComic, 52, Y_pos, text_color, aSpellNames[i], 0, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
209 DrawBuff_remaining_time_string(Y_pos, this, remaing_time, pFontComic);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
210 ++string_count;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
211 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
212 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
213 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
214
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
215
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
216 //----- (0041D08F) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
217 void GUIWindow::_41D08F_set_keyboard_control_group(int num_buttons, int a3, int a4, int a5)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
218 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
219 if (num_buttons)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
220 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
221 this->pNumPresenceButton = num_buttons;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
222 this->field_30 = a3;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
223 this->field_34 = a4;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
224 this->pCurrentPosActiveItem = a5;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
225 this->pStartingPosActiveItem = a5;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
226 this->receives_keyboard_input = true;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
227 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
228 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
229 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
230 this->pNumPresenceButton = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
231 this->field_30 = a3;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
232 this->field_34 = a4;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
233 this->pCurrentPosActiveItem = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
234 this->pStartingPosActiveItem = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
235 this->receives_keyboard_input = false;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
236 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
237 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
238
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
239
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
240 //----- (0041C26A) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
241 void GUIWindow::Release()
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
242 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
243 //GUIWindow *v1; // esi@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
244 int i; // edi@20
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
245 //GUIButton *v8; // eax@26
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
246 GUIButton *pNextBtn; // edi@27
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
247 //int v10; // esi@28
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
248 //int v11; // ecx@28
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
249 int v12; // edx@29
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
250
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
251 //v1 = this;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
252 if ( !this )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
253 return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
254
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
255 switch( this->eWindowType )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
256 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
257 case WINDOW_GreetingNPC:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
258 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
259 pIcons_LOD->SyncLoadedFilesCount();
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
260 current_screen_type = prev_screen_type;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
261 pKeyActionMap->SetWindowInputStatus(WINDOW_INPUT_CANCELLED);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
262 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
263 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
264 case WINDOW_HouseInterior:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
265 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
266 for ( i = 0; i < uNumDialogueNPCPortraits; ++i )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
267 pDialogueNPCPortraits[i]->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
268 uNumDialogueNPCPortraits = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
269 pTexture_Dialogue_Background->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
270
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
271 pIcons_LOD->SyncLoadedFilesCount();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
272 pIcons_LOD->RemoveTexturesPackFromTextureList();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
273 dword_5C35D4 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
274 if ( bFlipOnExit )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
275 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
276 pParty->sRotationY = (stru_5C6E00->uIntegerDoublePi - 1) & (stru_5C6E00->uIntegerPi + pParty->sRotationY);
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
277 pEngine->pIndoorCameraD3D->sRotationY = pParty->sRotationY;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
278 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
279 pParty->uFlags |= 2u;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
280 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
281 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
282 case WINDOW_Transition:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
283 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
284 //pVideoPlayer->Unload();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
285 pTexture_outside->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
286 pTexture_Dialogue_Background->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
287 pIcons_LOD->SyncLoadedFilesCount();
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
288 current_screen_type = prev_screen_type;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
289 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
290 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
291 case WINDOW_SpellBook:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
292 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
293 OnCloseSpellBookPage();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
294 OnCloseSpellBook();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
295 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
296 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
297 case WINDOW_Book:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
298 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
299 OnCloseBook();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
300 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
301 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
302 case WINDOW_ChangeLocation:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
303 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
304 pTexture_outside->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
305 pTexture_Dialogue_Background->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
306 pIcons_LOD->SyncLoadedFilesCount();
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
307 current_screen_type = prev_screen_type;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
308 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
309 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
310 case WINDOW_Dialogue:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
311 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
312 if ( !dword_591084 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
313 pDialogueNPCPortraits[0]->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
314 uNumDialogueNPCPortraits = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
315 pTexture_Dialogue_Background->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
316
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
317 pIcons_LOD->SyncLoadedFilesCount();
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
318 current_screen_type = prev_screen_type;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
319 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
320 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
321 case WINDOW_null:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
322 return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
323 default:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
324 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
325 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
326 //v8 = this->pControlsHead;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
327 if ( this->pControlsHead )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
328 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
329 do
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
330 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
331 pNextBtn = this->pControlsHead->pNext;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
332 free(this->pControlsHead);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
333 this->pControlsHead = pNextBtn;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
334 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
335 while ( pNextBtn );
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
336 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
337 this->pControlsHead = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
338 this->pControlsTail = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
339 this->uNumControls = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
340 this->eWindowType = WINDOW_null;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
341 while ( this->numVisibleWindows < uNumVisibleWindows )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
342 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
343 v12 = pVisibleWindowsIdxs[this->numVisibleWindows + 1];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
344 pVisibleWindowsIdxs[this->numVisibleWindows] = v12;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
345 --pWindowList[v12 - 1].numVisibleWindows;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
346 ++this->numVisibleWindows;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
347 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
348 pVisibleWindowsIdxs[uNumVisibleWindows] = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
349 uNumVisibleWindows = uNumVisibleWindows - 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
350 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
351
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
352 //----- (0041CD3B) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
353 GUIButton *GUIWindow::GetControl(unsigned int uID)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
354 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
355 GUIButton *result; // eax@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
356
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
357 result = this->pControlsHead;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
358 for ( uID; uID; --uID )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
359 result = result->pNext;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
360 return result;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
361 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
362
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
363 //----- (00411BFC) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
364 void GUIWindow::InitializeBookView()
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
365 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
366 char *pString; // eax@12
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
367 int pTextHeight; // eax@12
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
368 //__int64 page_count; // qax@12
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
369 unsigned int page_count; // esi@12
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
370 unsigned __int16 v18; // ax@38
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
371 signed int max_beacons; // [sp+10h] [bp-5Ch]@38
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
372 GUIWindow journal_window; // [sp+18h] [bp-54h]@8
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
373
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
374 pAudioPlayer->StopChannels(-1, -1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
375 InitializeBookFonts();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
376 this->CreateButton(475, 445, 158, 34, 1, 0, UIMSG_Escape, 0, 0, pGlobalTXT_LocalizationStrings[79], 0); // Close
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
377 current_screen_type = SCREEN_BOOKS;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
378 full_num_items_in_book = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
379 books_primary_item_per_page = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
380 books_page_number = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
381 num_achieved_awards = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
382 switch (this->par1C)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
383 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
384 case WINDOW_LloydsBeacon:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
385 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
386 byte_506360 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
387 pTexture_CurrentBook = pIcons_LOD->LoadTexturePtr("lb_bordr", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
388 pTexture_LloydBeacons[0] = pIcons_LOD->LoadTexturePtr("sbmap", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
389 pTexture_LloydBeacons[1] = pIcons_LOD->LoadTexturePtr("sbmap", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
390 pTex_book_button1_on = pIcons_LOD->LoadTexturePtr("tab-an-6b", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
391 pTex_book_button1_off = pIcons_LOD->LoadTexturePtr("tab-an-6a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
392
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
393 pBtn_Book_1 = this->CreateButton(415, 13, 39, 36, 1, 0, UIMSG_LloydsBeacon_FlippingBtn, 0, 0, pGlobalTXT_LocalizationStrings[375], 0); // Set Beacon
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
394 pBtn_Book_2 = this->CreateButton(415, 48, 39, 36, 1, 0, UIMSG_LloydsBeacon_FlippingBtn, 1, 0, pGlobalTXT_LocalizationStrings[523], 0); // Recall Beacon
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
395
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
396 max_beacons = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
397 v18 = pParty->pPlayers[_506348_current_lloyd_playerid].pActiveSkills[PLAYER_SKILL_WATER];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
398 if ( v18 & 0x100 || (v18 & 0x80) )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
399 max_beacons = 5;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
400 else if ( v18 & 0x40 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
401 max_beacons = 3;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
402
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
403 for ( int i = 0; i < max_beacons; ++i )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
404 CreateButton(pLloydsBeaconsPreviewXs[i], pLloydsBeaconsPreviewYs[i],
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
405 92, 68, 1, 180, UIMSG_InstallBeacon, i, 0, "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
406
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
407 for ( int i = 0; i < 5; ++i )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
408 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
409 if (pParty->pPlayers[_506348_current_lloyd_playerid].pInstalledBeacons[i].uBeaconTime >= (signed __int64)pParty->uTimePlayed)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
410 LoadThumbnailLloydTexture(i, _506348_current_lloyd_playerid + 1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
411 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
412 memset(&pParty->pPlayers[_506348_current_lloyd_playerid].pInstalledBeacons[i], 0, sizeof(LloydBeacon));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
413 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
414 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
415 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
416
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
417 case WINDOW_TownPortal:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
418 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
419 pTexture_CurrentBook = pIcons_LOD->LoadTexturePtr("townport", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
420 pTexture_TownPortalIcons[0] = pIcons_LOD->LoadTexturePtr("tpharmndy", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
421 pTexture_TownPortalIcons[1] = pIcons_LOD->LoadTexturePtr("tpelf", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
422 pTexture_TownPortalIcons[2] = pIcons_LOD->LoadTexturePtr("tpwarlock", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
423 pTexture_TownPortalIcons[3] = pIcons_LOD->LoadTexturePtr("tpisland", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
424 pTexture_TownPortalIcons[4] = pIcons_LOD->LoadTexturePtr("tpheaven", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
425 pTexture_TownPortalIcons[5] = pIcons_LOD->LoadTexturePtr("tphell", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
426
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
427 static int pTownPortalBook_ws[6] = { 80, 66, 68, 72, 67, 74};
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
428 static int pTownPortalBook_hs[6] = { 55, 56, 65, 67, 67, 59};
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
429 for ( uint i = 0; i < 6; ++i )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
430 this->CreateButton(pTownPortalBook_xs[i], pTownPortalBook_ys[i], pTownPortalBook_ws[i], pTownPortalBook_hs[i], 1, 182, UIMSG_ClickTownInTP, i, 0, "", nullptr);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
431
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
432 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
433 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
434
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
435 case WINDOW_QuestBook:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
436 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
437 pTexture_CurrentBook = pIcons_LOD->LoadTexturePtr("sbquiknot", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
438 pSpellBookPagesTextr_10 = pIcons_LOD->LoadTexturePtr( "divbar", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
439 pTex_book_button1_on = pIcons_LOD->LoadTexturePtr("tab-an-6b", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
440 pTex_book_button2_on = pIcons_LOD->LoadTexturePtr("tab-an-7b", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
441 pTex_book_button1_off = pIcons_LOD->LoadTexturePtr("tab-an-6a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
442 pTex_book_button2_off = pIcons_LOD->LoadTexturePtr("tab-an-7a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
443 pBtn_Book_1 = this->CreateButton(pViewport->uViewportTL_X + 398, pViewport->uViewportTL_Y + 1,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
444 pTex_book_button1_on->uTextureWidth, pTex_book_button1_on->uTextureHeight,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
445 1, 0, UIMSG_ClickBooksBtn, 0xBu, 0, pGlobalTXT_LocalizationStrings[192],// "Scroll Up"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
446 pTex_book_button1_on, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
447 pBtn_Book_2 = this->CreateButton(pViewport->uViewportTL_X + 398, pViewport->uViewportTL_Y + 38,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
448 pTex_book_button2_on->uTextureHeight, pTex_book_button2_on->uTextureHeight,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
449 1, 0, UIMSG_ClickBooksBtn, 0xAu, 0, pGlobalTXT_LocalizationStrings[193],// "Scroll Down"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
450 pTex_book_button2_on, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
451 num_achieved_awards = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
452 memset(achieved_awards.data(), 0, 4000);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
453 for ( uint i = books_primary_item_per_page; i < 512; ++i )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
454 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
455 if ( _449B57_test_bit(pParty->_quest_bits, i) && pQuestTable[i] )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
456 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
457 achieved_awards[num_achieved_awards] = (AwardType)i;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
458 ++num_achieved_awards;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
459 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
460 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
461 full_num_items_in_book = num_achieved_awards;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
462 num_achieved_awards = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
463 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
464 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
465
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
466 case WINDOW_AutonotesBook:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
467 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
468 pTexture_AutonotesBook = pIcons_LOD->LoadTexturePtr("sbautnot", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
469 pSpellBookPagesTextr_10 = pIcons_LOD->LoadTexturePtr("divbar", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
470 pTex_book_button1_on = pIcons_LOD->LoadTexturePtr("tab-an-6b", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
471 pTex_book_button2_on = pIcons_LOD->LoadTexturePtr("tab-an-7b", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
472 pTex_book_button1_off = pIcons_LOD->LoadTexturePtr("tab-an-6a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
473 pTex_book_button2_off = pIcons_LOD->LoadTexturePtr("tab-an-7a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
474 pTex_book_button3_on = pIcons_LOD->LoadTexturePtr("tab-an-1b", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
475 pTex_book_button3_off = pIcons_LOD->LoadTexturePtr("tab-an-1a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
476 pTex_book_button4_on = pIcons_LOD->LoadTexturePtr("tab-an-2b", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
477 pTex_book_button4_off = pIcons_LOD->LoadTexturePtr("tab-an-2a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
478 pTex_book_button5_on = pIcons_LOD->LoadTexturePtr("tab-an-3b", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
479 pTex_book_button5_off = pIcons_LOD->LoadTexturePtr("tab-an-3a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
480 pTex_book_button6_on = pIcons_LOD->LoadTexturePtr("tab-an-5b", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
481 pTex_book_button6_off = pIcons_LOD->LoadTexturePtr("tab-an-5a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
482 pTex_book_button7_on = pIcons_LOD->LoadTexturePtr("tab-an-4b", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
483 pTex_book_button7_off = pIcons_LOD->LoadTexturePtr("tab-an-4a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
484 pTex_book_button8_on = pIcons_LOD->LoadTexturePtr("tab-an-8b", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
485 pTex_book_button8_off = pIcons_LOD->LoadTexturePtr("tab-an-8a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
486
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
487 pBtn_Book_1 = this->CreateButton(pViewport->uViewportTL_X + 398, pViewport->uViewportTL_Y + 1, 50, 34, 1, 0,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
488 UIMSG_ClickBooksBtn, 11, 0, pGlobalTXT_LocalizationStrings[193], pTex_book_button1_on, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
489 pBtn_Book_2 = this->CreateButton(pViewport->uViewportTL_X + 398, pViewport->uViewportTL_Y + 38, 50, 34, 1, 0,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
490 UIMSG_ClickBooksBtn, 10, 0, pGlobalTXT_LocalizationStrings[192], pTex_book_button2_on, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
491 pBtn_Book_3 = this->CreateButton(pViewport->uViewportTL_X + 398, pViewport->uViewportTL_Y + 113, 50, 34, 1, 0,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
492 UIMSG_ClickBooksBtn, 2, 0, pGlobalTXT_LocalizationStrings[85], pTex_book_button3_on, 0); // "Potion Notes"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
493 pBtn_Book_4 = this->CreateButton(pViewport->uViewportTL_X + 399, pViewport->uViewportTL_Y + 150, 50, 34, 1, 0,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
494 UIMSG_ClickBooksBtn, 3, 0, pGlobalTXT_LocalizationStrings[137], pTex_book_button4_on, 0); // "Fountain Notes"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
495 pBtn_Book_5 = this->CreateButton(pViewport->uViewportTL_X + 397, pViewport->uViewportTL_Y + 188, 50, 34, 1, 0,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
496 UIMSG_ClickBooksBtn, 4, 0, pGlobalTXT_LocalizationStrings[8], pTex_book_button5_on, 0); // "Obelisk Notes"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
497 pBtn_Book_6 = this->CreateButton(pViewport->uViewportTL_X + 397, pViewport->uViewportTL_Y + 226, 50, 34, 1, 0,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
498 UIMSG_ClickBooksBtn, 5, 0, pGlobalTXT_LocalizationStrings[141], pTex_book_button6_on, 0); // "Seer Notes"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
499 pBtn_Autonotes_Misc = this->CreateButton(pViewport->uViewportTL_X + 397, pViewport->uViewportTL_Y + 264, 50, 34, 1, 0,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
500 UIMSG_ClickBooksBtn, 6, 0, pGlobalTXT_LocalizationStrings[123], pTex_book_button7_on, 0); // "Miscellaneous Notes"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
501 pBtn_Autonotes_Instructors = this->CreateButton(pViewport->uViewportTL_X + 397, pViewport->uViewportTL_Y + 302, 50, 34, 1, 0,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
502 UIMSG_ClickBooksBtn, 7, 0, pGlobalTXT_LocalizationStrings[662], pTex_book_button8_on, 0); // "Instructors"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
503
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
504 num_achieved_awards = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
505 for ( uint i = books_primary_item_per_page; i < 196; ++i )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
506 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
507 if ( _506568_autonote_type == pAutonoteTxt[i].eType)//dword_72371C[2 * v10] )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
508 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
509 if ( i )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
510 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
511 if ( _449B57_test_bit(pParty->_autonote_bits, i) && pAutonoteTxt[i].pText )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
512 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
513 achieved_awards[num_achieved_awards] = (AwardType)i;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
514 ++num_achieved_awards;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
515 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
516 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
517 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
518 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
519 full_num_items_in_book = num_achieved_awards;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
520 num_achieved_awards = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
521 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
522 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
523
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
524 case WINDOW_MapsBook:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
525 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
526 dword_506364 = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
527 pSpellBookPagesTextr_12 = pIcons_LOD->LoadTexturePtr("sbmap", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
528 pTex_book_button1_on = pIcons_LOD->LoadTexturePtr("zoom-on", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
529 pTex_book_button2_on = pIcons_LOD->LoadTexturePtr("zoot-on", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
530 pTex_book_button1_off = pIcons_LOD->LoadTexturePtr("zoom-off", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
531 pTex_book_button2_off = pIcons_LOD->LoadTexturePtr("zoot-off", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
532 pTex_book_button3_on = pIcons_LOD->LoadTexturePtr("tabNon", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
533 pTex_book_button3_off = pIcons_LOD->LoadTexturePtr("tabNoff", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
534 pTex_book_button4_on = pIcons_LOD->LoadTexturePtr("tabSon", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
535 pTex_book_button4_off = pIcons_LOD->LoadTexturePtr("tabSoff", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
536 pTex_book_button5_on = pIcons_LOD->LoadTexturePtr("tabEon", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
537 pTex_book_button5_off = pIcons_LOD->LoadTexturePtr("tabEoff", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
538 pTex_book_button6_on = pIcons_LOD->LoadTexturePtr("tabWon", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
539 pTex_book_button6_off = pIcons_LOD->LoadTexturePtr("tabWoff", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
540
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
541 pBtn_Book_1 = this->CreateButton(pViewport->uViewportTL_X + 398, pViewport->uViewportTL_Y + 1, 50, 34, 1, 0,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
542 UIMSG_ClickBooksBtn, 0, 0, pGlobalTXT_LocalizationStrings[251], pTex_book_button1_on, 0);// "Zoom In"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
543 pBtn_Book_2 = this->CreateButton(pViewport->uViewportTL_X + 398, pViewport->uViewportTL_Y + 38, 50, 34, 1, 0,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
544 UIMSG_ClickBooksBtn, 1, 0, pGlobalTXT_LocalizationStrings[252], pTex_book_button2_on, 0);// "Zoom Out"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
545 pBtn_Book_3 = this->CreateButton(pViewport->uViewportTL_X + 397, pViewport->uViewportTL_Y + 113, 50, 34, 1, 0,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
546 UIMSG_ClickBooksBtn, 2, 0, pGlobalTXT_LocalizationStrings[192], (Texture *)"", 0);// Scroll Up
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
547 pBtn_Book_4 = this->CreateButton(pViewport->uViewportTL_X + 397, pViewport->uViewportTL_Y + 150, 50, 34, 1, 0,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
548 UIMSG_ClickBooksBtn, 3, 0, pGlobalTXT_LocalizationStrings[193], (Texture *)"", 0);// Scroll Down
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
549 pBtn_Book_5 = this->CreateButton(pViewport->uViewportTL_X + 397, pViewport->uViewportTL_Y + 188, 50, 34, 1, 0,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
550 UIMSG_ClickBooksBtn, 4, 0, pGlobalTXT_LocalizationStrings[573], (Texture *)"", 0);// "Scroll Right"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
551 pBtn_Book_6 = this->CreateButton(pViewport->uViewportTL_X + 397, pViewport->uViewportTL_Y + 226, 50, 34, 1, 0,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
552 UIMSG_ClickBooksBtn, 5, 0, pGlobalTXT_LocalizationStrings[572], (Texture *)"", 0);// "Scroll Left"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
553 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
554 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
555
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
556 case WINDOW_CalendarBook:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
557 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
558 pSpellBookPagesTextr_13 = pIcons_LOD->LoadTexturePtr("sbdate-time", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
559 pTex_moon_new = pIcons_LOD->LoadTexturePtr("moon_new", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
560 pTex_moon_4 = pIcons_LOD->LoadTexturePtr("moon_4", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
561 pTex_moon_2 = pIcons_LOD->LoadTexturePtr("moon_2", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
562 pTex_moon_2_2 = pIcons_LOD->LoadTexturePtr("moon_2", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
563 pTex_moon_ful = pIcons_LOD->LoadTexturePtr("moon_ful", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
564 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
565 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
566
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
567 case WINDOW_JournalBook:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
568 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
569 pSpellBookPagesTextr_11 = pIcons_LOD->LoadTexturePtr("sbplayrnot", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
570 pTex_book_button1_on = pIcons_LOD->LoadTexturePtr("tab-an-6b", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
571 pTex_book_button2_on = pIcons_LOD->LoadTexturePtr("tab-an-7b", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
572 pTex_book_button1_off = pIcons_LOD->LoadTexturePtr("tab-an-6a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
573 pTex_book_button2_off = pIcons_LOD->LoadTexturePtr("tab-an-7a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
574
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
575 pBtn_Book_1 = this->CreateButton(pViewport->uViewportTL_X + 398, pViewport->uViewportTL_Y + 1,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
576 pTex_book_button1_on->uTextureWidth, pTex_book_button1_on->uTextureHeight, 1, 0,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
577 UIMSG_ClickBooksBtn, 11, 0, pGlobalTXT_LocalizationStrings[192], pTex_book_button1_on, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
578 pBtn_Book_2 = this->CreateButton(pViewport->uViewportTL_X + 398, pViewport->uViewportTL_Y + 38, pTex_book_button2_on->uTextureHeight,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
579 pTex_book_button2_on->uTextureHeight, 1, 0, UIMSG_ClickBooksBtn, 10, 0,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
580 pGlobalTXT_LocalizationStrings[193], pTex_book_button2_on, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
581
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
582 num_achieved_awards = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
583 journal_window.uFrameX = 48;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
584 journal_window.uFrameY = 70;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
585 journal_window.uFrameWidth = 360;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
586 journal_window.uFrameHeight = 264;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
587 journal_window.uFrameZ = 407;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
588 journal_window.uFrameHeight = (LOBYTE(pAutonoteFont->uFontHeight) - 3) * 264 / LOBYTE(pAutonoteFont->uFontHeight) - 3;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
589 journal_window.uFrameW = journal_window.uFrameHeight + 69;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
590 memset(&achieved_awards, 0, 4000);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
591 memset(Journal_limitation_factor.data(), 0, 100);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
592 if ( books_primary_item_per_page < 29 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
593 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
594 for ( int i = books_primary_item_per_page; i < books_primary_item_per_page + 29; i++ )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
595 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
596 if ( pParty->PartyTimes.HistoryEventTimes[i] > 0 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
597 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
598 if ( pStorylineText->StoreLine[i + 1].pText )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
599 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
600 pString = BuildDialogueString(pStorylineText->StoreLine[i + 1].pText, uActiveCharacter - 1, 0, 0, 0, &pParty->PartyTimes.HistoryEventTimes[i]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
601 pTextHeight = pAutonoteFont->CalcTextHeight(pString, &journal_window, 1, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
602 page_count = ((pTextHeight - (pAutonoteFont->uFontHeight - 3)) / (signed int)journal_window.uFrameHeight) + 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
603 memset32((char *)&achieved_awards[num_achieved_awards] , i + 1, page_count);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
604 for ( uint j = 0; j <= page_count - 1; ++j )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
605 Journal_limitation_factor[num_achieved_awards++] = j;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
606 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
607 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
608 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
609 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
610 full_num_items_in_book = num_achieved_awards;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
611 num_achieved_awards = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
612 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
613 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
614 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
615 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
616
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
617 //----- (00415551) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
618 void GUIWindow::DrawMessageBox(int arg0)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
619 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
620 unsigned int v2; // edi@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
621 signed int v4; // esi@2
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
622 unsigned int v5; // eax@2
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
623 unsigned int v16; // esi@19
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
624 GUIWindow current_window; // [sp+Ch] [bp-60h]@18
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
625 POINT cursor; // [sp+60h] [bp-Ch]@8
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
626 unsigned int v22; // [sp+74h] [bp+8h]@2
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
627
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
628 v2 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
629 if ( arg0 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
630 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
631 v4 = pViewport->uViewportTL_X;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
632 v5 = pViewport->uViewportBR_X;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
633 v2 = pViewport->uViewportTL_Y;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
634 v22 = pViewport->uViewportBR_Y;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
635 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
636 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
637 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
638 v4 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
639 v5 = window->GetWidth();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
640 v22 = window->GetHeight();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
641 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
642 pMouse->GetCursorPos(&cursor);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
643 if ( (signed int)this->uFrameX >= v4 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
644 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
645 if ( (signed int)(this->uFrameWidth + this->uFrameX) > (signed int)v5 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
646 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
647 this->uFrameX = v5 - this->uFrameWidth;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
648 this->uFrameY = cursor.y + 30;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
649 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
650 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
651 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
652 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
653 this->uFrameX = v4;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
654 this->uFrameY = cursor.y + 30;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
655 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
656
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
657 if ( (signed int)this->uFrameY >= (signed int)v2 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
658 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
659 if ( (signed int)(this->uFrameY + this->uFrameHeight) > (signed int)v22 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
660 this->uFrameY = cursor.y - this->uFrameHeight - 30;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
661 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
662 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
663 this->uFrameY = cursor.y + 30;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
664 if ( (signed int)this->uFrameY < (signed int)v2 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
665 this->uFrameY = v2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
666 if ( (signed int)this->uFrameX < v4 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
667 this->uFrameX = v4;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
668 this->uFrameZ = this->uFrameWidth + this->uFrameX - 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
669 this->uFrameW = this->uFrameHeight + this->uFrameY - 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
670 memcpy(&current_window, this, sizeof(current_window));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
671 current_window.uFrameX += 12;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
672 current_window.uFrameWidth -= 24;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
673 current_window.uFrameY += 12;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
674 current_window.uFrameHeight -= 12;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
675 current_window.uFrameZ = current_window.uFrameWidth + current_window.uFrameX - 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
676 current_window.uFrameW = current_window.uFrameHeight + current_window.uFrameY - 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
677 if ( this->Hint )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
678 v16 = pFontLucida->CalcTextHeight(this->Hint, &current_window, 0, 0) + 24;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
679 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
680 v16 = this->uFrameHeight;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
681 if ( (signed int)v16 < 64 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
682 v16 = 64;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
683 if ( (signed int)(v16 + this->uFrameY) > 479 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
684 v16 = 479 - this->uFrameY;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
685 DrawPopupWindow(this->uFrameX, this->uFrameY, this->uFrameWidth, v16);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
686 if ( this->Hint )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
687 current_window.DrawTitleText(pFontLucida, 0, (signed int)(v16 - pFontLucida->CalcTextHeight(this->Hint, &current_window, 0, 0)) / 2 - 14, 0, this->Hint, 3);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
688 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
689
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
690 //----- (00411B59) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
691 void __fastcall LoadThumbnailLloydTexture(unsigned int uSlot, unsigned int uPlayer)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
692 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
693 //unsigned int v2; // esi@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
694 //unsigned int v3; // edi@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
695 FILE *v4; // ebx@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
696 FILE *v5; // eax@2
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
697 char pContainerName[64]; // [sp+Ch] [bp-44h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
698 //unsigned int v7; // [sp+4Ch] [bp-4h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
699
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
700 //v2 = uSlot;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
701 //v7 = uPlayer;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
702 //v3 = uSlot + 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
703 sprintf(pContainerName, "data\\lloyd%d%d.pcx", uPlayer, uSlot + 1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
704 v4 = fopen(pContainerName, "rb");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
705 if ( v4 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
706 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
707 pSavegameThumbnails[uSlot].LoadFromFILE(v4, 0, 1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
708 fclose(v4);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
709 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
710 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
711 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
712 sprintf(pContainerName, "lloyd%d%d.pcx", uPlayer, uSlot + 1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
713 v5 = pNew_LOD->FindContainer(pContainerName, 1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
714 if ( v5 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
715 pSavegameThumbnails[uSlot].LoadFromFILE(v5, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
716 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
717 *((int *)&pSavegameThumbnails.data()->pPixels + 10 * uSlot) = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
718 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
719 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
720
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
721
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
722 //----- (00411621) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
723 void GUIWindow::OpenSpellBook()
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
724 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
725 Player *pPlayer; // edi@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
726 //GUIWindow *pWindow; // esi@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
727 //unsigned int v3; // ebp@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
728 int v4; // eax@3
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
729 ///GUIButton *result; // eax@25
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
730 int a2; // [sp+10h] [bp-8h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
731 //int v7; // [sp+14h] [bp-4h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
732
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
733 pPlayer = pPlayers[uActiveCharacter];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
734 //pWindow = this;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
735 LoadSpellbook(pPlayer->lastOpenedSpellbookPage);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
736 //v3 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
737 a2 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
738
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
739 PlayerSpellbookChapter* chapter = &pPlayer->spellbook.pChapters[pPlayer->lastOpenedSpellbookPage];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
740 for (uint i = 0; i < 11; ++i)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
741 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
742 if (!chapter->bIsSpellAvailable[i])
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
743 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
744 v4= pPlayer->lastOpenedSpellbookPage;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
745 //v4 = (12 * pPlayer->lastOpenedSpellbookPage + pSpellbookSpellIndices[pPlayer->lastOpenedSpellbookPage][i + 1]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
746 CreateButton(pViewport->uViewportTL_X + pIconPos[v4][pSpellbookSpellIndices[v4][i+1]].Xpos,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
747 pViewport->uViewportTL_Y + pIconPos[v4][pSpellbookSpellIndices[v4][i+1]].Ypos, //dword_4E20D0
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
748 SBPageSSpellsTextureList[i + 1]->uTextureWidth,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
749 SBPageSSpellsTextureList[i + 1]->uTextureHeight,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
750 1, 79, UIMSG_SelectSpell, i, 0, "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
751 ++a2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
752 //++v3;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
753 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
754 //while ( (signed int)v3 < 11 );
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
755
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
756 CreateButton(0, 0, 0, 0, 1, 0, UIMSG_SpellBook_PressTab, 0, '\t', "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
757 if ( a2 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
758 _41D08F_set_keyboard_control_group(a2, 0, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
759
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
760 if (pPlayer->pActiveSkills[PLAYER_SKILL_FIRE]) CreateButton(399, 10, 50, 36, 1, 0, UIMSG_OpenSpellbookPage, 0, 0, aSpellSchoolNames[0], 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
761 if (pPlayer->pActiveSkills[PLAYER_SKILL_AIR]) CreateButton(399, 46, 50, 36, 1, 0, UIMSG_OpenSpellbookPage, 1, 0, aSpellSchoolNames[1], 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
762 if (pPlayer->pActiveSkills[PLAYER_SKILL_WATER]) CreateButton(399, 83, 50, 36, 1, 0, UIMSG_OpenSpellbookPage, 2, 0, aSpellSchoolNames[2], 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
763 if (pPlayer->pActiveSkills[PLAYER_SKILL_EARTH]) CreateButton(399, 121, 50, 36, 1, 0, UIMSG_OpenSpellbookPage, 3, 0, aSpellSchoolNames[3], 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
764 if (pPlayer->pActiveSkills[PLAYER_SKILL_SPIRIT]) CreateButton(399, 158, 50, 36, 1, 0, UIMSG_OpenSpellbookPage, 4, 0, aSpellSchoolNames[4], 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
765 if (pPlayer->pActiveSkills[PLAYER_SKILL_MIND]) CreateButton(400, 196, 50, 36, 1, 0, UIMSG_OpenSpellbookPage, 5, 0, aSpellSchoolNames[5], 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
766 if (pPlayer->pActiveSkills[PLAYER_SKILL_BODY]) CreateButton(400, 234, 50, 36, 1, 0, UIMSG_OpenSpellbookPage, 6, 0, aSpellSchoolNames[6], 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
767 if (pPlayer->pActiveSkills[PLAYER_SKILL_LIGHT]) CreateButton(400, 271, 50, 36, 1, 0, UIMSG_OpenSpellbookPage, 7, 0, aSpellSchoolNames[7], 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
768 if (pPlayer->pActiveSkills[PLAYER_SKILL_DARK]) CreateButton(400, 307, 50, 36, 1, 0, UIMSG_OpenSpellbookPage, 8, 0, aSpellSchoolNames[8], 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
769
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
770 CreateButton(476, 450, pSBClickQuickSpellBtnTextr->uTextureWidth, pSBClickQuickSpellBtnTextr->uTextureHeight, 1, 78, UIMSG_ClickInstallRemoveQuickSpellBtn, 0, 0, "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
771 pBtn_InstallRemoveSpell = CreateButton(476, 450, 48, 32, 1, 78, UIMSG_ClickInstallRemoveQuickSpellBtn, 0, 0, "", pSBClickQuickSpellBtnTextr, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
772 CreateButton(561, 450, pSpellBookClickCloseBtnTextr->uTextureWidth, pSpellBookClickCloseBtnTextr->uTextureHeight, 1, 0, UIMSG_Escape, 0, 0, pGlobalTXT_LocalizationStrings[79], 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
773 pBtn_CloseBook = CreateButton(561, 450, 48, 32, 1, 0, UIMSG_Escape, 0, 0, pGlobalTXT_LocalizationStrings[79], pSpellBookClickCloseBtnTextr, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
774 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
775 // 50640C: using guessed type int dword_50640C[];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
776
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
777 //----- (004B3157) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
778 void GUIWindow::HouseDialogManager()
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
779 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
780 unsigned __int16 pWhiteColor; // di@2
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
781 const char *pHouseName; // edx@4
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
782 signed int v3; // edx@5
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
783 char *v4; // edi@9
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
784 int pTextHeight; // eax@45
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
785 int v6; // edi@45
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
786 char *v7; // eax@45
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
787 int v8; // edi@46
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
788 int v9; // eax@50
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
789 unsigned int v10; // [sp-10h] [bp-C8h]@53
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
790 char *pTitleText; // [sp-8h] [bp-C0h]@50
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
791 GUIWindow pDialogWindow; // [sp+Ch] [bp-ACh]@4
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
792 GUIWindow pWindow; // [sp+60h] [bp-58h]@2
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
793 int pColor2; // [sp+B4h] [bp-4h]@2
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
794
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
795 if ( !window_SpeakInHouse )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
796 return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
797 memcpy(&pWindow, this, sizeof(pWindow));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
798 pWindow.uFrameWidth -= 18;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
799 pWindow.uFrameZ -= 18;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
800 pWhiteColor = Color16(0xFFu, 0xFFu, 0xFFu);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
801 pColor2 = Color16(0x15u, 0x99u, 0xE9u);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
802 pRenderer->DrawTextureIndexed(0x1DDu, 0, pTexture_Dialogue_Background);
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
803 pRenderer->DrawTextureIndexedAlpha(0x1D4u, 0, &pIcons_LOD->pTextures[uTextureID_right_panel_loop]);
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
804 if ( pDialogueNPCCount != uNumDialogueNPCPortraits || !uHouse_ExitPic )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
805 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
806 pDialogWindow.uFrameWidth = 130;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
807 pDialogWindow.uFrameHeight = 2 * LOBYTE(pFontCreate->uFontHeight);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
808 pHouseName = p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].pName;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
809 if ( pHouseName )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
810 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
811 v3 = 2 * LOBYTE(pFontCreate->uFontHeight) - 6 - pFontCreate->CalcTextHeight(pHouseName, &pDialogWindow, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
812 if ( v3 < 0 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
813 v3 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
814 pWindow.DrawTitleText(pFontCreate, 0x1EAu, v3 / 2 + 4, pWhiteColor,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
815 //(const char *)p2DEvents_minus1_::04[13 * (unsigned int)ptr_507BC0->ptr_1C],
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
816 p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].pName, 3);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
817 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
818 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
819 pWindow.uFrameWidth += 8;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
820 pWindow.uFrameZ += 8;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
821 if ( !pDialogueNPCCount )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
822 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
823 if ( in_current_building_type == BuildingType_Jail )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
824 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
825 JailDialog();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
826 if ( pDialogueNPCCount == uNumDialogueNPCPortraits && uHouse_ExitPic )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
827 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
828 pRenderer->DrawTextureIndexed(556, 451, &pIcons_LOD->pTextures[uTextureID_x_x_u]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
829 pRenderer->DrawTextureIndexed(476, 451, &pIcons_LOD->pTextures[uTextureID_x_ok_u]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
830 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
831 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
832 pRenderer->DrawTextureIndexed(471, 445, &pIcons_LOD->pTextures[uExitCancelTextureId]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
833 return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
834 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
835 if ( current_npc_text )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
836 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
837 pDialogWindow.uFrameWidth = 458;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
838 pDialogWindow.uFrameZ = 457;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
839 pTextHeight = pFontArrus->CalcTextHeight(current_npc_text, &pDialogWindow, 13, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
840 v6 = pTextHeight + 7;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
841 pRenderer->GetLeather(8, 352 - (pTextHeight + 7), &pIcons_LOD->pTextures[uTextureID_Leather],
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
842 pIcons_LOD->pTextures[uTextureID_Leather].uTextureHeight - (pTextHeight + 7));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
843 pRenderer->DrawTextureIndexed(8, 347 - v6, pTexture_591428);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
844 v7 = FitTextInAWindow(current_npc_text, pFontArrus, &pDialogWindow, 0xDu, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
845 window_SpeakInHouse->DrawText(pFontArrus, 13, 354 - v6, 0, v7, 0, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
846 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
847 if ( uNumDialogueNPCPortraits <= 0 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
848 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
849 if ( pDialogueNPCCount == uNumDialogueNPCPortraits && uHouse_ExitPic )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
850 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
851 pRenderer->DrawTextureIndexed(556, 451, &pIcons_LOD->pTextures[uTextureID_x_x_u]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
852 pRenderer->DrawTextureIndexed(476, 451, &pIcons_LOD->pTextures[uTextureID_x_ok_u]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
853 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
854 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
855 pRenderer->DrawTextureIndexed(471, 445, &pIcons_LOD->pTextures[uExitCancelTextureId]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
856 return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
857 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
858 for ( v8 = 0; v8 < uNumDialogueNPCPortraits; ++v8 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
859 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
860 pRenderer->DrawTextureIndexed(pNPCPortraits_x[uNumDialogueNPCPortraits - 1][v8] - 4,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
861 pNPCPortraits_y[uNumDialogueNPCPortraits - 1][v8] - 4, &pIcons_LOD->pTextures[uTextureID_50795C]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
862 pRenderer->DrawTextureIndexed(pNPCPortraits_x[uNumDialogueNPCPortraits - 1][v8],
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
863 pNPCPortraits_y[uNumDialogueNPCPortraits - 1][v8], pDialogueNPCPortraits[v8]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
864 if ( uNumDialogueNPCPortraits < 4 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
865 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
866 if ( v8 + 1 == uNumDialogueNPCPortraits && uHouse_ExitPic )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
867 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
868 pTitleText = pMapStats->pInfos[uHouse_ExitPic].pName;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
869 v9 = 94 * v8 + 113;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
870 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
871 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
872 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
873 if ( !v8 && dword_591080 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
874 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
875 pTitleText = (char *)p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].pProprieterTitle;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
876 pWindow.DrawTitleText(pFontCreate, 0x1E3u, 113, pColor2, pTitleText, 3);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
877 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
878 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
879 pTitleText = HouseNPCData[v8 +1 - (dword_591080 != 0)]->pName;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
880 v9 = pNPCPortraits_y[uNumDialogueNPCPortraits - 1][v8] + pDialogueNPCPortraits[v8]->uTextureHeight + 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
881 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
882 v10 = v9;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
883 pWindow.DrawTitleText(pFontCreate, 483, v10, pColor2, pTitleText, 3);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
884 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
885 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
886 if ( pDialogueNPCCount == uNumDialogueNPCPortraits && uHouse_ExitPic )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
887 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
888 pRenderer->DrawTextureIndexed(556, 451, &pIcons_LOD->pTextures[uTextureID_x_x_u]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
889 pRenderer->DrawTextureIndexed(476, 451, &pIcons_LOD->pTextures[uTextureID_x_ok_u]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
890 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
891 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
892 pRenderer->DrawTextureIndexed(471, 445, &pIcons_LOD->pTextures[uExitCancelTextureId]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
893 return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
894 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
895 v4 = (char *)pDialogueNPCCount - 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
896 pRenderer->DrawTextureIndexed(pNPCPortraits_x[0][0] - 4, pNPCPortraits_y[0][0] - 4, &pIcons_LOD->pTextures[uTextureID_50795C]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
897 pRenderer->DrawTextureIndexed(pNPCPortraits_x[0][0], pNPCPortraits_y[0][0], pDialogueNPCPortraits[(signed int)v4]);
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
898 if ( current_screen_type == SCREEN_E )
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
899 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
900 CharacterUI_InventoryTab_Draw(pPlayers[uActiveCharacter], true);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
901 if ( pDialogueNPCCount == uNumDialogueNPCPortraits && uHouse_ExitPic )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
902 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
903 pRenderer->DrawTextureIndexed(556, 451, &pIcons_LOD->pTextures[uTextureID_x_x_u]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
904 pRenderer->DrawTextureIndexed(476, 451, &pIcons_LOD->pTextures[uTextureID_x_ok_u]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
905 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
906 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
907 pRenderer->DrawTextureIndexed(471, 445, &pIcons_LOD->pTextures[uExitCancelTextureId]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
908 return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
909 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
910 if ( v4 || !dword_591080 )//на изумрудном острове заходит на корабле пока не выполнены квесты
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
911 SimpleHouseDialog();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
912 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
913 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
914 sprintfex( pTmpBuf.data(), pGlobalTXT_LocalizationStrings[429],
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
915 p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].pProprieterName,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
916 p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].pProprieterTitle);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
917 pWindow.DrawTitleText(pFontCreate, 0x1E3u, 0x71u, pColor2, pTmpBuf.data(), 3);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
918 switch ( in_current_building_type )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
919 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
920 case BuildingType_WeaponShop:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
921 WeaponShopDialog();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
922 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
923 case BuildingType_ArmorShop:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
924 ArmorShopDialog();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
925 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
926 case BuildingType_MagicShop:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
927 MagicShopDialog();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
928 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
929 case BuildingType_AlchemistShop:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
930 AlchemistDialog();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
931 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
932 case BuildingType_FireGuild:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
933 case BuildingType_AirGuild:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
934 case BuildingType_WaterGuild:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
935 case BuildingType_EarthGuild:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
936 case BuildingType_SpiritGuild:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
937 case BuildingType_MindGuild:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
938 case BuildingType_BodyGuild:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
939 case BuildingType_LightGuild:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
940 case BuildingType_DarkGuild:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
941 GuildDialog();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
942 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
943 case BuildingType_18:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
944 __debugbreak(); //What over the dialog?
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
945 sub_4B6478();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
946 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
947 case BuildingType_TownHall:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
948 TownHallDialog();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
949 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
950 case BuildingType_Tavern:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
951 TavernDialog();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
952 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
953 case BuildingType_Bank:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
954 BankDialog();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
955 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
956 case BuildingType_Temple:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
957 TempleDialog();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
958 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
959 case BuildingType_Stables:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
960 case BuildingType_Boats:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
961 TravelByTransport();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
962 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
963 case BuildingType_Training:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
964 TrainingDialog();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
965 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
966 case BuildingType_Jail:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
967 JailDialog();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
968 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
969 default:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
970 //__debugbreak();//New BuildingType (if enter Boat)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
971 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
972 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
973 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
974 if ( pDialogueNPCCount == uNumDialogueNPCPortraits && uHouse_ExitPic )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
975 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
976 pRenderer->DrawTextureIndexed(556, 451, &pIcons_LOD->pTextures[uTextureID_x_x_u]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
977 pRenderer->DrawTextureIndexed(476, 451, &pIcons_LOD->pTextures[uTextureID_x_ok_u]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
978 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
979 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
980 pRenderer->DrawTextureIndexed(471, 445, &pIcons_LOD->pTextures[uExitCancelTextureId]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
981 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
982
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
983 //----- (004B1854) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
984 void GUIWindow::DrawShops_next_generation_time_string( __int64 next_generation_time )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
985 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
986 unsigned int full_time; // esi@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
987 signed __int64 hours; // kr00_8@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
988 const char *text; // eax@2
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
989 signed __int64 minutes; // [sp+Ch] [bp-10h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
990 signed __int64 seconds; // [sp+14h] [bp-8h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
991 unsigned int days; // [sp+20h] [bp+4h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
992
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
993 full_time = (signed __int64)((double)next_generation_time * 0.234375);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
994 seconds = (signed __int64)full_time % 60;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
995 minutes = (signed __int64)(full_time / 60) % 60;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
996 hours = ((full_time / 60) / 60) % 24;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
997 days = (unsigned int)((full_time / 60) / 60) / 24;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
998 strcpy(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[532]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
999 if ( days )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1000 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1001 text = pGlobalTXT_LocalizationStrings[57];//Days
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1002 if ( days <= 1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1003 text = pGlobalTXT_LocalizationStrings[56];//Day
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1004 sprintfex(pTmpBuf2.data(), "%d %s ", days, text);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1005 strcat(pTmpBuf.data(), pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1006 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1007 if ( hours )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1008 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1009 if ( hours <= 1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1010 text = pGlobalTXT_LocalizationStrings[109];//Hour
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1011 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1012 text = pGlobalTXT_LocalizationStrings[110];//Hours
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1013 sprintfex(pTmpBuf2.data(), "%d %s ", (int)hours, text);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1014 strcat(pTmpBuf.data(), pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1015 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1016 if ( minutes && !days )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1017 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1018 if ( minutes <= 1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1019 text = pGlobalTXT_LocalizationStrings[437];//"Minute"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1020 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1021 text = pGlobalTXT_LocalizationStrings[436]; //"Minutes"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1022 sprintfex(pTmpBuf2.data(), "%d %s ", (int)minutes, text);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1023 strcat(pTmpBuf.data(), pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1024 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1025 if ( seconds && !hours )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1026 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1027 if ( seconds <= 1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1028 text = pGlobalTXT_LocalizationStrings[439]; //"Second"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1029 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1030 text = pGlobalTXT_LocalizationStrings[438]; //"Seconds"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1031 sprintfex(pTmpBuf2.data(), "%d %s ", (int)seconds, text);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1032 strcat(pTmpBuf.data(), pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1033 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1034 this->DrawTitleText(pFontArrus, 0, (212 - pFontArrus->CalcTextHeight(pTmpBuf.data(), this, 0, 0)) / 2 + 101, Color16(0xFFu, 0xFFu, 0x9Bu), pTmpBuf.data(), 3);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1035 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1036
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1037 //----- (0044D406) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1038 void GUIWindow::DrawTitleText( GUIFont *a2, signed int uHorizontalMargin, unsigned int uVerticalMargin, unsigned __int16 uDefaultColor,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1039 const char *pInString, unsigned int uLineSpacing )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1040 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1041 //GUIWindow *pWindow; // esi@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1042 unsigned int v8; // ebx@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1043 char *v9; // eax@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1044 unsigned int v11; // edi@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1045 signed int v12; // esi@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1046 int v13; // eax@2
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1047 GUIFont *pFont; // [sp+Ch] [bp-4h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1048 const char *Stra; // [sp+24h] [bp+14h]@5
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1049
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1050 //pWindow = this;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1051 pFont = a2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1052 v8 = this->uFrameWidth - uHorizontalMargin;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1053 ui_current_text_color = uDefaultColor;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1054 v9 = FitTextInAWindow(pInString, a2, this, uHorizontalMargin, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1055 Stra = strtok(v9, "\n");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1056 v11 = uHorizontalMargin + this->uFrameX;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1057 v12 = uVerticalMargin + this->uFrameY;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1058 while ( 1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1059 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1060 if ( !Stra )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1061 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1062 v13 = (signed int)(v8 - pFont->GetLineWidth(Stra)) >> 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1063 if ( v13 < 0 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1064 v13 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1065 pFont->DrawTextLine(uDefaultColor, v11 + v13, v12, Stra, window->GetWidth());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1066 v12 += pFont->uFontHeight - uLineSpacing;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1067 Stra = strtok(0, "\n");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1068 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1069 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1070 // 5C6DB4: using guessed type int ui_current_text_color;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1071
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1072 //----- (0044CE08) --------------------------------------------------------
2529
dbaf6fc71525 GUIWindow::DrawText: cleaned
a.parshin
parents: 2528
diff changeset
1073 void GUIWindow::DrawText(GUIFont *font, signed int uX, int uY, unsigned short uFontColor, const char *Str, bool present_time_transparency, int max_text_height, signed int uFontShadowColor )
2532
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1074 {
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1075 int v14; // edx@9
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1076 char Dest[6]; // [sp+Ch] [bp-2Ch]@32
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1077 size_t v30; // [sp+2Ch] [bp-Ch]@4
2528
e72e62ec9273 GUIWindow::DrawText: some cleanings
a.parshin
parents: 2525
diff changeset
1078
2529
dbaf6fc71525 GUIWindow::DrawText: cleaned
a.parshin
parents: 2528
diff changeset
1079 int left_margin = 0;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1080 if ( !Str )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1081 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1082 MessageBoxW(nullptr, L"Invalid string passed!", L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\Font.cpp:859", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1083 return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1084 }
2528
e72e62ec9273 GUIWindow::DrawText: some cleanings
a.parshin
parents: 2525
diff changeset
1085 if (!strcmp(Str, "null"))
e72e62ec9273 GUIWindow::DrawText: some cleanings
a.parshin
parents: 2525
diff changeset
1086 return;
e72e62ec9273 GUIWindow::DrawText: some cleanings
a.parshin
parents: 2525
diff changeset
1087
2532
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1088 v30 = strlen(Str);
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1089 if ( !uX )
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1090 uX = 12;
2528
e72e62ec9273 GUIWindow::DrawText: some cleanings
a.parshin
parents: 2525
diff changeset
1091
2532
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1092 const char *string_begin = Str;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1093 if ( max_text_height == 0 )
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1094 string_begin = FitTextInAWindow(Str, font, this, uX, 0);
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1095 auto string_end = string_begin;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1096 auto string_base = string_begin;
2528
e72e62ec9273 GUIWindow::DrawText: some cleanings
a.parshin
parents: 2525
diff changeset
1097
2532
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1098 int out_x = uX + uFrameX;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1099 int out_y = uY + uFrameY;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1100 v14 = 0;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1101
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1102 if (max_text_height != 0 && out_y + LOBYTE(font->uFontHeight) > max_text_height)
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1103 return;
2528
e72e62ec9273 GUIWindow::DrawText: some cleanings
a.parshin
parents: 2525
diff changeset
1104
2532
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1105 if ( (signed int)v30 > 0 )
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1106 {
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1107 do
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1108 {
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1109 unsigned char c = string_base[v14];
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1110 if ( c >= font->cFirstChar && c <= font->cLastChar
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1111 || c == '\f'
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1112 || c == '\r'
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1113 || c == '\t'
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1114 || c == '\n' )
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1115 {
2532
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1116 switch ( c )
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1117 {
2532
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1118 case '\t':
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1119 strncpy(Dest, &string_base[v14 + 1], 3);
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1120 Dest[3] = 0;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1121 v14 += 3;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1122 left_margin = atoi(Dest);
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1123 out_x = uX + uFrameX + left_margin;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1124 break;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1125 case '\n':
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1126 uY = uY + LOBYTE(font->uFontHeight) - 3;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1127 out_y = uY + uFrameY;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1128 out_x = uX + uFrameX + left_margin;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1129 if ( max_text_height != 0 )
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1130 {
2532
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1131 if (LOBYTE(font->uFontHeight) + out_y - 3 > max_text_height )
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1132 return;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1133 }
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1134 break;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1135 case '\f':
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1136 strncpy(Dest, &string_base[v14 + 1], 5);
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1137 Dest[5] = 0;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1138 uFontColor = atoi(Dest);
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1139 v14 += 5;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1140 break;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1141 case '\r':
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1142 strncpy(Dest, &string_base[v14 + 1], 3);
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1143 Dest[3] = 0;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1144 v14 += 3;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1145 left_margin = atoi(Dest);
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1146 out_x = uFrameZ - font->GetLineWidth(&string_base[v14]) - left_margin;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1147 out_y = uY + uFrameY;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1148 if ( max_text_height != 0 )
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1149 {
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1150 if (LOBYTE(font->uFontHeight) + out_y - 3 > max_text_height )
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1151 return;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1152 break;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1153 }
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1154 break;
2529
dbaf6fc71525 GUIWindow::DrawText: cleaned
a.parshin
parents: 2528
diff changeset
1155
2532
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1156 default:
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1157 if (c == '\"' && string_base[v14 + 1] == '\"')
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1158 ++v14;
2529
dbaf6fc71525 GUIWindow::DrawText: cleaned
a.parshin
parents: 2528
diff changeset
1159
2532
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1160 c = (unsigned __int8)string_base[v14];
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1161 if ( v14 > 0 )
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1162 out_x += font->pMetrics[c].uLeftSpacing;
2529
dbaf6fc71525 GUIWindow::DrawText: cleaned
a.parshin
parents: 2528
diff changeset
1163
2532
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1164 unsigned char *letter_pixels = &font->pFontData[font->font_pixels_offset[c]];
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1165 if ( uFontColor )
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1166 pRenderer->DrawText(out_x, out_y, letter_pixels, font->pMetrics[c].uWidth, LOBYTE(font->uFontHeight),
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1167 font->pFontPalettes[0], uFontColor, uFontShadowColor);
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1168 else
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1169 pRenderer->DrawTextAlpha(out_x, out_y, letter_pixels, font->pMetrics[c].uWidth, LOBYTE(font->uFontHeight),
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1170 font->pFontPalettes[0], present_time_transparency);
2529
dbaf6fc71525 GUIWindow::DrawText: cleaned
a.parshin
parents: 2528
diff changeset
1171
2532
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1172 out_x += font->pMetrics[c].uWidth;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1173 if ( (signed int)v14 < (signed int)v30 )
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1174 out_x += font->pMetrics[c].uRightSpacing;
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1175 break;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1176 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1177 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1178 }
2532
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1179 while ( (signed int)++v14 < (signed int)v30 );
9ec6b8be16fe Mobile light
Ritor1
parents: 2529
diff changeset
1180 }
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1181 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1182
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1183 //----- (0044CB4F) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1184 int GUIWindow::DrawTextInRect( GUIFont *pFont, unsigned int uX, unsigned int uY, unsigned int uColor, const char *text, int rect_width, int reverse_text )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1185 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1186 int pLineWidth; // ebx@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1187 int text_width; // esi@3
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1188 unsigned __int8 v12; // cl@7
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1189 signed int v13; // esi@19
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1190 signed int v14; // ebx@19
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1191 unsigned __int8 v15; // cl@21
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1192 // int v16; // eax@22
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1193 // int v17; // ecx@22
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1194 // int v18; // ecx@23
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1195 // int v19; // ecx@24
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1196 unsigned int v20; // ecx@26
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1197 unsigned char* v21; // eax@28
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1198 // int v22; // ebx@34
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1199 int v23; // eax@34
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1200 int v24; // ebx@36
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1201 char Str[6]; // [sp+Ch] [bp-20h]@34
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1202 // char v26; // [sp+Fh] [bp-1Dh]@34
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1203 // char v27; // [sp+11h] [bp-1Bh]@35
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1204 int v28; // [sp+20h] [bp-Ch]@17
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1205 GUIWindow *pWindow; // [sp+24h] [bp-8h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1206 size_t pNumLen; // [sp+28h] [bp-4h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1207 size_t Str1a; // [sp+40h] [bp+14h]@5
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1208 // size_t Str1b; // [sp+40h] [bp+14h]@19
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1209 // const char *Sourcea; // [sp+44h] [bp+18h]@20
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1210 // int v34; // [sp+48h] [bp+1Ch]@26
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1211 int i;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1212
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1213
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1214 pWindow = this;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1215 pNumLen = strlen(text);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1216 pLineWidth = pFont->GetLineWidth(text);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1217 if ( pLineWidth < rect_width )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1218 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1219 pWindow->DrawText(pFont, uX, uY, uColor, text, 0, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1220 return pLineWidth;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1221 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1222 strcpy(pTmpBuf2.data(), text);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1223 text_width = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1224 if ( reverse_text )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1225 _strrev(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1226 Str1a = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1227 for ( i = 0; i < pNumLen; ++i )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1228 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1229 if ( text_width >= rect_width )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1230 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1231 v12 = pTmpBuf2[i];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1232 if ( pFont->IsCharValid(v12) )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1233 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1234 switch (v12)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1235 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1236 case '\t':// Horizontal tab 09
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1237 case '\n': //Line Feed 0A 10
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1238 case '\r': //Form Feed, page eject 0C 12
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1239 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1240 case '\f': //Carriage Return 0D 13
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1241 i += 5;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1242 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1243 default:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1244 if ( i > 0 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1245 text_width += pFont->pMetrics[v12].uLeftSpacing;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1246 text_width += pFont->pMetrics[v12].uWidth;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1247 if ( i < pNumLen )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1248 text_width += pFont->pMetrics[v12].uRightSpacing;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1249 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1250 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1251 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1252 pTmpBuf2[i - 1] = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1253
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1254
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1255 pNumLen = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1256 v28 = pFont->GetLineWidth(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1257 if ( reverse_text )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1258 _strrev(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1259
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1260 v13 = uX + pWindow->uFrameX;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1261 v14 = uY + pWindow->uFrameY;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1262 for (i=0; i<pNumLen; ++i)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1263 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1264 v15 = pTmpBuf2[i];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1265 if ( pFont->IsCharValid(v15) )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1266 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1267 switch (v12)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1268 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1269 case '\t':// Horizontal tab 09
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1270 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1271 strncpy(Str, &pTmpBuf2[i+1], 3);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1272 Str[3] = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1273 // atoi(Str);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1274 i += 3;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1275 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1276 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1277 case '\n': //Line Feed 0A 10
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1278 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1279 v24 = pFont->uFontHeight;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1280 v13 = uX;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1281 uY = uY + pFont->uFontHeight - 3;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1282 v14 = uY+pFont->uFontHeight - 3;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1283 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1284 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1285 case '\r': //Form Feed, page eject 0C 12
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1286 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1287 strncpy(Str, &pTmpBuf2[i+1], 5);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1288 Str[5] = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1289 i += 5;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1290 uColor = atoi(Str);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1291 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1292 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1293 case '\f': //Carriage Return 0D 13
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1294 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1295 strncpy(Str, &pTmpBuf2[i+1], 3);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1296 Str[3] = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1297 i += 3;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1298 v23 = pFont->GetLineWidth(&pTmpBuf2[i]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1299 v13 = pWindow->uFrameZ - v23 - atoi(Str);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1300 v14 = uY;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1301 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1302 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1303 default:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1304 v20 = pFont->pMetrics[v15].uWidth;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1305 if ( i > 0 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1306 v13 += pFont->pMetrics[v15].uLeftSpacing;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1307 v21 = &pFont->pFontData[pFont->font_pixels_offset[v15]];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1308 if ( uColor )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1309 pRenderer->DrawText(v13, v14, v21, v20, pFont->uFontHeight, pFont->pFontPalettes[0], uColor, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1310 else
2525
4cc81f981afb Everything except game can use d3d11
a.parshin
parents: 2524
diff changeset
1311 pRenderer->DrawTextAlpha(v13, v14, v21, v20, pFont->uFontHeight, pFont->pFontPalettes[0], false);
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1312 v13 += v20;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1313 if ( i < (signed int)pNumLen )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1314 v13 += pFont->pMetrics[v15].uRightSpacing;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1315 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1316 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1317 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1318 return v28;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1319 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1320
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1321 //----- (0041D12F) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1322 GUIButton *GUIWindow::CreateButton(unsigned int uX, unsigned int uY, unsigned int uWidth, unsigned int uHeight,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1323 int a6, int a7, UIMessageType msg, unsigned int msg_param, unsigned __int8 uHotkey, const char *pName, Texture *pTextures, ...)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1324 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1325 GUIButton *pButton; // esi@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1326 // unsigned int v13; // eax@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1327 // unsigned int v14; // ebx@4
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1328 // unsigned int v15; // eax@4
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1329 unsigned int TextureNum=0; // ebx@4
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1330 // unsigned int v17; // eax@4
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1331 // Texture *v18; // eax@4
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1332 // Texture **v19; // ecx@5
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1333 // Texture **v20; // edx@5
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1334 // GUIButton *v21; // eax@7
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1335 va_list texturs_ptr;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1336
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1337 pButton = (GUIButton *)malloc(0xBC);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1338 pButton->pParent = this;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1339 pButton->uWidth = uWidth;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1340 pButton->uHeight = uHeight;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1341
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1342 if ( a6 == 2 && !uHeight )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1343 pButton->uHeight = uWidth;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1344
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1345 pButton->uButtonType = a6;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1346 pButton->uX = uX + this->uFrameX;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1347 pButton->uY = uY + this->uFrameY;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1348 pButton->uZ = pButton->uX + uWidth - 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1349 pButton->uW = pButton->uY + uHeight - 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1350 pButton->field_2C_is_pushed = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1351 pButton->field_1C = a7;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1352 pButton->msg = msg;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1353 pButton->msg_param = msg_param;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1354 pButton->uHotkey = uHotkey;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1355 //strlen(pName);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1356 strcpy(pButton->pButtonName, pName);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1357 va_start(texturs_ptr, pName);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1358 while (NULL!=(pTextures=va_arg(texturs_ptr, Texture *)))
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1359 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1360 pButton->pTextures[TextureNum]=pTextures;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1361 ++TextureNum;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1362 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1363 va_end(texturs_ptr);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1364 pButton->uNumTextures = TextureNum;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1365 if ( this->pControlsTail )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1366 this->pControlsTail->pNext = pButton;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1367 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1368 this->pControlsHead = pButton;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1369 pButton->pPrev = this->pControlsTail;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1370 this->pControlsTail = pButton;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1371 pButton->pNext = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1372 ++this->uNumControls;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1373 return pButton;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1374 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1375
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1376 //----- (00459C2B) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1377 void GUIWindow::DrawFlashingInputCursor( signed int uX, int uY, struct GUIFont *a2 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1378 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1379 if ( GetTickCount() % 1000 > 500 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1380 DrawText(a2, uX, uY, 0, "_", 0, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1381 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1382
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1383 //----- (0041C432) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1384 GUIWindow * GUIWindow::Create( unsigned int uX, unsigned int uY, unsigned int uWidth, unsigned int uHeight, enum WindowType eWindowType, int pButton, const char* hint )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1385 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1386 unsigned int uNextFreeWindowID; // ebp@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1387 //int *v8; // eax@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1388 //GUIWindow *pWindow; // esi@4
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1389 //int v10; // eax@4
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1390 unsigned int v11; // ebx@15
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1391 NPCData *speakingNPC; // ebp@15
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1392 int v14; // eax@20
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1393 int v16; // eax@25
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1394 int v18; // eax@30
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1395 int v20; // eax@35
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1396 int v22; // eax@40
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1397 int v24; // eax@45
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1398 // int v25; // eax@65
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1399 unsigned int v26; // ebx@65
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1400 char *v27; // eax@71
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1401 const char *v29; // [sp-8h] [bp-18h]@68
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1402 char *v30; // [sp-4h] [bp-14h]@68
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1403 // int uWidtha; // [sp+14h] [bp+4h]@66
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1404 int num_menu_buttons; // [sp+20h] [bp+10h]@15
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1405
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1406 for (uNextFreeWindowID = 0; uNextFreeWindowID < 20; ++uNextFreeWindowID)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1407 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1408 if (pWindowList[uNextFreeWindowID].eWindowType == WINDOW_null)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1409 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1410 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1411
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1412 GUIWindow* pWindow = &pWindowList[uNextFreeWindowID];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1413 pWindow->uFrameWidth = uWidth;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1414 pWindow->uFrameHeight = uHeight;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1415
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1416 pWindow->uFrameX = uX;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1417 pWindow->uFrameY = uY;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1418 pWindow->uFrameZ = uX + uWidth - 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1419 pWindow->uFrameW = uY + uHeight - 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1420
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1421 pWindow->ptr_1C = (void *)pButton;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1422 pWindow->Hint = hint;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1423
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1424 pWindow->eWindowType = eWindowType;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1425 pWindow->receives_keyboard_input = false;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1426 ++uNumVisibleWindows;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1427 pWindow->numVisibleWindows = uNumVisibleWindows;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1428 pVisibleWindowsIdxs[uNumVisibleWindows] = uNextFreeWindowID + 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1429 if ( (signed int)eWindowType <= 20 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1430 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1431 if (eWindowType != WINDOW_Chest)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1432 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1433 switch (eWindowType)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1434 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1435 case WINDOW_Book: {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1436 pWindow->InitializeBookView();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1437 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1438 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1439 case WINDOW_Dialogue: {
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
1440 prev_screen_type = current_screen_type;
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
1441 current_screen_type = SCREEN_NPC_DIALOGUE;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1442 pBtn_ExitCancel = pWindow->CreateButton(0x1D7u, 0x1BDu, 0xA9u, 0x23u, 1, 0, UIMSG_Escape, 0, 0, pGlobalTXT_LocalizationStrings[79], //"Exit"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1443 pIcons_LOD->GetTexture(uExitCancelTextureId), 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1444 if ( pWindow->par1C != 1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1445 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1446 num_menu_buttons = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1447 v11 = LOBYTE(pFontArrus->uFontHeight) - 3;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1448 speakingNPC = GetNPCData(sDialogue_SpeakingActorNPC_ID);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1449 if ( GetGreetType(sDialogue_SpeakingActorNPC_ID) == 1 )//QuestsNPC_greet
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1450 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1451 if ( speakingNPC->joins )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1452 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1453 pWindow->CreateButton(480, 130, 140, v11, 1, 0, UIMSG_SelectNPCDialogueOption, 0xDu, 0, "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1454 num_menu_buttons = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1455 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1456 if ( speakingNPC->evt_A )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1457 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1458 if ( num_menu_buttons < 4 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1459 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1460 v14 = NPC_EventProcessor(speakingNPC->evt_A);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1461 if ( v14 == 1 || v14 == 2 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1462 pWindow->CreateButton(0x1E0u, num_menu_buttons++ * v11 + 130, 0x8Cu, v11, 1, 0, UIMSG_SelectNPCDialogueOption, 0x13u, 0, "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1463 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1464 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1465 if ( speakingNPC->evt_B )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1466 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1467 if ( num_menu_buttons < 4 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1468 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1469 v16 = NPC_EventProcessor(speakingNPC->evt_B);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1470 if ( v16 == 1 || v16 == 2 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1471 pWindow->CreateButton(0x1E0u, num_menu_buttons++ * v11 + 130, 0x8Cu, v11, 1, 0, UIMSG_SelectNPCDialogueOption, 0x14u, 0, "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1472 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1473 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1474 if ( speakingNPC->evt_C )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1475 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1476 if ( num_menu_buttons < 4 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1477 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1478 v18 = NPC_EventProcessor(speakingNPC->evt_C);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1479 if ( v18 == 1 || v18 == 2 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1480 pWindow->CreateButton( 0x1E0u, num_menu_buttons++ * v11 + 130, 0x8Cu, v11, 1, 0, UIMSG_SelectNPCDialogueOption, 0x15u, 0, "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1481 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1482 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1483 if ( speakingNPC->evt_D )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1484 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1485 if ( num_menu_buttons < 4 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1486 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1487 v20 = NPC_EventProcessor(speakingNPC->evt_D);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1488 if ( v20 == 1 || v20 == 2 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1489 pWindow->CreateButton(0x1E0u, num_menu_buttons++ * v11 + 130, 0x8Cu, v11, 1, 0, UIMSG_SelectNPCDialogueOption, 0x16u, 0, "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1490 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1491 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1492 if ( speakingNPC->evt_E )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1493 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1494 if ( num_menu_buttons < 4 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1495 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1496 v22 = NPC_EventProcessor(speakingNPC->evt_E);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1497 if ( v22 == 1 || v22 == 2 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1498 pWindow->CreateButton(0x1E0u, num_menu_buttons++ * v11 + 130, 0x8Cu, v11, 1, 0, UIMSG_SelectNPCDialogueOption, 0x17u, 0, "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1499 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1500 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1501 if (speakingNPC->evt_F )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1502 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1503 if ( num_menu_buttons < 4 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1504 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1505 v24 = NPC_EventProcessor(speakingNPC->evt_F);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1506 if ( v24 == 1 || v24 == 2 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1507 pWindow->CreateButton(0x1E0u, num_menu_buttons++ * v11 + 130, 0x8Cu, v11, 1, 0, UIMSG_SelectNPCDialogueOption, 0x18u, 0, "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1508 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1509 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1510 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1511 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1512 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1513 if ( speakingNPC->joins )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1514 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1515 pWindow->CreateButton(0x1E0u, 0x82u, 0x8Cu, v11, 1, 0, UIMSG_SelectNPCDialogueOption, 0x4Du, 0, pGlobalTXT_LocalizationStrings[407], 0);//Подробнее
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1516 if (speakingNPC->Hired())
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1517 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1518 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[408], speakingNPC->pName); //Отпустить
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1519 pWindow->CreateButton(0x1E0u, v11 + 130, 0x8Cu, v11, 1, 0, UIMSG_SelectNPCDialogueOption, 0x4Cu, 0, pTmpBuf.data(), 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1520 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1521 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1522 pWindow->CreateButton(0x1E0u, v11 + 130, 0x8Cu, v11, 1, 0, UIMSG_SelectNPCDialogueOption, 0x4Cu, 0, pGlobalTXT_LocalizationStrings[406], 0);//Нанять
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1523 num_menu_buttons = 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1524 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1525 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1526 pWindow->_41D08F_set_keyboard_control_group(num_menu_buttons, 1, 0, 1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1527 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1528 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1529 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1530 case WINDOW_ChangeLocation:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1531 {
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
1532 prev_screen_type = current_screen_type;
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
1533 current_screen_type = SCREEN_CHANGE_LOCATION;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1534 pBtn_ExitCancel = pWindow->CreateButton( 566, 445, 75, 33, 1, 0, UIMSG_CHANGE_LOCATION_ClickCencelBtn, 0, 'N', pGlobalTXT_LocalizationStrings[156], pIcons_LOD->GetTexture(uTextureID_BUTTDESC2), 0);//Остаться в этой области
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1535 pBtn_YES = pWindow->CreateButton( 486, 445, 75, 33, 1, 0, UIMSG_OnTravelByFoot, 0, 'Y', pWindow->Hint, pIcons_LOD->GetTexture(uTextureID_BUTTYES2), 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1536 pWindow->CreateButton(pNPCPortraits_x[0][0], pNPCPortraits_y[0][0], 63, 73, 1, 0, UIMSG_OnTravelByFoot, 1, ' ', pWindow->Hint, 0, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1537 pWindow->CreateButton( 8, 8, 460, 344, 1, 0, UIMSG_OnTravelByFoot, 1, 0, pWindow->Hint, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1538 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1539 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1540 case WINDOW_SpellBook: {// окно книги заклов
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1541 InitializeBookTextures();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1542 pWindow->OpenSpellBook();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1543 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1544 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1545 case WINDOW_GreetingNPC: {// окно приветствия НПС
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
1546 prev_screen_type = current_screen_type;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1547 pKeyActionMap->EnterText(0, 15, pWindow);
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
1548 current_screen_type = SCREEN_BRANCHLESS_NPC_DIALOG;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1549 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1550 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1551
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1552 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1553 return pWindow;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1554 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1555 //LABEL_62:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1556 pWindow->CreateButton(61, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 1, '1', "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1557 pWindow->CreateButton(177, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 2, '2', "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1558 pWindow->CreateButton(292, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 3, '3', "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1559 pWindow->CreateButton(407, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 4, '4', "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1560 pWindow->CreateButton(0, 0, 0, 0, 1, 0, UIMSG_CycleCharacters, 0, 9, "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1561 return pWindow;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1562 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1563 if (eWindowType == WINDOW_HouseInterior)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1564 {
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
1565 current_screen_type = SCREEN_HOUSE;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1566 pBtn_ExitCancel = pWindow->CreateButton(471, 445, 169, 35, 1, 0, UIMSG_Escape, 0, 0, pGlobalTXT_LocalizationStrings[80],//Выйти из здания
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1567 pIcons_LOD->GetTexture(uExitCancelTextureId), 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1568 for ( v26 = 0; v26 < uNumDialogueNPCPortraits; ++v26 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1569 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1570 if ( v26 + 1 == uNumDialogueNPCPortraits && uHouse_ExitPic )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1571 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1572 v30 = pMapStats->pInfos[uHouse_ExitPic].pName;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1573 v29 = (char*)pGlobalTXT_LocalizationStrings[LOCSTR_ENTER_S];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1574 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1575 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1576 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1577 if ( v26 || !dword_591080 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1578 v27 = HouseNPCData[v26 +1 - ((dword_591080 != 0)? 1:0)]->pName;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1579 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1580 v27 = (char*)p2DEvents[pButton - 1].pProprieterName;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1581 v30 = v27;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1582 v29 = (char*)pGlobalTXT_LocalizationStrings[435];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1583 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1584 sprintfex(byte_591180[v26].data(), v29, v30);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1585 HouseNPCPortraitsButtonsList[v26] = pWindow->CreateButton(pNPCPortraits_x[uNumDialogueNPCPortraits - 1][v26],
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1586 pNPCPortraits_y[uNumDialogueNPCPortraits - 1][v26],
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1587 63, 73, 1, 0, UIMSG_ClickHouseNPCPortrait, v26, 0, byte_591180[v26].data(), 0, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1588 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1589 if ( uNumDialogueNPCPortraits == 1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1590 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1591 window_SpeakInHouse = &pWindowList[uNextFreeWindowID];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1592 _4B4224_UpdateNPCTopics(0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1593 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1594 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1595 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1596 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1597 if (eWindowType == WINDOW_Transition)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1598 {
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
1599 prev_screen_type = current_screen_type;
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
1600 current_screen_type = SCREEN_INPUT_BLV;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1601 pBtn_ExitCancel = pWindow->CreateButton(0x236u, 0x1BDu, 0x4Bu, 0x21u, 1, 0, UIMSG_TransitionWindowCloseBtn, 0, 'N', pGlobalTXT_LocalizationStrings[34], pIcons_LOD->GetTexture(uTextureID_BUTTDESC2), 0);//Отмена
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1602 pBtn_YES = pWindow->CreateButton(0x1E6u, 0x1BDu, 0x4Bu, 0x21u, 1, 0, UIMSG_TransitionUI_Confirm, 0, 'Y', pWindow->Hint, pIcons_LOD->GetTexture(uTextureID_BUTTYES2), 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1603 pWindow->CreateButton(pNPCPortraits_x[0][0], pNPCPortraits_y[0][0], 0x3Fu, 0x49u, 1, 0, UIMSG_TransitionUI_Confirm, 1, 0x20u, pWindow->Hint, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1604 pWindow->CreateButton(8, 8, 0x1CCu, 0x158u, 1, 0, UIMSG_TransitionUI_Confirm, 1u, 0, pWindow->Hint, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1605 return pWindow;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1606 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1607 if (eWindowType == WINDOW_CastSpell)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1608 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1609 pEventTimer->Pause();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1610 pAudioPlayer->StopChannels(-1, -1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1611 pMouse->SetCursorBitmap("MICON2");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1612 ShowStatusBarString(pGlobalTXT_LocalizationStrings[39], 2u);//Выберите цель
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1613 return pWindow;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1614 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1615 if (eWindowType == WINDOW_Scroll)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1616 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1617 pWindow->CreateButton(61, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 1, '1', "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1618 pWindow->CreateButton(177, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 2, '2', "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1619 pWindow->CreateButton(292, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 3, '3', "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1620 pWindow->CreateButton(407, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 4, '4', "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1621 pWindow->CreateButton(0, 0, 0, 0, 1, 0, UIMSG_CycleCharacters, 0, '\t', "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1622 return pWindow;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1623 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1624 if (eWindowType == WINDOW_CastSpell_InInventory)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1625 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1626 pMouse->SetCursorBitmap("MICON2");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1627 pBtn_ExitCancel = pWindow->CreateButton(392, 318, 75, 33, 1, 0, UIMSG_Escape, 0, 0, pGlobalTXT_LocalizationStrings[34],//Отмена
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1628 pIcons_LOD->GetTexture(uTextureID_BUTTDESC2), 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1629 ShowStatusBarString(pGlobalTXT_LocalizationStrings[39], 2);//Выбрать цель
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1630 ++pIcons_LOD->uTexturePacksCount;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1631 pWindowList_at_506F50_minus1_indexing_buttons____and_an_int_[0] = 103;
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
1632 current_screen_type = SCREEN_CASTING;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1633 if ( !pIcons_LOD->uNumPrevLoadedFiles )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1634 pIcons_LOD->uNumPrevLoadedFiles = pIcons_LOD->uNumLoadedFiles;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1635 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1636 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1637 return pWindow;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1638 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1639 //----- (004B3EF0) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1640 void DrawJoinGuildWindow( int pEventCode )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1641 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1642 uDialogueType = 81;//enum JoinGuildDialog
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1643 current_npc_text = (char *)pNPCTopics[pEventCode + 99].pText;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1644 ContractSelectText(pEventCode);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1645 pDialogueWindow->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1646 pDialogueWindow = GUIWindow::Create(0, 0, window->GetWidth(), 350, WINDOW_MainMenu, pEventCode, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1647 pBtn_ExitCancel = pDialogueWindow->CreateButton(471, 445, 169, 35, 1, 0, UIMSG_Escape, 0, 0, pGlobalTXT_LocalizationStrings[34], pIcons_LOD->GetTexture(uExitCancelTextureId), 0); // Cancel
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1648 pDialogueWindow->CreateButton( 0, 0, 0, 0, 1, 0, UIMSG_BuyInShop_Identify_Repair, 0, 0, "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1649 pDialogueWindow->CreateButton(480, 160, 140, 30, 1, 0, UIMSG_ClickNPCTopic, 0x52u, 0, pGlobalTXT_LocalizationStrings[122], 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1650 pDialogueWindow->_41D08F_set_keyboard_control_group(1, 1, 0, 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1651 dialog_menu_id = HOUSE_DIALOGUE_OTHER;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1652 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1653 //----- (0044603D) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1654 void DialogueEnding()
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1655 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1656 sDialogue_SpeakingActorNPC_ID = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1657 pDialogueWindow->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1658 pDialogueWindow = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1659 pMiscTimer->Resume();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1660 pEventTimer->Resume();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1661 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1662 //----- (004156F0) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1663 void GUI_UpdateWindows()
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1664 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1665 GUIWindow *pWindow; // esi@4
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1666 //unsigned int pWindowType; // eax@4
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1667 const char *pHint; // edx@66
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1668 // GUIButton *pButtonPtr_1C; // ebp@79
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1669 // char *pHint1; // edx@80
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1670 int v26; // eax@98
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1671 unsigned int v27; // ebp@106
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1672 GUIWindow *pGUIWindow2; // ecx@109
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1673 // GUIFont *pGUIFont; // ST1C_4@115
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1674 int v31; // eax@115
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1675 GUIButton *pButton; // ebp@118
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1676 int v39; // eax@129
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1677 unsigned int pNumMessages; // eax@142
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1678 GUIButton *pGUIButton; // ebp@146
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1679 //unsigned int pX; // [sp-1Ch] [bp-124h]@17
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1680 //unsigned int pY; // [sp-18h] [bp-120h]@17
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1681 //Texture *pTexture; // [sp-14h] [bp-11Ch]@17
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1682 //Texture *pTexture2; // [sp-14h] [bp-11Ch]@86
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1683 int i; // [sp+0h] [bp-108h]@3
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1684 // ItemGen pItemGen; // [sp+4h] [bp-104h]@98
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1685 GUIButton GUIButton2; // [sp+28h] [bp-E0h]@133
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1686 ItemGen ItemGen2; // [sp+E4h] [bp-24h]@129
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1687
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1688 if (GetCurrentMenuID() != MENU_CREATEPARTY)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1689 Mouse::UI_OnKeyDown(VK_NEXT);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1690
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1691 for ( i = 1; i <= uNumVisibleWindows; ++i )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1692 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1693 pWindow = &pWindowList[pVisibleWindowsIdxs[i] - 1];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1694 switch (pWindow->eWindowType)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1695 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1696 case WINDOW_OptionsButtons:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1697 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1698 pRenderer->DrawTextureIndexed(pViewport->uViewportTL_Y,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1699 pViewport->uViewportTL_X, pIcons_LOD->GetTexture(uTextureID_Options));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1700 viewparams->bRedrawGameUI = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1701 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1702 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1703 case WINDOW_CharacterRecord:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1704 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1705 CharacterUI_CharacterScreen_Draw(pPlayers[uActiveCharacter]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1706 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1707 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1708 case WINDOW_Options:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1709 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1710 GameMenuUI_Options_Draw();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1711 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1712 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1713 case WINDOW_Book:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1714 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1715 BookUI_Draw((WindowType)(int)pWindow->ptr_1C);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1716 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1717 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1718 case WINDOW_Dialogue:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1719 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1720 GameUI_DrawDialogue();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1721 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1722 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1723 case WINDOW_QuickReference:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1724 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1725 GameUI_QuickRef_Draw();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1726 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1727 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1728 case WINDOW_Rest:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1729 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1730 RestUI_Draw();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1731 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1732 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1733 case WINDOW_ChangeLocation:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1734 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1735 TravelUI_Draw();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1736 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1737 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1738 case WINDOW_SpellBook:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1739 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1740 DrawSpellBookContent(pPlayers[uActiveCharacter]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1741 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1742 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1743 case WINDOW_GreetingNPC:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1744 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1745 GameUI_DrawBranchlessDialogue();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1746 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1747 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1748 case WINDOW_Chest:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1749 {
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
1750 if ( current_screen_type == SCREEN_CHEST )
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1751 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1752 Chest::DrawChestUI(pWindow->par1C);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1753 }
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
1754 else if ( current_screen_type == SCREEN_CHEST_INVENTORY )
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1755 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1756 pRenderer->ClearZBuffer(0, 479);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1757 draw_leather();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1758 CharacterUI_InventoryTab_Draw(pPlayers[uActiveCharacter], true);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1759 pRenderer->DrawTextureIndexed(pBtn_ExitCancel->uX, pBtn_ExitCancel->uY, pIcons_LOD->GetTexture(uExitCancelTextureId));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1760 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1761 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1762 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1763 case WINDOW_SaveLoadButtons:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1764 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1765 SaveUI_Draw();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1766 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1767 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1768 case WINDOW_MainMenu_Load:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1769 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1770 LoadUI_Draw();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1771 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1772 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1773 case WINDOW_HouseInterior:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1774 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1775 pWindowList[pVisibleWindowsIdxs[i] - 1].HouseDialogManager();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1776 if ( !window_SpeakInHouse )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1777 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1778 if ( window_SpeakInHouse->par1C >= 53 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1779 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1780 if ( pParty->PartyTimes._shop_ban_times[window_SpeakInHouse->par1C] <=pParty->uTimePlayed )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1781 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1782 if ( window_SpeakInHouse->par1C < 53 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1783 pParty->PartyTimes._shop_ban_times[window_SpeakInHouse->par1C] = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1784 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1785 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1786 pNumMessages = pMessageQueue_50CBD0->uNumMessages;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1787 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1788 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1789 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1790 case WINDOW_Transition:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1791 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1792 TransitionUI_Draw();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1793 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1794 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1795 case WINDOW_Scroll:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1796 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1797 CreateScrollWindow();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1798 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1799 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1800 case WINDOW_CastSpell_InInventory:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1801 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1802 pRenderer->ClearZBuffer(0, 479);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1803 draw_leather();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1804 CharacterUI_InventoryTab_Draw(pPlayers[uActiveCharacter], true);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1805 CharacterUI_DrawPaperdoll(pPlayers[uActiveCharacter]);
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
1806 pRenderer->DrawTextureIndexedAlpha(pBtn_ExitCancel->uX, pBtn_ExitCancel->uY, pIcons_LOD->GetTexture(uTextureID_x_x_u));
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1807 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1808 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1809 case WINDOW_ModalWindow:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1810 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1811 ModalWindow_ShowHint();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1812 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1813 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1814 case WINDOW_50:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1815 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1816 v27 = Color16(255, 255, 255);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1817 if ( ptr_507BD0->receives_keyboard_input_2 == WINDOW_INPUT_IN_PROGRESS)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1818 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1819 ptr_507BD0->DrawMessageBox(0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1820 ptr_507BD0->DrawText(pFontCreate, 30, 40, v27, pKeyActionMap->pPressedKeysBuffer, 0, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1821 v31 = pFontCreate->GetLineWidth(pKeyActionMap->pPressedKeysBuffer);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1822 ptr_507BD0->DrawFlashingInputCursor(v31 + 30, 40, pFontCreate);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1823 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1824 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1825 if ( ptr_507BD0->receives_keyboard_input_2 == WINDOW_INPUT_CONFIRMED)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1826 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1827 pWindow->receives_keyboard_input_2 = WINDOW_INPUT_NONE;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1828 pMessageQueue_50CBD0->AddGUIMessage((UIMessageType)(int)ptr_507BD0->ptr_1C, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1829 pEventTimer->Resume();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1830 ptr_507BD0->Release();
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
1831 current_screen_type = SCREEN_GAME;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1832 viewparams->bRedrawGameUI = true;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1833 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1834 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1835 if ( ptr_507BD0->receives_keyboard_input_2 == WINDOW_INPUT_CANCELLED)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1836 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1837 pWindow->receives_keyboard_input_2 = WINDOW_INPUT_NONE;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1838 pEventTimer->Resume();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1839 ptr_507BD0->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1840 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1841 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1842 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1843 case WINDOW_59:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1844 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1845 pWindow->DrawMessageBox(0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1846 pWindow->DrawText(pFontLucida, 10, 20, 0, "Making item number", 0, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1847 pWindow->DrawText(pFontLucida, 10, 40, 0, pKeyActionMap->pPressedKeysBuffer, 0, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1848 if ( !pKeyActionMap->field_204 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1849 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1850 ItemGen2.Reset();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1851 pWindow->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1852 pEventTimer->Resume();
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
1853 current_screen_type = SCREEN_GAME;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1854 viewparams->bRedrawGameUI = true;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1855 v26 = atoi(pKeyActionMap->pPressedKeysBuffer);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1856 if ( v26 > 0 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1857 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1858 if ( v26 < 800 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1859 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1860 ItemGen2.uAttributes |= 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1861 ItemGen2.uItemID = v26;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1862 if ( pItemsTable->pItems[v26].uEquipType == 12 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1863 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1864 ItemGen2.uNumCharges = rand() % 6 + ItemGen2.GetDamageMod() + 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1865 ItemGen2.uMaxCharges = LOBYTE(ItemGen2.uNumCharges);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1866 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1867 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1868 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1869 if ( v26 >= 221 && v26 < 271 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1870 ItemGen2.uEnchantmentType = rand() % 10 + 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1871 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1872 pItemsTable->SetSpecialBonus(&ItemGen2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1873 pParty->SetHoldingItem(&ItemGen2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1874 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1875 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1876 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1877 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1878 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1879 case WINDOW_PressedButton2:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1880 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1881 if ( pWindow->Hint != (char *)1 )
2506
9b96a51011fb for sound
Ritor1
parents: 2502
diff changeset
1882 pAudioPlayer->PlaySound(SOUND_StartMainChoice02, 0, 0, -1, 0, 0, 0, 0);
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1883 pButton = (GUIButton *)pWindow->ptr_1C;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1884 if ( pButton->uX >= 0 && pButton->uX <= window->GetWidth() )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1885 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1886 if ( pButton->uY >= 0 && pButton->uY <= window->GetHeight() )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1887 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1888 pRenderer->DrawTextureIndexed(pWindow->uFrameX, pWindow->uFrameY, pButton->pTextures[0]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1889 viewparams->bRedrawGameUI = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1890 if ( pWindow->Hint )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1891 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1892 if ( pWindow->Hint != (char *)1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1893 pButton->DrawLabel(pWindow->Hint, pFontCreate, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1894 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1895 pWindow->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1896 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1897 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1898 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1899 viewparams->bRedrawGameUI = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1900 if ( pWindow->Hint )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1901 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1902 if ( pWindow->Hint != (char *)1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1903 pButton->DrawLabel(pWindow->Hint, pFontCreate, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1904 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1905 pWindow->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1906 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1907 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1908 case WINDOW_CharactersPressedButton:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1909 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1910 if ( pWindow->Hint != (char *)1 )
2506
9b96a51011fb for sound
Ritor1
parents: 2502
diff changeset
1911 pAudioPlayer->PlaySound(SOUND_StartMainChoice02, 0, 0, -1, 0, 0, 0, 0);
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1912 pButton = (GUIButton *)pWindow->ptr_1C;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1913 pRenderer->DrawTextureIndexed(pWindow->uFrameX, pWindow->uFrameY, pButton->pTextures[1]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1914 viewparams->bRedrawGameUI = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1915 if ( pWindow->Hint )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1916 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1917 if ( pWindow->Hint != (char *)1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1918 pButton->DrawLabel(pWindow->Hint, pFontCreate, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1919 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1920 pWindow->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1921 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1922 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1923 case WINDOW_PressedButton:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1924 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1925 if ( pWindow->Hint != (char *)1 )
2506
9b96a51011fb for sound
Ritor1
parents: 2502
diff changeset
1926 pAudioPlayer->PlaySound(SOUND_StartMainChoice02, 0, 0, -1, 0, 0, 0, 0);
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1927 pButton = (GUIButton *)pWindow->ptr_1C;
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
1928 pRenderer->DrawTextureIndexedAlpha(pWindow->uFrameX, pWindow->uFrameY, pButton->pTextures[0]);
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1929 viewparams->bRedrawGameUI = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1930 if ( pWindow->Hint )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1931 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1932 if ( pWindow->Hint != (char *)1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1933 pButton->DrawLabel(pWindow->Hint, pFontCreate, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1934 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1935 pWindow->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1936 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1937 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1938 case WINDOW_5D:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1939 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1940 if ( pWindow->Hint != (char *)1 )
2506
9b96a51011fb for sound
Ritor1
parents: 2502
diff changeset
1941 pAudioPlayer->PlaySound(SOUND_StartMainChoice02, 0, 0, -1, 0, 0, 0, 0);
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1942 pButton = (GUIButton *)pWindow->ptr_1C;
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
1943 pRenderer->DrawTextureIndexedAlpha(pWindow->uFrameX, pWindow->uFrameY, pButton->pTextures[1]);
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1944 viewparams->bRedrawGameUI = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1945 pWindow->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1946 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1947 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1948 case WINDOW_SaveLoadBtn:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1949 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1950 if (pWindow->Hint != (char *)1)
2506
9b96a51011fb for sound
Ritor1
parents: 2502
diff changeset
1951 pAudioPlayer->PlaySound(SOUND_StartMainChoice02, 0, 0, -1, 0, 0, 0, 0);
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1952 pButton = (GUIButton *)pWindow->ptr_1C;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1953 pRenderer->DrawTextureIndexed(pWindow->uFrameX, pWindow->uFrameY, pButton->pTextures[0]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1954 pHint = pWindow->Hint;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1955 viewparams->bRedrawGameUI = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1956 if ( pHint && pHint != (char *)1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1957 pButton->DrawLabel(pHint, pFontCreate, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1958 pWindow->Release();
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
1959 if (current_screen_type == SCREEN_SAVEGAME)
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1960 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_SaveGame, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1961 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1962 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_LoadGame, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1963 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1964 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1965 case WINDOW_LoadGame_CancelBtn:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1966 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1967 if ( pWindow->Hint != (char *)1 )
2506
9b96a51011fb for sound
Ritor1
parents: 2502
diff changeset
1968 pAudioPlayer->PlaySound(SOUND_StartMainChoice02, 0, 0, -1, 0, 0, 0, 0);
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1969 pButton = (GUIButton *)pWindow->ptr_1C;
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
1970 pRenderer->DrawTextureIndexedAlpha(pWindow->uFrameX, pWindow->uFrameY, pButton->pTextures[0]);
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1971 viewparams->bRedrawGameUI = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1972 if ( pWindow->Hint && pWindow->Hint != (char *)1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1973 pButton->DrawLabel(pWindow->Hint, pFontCreate, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1974 pWindow->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1975 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1976 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1977 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1978 case WINDOW_CloseRestWindowBtn:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1979 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1980 if ( pWindow->Hint != (char *)1 )
2506
9b96a51011fb for sound
Ritor1
parents: 2502
diff changeset
1981 pAudioPlayer->PlaySound(SOUND_StartMainChoice02, 0, 0, -1, 0, 0, 0, 0);
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1982 pGUIButton = (GUIButton *)pWindow->ptr_1C;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1983 pRenderer->DrawTextureIndexed(pWindow->uFrameX, pWindow->uFrameY, pGUIButton->pTextures[0]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1984 pHint = pWindow->Hint;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1985 viewparams->bRedrawGameUI = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1986 if ( pHint && pHint != (char *)1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1987 pGUIButton->DrawLabel(pHint, pFontCreate, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1988 pWindow->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1989 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1990 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1991 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1992 case WINDOW_ExitCharacterWindow:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1993 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1994 if ( pWindow->Hint != (char *)1 )
2506
9b96a51011fb for sound
Ritor1
parents: 2502
diff changeset
1995 pAudioPlayer->PlaySound(SOUND_StartMainChoice02, 0, 0, -1, 0, 0, 0, 0);
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1996 pButton = (GUIButton *)pWindow->ptr_1C;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1997 pRenderer->DrawTextureIndexed(pWindow->uFrameX, pWindow->uFrameY, pButton->pTextures[1]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1998 pHint = pWindow->Hint;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
1999 viewparams->bRedrawGameUI = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2000 if ( pHint && pHint != (char *)1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2001 pButton->DrawLabel(pHint, pFontCreate, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2002 pWindow->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2003 pNumMessages = pMessageQueue_50CBD0->uNumMessages;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2004 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2005 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2006 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2007 case WINDOW_RestWindow:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2008 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2009 memset(&GUIButton2, 0, 0xBCu);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2010 GUIButton2.uZ = 197;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2011 GUIButton2.uW = 197;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2012 GUIButton2.uX = 27;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2013 GUIButton2.uY = 161;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2014 GUIButton2.uWidth = 171;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2015 GUIButton2.uHeight = 37;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2016 GUIButton2.pParent = pButton_RestUI_WaitUntilDawn->pParent;
2506
9b96a51011fb for sound
Ritor1
parents: 2502
diff changeset
2017 pAudioPlayer->PlaySound(SOUND_StartMainChoice02, 0, 0, -1, 0, 0, 0, 0);
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2018 pRenderer->DrawTextureIndexed(pWindow->uFrameX, pWindow->uFrameY, *((Texture **)pWindow->ptr_1C + 15));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2019 viewparams->bRedrawGameUI = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2020 GUIButton2.DrawLabel(pGlobalTXT_LocalizationStrings[183], pFontCreate, 0, 0);//Отдых и лечение 8 часов
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2021 GUIButton2.pParent = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2022 pGUIWindow2 = pWindow;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2023 pGUIWindow2->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2024 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2025 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2026 case WINDOW_BooksWindow:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2027 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2028 pButton = (GUIButton *)pWindow->ptr_1C;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2029 pRenderer->DrawTextureIndexed(pWindow->uFrameY,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2030 pWindow->uFrameX, pButton->pTextures[0]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2031 viewparams->bRedrawGameUI = true;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2032 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2033 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2034 case WINDOW_CharacterWindow_Inventory:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2035 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2036 pWindow->DrawMessageBox(0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2037 pWindow->DrawText(pFontLucida, 10, 20, 0, "Making item number", 0, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2038 pWindow->DrawText(pFontLucida, 10, 40, 0, pKeyActionMap->pPressedKeysBuffer, 0, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2039 if ( !pKeyActionMap->field_204 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2040 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2041 ItemGen2.Reset();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2042 pWindow->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2043 pEventTimer->Resume();
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
2044 current_screen_type = SCREEN_GAME;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2045 viewparams->bRedrawGameUI = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2046 v39 = atoi(pKeyActionMap->pPressedKeysBuffer);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2047 if ( v39 > 0 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2048 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2049 if ( v39 < 800 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2050 SpawnActor(v39);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2051 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2052 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2053 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2054 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2055 case WINDOW_KeyMappingOptions:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2056 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2057 GameMenuUI_DrawKeyBindings();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2058 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2059 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2060 case WINDOW_VideoOptions:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2061 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2062 GameMenuUI_DrawVideoOptions();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2063 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2064 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2065 default:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2066 continue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2067 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2068 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2069 if ( GetCurrentMenuID() == -1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2070 GameUI_DrawFoodAndGold();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2071 if ( sub_4637E0_is_there_popup_onscreen() )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2072 UI_OnMouseRightClick(0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2073 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2074 //void LoadFonts_and_DrawCopyrightWindow()
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2075 //{
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2076 //MainMenuUI_LoadFontsAndSomeStuff();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2077 // DrawCopyrightWindow();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2078 //}
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2079 //----- (00415485) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2080 void DrawMM7CopyrightWindow()
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2081 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2082 GUIWindow Dst; // [sp+8h] [bp-54h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2083
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2084 memset(&Dst, 0, sizeof(Dst));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2085 Dst.uFrameWidth = 624;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2086 Dst.uFrameHeight = 256;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2087 Dst.uFrameX = 8;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2088 Dst.uFrameY = 30; // c 1999 The 3DO Company.
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2089 Dst.uFrameHeight = pFontSmallnum->CalcTextHeight(pGlobalTXT_LocalizationStrings[157], &Dst, 24, 0)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2090 + 2 * LOBYTE(pFontSmallnum->uFontHeight)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2091 + 24;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2092 Dst.uFrameY = 470 - Dst.uFrameHeight;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2093 Dst.uFrameZ = Dst.uFrameX + Dst.uFrameWidth - 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2094 Dst.uFrameW = 469;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2095 //Dst.Hint = "abcagfdsgsg ljsrengvlkjesnfkjwnef";
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2096 Dst.DrawMessageBox(0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2097
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2098 Dst.uFrameWidth -= 24;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2099 Dst.uFrameX += 12;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2100 Dst.uFrameY += 12;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2101 Dst.uFrameHeight -= 12;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2102 Dst.uFrameZ = Dst.uFrameX + Dst.uFrameWidth - 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2103 Dst.uFrameW = Dst.uFrameY + Dst.uFrameHeight - 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2104 Dst.DrawTitleText(pFontSmallnum, 0, 0xCu, ui_mainmenu_copyright_color, pGlobalTXT_LocalizationStrings[157], 3);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2105 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2106
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
2107 enum CURRENT_SCREEN modal_window_prev_screen_type;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2108
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2109 //----- (004141CA) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2110 void ModalWindow(const char *pStrHint, UIMessageType OnRelease_message)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2111 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2112 pEventTimer->Pause();
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
2113 modal_window_prev_screen_type = current_screen_type;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2114 pModalWindow = GUIWindow::Create(0, 0, window->GetWidth(), window->GetHeight(), WINDOW_ModalWindow, OnRelease_message, pStrHint);
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
2115 current_screen_type = SCREEN_MODAL_WINDOW;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2116 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2117
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2118 //----- (0041420D) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2119 void ModalWindow_ShowHint()
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2120 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2121 GUIWindow pWindow; // [sp+4h] [bp-54h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2122
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2123 sprintf(pTmpBuf2.data(), "%s\n \n%s", pModalWindow->Hint, pGlobalTXT_LocalizationStrings[61]);// Press Escape
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2124 pWindow.Hint = pTmpBuf2.data();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2125 pWindow.uFrameWidth = 400;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2126 pWindow.uFrameHeight = 100;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2127 pWindow.uFrameX = 120;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2128 pWindow.uFrameY = 140;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2129 pWindow.uFrameZ = 519;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2130 pWindow.uFrameW = 239;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2131 pWindow.DrawMessageBox(0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2132 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2133
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2134 //----- (0041426F) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2135 void ModalWindow_Release()
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2136 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2137 pMessageQueue_50CBD0->AddGUIMessage((UIMessageType)pModalWindow->par1C, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2138
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2139 pModalWindow->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2140 pModalWindow = nullptr;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2141
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
2142 current_screen_type = modal_window_prev_screen_type;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2143 pEventTimer->Resume();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2144 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2145
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2146 //----- (00467FB6) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2147 void CreateScrollWindow()
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2148 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2149 unsigned int v0; // eax@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2150 char *v1; // ST18_4@3
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2151 GUIWindow a1; // [sp+Ch] [bp-54h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2152
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2153 memcpy(&a1, pGUIWindow_ScrollWindow, sizeof(a1));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2154 a1.Hint = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2155 a1.uFrameX = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2156 a1.uFrameY = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2157 a1.uFrameWidth = 468;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2158 v0 = pFontSmallnum->CalcTextHeight(pScrolls[pGUIWindow_ScrollWindow->par1C], &a1, 0, 0)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2159 + 2 * LOBYTE(pFontCreate->uFontHeight) + 24;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2160 a1.uFrameHeight = v0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2161 if ( (signed int)(v0 + a1.uFrameY) > 479 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2162 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2163 v0 = 479 - a1.uFrameY;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2164 a1.uFrameHeight = 479 - a1.uFrameY;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2165 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2166 a1.uFrameZ = a1.uFrameWidth + a1.uFrameX - 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2167 a1.uFrameW = v0 + a1.uFrameY - 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2168 a1.DrawMessageBox(0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2169 a1.uFrameX += 12;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2170 a1.uFrameWidth -= 24;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2171 a1.uFrameY += 12;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2172 a1.uFrameHeight -= 12;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2173 a1.uFrameZ = a1.uFrameWidth + a1.uFrameX - 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2174 a1.uFrameW = a1.uFrameHeight + a1.uFrameY - 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2175 v1 = pItemsTable->pItems[(unsigned int)pGUIWindow_ScrollWindow->ptr_1C + 700].pName;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2176 sprintf(pTmpBuf.data(), format_4E2D80, Color16(0xFFu, 0xFFu, 0x9Bu), v1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2177 a1.DrawTitleText(pFontCreate, 0, 0, 0, pTmpBuf.data(), 3);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2178 a1.DrawText(pFontSmallnum, 1, LOBYTE(pFontCreate->uFontHeight) - 3, 0,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2179 pScrolls[(unsigned int)pGUIWindow_ScrollWindow->ptr_1C], 0, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2180 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2181 //----- (00467F48) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2182 void CreateMsgScrollWindow( signed int mscroll_id )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2183 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2184 if ( !pGUIWindow_ScrollWindow && mscroll_id >= 700 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2185 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2186 if ( mscroll_id <= 782 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2187 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2188 uTextureID_720980 = pIcons_LOD->LoadTexture("leather", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2189 pGUIWindow_ScrollWindow = GUIWindow::Create(0, 0, window->GetWidth(), window->GetHeight(), WINDOW_Scroll, mscroll_id - 700, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2190 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2191 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2192 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2193 //----- (00467F9F) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2194 void free_book_subwindow()
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2195 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2196 if ( pGUIWindow_ScrollWindow )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2197 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2198 pGUIWindow_ScrollWindow->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2199 pGUIWindow_ScrollWindow = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2200 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2201 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2202 //----- (004226EF) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2203 void SetUserInterface(PartyAlignment align, bool bReplace)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2204 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2205 extern void set_default_ui_skin();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2206 set_default_ui_skin();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2207
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2208 if (align == PartyAlignment_Evil)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2209 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2210 if ( bReplace )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2211 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2212 pTexture_RightFrame->Reload("ib-r-C.pcx");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2213 pTexture_BottomFrame->Reload("ib-b-C.pcx");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2214 pTexture_TopFrame->Reload("ib-t-C.pcx");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2215 pTexture_LeftFrame->Reload("ib-l-C.pcx");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2216 pTexture_StatusBar->Reload("IB-Foot-c.pcx");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2217 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_right_panel], "ib-mb-C", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2218 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Minimap_Loop], "ib-autmask-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2219 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Compas], "IB-COMP-C", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2220 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[dword_5079D0], "IB-InitG-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2221 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[dword_5079C8], "IB-InitY-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2222 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[dword_5079CC], "IB-InitR-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2223 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_NPCLeft], "IB-NPCLD-C", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2224 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_NPCRight], "IB-NPCRD-C", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2225 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_ZoomIn], "ib-autout-C", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2226 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_ZoomOut], "ib-autin-C", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2227 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_GameUI_CharSelectionFrame], "IB-selec-C", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2228 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_CastSpell], "ib-m1d-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2229 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_Rest], "ib-m2d-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2230 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_QuickReference], "ib-m3d-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2231 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_GameSettings], "ib-m4d-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2232
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2233 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_PlayerBuff_Bless], "isg-01-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2234 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_PlayerBuff_Preservation], "isg-02-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2235 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_PlayerBuff_Hammerhands], "isg-03-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2236 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_PlayerBuff_PainReflection], "isg-04-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2237
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2238 pUIAnim_WizardEye->uIconID = pIconsFrameTable->FindIcon("wizeyeC");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2239 pIconsFrameTable->InitializeAnimation(pUIAnim_WizardEye->uIconID);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2240 pUIAnum_Torchlight->uIconID = pIconsFrameTable->FindIcon("torchC");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2241 pIconsFrameTable->InitializeAnimation(pUIAnum_Torchlight->uIconID);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2242
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2243 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uExitCancelTextureId], "ib-bcu-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2244 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_50795C], "evtnpc-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2245 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_CharacterUI_InventoryBackground], "fr_inven-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2246 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Parchment], "parchment", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2247 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_5076B4], "cornr_ll-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2248 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_5076B0], "cornr_lr-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2249 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_5076AC], "cornr_ul-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2250 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_5076A8], "cornr_ur-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2251 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_5076A4], "edge_btm-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2252 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_5076A0], "edge_lf-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2253 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_50769C], "edge_rt-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2254 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_507698], "edge_top-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2255 pIcons_LOD->ReloadTexture(pTexture_591428, "endcap-c", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2256 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2257 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2258 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2259 pTexture_RightFrame->Load("ib-r-C.pcx", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2260 pTexture_BottomFrame->Load("ib-b-c.pcx", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2261 pTexture_TopFrame->Load("ib-t-C.pcx", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2262 pTexture_LeftFrame->Load("ib-l-C.pcx", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2263 pTexture_StatusBar->Load("IB-Foot-c.pcx", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2264 uTextureID_right_panel = pIcons_LOD->LoadTexture("ib-mb-C", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2265 uTextureID_Minimap_Loop = pIcons_LOD->LoadTexture("ib-autmask-c", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2266 uTextureID_Compas = pIcons_LOD->LoadTexture("IB-COMP-C", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2267 dword_5079D0 = pIcons_LOD->LoadTexture("IB-InitG-c", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2268 dword_5079C8 = pIcons_LOD->LoadTexture("IB-InitY-c", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2269 dword_5079CC = pIcons_LOD->LoadTexture("IB-InitR-c", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2270 uTextureID_Btn_NPCLeft = pIcons_LOD->LoadTexture("IB-NPCLD-C", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2271 uTextureID_Btn_NPCRight = pIcons_LOD->LoadTexture("IB-NPCRD-C", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2272 uTextureID_Btn_ZoomIn = pIcons_LOD->LoadTexture("ib-autout-C", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2273 uTextureID_Btn_ZoomOut = pIcons_LOD->LoadTexture("ib-autin-C", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2274 uTextureID_GameUI_CharSelectionFrame = pIcons_LOD->LoadTexture("IB-selec-C", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2275 uTextureID_Btn_CastSpell = pIcons_LOD->LoadTexture("ib-m1d-c", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2276 uTextureID_Btn_Rest = pIcons_LOD->LoadTexture("ib-m2d-c", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2277 uTextureID_Btn_QuickReference = pIcons_LOD->LoadTexture("ib-m3d-c", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2278 uTextureID_Btn_GameSettings = pIcons_LOD->LoadTexture("ib-m4d-c", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2279 uExitCancelTextureId = pIcons_LOD->LoadTexture("ib-bcu-c", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2280 uTextureID_PlayerBuff_Bless = pIcons_LOD->LoadTexture("isg-01-c", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2281 uTextureID_PlayerBuff_Preservation = pIcons_LOD->LoadTexture("isg-02-c", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2282 uTextureID_PlayerBuff_Hammerhands = pIcons_LOD->LoadTexture("isg-03-c", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2283 uTextureID_PlayerBuff_PainReflection = pIcons_LOD->LoadTexture("isg-04-c", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2284 uTextureID_50795C = pIcons_LOD->LoadTexture("evtnpc-c", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2285 uTextureID_CharacterUI_InventoryBackground = pIcons_LOD->LoadTexture("fr_inven", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2286 pUIAnim_WizardEye->uIconID = pIconsFrameTable->FindIcon("wizeyeC");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2287 pIconsFrameTable->InitializeAnimation((signed __int16)pUIAnim_WizardEye->uIconID);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2288 pUIAnum_Torchlight->uIconID = pIconsFrameTable->FindIcon("torchC");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2289 pIconsFrameTable->InitializeAnimation((signed __int16)pUIAnum_Torchlight->uIconID);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2290 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2291 uGameUIFontMain = Color16(0xC8u, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2292 uGameUIFontShadow = Color16(10, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2293 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2294 else if (align == PartyAlignment_Neutral)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2295 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2296 if ( bReplace )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2297 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2298 pTexture_RightFrame->Reload("ib-r-a.pcx");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2299 pTexture_BottomFrame->Reload("ib-b-a.pcx");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2300 pTexture_TopFrame->Reload("ib-t-a.pcx");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2301 pTexture_LeftFrame->Reload("ib-l-a.pcx");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2302 pTexture_StatusBar->Reload("IB-Foot-a.pcx");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2303 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_right_panel], "ib-mb-a", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2304 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Minimap_Loop], "ib-autmask-a", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2305 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Compas], "IB-COMP-a", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2306 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[dword_5079D0], "IB-InitG-a", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2307 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[dword_5079C8], "IB-InitY-a", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2308 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[dword_5079CC], "IB-InitR-a", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2309 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_NPCLeft], "IB-NPCLD-a", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2310 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_NPCRight], "IB-NPCRD-a", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2311 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_ZoomIn], "ib-autout-a", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2312 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_ZoomOut], "ib-autin-a", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2313 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_GameUI_CharSelectionFrame], "IB-selec-a", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2314 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_CastSpell], "ib-m1d-a", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2315 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_Rest], "ib-m2d-a", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2316 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_QuickReference], "ib-m3d-a", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2317 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_GameSettings], "ib-m4d-a", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2318 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_PlayerBuff_Bless], "isg-01-a", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2319 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_PlayerBuff_Preservation], "isg-02-a", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2320 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_PlayerBuff_Hammerhands], "isg-03-a", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2321 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_PlayerBuff_PainReflection], "isg-04-a", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2322 pUIAnim_WizardEye->uIconID = pIconsFrameTable->FindIcon("wizeyeA");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2323 pIconsFrameTable->InitializeAnimation((signed __int16)pUIAnim_WizardEye->uIconID);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2324 pUIAnum_Torchlight->uIconID = pIconsFrameTable->FindIcon("torchA");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2325 pIconsFrameTable->InitializeAnimation((signed __int16)pUIAnum_Torchlight->uIconID);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2326 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uExitCancelTextureId], "ib-bcu-a", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2327 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_50795C], "evtnpc", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2328 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_CharacterUI_InventoryBackground], "fr_inven", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2329 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Parchment], "parchment", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2330 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_5076B4], "cornr_ll", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2331 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_5076B0], "cornr_lr", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2332 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_5076AC], "cornr_ul", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2333 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_5076A8], "cornr_ur", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2334 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_5076A4], "edge_btm", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2335 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_5076A0], "edge_lf", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2336 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_50769C], "edge_rt", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2337 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_507698], "edge_top", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2338 pIcons_LOD->ReloadTexture(pTexture_591428, "endcap", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2339 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2340 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2341 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2342 pTexture_RightFrame->Load("ib-r-A.pcx", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2343 pTexture_BottomFrame->Load("ib-b-A.pcx", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2344 pTexture_TopFrame->Load("ib-t-A.pcx", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2345 pTexture_LeftFrame->Load("ib-l-A.pcx", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2346 pTexture_StatusBar->Load("IB-Foot-a.pcx", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2347 uTextureID_right_panel = pIcons_LOD->LoadTexture("ib-mb-A", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2348 uTextureID_Minimap_Loop = pIcons_LOD->LoadTexture("ib-autmask-a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2349 uTextureID_Compas = pIcons_LOD->LoadTexture("IB-COMP-A", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2350 dword_5079D0 = pIcons_LOD->LoadTexture("IB-InitG-a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2351 dword_5079C8 = pIcons_LOD->LoadTexture("IB-InitY-a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2352 dword_5079CC = pIcons_LOD->LoadTexture("IB-InitR-a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2353 uTextureID_Btn_NPCLeft = pIcons_LOD->LoadTexture("IB-NPCLD-A", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2354 uTextureID_Btn_NPCRight = pIcons_LOD->LoadTexture("IB-NPCRD-A", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2355 uTextureID_GameUI_CharSelectionFrame = pIcons_LOD->LoadTexture("IB-selec-A", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2356 uTextureID_Btn_CastSpell = pIcons_LOD->LoadTexture("ib-m1d-a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2357 uTextureID_Btn_Rest = pIcons_LOD->LoadTexture("ib-m2d-a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2358 uTextureID_Btn_QuickReference = pIcons_LOD->LoadTexture("ib-m3d-a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2359 uTextureID_Btn_GameSettings = pIcons_LOD->LoadTexture("ib-m4d-a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2360 uTextureID_Btn_ZoomIn = pIcons_LOD->LoadTexture("ib-autout-a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2361 uTextureID_Btn_ZoomOut = pIcons_LOD->LoadTexture("ib-autin-a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2362 uExitCancelTextureId = pIcons_LOD->LoadTexture("ib-bcu-a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2363 uTextureID_PlayerBuff_Bless = pIcons_LOD->LoadTexture("isg-01-a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2364 uTextureID_PlayerBuff_Preservation = pIcons_LOD->LoadTexture("isg-02-a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2365 uTextureID_PlayerBuff_Hammerhands = pIcons_LOD->LoadTexture("isg-03-a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2366 uTextureID_PlayerBuff_PainReflection = pIcons_LOD->LoadTexture("isg-04-a", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2367 uTextureID_50795C = pIcons_LOD->LoadTexture("evtnpc", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2368 uTextureID_CharacterUI_InventoryBackground = pIcons_LOD->LoadTexture("fr_inven", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2369 pUIAnim_WizardEye->uIconID = pIconsFrameTable->FindIcon("wizeyeA");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2370 pIconsFrameTable->InitializeAnimation((signed __int16)pUIAnim_WizardEye->uIconID);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2371 pUIAnum_Torchlight->uIconID = pIconsFrameTable->FindIcon("torchA");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2372 pIconsFrameTable->InitializeAnimation((signed __int16)pUIAnum_Torchlight->uIconID);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2373 uTextureID_Parchment = pIcons_LOD->LoadTexture("parchment", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2374 uTextureID_5076B4 = pIcons_LOD->LoadTexture("cornr_ll", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2375 uTextureID_5076B0 = pIcons_LOD->LoadTexture("cornr_lr", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2376 uTextureID_5076AC = pIcons_LOD->LoadTexture("cornr_ul", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2377 uTextureID_5076A8 = pIcons_LOD->LoadTexture("cornr_ur", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2378 uTextureID_5076A4 = pIcons_LOD->LoadTexture("edge_btm", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2379 uTextureID_5076A0 = pIcons_LOD->LoadTexture("edge_lf", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2380 uTextureID_50769C = pIcons_LOD->LoadTexture("edge_rt", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2381 uTextureID_507698 = pIcons_LOD->LoadTexture("edge_top", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2382 pTexture_591428 = pIcons_LOD->LoadTexturePtr("endcap", TEXTURE_16BIT_PALETTE);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2383 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2384 uGameUIFontMain = Color16(0xAu, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2385 uGameUIFontShadow = Color16(230, 214, 193);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2386 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2387 else if (align == PartyAlignment_Good)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2388 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2389 if ( bReplace )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2390 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2391 pTexture_RightFrame->Reload("ib-r-B.pcx");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2392 pTexture_BottomFrame->Reload("ib-b-B.pcx");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2393 pTexture_TopFrame->Reload("ib-t-B.pcx");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2394 pTexture_LeftFrame->Reload("ib-l-B.pcx");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2395 pTexture_StatusBar->Reload("IB-Foot-b.pcx");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2396 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_right_panel], "ib-mb-B", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2397 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Minimap_Loop], "ib-autmask-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2398 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Compas], "IB-COMP-B", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2399 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[dword_5079D0], "IB-InitG-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2400 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[dword_5079C8], "IB-InitY-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2401 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[dword_5079CC], "IB-InitR-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2402 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_NPCLeft], "IB-NPCLD-B", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2403 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_NPCRight], "IB-NPCRD-B", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2404 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_ZoomIn], "ib-autout-B", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2405 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_ZoomOut], "ib-autin-B", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2406 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_GameUI_CharSelectionFrame], "IB-selec-B", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2407 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_CastSpell], "ib-m1d-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2408 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_Rest], "ib-m2d-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2409 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_QuickReference], "ib-m3d-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2410 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Btn_GameSettings], "ib-m4d-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2411 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_PlayerBuff_Bless], "isg-01-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2412 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_PlayerBuff_Preservation], "isg-02-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2413 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_PlayerBuff_Hammerhands], "isg-03-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2414 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_PlayerBuff_PainReflection], "isg-04-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2415 pUIAnim_WizardEye->uIconID = pIconsFrameTable->FindIcon("wizeyeB");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2416 pIconsFrameTable->InitializeAnimation((signed __int16)pUIAnim_WizardEye->uIconID);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2417 pUIAnum_Torchlight->uIconID = pIconsFrameTable->FindIcon("torchB");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2418 pIconsFrameTable->InitializeAnimation((signed __int16)pUIAnum_Torchlight->uIconID);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2419 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uExitCancelTextureId], "ib-bcu-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2420 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_50795C], "evtnpc-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2421 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_CharacterUI_InventoryBackground], "fr_inven-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2422 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_Parchment], "parchment", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2423 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_5076B4], "cornr_ll-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2424 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_5076B0], "cornr_lr-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2425 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_5076AC], "cornr_ul-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2426 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_5076A8], "cornr_ur-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2427 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_5076A4], "edge_btm-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2428 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_5076A0], "edge_lf-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2429 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_50769C], "edge_rt-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2430 pIcons_LOD->ReloadTexture(&pIcons_LOD->pTextures[uTextureID_507698], "edge_top-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2431 pIcons_LOD->ReloadTexture(pTexture_591428, "endcap-b", 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2432 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2433 uGameUIFontMain = Color16(0, 0, 0xC8u);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2434 uGameUIFontShadow = Color16(255, 255, 255);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2435 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2436 else Error("Invalid alignment type: %u", align);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2437 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2438 //----- (0041D20D) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2439 void DrawBuff_remaining_time_string( int uY, struct GUIWindow *window, __int64 remaining_time, struct GUIFont *Font )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2440 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2441 unsigned int full_time; // esi@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2442 signed __int64 hours; // kr00_8@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2443 const char *text; // eax@2
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2444 signed __int64 minutes; // [sp+10h] [bp-10h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2445 signed __int64 seconds; // [sp+18h] [bp-8h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2446 unsigned int day; // [sp+24h] [bp+4h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2447
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2448 full_time = (signed __int64)((double)remaining_time * 0.234375);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2449 day = (unsigned int)((full_time / 60) / 60) / 24;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2450 hours = ((full_time / 60) / 60) % 24;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2451 minutes = (signed __int64)(full_time / 60) % 60;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2452 seconds = (signed __int64)full_time % 60;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2453 strcpy(pTmpBuf.data(), "\r020");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2454 if ( day )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2455 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2456 text = pGlobalTXT_LocalizationStrings[57]; // Days
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2457 if ( day <= 1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2458 text = pGlobalTXT_LocalizationStrings[56]; // Day
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2459 sprintfex(pTmpBuf2.data(), "%d %s ", (int)day, text);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2460 strcat(pTmpBuf.data(), pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2461 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2462 if ( hours )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2463 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2464 if ( hours <= 1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2465 text = pGlobalTXT_LocalizationStrings[109];// Hour
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2466 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2467 text = pGlobalTXT_LocalizationStrings[110];// Hours
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2468 sprintfex(pTmpBuf2.data(), "%d %s ", (int)hours, text);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2469 strcat(pTmpBuf.data(), pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2470 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2471 if ( minutes && !day )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2472 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2473 if ( minutes <= 1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2474 text = pGlobalTXT_LocalizationStrings[437];// Minute
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2475 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2476 text = pGlobalTXT_LocalizationStrings[436];// Minutes
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2477 sprintfex(pTmpBuf2.data(), "%d %s ", (int)minutes, text);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2478 strcat(pTmpBuf.data(), pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2479 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2480 if ( seconds && !hours )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2481 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2482 if ( seconds <= 1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2483 text = pGlobalTXT_LocalizationStrings[439];// Second
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2484 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2485 text = pGlobalTXT_LocalizationStrings[438];// Seconds
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2486 sprintfex(pTmpBuf2.data(), "%d %s ", (int)seconds, text);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2487 strcat(pTmpBuf.data(), pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2488 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2489 window->DrawText(Font, 32, uY, 0, pTmpBuf.data(), 0, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2490 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2491
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2492
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2493 //----- (0042EB8D) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2494 void GUIMessageQueue::AddMessageImpl(UIMessageType msg, int param, unsigned int a4, const char *file, int line)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2495 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2496 //Log::Warning(L"%s @ (%S %u)", UIMessage2String(msg), file, line);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2497 if (uNumMessages < 40)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2498 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2499 files[uNumMessages] = file;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2500 lines[uNumMessages] = line;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2501
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2502 pMessages[uNumMessages].eType = msg;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2503 pMessages[uNumMessages].param = param;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2504 pMessages[uNumMessages++].field_8 = a4;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2505 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2506 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2507
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2508 //----- (004637E0) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2509 char sub_4637E0_is_there_popup_onscreen()
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2510 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2511 return dword_507BF0_is_there_popup_onscreen == 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2512 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2513 // 507BF0: using guessed type int dword_507BF0_is_there_popup_onscreen;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2514
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2515 //----- (00417AD4) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2516 unsigned int GetSkillColor(unsigned int uPlayerClass, PLAYER_SKILL_TYPE uPlayerSkillType, signed int skill_level)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2517 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2518 switch (uPlayerClass % 4)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2519 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2520 case 0:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2521 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2522 if (byte_4ED970_skill_learn_ability_by_class_table[uPlayerClass][uPlayerSkillType] >= skill_level)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2523 return ui_character_skillinfo_can_learn;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2524 if (byte_4ED970_skill_learn_ability_by_class_table[uPlayerClass + 1][uPlayerSkillType] < skill_level &&
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2525 byte_4ED970_skill_learn_ability_by_class_table[uPlayerClass + 2][uPlayerSkillType] < skill_level)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2526 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2527 if (byte_4ED970_skill_learn_ability_by_class_table[uPlayerClass + 3][uPlayerSkillType] < skill_level)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2528 return ui_character_skillinfo_cant_learn;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2529 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2530 return ui_character_skillinfo_can_learn_gm;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2531 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2532 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2533
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2534 case 1:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2535 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2536 if (byte_4ED970_skill_learn_ability_by_class_table[uPlayerClass][uPlayerSkillType] >= skill_level)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2537 return ui_character_skillinfo_can_learn;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2538 if (byte_4ED970_skill_learn_ability_by_class_table[uPlayerClass + 1][uPlayerSkillType] < skill_level)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2539 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2540 if (byte_4ED970_skill_learn_ability_by_class_table[uPlayerClass + 2][uPlayerSkillType] < skill_level)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2541 return ui_character_skillinfo_cant_learn;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2542 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2543 return ui_character_skillinfo_can_learn_gm;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2544 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2545 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2546
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2547 case 2:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2548 case 3:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2549 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2550 if (byte_4ED970_skill_learn_ability_by_class_table[uPlayerClass][uPlayerSkillType] < skill_level)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2551 return ui_character_skillinfo_cant_learn;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2552 return ui_character_skillinfo_can_learn;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2553 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2554 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2555 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2556 Error("Invalid player class: %u", uPlayerClass);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2557 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2558
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2559 //----- (0040F92A) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2560 void __fastcall ZBuffer_DoFill2(int *pZBuffer, Texture *a2, int a3)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2561 {//срабатывает в покупке в магазине
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2562 void *v4; // eax@3
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2563 //int *v5; // edi@5
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2564 // int v6; // ecx@6
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2565 // int v9; // [sp+18h] [bp-4h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2566
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2567 if (pIcons_LOD->dword_011BA4 && a2->uDecompressedSize)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2568 v4 = a2->UnzipPalette();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2569 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2570 v4 = a2->pLevelOfDetail0_prolly_alpha_mask;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2571 //v5 = pZBuffer;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2572 for (uint i = 0; i < a2->uTextureHeight; i++)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2573 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2574 for (uint j = 0; j < a2->uTextureWidth; j++)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2575 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2576 *pZBuffer = a3;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2577 ++pZBuffer;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2578 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2579 pZBuffer += window->GetWidth() - a2->uTextureWidth;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2580 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2581 if (pIcons_LOD->dword_011BA4)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2582 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2583 if (a2->uDecompressedSize)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2584 free(v4);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2585 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2586 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2587
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2588
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
2589 // 4E28F8: using guessed type int current_screen_type;
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2590
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2591 //----- (0040F82D) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2592 void __fastcall ZBuffer_Fill(int *pZBuffer, int uTextureId, int iZValue)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2593 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2594 assert(uTextureId != -1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2595 ZBuffer_DoFill(pZBuffer, pIcons_LOD->GetTexture(uTextureId), iZValue);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2596 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2597
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2598 //----- (0040F89C) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2599 void __fastcall ZBuffer_DoFill(int *pZBuffer, Texture *pTex, int uZValue)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2600 {//срабатывает при продаже в магазине
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2601 void *v3; // eax@3
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2602 //void *v4; // esi@5
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2603 //int *v5; // edi@5
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2604 //int v6; // eax@5
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2605 // int v7; // ecx@6
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2606 // int v11; // [sp+18h] [bp-8h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2607 //void *v12; // [sp+1Ch] [bp-4h]@5
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2608
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2609 if (pIcons_LOD->dword_011BA4 && pTex->uDecompressedSize)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2610 v3 = pTex->UnzipPalette();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2611 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2612 v3 = pTex->pLevelOfDetail0_prolly_alpha_mask;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2613 //v12 = v3;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2614 //v4 = v3;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2615 //v5 = pZBuffer;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2616 //v6 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2617 for (uint i = 0; i < pTex->uTextureHeight; i++)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2618 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2619 for (uint j = 0; j < pTex->uTextureWidth; j++)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2620 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2621 //LOBYTE(v6) = *(char *)v4;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2622 //v4 = (char *)v4 + 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2623 //if ( v6 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2624 *pZBuffer = uZValue;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2625 ++pZBuffer;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2626 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2627 pZBuffer += window->GetWidth() - pTex->uTextureWidth;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2628 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2629 if (pIcons_LOD->dword_011BA4)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2630 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2631 if (pTex->uDecompressedSize)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2632 free(v3);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2633 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2634 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2635
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2636 //----- (004BC49B) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2637 void OnSelectNPCDialogueOption(DIALOGUE_TYPE newDialogueType)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2638 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2639 NPCData *speakingNPC; // ebp@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2640 int npc_event_id; // ecx@10
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2641 char *v13; // [sp-8h] [bp-18h]@60
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2642
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2643 speakingNPC = GetNPCData(sDialogue_SpeakingActorNPC_ID);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2644 uDialogueType = newDialogueType;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2645 if (!speakingNPC->uFlags)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2646 speakingNPC->uFlags = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2647 if (newDialogueType == DIALOGUE_PROFESSION_DETAILS)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2648 dialogue_show_profession_details = ~dialogue_show_profession_details;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2649 else if (newDialogueType == DIALOGUE_76)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2650 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2651 if (speakingNPC->Hired())
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2652 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2653 if ((signed int)pNPCStats->uNumNewNPCs > 0)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2654 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2655 for (uint i = 0; i < (unsigned int)pNPCStats->uNumNewNPCs; ++i)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2656 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2657 if (pNPCStats->pNewNPCData[i].uFlags & 0x80 && !strcmp(speakingNPC->pName, pNPCStats->pNewNPCData[i].pName))
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2658 pNPCStats->pNewNPCData[i].uFlags &= 0x7Fu;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2659 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2660 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2661 if (pParty->pHirelings[0].pName && !_stricmp(pParty->pHirelings[0].pName, speakingNPC->pName))
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2662 memset(&pParty->pHirelings[0], 0, sizeof(NPCData));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2663 else if (pParty->pHirelings[1].pName && !_stricmp(pParty->pHirelings[1].pName, speakingNPC->pName))
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2664 memset(&pParty->pHirelings[1], 0, sizeof(NPCData));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2665 pParty->hirelingScrollPosition = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2666 pParty->CountHirelings();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2667 dword_591084 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2668 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 1, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2669 dword_7241C8 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2670 return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2671 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2672 if (pParty->pHirelings[0].pName && pParty->pHirelings[1].pName)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2673 ShowStatusBarString(pGlobalTXT_LocalizationStrings[533], 2);// ""I cannot join you, you're party is full""
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2674 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2675 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2676 if (speakingNPC->uProfession != 51) //burglars have no hiring price
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2677 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2678 if (pParty->uNumGold < pNPCStats->pProfessions[speakingNPC->uProfession].uHirePrice)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2679 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2680 ShowStatusBarString(pGlobalTXT_LocalizationStrings[155], 2);// "You don't have enough gold"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2681 dialogue_show_profession_details = false;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2682 uDialogueType = 13;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2683 if (uActiveCharacter)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2684 pPlayers[uActiveCharacter]->PlaySound(SPEECH_NotEnoughGold, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2685 if (!dword_7241C8)
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
2686 pEngine->Draw();
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2687 dword_7241C8 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2688 return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2689 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2690 Party::TakeGold(pNPCStats->pProfessions[speakingNPC->uProfession].uHirePrice);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2691 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2692 LOBYTE(speakingNPC->uFlags) |= 0x80u;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2693 if (pParty->pHirelings[0].pName)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2694 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2695 memcpy(&pParty->pHirelings[1], speakingNPC, sizeof(pParty->pHirelings[1]));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2696 v13 = pParty->pHireling2Name;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2697 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2698 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2699 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2700 memcpy(&pParty->pHirelings[0], speakingNPC, sizeof(pParty->pHirelings[0]));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2701 v13 = pParty->pHireling1Name;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2702 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2703 strcpy(v13, speakingNPC->pName);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2704 pParty->hirelingScrollPosition = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2705 pParty->CountHirelings();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2706 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 1, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2707 if (sDialogue_SpeakingActorNPC_ID >= 0)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2708 pDialogue_SpeakingActor->uAIState = Removed;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2709 if (uActiveCharacter)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2710 pPlayers[uActiveCharacter]->PlaySound(SPEECH_61, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2711 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2712 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2713 else if ((signed int)newDialogueType > DIALOGUE_84 && (signed int)newDialogueType <= DIALOGUE_ARENA_SELECT_CHAMPION) //выбор уровня сложности боя
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2714 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2715 ArenaFight();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2716 return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2717 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2718 else if (newDialogueType == DIALOGUE_USE_NPC_ABILITY)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2719 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2720 if (UseNPCSkill((NPCProf)speakingNPC->uProfession) == 0)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2721 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2722 if (speakingNPC->uProfession != GateMaster)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2723 speakingNPC->bHasUsedTheAbility = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2724 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 1, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2725 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2726 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2727 ShowStatusBarString(pGlobalTXT_LocalizationStrings[140], 2); //"Your packs are already full!"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2728 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2729 else if (newDialogueType == DIALOGUE_13)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2730 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2731 if (!speakingNPC->Hired())
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2732 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2733 sub_4B3E1E();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2734 dialogue_show_profession_details = false;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2735 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2736 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2737 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2738 for (uint i = 0; i < (signed int)pNPCStats->uNumNewNPCs; ++i)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2739 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2740 if (pNPCStats->pNewNPCData[i].uFlags & 0x80 && !strcmp(speakingNPC->pName, pNPCStats->pNewNPCData[i].pName))
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2741 pNPCStats->pNewNPCData[i].uFlags &= 0x7Fu;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2742 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2743 if (pParty->pHirelings[0].pName && !_stricmp(pParty->pHirelings[0].pName, speakingNPC->pName))
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2744 memset(&pParty->pHirelings[0], 0, sizeof(NPCData));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2745 else if (pParty->pHirelings[1].pName && !_stricmp(pParty->pHirelings[1].pName, speakingNPC->pName))
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2746 memset(&pParty->pHirelings[1], 0, sizeof(NPCData));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2747 pParty->hirelingScrollPosition = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2748 pParty->CountHirelings();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2749 dword_591084 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2750 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 1, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2751 dword_7241C8 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2752 return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2753 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2754 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2755 else if (newDialogueType >= DIALOGUE_EVT_A && newDialogueType <= DIALOGUE_EVT_F)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2756 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2757 switch (newDialogueType)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2758 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2759 case DIALOGUE_EVT_A: npc_event_id = speakingNPC->evt_A; break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2760 case DIALOGUE_EVT_B: npc_event_id = speakingNPC->evt_B; break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2761 case DIALOGUE_EVT_C: npc_event_id = speakingNPC->evt_C; break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2762 case DIALOGUE_EVT_D: npc_event_id = speakingNPC->evt_D; break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2763 case DIALOGUE_EVT_E: npc_event_id = speakingNPC->evt_E; break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2764 case DIALOGUE_EVT_F: npc_event_id = speakingNPC->evt_F; break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2765 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2766 if ((npc_event_id >= 200) && (npc_event_id <= 310))
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2767 _4B3FE5_training_dialogue(npc_event_id); //200-310
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2768 else if ((npc_event_id >= 400) && (npc_event_id <= 410))
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2769 { //400-410
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2770 dword_F8B1D8 = newDialogueType;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2771 DrawJoinGuildWindow(npc_event_id - 400);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2772 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2773 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2774 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2775 switch (npc_event_id)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2776 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2777 case 139:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2778 OracleDialogue();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2779 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2780 case 311:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2781 CheckBountyRespawnAndAward();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2782 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2783 case 399:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2784 Arena_SelectionFightLevel();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2785 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2786 default:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2787 activeLevelDecoration = (LevelDecoration*)1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2788 current_npc_text = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2789 EventProcessor(npc_event_id, 0, 1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2790 activeLevelDecoration = nullptr;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2791 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2792 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2793 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2794 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2795 if (!dword_7241C8)
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2532
diff changeset
2796 pEngine->Draw();
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2797 dword_7241C8 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2798 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2799
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2800 //----- (004B3E1E) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2801 void sub_4B3E1E()
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2802 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2803 NPCData *v0; // ST40_4@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2804 signed int v1; // edi@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2805 //GUIWindow *v2; // ecx@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2806
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2807 __debugbreak();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2808 v0 = GetNPCData(sDialogue_SpeakingActorNPC_ID);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2809 v1 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2810 pDialogueWindow->eWindowType = WINDOW_MainMenu;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2811 pDialogueWindow->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2812 pDialogueWindow = GUIWindow::Create(0, 0, window->GetWidth(), window->GetHeight(), WINDOW_Dialogue, 1, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2813 if (pNPCStats->pProfessions[v0->uProfession].pBenefits)//*(&pNPCStats->field_13A5C + 5 * v0->uProfession) )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2814 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2815 pDialogueWindow->CreateButton(480, 160, 140, 28, 1, 0, UIMSG_SelectNPCDialogueOption, 77, 0, pGlobalTXT_LocalizationStrings[407], 0);//Подробнее
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2816 v1 = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2817 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2818 pDialogueWindow->CreateButton(480, 30 * v1 + 160, 140, 30, 1, 0, UIMSG_SelectNPCDialogueOption, 76, 0, pGlobalTXT_LocalizationStrings[406], 0);//Нанять
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2819 pDialogueWindow->_41D08F_set_keyboard_control_group(v1 + 1, 1, 0, 1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2820 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2821
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2822 //----- (004B2001) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2823 void __fastcall ClickNPCTopic(signed int uMessageParam)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2824 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2825 //signed int v1; // eax@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2826 NPCData *pCurrentNPCInfo; // ebp@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2827 int pEventNumber; // ecx@8
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2828 Player *v4; // esi@20
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2829 //int v5; // eax@28
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2830 //int v6; // eax@31
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2831 //int v7; // eax@34
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2832 //int v8; // eax@37
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2833 //int v9; // eax@40
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2834 //unsigned int v10; // eax@43
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2835 char *v12; // eax@53
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2836 char *v13; // eax@56
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2837 char *v14; // eax@57
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2838 char *v15; // eax@58
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2839 //unsigned int v16; // ebp@62
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2840 char *v17; // ecx@63
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2841 char *v18; // eax@65
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2842 // const char *v19; // ecx@68
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2843 //unsigned int v20; // eax@69
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2844 signed int pPrice; // ecx@70
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2845 char *v22; // [sp-Ch] [bp-18h]@73
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2846 //int v23; // [sp-8h] [bp-14h]@49
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2847 char *v24; // [sp-8h] [bp-14h]@73
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2848 //int v25; // [sp-4h] [bp-10h]@49
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2849
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2850 uDialogueType = uMessageParam + 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2851 pCurrentNPCInfo = HouseNPCData[pDialogueNPCCount - ((dword_591080 != 0) ? 1 : 0)];//- 1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2852 if (uMessageParam <= 24)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2853 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2854 switch (uMessageParam)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2855 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2856 case 13:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2857 current_npc_text = pNPCStats->pProfessions[pCurrentNPCInfo->uProfession].pJoinText;//(char *)*(&pNPCStats->field_13A64 + 5 * v2->uProfession);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2858 current_npc_text = BuildDialogueString(current_npc_text, uActiveCharacter - 1, 0, 0, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2859 NPCHireableDialogPrepare();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2860 dialogue_show_profession_details = false;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2861 BackToHouseMenu();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2862 return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2863 case 19:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2864 pEventNumber = pCurrentNPCInfo->evt_A;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2865 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2866 case 20:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2867 pEventNumber = pCurrentNPCInfo->evt_B;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2868 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2869 case 21:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2870 pEventNumber = pCurrentNPCInfo->evt_C;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2871 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2872 case 22:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2873 pEventNumber = pCurrentNPCInfo->evt_D;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2874 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2875 case 23:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2876 pEventNumber = pCurrentNPCInfo->evt_E;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2877 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2878 case 24:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2879 pEventNumber = pCurrentNPCInfo->evt_F;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2880 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2881 default:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2882 BackToHouseMenu();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2883 return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2884 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2885 /*switch ( pEventNumber )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2886 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2887 case 139:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2888 OracleDialogue();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2889 goto _return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2890 case 311:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2891 CheckBountyRespawnAndAward();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2892 goto _return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2893 }*/
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2894 if (pEventNumber < 200 || pEventNumber > 310)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2895 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2896 if (pEventNumber < 400 || pEventNumber > 410)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2897 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2898 if (pEventNumber == 139)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2899 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2900 OracleDialogue();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2901 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2902 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2903 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2904 if (pEventNumber == 311)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2905 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2906 CheckBountyRespawnAndAward();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2907 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2908 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2909 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2910 current_npc_text = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2911 activeLevelDecoration = (LevelDecoration*)1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2912 EventProcessor(pEventNumber, 0, 1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2913 activeLevelDecoration = nullptr;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2914 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2915 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2916 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2917 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2918 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2919 dword_F8B1D8 = uMessageParam;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2920 DrawJoinGuildWindow(pEventNumber - 400);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2921 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2922 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2923 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2924 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2925 _4B3FE5_training_dialogue(pEventNumber);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2926 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2927 BackToHouseMenu();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2928 return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2929 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2930 if (uMessageParam != 76)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2931 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2932 if (uMessageParam == 77)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2933 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2934 //v16 = pCurrentNPCInfo->uProfession;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2935 __debugbreak(); // probably hirelings found in buildings, not present in MM7, changed "pCurrentNPCInfo->uProfession - 1" to "pCurrentNPCInfo->uProfession", have to check in other versions whether it's ok
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2936 if (dialogue_show_profession_details)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2937 v17 = pNPCStats->pProfessions[pCurrentNPCInfo->uProfession].pJoinText;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2938 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2939 v17 = pNPCStats->pProfessions[pCurrentNPCInfo->uProfession].pBenefits;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2940 current_npc_text = v17;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2941 v18 = BuildDialogueString(v17, uActiveCharacter - 1, 0, 0, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2942 dialogue_show_profession_details = ~dialogue_show_profession_details;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2943 current_npc_text = v18;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2944 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2945 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2946 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2947 if (uMessageParam == 79)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2948 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2949 if (contract_approved)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2950 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2951 Party::TakeGold(gold_transaction_amount);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2952 if (uActiveCharacter)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2953 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2954 v12 = (char *)&pPlayers[uActiveCharacter]->pActiveSkills[dword_F8B1AC_award_bit_number];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2955 *(short *)v12 &= 0x3Fu;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2956 switch (dword_F8B1B0_MasteryBeingTaught)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2957 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2958 case 2:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2959 v15 = (char *)&pPlayers[uActiveCharacter]->pActiveSkills[dword_F8B1AC_award_bit_number];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2960 *v15 |= 0x40u;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2961 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2962 case 3:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2963 v14 = (char *)&pPlayers[uActiveCharacter]->pActiveSkills[dword_F8B1AC_award_bit_number];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2964 *v14 |= 0x80u;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2965 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2966 case 4:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2967 v13 = (char *)&pPlayers[uActiveCharacter]->pActiveSkills[dword_F8B1AC_award_bit_number];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2968 v13[1] |= 1u;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2969 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2970 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2971 pPlayers[uActiveCharacter]->PlaySound(SPEECH_85, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2972 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2973 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 1, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2974 /*if ( (signed int)pMessageQueue_50CBD0->uNumMessages < 40 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2975 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2976 pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].eType = UIMSG_Escape;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2977 pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].param = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2978 *(&pMessageQueue_50CBD0->uNumMessages + 3 * pMessageQueue_50CBD0->uNumMessages + 3) = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2979 ++pMessageQueue_50CBD0->uNumMessages;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2980 }*/
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2981 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2982 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2983 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2984 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2985 if (uMessageParam == 82 && contract_approved) //join guild
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2986 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2987 Party::TakeGold(gold_transaction_amount);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2988 v4 = pParty->pPlayers.data();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2989 do
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2990 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2991 v4->SetVariable(VAR_Award, dword_F8B1AC_award_bit_number);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2992 ++v4;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2993 } while ((signed int)v4 < (signed int)pParty->pHirelings.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2994 switch (dword_F8B1D8)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2995 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2996 case 19:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2997 pEventNumber = pCurrentNPCInfo->evt_A;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2998 if (pEventNumber >= 400 && pEventNumber <= 416)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
2999 pCurrentNPCInfo->evt_A = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3000 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3001 case 20:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3002 pEventNumber = pCurrentNPCInfo->evt_B;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3003 if (pEventNumber >= 400 && pEventNumber <= 416)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3004 pCurrentNPCInfo->evt_B = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3005 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3006 case 21:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3007 pEventNumber = pCurrentNPCInfo->evt_C;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3008 if (pEventNumber >= 400 && pEventNumber <= 416)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3009 pCurrentNPCInfo->evt_C = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3010 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3011 case 22:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3012 pEventNumber = pCurrentNPCInfo->evt_D;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3013 if (pEventNumber >= 400 && pEventNumber <= 416)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3014 pCurrentNPCInfo->evt_D = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3015 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3016 case 23:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3017 pEventNumber = pCurrentNPCInfo->evt_E;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3018 if (pEventNumber >= 400 && pEventNumber <= 416)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3019 pCurrentNPCInfo->evt_E = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3020 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3021 case 24:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3022 pEventNumber = pCurrentNPCInfo->evt_F;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3023 if (pEventNumber >= 400 && pEventNumber <= 416)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3024 pCurrentNPCInfo->evt_F = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3025 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3026 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3027 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 1, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3028 /*if ( (signed int)pMessageQueue_50CBD0->uNumMessages < 40 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3029 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3030 pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].eType = UIMSG_Escape;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3031 pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].param = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3032 *(&pMessageQueue_50CBD0->uNumMessages + 3 * pMessageQueue_50CBD0->uNumMessages + 3) = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3033 ++pMessageQueue_50CBD0->uNumMessages;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3034 }*/
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3035 //v11 = uActiveCharacter;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3036 if (uActiveCharacter)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3037 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3038 pPlayers[uActiveCharacter]->PlaySound((PlayerSpeech)SPEECH_86, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3039 BackToHouseMenu();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3040 return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3041 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3042 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3043 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3044 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3045 BackToHouseMenu();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3046 return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3047 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3048 if (pParty->pHirelings[0].pName && pParty->pHirelings[1].pName)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3049 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3050 ShowStatusBarString(pGlobalTXT_LocalizationStrings[533], 2);// ""I cannot join you, you're party is full""
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3051 BackToHouseMenu();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3052 return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3053 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3054
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3055
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3056 if (pCurrentNPCInfo->uProfession != 51) //burglars have no hiring price
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3057 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3058 __debugbreak(); // probably hirelings found in buildings, not present in MM7, changed "pCurrentNPCInfo->uProfession - 1" to "pCurrentNPCInfo->uProfession", have to check in other versions whether it's ok
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3059 pPrice = pNPCStats->pProfessions[pCurrentNPCInfo->uProfession].uHirePrice;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3060 if (pParty->uNumGold < (unsigned int)pPrice)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3061 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3062 ShowStatusBarString(pGlobalTXT_LocalizationStrings[155], 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3063 dialogue_show_profession_details = false;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3064 uDialogueType = 13;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3065 current_npc_text = pNPCStats->pProfessions[pCurrentNPCInfo->uProfession].pJoinText;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3066 current_npc_text = BuildDialogueString(current_npc_text, uActiveCharacter - 1, 0, 0, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3067 if (uActiveCharacter)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3068 pPlayers[uActiveCharacter]->PlaySound(SPEECH_NotEnoughGold, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3069 ShowStatusBarString(pGlobalTXT_LocalizationStrings[155], 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3070 BackToHouseMenu();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3071 return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3072 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3073 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3074 Party::TakeGold(pPrice);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3075 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3076 //LOBYTE(v2->uFlags) |= 0x80u;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3077 pCurrentNPCInfo->uFlags |= 128;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3078 pParty->hirelingScrollPosition = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3079 pParty->CountHirelings();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3080 if (pParty->pHirelings[0].pName)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3081 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3082 memcpy(&pParty->pHirelings[1], pCurrentNPCInfo, sizeof(pParty->pHirelings[1]));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3083 v24 = pCurrentNPCInfo->pName;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3084 v22 = pParty->pHireling2Name;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3085 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3086 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3087 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3088 memcpy(pParty->pHirelings.data(), pCurrentNPCInfo, 0x4Cu);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3089 v24 = pCurrentNPCInfo->pName;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3090 v22 = pParty->pHireling1Name;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3091 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3092 strcpy(v22, v24);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3093 pParty->hirelingScrollPosition = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3094 pParty->CountHirelings();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3095 PrepareHouse((HOUSE_ID)(int)window_SpeakInHouse->ptr_1C);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3096 dialog_menu_id = HOUSE_DIALOGUE_MAIN;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3097
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3098 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 1, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3099 /*if ( (signed int)pMessageQueue_50CBD0->uNumMessages < 40 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3100 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3101 pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].eType = UIMSG_Escape;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3102 pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].param = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3103 *(&pMessageQueue_50CBD0->uNumMessages + 3 * pMessageQueue_50CBD0->uNumMessages + 3) = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3104 ++pMessageQueue_50CBD0->uNumMessages;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3105 }*/
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3106 if (uActiveCharacter)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3107 pPlayers[uActiveCharacter]->PlaySound((PlayerSpeech)61, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3108
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3109 _return:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3110 BackToHouseMenu();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3111 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3112
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3113 //----- (004B3FE5) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3114 //Originally called _4B254D_SkillMasteryTeacher to have contract_approved assigned, to be able to set some button name.
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3115 //But it the name gets immediately overwritten
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3116 void _4B3FE5_training_dialogue(int a4)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3117 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3118 const char *v2; // edi@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3119
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3120 //__debugbreak();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3121 uDialogueType = DIALOGUE_SKILL_TRAINER;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3122 current_npc_text = (char *)pNPCTopics[a4 + 168].pText;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3123 _4B254D_SkillMasteryTeacher(a4); //might be needed because of contract_approved ?
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3124 pDialogueWindow->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3125 pDialogueWindow = GUIWindow::Create(0, 0, window->GetWidth(), 350, WINDOW_MainMenu, a4, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3126 pBtn_ExitCancel = pDialogueWindow->CreateButton(471, 445, 169, 35, 1, 0, UIMSG_Escape, 0, 0,
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3127 pGlobalTXT_LocalizationStrings[34], pIcons_LOD->GetTexture(uExitCancelTextureId), 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3128 pDialogueWindow->CreateButton(0, 0, 0, 0, 1, 0, UIMSG_BuyInShop_Identify_Repair, 0, 0, "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3129 v2 = "";
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3130 if (contract_approved)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3131 v2 = pGlobalTXT_LocalizationStrings[535];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3132 pDialogueWindow->CreateButton(480, 160, 0x8Cu, 0x1Eu, 1, 0, UIMSG_ClickNPCTopic, 0x4Fu, 0, v2, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3133 pDialogueWindow->_41D08F_set_keyboard_control_group(1, 1, 0, 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3134 dialog_menu_id = HOUSE_DIALOGUE_OTHER;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3135 }
2528
e72e62ec9273 GUIWindow::DrawText: some cleanings
a.parshin
parents: 2525
diff changeset
3136
2502
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3137 //----- (004B1ECE) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3138 void OracleDialogue()
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3139 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3140 __int16 *v0; // edi@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3141 signed int v4; // eax@9
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3142 int v5; // ebx@11
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3143 signed int v8; // edi@14
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3144 ItemGen *v9; // [sp+Ch] [bp-Ch]@11
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3145 signed int v10; // [sp+10h] [bp-8h]@13
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3146 int v11; // [sp+14h] [bp-4h]@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3147
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3148 contract_approved = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3149 v11 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3150 uDialogueType = 84;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3151 current_npc_text = (char *)pNPCTopics[667].pText;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3152 v0 = _4F0882_evt_VAR_PlayerItemInHands_vals.data();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3153 //while ( 1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3154 for (uint i = 0; i <= 53; i++)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3155 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3156 if ((unsigned __int16)_449B57_test_bit(pParty->_quest_bits, *v0))
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3157 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3158 //v1 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3159 //v2 = pParty->pPlayers.data();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3160 for (uint pl = 0; pl < 4; pl++)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3161 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3162 //LOBYTE(v3) = pParty->pPlayers[pl].CompareVariable(VAR_PlayerItemInHands, *(v0+1));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3163 if (pParty->pPlayers[pl].CompareVariable(VAR_PlayerItemInHands, *(v0 + 1)))
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3164 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3165 //++v2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3166 //++v1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3167 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3168 //while ( (signed int)v2 < (signed int)pParty->pHirelings.data() );
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3169 //if ( v1 == 4 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3170 //break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3171 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3172 ++v11;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3173 //v0 += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3174 //if ( v0 > &_4F0882_evt_VAR_PlayerItemInHands_vals[53] )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3175 //break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3176 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3177 if (v0 <= &_4F0882_evt_VAR_PlayerItemInHands_vals[53])
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3178 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3179 current_npc_text = (char *)pNPCTopics[666].pText; // Here's %s that you lost. Be careful
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3180 v4 = _4F0882_evt_VAR_PlayerItemInHands_vals[2 * v11];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3181 contract_approved = _4F0882_evt_VAR_PlayerItemInHands_vals[2 * v11];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3182 pParty->pPlayers[0].AddVariable(VAR_PlayerItemInHands, v4);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3183 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3184 if (contract_approved == 601)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3185 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3186 v5 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3187 //v12 = pParty->pPlayers.data();//[0].uClass;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3188 v9 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3189 //while ( 1 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3190 for (uint i = 0; i < 4; i++)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3191 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3192 if (pParty->pPlayers[i].classType == PLAYER_CLASS_LICH)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3193 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3194 v10 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3195 //v6 = pParty->pPlayers.data();//[0].pInventoryItems[0].field_1A;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3196 for (uint pl = 0; pl < 4; pl++)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3197 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3198 for (v8 = 0; v8 < 126; v8++)//138
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3199 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3200 if (pParty->pPlayers[pl].pInventoryItemList[v8].uItemID == ITEM_LICH_JAR_FULL)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3201 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3202 if (!pParty->pPlayers[pl].pInventoryItemList[v8].uHolderPlayer)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3203 v9 = &pParty->pPlayers[pl].pInventoryItemList[v8];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3204 if (pParty->pPlayers[pl].pInventoryItemList[v8].uHolderPlayer == v5)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3205 v10 = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3206 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3207 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3208 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3209 if (!v10)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3210 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3211 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3212 // ++v12;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3213 ++v5;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3214 // if ( v12 > &pParty->pPlayers[3] )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3215 // return;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3216 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3217 if (v9)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3218 v9->uHolderPlayer = v5;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3219 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3220 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3221
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3222 //----- (004B46A5) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3223 void __fastcall DrawTextAtStatusBar(const char *Str, int a5)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3224 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3225 pRenderer->DrawTextureRGB(0, 352, pTexture_StatusBar);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3226 pPrimaryWindow->DrawText(pFontLucida, pFontLucida->AlignText_Center(450, Str) + 11, 357, a5, Str, 0, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3227 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3228
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3229 //----- (004BBA85) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3230 void CheckBountyRespawnAndAward()
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3231 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3232 int i; // eax@2
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3233 int rand_monster_id; // edx@3
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3234
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3235 uDialogueType = 83;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3236 pDialogueWindow->Release();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3237 pDialogueWindow = GUIWindow::Create(0, 0, window->GetWidth(), 350, WINDOW_MainMenu, 0, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3238 pBtn_ExitCancel = pDialogueWindow->CreateButton(471, 445, 169, 35, 1, 0, UIMSG_Escape, 0, 0, pGlobalTXT_LocalizationStrings[34],// "Cancel"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3239 pIcons_LOD->GetTexture(uExitCancelTextureId), 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3240 pDialogueWindow->CreateButton(0, 0, 0, 0, 1, 0, UIMSG_BuyInShop_Identify_Repair, 0, 0, "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3241 pDialogueWindow->CreateButton(480, 160, 140, 30, 1, 0, UIMSG_0, 83, 0, "", 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3242 pDialogueWindow->_41D08F_set_keyboard_control_group(1, 1, 0, 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3243 dialog_menu_id = HOUSE_DIALOGUE_OTHER;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3244 //get new monster for hunting
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3245 if (pParty->PartyTimes.bountyHunting_next_generation_time[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] < (signed __int64)pParty->uTimePlayed)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3246 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3247 pParty->monster_for_hunting_killed[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] = false;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3248 pParty->PartyTimes.bountyHunting_next_generation_time[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] = (signed __int64)((double)(0x12750000 * (pParty->uCurrentMonth + 12i64 * pParty->uCurrentYear - 14015)) * 0.033333335);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3249 for (i = rand();; i = rand())
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3250 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3251 rand_monster_id = i % 258 + 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3252 pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] = rand_monster_id;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3253 if ((unsigned __int16)rand_monster_id < 0x73u || (unsigned __int16)rand_monster_id > 0x84u)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3254 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3255 if (((unsigned __int16)rand_monster_id < 0xEBu || (unsigned __int16)rand_monster_id > 0xFCu)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3256 && ((unsigned __int16)rand_monster_id < 0x85u || (unsigned __int16)rand_monster_id > 0x96u)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3257 && ((unsigned __int16)rand_monster_id < 0x97u || (unsigned __int16)rand_monster_id > 0xBAu)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3258 && ((unsigned __int16)rand_monster_id < 0xC4u || (unsigned __int16)rand_monster_id > 0xC6u))
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3259 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3260 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3261 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3262 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3263 bountyHunting_monster_id_for_hunting = pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3264 if (!pParty->monster_for_hunting_killed[(int)((char *)window_SpeakInHouse->ptr_1C - 102)])
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3265 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3266 bountyHunting_text = pNPCTopics[351].pText;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3267 if (!pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)])
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3268 bountyHunting_text = pNPCTopics[353].pText;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3269 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3270 else//get prize
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3271 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3272 if (pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)])
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3273 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3274 pParty->PartyFindsGold(100 * pMonsterStats->pInfos[(unsigned __int16)pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)]].uLevel, 0);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3275 for (uint i = 0; i < 4; ++i)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3276 pParty->pPlayers[i].SetVariable(VAR_Award, 86);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3277 pParty->uNumBountiesCollected += 100 * pMonsterStats->pInfos[pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)]].uLevel;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3278 pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3279 pParty->monster_for_hunting_killed[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] = false;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3280 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3281 bountyHunting_text = pNPCTopics[352].pText;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3282 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3283 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3284
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3285 //----- (004B254D) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3286 const char * _4B254D_SkillMasteryTeacher(int trainerInfo)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3287 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3288 int teacherLevel; // edx@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3289 int skillBeingTaught; // ecx@1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3290 int pClassType; // eax@7
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3291 int currClassMaxMastery; // eax@7
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3292 int pointsInSkillWOutMastery; // ebx@7
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3293 int classBaseId; // eax@8
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3294 unsigned int skillMastery; // eax@29
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3295 unsigned __int16 pointsInSkill; // [sp+1Ch] [bp-10h]@7
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3296 int masteryLevelBeingTaught; // [sp+24h] [bp-8h]@7
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3297
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3298 contract_approved = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3299 teacherLevel = (trainerInfo - 200) % 3;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3300 skillBeingTaught = (trainerInfo - 200) / 3;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3301 Player* activePlayer = pPlayers[uActiveCharacter];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3302 pClassType = activePlayer->classType;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3303 currClassMaxMastery = byte_4ED970_skill_learn_ability_by_class_table[pClassType][skillBeingTaught];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3304 masteryLevelBeingTaught = teacherLevel + 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3305 dword_F8B1B0_MasteryBeingTaught = masteryLevelBeingTaught;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3306 if (currClassMaxMastery < masteryLevelBeingTaught)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3307 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3308 classBaseId = pClassType - pClassType % 4;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3309 if (byte_4ED970_skill_learn_ability_by_class_table[classBaseId + 1][skillBeingTaught] >= masteryLevelBeingTaught)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3310 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[633], pClassNames[classBaseId + 1]);//Вы должны достичь звания %s для обучения этому уровню навыка. You have to be promoted to %s to learn this skill level.
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3311 else if (byte_4ED970_skill_learn_ability_by_class_table[classBaseId + 2][skillBeingTaught] >= masteryLevelBeingTaught
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3312 && byte_4ED970_skill_learn_ability_by_class_table[classBaseId + 3][skillBeingTaught] >= masteryLevelBeingTaught)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3313 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[634], pClassNames[classBaseId + 2], pClassNames[classBaseId + 3]);//Вы должны достичь звания %s или %s для обучения этому уровню навыка. You have to be promoted to %s or %s to learn this skill level.
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3314 else if (byte_4ED970_skill_learn_ability_by_class_table[classBaseId + 2][skillBeingTaught] >= masteryLevelBeingTaught)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3315 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[633], pClassNames[classBaseId + 2]);//Вы должны достичь звания %s для обучения этому уровню навыка. You have to be promoted to %s to learn this skill level.
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3316 else if (byte_4ED970_skill_learn_ability_by_class_table[classBaseId + 3][skillBeingTaught] >= masteryLevelBeingTaught)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3317 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[633], pClassNames[classBaseId + 3]);//Вы должны достичь звания %s для обучения этому уровню навыка. You have to be promoted to %s to learn this skill level.
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3318 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3319 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[632], pClassNames[pClassType]);//Этот уровень навыка не может быть постигнут классом %s. This skill level can not be learned by the %s class.
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3320 return pTmpBuf.data();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3321 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3322 if (!activePlayer->CanAct())
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3323 return pNPCTopics[122].pText; //Not in your condition!
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3324 pointsInSkill = activePlayer->pActiveSkills[skillBeingTaught];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3325 pointsInSkillWOutMastery = pointsInSkill & 0x3F;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3326 if (!pointsInSkillWOutMastery)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3327 return pNPCTopics[131].pText; //You must know the skill before you can become an expert in it!
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3328 skillMastery = SkillToMastery(pointsInSkill);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3329 if ((signed int)skillMastery > teacherLevel + 1)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3330 return pNPCTopics[teacherLevel + 128].pText; // You are already an SKILLLEVEL in this skill.
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3331 dword_F8B1AC_award_bit_number = skillBeingTaught;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3332 if (masteryLevelBeingTaught == 2 && pointsInSkillWOutMastery < 4
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3333 || masteryLevelBeingTaught == 3 && pointsInSkillWOutMastery < 7
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3334 || masteryLevelBeingTaught == 4 && pointsInSkillWOutMastery < 10
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3335 )
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3336 return pNPCTopics[127].pText; //"You don't meet the requirements, and cannot be taught until you do."
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3337 switch (dword_F8B1AC_award_bit_number)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3338 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3339 case PLAYER_SKILL_STAFF:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3340 case PLAYER_SKILL_SWORD:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3341 case PLAYER_SKILL_DAGGER:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3342 case PLAYER_SKILL_AXE:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3343 case PLAYER_SKILL_SPEAR:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3344 case PLAYER_SKILL_BOW:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3345 case PLAYER_SKILL_MACE:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3346 case PLAYER_SKILL_ARMSMASTER:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3347 switch (masteryLevelBeingTaught)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3348 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3349 case 2:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3350 gold_transaction_amount = 2000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3351 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3352 case 3:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3353 gold_transaction_amount = 5000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3354 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3355 case 4:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3356 gold_transaction_amount = 8000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3357 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3358 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3359 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3360 case PLAYER_SKILL_BLASTER:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3361 switch (masteryLevelBeingTaught)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3362 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3363 case 2:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3364 gold_transaction_amount = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3365 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3366 case 3:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3367 gold_transaction_amount = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3368 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3369 case 4:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3370 gold_transaction_amount = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3371 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3372 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3373 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3374 case PLAYER_SKILL_SHIELD:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3375 case PLAYER_SKILL_LEATHER:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3376 case PLAYER_SKILL_CHAIN:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3377 case PLAYER_SKILL_PLATE:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3378 switch (masteryLevelBeingTaught)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3379 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3380 case 2:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3381 gold_transaction_amount = 1000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3382 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3383 case 3:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3384 gold_transaction_amount = 3000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3385 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3386 case 4:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3387 gold_transaction_amount = 7000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3388 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3389 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3390 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3391 case PLAYER_SKILL_FIRE:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3392 case PLAYER_SKILL_AIR:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3393 case PLAYER_SKILL_WATER:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3394 case PLAYER_SKILL_EARTH:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3395 case PLAYER_SKILL_SPIRIT:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3396 case PLAYER_SKILL_MIND:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3397 case PLAYER_SKILL_BODY:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3398 switch (masteryLevelBeingTaught)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3399 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3400 case 2:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3401 gold_transaction_amount = 1000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3402 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3403 case 3:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3404 gold_transaction_amount = 4000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3405 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3406 case 4:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3407 gold_transaction_amount = 8000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3408 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3409 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3410 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3411 case PLAYER_SKILL_LIGHT:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3412 switch (masteryLevelBeingTaught)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3413 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3414 case 2:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3415 gold_transaction_amount = 2000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3416 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3417 case 3:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3418 if (!(unsigned __int16)_449B57_test_bit(pParty->_quest_bits, 114))
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3419 return pNPCTopics[127].pText;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3420 gold_transaction_amount = 5000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3421 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3422 case 4:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3423 if (!activePlayer->ProfessionOrGuildFlagsCorrect(0x22u, 1) ||
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3424 !activePlayer->ProfessionOrGuildFlagsCorrect(0x1Au, 1))
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3425 return pNPCTopics[127].pText;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3426 gold_transaction_amount = 8000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3427 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3428 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3429 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3430 case PLAYER_SKILL_DARK:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3431 switch (masteryLevelBeingTaught)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3432 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3433 case 2:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3434 gold_transaction_amount = 2000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3435 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3436 case 3:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3437 if (!(unsigned __int16)_449B57_test_bit(pParty->_quest_bits, 110))
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3438 return pNPCTopics[127].pText;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3439 gold_transaction_amount = 5000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3440 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3441 case 4:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3442 if (!activePlayer->ProfessionOrGuildFlagsCorrect(0x23u, 1)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3443 || !activePlayer->ProfessionOrGuildFlagsCorrect(0x1Bu, 1))
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3444 return pNPCTopics[127].pText;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3445 gold_transaction_amount = 8000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3446 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3447 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3448 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3449 case PLAYER_SKILL_ITEM_ID:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3450 case PLAYER_SKILL_REPAIR:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3451 case PLAYER_SKILL_MEDITATION:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3452 case PLAYER_SKILL_PERCEPTION:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3453 case PLAYER_SKILL_TRAP_DISARM:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3454 case PLAYER_SKILL_MONSTER_ID:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3455 case PLAYER_SKILL_STEALING:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3456 case PLAYER_SKILL_ALCHEMY:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3457 switch (masteryLevelBeingTaught)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3458 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3459 case 2:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3460 gold_transaction_amount = 500;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3461 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3462 case 3:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3463 gold_transaction_amount = 2500;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3464 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3465 case 4:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3466 gold_transaction_amount = 6000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3467 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3468 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3469 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3470 case PLAYER_SKILL_MERCHANT:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3471 switch (masteryLevelBeingTaught)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3472 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3473 case 2:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3474 gold_transaction_amount = 2000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3475 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3476 case 3:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3477 if (activePlayer->GetBaseWillpower() < 50)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3478 return pNPCTopics[127].pText;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3479 gold_transaction_amount = 5000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3480 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3481 case 4:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3482 gold_transaction_amount = 8000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3483 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3484 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3485 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3486 case PLAYER_SKILL_BODYBUILDING:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3487 switch (masteryLevelBeingTaught)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3488 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3489 case 2:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3490 gold_transaction_amount = 500;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3491 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3492 case 3:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3493 if (activePlayer->GetBaseEndurance() < 50)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3494 return pNPCTopics[127].pText;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3495 gold_transaction_amount = 2500;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3496 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3497 case 4:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3498 gold_transaction_amount = 6000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3499 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3500 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3501 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3502 case PLAYER_SKILL_DIPLOMACY:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3503 Error("Diplomacy not used");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3504 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3505 case PLAYER_SKILL_TIEVERY:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3506 Error("Thievery not used");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3507 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3508 case PLAYER_SKILL_DODGE:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3509 switch (masteryLevelBeingTaught)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3510 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3511 case 2:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3512 gold_transaction_amount = 2000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3513 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3514 case 3:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3515 gold_transaction_amount = 5000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3516 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3517 case 4:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3518 if ((activePlayer->pActiveSkills[PLAYER_SKILL_UNARMED] & 63) < 0xA)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3519 return pNPCTopics[127].pText;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3520 gold_transaction_amount = 8000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3521 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3522 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3523 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3524 case PLAYER_SKILL_UNARMED:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3525 switch (masteryLevelBeingTaught)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3526 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3527 case 2:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3528 gold_transaction_amount = 2000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3529 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3530 case 3:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3531 gold_transaction_amount = 5000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3532 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3533 case 4:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3534 if ((activePlayer->pActiveSkills[PLAYER_SKILL_DODGE] & 63) < 0xA)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3535 return pNPCTopics[127].pText;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3536 gold_transaction_amount = 8000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3537 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3538 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3539 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3540 case PLAYER_SKILL_LEARNING:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3541 switch (masteryLevelBeingTaught)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3542 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3543 case 2:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3544 gold_transaction_amount = 2000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3545 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3546 case 3:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3547 if (activePlayer->GetBaseIntelligence() < 50)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3548 return pNPCTopics[127].pText;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3549 gold_transaction_amount = 5000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3550 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3551 case 4:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3552 gold_transaction_amount = 8000;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3553 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3554 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3555 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3556 default:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3557 Error("Unknown skill");
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3558 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3559 if (gold_transaction_amount > pParty->uNumGold)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3560 return pNPCTopics[124].pText; //You don't have enough gold!
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3561 contract_approved = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3562 if (masteryLevelBeingTaught == 2)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3563 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3564 sprintfex(pTmpBuf2.data(), pGlobalTXT_LocalizationStrings[534],//Получить степень ^Pr[%s] в навыке ^Pr[%s] за ^I[%lu] золот^L[ой;ых;ых]
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3565 pGlobalTXT_LocalizationStrings[433], pSkillNames[dword_F8B1AC_award_bit_number], gold_transaction_amount);//Эксперт
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3566 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3567 else if (masteryLevelBeingTaught == 3)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3568 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3569 sprintfex(pTmpBuf2.data(), pGlobalTXT_LocalizationStrings[534],
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3570 pGlobalTXT_LocalizationStrings[432], pSkillNames[dword_F8B1AC_award_bit_number], gold_transaction_amount);//Мастер
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3571 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3572 else if (masteryLevelBeingTaught == 4)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3573 sprintfex(pTmpBuf2.data(), pGlobalTXT_LocalizationStrings[534],
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3574 pGlobalTXT_LocalizationStrings[225], pSkillNames[dword_F8B1AC_award_bit_number], gold_transaction_amount);//Великий Магистр
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3575 return pTmpBuf2.data();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3576 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3577
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3578 //----- (00495461) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3579 char *BuildDialogueString(const char *lpsz, unsigned __int8 uPlayerID, ItemGen *a3, char *a4, int a5, __int64 *a6)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3580 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3581 Player *pPlayer; // ebx@3
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3582 const char *pText; // esi@7
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3583 int v17; // eax@10
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3584 signed __int64 v18; // qax@18
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3585 unsigned __int8 *v20; // ebx@32
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3586 int v21; // ecx@34
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3587 int pReputation; // eax@45
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3588 int v29; // eax@68
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3589 __int16 v55[56]; // [sp+10h] [bp-128h]@34
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3590 stru351_summoned_item v56; // [sp+80h] [bp-B8h]@107
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3591 char a1[100]; // [sp+B8h] [bp-80h]@3
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3592 int v63; // [sp+12Ch] [bp-Ch]@32
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3593
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3594 if (IsBadStringPtrA(lpsz, 1))
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3595 return "Invalid String Passed";
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3596
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3597 a1[0] = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3598 pPlayer = &pParty->pPlayers[uPlayerID];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3599 memset(pTmpBuf2.data(), 0, sizeof(pTmpBuf2));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3600
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3601 NPCData *npc = nullptr;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3602 if (dword_5C35D4)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3603 npc = HouseNPCData[(unsigned int)((char *)pDialogueNPCCount + -(dword_591080 != 0))]; //- 1
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3604 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3605 npc = GetNPCData(sDialogue_SpeakingActorNPC_ID);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3606
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3607 //pText = a4;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3608 uint len = strlen(lpsz);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3609 for (int i = 0, dst = 0; i < len; ++i)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3610 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3611 char c = lpsz[i];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3612 if (c != '%')
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3613 pTmpBuf2[dst++] = c;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3614 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3615 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3616 v17 = 10 * (int)(lpsz[i + 1] - '0') + lpsz[i + 2] - '0';
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3617
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3618 switch (v17)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3619 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3620 case 1://Подробнее
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3621 strcat(pTmpBuf2.data(), npc->pName);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3622 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3623 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3624 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3625 case 2:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3626 strcat(pTmpBuf2.data(), pPlayer->pName);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3627 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3628 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3629 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3630 case 3:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3631 case 4:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3632 strcat(pTmpBuf2.data(), a1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3633 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3634 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3635 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3636 case 5:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3637 v18 = (signed __int64)((double)(signed __int64)pParty->uTimePlayed * 0.234375) / 60 / 60 % 24;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3638 pText = pGlobalTXT_LocalizationStrings[397];// "evening"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3639 if (SHIDWORD(v18) <= 0 && SHIDWORD(v18) >= 0 && (unsigned int)v18 >= 5 && SHIDWORD(v18) <= 0)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3640 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3641 if (SHIDWORD(v18) >= 0 && (unsigned int)v18 >= 11)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3642 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3643 if (v18 < 20)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3644 pText = pGlobalTXT_LocalizationStrings[396];// "day"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3645 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3646 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3647 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3648 pText = pGlobalTXT_LocalizationStrings[395];// "morning"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3649 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3650 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3651 strcat(pTmpBuf2.data(), pText);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3652 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3653 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3654 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3655 case 6:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3656 if (pPlayer->uSex)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3657 pText = pGlobalTXT_LocalizationStrings[387];// "lady"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3658 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3659 pText = pGlobalTXT_LocalizationStrings[385];// "sir"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3660 strcat(pTmpBuf2.data(), pText);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3661 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3662 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3663 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3664 case 7:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3665 if (pPlayer->uSex)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3666 pText = pGlobalTXT_LocalizationStrings[389];// "Lady"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3667 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3668 pText = pGlobalTXT_LocalizationStrings[386];// "Sir"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3669 strcat(pTmpBuf2.data(), pText);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3670 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3671 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3672 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3673 case 8:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3674 v63 = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3675 v20 = (unsigned __int8 *)pPlayer->_achieved_awards_bits;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3676 for (uint _i = 0; _i < 28; ++_i)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3677 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3678 if ((unsigned __int16)_449B57_test_bit(v20, word_4EE150[i]))
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3679 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3680 v21 = v63;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3681 ++v63;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3682 v55[v63] = word_4EE150[i];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3683 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3684 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3685 if (v63)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3686 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3687 if (dword_A74CDC == -1)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3688 dword_A74CDC = rand() % v63;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3689 pText = (char *)pAwards[v55[dword_A74CDC]].pText;//(char *)dword_723E80_award_related[2 * v55[v24]];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3690 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3691 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3692 pText = (char *)pNPCTopics[55].pText;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3693 strcat(pTmpBuf2.data(), pText);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3694 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3695 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3696 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3697 case 9:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3698 if (npc->uSex)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3699 pText = pGlobalTXT_LocalizationStrings[384];// "her"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3700 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3701 pText = pGlobalTXT_LocalizationStrings[383];// "his"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3702 strcat(pTmpBuf2.data(), pText);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3703 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3704 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3705 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3706 case 10:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3707 if (pPlayer->uSex)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3708 pText = pGlobalTXT_LocalizationStrings[389];// "Lady"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3709 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3710 pText = pGlobalTXT_LocalizationStrings[388];// "Lord"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3711 strcat(pTmpBuf2.data(), pText);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3712 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3713 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3714 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3715 case 11:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3716 pReputation = pParty->GetPartyReputation();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3717 if (pReputation >= 25)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3718 pText = pGlobalTXT_LocalizationStrings[379];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3719 else//v25 < 25
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3720 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3721 if (pReputation < 6)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3722 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3723 if (pReputation >= -5)//6 >= v25 >= -5
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3724 pText = pGlobalTXT_LocalizationStrings[399];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3725 else// v25 < -5
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3726 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3727 if (pReputation < -24)//-24 > v25
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3728 pText = pGlobalTXT_LocalizationStrings[434];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3729 else// -5 > v25 > -24
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3730 pText = pGlobalTXT_LocalizationStrings[402];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3731 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3732 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3733 else//25 > v25 > 6
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3734 pText = pGlobalTXT_LocalizationStrings[392];
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3735 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3736 strcat(pTmpBuf2.data(), pText);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3737 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3738 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3739 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3740 case 12:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3741 pReputation = npc->rep;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3742 if (pReputation >= 25)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3743 pText = pGlobalTXT_LocalizationStrings[379];//Ненавистный
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3744 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3745 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3746 if (pReputation < 6)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3747 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3748 if (pReputation >= -5)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3749 pText = pGlobalTXT_LocalizationStrings[399];//Нейтральная
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3750 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3751 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3752 if (pReputation < -24)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3753 pText = pGlobalTXT_LocalizationStrings[434];//Почтенная
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3754 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3755 pText = pGlobalTXT_LocalizationStrings[402];//Дружелюбный
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3756 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3757 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3758 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3759 pText = pGlobalTXT_LocalizationStrings[392];//Недружелюбный
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3760 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3761 strcat(pTmpBuf2.data(), pText);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3762 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3763 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3764 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3765 case 13:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3766 strcat(pTmpBuf2.data(), pNPCStats->sub_495366_MispronounceName(pPlayer->pName[0], pPlayer->uSex));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3767 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3768 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3769 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3770 case 14:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3771 if (npc->uSex)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3772 pText = pGlobalTXT_LocalizationStrings[391];// "sister"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3773 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3774 pText = pGlobalTXT_LocalizationStrings[390];// "brother"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3775 strcat(pTmpBuf2.data(), pText);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3776 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3777 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3778 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3779 case 15:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3780 strcat(pTmpBuf2.data(), pGlobalTXT_LocalizationStrings[393]);// "daughter"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3781 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3782 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3783 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3784 case 16:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3785 if (npc->uSex)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3786 pText = pGlobalTXT_LocalizationStrings[391];// "sister"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3787 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3788 pText = pGlobalTXT_LocalizationStrings[390];// "brother"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3789 strcat(pTmpBuf2.data(), pText);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3790 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3791 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3792 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3793 case 17://текст наёмного НПС
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3794 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3795 uint pay_percentage = pNPCStats->pProfessions[npc->uProfession].uHirePrice / 100;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3796 if (!pay_percentage)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3797 pay_percentage = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3798 sprintf(a1, "%lu", pay_percentage);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3799 strcat(pTmpBuf2.data(), a1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3800 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3801 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3802 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3803 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3804 case 18:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3805 case 19:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3806 case 20:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3807 case 21:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3808 case 22:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3809 case 26:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3810 strncpy(a1, lpsz + i + 1, 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3811 sprintf(a1, "%lu", atoi(a1));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3812 strcat(pTmpBuf2.data(), a1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3813 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3814 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3815 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3816 case 23:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3817 if (pMapStats->GetMapInfo(pCurrentMapName))
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3818 pText = pMapStats->pInfos[pMapStats->GetMapInfo(pCurrentMapName)].pName;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3819 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3820 pText = pGlobalTXT_LocalizationStrings[394];// "Unknown"
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3821 strcat(pTmpBuf2.data(), pText);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3822 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3823 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3824 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3825 case 24://название товара в продаже
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3826 sprintfex(a1, format_4E2D80, Color16(255, 255, 155), a3->GetDisplayName());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3827 strcat(pTmpBuf2.data(), a1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3828 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3829 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3830 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3831 case 25:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3832 v29 = pPlayer->GetBaseBuyingPrice(a3->GetValue(), p2DEvents[(signed int)a4 - 1].fPriceMultiplier);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3833 switch (a5)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3834 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3835 case 3:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3836 v29 = pPlayer->GetBaseSellingPrice(a3->GetValue(), p2DEvents[(signed int)a4 - 1].fPriceMultiplier);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3837 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3838 case 4:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3839 v29 = pPlayer->GetBaseIdentifyPrice(p2DEvents[(signed int)a4 - 1].fPriceMultiplier);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3840 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3841 case 5:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3842 v29 = pPlayer->GetBaseRepairPrice(a3->GetValue(), p2DEvents[(signed int)a4 - 1].fPriceMultiplier);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3843 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3844 case 6:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3845 v29 = pPlayer->GetBaseSellingPrice(a3->GetValue(), p2DEvents[(signed int)a4 - 1].fPriceMultiplier) / 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3846 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3847 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3848 sprintfex(a1, "%lu", v29);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3849 strcat(pTmpBuf2.data(), a1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3850 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3851 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3852 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3853 case 27://текст продажи
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3854 v29 = pPlayer->GetBuyingPrice(a3->GetValue(), p2DEvents[(signed int)a4 - 1].fPriceMultiplier);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3855 if (a5 == 3)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3856 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3857 v29 = pPlayer->GetPriceSell(a3->GetValue(), p2DEvents[(signed int)a4 - 1].fPriceMultiplier);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3858 if (a3->IsBroken())
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3859 v29 = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3860 sprintfex(a1, "%lu", v29);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3861 strcat(pTmpBuf2.data(), a1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3862 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3863 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3864 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3865 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3866 if (a5 != 4)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3867 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3868 if (a5 == 5)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3869 v29 = pPlayer->GetPriceRepair(a3->GetValue(), p2DEvents[(signed int)a4 - 1].fPriceMultiplier);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3870 else
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3871 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3872 if (a5 == 6)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3873 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3874 v29 = pPlayer->GetPriceSell(a3->GetValue(), p2DEvents[(signed int)a4 - 1].fPriceMultiplier) / 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3875 if (a3->IsBroken())
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3876 v29 = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3877 if (!v29)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3878 v29 = 1;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3879 sprintfex(a1, "%lu", v29);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3880 strcat(pTmpBuf2.data(), a1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3881 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3882 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3883 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3884 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3885 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3886 sprintfex(a1, "%lu", v29);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3887 strcat(pTmpBuf2.data(), a1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3888 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3889 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3890 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3891 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3892 sprintfex(a1, "%lu", pPlayer->GetPriceIdentification(p2DEvents[(signed int)a4 - 1].fPriceMultiplier));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3893 strcat(pTmpBuf2.data(), a1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3894 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3895 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3896 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3897 case 28://профессия
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3898 strcat(pTmpBuf2.data(), (char *)p2DEvents[(signed int)a4 - 1].pProprieterTitle);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3899 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3900 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3901 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3902 case 29:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3903 sprintfex(a1, "%lu", pPlayer->GetPriceIdentification(p2DEvents[(signed int)a4 - 1].fPriceMultiplier));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3904 strcat(pTmpBuf2.data(), a1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3905 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3906 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3907 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3908 case 30:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3909 if (!a6)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3910 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3911 strcat(pTmpBuf2.data(), a4);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3912 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3913 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3914 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3915 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3916 init_summoned_item(&v56, *a6);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3917 sprintfex(a1, pGlobalTXT_LocalizationStrings[378], aMonthNames[v56.field_14_exprie_month], v56.field_C_expire_day + 1, v56.field_18_expire_year);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3918 strcat(pTmpBuf2.data(), a1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3919 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3920 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3921 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3922 case 31:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3923 case 32:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3924 case 33:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3925 case 34:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3926 strcat(pTmpBuf2.data(), pParty->pPlayers[v17 - 31].pName);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3927 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3928 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3929 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3930 default:
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3931 if (v17 <= 50 || v17 > 70)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3932 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3933 strncpy(a1, lpsz + i + 1, 2);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3934 sprintf(a1, "%lu", atoi(a1));
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3935 strcat(pTmpBuf2.data(), a1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3936 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3937 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3938 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3939 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3940 if (v17 - 51 >= 20)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3941 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3942 strcat(pTmpBuf2.data(), a4);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3943 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3944 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3945 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3946 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3947 init_summoned_item(&v56, pParty->PartyTimes._s_times[v17 - 51]);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3948 sprintfex(a1, pGlobalTXT_LocalizationStrings[378], aMonthNames[v56.field_14_exprie_month], v56.field_C_expire_day + 1, v56.field_18_expire_year);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3949 strcat(pTmpBuf2.data(), a1);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3950 dst = strlen(pTmpBuf2.data());
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3951 i += 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3952 break;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3953 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3954 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3955 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3956 return pTmpBuf2.data();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3957 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3958
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3959 //----- (0044C175) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3960 void ShowStatusBarString(const char *pString, unsigned int uNumSeconds)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3961 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3962 strcpy(GameUI_Footer_TimedString.data(), pString);
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3963 GameUI_Footer_TimeLeft = 1000 * uNumSeconds + GetTickCount();
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3964
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3965 for (int i = pFontLucida->GetLineWidth(GameUI_Footer_TimedString.data()); i > 450;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3966 i = pFontLucida->GetLineWidth(GameUI_Footer_TimedString.data()))
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3967 GameUI_Footer_TimedString[strlen(GameUI_Footer_TimedString.data()) - 1] = 0;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3968 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3969
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3970 //----- (0044C1D0) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3971 void ShowNothingHereStatus()
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3972 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3973 if (!GameUI_Footer_TimeLeft)
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3974 ShowStatusBarString(pGlobalTXT_LocalizationStrings[521], 2);// Nothing here
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3975 }
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3976
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3977 //----- (0044C28B) --------------------------------------------------------
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3978 int const_2()
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3979 {
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3980 return 2;
a77c34acdbc9 Media folder
Ritor1
parents:
diff changeset
3981 }