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