Mercurial > mm7
changeset 1204:832f09144726
hopefully correct merge
author | Grumpy7 |
---|---|
date | Sat, 08 Jun 2013 21:47:29 +0200 |
parents | 1eed3e0ab666 |
children | 8c02e6f74b29 |
files | Arcomage.cpp Arcomage.h |
diffstat | 2 files changed, 505 insertions(+), 520 deletions(-) [+] |
line wrap: on
line diff
--- a/Arcomage.cpp Sat Jun 08 21:40:49 2013 +0200 +++ b/Arcomage.cpp Sat Jun 08 21:47:29 2013 +0200 @@ -23,39 +23,39 @@ -void sub_409BE8(); - - -void am_409FE9(); -void am_40A198(); +void SetStartConditions(); + + +void SetStartGameData(); +void FillPlayerDeck(); void am_40A255(); void am_40A283(int a1); int GetEmptyCardSlotIndex(int player_num); -void am_40A346(int player_num); +void IncreaseResourcesInTurn(int player_num); void __cdecl am_40A383(); -bool am_40A514(); +bool IsGameOver(); char __thiscall am_40A560(unsigned int _this); -void am_blts(int a1); // idb +void DrawGameUI(int a1); // idb void am_40AA4E(); -void __cdecl am_chroma_blts(); -void __cdecl am_DrawUI(); -void am_40B102(int a1, char *text, POINT *pXY); // idb -void am_40B17E(int a1, char* text, POINT *pXY); // idb -void am_40B1F3(int a1, char* text, POINT* pXY); -void am_40B268(int a1, char *text, POINT *pXY); // idb -void __cdecl am_chroma_and_copy_blts(); -void __cdecl am_chroma_blt(); +void DrawRectanglesForText(); +void DrawPlayersText(); +void DrawPlayerLevels(int a1, char *text, POINT *pXY); // idb +void DrawBricksCount(int a1, char* text, POINT *pXY); // idb +void DrawGemsCount(int a1, char* text, POINT* pXY); +void DrawBeastsCount(int a1, char *text, POINT *pXY); // idb +void DrawPlayersTowers(); +void DrawPlayersWall(); void __cdecl am_40B4B9(); void __fastcall am_40B76F(int a1); int GetPlayerHandCardCount(int player_num); signed int __fastcall am_40BB67(int a1); char __fastcall am_40BCFB(int a1, signed int a2); -bool __fastcall am_40BE0E(int a1, signed int a2); -bool am_40BF15(int player_num, int hand_card_indx); +bool PlayCard(int player_num, signed int card_slot_num); +bool CanCardBePlayed(int player_num, int hand_card_indx); void __fastcall am_40BF77(int a1, unsigned int uCardID); // idb int am_40D2B4(POINT* a1, int a2); // weak int __fastcall am_40D402(int, int); // weak -int __cdecl am_40D444(); +int __cdecl GameResultsApply(); void pPrimaryWindow_draws_text(int a1, const char *pText, POINT *pXY); void __thiscall am_BeginScene(unsigned __int16 *pPcxPixels, int a2, int a3); // idb @@ -71,22 +71,22 @@ /* 388 */ #pragma pack(push, 1) -struct stru348 +struct ArcomageStartConditions { - __int16 field_0; - __int16 field_2; - __int16 field_4; - __int16 field_6; - __int16 field_8; - __int16 field_A; - __int16 field_C; - __int16 field_E; - __int16 field_10; - __int16 field_12; + __int16 max_tower; + __int16 max_resources; + __int16 tower_height; + __int16 wall_height; + __int16 quarry_level; + __int16 magic_level; + __int16 might_level; + __int16 bricks_amount; + __int16 gems_amount; + __int16 beasts_amount; int field_14; }; #pragma pack(pop) -stru348 stru_4E1890[13] = +ArcomageStartConditions start_conditions[13] = { { 30, 100, 15, 5, 2, 2, 2, 10, 10, 10, 0}, { 50, 150, 20, 5, 2, 2, 2, 5, 5, 5, 1}, @@ -108,9 +108,8 @@ ArcomageGame *pArcomageGame = new ArcomageGame; +ArcomagePlayer am_Players[2]; ArcomageCard pCards[87]; -std::array<ArcomagePlayer, 2> am_Players; - Acromage_st1 struct_st1[10]; stru272 array_4FABD0[10]; @@ -150,26 +149,27 @@ char am_byte_4E185D; // weak -int amuint_4E1860; // weak -int amuint_4E1864; // weak -int amuint_4E1868; // weak -int amuint_4E186C; // weak -int amuint_4E1870; // weak +int start_tower_height; // weak +int start_wall_height; // weak +int start_quarry_level; // weak +int start_magic_level; // weak +int start_might_level; // weak int dword_4E1874 = 5; // weak -int dword_4E1878 = 1; // weak -int dword_4E187C = 1; // weak -int dword_4E1880 = 1; // weak -int dword_4E1884 = 50; // weak -int dword_4E1888 = 100 ; // weak +int quarry_bonus = 1; // weak +int magic_bonus = 1; // weak +int might_bonus = 1; // weak + +int max_tower_height = 50; // weak +int max_resources_amount = 100 ; // weak int dword_4DF3A4; // weak char byte_4FAA2C; // weak char byte_4FAA2D; // weak -int amuint_4FAA6C; // idb +int current_player_num; // idb char am_byte_4FAA77; // weak signed int dword_4FABBC; // idb @@ -177,6 +177,10 @@ int dword_4FABC8; // weak +int start_bricks_amount; // weak +int start_gems_amount; // weak +int start_beasts_amount; // weak + //----- (0040DD2F) -------------------------------------------------------- bool stru273::_40DD2F() @@ -1552,20 +1556,20 @@ stru272 *v3; // esi@17 __int16 *v4; // esi@23 - while ( !pArcomageGame->field_F5 ) + while ( !pArcomageGame->GameOver ) { pArcomageGame->field_F6 = 1; byte_4FAA24 = 1; - am_40A346(amuint_4FAA6C); + IncreaseResourcesInTurn(current_player_num); LABEL_8: while ( byte_4FAA24 ) { amuint_4FABC0 = -1; - am_40A283(amuint_4FAA6C); + am_40A283(current_player_num); while ( 1 ) { - byte_4FAA24 = am_40A560(amuint_4FAA6C); - if ( GetPlayerHandCardCount(amuint_4FAA6C) <= dword_4E1874 ) + byte_4FAA24 = am_40A560(current_player_num); + if ( GetPlayerHandCardCount(current_player_num) <= dword_4E1874 ) break; am_byte_4FAA77 = 1; if ( pArcomageGame->field_F4 ) @@ -1573,13 +1577,13 @@ } am_byte_4FAA77 = 0; } - pArcomageGame->field_F5 = am_40A514(); - if ( !pArcomageGame->field_F5 ) + pArcomageGame->GameOver = IsGameOver(); + if ( !pArcomageGame->GameOver ) am_40A383(); if ( pArcomageGame->field_F4 ) - pArcomageGame->field_F5 = 1; + pArcomageGame->GameOver = 1; } - am_40D444(); + GameResultsApply(); if ( byte_4FAA2C ) { // v2 = retzero_sub_40DFA7((int)dword_4FAA28); @@ -1614,7 +1618,7 @@ //----- (00409FE9) -------------------------------------------------------- -void am_409FE9() +void SetStartGameData() { signed int j; // edx@7 @@ -1622,31 +1626,31 @@ signed int i; // ecx@13 signed int card_dispenser_counter; // eax@13 - amuint_4FAA6C = dword_505890; - sub_409BE8(); + current_player_num = dword_505890; + SetStartConditions(); for(i=0; i<2; ++i ) { if ( i ) { strcpy(am_Players[1].pPlayerName, pArcomageGame->pPlayer2Name); if ( byte_4E185C ) - am_Players[1].field_20 = 0; + am_Players[1].IsHisTurn = 0; else - am_Players[1].field_20 = 1; + am_Players[1].IsHisTurn = 1; } else { strcpy(am_Players[0].pPlayerName, pArcomageGame->pPlayer1Name); - am_Players[0].field_20 = 1; + am_Players[0].IsHisTurn = 1; } - am_Players[i].field_24 = amuint_4E1860; - am_Players[i].field_28 = amuint_4E1864; - am_Players[i].field_2C = amuint_4E1868; - am_Players[i].field_30 = amuint_4E186C; - am_Players[i].field_34 = amuint_4E1870; - am_Players[i].field_38 = amuint_505884; - am_Players[i].field_3C = amuint_505888; - am_Players[i].field_40 = amuint_50588C; + am_Players[i].tower_height = start_tower_height; + am_Players[i].wall_height = start_wall_height; + am_Players[i].quarry_level = start_quarry_level; + am_Players[i].magic_level = start_magic_level; + am_Players[i].might_level = start_might_level; + am_Players[i].resource_bricks = start_bricks_amount; + am_Players[i].resource_gems = start_gems_amount; + am_Players[i].resource_beasts = start_beasts_amount; for (j=0; j<10; ++j ) { @@ -1699,11 +1703,11 @@ } } - am_40A198(); + FillPlayerDeck(); } //----- (0040A198) -------------------------------------------------------- -void am_40A198() +void FillPlayerDeck() { signed int v3; // eax@4 @@ -1743,7 +1747,7 @@ } while ( v7 == 1 ); card_taken_flags[v6]=1; - playDeck.cards_IDs[i] = deckMaster.cards_IDs[v6]; + playDeck.cards_IDs[i] = deckMaster.cards_IDs[v6]; playDeck.cardsInUse[i] = deckMaster.cardsInUse[v6]; } @@ -1784,7 +1788,7 @@ { if ( v2 >= DECK_SIZE ) { - am_40A198(); + FillPlayerDeck(); v2 = dword_4FABC8; } if ( !playDeck.cardsInUse[v2] ) @@ -1797,7 +1801,7 @@ } while ( !v5 ); - ArcomageGame::PlaySound(0x15u); + ArcomageGame::PlaySound(21); result = GetEmptyCardSlotIndex(v4); if ( result != -1 ) { @@ -1828,11 +1832,11 @@ } //----- (0040A346) -------------------------------------------------------- -void am_40A346( int player_num ) +void IncreaseResourcesInTurn( int player_num ) { - am_Players[player_num].field_38 += dword_4E1878 + am_Players[player_num].field_2C; - am_Players[player_num].field_3C += dword_4E187C + am_Players[player_num].field_30; - am_Players[player_num].field_40 += dword_4E1880 + am_Players[player_num].field_34; + am_Players[player_num].resource_bricks += quarry_bonus + am_Players[player_num].quarry_level; + am_Players[player_num].resource_gems += magic_bonus + am_Players[player_num].magic_level; + am_Players[player_num].resource_beasts += might_bonus + am_Players[player_num].might_level; } @@ -1852,12 +1856,12 @@ if ( !pArcomageGame->field_F4 ) { - if ( am_Players[0].field_20 != 1 || am_Players[1].field_20 != 1 ) + if ( am_Players[0].IsHisTurn != 1 || am_Players[1].IsHisTurn != 1 ) { - ++amuint_4FAA6C; + ++current_player_num; am_byte_4FAA75 = 1; - if ( amuint_4FAA6C >= 2 ) - amuint_4FAA6C = 0; + if ( current_player_num >= 2 ) + current_player_num = 0; } else { @@ -1870,23 +1874,23 @@ v11.x = 320 - 12 * v0 / 2; pPrimaryWindow_draws_text(-1, Dest, &v11); am_byte_4FAA75 = 1; - v1 = amuint_4FAA6C + 1; - v3 = __OFSUB__(amuint_4FAA6C + 1, 2); - v2 = amuint_4FAA6C++ - 1 < 0; + v1 = current_player_num + 1; + v3 = __OFSUB__(current_player_num + 1, 2); + v2 = current_player_num++ - 1 < 0; if ( !(v2 ^ v3) ) { v1 = 0; - amuint_4FAA6C = 0; + current_player_num = 0; } inv_strcpy(am_Players[v1].pPlayerName, Dest); v4 = 0; v11.y = 260; v11.x = 320 - 12 * v4 / 2; pPrimaryWindow_draws_text(-1, Dest, &v11); - v6.left = 0; + /* v6.left = 0; v6.right = 640; v6.top = 0; - v6.bottom = 480; + v6.bottom = 480;*/ //nullsub_1(); CallRenderPresent(); //nullsub_1(); @@ -1913,12 +1917,12 @@ pArcomageGame->field_F4 = 1; byte_4FAA74 = 1; LABEL_13: - v11.x = 0; + /* v11.x = 0; v11.y = 0; v6.left = 0; v6.right = 640; v6.top = 0; - v6.bottom = 480; + v6.bottom = 480;*/ //nullsub_1(); CallRenderPresent(); } @@ -1927,20 +1931,20 @@ //----- (0040A514) -------------------------------------------------------- -bool am_40A514() +bool IsGameOver() { bool result; // eax@1 result = false; for(int i=0; i<2; ++i) { - if ( am_Players[i].field_24 <= 0 ) + if ( am_Players[i].tower_height <= 0 ) + result = true; + if ( am_Players[i].tower_height >= max_tower_height ) result = true; - if ( am_Players[i].field_24 >= dword_4E1884 ) - result = true; - if ( am_Players[i].field_38 >= dword_4E1888 - || am_Players[i].field_3C >= dword_4E1888 - || am_Players[i].field_40 >= dword_4E1888 ) + if ( am_Players[i].resource_bricks >= max_resources_amount + || am_Players[i].resource_gems >= max_resources_amount + || am_Players[i].resource_beasts >= max_resources_amount ) result = true; } @@ -1948,9 +1952,7 @@ byte_4FAA2C = 1; return result; } -// 4E1884: using guessed type int dword_4E1884; -// 4E1888: using guessed type int dword_4E1888; -// 4FAA2C: using guessed type char byte_4FAA2C; + //----- (0040A560) -------------------------------------------------------- char am_40A560(unsigned int _this) @@ -2015,18 +2017,18 @@ pArcomageGame->field_F4 = 1; break; } - v4 = amuint_4FAA6C; - if (am_Players[amuint_4FAA6C].field_20 != 1 && !byte_4FAA00 && !byte_4FAA2E && !byte_4FAA2D ) + v4 = current_player_num; + if (am_Players[current_player_num].IsHisTurn != 1 && !byte_4FAA00 && !byte_4FAA2E && !byte_4FAA2D ) { if ( am_byte_4FAA75 ) am_byte_4FAA76 = 1; - am_408BB4(amuint_4FAA6C); - v4 = amuint_4FAA6C; + am_408BB4(current_player_num); + v4 = current_player_num; byte_4FAA2E = 1; } if ( amuint_4FAA4C != -1 && amuint_4FAA38 > 10 ) amuint_4FAA38 = 10; - if ( byte_4FAA2E || byte_4FAA2D ||am_Players[v4].field_20 != 1 ) + if ( byte_4FAA2E || byte_4FAA2D ||am_Players[v4].IsHisTurn != 1 ) { pArcomageGame->field_F6 = 1; if ( byte_4FAA2D ) @@ -2089,7 +2091,7 @@ { if ( a2.field_0 == 7 ) { - if ( am_40BE0E(a1, dword_4FABBC) ) + if ( PlayCard(a1, dword_4FABBC) ) { byte_4FAA2E = 1; if ( am_byte_4FAA75 ) @@ -2148,7 +2150,7 @@ }*/ if ( pArcomageGame->field_F6 ) { - am_blts(v13); + DrawGameUI(v13); DoBlt_Copy(pArcomageGame->pBackgroundPixels); pArcomageGame->field_F6 = 0; } @@ -2163,7 +2165,7 @@ am_BeginScene(pArcomageGame->pBackgroundPixels, -1, 1); Blt_Copy(&pSrcXYZW, &pTargetXY, 2); am_EndScene(); - am_blts(v13); + DrawGameUI(v13); pRenderer->Present(); pArcomageGame->field_F9 = 0; } @@ -2174,18 +2176,20 @@ //----- (0040A9AF) -------------------------------------------------------- -void am_blts( int a1 ) +void DrawGameUI( int a1 ) { am_BeginScene(pArcomageGame->pSpritesPixels, -1, 1); - am_chroma_blts(); + DrawRectanglesForText(); am_EndScene(); + am_BeginScene(pArcomageGame->pSpritesPixels, -1, 1); am_40B4B9(); - am_chroma_and_copy_blts(); - am_chroma_blt(); - am_DrawUI(); + DrawPlayersTowers(); + DrawPlayersWall(); + DrawPlayersText(); am_EndScene(); + am_BeginScene(pArcomageGame->pSpritesPixels, -1, 1); am_40B76F(a1); @@ -2194,7 +2198,7 @@ if (array_4FABD0[i].field_0) array_4FABD0[i].field_40->_40E133(); } - dword_4FABBC = am_40BB67(amuint_4FAA6C); + dword_4FABBC = am_40BB67(current_player_num); am_40AA4E(); am_EndScene(); } @@ -2243,12 +2247,12 @@ } //----- (0040AB0A) -------------------------------------------------------- -void __cdecl am_chroma_blts() -{ +void DrawRectanglesForText() + { RECT pSrcRect; // [sp+Ch] [bp-18h]@1 POINT pTargetXY; // [sp+1Ch] [bp-8h]@1 - +//resources rectangles pSrcRect.top = 0; pSrcRect.left = 765; pSrcRect.right = 843; @@ -2262,6 +2266,7 @@ pTargetXY.y = 56; Blt_Copy(&pSrcRect, &pTargetXY, 2); + //players name rectangle pSrcRect.left = 283; pSrcRect.right = 361; pSrcRect.top = 166; @@ -2274,6 +2279,7 @@ pTargetXY.y = 13; Blt_Chroma(&pSrcRect, &pTargetXY, pArcomageGame->field_54, 2); + //tower heigth rectangle pSrcRect.left = 234; pSrcRect.right = 283; pSrcRect.top = 166; @@ -2282,12 +2288,11 @@ pTargetXY.y = 296; Blt_Chroma(&pSrcRect, &pTargetXY, pArcomageGame->field_54, 2); - pTargetXY.x = 492; pTargetXY.y = 296; Blt_Chroma(&pSrcRect, &pTargetXY, pArcomageGame->field_54, 2); - + //wall heigth rectangle pSrcRect.left = 192; pSrcRect.right = 234; pSrcRect.top = 166; @@ -2302,155 +2307,141 @@ } //----- (0040AC5F) -------------------------------------------------------- -void __cdecl am_DrawUI() -{ - int v0; // ecx@7 - int v1; // ecx@9 - int v2; // eax@11 - int v3; // ecx@12 - int v4; // eax@14 - int v5; // ecx@14 - int v6; // eax@16 - int v7; // ecx@16 - int v8; // eax@18 - int v9; // ecx@18 - int v10; // eax@20 - char Dest[32]; // [sp+Ch] [bp-28h]@2 - POINT v12; // [sp+2Ch] [bp-8h]@2 +void DrawPlayersText() + { + + int res_value; // ecx@18 + char text_buff[32]; // [sp+Ch] [bp-28h]@2 + POINT text_position; // [sp+2Ch] [bp-8h]@2 if ( am_byte_4FAA77 ) { - inv_strcpy(pGlobalTXT_LocalizationStrings[266], Dest);// DISCARD A CARD - v12.x = 320 - pArcomageGame->pfntArrus->GetLineWidth(Dest) / 2; - v12.y = 306; - pPrimaryWindow_draws_text(-1, Dest, &v12); + inv_strcpy(pGlobalTXT_LocalizationStrings[266], text_buff);// DISCARD A CARD + text_position.x = 320 - pArcomageGame->pfntArrus->GetLineWidth(text_buff) / 2; + text_position.y = 306; + pPrimaryWindow_draws_text(-1, text_buff, &text_position); } - inv_strcpy(am_Players[0].pPlayerName, Dest); - if ( !amuint_4FAA6C ) - inv_strcat("***", Dest); - v12.x = 47 - pArcomageGame->pfntComic->GetLineWidth(Dest) / 2; - v12.y = 21; - pPrimaryWindow_draws_text(-1, Dest, &v12); - - inv_strcpy(am_Players[1].pPlayerName, Dest); - if ( amuint_4FAA6C == 1 ) - inv_strcat("***", Dest); - v12.x = 595 - pArcomageGame->pfntComic->GetLineWidth(Dest) / 2; - v12.y = 21; - pPrimaryWindow_draws_text(-1, Dest, &v12); - - intToString(am_Players[0].field_24, Dest); - v12.x = 123 - pArcomageGame->pfntComic->GetLineWidth(Dest) / 2; - v12.y = 305; - pPrimaryWindow_draws_text(-1, Dest, &v12); - - intToString(am_Players[1].field_24, Dest); - v12.x = 515 - pArcomageGame->pfntComic->GetLineWidth(Dest) / 2; - v12.y = 305; - pPrimaryWindow_draws_text(-1, Dest, &v12); - - intToString(am_Players[0].field_28, Dest); - v12.x = 188 - pArcomageGame->pfntComic->GetLineWidth(Dest) / 2; - v12.y = 305; - pPrimaryWindow_draws_text(-1, Dest, &v12); - - intToString(am_Players[1].field_28, Dest); - v12.x = 451 - pArcomageGame->pfntComic->GetLineWidth(Dest) / 2; - v12.y = 305; - pPrimaryWindow_draws_text(-1, Dest, &v12); - - v0 = am_Players[0].field_2C; + inv_strcpy(am_Players[0].pPlayerName, text_buff); + if ( !current_player_num ) + inv_strcat("***", text_buff); + text_position.x = 47 - pArcomageGame->pfntComic->GetLineWidth(text_buff) / 2; + text_position.y = 21; + pPrimaryWindow_draws_text(-1, text_buff, &text_position); + + inv_strcpy(am_Players[1].pPlayerName, text_buff); + if ( current_player_num == 1 ) + inv_strcat("***", text_buff); + text_position.x = 595 - pArcomageGame->pfntComic->GetLineWidth(text_buff) / 2; + text_position.y = 21; + pPrimaryWindow_draws_text(-1, text_buff, &text_position); + + intToString(am_Players[0].tower_height, text_buff); + text_position.x = 123 - pArcomageGame->pfntComic->GetLineWidth(text_buff) / 2; + text_position.y = 305; + pPrimaryWindow_draws_text(-1, text_buff, &text_position); + + intToString(am_Players[1].tower_height, text_buff); + text_position.x = 515 - pArcomageGame->pfntComic->GetLineWidth(text_buff) / 2; + text_position.y = 305; + pPrimaryWindow_draws_text(-1, text_buff, &text_position); + + intToString(am_Players[0].wall_height, text_buff); + text_position.x = 188 - pArcomageGame->pfntComic->GetLineWidth(text_buff) / 2; + text_position.y = 305; + pPrimaryWindow_draws_text(-1, text_buff, &text_position); + + intToString(am_Players[1].wall_height, text_buff); + text_position.x = 451 - pArcomageGame->pfntComic->GetLineWidth(text_buff) / 2; + text_position.y = 305; + pPrimaryWindow_draws_text(-1, text_buff, &text_position); + + res_value = am_Players[0].quarry_level; if ( byte_4E185E ) - v0 = dword_4E1878 + am_Players[0].field_2C; - intToString(v0, Dest); - v12.x = 14 - 6 * 0 / 2; - v12.y = 92; - am_40B102(-1, Dest, &v12); - - v1 = am_Players[1].field_2C; + res_value =am_Players[0].quarry_level + quarry_bonus; + intToString(res_value, text_buff); + text_position.x = 14;// - 6 * 0 / 2; + text_position.y = 92; + DrawPlayerLevels(-1, text_buff, &text_position); + + res_value = am_Players[1].quarry_level; if ( byte_4E185E ) - v1 = dword_4E1878 + am_Players[1].field_2C; - intToString(v1, Dest); - v2 = 0; - v12.y = 92; - v12.x = 561 - 6 * v2 / 2; - am_40B102(-1, Dest, &v12); - + res_value = am_Players[1].quarry_level + quarry_bonus; + intToString(res_value, text_buff); +// v2 = 0; + text_position.y = 92; + text_position.x = 561; //- 6 * v2 / 2; + DrawPlayerLevels(-1, text_buff, &text_position); + + res_value = am_Players[0].magic_level; if ( byte_4E185E ) - v3 = am_Players[0].field_30 + dword_4E187C; - else - v3 = am_Players[0].field_30; - intToString(v3, Dest); - v4 = 0; - v12.y = 164; - v12.x = 14 - 6 * v4 / 2; - am_40B102(-1, Dest, &v12); - - v5 = am_Players[1].field_30; + res_value = am_Players[0].magic_level + magic_bonus; + intToString(res_value, text_buff); + // v4 = 0; + text_position.y = 164; + text_position.x = 14; //- 6 * v4 / 2; + DrawPlayerLevels(-1, text_buff, &text_position); + + res_value = am_Players[1].magic_level; if ( byte_4E185E ) - v5 = dword_4E187C + am_Players[1].field_30; - intToString(v5, Dest); - v6 = 0; - v12.y = 164; - v12.x = 561 - 6 * v6 / 2; - am_40B102(-1, Dest, &v12); - - v7 = am_Players[0].field_34; + res_value = am_Players[1].magic_level+magic_bonus; + intToString(res_value, text_buff); + // v6 = 0; + text_position.y = 164; + text_position.x = 561; //- 6 * v6 / 2; + DrawPlayerLevels(-1, text_buff, &text_position); + + res_value = am_Players[0].might_level; if ( byte_4E185E ) - v7 = dword_4E1880 + am_Players[0].field_34; - intToString(v7, Dest); - v8 = 0; - v12.y = 236; - v12.x = 14 - 6 * v8 / 2; - am_40B102(-1, Dest, &v12); - - v9 = am_Players[1].field_34; + res_value = am_Players[0].might_level + might_bonus; + intToString(res_value, text_buff); + // v8 = 0; + text_position.y = 236; + text_position.x = 14;// - 6 * v8 / 2; + DrawPlayerLevels(-1, text_buff, &text_position); + + res_value = am_Players[1].might_level; if ( byte_4E185E ) - v9 = dword_4E1880 + am_Players[1].field_34; - intToString(v9, Dest); - v10 = 0; - v12.y = 236; - v12.x = 561 - 6 * v10 / 2; - am_40B102(-1, Dest, &v12); - - intToString(am_Players[0].field_38, Dest); - v12.y = 114; - v12.x = 10; - am_40B17E(-1, Dest, &v12); - - intToString(am_Players[1].field_38, Dest); - v12.x = 557; - v12.y = 114; - am_40B17E(-1, Dest, &v12); - - intToString(am_Players[0].field_3C, Dest); - v12.x = 10; - v12.y = 186; - am_40B1F3(-1, Dest, &v12); - - intToString(am_Players[1].field_3C, Dest); - v12.x = 557; - v12.y = 186; - am_40B1F3(-1, Dest, &v12); - - intToString(am_Players[0].field_40, Dest); - v12.x = 10; - v12.y = 258; - am_40B268(-1, Dest, &v12); - - intToString(am_Players[1].field_40, Dest); - v12.x = 557; - v12.y = 258; - am_40B268(-1, Dest, &v12); + res_value = am_Players[1].might_level + might_bonus; + intToString(res_value, text_buff); + // v10 = 0; + text_position.y = 236; + text_position.x = 561;// - 6 * v10 / 2; + DrawPlayerLevels(-1, text_buff, &text_position); + + intToString(am_Players[0].resource_bricks, text_buff); + text_position.y = 114; + text_position.x = 10; + DrawBricksCount(-1, text_buff, &text_position); + + intToString(am_Players[1].resource_bricks, text_buff); + text_position.x = 557; + text_position.y = 114; + DrawBricksCount(-1, text_buff, &text_position); + + intToString(am_Players[0].resource_gems, text_buff); + text_position.x = 10; + text_position.y = 186; + DrawGemsCount(-1, text_buff, &text_position); + + intToString(am_Players[1].resource_gems, text_buff); + text_position.x = 557; + text_position.y = 186; + DrawGemsCount(-1, text_buff, &text_position); + + intToString(am_Players[0].resource_beasts, text_buff); + text_position.x = 10; + text_position.y = 258; + DrawBeastsCount(-1, text_buff, &text_position); + + intToString(am_Players[1].resource_beasts, text_buff); + text_position.x = 557; + text_position.y = 258; + DrawBeastsCount(-1, text_buff, &text_position); } -// 4E185E: using guessed type char byte_4E185E; -// 4E1878: using guessed type int dword_4E1878; -// 4E187C: using guessed type int dword_4E187C; -// 4E1880: using guessed type int dword_4E1880; -// 4FAA77: using guessed type char am_byte_4FAA77; + //----- (0040B102) -------------------------------------------------------- -void am_40B102( int a1, char *text, POINT *pXY ) +void DrawPlayerLevels( int a1, char *text, POINT *pXY ) { char *v3; // esi@1 unsigned char test_char; // bl@2 @@ -2482,7 +2473,7 @@ } //----- (0040B17E) -------------------------------------------------------- -void am_40B17E( int a1, char* text, POINT *pXY ) +void DrawBricksCount( int a1, char* text, POINT *pXY ) { char *v3; // esi@1 @@ -2502,8 +2493,8 @@ if ( test_char ) { v7 = 13 * test_char; - pSrcRect.right = v7 - 370; - pSrcRect.left = v7 - 357; + pSrcRect.left = v7 - 370; + pSrcRect.right = v7 - 357; pSrcRect.top = 128; pSrcRect.bottom = 138; Blt_Copy(&pSrcRect, &pTargetPoint, 2); @@ -2516,7 +2507,7 @@ } //----- (0040B1F3) -------------------------------------------------------- -void am_40B1F3( int a1, char* text, POINT* pXY ) +void DrawGemsCount( int a1, char* text, POINT* pXY ) { char *v3; // esi@1 @@ -2536,8 +2527,8 @@ if ( test_char ) { v7 = 13 * test_char; - pSrcRect.right = v7 - 370; - pSrcRect.left = v7 - 357; + pSrcRect.left = v7 - 370; + pSrcRect.right = v7 - 357; pSrcRect.top = 138; pSrcRect.bottom = 148; Blt_Copy(&pSrcRect, &pTargetPoint, 2); @@ -2550,7 +2541,7 @@ } //----- (0040B268) -------------------------------------------------------- -void am_40B268( int a1, char *text, POINT *pXY ) +void DrawBeastsCount( int a1, char *text, POINT *pXY ) { char *v3; // esi@1 @@ -2570,8 +2561,8 @@ if ( test_char ) { v7 = 13 * test_char; - pSrcRect.right = v7 - 370; - pSrcRect.left = v7 - 357; + pSrcRect.left = v7 - 370; + pSrcRect.right = v7 - 357; pSrcRect.top = 148; pSrcRect.bottom = 158; Blt_Copy(&pSrcRect, &pTargetPoint, 2); @@ -2584,64 +2575,62 @@ } //----- (0040B2DD) -------------------------------------------------------- -void __cdecl am_chroma_and_copy_blts() -{ - -int v0; // eax@1 -int v1; // esi@3 -int v2; // eax@3 -int v3; // eax@3 -int v4; // esi@5 -int v5; // eax@5 +void DrawPlayersTowers() + { +int tower_height; // eax@1 +int tower_top; // esi@3 RECT pSrcXYZW; // [sp+0h] [bp-18h]@3 POINT pTargetXY; // [sp+10h] [bp-8h]@3 -v0= am_Players[0].field_24; -if ( am_Players[0].field_24 > dword_4E1884 ) - v0 = dword_4E1884; +tower_height= am_Players[0].tower_height; +if ( am_Players[0].tower_height > max_tower_height ) + tower_height = max_tower_height; pSrcXYZW.top = 0; pSrcXYZW.left = 892; pSrcXYZW.right = 937; -v1 = 200 * v0 / dword_4E1884; -pSrcXYZW.bottom = v1; +tower_top = 200 * tower_height / max_tower_height; +pSrcXYZW.bottom = tower_top; pTargetXY.x = 102; -pTargetXY.y = 297 - v1; +pTargetXY.y = 297 - tower_top; Blt_Copy(&pSrcXYZW, &pTargetXY, 2); pSrcXYZW.top = 0; pSrcXYZW.left = 384; pSrcXYZW.right = 452; pSrcXYZW.bottom = 94; -pTargetXY.y = 203 - v1; +pTargetXY.y = 203 - tower_top; pTargetXY.x = 91; Blt_Chroma(&pSrcXYZW, &pTargetXY, pArcomageGame->field_54, 2); -v3 = am_Players[1].field_24; -if (am_Players[1].field_24 > dword_4E1884 ) - v3 = dword_4E1884; -pSrcXYZW.top = 0; -pSrcXYZW.left = 892; -pSrcXYZW.right = 937; -v4 = 200 * v3 / dword_4E1884; -pSrcXYZW.bottom = v4; + +tower_height = am_Players[1].tower_height; +if (am_Players[1].tower_height > max_tower_height ) + tower_height = max_tower_height; +tower_top = 200 * tower_height / max_tower_height; +pSrcXYZW.top = 0; +pSrcXYZW.left = 892; +pSrcXYZW.right = 937; +pSrcXYZW.bottom = tower_top; + pTargetXY.x = 494; -pTargetXY.y = 297 - v4; +pTargetXY.y = 297 - tower_top; Blt_Copy(&pSrcXYZW, &pTargetXY, 2); - -pSrcXYZW.left = 384; -pSrcXYZW.right = 452; -pSrcXYZW.top = 94; +//draw tower up cone +pSrcXYZW.left = 384; +pSrcXYZW.right = 452; +pSrcXYZW.top = 94; pSrcXYZW.bottom = 188; + pTargetXY.x = 483; -pTargetXY.y = 203 - v4; +pTargetXY.y = 203 - tower_top; Blt_Chroma(&pSrcXYZW, &pTargetXY, pArcomageGame->field_54, 2); } // 4E1884: using guessed type int dword_4E1884; //----- (0040B400) -------------------------------------------------------- -void __cdecl am_chroma_blt() -{ +void DrawPlayersWall() + { int v0; // eax@1 int v1; // eax@4 LONG v2; // ecx@4 @@ -2651,10 +2640,10 @@ RECT pSrcXYZW; // [sp+4h] [bp-18h]@4 POINT pTargetXY; // [sp+14h] [bp-8h]@4 -v0 = am_Players[0].field_28; -if ( am_Players[0].field_28 <= 100 ) +v0 = am_Players[0].wall_height; +if ( am_Players[0].wall_height <= 100 ) { - if ( am_Players[0].field_28 <= 0 ) + if ( am_Players[0].wall_height <= 0 ) goto LABEL_5; } else @@ -2671,10 +2660,10 @@ Blt_Chroma(&pSrcXYZW, &pTargetXY, pArcomageGame->field_54, 2); LABEL_5: -v3 = am_Players[1].field_28; -if ( am_Players[1].field_28 <= 100 ) +v3 = am_Players[1].wall_height; +if ( am_Players[1].wall_height <= 100 ) { - if ( am_Players[1].field_28 <= 0 ) + if ( am_Players[1].wall_height <= 0 ) return; } else @@ -3160,7 +3149,7 @@ player_num = a1; //v4 = LOBYTE(am_Players[a1].field_20) == 0; v28 = -1; -if ( am_Players[a1].field_20 ) +if ( am_Players[a1].IsHisTurn ) { if ( v26._40DD2F() ) { @@ -3228,7 +3217,7 @@ return v28; } v28 = hand_index; - v18 = am_40BF15(player_num, hand_index); + v18 = CanCardBePlayed(player_num, hand_index); if ( v18 ) { v20=0x00FFFFFF; @@ -3419,8 +3408,8 @@ if ( pCards[am_Players[a1].cards_at_hand[i]].field_2B) { ArcomageGame::PlaySound(0x16u); - v7 = amuint_4FAA6C; - v8 = GetPlayerHandCardCount(amuint_4FAA6C); + v7 = current_player_num; + v8 = GetPlayerHandCardCount(current_player_num); v9 = 188 * v7 + 8 * v3; // v10 = 96 * v3 + *(int *)((char *)am_Players[0].arr_6C[0] + v9) + (640 - 96 * v8) / (v8 + 1); // v11 = *(int *)((char *)&am_Players[0].arr_6C[0][1] + v9) + 327; @@ -3463,8 +3452,8 @@ // 4FABB8: using guessed type int dword_4FABB8; //----- (0040BE0E) -------------------------------------------------------- -bool __fastcall am_40BE0E(int a1, signed int a2) -{ +bool PlayCard( int player_num, signed int card_slot_num ) + { bool result; // eax@0 int v3; // ebp@1 int v4; // ecx@2 @@ -3481,9 +3470,9 @@ int v15; // ecx@8 int v16; // ecx@8 - v3 = a1; - if ( a2 <= -1 ) - goto LABEL_12; + v3 = player_num; + if ( card_slot_num <= -1 ) + return false; v4 = 0; v5 = &am_Players[v3]; v6 = 0; @@ -3492,7 +3481,7 @@ { if ( *(unsigned int *)v7 != -1 ) { - if ( a2 == v4 ) + if ( card_slot_num == v4 ) break; ++v4; } @@ -3500,12 +3489,12 @@ v7 += 4; } while ( v6 < 10 ); - result = am_40BF15(v3, v6); + result = CanCardBePlayed(v3, v6); if ( result ) { ArcomageGame::PlaySound(0x17u); - v8 = amuint_4FAA6C; - v9 = GetPlayerHandCardCount(amuint_4FAA6C); + v8 = current_player_num; + v9 = GetPlayerHandCardCount(current_player_num); v10 = 188 * v8 + 8 * v6; v11 = v6 + 47 * v3; amuint_4FAA54_blt_xy[1] = -30; @@ -3516,45 +3505,41 @@ amuint_4FAA5C_blt_xy[1] = v13; amuint_4FAA54_blt_xy[0] = (272 - v12) / 5; v14 = &pCards[v5->cards_at_hand[v6]]; - v5->field_38 -= LOBYTE(v14->field_28); - v15 = BYTE1(v14->field_28); - v5->field_40 -= BYTE2(v14->field_28); - v5->field_3C -= v15; + v5->resource_bricks -= v14->needed_bricks; + v5->resource_beasts -= v14->needed_beasts; + v5->resource_gems -= v14->needed_gems; result = 4 * v11 + 5265228; v16 = am_Players[0].cards_at_hand[v11]; am_Players[0].cards_at_hand[v11] = -1; amuint_4FABC0 = v16; - LOBYTE(result) = 1; + return true;; } else - { -LABEL_12: - LOBYTE(result) = 0; - } - return result; + return false; + } //----- (0040BF15) -------------------------------------------------------- -bool am_40BF15( int player_num, int hand_card_indx ) +bool CanCardBePlayed( int player_num, int hand_card_indx ) { bool result; // eax@1 - ArcomageCard *v4; // ecx@1 - ArcomagePlayer *v2; // esi@1 - - v2 = &am_Players[player_num]; + ArcomageCard *test_card; // ecx@1 + ArcomagePlayer *pPlayer; // esi@1 + + pPlayer = &am_Players[player_num]; result = true; - v4 = &pCards[am_Players[player_num].cards_at_hand[hand_card_indx]]; - if ( v4->field_25 > v2->field_2C ) + test_card = &pCards[am_Players[player_num].cards_at_hand[hand_card_indx]]; + if ( test_card->needed_quarry_level > pPlayer->quarry_level ) result = false; - if ( v4->field_26 > v2->field_30 ) + if ( test_card->needed_magic_level > pPlayer->magic_level ) result = false; - if ( v4->field_27 > v2->field_34 ) + if ( test_card->needed_might_level > pPlayer->might_level ) result = false; - if ( v4->field_28 > v2->field_38 ) + if ( test_card->needed_bricks > pPlayer->resource_bricks ) result = false; - if ( v4->field_29 > v2->field_3C ) + if ( test_card->needed_gems > pPlayer->resource_gems ) result = false; - if ( v4->field_2A > v2->field_40 ) + if ( test_card->needed_beasts > pPlayer->resource_beasts ) result = false; return result; } @@ -5601,7 +5586,7 @@ int result; // eax@3 v2 = &am_Players[a1]; - v3 = v2->field_28; + v3 = v2->wall_height; if ( v3 <= 0 ) { result = 0; @@ -5611,23 +5596,23 @@ if ( v3 >= -a2 ) { result = a2; - v2->field_28 = a2 + v3; + v2->wall_height = a2 + v3; goto LABEL_7; } a2 += v3; result = -v3; - v2->field_28 = 0; + v2->wall_height = 0; } - v2->field_24 += a2; + v2->tower_height += a2; LABEL_7: - if ( v2->field_24 < 0 ) - v2->field_24 = 0; + if ( v2->tower_height < 0 ) + v2->tower_height = 0; return result; } // 40D402: using guessed type int __fastcall am_40D402(uint, uint); //----- (0040D444) -------------------------------------------------------- -int __cdecl am_40D444() +int __cdecl GameResultsApply() { int v0; // esi@1 int v1; // edi@1 @@ -5656,59 +5641,59 @@ xy[1] = 160; xy[0] = 320 - 12 * v2 / 2; // pPrimaryWindow_draws_text(-1, pText, xy); - if ( am_Players[0].field_24 < dword_4E1884 ) + if ( am_Players[0].tower_height < max_tower_height ) { - if ( am_Players[1].field_24 < dword_4E1884 ) + if ( am_Players[1].tower_height < max_tower_height ) goto LABEL_10; v0 = 2; } else { - if ( am_Players[1].field_24 < dword_4E1884 ) + if ( am_Players[1].tower_height < max_tower_height ) { v0 = 1; } else { - if ( am_Players[0].field_24 == am_Players[1].field_24 ) + if ( am_Players[0].tower_height == am_Players[1].tower_height ) { v0 = 0; v1 = 4; goto LABEL_10; } - v0 = (am_Players[0].field_24 <= am_Players[1].field_24) + 1; + v0 = (am_Players[0].tower_height <= am_Players[1].tower_height) + 1; } } v1 = 0; LABEL_10: - if ( am_Players[0].field_24 <= 0 ) + if ( am_Players[0].tower_height <= 0 ) { - if ( am_Players[1].field_24 > 0 ) + if ( am_Players[1].tower_height > 0 ) { v0 = 2; } else { - if ( am_Players[0].field_24 == am_Players[1].field_24 ) + if ( am_Players[0].tower_height == am_Players[1].tower_height ) { LABEL_20: - if ( am_Players[0].field_28 == am_Players[1].field_28 ) + if ( am_Players[0].wall_height == am_Players[1].wall_height ) { v0 = 0; v1 = 4; } else { - v0 = (am_Players[0].field_28 <= am_Players[1].field_28) + 1; + v0 = (am_Players[0].wall_height <= am_Players[1].wall_height) + 1; v1 = 1; } goto LABEL_23; } - v0 = (am_Players[0].field_24 <= am_Players[1].field_24) + 1; + v0 = (am_Players[0].tower_height <= am_Players[1].tower_height) + 1; } goto LABEL_17; } - if ( am_Players[1].field_24 <= 0 ) + if ( am_Players[1].tower_height <= 0 ) { v0 = 1; LABEL_17: @@ -5717,35 +5702,35 @@ if ( !v0 && v1 == 4 ) goto LABEL_20; LABEL_23: - v3 = am_Players[0].field_38; - if ( am_Players[0].field_38 <= am_Players[0].field_3C ) + v3 = am_Players[0].resource_bricks; + if ( am_Players[0].resource_bricks <= am_Players[0].resource_gems ) { - v3 = am_Players[0].field_40; - v4 = am_Players[0].field_3C; - if ( am_Players[0].field_3C > am_Players[0].field_40 ) + v3 = am_Players[0].resource_beasts; + v4 = am_Players[0].resource_gems; + if ( am_Players[0].resource_gems > am_Players[0].resource_beasts ) goto LABEL_28; } else { - if ( am_Players[0].field_38 <= am_Players[0].field_40 ) + if ( am_Players[0].resource_bricks <= am_Players[0].resource_beasts ) { - v4 = am_Players[0].field_40; + v4 = am_Players[0].resource_beasts; goto LABEL_28; } } v4 = v3; LABEL_28: - v5 = am_Players[1].field_38; - v6 = am_Players[1].field_3C; - if ( am_Players[1].field_38 <= am_Players[1].field_3C ) + v5 = am_Players[1].resource_bricks; + v6 = am_Players[1].resource_gems; + if ( am_Players[1].resource_bricks <= am_Players[1].resource_gems ) { - v5 = am_Players[1].field_40; - if ( am_Players[1].field_3C > am_Players[1].field_40 ) + v5 = am_Players[1].resource_beasts; + if ( am_Players[1].resource_gems > am_Players[1].resource_beasts ) goto LABEL_33; goto LABEL_32; } - v6 = am_Players[1].field_40; - if ( am_Players[1].field_38 > am_Players[1].field_40 ) + v6 = am_Players[1].resource_beasts; + if ( am_Players[1].resource_bricks > am_Players[1].resource_beasts ) LABEL_32: v6 = v5; LABEL_33: @@ -5753,15 +5738,15 @@ { if ( v1 != -1 ) goto LABEL_49; - if ( v4 < dword_4E1888 ) + if ( v4 < max_resources_amount ) { - if ( v6 < dword_4E1888 ) + if ( v6 < max_resources_amount ) goto LABEL_49; v0 = 2; } else { - if ( v6 < dword_4E1888 ) + if ( v6 < max_resources_amount ) { v0 = 1; } @@ -5794,7 +5779,7 @@ if ( v0 == 1 ) { v7 = window_SpeakInHouse; - v8 = (signed int)window_SpeakInHouse->ptr_1C; + v8 = (signed int)window_SpeakInHouse->par1C; if ( v8 >= 108 ) { if ( v8 <= 120 ) @@ -5805,7 +5790,7 @@ *v9 = 1; //auto _a = (signed __int64)(p2DEvents_minus1__20[13 * (unsigned int)v7->ptr_1C] * 100.0); - auto _a = (signed int)(p2DEvents[(unsigned int)v7->ptr_1C - 1].fPriceMultiplier * 100.0); + auto _a = (signed int)(p2DEvents[(unsigned int)v7->par1C - 1].fPriceMultiplier * 100.0); party_finds_gold(_a, 0); } } @@ -5852,8 +5837,8 @@ //----- (00409C8B) -------------------------------------------------------- -void __cdecl PrepareArcomage() -{ +void PrepareArcomage() + { signed __int64 v1; // qax@4 int v2; // esi@4 int v3; // esi@5 @@ -5912,10 +5897,10 @@ byte_505880 = 0; dword_4FAA70 = 0; am_byte_4FAA77 = 0; - am_409FE9(); + SetStartGameData(); am_40A255(); //nullsub_1(); - pArcomageGame->field_F5 = 0; + pArcomageGame->GameOver = 0; pArcomageGame->pfntComic = pFontComic; pArcomageGame->pfntArrus = pFontArrus; } @@ -5937,28 +5922,28 @@ //----- (00409BE8) -------------------------------------------------------- -void sub_409BE8() +void SetStartConditions() { - stru348 *v1; // eax@1 + ArcomageStartConditions *v1; // eax@1 - v1 = &stru_4E1890[window_SpeakInHouse->par1C - 108]; - amuint_4E1860 = v1->field_4; - amuint_4E1864 = v1->field_6; - amuint_4E1868 = v1->field_8 - 1; - amuint_4E186C = v1->field_A - 1; - amuint_4E1870 = v1->field_C - 1; + v1 = &start_conditions[window_SpeakInHouse->par1C - 108]; + start_tower_height = v1->tower_height; + start_wall_height = v1->wall_height; + start_quarry_level = v1->quarry_level - 1; + start_magic_level = v1->magic_level - 1; + start_might_level = v1->might_level - 1; dword_4E1874 = 5; - dword_4E1878 = 1; - dword_4E187C = 1; - dword_4E1880 = 1; - dword_4E1884 = v1->field_0; - dword_4E1888 = v1->field_2; + quarry_bonus = 1; + magic_bonus = 1; + might_bonus = 1; + max_tower_height = v1->max_tower; + max_resources_amount = v1->max_resources; dword_4DF3A4 = v1->field_14; - amuint_505884 = v1->field_E; - amuint_505888 = v1->field_10; - amuint_50588C = v1->field_12; + start_bricks_amount = v1->bricks_amount; + start_gems_amount = v1->gems_amount; + start_beasts_amount = v1->beasts_amount; }
--- a/Arcomage.h Sat Jun 08 21:40:49 2013 +0200 +++ b/Arcomage.h Sat Jun 08 21:47:29 2013 +0200 @@ -5,105 +5,105 @@ #pragma pack(push, 1) struct am_st1 - { - int field_0; - int field_4; - }; +{ + int field_0; + int field_4; +}; #pragma pack(pop) /* 401 */ #pragma pack(push, 1) struct Acromage_st1 - { - int uCardId; - int field_4; - POINT field_8; - int field_10_xplus; - int field_14_y_plus; - POINT field_18_point; - }; +{ + int uCardId; + int field_4; + POINT field_8; + int field_10_xplus; + int field_14_y_plus; + POINT field_18_point; +}; #pragma pack(pop) /* 272 */ #pragma pack(push, 1) struct ArcomageCard - { - char pCardName[32]; - int slot; - char field_24; - char needed_quarry_level; - char needed_magic_level; - char needed_might_level; - char needed_bricks; - char needed_gems; - char needed_beasts; - char field_2B; - char field_2C; - char field_2D; - char field_2E; - char field_2F; - char field_30; - char field_31; - char field_32; - char field_33; - char field_34; - char field_35; - char field_36; - char field_37; - char field_38; - char field_39; - char field_3A; - char field_3B; - char field_3C; - char field_3D; - char field_3E; - char field_3F; - char field_40; - char field_41; - char field_42; - char field_43; - char field_44; - char field_45; - char field_46; - char field_47; - char field_48; - char field_49; - char field_4A; - char field_4B; - char field_4C; - char field_4D; - char field_4E; - char field_4F; - char field_50; - char field_51; - char field_52; - char field_53; - char field_54; - char field_55; - char field_56; - char field_57; - char field_58; - char field_59; - char field_5A; - char field_5B; - char field_5C; - char field_5D; - char field_5E; - char field_5F; - char field_60; - char field_61; - char field_62; - char field_63; - char field_64; - char field_65; - char field_66; - char field_67; - char field_68; - char field_69; - char field_6A; - char field_6B; - }; +{ + char pCardName[32]; + int slot; + char field_24; + char needed_quarry_level; + char needed_magic_level; + char needed_might_level; + char needed_bricks; + char needed_gems; + char needed_beasts; + char field_2B; + char field_2C; + char field_2D; + char field_2E; + char field_2F; + char field_30; + char field_31; + char field_32; + char field_33; + char field_34; + char field_35; + char field_36; + char field_37; + char field_38; + char field_39; + char field_3A; + char field_3B; + char field_3C; + char field_3D; + char field_3E; + char field_3F; + char field_40; + char field_41; + char field_42; + char field_43; + char field_44; + char field_45; + char field_46; + char field_47; + char field_48; + char field_49; + char field_4A; + char field_4B; + char field_4C; + char field_4D; + char field_4E; + char field_4F; + char field_50; + char field_51; + char field_52; + char field_53; + char field_54; + char field_55; + char field_56; + char field_57; + char field_58; + char field_59; + char field_5A; + char field_5B; + char field_5C; + char field_5D; + char field_5E; + char field_5F; + char field_60; + char field_61; + char field_62; + char field_63; + char field_64; + char field_65; + char field_66; + char field_67; + char field_68; + char field_69; + char field_6A; + char field_6B; +}; #pragma pack(pop) @@ -204,36 +204,36 @@ #pragma pack(push, 1) struct stru272_stru1 - { - int field_0; - POINT field_4; - int field_C; - int field_10; - int field_14; - int field_18; - }; +{ + int field_0; + POINT field_4; + int field_C; + int field_10; + int field_14; + int field_18; +}; #pragma pack(pop) /* 404 */ #pragma pack(push, 1) struct stru272_stru2 - { - int field_0; - int field_4; - int field_8; - int field_C; - int field_10; - int field_14; - int field_18; - float field_1Cf; - int field_20; - float field_24f; - float field_28f; - float field_2Cf; - int field_30; - int field_34; - stru272_stru1* field_38; - }; +{ + int field_0; + int field_4; + int field_8; + int field_C; + int field_10; + int field_14; + int field_18; + float field_1Cf; + int field_20; + float field_24f; + float field_28f; + float field_2Cf; + int field_30; + int field_34; + stru272_stru1* field_38; +}; #pragma pack(pop) @@ -281,24 +281,24 @@ #pragma pack(push, 1) struct ArcomageDeck - { - char name[32]; - char cardsInUse[DECK_SIZE]; - int cards_IDs[DECK_SIZE]; - }; +{ + char name[32]; + char cardsInUse[DECK_SIZE]; + int cards_IDs[DECK_SIZE]; +}; #pragma pack(pop) #pragma pack(push, 1) struct stru272 - { - char field_0; - char field_1; - char _pad_2; - char _pad_3; - stru272_stru2 field_4; - stru272_stru0 *field_40; - stru272_stru1 field_44[150]; - }; +{ + char field_0; + char field_1; + char _pad_2; + char _pad_3; + stru272_stru2 field_4; + stru272_stru0 *field_40; + stru272_stru1 field_44[150]; +}; #pragma pack(pop)