# HG changeset patch # User Ritor1 # Date 1374232900 -21600 # Node ID a519a6a412d03475358593a4a42b8257ca8c4386 # Parent 3161094869e0b01bb65cf9418d7d67c88d7abaab CloseSpellBook and close SpellBookPage diff -r 3161094869e0 -r a519a6a412d0 GUIWindow.cpp --- a/GUIWindow.cpp Fri Jul 19 12:50:44 2013 +0600 +++ b/GUIWindow.cpp Fri Jul 19 17:21:40 2013 +0600 @@ -326,17 +326,17 @@ } case WINDOW_SpellBook: { - sub_41140B(); - sub_411473(); + OnCloseSpellBookPage(); + OnCloseSpellBook(); break; } case WINDOW_Book: { - OnCloseSpellBook(); + OnCloseBook(); break; } - case WINDOW_ChangeLocation: - { + case WINDOW_ChangeLocation: + { pTexture_outside->Release(); pTexture_Dialogue_Background->Release(); pIcons_LOD->SyncLoadedFilesCount(); @@ -874,8 +874,8 @@ //v4 = (12 * pPlayer->lastOpenedSpellbookPage + pSpellbookSpellIndices[pPlayer->lastOpenedSpellbookPage][i + 1]); CreateButton(pViewport->uViewportTL_X + pIconPos[v4][pSpellbookSpellIndices[v4][i+1]].Xpos, pViewport->uViewportTL_Y + pIconPos[v4][pSpellbookSpellIndices[v4][i+1]].Ypos, //dword_4E20D0 - dword_506408[i + 1]->uTextureWidth, - dword_506408[i + 1]->uTextureHeight, + SBPageSSpellsTextureList[i + 1]->uTextureWidth, + SBPageSSpellsTextureList[i + 1]->uTextureHeight, 1, 79, UIMSG_SelectSpell, i, 0, "", 0); ++a2; //++v3; @@ -896,10 +896,10 @@ if (pPlayer->pActiveSkills[PLAYER_SKILL_LIGHT]) CreateButton(400, 271, 50, 36, 1, 0, UIMSG_OpenSpellbookPage, 7, 0, aSpellSchoolNames[7], 0); if (pPlayer->pActiveSkills[PLAYER_SKILL_DARK]) CreateButton(400, 307, 50, 36, 1, 0, UIMSG_OpenSpellbookPage, 8, 0, aSpellSchoolNames[8], 0); - CreateButton(476, 450, pTexture_506444->uTextureWidth, pTexture_506444->uTextureHeight, 1, 78, UIMSG_ClickInstallRemoveQuickSpellBtn, 0, 0, "", 0); - pBtn_InstallRemoveSpell = CreateButton(476, 450, 48, 32, 1, 78, UIMSG_ClickInstallRemoveQuickSpellBtn, 0, 0, "", pTexture_506444, 0); - CreateButton(561, 450, ptr_506440->uTextureWidth, ptr_506440->uTextureHeight, 1, 0, UIMSG_Escape, 0, 0, pGlobalTXT_LocalizationStrings[79], 0); - pBtn_CloseBook = CreateButton(561, 450, 48, 32, 1, 0, UIMSG_Escape, 0, 0, pGlobalTXT_LocalizationStrings[79], ptr_506440, 0); + CreateButton(476, 450, pSBClickQuickSpellBtnTextr->uTextureWidth, pSBClickQuickSpellBtnTextr->uTextureHeight, 1, 78, UIMSG_ClickInstallRemoveQuickSpellBtn, 0, 0, "", 0); + pBtn_InstallRemoveSpell = CreateButton(476, 450, 48, 32, 1, 78, UIMSG_ClickInstallRemoveQuickSpellBtn, 0, 0, "", pSBClickQuickSpellBtnTextr, 0); + CreateButton(561, 450, pSpellBookClickCloseBtnTextr->uTextureWidth, pSpellBookClickCloseBtnTextr->uTextureHeight, 1, 0, UIMSG_Escape, 0, 0, pGlobalTXT_LocalizationStrings[79], 0); + pBtn_CloseBook = CreateButton(561, 450, 48, 32, 1, 0, UIMSG_Escape, 0, 0, pGlobalTXT_LocalizationStrings[79], pSpellBookClickCloseBtnTextr, 0); } // 50640C: using guessed type int dword_50640C[]; diff -r 3161094869e0 -r a519a6a412d0 GUIWindow.h --- a/GUIWindow.h Fri Jul 19 12:50:44 2013 +0600 +++ b/GUIWindow.h Fri Jul 19 17:21:40 2013 +0600 @@ -545,7 +545,7 @@ void BookUI_Calendar_Draw(); void BookUI_Journal_Draw(); -void OnCloseSpellBook(); +void OnCloseBook(); void InitializeBookTextures(); void InitializeBookFonts(); void DrawSpellBookContent(Player *player); @@ -553,8 +553,8 @@ void BookUI_DrawTownPortalMap(); void LoadSpellbook(unsigned int uID); // idb void DrawSpellDescriptionPopup(int spell_index); -void sub_41140B(); -void sub_411473(); +void OnCloseSpellBookPage(); +void OnCloseSpellBook(); diff -r 3161094869e0 -r a519a6a412d0 LOD.cpp --- a/LOD.cpp Fri Jul 19 12:50:44 2013 +0600 +++ b/LOD.cpp Fri Jul 19 17:21:40 2013 +0600 @@ -133,7 +133,7 @@ //----- (004114F2) -------------------------------------------------------- void LODFile_IconsBitmaps::_4114F2() { - LODFile_IconsBitmaps *v1; // esi@1 + //LODFile_IconsBitmaps *v1; // esi@1 int *pTexturePacksCount; // eax@1 int v3; // ecx@1 int v4; // ecx@2 @@ -145,7 +145,7 @@ struct IDirectDrawSurface *v10; // eax@9 int v11; // eax@12 - v1 = this; + //v1 = this; pTexturePacksCount = &this->uTexturePacksCount; v3 = this->uTexturePacksCount; if ( v3 ) @@ -154,41 +154,41 @@ *pTexturePacksCount = v4; if ( !v4 ) { - v5 = v1->uNumLoadedFiles - 1; - if ( v5 >= v1->uNumPrevLoadedFiles ) + v5 = this->uNumLoadedFiles - 1; + if ( v5 >= this->uNumPrevLoadedFiles ) { - v6 = &v1->pTextures[v5]; + v6 = &this->pTextures[v5]; do { v6->Release(); - v7 = v1->pHardwareTextures; + v7 = this->pHardwareTextures; if ( v7 ) { v8 = v7[v5]; if ( v8 ) { v8->Release(); - v1->pHardwareTextures[v5] = 0; + this->pHardwareTextures[v5] = 0; } } - v9 = v1->pHardwareSurfaces; + v9 = this->pHardwareSurfaces; if ( v9 ) { v10 = v9[v5]; if ( v10 ) { v10->Release(); - v1->pHardwareSurfaces[v5] = 0; + this->pHardwareSurfaces[v5] = 0; } } --v5; --v6; } - while ( v5 >= v1->uNumPrevLoadedFiles ); + while ( v5 >= this->uNumPrevLoadedFiles ); } - v11 = v1->uNumPrevLoadedFiles; - v1->uNumPrevLoadedFiles = 0; - v1->uNumLoadedFiles = v11; + v11 = this->uNumPrevLoadedFiles; + this->uNumPrevLoadedFiles = 0; + this->uNumLoadedFiles = v11; } } } diff -r 3161094869e0 -r a519a6a412d0 Texture.cpp --- a/Texture.cpp Fri Jul 19 12:50:44 2013 +0600 +++ b/Texture.cpp Fri Jul 19 17:21:40 2013 +0600 @@ -47,12 +47,12 @@ Texture *pTex_tab_an_7b__zoot_on; Texture *pTex_tab_an_6b__zoom_on; std::array pTexture_TownPortalIcons; // [0]Harmonale, [1]Pierpont, [2]Nighon, [3]Evenmorn Island, [4]Celestia, [5]The Pit -std::array dword_5063D8; -std::array dword_506408; -Texture *pTexture_50643C; // idb -Texture *ptr_506440; -Texture *pTexture_506444; -Texture *pTexture_506448; // idb +std::array SBPageCSpellsTextureList; +std::array SBPageSSpellsTextureList; +Texture *pSBQuickSpellBtnTextr; +Texture *pSpellBookClickCloseBtnTextr; +Texture *pSBClickQuickSpellBtnTextr; +Texture *pSpellBookCloseBtnTextr; std::array, 9> pTextures_tabs; Texture *pTexture_mapbordr; // idb Texture *pTexture_pagemask; // idb diff -r 3161094869e0 -r a519a6a412d0 Texture.h --- a/Texture.h Fri Jul 19 12:50:44 2013 +0600 +++ b/Texture.h Fri Jul 19 17:21:40 2013 +0600 @@ -146,12 +146,12 @@ extern struct Texture *pTex_tab_an_6b__zoom_on; extern std::array pTexture_TownPortalIcons; // [0]Harmonale, [1]Pierpont, [2]Nighon, [3]Evenmorn Island, [4]Celestia, [5]The Pit -extern std::array dword_5063D8; -extern std::array dword_506408; -extern struct Texture *pTexture_50643C; // idb -extern struct Texture *ptr_506440; -extern struct Texture *pTexture_506444; -extern struct Texture *pTexture_506448; // idb +extern std::array SBPageCSpellsTextureList; +extern std::array SBPageSSpellsTextureList; +extern struct Texture *pSBQuickSpellBtnTextr; +extern struct Texture *pSpellBookClickCloseBtnTextr; +extern struct Texture *pSBClickQuickSpellBtnTextr; +extern struct Texture *pSpellBookCloseBtnTextr; extern std::array, 9> pTextures_tabs; extern struct Texture *pTexture_mapbordr; // idb extern struct Texture *pTexture_pagemask; // idb diff -r 3161094869e0 -r a519a6a412d0 UI/Books/UISpellBook.cpp --- a/UI/Books/UISpellBook.cpp Fri Jul 19 12:50:44 2013 +0600 +++ b/UI/Books/UISpellBook.cpp Fri Jul 19 17:21:40 2013 +0600 @@ -24,46 +24,32 @@ //----- (00411300) -------------------------------------------------------- void LoadSpellbook(unsigned int spell_school) - { - //unsigned int v1; // esi@1 - Player *pPlayer; // ecx@1 - char v3; // al@1 - //int v4; // edi@5 - //Texture *result; // eax@6 - //unsigned char *v6; // edi@7 - //unsigned int v7; // eax@7 - //unsigned __int8 v8; // sf@8 - //unsigned __int8 v9; // of@8 - char pContainer[20]; // [sp+Ch] [bp-1Ch]@7 - //Texture *v11; // [sp+20h] [bp-8h]@5 - //int v12; // [sp+24h] [bp-4h]@5 +{ + char pContainer[20]; // [sp+Ch] [bp-1Ch]@7 + + byte_506550 = 0; + if ( pPlayers[uActiveCharacter]->uQuickSpell && (unsigned __int8)pPlayers[uActiveCharacter]->uQuickSpell / 11 == spell_school ) + quick_spell_at_page = (unsigned __int8)pPlayers[uActiveCharacter]->uQuickSpell - 11 * spell_school; + else + quick_spell_at_page = 0; - byte_506550 = 0; - //v1 = uID; - pPlayer = pPlayers[uActiveCharacter]; - v3 = pPlayer->uQuickSpell; - if ( v3 && (unsigned __int8)v3 / 11 == spell_school ) - quick_spell_at_page = (unsigned __int8)v3 - 11 * spell_school; - else - quick_spell_at_page = 0; + for (uint i = 1; i <= 11; ++i) + { + if (pPlayers[uActiveCharacter]->spellbook.pChapters[spell_school].bIsSpellAvailable[i - 1]) + { + sprintf(pContainer, "SB%sS%02d", spellbook_texture_filename_suffices[spell_school], pSpellbookSpellIndices[spell_school][i]); + SBPageSSpellsTextureList[i] = pIcons_LOD->LoadTexturePtr(pContainer, TEXTURE_16BIT_PALETTE); - for (uint i = 1; i < 12; ++i) - { - if (pPlayer->spellbook.pChapters[spell_school].bIsSpellAvailable[i - 1]) - { - sprintf(pContainer, "SB%sS%02d", spellbook_texture_filename_suffices[spell_school], pSpellbookSpellIndices[spell_school][i]); - dword_506408[i] = pIcons_LOD->LoadTexturePtr(pContainer, TEXTURE_16BIT_PALETTE); - - sprintf(pContainer, "SB%sC%02d", spellbook_texture_filename_suffices[spell_school], pSpellbookSpellIndices[spell_school][i]); - dword_5063D8[i] = pIcons_LOD->LoadTexturePtr(pContainer, TEXTURE_16BIT_PALETTE); - } - } + sprintf(pContainer, "SB%sC%02d", spellbook_texture_filename_suffices[spell_school], pSpellbookSpellIndices[spell_school][i]); + SBPageCSpellsTextureList[i] = pIcons_LOD->LoadTexturePtr(pContainer, TEXTURE_16BIT_PALETTE); } + } +} //----- (00411597) -------------------------------------------------------- -void OnCloseSpellBook() +void OnCloseBook() { pAllocator->FreeChunk(pSpellFont); pSpellFont = nullptr; @@ -90,44 +76,21 @@ if ( uActiveCharacter ) v0 = pParty->pPlayers[uActiveCharacter - 1].lastOpenedSpellbookPage;//*((char *)&pParty->pPartyBuffs[5].uExpireTime + 6972 * uActiveCharacter + 2); pRenderer->DrawTextureIndexed(8, 8, pSpellBookPagesTextr[v0]); - pRenderer->DrawTextureIndexed(0x1DCu, 0x1C2u, pTexture_50643C); - pRenderer->DrawTextureIndexed(0x231u, 0x1C2u, pTexture_506448); + pRenderer->DrawTextureIndexed(476, 450, pSBQuickSpellBtnTextr); + pRenderer->DrawTextureIndexed(561, 450, pSpellBookCloseBtnTextr); } - - - - //----- (00412B58) -------------------------------------------------------- void DrawSpellBookContent(Player *player) { - //Player *v0; // ebx@1 - int v1; // ebp@1 - //unsigned int v2; // eax@1 - Texture *v3; // edi@1 - int v4; // esi@1 - Texture *v5; // eax@3 - Texture *v6; // edx@5 - int v7; // eax@8 - int v8; // eax@11 - //POINT *v9; // esi@13 + Texture *PendingTexture; // edi@1 + Texture *pTexture; // edx@5 int v10; // eax@13 - Texture *v11; // edx@14 - int v12; // eax@15 - signed int v13; // ecx@18 - unsigned int v14; // esi@18 - unsigned int v15; // edi@18 + unsigned int pX_coord; // esi@18 + unsigned int pY_coord; // edi@18 Texture *pPageTexture; // eax@21 - unsigned int v17; // [sp-Ch] [bp-2Ch]@8 - unsigned int v18; // [sp-Ch] [bp-2Ch]@15 - unsigned int v19; // [sp-8h] [bp-28h]@8 - unsigned int v20; // [sp-8h] [bp-28h]@15 - Texture *v21; // [sp-4h] [bp-24h]@15 signed int v22; // [sp-4h] [bp-24h]@22 - Texture *v23; // [sp+10h] [bp-10h]@5 POINT a2; // [sp+18h] [bp-8h]@13 - //POINT v24; - int v25; static unsigned int texture_tab_coord1[9][2]= {{406, 9}, {406, 46}, {406, 84}, {406,121}, {407,158}, {405, 196}, {405, 234}, {405, 272}, {405,309} }; @@ -137,96 +100,69 @@ BookUI_Spellbook_DrawCurrentSchoolBackground(); - //v0 = pPlayers[uActiveCharacter]; - v1 = 11 * player->lastOpenedSpellbookPage; - //v2 = pIcons_LOD->FindTextureByName("Pending"); - v3 = pIcons_LOD->GetTexture(pIcons_LOD->FindTextureByName("Pending")); + PendingTexture = pIcons_LOD->GetTexture(pIcons_LOD->FindTextureByName("Pending")); pRenderer->ClearZBuffer(0, 479); - v4 = 1; - //if ( __OFSUB__(v1, v1 + 11) ^ 1 ) + if ( (11 * player->lastOpenedSpellbookPage) || ((11 * player->lastOpenedSpellbookPage) + 11) )//??? maybe structure need fix { - do + for ( uint i = 1; i <= 11; ++i ) { - if (player->_guilds_member_bits[v1 + v4 + 63] ) + if (player->_guilds_member_bits[(11 * player->lastOpenedSpellbookPage) + i + 63] ) { - v5 = (Texture *)dword_506408[v4]; - if ( v5 != v3 ) + if ( SBPageSSpellsTextureList[i] != PendingTexture ) { - if ( quick_spell_at_page == v4 ) + if ( quick_spell_at_page == i ) + pTexture = SBPageCSpellsTextureList[i]; + else + pTexture = SBPageSSpellsTextureList[i]; + if ( pTexture->pLevelOfDetail0_prolly_alpha_mask ) { - v6 = dword_5063D8[v4]; - v23 = dword_5063D8[v4]; - } - else - { - v23 = dword_506408[v4]; - v6 = v5; - } - if ( v6->pLevelOfDetail0_prolly_alpha_mask ) - { - v7 = player->lastOpenedSpellbookPage; - // v7 = (12 * v0->lastOpenedSpellbookPage + pSpellbookSpellIndices[v0->lastOpenedSpellbookPage][v4]); - v19 = pViewport->uViewportTL_Y + pIconPos[v7][pSpellbookSpellIndices[v7][v4]].Ypos; - v17 = pViewport->uViewportTL_X + pIconPos[v7][pSpellbookSpellIndices[v7][v4]].Xpos; - if ( BYTE1(v6->pBits) & 2 ) - pRenderer->DrawTextureTransparent(v17, v19, v6); + pX_coord = pViewport->uViewportTL_X + pIconPos[player->lastOpenedSpellbookPage][pSpellbookSpellIndices[player->lastOpenedSpellbookPage][i]].Xpos; + pY_coord = pViewport->uViewportTL_Y + pIconPos[player->lastOpenedSpellbookPage][pSpellbookSpellIndices[player->lastOpenedSpellbookPage][i]].Ypos; + if ( BYTE1(pTexture->pBits) & 2 ) + pRenderer->DrawTextureTransparent(pX_coord, pY_coord, pTexture); else - pRenderer->DrawTextureIndexed(v17, v19, v6); - pRenderer->DrawMaskToZBuffer(pIconPos[v7][pSpellbookSpellIndices[v7][v4]].Xpos, - pIconPos[v7][pSpellbookSpellIndices[v7][v4]].Ypos, v23, v4); + pRenderer->DrawTextureIndexed(pX_coord, pY_coord, pTexture); + pRenderer->DrawMaskToZBuffer(pIconPos[player->lastOpenedSpellbookPage][pSpellbookSpellIndices[player->lastOpenedSpellbookPage][i]].Xpos, + pIconPos[player->lastOpenedSpellbookPage][pSpellbookSpellIndices[player->lastOpenedSpellbookPage][i]].Ypos, pTexture, i); } } } - ++v4; } - while ( v4 - 1 < 11 ); } - /*v9 = */pMouse->GetCursorPos(&a2); + pMouse->GetCursorPos(&a2); v10 = pRenderer->pActiveZBuffer[a2.x + pSRZBufferLineOffsets[a2.y]] & 0xFFFF; if ( v10 ) { - v11 = dword_5063D8[v10]; - if ( v11->pLevelOfDetail0_prolly_alpha_mask ) + if ( SBPageCSpellsTextureList[v10]->pLevelOfDetail0_prolly_alpha_mask ) { - v21 = dword_5063D8[v10]; - v12 = player->lastOpenedSpellbookPage; - // v12 = (12 * v0->lastOpenedSpellbookPage + pSpellbookSpellIndices[v0->lastOpenedSpellbookPage][v10]); - v20 = pViewport->uViewportTL_Y + pIconPos[v12][pSpellbookSpellIndices[v12][v10]].Ypos; - v18 = pViewport->uViewportTL_X + pIconPos[v12][pSpellbookSpellIndices[v12][v10]].Xpos; - if ( BYTE1(v11->pBits) & 2 ) - pRenderer->DrawTextureTransparent(v18, v20, v21); + pX_coord = pViewport->uViewportTL_X + pIconPos[player->lastOpenedSpellbookPage][pSpellbookSpellIndices[player->lastOpenedSpellbookPage][v10]].Xpos; + pY_coord = pViewport->uViewportTL_Y + pIconPos[player->lastOpenedSpellbookPage][pSpellbookSpellIndices[player->lastOpenedSpellbookPage][v10]].Ypos; + if ( BYTE1(SBPageCSpellsTextureList[v10]->pBits) & 2 ) + pRenderer->DrawTextureTransparent(pX_coord, pY_coord, SBPageCSpellsTextureList[v10]); else - pRenderer->DrawTextureIndexed(v18, v20, v21); + pRenderer->DrawTextureIndexed(pX_coord, pY_coord, SBPageCSpellsTextureList[v10]); } } - v13 = 0; - a2.x = (LONG)&player->pActiveSkills[12]; - v14 = (unsigned int)&player->pActiveSkills[12]; - v15 = (unsigned int)&player->pActiveSkills[12]; - v25 = 0; - do + pX_coord = (unsigned int)&player->pActiveSkills[12]; + pY_coord = (unsigned int)&player->pActiveSkills[12]; + for ( uint i = 0; i < 9; i++ ) { - if ( *(short *)a2.x ) + if ( player->pActiveSkills[12 + i] ) { - if ( player->lastOpenedSpellbookPage == v13 ) + if ( player->lastOpenedSpellbookPage == i ) { - pPageTexture = pTextures_tabs[v13][1]; - v14=texture_tab_coord1[v13][0]; - v15=texture_tab_coord1[v13][1]; + pPageTexture = pTextures_tabs[i][1]; + pX_coord = texture_tab_coord1[i][0]; + pY_coord = texture_tab_coord1[i][1]; } else { - pPageTexture = pTextures_tabs[v13][0]; - v14=texture_tab_coord0[v13][0]; - v15=texture_tab_coord0[v13][1]; + pPageTexture = pTextures_tabs[i][0]; + pX_coord = texture_tab_coord0[i][0]; + pY_coord = texture_tab_coord0[i][1]; } - pRenderer->DrawTextureTransparent(v14, v15, pPageTexture); - v13 = v25; + pRenderer->DrawTextureTransparent(pX_coord, pY_coord, pPageTexture); } - a2.x += 2; - ++v13; - v25 = v13; } - while ( v13 < 9 ); } \ No newline at end of file diff -r 3161094869e0 -r a519a6a412d0 UI/UIBooks.cpp --- a/UI/UIBooks.cpp Fri Jul 19 12:50:44 2013 +0600 +++ b/UI/UIBooks.cpp Fri Jul 19 17:21:40 2013 +0600 @@ -48,8 +48,6 @@ //----- (0041192C) -------------------------------------------------------- void InitializeBookTextures() { - //signed int v0; // ebp@3 - //Texture **v1; // ebx@3 pAudioPlayer->StopChannels(-1, -1); @@ -60,9 +58,9 @@ pAudioPlayer->PlaySound(SOUND_OpenBook, 0, 0, -1, 0, 0, 0, 0); pSpellBookPagesTextr_9 = pIcons_LOD->LoadTexturePtr("book", TEXTURE_16BIT_PALETTE); pTexture_pagemask = pIcons_LOD->LoadTexturePtr("pagemask", TEXTURE_16BIT_PALETTE); - pTexture_506448 = pIcons_LOD->LoadTexturePtr("ib-m5-u", TEXTURE_16BIT_PALETTE); - ptr_506440 = pIcons_LOD->LoadTexturePtr("ib-m5-d", TEXTURE_16BIT_PALETTE); - pTexture_50643C = pIcons_LOD->LoadTexturePtr("ib-m6-u",TEXTURE_16BIT_PALETTE); + pSpellBookCloseBtnTextr = pIcons_LOD->LoadTexturePtr("ib-m5-u", TEXTURE_16BIT_PALETTE); + pSpellBookClickCloseBtnTextr = pIcons_LOD->LoadTexturePtr("ib-m5-d", TEXTURE_16BIT_PALETTE); + pSBQuickSpellBtnTextr = pIcons_LOD->LoadTexturePtr("ib-m6-u",TEXTURE_16BIT_PALETTE); //v0 = 1; static const char *texNames[9] = // 004E24EC @@ -71,7 +69,7 @@ "SBSB00", "SBMB00", "SBBB00", "SBLB00", "SBDB00" }; - pTexture_506444 = pIcons_LOD->LoadTexturePtr("ib-m6-d",TEXTURE_16BIT_PALETTE); + pSBClickQuickSpellBtnTextr = pIcons_LOD->LoadTexturePtr("ib-m6-d",TEXTURE_16BIT_PALETTE); for (uint i = 0; i < 9; ++i) { pSpellBookPagesTextr[i] = pIcons_LOD->LoadTexturePtr(texNames[i], TEXTURE_16BIT_PALETTE); @@ -106,31 +104,25 @@ //----- (0041140B) -------------------------------------------------------- -void sub_41140B() +void OnCloseSpellBookPage() { - signed int v0; // esi@1 - GUIButton *v1; // eax@3 - GUIButton *v2; // esi@4 + GUIButton *pNextButton; // esi@4 - v0 = 0; - do + for ( uint i = 1; i <= 11; i++ ) { - dword_5063D8[11+v0]->Release(); - dword_506408[11+v0]->Release(); - --v0; + SBPageCSpellsTextureList[i]->Release(); + SBPageSSpellsTextureList[i]->Release(); } - while ( v0 >= -11 ); pIcons_LOD->SyncLoadedFilesCount(); - v1 = pGUIWindow_CurrentMenu->pControlsHead; - if ( v1 ) + if ( pGUIWindow_CurrentMenu->pControlsHead ) { do { - v2 = v1->pNext; - pAllocator->FreeChunk(v1); - v1 = v2; + pNextButton = pGUIWindow_CurrentMenu->pControlsHead->pNext; + pAllocator->FreeChunk(pGUIWindow_CurrentMenu->pControlsHead); + pGUIWindow_CurrentMenu->pControlsHead = pNextButton; } - while ( v2 ); + while ( pNextButton ); } pGUIWindow_CurrentMenu->pControlsHead = 0; pGUIWindow_CurrentMenu->pControlsTail = 0; @@ -138,11 +130,11 @@ } //----- (00411473) -------------------------------------------------------- -void sub_411473() +void OnCloseSpellBook() { pTexture_pagemask->Release(); - pTexture_506448->Release(); - pTexture_50643C->Release(); + pSpellBookCloseBtnTextr->Release(); + pSBQuickSpellBtnTextr->Release(); for (uint i = 0; i < 9; ++i) { pSpellBookPagesTextr[i]->Release(); diff -r 3161094869e0 -r a519a6a412d0 mm7_5.cpp --- a/mm7_5.cpp Fri Jul 19 12:50:44 2013 +0600 +++ b/mm7_5.cpp Fri Jul 19 17:21:40 2013 +0600 @@ -2712,7 +2712,7 @@ if ( uAction >= (signed int)pNPCData4 ) uAction = 0; } - sub_41140B(); + OnCloseSpellBookPage(); pPlayers[uActiveCharacter]->lastOpenedSpellbookPage = LOBYTE(v217[uAction]); pGUIWindow_CurrentMenu->OpenSpellBook(); v127 = rand() % 2 + 204; @@ -2721,7 +2721,7 @@ case UIMSG_OpenSpellbookPage: if ( pTurnEngine->turn_stage == 3 || !uActiveCharacter || uMessageParam == pPlayers[uActiveCharacter]->lastOpenedSpellbookPage ) continue; - sub_41140B(); + OnCloseSpellBookPage(); pPlayers[uActiveCharacter]->lastOpenedSpellbookPage = uMessageParam; pGUIWindow_CurrentMenu->OpenSpellBook(); v127 = rand() % 2 + 204;