Mercurial > mm7
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 } |