comparison mm7_5.cpp @ 363:2bc1c8d68f41

Allocator and SpellCost Tip
author Gloval
date Fri, 22 Feb 2013 00:48:54 +0400
parents 57d81602e72c
children 3abebb74fd09
comparison
equal deleted inserted replaced
359:57d81602e72c 363:2bc1c8d68f41
13054 aMoonPhaseNames[3] = pGlobalTXT_LocalizationStrings[169]; 13054 aMoonPhaseNames[3] = pGlobalTXT_LocalizationStrings[169];
13055 aMoonPhaseNames[4] = pGlobalTXT_LocalizationStrings[92]; 13055 aMoonPhaseNames[4] = pGlobalTXT_LocalizationStrings[92];
13056 } 13056 }
13057 13057
13058 //----- (00410B28) -------------------------------------------------------- 13058 //----- (00410B28) --------------------------------------------------------
13059 void __thiscall DrawSpellDescriptionPopup(void *_this) 13059 void __thiscall DrawSpellDescriptionPopup(int spell_index)
13060 { 13060 {
13061 Player *v1; // edi@1 13061 Player *v1; // edi@1
13062 SpellInfo *v2; // esi@1 13062 SpellInfo *v2; // esi@1
13063 unsigned int v3; // eax@2 13063 unsigned int v3; // eax@2
13064 int v4; // eax@4 13064 int v4; // eax@4
13065 LONG v5; // ecx@4 13065 LONG v5; // ecx@4
13066 int v6; // eax@10 13066 int v6; // eax@10
13067 char *v7; // ST44_4@12 13067 char *v7; // ST44_4@12
13068 unsigned __int16 v8; // ax@12 13068 unsigned __int16 v8; // ax@12
13069 GUIWindow a1; // [sp+Ch] [bp-68h]@4 13069 GUIWindow a1; // [sp+Ch] [bp-68h]@4
13070 void *v10; // [sp+60h] [bp-14h]@1 13070 int v10; // [sp+60h] [bp-14h]@1
13071 POINT a2; // [sp+64h] [bp-10h]@1 13071 POINT a2; // [sp+64h] [bp-10h]@1
13072 int v12; // [sp+6Ch] [bp-8h]@4 13072 int v12; // [sp+6Ch] [bp-8h]@4
13073 int v13; // [sp+70h] [bp-4h]@4 13073 int v13; // [sp+70h] [bp-4h]@4
13074 13074
13075 v1 = pPlayers[uActiveCharacter]; 13075 v1 = pPlayers[uActiveCharacter];
13076 v10 = _this; 13076 v10 = spell_index;
13077 v2 = &pSpellStats->pInfos[(signed int)((char *)_this + 11 * v1->lastOpenedSpellbookPage) + 1]; 13077 v2 = &pSpellStats->pInfos[spell_index + 11 * v1->lastOpenedSpellbookPage + 1];
13078 if ( pMouse->GetCursorPos(&a2)->y <= 250 ) 13078 if ( pMouse->GetCursorPos(&a2)->y <= 250 )
13079 v3 = pMouse->GetCursorPos(&a2)->y + 30; 13079 v3 = pMouse->GetCursorPos(&a2)->y + 30;
13080 else 13080 else
13081 v3 = 30; 13081 v3 = 30;
13082 a1.uFrameY = v3; 13082 a1.uFrameY = v3;
13084 a1.uFrameHeight = 68; 13084 a1.uFrameHeight = 68;
13085 a1.uFrameX = 90; 13085 a1.uFrameX = 90;
13086 a1.uFrameZ = 417; 13086 a1.uFrameZ = 417;
13087 a1.uFrameW = v3 + 67; 13087 a1.uFrameW = v3 + 67;
13088 a1.Hint = 0; 13088 a1.Hint = 0;
13089 a2.y = pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[431]); 13089 a2.y = pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[LOCSTR_NORMAL]);
13090 v13 = pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[433]); 13090 v13 = pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[LOCSTR_MASTER]);
13091 v12 = pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[432]); 13091 v12 = pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[LOCSTR_EXPERT]);
13092 v4 = pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[96]); 13092 v4 = pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[LOCSTR_GRAND]);
13093 v5 = a2.y; 13093 v5 = a2.y;
13094 if ( v13 > a2.y ) 13094 if ( v13 > a2.y )
13095 v5 = v13; 13095 v5 = v13;
13096 if ( v12 > v5 ) 13096 if ( v12 > v5 )
13097 v5 = v12; 13097 v5 = v12;
13098 if ( v4 > v5 ) 13098 if ( v4 > v5 )
13099 v5 = v4; 13099 v5 = v4;
13100 sprintf( 13100 sprintf( pTmpBuf2,
13101 pTmpBuf2,
13102 "%s\n\n%s\t%03d:\t%03d%s\t000\n%s\t%03d:\t%03d%s\t000\n%s\t%03d:\t%03d%s\t000\n%s\t%03d:\t%03d%s", 13101 "%s\n\n%s\t%03d:\t%03d%s\t000\n%s\t%03d:\t%03d%s\t000\n%s\t%03d:\t%03d%s\t000\n%s\t%03d:\t%03d%s",
13103 v2->pDescription, 13102 v2->pDescription,
13104 pGlobalTXT_LocalizationStrings[431], 13103 pGlobalTXT_LocalizationStrings[LOCSTR_NORMAL],
13105 v5 + 3, 13104 v5 + 3, v5 + 10,
13106 v5 + 10,
13107 v2->pBasicSkillDesc, 13105 v2->pBasicSkillDesc,
13108 pGlobalTXT_LocalizationStrings[433], 13106 pGlobalTXT_LocalizationStrings[LOCSTR_EXPERT],
13109 v5 + 3, 13107 v5 + 3, v5 + 10,
13110 v5 + 10,
13111 v2->pExpertSkillDesc, 13108 v2->pExpertSkillDesc,
13112 pGlobalTXT_LocalizationStrings[432], 13109 pGlobalTXT_LocalizationStrings[LOCSTR_MASTER],
13113 v5 + 3, 13110 v5 + 3, v5 + 10,
13114 v5 + 10,
13115 v2->pMasterSkillDesc, 13111 v2->pMasterSkillDesc,
13116 pGlobalTXT_LocalizationStrings[96], 13112 pGlobalTXT_LocalizationStrings[LOCSTR_GRAND],
13117 v5 + 3, 13113 v5 + 3, v5 + 10,
13118 v5 + 10,
13119 v2->pGrandmasterSkillDesc); 13114 v2->pGrandmasterSkillDesc);
13120 v6 = pFontSmallnum->CalcTextHeight(pTmpBuf2, &a1, 0, 0); 13115 v6 = pFontSmallnum->CalcTextHeight(pTmpBuf2, &a1, 0, 0);
13121 a1.uFrameHeight += v6; 13116 a1.uFrameHeight += v6;
13122 if ( (signed int)a1.uFrameHeight < 150 ) 13117 if ( (signed int)a1.uFrameHeight < 150 )
13123 a1.uFrameHeight = 150; 13118 a1.uFrameHeight = 150;
13132 a1.DrawTitleText(pFontArrus, 0x78u, 0xCu, v8, v7, 3u); 13127 a1.DrawTitleText(pFontArrus, 0x78u, 0xCu, v8, v7, 3u);
13133 a1.DrawText(pFontSmallnum, 120, 44, 0, pTmpBuf2, 0, 0, 0); 13128 a1.DrawText(pFontSmallnum, 120, 44, 0, pTmpBuf2, 0, 0, 0);
13134 a1.uFrameWidth = 108; 13129 a1.uFrameWidth = 108;
13135 a1.uFrameZ = a1.uFrameX + 107; 13130 a1.uFrameZ = a1.uFrameX + 107;
13136 a1.DrawTitleText(pFontComic, 0xCu, 0x4Bu, 0, pSkillNames[v1->lastOpenedSpellbookPage + 12], 3u); 13131 a1.DrawTitleText(pFontComic, 0xCu, 0x4Bu, 0, pSkillNames[v1->lastOpenedSpellbookPage + 12], 3u);
13137 sprintf( 13132 sprintf( pTmpBuf, "%s\n%d", pGlobalTXT_LocalizationStrings[LOCSTR_SP_COST],
13138 pTmpBuf, 13133 pSpellDatas[spell_index + 11 * v1->lastOpenedSpellbookPage + 1].mana_per_skill[v1->pActiveSkills[v1->lastOpenedSpellbookPage + PLAYER_SKILL_FIRE]]);
13139 "%s\n%d", 13134 // *(&[0].field_12 //temp_fix field_14
13140 pGlobalTXT_LocalizationStrings[522], 13135 // + ((unsigned int)LOBYTE(v1->pActiveSkills[v1->lastOpenedSpellbookPage + 12]) >> 6)
13141 *(&pSpellDatas[0].field_12 //temp_fix field_14 13136 // + 10 * (int)((char *)v10 + 11 * v1->lastOpenedSpellbookPage)));
13142 + ((unsigned int)LOBYTE(v1->pActiveSkills[v1->lastOpenedSpellbookPage + 12]) >> 6)
13143 + 10 * (int)((char *)v10 + 11 * v1->lastOpenedSpellbookPage)));
13144 a1.DrawTitleText(pFontComic, 0xCu, a1.uFrameHeight - LOBYTE(pFontComic->uFontHeight) - 16, 0, pTmpBuf, 3u); 13137 a1.DrawTitleText(pFontComic, 0xCu, a1.uFrameHeight - LOBYTE(pFontComic->uFontHeight) - 16, 0, pTmpBuf, 3u);
13145 dword_507B00_spell_info_to_draw_in_popup = 0; 13138 dword_507B00_spell_info_to_draw_in_popup = 0;
13146 } 13139 }
13147 // 507B00: using guessed type int dword_507B00_spell_info_to_draw_in_popup; 13140 // 507B00: using guessed type int dword_507B00_spell_info_to_draw_in_popup;
13148 13141
13667 v23 = dword_506408[v4]; 13660 v23 = dword_506408[v4];
13668 v6 = v5; 13661 v6 = v5;
13669 } 13662 }
13670 if ( v6->pLevelOfDetail0 ) 13663 if ( v6->pLevelOfDetail0 )
13671 { 13664 {
13672 v7 = (12 * v0->lastOpenedSpellbookPage + pSpellbookSpellIndices[v0->lastOpenedSpellbookPage][v4]); 13665 v7 = v0->lastOpenedSpellbookPage;
13673 v19 = pViewport->uViewportY + pIconPos[v7].Ypos; 13666 // v7 = (12 * v0->lastOpenedSpellbookPage + pSpellbookSpellIndices[v0->lastOpenedSpellbookPage][v4]);
13674 v17 = pViewport->uViewportX + pIconPos[v7].Xpos; 13667 v19 = pViewport->uViewportY + pIconPos[v7][pSpellbookSpellIndices[v7][v4]].Ypos;
13668 v17 = pViewport->uViewportX + pIconPos[v7][pSpellbookSpellIndices[v7][v4]].Xpos;
13675 if ( BYTE1(v6->pBits) & 2 ) 13669 if ( BYTE1(v6->pBits) & 2 )
13676 pRenderer->DrawTextureTransparent(v17, v19, v6); 13670 pRenderer->DrawTextureTransparent(v17, v19, v6);
13677 else 13671 else
13678 pRenderer->DrawTextureIndexed(v17, v19, v6); 13672 pRenderer->DrawTextureIndexed(v17, v19, v6);
13679 v8 = (12 * v0->lastOpenedSpellbookPage + pSpellbookSpellIndices[v0->lastOpenedSpellbookPage][v4]); 13673 pRenderer->_4A612A(pIconPos[v7][pSpellbookSpellIndices[v7][v4]].Xpos,
13680 pRenderer->_4A612A(pIconPos[v8].Xpos,pIconPos[v8].Ypos, v23, v4); 13674 pIconPos[v7][pSpellbookSpellIndices[v7][v4]].Ypos, v23, v4);
13681 } 13675 }
13682 } 13676 }
13683 } 13677 }
13684 ++v4; 13678 ++v4;
13685 } 13679 }
13691 { 13685 {
13692 v11 = dword_5063D8[v10]; 13686 v11 = dword_5063D8[v10];
13693 if ( v11->pLevelOfDetail0 ) 13687 if ( v11->pLevelOfDetail0 )
13694 { 13688 {
13695 v21 = dword_5063D8[v10]; 13689 v21 = dword_5063D8[v10];
13696 v12 = (12 * v0->lastOpenedSpellbookPage + pSpellbookSpellIndices[v0->lastOpenedSpellbookPage][v10]); 13690 v12 = v0->lastOpenedSpellbookPage;
13697 v20 = pViewport->uViewportY + pIconPos[v12].Ypos; 13691 // v12 = (12 * v0->lastOpenedSpellbookPage + pSpellbookSpellIndices[v0->lastOpenedSpellbookPage][v10]);
13698 v18 = pViewport->uViewportX + pIconPos[v12].Xpos; 13692 v20 = pViewport->uViewportY + pIconPos[v12][pSpellbookSpellIndices[v12][v10]].Ypos;
13693 v18 = pViewport->uViewportX + pIconPos[v12][pSpellbookSpellIndices[v12][v10]].Xpos;
13699 if ( BYTE1(v11->pBits) & 2 ) 13694 if ( BYTE1(v11->pBits) & 2 )
13700 pRenderer->DrawTextureTransparent(v18, v20, v21); 13695 pRenderer->DrawTextureTransparent(v18, v20, v21);
13701 else 13696 else
13702 pRenderer->DrawTextureIndexed(v18, v20, v21); 13697 pRenderer->DrawTextureIndexed(v18, v20, v21);
13703 } 13698 }
16560 if ( pCurrentScreen != SCREEN_CHARACTERS ) 16555 if ( pCurrentScreen != SCREEN_CHARACTERS )
16561 { 16556 {
16562 if ( pCurrentScreen == SCREEN_SPELL_BOOK ) 16557 if ( pCurrentScreen == SCREEN_SPELL_BOOK )
16563 { 16558 {
16564 if ( dword_507B00_spell_info_to_draw_in_popup ) 16559 if ( dword_507B00_spell_info_to_draw_in_popup )
16565 DrawSpellDescriptionPopup((void *)(dword_507B00_spell_info_to_draw_in_popup - 1)); 16560 DrawSpellDescriptionPopup(dword_507B00_spell_info_to_draw_in_popup - 1);
16566 } 16561 }
16567 goto LABEL_132; 16562 goto LABEL_132;
16568 } 16563 }
16569 LABEL_119: 16564 LABEL_119:
16570 if ( (signed int)pX > 467 && pCurrentScreen != SCREEN_E ) 16565 if ( (signed int)pX > 467 && pCurrentScreen != SCREEN_E )