comparison UI/UIPartyCreation.cpp @ 1698:8cfb2e978445

Merge
author Ritor1
date Sun, 22 Sep 2013 16:45:46 +0600
parents 6faacde46271
children 28cb79ae2f6f
comparison
equal deleted inserted replaced
1697:eccd4278fc2f 1698:8cfb2e978445
19 #include "..\mm7_data.h" 19 #include "..\mm7_data.h"
20 20
21 21
22 22
23 //----- (004908DE) -------------------------------------------------------- 23 //----- (004908DE) --------------------------------------------------------
24 int PlayerCreation_Choose4Skills() 24 bool PlayerCreation_Choose4Skills()
25 { 25 {
26 Player *v0; // esi@1 26 signed int skills_count; // edx@2
27 signed int v1; // edx@2 27
28 unsigned short *v2; // eax@2 28 for ( uint j = 0; j < 4; ++j )
29 signed int v3; // ecx@2 29 {
30 30 skills_count = 0;
31 v0 = pParty->pPlayers;//[0].pActiveSkills; 31 for ( uint i = 0; i < 37; ++i )
32 while ( 1 ) 32 {
33 { 33 if ( pParty->pPlayers[j].pActiveSkills[i] )
34 v1 = 0; 34 ++skills_count;
35 v2 = v0->pActiveSkills; 35 }
36 v3 = 37; 36 if ( skills_count < 4 )
37 do 37 return false;
38 { 38 }
39 if ( *v2 ) 39 return true;
40 ++v1; 40 }
41 ++v2;
42 --v3;
43 }
44 while ( v3 );
45 if ( v1 < 4 )
46 break;
47 ++v0;
48 if ( v0 > &pParty->pPlayers[3] )
49 return 1;
50 }
51 return 0;
52 }
53
54
55
56 41
57 //----- (00491CB5) -------------------------------------------------------- 42 //----- (00491CB5) --------------------------------------------------------
58 void LoadPlayerPortraintsAndVoices() 43 void LoadPlayerPortraintsAndVoices()
59 { 44 {
60 //Texture **v0; // ebx@1 45 pIcons_LOD->pFacesLock = pIcons_LOD->uNumLoadedFiles;
61 //int v1; // eax@2 46
62 //int v2; // edi@3 47 for (uint i = 0; i < 4; ++i)
63 char *v3; // esi@5 48 for (uint j = 0; j < 56; ++j)
64 char *v4; // [sp+10h] [bp-4h]@1 49 {
65 50 sprintf(pTmpBuf.data(), "%s%02d", pPlayerPortraitsNames[pParty->pPlayers[i].uCurrentFace], j + 1);
66 pIcons_LOD->pFacesLock = pIcons_LOD->uNumLoadedFiles; 51 pTextures_PlayerFaces[i][j] = pIcons_LOD->LoadTexturePtr(pTmpBuf.data(), TEXTURE_16BIT_PALETTE);
67 52 }
53
54 pTexture_PlayerFaceEradicated = pIcons_LOD->LoadTexturePtr("ERADCATE", TEXTURE_16BIT_PALETTE);
55 pTexture_PlayerFaceDead = pIcons_LOD->LoadTexturePtr("DEAD", TEXTURE_16BIT_PALETTE);
56 pTexture_PlayerFaceMask = pIcons_LOD->LoadTexturePtr("FACEMASK", TEXTURE_16BIT_PALETTE);
57
58 if (SoundSetAction[24][0])
68 for (uint i = 0; i < 4; ++i) 59 for (uint i = 0; i < 4; ++i)
69 for (uint j = 0; j < 56; ++j) 60 {
70 { 61 pSoundList->LoadSound(2 * (SoundSetAction[24][0] + 50 * pParty->pPlayers[i].uVoiceID) + 4998, 0);
71 sprintf(pTmpBuf.data(), "%s%02d", pPlayerPortraitsNames[pParty->pPlayers[i].uCurrentFace], j + 1); 62 pSoundList->LoadSound(2 * (SoundSetAction[24][0] + 50 * pParty->pPlayers[i].uVoiceID) + 4999, 0);
72 pTextures_PlayerFaces[i][j] = pIcons_LOD->LoadTexturePtr(pTmpBuf.data(), TEXTURE_16BIT_PALETTE); 63 }
73 } 64 }
74
75 pTexture_PlayerFaceEradicated = pIcons_LOD->LoadTexturePtr("ERADCATE", TEXTURE_16BIT_PALETTE);
76 pTexture_PlayerFaceDead = pIcons_LOD->LoadTexturePtr("DEAD", TEXTURE_16BIT_PALETTE);
77 pTexture_PlayerFaceMask = pIcons_LOD->LoadTexturePtr("FACEMASK", TEXTURE_16BIT_PALETTE);
78
79 if (SoundSetAction[24][0])
80 for (uint i = 0; i < 4; ++i)
81 {
82 pSoundList->LoadSound(2 * (SoundSetAction[24][0] + 50 * pParty->pPlayers[i].uVoiceID) + 4998, 0);
83 pSoundList->LoadSound(2 * (SoundSetAction[24][0] + 50 * pParty->pPlayers[i].uVoiceID) + 4999, 0);
84 }
85 }
86 65
87 //----- (00491DE7) -------------------------------------------------------- 66 //----- (00491DE7) --------------------------------------------------------
88 int __fastcall ReloadPlayerPortraits(int a1, int a2) 67 void ReloadPlayerPortraits(int player_id, int face_id)//the transition from the zombies in the normal state
89 { 68 {
90 int result; // eax@1 69 for ( uint i = 0; i <= 55; ++i )
91 const char **v3; // ebp@1 70 {
92 Texture **v4; // ebx@1 71 sprintf(pTmpBuf.data(), "%s%02d", pPlayerPortraitsNames[face_id], i + 1);
93 int v5; // esi@2 72 pIcons_LOD->ReloadTexture(pTextures_PlayerFaces[player_id][i], pTmpBuf.data(), 2);
94 73 }
95 result = 0; 74 }
96 v3 = &pPlayerPortraitsNames[a2];
97 v4 = pTextures_PlayerFaces[a1].data();
98 do
99 {
100 v5 = result + 1;
101 sprintf(pTmpBuf.data(), "%s%02d", *v3, result + 1);
102 pIcons_LOD->ReloadTexture(*v4, pTmpBuf.data(), 2);
103 result = v5;
104 ++v4;
105 }
106 while ( v5 < 56 );
107 return result;
108 }
109 //----- (00495B39) -------------------------------------------------------- 75 //----- (00495B39) --------------------------------------------------------
110 void PlayerCreationUI_Draw() 76 void PlayerCreationUI_Draw()
111 { 77 {
112 int pTextCenter; // eax@3 78 int pTextCenter; // eax@3
113 IconFrame *pFrame; // eax@3 79 IconFrame *pFrame; // eax@3
114 int pX; // ecx@7 80 int pX; // ecx@7
115 GUIButton *uPosActiveItem; // edi@12 81 GUIButton *uPosActiveItem; // edi@12
116 int uNumLet; // eax@14
117 char v8; // al@17
118 int v9; // ecx@17
119 char v10; // sf@17
120 size_t v16; // eax@28
121 int v17; // eax@33 82 int v17; // eax@33
122 int uStatLevel; // eax@44 83 int uStatLevel; // eax@44
123 unsigned int pStatColor; // eax@44 84 unsigned int pStatColor; // eax@44
124 PLAYER_SKILL_TYPE pSkillsType; // eax@44 85 PLAYER_SKILL_TYPE pSkillsType; // eax@44
125 int v51; // eax@49
126 char *v52; // edi@52
127 char v53; // al@52
128 PLAYER_CLASS_TYPE uClassType; // edi@53 86 PLAYER_CLASS_TYPE uClassType; // edi@53
129 int pColorText; // eax@53 87 int pColorText; // eax@53
130 PLAYER_SKILL_TYPE pSkillId; // edi@72 88 PLAYER_SKILL_TYPE pSkillId; // edi@72
131 size_t pLenText; // eax@72 89 size_t pLenText; // eax@72
132 signed int v104; // ecx@72 90 signed int v104; // ecx@72
133 int pTextY; // ST08_4@81 91 int pTextY; // ST08_4@81
134 signed int pBonusNum; // edi@82 92 signed int pBonusNum; // edi@82
135 const char *uRaceName; // [sp+0h] [bp-170h]@39 93 const char *uRaceName; // [sp+0h] [bp-170h]@39
136 char pText[200]; // [sp+10h] [bp-160h]@14 94 char pText[200]; // [sp+10h] [bp-160h]@14
137 GUIWindow pWindow; // [sp+D8h] [bp-98h]@83 95 GUIWindow message_window; // [sp+D8h] [bp-98h]@83
138 size_t v120; // [sp+130h] [bp-40h]@25
139 int uColor1; // [sp+144h] [bp-2Ch]@1
140 int v126; // [sp+148h] [bp-28h]@25 96 int v126; // [sp+148h] [bp-28h]@25
141 int uColorGreen; // [sp+14Ch] [bp-24h]@1
142 int pIntervalY; // [sp+150h] [bp-20h]@14 97 int pIntervalY; // [sp+150h] [bp-20h]@14
143 int pX_Numbers; // [sp+154h] [bp-1Ch]@18 98 int pX_Numbers; // [sp+154h] [bp-1Ch]@18
144 int uColorTeal; // [sp+158h] [bp-18h]@1
145 int uColorWhite; // [sp+15Ch] [bp-14h]@1
146 int uX; // [sp+160h] [bp-10h]@18 99 int uX; // [sp+160h] [bp-10h]@18
147 unsigned int v133; // [sp+164h] [bp-Ch]@25
148 int pOrder; // [sp+168h] [bp-8h]@14
149 int pIntervalX; 100 int pIntervalX;
150 int pCorrective; 101 int pCorrective;
151 const char *pSkillName; 102
152 103 //move sky
153 uColor1 = TargetColor(0xD1, 0xBB, 0x61);
154 uColorTeal = TargetColor(0, 0xF7, 0xF7);
155 uColorGreen = TargetColor(0, 0xFF, 0);
156 uColorWhite = TargetColor(0xFF, 0xFF, 0xFF);
157 pRenderer->BeginScene(); 104 pRenderer->BeginScene();
158 pRenderer->DrawTextureRGB(0, 0, &pTexture_PCX); 105 pRenderer->DrawTextureRGB(0, 0, &pTexture_PCX);
159 uPlayerCreationUI_SkySliderPos = (GetTickCount() % 12800) / 20; 106 uPlayerCreationUI_SkySliderPos = (GetTickCount() % 12800) / 20;
160 pRenderer->DrawTextureIndexed(uPlayerCreationUI_SkySliderPos, 2, pTexture_MAKESKY); 107 pRenderer->DrawTextureIndexed(uPlayerCreationUI_SkySliderPos, 2, pTexture_MAKESKY);
161 pRenderer->DrawTextureIndexed(uPlayerCreationUI_SkySliderPos - 640, 2, pTexture_MAKESKY); 108 pRenderer->DrawTextureIndexed(uPlayerCreationUI_SkySliderPos - 640, 2, pTexture_MAKESKY);
171 default: 118 default:
172 Error("Invalid selected character"); 119 Error("Invalid selected character");
173 } 120 }
174 121
175 pTextCenter = pFontCChar->AlignText_Center(640, pGlobalTXT_LocalizationStrings[51]); 122 pTextCenter = pFontCChar->AlignText_Center(640, pGlobalTXT_LocalizationStrings[51]);
176 pGUIWindow_CurrentMenu->DrawText(pFontCChar, pTextCenter + 1, 0, 0, pGlobalTXT_LocalizationStrings[51], 0, 0, 0); 123 pGUIWindow_CurrentMenu->DrawText(pFontCChar, pTextCenter + 1, 0, 0, pGlobalTXT_LocalizationStrings[51], 0, 0, 0);//Ñ Î Ç Ä À Ò Ü Î Ò Ð ß Ä
177 pRenderer->DrawTextureTransparent(17, 35, pPlayerPortraits[pParty->pPlayers[0].uCurrentFace]); 124 pRenderer->DrawTextureTransparent(17, 35, pPlayerPortraits[pParty->pPlayers[0].uCurrentFace]);
178 pRenderer->DrawTextureTransparent(176, 35, pPlayerPortraits[pParty->pPlayers[1].uCurrentFace]); 125 pRenderer->DrawTextureTransparent(176, 35, pPlayerPortraits[pParty->pPlayers[1].uCurrentFace]);
179 pRenderer->DrawTextureTransparent(335, 35, pPlayerPortraits[pParty->pPlayers[2].uCurrentFace]); 126 pRenderer->DrawTextureTransparent(335, 35, pPlayerPortraits[pParty->pPlayers[2].uCurrentFace]);
180 pRenderer->DrawTextureTransparent(494, 35, pPlayerPortraits[pParty->pPlayers[3].uCurrentFace]); 127 pRenderer->DrawTextureTransparent(494, 35, pPlayerPortraits[pParty->pPlayers[3].uCurrentFace]);
181 pFrame = pIconsFrameTable->GetFrame(uIconID_CharacterFrame, pEventTimer->uStartTime); 128 pFrame = pIconsFrameTable->GetFrame(uIconID_CharacterFrame, pEventTimer->uStartTime);
187 pRenderer->DrawTextureTransparent(uPosActiveItem->uZ - 4, uPosActiveItem->uY, pTextures_arrowl[uPlayerCreationUI_ArrowAnim]); 134 pRenderer->DrawTextureTransparent(uPosActiveItem->uZ - 4, uPosActiveItem->uY, pTextures_arrowl[uPlayerCreationUI_ArrowAnim]);
188 pRenderer->DrawTextureTransparent(uPosActiveItem->uX - 12, uPosActiveItem->uY, pTextures_arrowr[uPlayerCreationUI_ArrowAnim]); 135 pRenderer->DrawTextureTransparent(uPosActiveItem->uX - 12, uPosActiveItem->uY, pTextures_arrowr[uPlayerCreationUI_ArrowAnim]);
189 136
190 memset(pText, 0, 200); 137 memset(pText, 0, 200);
191 strcpy(pText, pGlobalTXT_LocalizationStrings[205]);// "Skills" 138 strcpy(pText, pGlobalTXT_LocalizationStrings[205]);// "Skills"
192 uNumLet = strlen(pText) - 1; 139 for ( int i = strlen(pText) - 1; i >= 0; i-- )//???
193 pOrder = uNumLet; 140 pText[i] = toupper((unsigned __int8)pText[i]);
194 if ( uNumLet >= 0 )
195 {
196 while ( 1 )
197 {
198 v8 = toupper((unsigned __int8)pText[uNumLet]);
199 v9 = pOrder;
200 v10 = pOrder-- - 1 < 0;
201 pText[v9] = v8;
202 if ( v10 )
203 break;
204 uNumLet = pOrder;
205 }
206 }
207 141
208 pIntervalX = 18; 142 pIntervalX = 18;
209 pIntervalY = pFontCreate->uFontHeight - 2; 143 pIntervalY = pFontCreate->uFontHeight - 2;
210 //v124 = 0;
211 uX = 32; 144 uX = 32;
212 pX_Numbers = 493; 145 pX_Numbers = 493;
213 146
214 for (int i = 0; i < 4; ++i) 147 for (int i = 0; i < 4; ++i)
215 { 148 {
216 auto player = pParty->pPlayers + i; 149 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pIntervalX + 73, 100, 0, pClassNames[pParty->pPlayers[i].classType], 0, 0, 0);
217 150 pRenderer->DrawTextureTransparent(pIntervalX + 77, 50, pTexture_IC_KNIGHT[pParty->pPlayers[i].classType / 4]);
218 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pIntervalX + 73, 100, 0, pClassNames[player->classType], 0, 0, 0);
219 pRenderer->DrawTextureTransparent(pIntervalX + 77, 50, pTexture_IC_KNIGHT[player->classType / 4]);
220 151
221 if ( pGUIWindow_CurrentMenu->receives_keyboard_input_2 != WINDOW_INPUT_NONE && pGUIWindow_CurrentMenu->ptr_1C == (void *)i ) 152 if ( pGUIWindow_CurrentMenu->receives_keyboard_input_2 != WINDOW_INPUT_NONE && pGUIWindow_CurrentMenu->ptr_1C == (void *)i )
222 { 153 {
223 switch ( pGUIWindow_CurrentMenu->receives_keyboard_input_2 ) 154 switch ( pGUIWindow_CurrentMenu->receives_keyboard_input_2 )
224 { 155 {
226 v17 = pGUIWindow_CurrentMenu->DrawTextInRect(pFontCreate, 159 * (int)pGUIWindow_CurrentMenu->ptr_1C + 18, 124, 0, (const char *)pKeyActionMap->pPressedKeysBuffer, 120, 1); 157 v17 = pGUIWindow_CurrentMenu->DrawTextInRect(pFontCreate, 159 * (int)pGUIWindow_CurrentMenu->ptr_1C + 18, 124, 0, (const char *)pKeyActionMap->pPressedKeysBuffer, 120, 1);
227 pGUIWindow_CurrentMenu->DrawFlashingInputCursor(159 * (unsigned int)pGUIWindow_CurrentMenu->ptr_1C + v17 + 20, 124, pFontCreate); 158 pGUIWindow_CurrentMenu->DrawFlashingInputCursor(159 * (unsigned int)pGUIWindow_CurrentMenu->ptr_1C + v17 + 20, 124, pFontCreate);
228 break; 159 break;
229 case WINDOW_INPUT_CONFIRMED: // press enter 160 case WINDOW_INPUT_CONFIRMED: // press enter
230 pGUIWindow_CurrentMenu->receives_keyboard_input_2 = WINDOW_INPUT_NONE; 161 pGUIWindow_CurrentMenu->receives_keyboard_input_2 = WINDOW_INPUT_NONE;
231 v120 = strlen((const char *)pKeyActionMap->pPressedKeysBuffer);
232 v126 = 0; 162 v126 = 0;
233 v133 = 0; 163 for ( int i = 0; i < strlen((const char *)pKeyActionMap->pPressedKeysBuffer); ++i )//edit name
234 if ( strlen((const char *)pKeyActionMap->pPressedKeysBuffer) )//edit name
235 { 164 {
236 do 165 if ( pKeyActionMap->pPressedKeysBuffer[i] == ' ' )
237 { 166 ++v126;
238 if ( pKeyActionMap->pPressedKeysBuffer[v133] == ' ' )
239 ++v126;
240 ++v133;
241 v16 = strlen((const char *)pKeyActionMap->pPressedKeysBuffer);
242 }
243 while ( v133 < v16 );
244 } 167 }
245 if ( v120 && v126 != v120 ) 168 if ( strlen((const char *)pKeyActionMap->pPressedKeysBuffer) && v126 != strlen((const char *)pKeyActionMap->pPressedKeysBuffer) )
246 strcpy(player->pName, (const char *)pKeyActionMap->pPressedKeysBuffer); 169 strcpy(pParty->pPlayers[i].pName, (const char *)pKeyActionMap->pPressedKeysBuffer);
247 pGUIWindow_CurrentMenu->DrawTextInRect(pFontCreate, pIntervalX, 124, 0, player->pName, 130, 0); 170 pGUIWindow_CurrentMenu->DrawTextInRect(pFontCreate, pIntervalX, 124, 0, pParty->pPlayers[i].pName, 130, 0);
248 *(short *)&player->field_1988[27] = 1; 171 pParty->pPlayers[i].field_1988[27] = 1;
249 break; 172 break;
250 case WINDOW_INPUT_CANCELLED: // press escape 173 case WINDOW_INPUT_CANCELLED: // press escape
251 pGUIWindow_CurrentMenu->receives_keyboard_input_2 = WINDOW_INPUT_NONE; 174 pGUIWindow_CurrentMenu->receives_keyboard_input_2 = WINDOW_INPUT_NONE;
252 pGUIWindow_CurrentMenu->DrawTextInRect(pFontCreate, pIntervalX, 124, 0, player->pName, 130, 0); 175 pGUIWindow_CurrentMenu->DrawTextInRect(pFontCreate, pIntervalX, 124, 0, pParty->pPlayers[i].pName, 130, 0);
253 SetCurrentMenuID(MENU_NAMEPANELESC); 176 SetCurrentMenuID(MENU_NAMEPANELESC);
254 break; 177 break;
255 } 178 }
256 } 179 }
257 else 180 else
258 { 181 {
259 pGUIWindow_CurrentMenu->DrawTextInRect(pFontCreate, pIntervalX, 124, 0, player->pName, 130, 0); 182 pGUIWindow_CurrentMenu->DrawTextInRect(pFontCreate, pIntervalX, 124, 0, pParty->pPlayers[i].pName, 130, 0);
260 } 183 }
261 184
262 switch (player->GetRace()) 185 switch (pParty->pPlayers[i].GetRace())
263 { 186 {
264 case 0: uRaceName = pGlobalTXT_LocalizationStrings[99]; break; // "Human" 187 case 0: uRaceName = pGlobalTXT_LocalizationStrings[99]; break; // "Human"
265 case 1: uRaceName = pGlobalTXT_LocalizationStrings[103]; break; // "Dwarf" 188 case 1: uRaceName = pGlobalTXT_LocalizationStrings[103]; break; // "Dwarf"
266 case 2: uRaceName = pGlobalTXT_LocalizationStrings[106]; break; // "Goblin" 189 case 2: uRaceName = pGlobalTXT_LocalizationStrings[106]; break; // "Goblin"
267 case 3: uRaceName = pGlobalTXT_LocalizationStrings[101]; break; // "Elf" 190 case 3: uRaceName = pGlobalTXT_LocalizationStrings[101]; break; // "Elf"
268 }; 191 };
269 strcpy(pTmpBuf.data(), uRaceName); 192 strcpy(pTmpBuf.data(), uRaceName);
270 pGUIWindow_CurrentMenu->DrawTextInRect(pFontCreate, pIntervalX + 72, pIntervalY + 12, 0, pTmpBuf.data(), 130, 0);//Race Name 193 pGUIWindow_CurrentMenu->DrawTextInRect(pFontCreate, pIntervalX + 72, pIntervalY + 12, 0, pTmpBuf.data(), 130, 0);//Race Name
271 194
272 pTextCenter = pFontCreate->AlignText_Center(150, pText); 195 pTextCenter = pFontCreate->AlignText_Center(150, pText);
273 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + uX - 24, 291, uColor1, pText, 0, 0, 0); // Skills 196 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + uX - 24, 291, TargetColor(0xD1, 0xBB, 0x61), pText, 0, 0, 0); // Skills
274 197
275 uStatLevel = player->GetActualMight(); 198 uStatLevel = pParty->pPlayers[i].GetActualMight();
276 sprintf(pTmpBuf.data(), "%s\r%03d%d", pGlobalTXT_LocalizationStrings[144], pX_Numbers, uStatLevel);// "Might" 199 sprintf(pTmpBuf.data(), "%s\r%03d%d", pGlobalTXT_LocalizationStrings[144], pX_Numbers, uStatLevel);// "Might"
277 pStatColor = player->GetStatColor(0); 200 pStatColor = pParty->pPlayers[i].GetStatColor(0);
278 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX, 169, pStatColor, pTmpBuf.data(), 0, 0, 0); 201 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX, 169, pStatColor, pTmpBuf.data(), 0, 0, 0);
279 202
280 uStatLevel = player->GetActualIntelligence(); 203 uStatLevel = pParty->pPlayers[i].GetActualIntelligence();
281 sprintf(pTmpBuf.data(), "%s\r%03d%d", pGlobalTXT_LocalizationStrings[116], pX_Numbers, uStatLevel);// "Intellect" 204 sprintf(pTmpBuf.data(), "%s\r%03d%d", pGlobalTXT_LocalizationStrings[116], pX_Numbers, uStatLevel);// "Intellect"
282 pStatColor = player->GetStatColor(1); 205 pStatColor = pParty->pPlayers[i].GetStatColor(1);
283 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX, pIntervalY + 169, pStatColor, pTmpBuf.data(), 0, 0, 0); 206 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX, pIntervalY + 169, pStatColor, pTmpBuf.data(), 0, 0, 0);
284 207
285 uStatLevel = player->GetActualWillpower(); 208 uStatLevel = pParty->pPlayers[i].GetActualWillpower();
286 sprintf(pTmpBuf.data(), "%s\r%03d%d", pGlobalTXT_LocalizationStrings[163], pX_Numbers, uStatLevel);// "Personality" 209 sprintf(pTmpBuf.data(), "%s\r%03d%d", pGlobalTXT_LocalizationStrings[163], pX_Numbers, uStatLevel);// "Personality"
287 pStatColor = player->GetStatColor(2); 210 pStatColor = pParty->pPlayers[i].GetStatColor(2);
288 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX, 2 * pIntervalY + 169, pStatColor, pTmpBuf.data(), 0, 0, 0); 211 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX, 2 * pIntervalY + 169, pStatColor, pTmpBuf.data(), 0, 0, 0);
289 212
290 uStatLevel = player->GetActualEndurance(); 213 uStatLevel = pParty->pPlayers[i].GetActualEndurance();
291 sprintf(pTmpBuf.data(), "%s\r%03d%d", pGlobalTXT_LocalizationStrings[75], pX_Numbers, uStatLevel);// "Endurance" 214 sprintf(pTmpBuf.data(), "%s\r%03d%d", pGlobalTXT_LocalizationStrings[75], pX_Numbers, uStatLevel);// "Endurance"
292 pStatColor = player->GetStatColor(3); 215 pStatColor = pParty->pPlayers[i].GetStatColor(3);
293 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX, 3 * pIntervalY + 169, pStatColor, pTmpBuf.data(), 0, 0, 0); 216 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX, 3 * pIntervalY + 169, pStatColor, pTmpBuf.data(), 0, 0, 0);
294 217
295 uStatLevel = player->GetActualAccuracy(); 218 uStatLevel = pParty->pPlayers[i].GetActualAccuracy();
296 sprintf(pTmpBuf.data(), "%s\r%03d%d", pGlobalTXT_LocalizationStrings[1], pX_Numbers, uStatLevel);// "Accuracy" 219 sprintf(pTmpBuf.data(), "%s\r%03d%d", pGlobalTXT_LocalizationStrings[1], pX_Numbers, uStatLevel);// "Accuracy"
297 pStatColor = player->GetStatColor(4); 220 pStatColor = pParty->pPlayers[i].GetStatColor(4);
298 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX, 4 * pIntervalY + 169, pStatColor, pTmpBuf.data(), 0, 0, 0); 221 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX, 4 * pIntervalY + 169, pStatColor, pTmpBuf.data(), 0, 0, 0);
299 222
300 uStatLevel = player->GetActualSpeed(); 223 uStatLevel = pParty->pPlayers[i].GetActualSpeed();
301 sprintf(pTmpBuf.data(), "%s\r%03d%d", pGlobalTXT_LocalizationStrings[211], pX_Numbers, uStatLevel);// "Speed" 224 sprintf(pTmpBuf.data(), "%s\r%03d%d", pGlobalTXT_LocalizationStrings[211], pX_Numbers, uStatLevel);// "Speed"
302 pStatColor = player->GetStatColor(5); 225 pStatColor = pParty->pPlayers[i].GetStatColor(5);
303 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX, 5 * pIntervalY + 169, pStatColor, pTmpBuf.data(), 0, 0, 0); 226 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX, 5 * pIntervalY + 169, pStatColor, pTmpBuf.data(), 0, 0, 0);
304 227
305 uStatLevel = player->GetActualLuck(); 228 uStatLevel = pParty->pPlayers[i].GetActualLuck();
306 sprintf(pTmpBuf.data(), "%s\r%03d%d", pGlobalTXT_LocalizationStrings[136], pX_Numbers, uStatLevel);// "Luck" 229 sprintf(pTmpBuf.data(), "%s\r%03d%d", pGlobalTXT_LocalizationStrings[136], pX_Numbers, uStatLevel);// "Luck"
307 pStatColor = player->GetStatColor(6); 230 pStatColor = pParty->pPlayers[i].GetStatColor(6);
308 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX, 6 * pIntervalY + 169, pStatColor, pTmpBuf.data(), 0, 0, 0); 231 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX, 6 * pIntervalY + 169, pStatColor, pTmpBuf.data(), 0, 0, 0);
309 232
310 233
311 pSkillsType = player->GetSkillIdxByOrder(0); 234 pSkillsType = pParty->pPlayers[i].GetSkillIdxByOrder(0);
312 pTextCenter = pFontCreate->AlignText_Center(150, pSkillNames[pSkillsType]); 235 pTextCenter = pFontCreate->AlignText_Center(150, pSkillNames[pSkillsType]);
313 sprintf(pTmpBuf.data(), "\t%03u%s", pTextCenter, pSkillNames[pSkillsType]); 236 sprintf(pTmpBuf.data(), "\t%03u%s", pTextCenter, pSkillNames[pSkillsType]);
314 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX - 24, 311, uColorWhite, pTmpBuf.data(), 0, 0, 0); 237 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX - 24, 311, TargetColor(0xFF, 0xFF, 0xFF), pTmpBuf.data(), 0, 0, 0);
315 238
316 pSkillsType = player->GetSkillIdxByOrder(1); 239 pSkillsType = pParty->pPlayers[i].GetSkillIdxByOrder(1);
317 pTextCenter = pFontCreate->AlignText_Center(150, pSkillNames[pSkillsType]); 240 pTextCenter = pFontCreate->AlignText_Center(150, pSkillNames[pSkillsType]);
318 sprintf(pTmpBuf.data(), "\t%03u%s", pTextCenter, pSkillNames[pSkillsType]); 241 sprintf(pTmpBuf.data(), "\t%03u%s", pTextCenter, pSkillNames[pSkillsType]);
319 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX - 24, pIntervalY + 311, uColorWhite, pTmpBuf.data(), 0, 0, 0); 242 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX - 24, pIntervalY + 311, TargetColor(0xFF, 0xFF, 0xFF), pTmpBuf.data(), 0, 0, 0);
320 243
321 pSkillsType = player->GetSkillIdxByOrder(2); 244 pSkillsType = pParty->pPlayers[i].GetSkillIdxByOrder(2);
322 pTextCenter = pFontCreate->AlignText_Center(150, pSkillNames[pSkillsType]); 245 pTextCenter = pFontCreate->AlignText_Center(150, pSkillNames[pSkillsType]);
323 sprintf(pTmpBuf.data(), "\t%03u%s", pTextCenter, pSkillNames[pSkillsType]); 246 sprintf(pTmpBuf.data(), "\t%03u%s", pTextCenter, pSkillNames[pSkillsType]);
324 pColorText = uColorGreen; 247 pColorText = TargetColor(0, 0xFF, 0);
325 if ( (signed int)pSkillsType >= 37 ) 248 if ( (signed int)pSkillsType >= 37 )
326 pColorText = uColorTeal; 249 pColorText = TargetColor(0, 0xF7, 0xF7);
327 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX - 24, 2 * pIntervalY + 311, pColorText, pTmpBuf.data(), 0, 0, 0); 250 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX - 24, 2 * pIntervalY + 311, pColorText, pTmpBuf.data(), 0, 0, 0);
328 251
329 pSkillsType = player->GetSkillIdxByOrder(3); 252 pSkillsType = pParty->pPlayers[i].GetSkillIdxByOrder(3);
330 pTextCenter = pFontCreate->AlignText_Center(150, pSkillNames[pSkillsType]); 253 pTextCenter = pFontCreate->AlignText_Center(150, pSkillNames[pSkillsType]);
331 sprintf(pTmpBuf.data(), "\t%03u%s", pTextCenter, pSkillNames[pSkillsType]); 254 sprintf(pTmpBuf.data(), "\t%03u%s", pTextCenter, pSkillNames[pSkillsType]);
332 pColorText = uColorGreen; 255 pColorText = TargetColor(0, 0xFF, 0);
333 if ( (signed int)pSkillsType >= 37 ) 256 if ( (signed int)pSkillsType >= 37 )
334 pColorText = uColorTeal; 257 pColorText = TargetColor(0, 0xF7, 0xF7);
335 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX - 24, 3 * pIntervalY + 311, pColorText, pTmpBuf.data(), 0, 0, 0); 258 pGUIWindow_CurrentMenu->DrawText(pFontCreate, uX - 24, 3 * pIntervalY + 311, pColorText, pTmpBuf.data(), 0, 0, 0);
336 259
337 //v124 = (char *)v124 + 1;
338 pIntervalX += 159; 260 pIntervalX += 159;
339 pX_Numbers -= 158; 261 pX_Numbers -= 158;
340 uX += 158; 262 uX += 158;
341 } 263 }
342 264
343 strcpy(pText, pGlobalTXT_LocalizationStrings[41]);// "Class" 265 strcpy(pText, pGlobalTXT_LocalizationStrings[41]);// "Class"
344 v51 = strlen(pText) - 1; 266 for ( int i = strlen(pText) - 1; i >= 0; i-- )
345 pOrder = v51; 267 pText[i] = toupper((unsigned __int8)pText[i]);
346 if ( v51 >= 0 ) 268
347 {
348 while ( 1 )
349 {
350 v52 = &pText[v51];
351 v53 = toupper((unsigned __int8)pText[v51]);
352 v10 = pOrder-- - 1 < 0;
353 *v52 = v53;
354 if ( v10 )
355 break;
356 v51 = pOrder;
357 }
358 }
359 uClassType = pParty->pPlayers[uPlayerCreationUI_SelectedCharacter].classType; 269 uClassType = pParty->pPlayers[uPlayerCreationUI_SelectedCharacter].classType;
360 pTextCenter = pFontCreate->AlignText_Center(193, pText); 270 pTextCenter = pFontCreate->AlignText_Center(193, pText);
361 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 324, 395, uColor1, pText, 0, 0, 0);//Classes 271 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 324, 395, TargetColor(0xD1, 0xBB, 0x61), pText, 0, 0, 0);//Classes
362 272
363 pColorText = uColorTeal; 273 pColorText = TargetColor(0, 0xF7, 0xF7);
364 if ( uClassType ) 274 if ( uClassType )
365 pColorText = uColorWhite; 275 pColorText = TargetColor(0xFF, 0xFF, 0xFF);
366 pTextCenter = pFontCreate->AlignText_Center(65, pClassNames[0]); 276 pTextCenter = pFontCreate->AlignText_Center(65, pClassNames[0]);
367 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 323, 417, pColorText, pClassNames[0], 0, 0, 0); 277 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 323, 417, pColorText, pClassNames[0], 0, 0, 0);
368 278
369 pColorText = uColorTeal; 279 pColorText = TargetColor(0, 0xF7, 0xF7);
370 if ( uClassType != PLAYER_CLASS_PALADIN ) 280 if ( uClassType != PLAYER_CLASS_PALADIN )
371 pColorText = uColorWhite; 281 pColorText = TargetColor(0xFF, 0xFF, 0xFF);
372 pTextCenter = pFontCreate->AlignText_Center(65, pClassNames[12]); 282 pTextCenter = pFontCreate->AlignText_Center(65, pClassNames[12]);
373 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 323, pIntervalY + 417, pColorText, pClassNames[12], 0, 0, 0); 283 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 323, pIntervalY + 417, pColorText, pClassNames[12], 0, 0, 0);
374 284
375 pColorText = uColorTeal; 285 pColorText = TargetColor(0, 0xF7, 0xF7);
376 if ( uClassType != PLAYER_CLASS_DRUID ) 286 if ( uClassType != PLAYER_CLASS_DRUID )
377 pColorText = uColorWhite; 287 pColorText = TargetColor(0xFF, 0xFF, 0xFF);
378 pTextCenter = pFontCreate->AlignText_Center(65, pClassNames[20]); 288 pTextCenter = pFontCreate->AlignText_Center(65, pClassNames[20]);
379 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 323, 2 * pIntervalY + 417, pColorText, pClassNames[20], 0, 0, 0); 289 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 323, 2 * pIntervalY + 417, pColorText, pClassNames[20], 0, 0, 0);
380 290
381 pColorText = uColorTeal; 291 pColorText = TargetColor(0, 0xF7, 0xF7);
382 if ( uClassType != PLAYER_CLASS_CLERIC ) 292 if ( uClassType != PLAYER_CLASS_CLERIC )
383 pColorText = uColorWhite; 293 pColorText = TargetColor(0xFF, 0xFF, 0xFF);
384 pTextCenter = pFontCreate->AlignText_Center(65, pClassNames[24]); 294 pTextCenter = pFontCreate->AlignText_Center(65, pClassNames[24]);
385 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 388, 417, pColorText, pClassNames[24], 0, 0, 0); 295 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 388, 417, pColorText, pClassNames[24], 0, 0, 0);
386 296
387 pColorText = uColorTeal; 297 pColorText = TargetColor(0, 0xF7, 0xF7);
388 if ( uClassType != PLAYER_CLASS_DRUID) 298 if ( uClassType != PLAYER_CLASS_DRUID)
389 pColorText = uColorWhite; 299 pColorText = TargetColor(0xFF, 0xFF, 0xFF);
390 pTextCenter = pFontCreate->AlignText_Center(65, pClassNames[28]); 300 pTextCenter = pFontCreate->AlignText_Center(65, pClassNames[28]);
391 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 388, pIntervalY + 417, pColorText, pClassNames[28], 0, 0, 0); 301 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 388, pIntervalY + 417, pColorText, pClassNames[28], 0, 0, 0);
392 302
393 pColorText = uColorTeal; 303 pColorText = TargetColor(0, 0xF7, 0xF7);
394 if ( uClassType != PLAYER_CLASS_SORCERER ) 304 if ( uClassType != PLAYER_CLASS_SORCERER )
395 pColorText = uColorWhite; 305 pColorText = TargetColor(0xFF, 0xFF, 0xFF);
396 pTextCenter = pFontCreate->AlignText_Center(65, pClassNames[32]); 306 pTextCenter = pFontCreate->AlignText_Center(65, pClassNames[32]);
397 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 388, 2 * pIntervalY + 417, pColorText, pClassNames[32], 0, 0, 0); 307 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 388, 2 * pIntervalY + 417, pColorText, pClassNames[32], 0, 0, 0);
398 308
399 pColorText = uColorTeal; 309 pColorText = TargetColor(0, 0xF7, 0xF7);
400 if ( uClassType != PLAYER_CLASS_ARCHER ) 310 if ( uClassType != PLAYER_CLASS_ARCHER )
401 pColorText = uColorWhite; 311 pColorText = TargetColor(0xFF, 0xFF, 0xFF);
402 pTextCenter = pFontCreate->AlignText_Center(65, pClassNames[16]); 312 pTextCenter = pFontCreate->AlignText_Center(65, pClassNames[16]);
403 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 453, 417, pColorText, pClassNames[16], 0, 0, 0); 313 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 453, 417, pColorText, pClassNames[16], 0, 0, 0);
404 314
405 pColorText = uColorTeal; 315 pColorText = TargetColor(0, 0xF7, 0xF7);
406 if ( uClassType != PLAYER_CLASS_MONK ) 316 if ( uClassType != PLAYER_CLASS_MONK )
407 pColorText = uColorWhite; 317 pColorText = TargetColor(0xFF, 0xFF, 0xFF);
408 pTextCenter = pFontCreate->AlignText_Center(65, pClassNames[8]); 318 pTextCenter = pFontCreate->AlignText_Center(65, pClassNames[8]);
409 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 453, pIntervalY + 417, pColorText, pClassNames[8], 0, 0, 0); 319 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 453, pIntervalY + 417, pColorText, pClassNames[8], 0, 0, 0);
410 320
411 pColorText = uColorTeal; 321 pColorText = TargetColor(0, 0xF7, 0xF7);
412 if ( uClassType != PLAYER_CLASS_THEIF ) 322 if ( uClassType != PLAYER_CLASS_THEIF )
413 pColorText = uColorWhite; 323 pColorText = TargetColor(0xFF, 0xFF, 0xFF);
414 pTextCenter = pFontCreate->AlignText_Center(65, pClassNames[4]); 324 pTextCenter = pFontCreate->AlignText_Center(65, pClassNames[4]);
415 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 453, 2 * pIntervalY + 417, pColorText, pClassNames[4], 0, 0, 0); 325 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 453, 2 * pIntervalY + 417, pColorText, pClassNames[4], 0, 0, 0);
416 326
417 pTextCenter = pFontCreate->AlignText_Center(236, pGlobalTXT_LocalizationStrings[20]); // "Available Skills" 327 pTextCenter = pFontCreate->AlignText_Center(236, pGlobalTXT_LocalizationStrings[20]); // "Available Skills"
418 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 37, 395, uColor1, pGlobalTXT_LocalizationStrings[20], 0, 0, 0); 328 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 37, 395, TargetColor(0xD1, 0xBB, 0x61), pGlobalTXT_LocalizationStrings[20], 0, 0, 0);
419 for (uint i = 0; i < 9; ++i) 329 for (uint i = 0; i < 9; ++i)
420 { 330 {
421 pSkillId = pParty->pPlayers[uPlayerCreationUI_SelectedCharacter].GetSkillIdxByOrder(i + 4); 331 pSkillId = pParty->pPlayers[uPlayerCreationUI_SelectedCharacter].GetSkillIdxByOrder(i + 4);
422 strcpy(pText, pSkillNames[pSkillId]); 332 strcpy(pText, pSkillNames[pSkillId]);
423 pLenText = strlen(pText); 333 pLenText = strlen(pText);
439 } 349 }
440 } 350 }
441 pCorrective = -10;//-5 351 pCorrective = -10;//-5
442 if ( (signed int)pLenText < 8 )//if ( (signed int)v124 > 2 ) 352 if ( (signed int)pLenText < 8 )//if ( (signed int)v124 > 2 )
443 pCorrective = 0; 353 pCorrective = 0;
444 pColorText = uColorTeal; 354 pColorText = TargetColor(0, 0xF7, 0xF7);
445 if ( !pParty->pPlayers[uPlayerCreationUI_SelectedCharacter].pActiveSkills[pSkillId] ) 355 if ( !pParty->pPlayers[uPlayerCreationUI_SelectedCharacter].pActiveSkills[pSkillId] )
446 pColorText = uColorWhite; 356 pColorText = TargetColor(0xFF, 0xFF, 0xFF);
447 pTextCenter = pFontCreate->AlignText_Center(100, pText); 357 pTextCenter = pFontCreate->AlignText_Center(100, pText);
448 pGUIWindow_CurrentMenu->DrawText(pFontCreate, 100 * (i / 3) + pTextCenter + pCorrective + 17, pIntervalY * (i % 3) + 417, pColorText, pText, 0, 0, 0); 358 pGUIWindow_CurrentMenu->DrawText(pFontCreate, 100 * (i / 3) + pTextCenter + pCorrective + 17, pIntervalY * (i % 3) + 417, pColorText, pText, 0, 0, 0);
449 } 359 }
450 360
451 pTextCenter = pFontCreate->AlignText_Center(0x5C, pGlobalTXT_LocalizationStrings[30]);// "Bonus" 361 pTextCenter = pFontCreate->AlignText_Center(0x5C, pGlobalTXT_LocalizationStrings[30]);// "Bonus"
452 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 533, 394, uColor1, pGlobalTXT_LocalizationStrings[30], 0, 0, 0); 362 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 533, 394, TargetColor(0xD1, 0xBB, 0x61), pGlobalTXT_LocalizationStrings[30], 0, 0, 0);
453 pBonusNum = PlayerCreation_GetUnspentAttributePointCount(); 363 pBonusNum = PlayerCreation_GetUnspentAttributePointCount();
454 sprintf(pTmpBuf.data(), "%d", pBonusNum); 364 sprintf(pTmpBuf.data(), "%d", pBonusNum);
455 pTextCenter = pFontCreate->AlignText_Center(84, pTmpBuf.data()); 365 pTextCenter = pFontCreate->AlignText_Center(84, pTmpBuf.data());
456 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 530, 410, uColorWhite, pTmpBuf.data(), 0, 0, 0); 366 pGUIWindow_CurrentMenu->DrawText(pFontCreate, pTextCenter + 530, 410, TargetColor(0xFF, 0xFF, 0xFF), pTmpBuf.data(), 0, 0, 0);
457 if ( GameUI_Footer_TimeLeft > GetTickCount() ) 367 if ( GameUI_Footer_TimeLeft > GetTickCount() )
458 { 368 {
459 pWindow.Hint = pGlobalTXT_LocalizationStrings[412];// "Create Party cannot be completed unless you have assigned all characters 2 extra skills and have spent all of your bonus points." 369 message_window.Hint = pGlobalTXT_LocalizationStrings[412];// "Create Party cannot be completed unless you have assigned all characters 2 extra skills and have spent all of your bonus points."
460 if ( pBonusNum < 0 ) 370 if ( pBonusNum < 0 )
461 pWindow.Hint = pGlobalTXT_LocalizationStrings[413];// "You can't spend more than 50 points." 371 message_window.Hint = pGlobalTXT_LocalizationStrings[413];// "You can't spend more than 50 points."
462 pWindow.uFrameWidth = 300; 372 message_window.uFrameWidth = 300;
463 pWindow.uFrameHeight = 100; 373 message_window.uFrameHeight = 100;
464 pWindow.uFrameX = 170; 374 message_window.uFrameX = 170;
465 pWindow.uFrameY = 140; 375 message_window.uFrameY = 140;
466 pWindow.uFrameZ = 469; 376 message_window.uFrameZ = 469;
467 pWindow.uFrameW = 239; 377 message_window.uFrameW = 239;
468 pWindow.DrawMessageBox(0); 378 message_window.DrawMessageBox(0);
469 } 379 }
470 pRenderer->EndScene(); 380 pRenderer->EndScene();
471 } 381 }
472 382
473 //----- (0049695A) -------------------------------------------------------- 383 //----- (0049695A) --------------------------------------------------------
474 void PlayerCreationUI_Initialize() 384 void PlayerCreationUI_Initialize()
475 { 385 {
476 unsigned int v0; // ebx@5 386 unsigned int v0; // ebx@5
477 unsigned int v1; // eax@6
478 int v2; // ecx@6
479 //unsigned int v3; // eax@8
480 //signed int v4; // ecx@8
481 signed int uControlParam; // [sp+10h] [bp-Ch]@7 387 signed int uControlParam; // [sp+10h] [bp-Ch]@7
482 unsigned int uControlParama; // [sp+10h] [bp-Ch]@9
483 unsigned int uControlParamb; // [sp+10h] [bp-Ch]@11
484 unsigned int uControlParamc; // [sp+10h] [bp-Ch]@13
485 signed int uControlParamd; // [sp+10h] [bp-Ch]@15
486 signed int uX; // [sp+14h] [bp-8h]@5 388 signed int uX; // [sp+14h] [bp-8h]@5
487 unsigned int uXa; // [sp+14h] [bp-8h]@9
488 unsigned int uXb; // [sp+14h] [bp-8h]@11
489 unsigned int uXc; // [sp+14h] [bp-8h]@13
490 signed int uXd; // [sp+14h] [bp-8h]@16
491 389
492 pMessageQueue_50CBD0->Flush(); 390 pMessageQueue_50CBD0->Flush();
493 391
494 pAudioPlayer->SetMusicVolume(pSoundVolumeLevels[uMusicVolimeMultiplier] * 64.0f); 392 pAudioPlayer->SetMusicVolume(pSoundVolumeLevels[uMusicVolimeMultiplier] * 64.0f);
495 ++pIcons_LOD->uTexturePacksCount; 393 ++pIcons_LOD->uTexturePacksCount;
509 pTexture_IC_KNIGHT[6] = pIcons_LOD->LoadTexturePtr("IC_CLER", TEXTURE_16BIT_PALETTE); 407 pTexture_IC_KNIGHT[6] = pIcons_LOD->LoadTexturePtr("IC_CLER", TEXTURE_16BIT_PALETTE);
510 pTexture_IC_KNIGHT[7] = pIcons_LOD->LoadTexturePtr("IC_DRUID", TEXTURE_16BIT_PALETTE); 408 pTexture_IC_KNIGHT[7] = pIcons_LOD->LoadTexturePtr("IC_DRUID", TEXTURE_16BIT_PALETTE);
511 pTexture_IC_KNIGHT[8] = pIcons_LOD->LoadTexturePtr("IC_SORC", TEXTURE_16BIT_PALETTE); 409 pTexture_IC_KNIGHT[8] = pIcons_LOD->LoadTexturePtr("IC_SORC", TEXTURE_16BIT_PALETTE);
512 pTexture_MAKETOP = pIcons_LOD->LoadTexturePtr("MAKETOP", TEXTURE_16BIT_PALETTE); 410 pTexture_MAKETOP = pIcons_LOD->LoadTexturePtr("MAKETOP", TEXTURE_16BIT_PALETTE);
513 pTexture_MAKESKY = pIcons_LOD->LoadTexturePtr("MAKESKY", TEXTURE_16BIT_PALETTE); 411 pTexture_MAKESKY = pIcons_LOD->LoadTexturePtr("MAKESKY", TEXTURE_16BIT_PALETTE);
514 for(uX=0;uX < 22;++uX ) // load PlayerPortraits texture 412 for( uX = 0; uX < 22; ++uX ) // load PlayerPortraits texture
515 { 413 {
516 sprintf(pTmpBuf.data(), "%s01", pPlayerPortraitsNames[uX]); 414 sprintf(pTmpBuf.data(), "%s01", pPlayerPortraitsNames[uX]);
517 v1 = pIcons_LOD->LoadTexture(pTmpBuf.data(), TEXTURE_16BIT_PALETTE); 415 pPlayerPortraits[uX] = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(pTmpBuf.data(), TEXTURE_16BIT_PALETTE)];
518 pPlayerPortraits[uX] = &pIcons_LOD->pTextures[v1];
519 416
520 } 417 }
521 pTexture_PlayerFaceMask = pIcons_LOD->LoadTexturePtr("FACEMASK", TEXTURE_16BIT_PALETTE); 418 pTexture_PlayerFaceMask = pIcons_LOD->LoadTexturePtr("FACEMASK", TEXTURE_16BIT_PALETTE);
522 pTexture_buttminu = pIcons_LOD->LoadTexturePtr("buttminu", TEXTURE_16BIT_PALETTE); 419 pTexture_buttminu = pIcons_LOD->LoadTexturePtr("buttminu", TEXTURE_16BIT_PALETTE);
523 pTexture_buttplus = pIcons_LOD->LoadTexturePtr("buttplus", TEXTURE_16BIT_PALETTE); 420 pTexture_buttplus = pIcons_LOD->LoadTexturePtr("buttplus", TEXTURE_16BIT_PALETTE);
532 sprintf(pTmpBuf.data(), "arrowr%d", uControlParam); 429 sprintf(pTmpBuf.data(), "arrowr%d", uControlParam);
533 pTextures_arrowr[uControlParam] = pIcons_LOD->LoadTexturePtr(pTmpBuf.data(), TEXTURE_16BIT_PALETTE); 430 pTextures_arrowr[uControlParam] = pIcons_LOD->LoadTexturePtr(pTmpBuf.data(), TEXTURE_16BIT_PALETTE);
534 } 431 }
535 while ( ++uControlParam < 20 ); 432 while ( ++uControlParam < 20 );
536 pGUIWindow_CurrentMenu = GUIWindow::Create(0, 0, 640, 480, WINDOW_MainMenu, 0, 0); 433 pGUIWindow_CurrentMenu = GUIWindow::Create(0, 0, 640, 480, WINDOW_MainMenu, 0, 0);
537 uControlParama = 0; 434 uControlParam = 0;
538 uXa = 8; 435 uX = 8;
539 do 436 do
540 { 437 {
541 pGUIWindow_CurrentMenu->CreateButton(uXa, 120, 145, 25, 1, 0, UIMSG_PlayerCreationChangeName, uControlParama, 0, "", 0); 438 pGUIWindow_CurrentMenu->CreateButton(uX, 120, 145, 25, 1, 0, UIMSG_PlayerCreationChangeName, uControlParam, 0, "", 0);
542 uXa += 158; 439 uX += 158;
543 ++uControlParama; 440 ++uControlParam;
544 } 441 }
545 while ( (signed int)uXa < 640 ); 442 while ( (signed int)uX < 640 );
546 443
547 pCreationUI_BtnPressLeft[0] = pGUIWindow_CurrentMenu->CreateButton( 10, 32, 11, 13, 1, 0, UIMSG_PlayerCreation_FacePrev, 0, 0, "", pTexture_presleft, 0); 444 pCreationUI_BtnPressLeft[0] = pGUIWindow_CurrentMenu->CreateButton( 10, 32, 11, 13, 1, 0, UIMSG_PlayerCreation_FacePrev, 0, 0, "", pTexture_presleft, 0);
548 pCreationUI_BtnPressLeft[1] = pGUIWindow_CurrentMenu->CreateButton(169, 32, 11, 13, 1, 0, UIMSG_PlayerCreation_FacePrev, 1, 0, "", pTexture_presleft, 0); 445 pCreationUI_BtnPressLeft[1] = pGUIWindow_CurrentMenu->CreateButton(169, 32, 11, 13, 1, 0, UIMSG_PlayerCreation_FacePrev, 1, 0, "", pTexture_presleft, 0);
549 pCreationUI_BtnPressLeft[2] = pGUIWindow_CurrentMenu->CreateButton(327, 32, 11, 13, 1, 0, UIMSG_PlayerCreation_FacePrev, 2, 0, "", pTexture_presleft, 0); 446 pCreationUI_BtnPressLeft[2] = pGUIWindow_CurrentMenu->CreateButton(327, 32, 11, 13, 1, 0, UIMSG_PlayerCreation_FacePrev, 2, 0, "", pTexture_presleft, 0);
550 pCreationUI_BtnPressLeft[3] = pGUIWindow_CurrentMenu->CreateButton(486, 32, 11, 13, 1, 0, UIMSG_PlayerCreation_FacePrev, 3, 0, "", pTexture_presleft, 0); 447 pCreationUI_BtnPressLeft[3] = pGUIWindow_CurrentMenu->CreateButton(486, 32, 11, 13, 1, 0, UIMSG_PlayerCreation_FacePrev, 3, 0, "", pTexture_presleft, 0);
559 pCreationUI_BtnPressRight2[0] = pGUIWindow_CurrentMenu->CreateButton( 74, 103, 11, 13, 1, 0, UIMSG_PlayerCreation_VoiceNext, 0, 0, "", pTexture_pressrigh, 0); 456 pCreationUI_BtnPressRight2[0] = pGUIWindow_CurrentMenu->CreateButton( 74, 103, 11, 13, 1, 0, UIMSG_PlayerCreation_VoiceNext, 0, 0, "", pTexture_pressrigh, 0);
560 pCreationUI_BtnPressRight2[1] = pGUIWindow_CurrentMenu->CreateButton(233, 103, 11, 13, 1, 0, UIMSG_PlayerCreation_VoiceNext, 1, 0, "", pTexture_pressrigh, 0); 457 pCreationUI_BtnPressRight2[1] = pGUIWindow_CurrentMenu->CreateButton(233, 103, 11, 13, 1, 0, UIMSG_PlayerCreation_VoiceNext, 1, 0, "", pTexture_pressrigh, 0);
561 pCreationUI_BtnPressRight2[2] = pGUIWindow_CurrentMenu->CreateButton(391, 103, 11, 13, 1, 0, UIMSG_PlayerCreation_VoiceNext, 2, 0, "", pTexture_pressrigh, 0); 458 pCreationUI_BtnPressRight2[2] = pGUIWindow_CurrentMenu->CreateButton(391, 103, 11, 13, 1, 0, UIMSG_PlayerCreation_VoiceNext, 2, 0, "", pTexture_pressrigh, 0);
562 pCreationUI_BtnPressRight2[3] = pGUIWindow_CurrentMenu->CreateButton(549, 103, 11, 13, 1, 0, UIMSG_PlayerCreation_VoiceNext, 3, 0, "", pTexture_pressrigh, 0); 459 pCreationUI_BtnPressRight2[3] = pGUIWindow_CurrentMenu->CreateButton(549, 103, 11, 13, 1, 0, UIMSG_PlayerCreation_VoiceNext, 3, 0, "", pTexture_pressrigh, 0);
563 460
564 uControlParamb = 0; 461 uControlParam = 0;
565 uXb = 8; 462 uX = 8;
566 do 463 do
567 { 464 {
568 pGUIWindow_CurrentMenu->CreateButton(uXb, 308, 150, v0, 1, 0, UIMSG_48, uControlParamb, 0, "", 0); 465 pGUIWindow_CurrentMenu->CreateButton(uX, 308, 150, v0, 1, 0, UIMSG_48, uControlParam, 0, "", 0);
569 pGUIWindow_CurrentMenu->CreateButton(uXb, v0 + 308, 150, v0, 1, 0, UIMSG_49, uControlParamb, 0, "", 0); 466 pGUIWindow_CurrentMenu->CreateButton(uX, v0 + 308, 150, v0, 1, 0, UIMSG_49, uControlParam, 0, "", 0);
570 pGUIWindow_CurrentMenu->CreateButton(uXb, 2 * v0 + 308, 150, v0, 1, 0, UIMSG_PlayerCreationRemoveUpSkill, uControlParamb, 0, "", 0); 467 pGUIWindow_CurrentMenu->CreateButton(uX, 2 * v0 + 308, 150, v0, 1, 0, UIMSG_PlayerCreationRemoveUpSkill, uControlParam, 0, "", 0);
571 pGUIWindow_CurrentMenu->CreateButton(uXb, 3 * v0 + 308, 150, v0, 1, 0, UIMSG_PlayerCreationRemoveDownSkill, uControlParamb, 0, "", 0); 468 pGUIWindow_CurrentMenu->CreateButton(uX, 3 * v0 + 308, 150, v0, 1, 0, UIMSG_PlayerCreationRemoveDownSkill, uControlParam, 0, "", 0);
572 uXb += 158; 469 uX += 158;
573 ++uControlParamb; 470 ++uControlParam;
574 } 471 }
575 while ( (signed int)uXb < 640 ); 472 while ( (signed int)uX < 640 );
576 473
577 pGUIWindow_CurrentMenu->CreateButton( 5, 21, 153, 365, 1, 0, UIMSG_PlayerCreation_SelectAttribute, 0, '1', "", 0); 474 pGUIWindow_CurrentMenu->CreateButton( 5, 21, 153, 365, 1, 0, UIMSG_PlayerCreation_SelectAttribute, 0, '1', "", 0);
578 pGUIWindow_CurrentMenu->CreateButton(163, 21, 153, 365, 1, 0, UIMSG_PlayerCreation_SelectAttribute, 1, '2', "", 0); 475 pGUIWindow_CurrentMenu->CreateButton(163, 21, 153, 365, 1, 0, UIMSG_PlayerCreation_SelectAttribute, 1, '2', "", 0);
579 pGUIWindow_CurrentMenu->CreateButton(321, 21, 153, 365, 1, 0, UIMSG_PlayerCreation_SelectAttribute, 2, '3', "", 0); 476 pGUIWindow_CurrentMenu->CreateButton(321, 21, 153, 365, 1, 0, UIMSG_PlayerCreation_SelectAttribute, 2, '3', "", 0);
580 pGUIWindow_CurrentMenu->CreateButton(479, 21, 153, 365, 1, 0, UIMSG_PlayerCreation_SelectAttribute, 3, '4', "", 0); 477 pGUIWindow_CurrentMenu->CreateButton(479, 21, 153, 365, 1, 0, UIMSG_PlayerCreation_SelectAttribute, 3, '4', "", 0);
581 478
582 uXc = 23; 479 uX = 23;
583 uControlParamc = 2; 480 uControlParam = 2;
584 do 481 do
585 { 482 {
586 pGUIWindow_CurrentMenu->CreateButton(uXc, 169, 120, 20, 1, 0, UIMSG_0, uControlParamc - 2, 0, "", 0); 483 pGUIWindow_CurrentMenu->CreateButton(uX, 169, 120, 20, 1, 0, UIMSG_0, uControlParam - 2, 0, "", 0);
587 pGUIWindow_CurrentMenu->CreateButton(uXc, v0 + 169, 120, 20, 1, 0, UIMSG_0, uControlParamc - 1, 0, "", 0); 484 pGUIWindow_CurrentMenu->CreateButton(uX, v0 + 169, 120, 20, 1, 0, UIMSG_0, uControlParam - 1, 0, "", 0);
588 pGUIWindow_CurrentMenu->CreateButton(uXc, 2 * v0 + 169, 120, 20, 1, 0, UIMSG_0, uControlParamc, 0, "", 0); 485 pGUIWindow_CurrentMenu->CreateButton(uX, 2 * v0 + 169, 120, 20, 1, 0, UIMSG_0, uControlParam, 0, "", 0);
589 pGUIWindow_CurrentMenu->CreateButton(uXc, 3 * v0 + 169, 120, 20, 1, 0, UIMSG_0, uControlParamc + 1, 0, "", 0); 486 pGUIWindow_CurrentMenu->CreateButton(uX, 3 * v0 + 169, 120, 20, 1, 0, UIMSG_0, uControlParam + 1, 0, "", 0);
590 pGUIWindow_CurrentMenu->CreateButton(uXc, 4 * v0 + 169, 120, 20, 1, 0, UIMSG_0, uControlParamc + 2, 0, "", 0); 487 pGUIWindow_CurrentMenu->CreateButton(uX, 4 * v0 + 169, 120, 20, 1, 0, UIMSG_0, uControlParam + 2, 0, "", 0);
591 pGUIWindow_CurrentMenu->CreateButton(uXc, 5 * v0 + 169, 120, 20, 1, 0, UIMSG_0, uControlParamc + 3, 0, "", 0); 488 pGUIWindow_CurrentMenu->CreateButton(uX, 5 * v0 + 169, 120, 20, 1, 0, UIMSG_0, uControlParam + 3, 0, "", 0);
592 pGUIWindow_CurrentMenu->CreateButton(uXc, 6 * v0 + 169, 120, 20, 1, 0, UIMSG_0, uControlParamc + 4, 0, "", 0); 489 pGUIWindow_CurrentMenu->CreateButton(uX, 6 * v0 + 169, 120, 20, 1, 0, UIMSG_0, uControlParam + 4, 0, "", 0);
593 uControlParamc += 7; 490 uControlParam += 7;
594 uXc += 158; 491 uX += 158;
595 } 492 }
596 while ( (signed int)uControlParamc < 30 ); 493 while ( (signed int)uControlParam < 30 );
597 pGUIWindow_CurrentMenu->_41D08F_set_keyboard_control_group(28, 0, 7, 40); 494 pGUIWindow_CurrentMenu->_41D08F_set_keyboard_control_group(28, 0, 7, 40);
598 495
599 pGUIWindow_CurrentMenu->CreateButton(323, 417, 65, v0, 1, 0, UIMSG_PlayerCreationSelectClass, 0, 0, "", 0); 496 pGUIWindow_CurrentMenu->CreateButton(323, 417, 65, v0, 1, 0, UIMSG_PlayerCreationSelectClass, 0, 0, "", 0);
600 pGUIWindow_CurrentMenu->CreateButton(323, v0 + 417, 65, v0, 1, 0, UIMSG_PlayerCreationSelectClass, 0xC, 0, "", 0); 497 pGUIWindow_CurrentMenu->CreateButton(323, v0 + 417, 65, v0, 1, 0, UIMSG_PlayerCreationSelectClass, 0xC, 0, "", 0);
601 pGUIWindow_CurrentMenu->CreateButton(323, 2 * v0 + 417, 65, v0, 1, 0, UIMSG_PlayerCreationSelectClass, 0x14, 0, "", 0); 498 pGUIWindow_CurrentMenu->CreateButton(323, 2 * v0 + 417, 65, v0, 1, 0, UIMSG_PlayerCreationSelectClass, 0x14, 0, "", 0);
604 pGUIWindow_CurrentMenu->CreateButton(388, 2 * v0 + 417, 65, v0, 1, 0, UIMSG_PlayerCreationSelectClass, 0x20, 0, "", 0); 501 pGUIWindow_CurrentMenu->CreateButton(388, 2 * v0 + 417, 65, v0, 1, 0, UIMSG_PlayerCreationSelectClass, 0x20, 0, "", 0);
605 pGUIWindow_CurrentMenu->CreateButton(453, 417, 65, v0, 1, 0, UIMSG_PlayerCreationSelectClass, 0x10, 0, "", 0); 502 pGUIWindow_CurrentMenu->CreateButton(453, 417, 65, v0, 1, 0, UIMSG_PlayerCreationSelectClass, 0x10, 0, "", 0);
606 pGUIWindow_CurrentMenu->CreateButton(453, v0 + 417, 65, v0, 1, 0, UIMSG_PlayerCreationSelectClass, 8, 0, "", 0); 503 pGUIWindow_CurrentMenu->CreateButton(453, v0 + 417, 65, v0, 1, 0, UIMSG_PlayerCreationSelectClass, 8, 0, "", 0);
607 pGUIWindow_CurrentMenu->CreateButton(453, 2 * v0 + 417, 65, v0, 1, 0, UIMSG_PlayerCreationSelectClass, 4, 0, "", 0); 504 pGUIWindow_CurrentMenu->CreateButton(453, 2 * v0 + 417, 65, v0, 1, 0, UIMSG_PlayerCreationSelectClass, 4, 0, "", 0);
608 505
609 uControlParamd = 0; 506 uControlParam = 0;
610 do 507 do
611 { 508 {
612 uXd = -5; 509 uX = -5;
613 if ( uControlParamd <= 3 ) 510 if ( uControlParam <= 3 )
614 uXd = 0; 511 uX = 0;
615 pGUIWindow_CurrentMenu->CreateButton(100 * (uControlParamd / 3) + uXd + 17, v0 * (uControlParamd % 3) + 417, 100, v0, 1, 0, UIMSG_PlayerCreationSelectActiveSkill, 512 pGUIWindow_CurrentMenu->CreateButton(100 * (uControlParam / 3) + uX + 17, v0 * (uControlParam % 3) + 417, 100, v0, 1, 0, UIMSG_PlayerCreationSelectActiveSkill,
616 uControlParamd, 0, "", 0); 513 uControlParam, 0, "", 0);
617 ++uControlParamd; 514 ++uControlParam;
618 } 515 }
619 while ( uControlParamd < 9 ); 516 while ( uControlParam < 9 );
620 517
621 pPlayerCreationUI_BtnOK = pGUIWindow_CurrentMenu->CreateButton(580, 431, 51, 39, 1, 0, UIMSG_PlayerCreationClickOK, 0, '\r', "", pIcons_LOD->GetTexture(uTextureID_BUTTMAKE), 0); 518 pPlayerCreationUI_BtnOK = pGUIWindow_CurrentMenu->CreateButton(580, 431, 51, 39, 1, 0, UIMSG_PlayerCreationClickOK, 0, '\r', "", pIcons_LOD->GetTexture(uTextureID_BUTTMAKE), 0);
622 pPlayerCreationUI_BtnReset = pGUIWindow_CurrentMenu->CreateButton(527, 431, 51, 39, 1, 0, UIMSG_PlayerCreationClickReset, 0, 'C', "", pIcons_LOD->GetTexture(uTextureID_BUTTMAKE2), 0); 519 pPlayerCreationUI_BtnReset = pGUIWindow_CurrentMenu->CreateButton(527, 431, 51, 39, 1, 0, UIMSG_PlayerCreationClickReset, 0, 'C', "", pIcons_LOD->GetTexture(uTextureID_BUTTMAKE2), 0);
623 pPlayerCreationUI_BtnMinus = pGUIWindow_CurrentMenu->CreateButton(523, 393, 20, 35, 1, 0, UIMSG_PlayerCreationClickMinus, 0, '-', "", pTexture_buttminu, 0); 520 pPlayerCreationUI_BtnMinus = pGUIWindow_CurrentMenu->CreateButton(523, 393, 20, 35, 1, 0, UIMSG_PlayerCreationClickMinus, 0, '-', "", pTexture_buttminu, 0);
624 pPlayerCreationUI_BtnPlus = pGUIWindow_CurrentMenu->CreateButton(613, 393, 20, 35, 1, 0, UIMSG_PlayerCreationClickPlus, 1, '+', "", pTexture_buttplus, 0); 521 pPlayerCreationUI_BtnPlus = pGUIWindow_CurrentMenu->CreateButton(613, 393, 20, 35, 1, 0, UIMSG_PlayerCreationClickPlus, 1, '+', "", pTexture_buttplus, 0);
634 pFontCChar = 0; 531 pFontCChar = 0;
635 } 532 }
636 //----- (00497526) -------------------------------------------------------- 533 //----- (00497526) --------------------------------------------------------
637 bool PlayerCreationUI_Loop() 534 bool PlayerCreationUI_Loop()
638 { 535 {
639 //RGBTexture *pTexture; // ebx@1
640 //UINT v1; // esi@1
641 unsigned int v2; // ecx@3
642 LONG uMouseX; // edi@6 536 LONG uMouseX; // edi@6
643 LONG uMouseY; // eax@6 537 LONG uMouseY; // eax@6
644 GUIButton *pControlsHead; // edx@6 538 //GUIButton *pControlsHead; // edx@6
645 //unsigned int pNumMessage; // ecx@7 539 //int pControlParam; // esi@12
646 int pControlParam; // esi@12
647 signed int v8; // edi@30 540 signed int v8; // edi@30
648 int v9; // edx@31 541 int v9; // edx@31
649 char *v10; // ebx@37 542 char *v10; // ebx@37
650 Player *v11; // esi@38
651 //signed int uSpellBookPageCount; // ecx@40
652 int v13; // eax@40
653 //signed int uSkillIdx; // eax@45
654 int v15; // eax@70
655 signed int v16; // ecx@70
656 //unsigned int v18; // [sp-4h] [bp-84h]@48
657 ItemGen item; // [sp+Ch] [bp-74h]@37 543 ItemGen item; // [sp+Ch] [bp-74h]@37
658 char v20[32]; // [sp+30h] [bp-50h]@29 544 char v20[32]; // [sp+30h] [bp-50h]@29
659 //char v21; // [sp+31h] [bp-4Fh]@29
660 //__int16 v22; // [sp+4Dh] [bp-33h]@29
661 char v23; // [sp+4Fh] [bp-31h]@29
662 MSG Msg; // [sp+50h] [bp-30h]@17 545 MSG Msg; // [sp+50h] [bp-30h]@17
663 POINT v25; // [sp+6Ch] [bp-14h]@6 546 POINT v25; // [sp+6Ch] [bp-14h]@6
664 bool v26; // [sp+74h] [bp-Ch]@1 547 bool party_not_creation_flag; // [sp+74h] [bp-Ch]@1
665 //POINT v24; // [sp+78h] [bp-8h]@6 548
666 //Player *pPlayer; 549 party_not_creation_flag = false;
667
668 //pTexture = &pTexture_PCX;
669 v26 = 0;
670 pTexture_PCX.Release(); 550 pTexture_PCX.Release();
671 pTexture_PCX.Load("makeme.pcx", 0); 551 pTexture_PCX.Load("makeme.pcx", 0);
672 552
673 v2 = 6;
674 pGUIWindow_CurrentMenu->receives_keyboard_input_2 = WINDOW_INPUT_NONE; 553 pGUIWindow_CurrentMenu->receives_keyboard_input_2 = WINDOW_INPUT_NONE;
675 //LABEL_27: 554 SetCurrentMenuID(MENU_CREATEPARTY);
676 SetCurrentMenuID((MENU_STATE)v2);
677 while ( GetCurrentMenuID() == MENU_CREATEPARTY ) 555 while ( GetCurrentMenuID() == MENU_CREATEPARTY )
678 { 556 {
679 uMouseX = pMouse->GetCursorPos(&v25)->x; 557 uMouseX = pMouse->GetCursorPos(&v25)->x;
680 uMouseY = pMouse->GetCursorPos(&v25)->y; 558 uMouseY = pMouse->GetCursorPos(&v25)->y;
681 pControlsHead = pGUIWindow_CurrentMenu->pControlsHead; 559 //pControlsHead = pGUIWindow_CurrentMenu->pControlsHead;
682 560
683 //does nothing actually 561 //does nothing actually
684 /*if ( pControlsHead != (GUIButton *)v1 ) 562 /*if ( pControlsHead != (GUIButton *)v1 )
685 { 563 {
686 pNumMessage = pMessageQueue_50CBD0->uNumMessages; 564 pNumMessage = pMessageQueue_50CBD0->uNumMessages;
717 GUI_UpdateWindows(); 595 GUI_UpdateWindows();
718 pRenderer->EndScene(); 596 pRenderer->EndScene();
719 pRenderer->Present(); 597 pRenderer->Present();
720 if ( uGameState == GAME_FINISHED )//if click Esc in PlayerCreation Window 598 if ( uGameState == GAME_FINISHED )//if click Esc in PlayerCreation Window
721 { 599 {
722 v26 = 1; 600 party_not_creation_flag = true;
723 //v2 = 0;
724 //goto LABEL_27;
725 SetCurrentMenuID(MENU_MAIN); 601 SetCurrentMenuID(MENU_MAIN);
726 continue; 602 continue;
727 } 603 }
728 if ( uGameState == GAME_STATE_STARTING_NEW_GAME )//if click OK in PlayerCreation Window 604 if ( uGameState == GAME_STATE_STARTING_NEW_GAME )//if click OK in PlayerCreation Window
729 { 605 {
730 uGameState = GAME_STATE_PLAYING; 606 uGameState = GAME_STATE_PLAYING;
731 //v2 = 1;
732 //goto LABEL_27;
733 SetCurrentMenuID(MENU_NEWGAME); 607 SetCurrentMenuID(MENU_NEWGAME);
734 continue; 608 continue;
735 } 609 }
736 } 610 }
737 } 611 }
738 pTexture_PCX.Release(); 612 pTexture_PCX.Release();
739 pGUIWindow_CurrentMenu->Release(); 613 pGUIWindow_CurrentMenu->Release();
740 pIcons_LOD->RemoveTexturesPackFromTextureList(); 614 pIcons_LOD->RemoveTexturesPackFromTextureList();
741 615
742 int v1 = 0;
743 memset(v20, 0, 32); 616 memset(v20, 0, 32);
744 do 617 for ( int i = 0; i < 32; i++ )
745 { 618 {
746 v8 = 0; 619 for ( v8 = 0; v8 < 10; ++v8 )
747 do
748 { 620 {
749 v9 = rand() % 32; 621 v9 = rand() % 32;
750 if ( !v20[v9] ) 622 if ( !v20[v9] )
751 break; 623 break;
752 ++v8; 624 }
753 }
754 while ( v8 < 10 );
755 if ( v8 == 10 ) 625 if ( v8 == 10 )
756 { 626 {
757 v9 = 0; 627 v9 = 0;
758 if ( v20[0] ) 628 if ( v20[0] )
759 { 629 {
760 do 630 do
761 ++v9; 631 ++v9;
762 while ( v20[v9] ); 632 while ( v20[v9] );
763 } 633 }
764 } 634 }
765 pParty->field_854[v1++] = v9; 635 pParty->field_854[i] = v9;
766 v20[v9] = 1; 636 v20[v9] = 1;
767 } 637 }
768 while ( (signed int)v1 < 32 ); 638
769 //v10 = (char *)&pParty->pPlayers[0].sResMagicBase;
770
771 item.Reset(); 639 item.Reset();
772 //for ( pPlayer = &pParty->pPlayers[0]; pPlayer < &pParty->pPlayers[4]; pPlayer++)
773 for (uint i = 0; i < 4; ++i) 640 for (uint i = 0; i < 4; ++i)
774 { 641 {
775 auto player = &pParty->pPlayers[i]; 642 if (pParty->pPlayers[i].classType == PLAYER_CLASS_KNIGHT)
776 //v11 = pPlayer; 643 pParty->pPlayers[i].sResMagicBase = 10;
777 if (player->classType == PLAYER_CLASS_KNIGHT) 644 pParty->pPlayers[i].pPlayerBuffs[22].uExpireTime = 0;
778 player->sResMagicBase = 10;
779 //*((short *)v10 + 400) = 0;
780 player->pPlayerBuffs[22].uExpireTime = 0;
781 for (uint j = 0; j < 9; j++) 645 for (uint j = 0; j < 9; j++)
782 { 646 {
783 if (player->pActiveSkills[PLAYER_SKILL_FIRE + j]) 647 if (pParty->pPlayers[i].pActiveSkills[PLAYER_SKILL_FIRE + j])
784 { 648 {
785 player->lastOpenedSpellbookPage = j; 649 pParty->pPlayers[i].lastOpenedSpellbookPage = j;
786 break; 650 break;
787 } 651 }
788 } 652 }
789 pItemsTable->GenerateItem(2, 40, &item); 653 pItemsTable->GenerateItem(2, 40, &item);
790 player->AddItem2(-1, &item); 654 pParty->pPlayers[i].AddItem2(-1, &item);
791 //uSkillIdx = 0; 655
792 //v24.y = 0; 656 pParty->pPlayers[i].sHealth = pParty->pPlayers[i].GetMaxHealth();
793 657 pParty->pPlayers[i].sMana = pParty->pPlayers[i].GetMaxMana();
794 player->sHealth = player->GetMaxHealth();
795 player->sMana = player->GetMaxMana();
796 for (uint j = 0; j < 37; ++j) 658 for (uint j = 0; j < 37; ++j)
797 { 659 {
798 if (!player->pActiveSkills[j]) 660 if (!pParty->pPlayers[i].pActiveSkills[j])
799 continue; 661 continue;
800 662
801 switch (j) 663 switch (j)
802 { 664 {
803 case PLAYER_SKILL_STAFF: player->AddItem(-1, 61); break; 665 case PLAYER_SKILL_STAFF: pParty->pPlayers[i].AddItem(-1, 61); break;
804 case PLAYER_SKILL_SWORD: player->AddItem(-1, 1); break; 666 case PLAYER_SKILL_SWORD: pParty->pPlayers[i].AddItem(-1, 1); break;
805 case PLAYER_SKILL_DAGGER: player->AddItem(-1, 15); break; 667 case PLAYER_SKILL_DAGGER: pParty->pPlayers[i].AddItem(-1, 15); break;
806 case PLAYER_SKILL_AXE: player->AddItem(-1, 23); break; 668 case PLAYER_SKILL_AXE: pParty->pPlayers[i].AddItem(-1, 23); break;
807 case PLAYER_SKILL_SPEAR: player->AddItem(-1, 31); break; 669 case PLAYER_SKILL_SPEAR: pParty->pPlayers[i].AddItem(-1, 31); break;
808 case PLAYER_SKILL_BOW: player->AddItem(-1, 47); break; 670 case PLAYER_SKILL_BOW: pParty->pPlayers[i].AddItem(-1, 47); break;
809 case PLAYER_SKILL_MACE: player->AddItem(-1, 50); break; 671 case PLAYER_SKILL_MACE: pParty->pPlayers[i].AddItem(-1, 50); break;
810 case PLAYER_SKILL_BLASTER: Error("No blasters at startup :p"); 672 case PLAYER_SKILL_BLASTER: Error("No blasters at startup :p");
811 case PLAYER_SKILL_SHIELD: player->AddItem(-1, 84); break; 673 case PLAYER_SKILL_SHIELD: pParty->pPlayers[i].AddItem(-1, 84); break;
812 case PLAYER_SKILL_LEATHER: player->AddItem(-1, 66); break; 674 case PLAYER_SKILL_LEATHER: pParty->pPlayers[i].AddItem(-1, 66); break;
813 case PLAYER_SKILL_CHAIN: player->AddItem(-1, 71); break; 675 case PLAYER_SKILL_CHAIN: pParty->pPlayers[i].AddItem(-1, 71); break;
814 case PLAYER_SKILL_PLATE: player->AddItem(-1, 76); break; 676 case PLAYER_SKILL_PLATE: pParty->pPlayers[i].AddItem(-1, 76); break;
815 case PLAYER_SKILL_FIRE: 677 case PLAYER_SKILL_FIRE:
816 player->AddItem(-1, 0x191); 678 pParty->pPlayers[i].AddItem(-1, 0x191);
817 player->spellbook.pFireSpellbook.bIsSpellAvailable[0] = true; 679 pParty->pPlayers[i].spellbook.pFireSpellbook.bIsSpellAvailable[0] = true;
818 break; 680 break;
819 case PLAYER_SKILL_AIR: 681 case PLAYER_SKILL_AIR:
820 player->AddItem(-1, 0x19C); 682 pParty->pPlayers[i].AddItem(-1, 0x19C);
821 player->spellbook.pAirSpellbook.bIsSpellAvailable[0] = true; 683 pParty->pPlayers[i].spellbook.pAirSpellbook.bIsSpellAvailable[0] = true;
822 break; 684 break;
823 case PLAYER_SKILL_WATER: 685 case PLAYER_SKILL_WATER:
824 player->AddItem(-1, 0x1A7); 686 pParty->pPlayers[i].AddItem(-1, 0x1A7);
825 player->spellbook.pWaterSpellbook.bIsSpellAvailable[0] = true; 687 pParty->pPlayers[i].spellbook.pWaterSpellbook.bIsSpellAvailable[0] = true;
826 break; 688 break;
827 case PLAYER_SKILL_EARTH: 689 case PLAYER_SKILL_EARTH:
828 player->AddItem(-1, 0x1B2); 690 pParty->pPlayers[i].AddItem(-1, 0x1B2);
829 player->spellbook.pEarthSpellbook.bIsSpellAvailable[0] = true; 691 pParty->pPlayers[i].spellbook.pEarthSpellbook.bIsSpellAvailable[0] = true;
830 break; 692 break;
831 case PLAYER_SKILL_SPIRIT: 693 case PLAYER_SKILL_SPIRIT:
832 player->AddItem(-1, 0x1BD); 694 pParty->pPlayers[i].AddItem(-1, 0x1BD);
833 player->spellbook.pSpiritSpellbook.bIsSpellAvailable[0] = true; 695 pParty->pPlayers[i].spellbook.pSpiritSpellbook.bIsSpellAvailable[0] = true;
834 break; 696 break;
835 case PLAYER_SKILL_MIND: 697 case PLAYER_SKILL_MIND:
836 player->AddItem(-1, 0x1C8); 698 pParty->pPlayers[i].AddItem(-1, 0x1C8);
837 player->spellbook.pMindSpellbook.bIsSpellAvailable[0] = true; 699 pParty->pPlayers[i].spellbook.pMindSpellbook.bIsSpellAvailable[0] = true;
838 break; 700 break;
839 case PLAYER_SKILL_BODY: 701 case PLAYER_SKILL_BODY:
840 player->AddItem(-1, 0x1D3); 702 pParty->pPlayers[i].AddItem(-1, 0x1D3);
841 player->spellbook.pBodySpellbook.bIsSpellAvailable[0] = true; 703 pParty->pPlayers[i].spellbook.pBodySpellbook.bIsSpellAvailable[0] = true;
842 break; 704 break;
843 case PLAYER_SKILL_LIGHT: 705 case PLAYER_SKILL_LIGHT:
844 case PLAYER_SKILL_DARK: 706 case PLAYER_SKILL_DARK:
845 case PLAYER_SKILL_DIPLOMACY: 707 case PLAYER_SKILL_DIPLOMACY:
846 Error("No dimoplacy in mm7 (yet)"); 708 Error("No dimoplacy in mm7 (yet)");
849 case PLAYER_SKILL_REPAIR: 711 case PLAYER_SKILL_REPAIR:
850 case PLAYER_SKILL_MEDITATION: 712 case PLAYER_SKILL_MEDITATION:
851 case PLAYER_SKILL_PERCEPTION: 713 case PLAYER_SKILL_PERCEPTION:
852 case PLAYER_SKILL_TRAP_DISARM: 714 case PLAYER_SKILL_TRAP_DISARM:
853 case PLAYER_SKILL_LEARNING: 715 case PLAYER_SKILL_LEARNING:
854 player->AddItem(-1, 0xDC); 716 pParty->pPlayers[i].AddItem(-1, 0xDC);
855 player->AddItem(-1, 5 * (rand() % 3 + 40)); 717 pParty->pPlayers[i].AddItem(-1, 5 * (rand() % 3 + 40));
856 break; 718 break;
857 case PLAYER_SKILL_DODGE: player->AddItem(-1, 115); break; 719 case PLAYER_SKILL_DODGE: pParty->pPlayers[i].AddItem(-1, 115); break;
858 case PLAYER_SKILL_UNARMED: player->AddItem(-1, 110); break; 720 case PLAYER_SKILL_UNARMED: pParty->pPlayers[i].AddItem(-1, 110); break;
859 default: 721 default:
860 break; 722 break;
861 } 723 }
862 724
863 for (uint k = 0; k < 138; k++) 725 for (uint k = 0; k < 138; k++)
864 { 726 {
865 if (player->pOwnItems[k].uItemID) 727 if (pParty->pPlayers[i].pOwnItems[k].uItemID)
866 player->pOwnItems[k].SetIdentified(); 728 pParty->pPlayers[i].pOwnItems[k].SetIdentified();
867 } 729 }
868 } 730 }
869 } 731 }
870 732
871 pAudioPlayer->StopChannels(-1, -1); 733 pAudioPlayer->StopChannels(-1, -1);
872 return v26; 734 return party_not_creation_flag;
873 } 735 }