Mercurial > mm7
diff GUI/UI/UICharacter.cpp @ 2547:fed97f15d1e1
* SaveLoad
* QuickReference
* Modal
* Character
author | a.parshin |
---|---|
date | Tue, 12 May 2015 01:45:31 +0200 |
parents | c674d547cc7c |
children | f2a8ed07e921 |
line wrap: on
line diff
--- a/GUI/UI/UICharacter.cpp Mon May 11 17:45:02 2015 +0200 +++ b/GUI/UI/UICharacter.cpp Tue May 12 01:45:31 2015 +0200 @@ -24,6 +24,9 @@ #include "..\../IO/Mouse.h" +void CharacterUI_LoadPaperdollTextures(); +void WetsuitOn(unsigned int uPlayerID); +void WetsuitOff(unsigned int uPlayerID); int bRingsShownInCharScreen; // 5118E0 @@ -403,9 +406,14 @@ const int pMagicSkills[9] = {PLAYER_SKILL_FIRE, PLAYER_SKILL_AIR, PLAYER_SKILL_WATER, PLAYER_SKILL_EARTH, PLAYER_SKILL_SPIRIT, PLAYER_SKILL_MIND, PLAYER_SKILL_BODY, PLAYER_SKILL_LIGHT, PLAYER_SKILL_DARK}; + +GUIWindow_CharacterRecord::GUIWindow_CharacterRecord(unsigned int uActiveCharacter, enum CURRENT_SCREEN screen) : + GUIWindow(0, 0, window->GetWidth(), window->GetHeight(), uActiveCharacter, nullptr) +{ //----- (00421626) -------------------------------------------------------- -GUIWindow *CharacterUI_Initialize(enum CURRENT_SCREEN screen) -{ +// 00421626 CharacterUI_Initialize --- part +//GUIWindow *CharacterUI_Initialize(enum CURRENT_SCREEN screen) + ++pIcons_LOD->uTexturePacksCount; if ( !pIcons_LOD->uNumPrevLoadedFiles ) pIcons_LOD->uNumPrevLoadedFiles = pIcons_LOD->uNumLoadedFiles; @@ -416,52 +424,203 @@ CharacterUI_LoadPaperdollTextures(); current_screen_type = screen; - auto wnd = new GUIWindow_CharacterRecord(0, 0, window->GetWidth(), window->GetHeight(), uActiveCharacter, 0); - pCharacterScreen_StatsBtn = wnd->CreateButton(pViewport->uViewportTL_X + 12, pViewport->uViewportTL_Y + 308, + //auto wnd = new GUIWindow_CharacterRecord(0, 0, window->GetWidth(), window->GetHeight(), uActiveCharacter, 0); + pCharacterScreen_StatsBtn = CreateButton(pViewport->uViewportTL_X + 12, pViewport->uViewportTL_Y + 308, pIcons_LOD->GetTexture(papredoll_dbrds[9])->uTextureWidth, pIcons_LOD->GetTexture(papredoll_dbrds[9])->uTextureHeight, 1, 0, UIMSG_ClickStatsBtn, 0, 'S', pGlobalTXT_LocalizationStrings[216],// Stats pIcons_LOD->GetTexture(papredoll_dbrds[10]), pIcons_LOD->GetTexture(papredoll_dbrds[9]), 0); - pCharacterScreen_SkillsBtn = wnd->CreateButton(pViewport->uViewportTL_X + 102, pViewport->uViewportTL_Y + 308, + pCharacterScreen_SkillsBtn = CreateButton(pViewport->uViewportTL_X + 102, pViewport->uViewportTL_Y + 308, pIcons_LOD->GetTexture(papredoll_dbrds[7])->uTextureWidth, pIcons_LOD->GetTexture(papredoll_dbrds[7])->uTextureHeight, 1, 0, UIMSG_ClickSkillsBtn, 0, 'K', pGlobalTXT_LocalizationStrings[205],//Skills pIcons_LOD->GetTexture(papredoll_dbrds[8]), pIcons_LOD->GetTexture(papredoll_dbrds[7]), 0); - pCharacterScreen_InventoryBtn = wnd->CreateButton(pViewport->uViewportTL_X + 192, pViewport->uViewportTL_Y + 308, + pCharacterScreen_InventoryBtn = CreateButton(pViewport->uViewportTL_X + 192, pViewport->uViewportTL_Y + 308, pIcons_LOD->GetTexture(papredoll_dbrds[5])->uTextureWidth, pIcons_LOD->GetTexture(papredoll_dbrds[5])->uTextureHeight, 1, 0, UIMSG_ClickInventoryBtn, 0, 'I', pGlobalTXT_LocalizationStrings[120], //Inventory pIcons_LOD->GetTexture(papredoll_dbrds[6]), pIcons_LOD->GetTexture(papredoll_dbrds[5]), 0); - pCharacterScreen_AwardsBtn = wnd->CreateButton(pViewport->uViewportTL_X + 282, pViewport->uViewportTL_Y + 308, + pCharacterScreen_AwardsBtn = CreateButton(pViewport->uViewportTL_X + 282, pViewport->uViewportTL_Y + 308, pIcons_LOD->GetTexture(papredoll_dbrds[3])->uTextureWidth, pIcons_LOD->GetTexture(papredoll_dbrds[3])->uTextureHeight, 1, 0, UIMSG_ClickAwardsBtn, 0, 'A', pGlobalTXT_LocalizationStrings[22], //Awards pIcons_LOD->GetTexture(papredoll_dbrds[4]), pIcons_LOD->GetTexture(papredoll_dbrds[3]), 0); - pCharacterScreen_ExitBtn = wnd->CreateButton(pViewport->uViewportTL_X + 371, pViewport->uViewportTL_Y + 308, + pCharacterScreen_ExitBtn = CreateButton(pViewport->uViewportTL_X + 371, pViewport->uViewportTL_Y + 308, pIcons_LOD->GetTexture(papredoll_dbrds[1])->uTextureWidth, pIcons_LOD->GetTexture(papredoll_dbrds[1])->uTextureHeight, 1, 0, UIMSG_ClickExitCharacterWindowBtn, 0, 0, pGlobalTXT_LocalizationStrings[79],//Exit pIcons_LOD->GetTexture(papredoll_dbrds[2]), pIcons_LOD->GetTexture(papredoll_dbrds[1]), 0); - wnd->CreateButton(0, 0, 476, 345, 1, 122, UIMSG_InventoryLeftClick, 0, 0, "", 0); - pCharacterScreen_DetalizBtn = wnd->CreateButton(600, 300, 30, 30, 1, 0, UIMSG_ChangeDetaliz, 0, 0, pGlobalTXT_LocalizationStrings[64], 0); - pCharacterScreen_DollBtn = wnd->CreateButton(476, 0, 164, 345, 1, 0, UIMSG_ClickPaperdoll, 0, 0, "", 0); + CreateButton(0, 0, 476, 345, 1, 122, UIMSG_InventoryLeftClick, 0, 0, "", 0); + pCharacterScreen_DetalizBtn = CreateButton(600, 300, 30, 30, 1, 0, UIMSG_ChangeDetaliz, 0, 0, pGlobalTXT_LocalizationStrings[64], 0); + pCharacterScreen_DollBtn = CreateButton(476, 0, 164, 345, 1, 0, UIMSG_ClickPaperdoll, 0, 0, "", 0); + + CreateButton(61, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 1, '1', "", 0); + CreateButton(177, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 2, '2', "", 0); + CreateButton(292, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 3, '3', "", 0); + CreateButton(407, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 4, '4', "", 0); + + CreateButton(0, 0, 0, 0, 1, 0, UIMSG_CycleCharacters, 0, '\t', "", 0); + FillAwardsData(); +} + +//----- (0041ABFD) -------------------------------------------------------- +void GUIWindow_CharacterRecord::Update() +{ + // ----------------------------------- + // 004156F0 GUI_UpdateWindows --- part + // { + // 0041ABFD CharacterUI_CharacterScreen_Draw(pPlayers[uActiveCharacter]); + // } + + auto player = pPlayers[uActiveCharacter]; + + pRenderer->ClearZBuffer(0, 479); + switch (current_character_screen_window) + { + case WINDOW_CharacterWindow_Stats: + { + CharacterUI_ReleaseButtons(); + ReleaseAwardsScrollBar(); + CharacterUI_StatsTab_Draw(player); + pRenderer->DrawTextureIndexed( + pCharacterScreen_StatsBtn->uX, + pCharacterScreen_StatsBtn->uY, + pIcons_LOD->LoadTexturePtr("ib-cd1-d", TEXTURE_16BIT_PALETTE) + ); + } + break; + + case WINDOW_CharacterWindow_Skills: + { + if (dword_507CC0_activ_ch != uActiveCharacter) + { + CharacterUI_ReleaseButtons(); + CharacterUI_SkillsTab_CreateButtons(); + } + ReleaseAwardsScrollBar(); + CharacterUI_SkillsTab_Draw(player); + pRenderer->DrawTextureIndexed( + pCharacterScreen_SkillsBtn->uX, + pCharacterScreen_SkillsBtn->uY, + pIcons_LOD->LoadTexturePtr("ib-cd2-d", TEXTURE_16BIT_PALETTE) + ); + } + break; + + case WINDOW_CharacterWindow_Awards: + { + CharacterUI_ReleaseButtons(); + ReleaseAwardsScrollBar(); + CreateAwardsScrollBar(); + CharacterUI_AwardsTab_Draw(player); + pRenderer->DrawTextureIndexed( + pCharacterScreen_AwardsBtn->uX, + pCharacterScreen_AwardsBtn->uY, + pIcons_LOD->LoadTexturePtr("ib-cd4-d", TEXTURE_16BIT_PALETTE) + ); + } + break; - wnd->CreateButton(61, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 1, '1', "", 0); - wnd->CreateButton(177, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 2, '2', "", 0); - wnd->CreateButton(292, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 3, '3', "", 0); - wnd->CreateButton(407, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 4, '4', "", 0); + case WINDOW_CharacterWindow_Inventory: + { + CharacterUI_ReleaseButtons(); + ReleaseAwardsScrollBar(); + CharacterUI_InventoryTab_Draw(player, false); + pRenderer->DrawTextureIndexed( + pCharacterScreen_InventoryBtn->uX, + pCharacterScreen_InventoryBtn->uY, + pIcons_LOD->LoadTexturePtr("ib-cd3-d", TEXTURE_16BIT_PALETTE) + ); + } + break; + + default: __debugbreak(); break; + } + + if (bRingsShownInCharScreen) + CharacterUI_DrawPaperdollWithRingOverlay(player); + else + CharacterUI_DrawPaperdoll(player); +} + + + +void GUIWindow_CharacterRecord::ShowStatsTab() +{ +// 004304E7 Game_EventLoop --- part + current_character_screen_window = WINDOW_CharacterWindow_Stats; + CharacterUI_ReleaseButtons(); + ReleaseAwardsScrollBar(); + new OnButtonClick3(pCharacterScreen_StatsBtn->uX, pCharacterScreen_StatsBtn->uY, 0, 0, (int)pCharacterScreen_StatsBtn, 0); +} + +void GUIWindow_CharacterRecord::ShowSkillsTab() +{ +// 004304E7 Game_EventLoop --- part + current_character_screen_window = WINDOW_CharacterWindow_Skills; + CharacterUI_ReleaseButtons(); + ReleaseAwardsScrollBar(); + CharacterUI_SkillsTab_CreateButtons(); + new OnButtonClick3(pCharacterScreen_SkillsBtn->uX, pCharacterScreen_SkillsBtn->uY, 0, 0, (int)pCharacterScreen_SkillsBtn, 0); +} - wnd->CreateButton(0, 0, 0, 0, 1, 0, UIMSG_CycleCharacters, 0, '\t', "", 0); - FillAwardsData(); +void GUIWindow_CharacterRecord::ShowInventoryTab() +{ +// 004304E7 Game_EventLoop --- part + current_character_screen_window = WINDOW_CharacterWindow_Inventory; + ReleaseAwardsScrollBar(); + CharacterUI_ReleaseButtons(); + new OnButtonClick3(pCharacterScreen_InventoryBtn->uX, pCharacterScreen_InventoryBtn->uY, 0, 0, (int)pCharacterScreen_InventoryBtn, 0); +} + +void GUIWindow_CharacterRecord::ShowAwardsTab() +{ +// 004304E7 Game_EventLoop --- part + ReleaseAwardsScrollBar(); + CharacterUI_ReleaseButtons(); + CreateAwardsScrollBar(); + current_character_screen_window = WINDOW_CharacterWindow_Awards; + new OnButtonClick3(pCharacterScreen_AwardsBtn->uX, pCharacterScreen_AwardsBtn->uY, 0, 0, (int)pCharacterScreen_AwardsBtn, 0); + FillAwardsData(); +} + +void GUIWindow_CharacterRecord::ToggleRingsOverlay() +{ + int v128, v125, v123, v121; - return wnd; + bRingsShownInCharScreen ^= 1; + pCharacterScreen_DetalizBtn->Release(); + pCharacterScreen_DollBtn->Release(); + if (bRingsShownInCharScreen) + { + v128 = pIcons_LOD->GetTexture(uTextureID_detaliz_close_button)->uTextureHeight; + v125 = pIcons_LOD->GetTexture(uTextureID_detaliz_close_button)->uTextureWidth; + v123 = 445; + v121 = 470; + } + else + { + v128 = 30; + v125 = 30; + v123 = 300; + v121 = 600; + } + pCharacterScreen_DetalizBtn = pGUIWindow_CurrentMenu->CreateButton( + v121, v123, v125, v128, 1, 0, UIMSG_ChangeDetaliz, 0, 0, + pGlobalTXT_LocalizationStrings[64],// "Detail Toggle" + 0 + ); + pCharacterScreen_DollBtn = pGUIWindow_CurrentMenu->CreateButton(0x1DCu, 0, 0xA4u, 0x159u, 1, 0, UIMSG_ClickPaperdoll, 0, 0, "", 0); + viewparams->bRedrawGameUI = true; } + + //----- (004219BE) -------------------------------------------------------- GUIWindow *CastSpellInfo::GetCastSpellInInventoryWindow() { @@ -566,7 +725,7 @@ } //----- (00419719) -------------------------------------------------------- -void CharacterUI_SkillsTab_Draw(Player *player) +void GUIWindow_CharacterRecord::CharacterUI_SkillsTab_Draw(Player *player) { pRenderer->DrawTextureIndexed(8, 8, pIcons_LOD->LoadTexturePtr("fr_skill", TEXTURE_16BIT_PALETTE)); @@ -593,7 +752,7 @@ } //----- (0041A000) -------------------------------------------------------- -void CharacterUI_AwardsTab_Draw(Player *player) +void GUIWindow_CharacterRecord::CharacterUI_AwardsTab_Draw(Player *player) { int items_per_page; // eax@1 char *v6; // ebx@15 @@ -691,61 +850,6 @@ pRenderer->DrawTextureIndexed(8, 8, pIcons_LOD->GetTexture(uTextureID_Leather)); } -//----- (0041ABFD) -------------------------------------------------------- -void CharacterUI_CharacterScreen_Draw(Player *player) -{ - pRenderer->ClearZBuffer(0, 479); - switch (current_character_screen_window) - { - case WINDOW_CharacterWindow_Stats: // stats - CharacterUI_ReleaseButtons(); - ReleaseAwardsScrollBar(); - CharacterUI_StatsTab_Draw(player); - pRenderer->DrawTextureIndexed(pCharacterScreen_StatsBtn->uX, - pCharacterScreen_StatsBtn->uY, - pIcons_LOD->LoadTexturePtr("ib-cd1-d", TEXTURE_16BIT_PALETTE)); - break; - - case WINDOW_CharacterWindow_Skills: // skills - if (dword_507CC0_activ_ch != uActiveCharacter) - { - CharacterUI_ReleaseButtons(); - CharacterUI_SkillsTab_CreateButtons(); - } - ReleaseAwardsScrollBar(); - CharacterUI_SkillsTab_Draw(player); - pRenderer->DrawTextureIndexed(pCharacterScreen_SkillsBtn->uX, - pCharacterScreen_SkillsBtn->uY, - pIcons_LOD->LoadTexturePtr("ib-cd2-d", TEXTURE_16BIT_PALETTE)); - break; - - case WINDOW_CharacterWindow_Awards: // awards - CharacterUI_ReleaseButtons(); - ReleaseAwardsScrollBar(); - CreateAwardsScrollBar(); - CharacterUI_AwardsTab_Draw(player); - pRenderer->DrawTextureIndexed(pCharacterScreen_AwardsBtn->uX, - pCharacterScreen_AwardsBtn->uY, - pIcons_LOD->LoadTexturePtr("ib-cd4-d", TEXTURE_16BIT_PALETTE)); - break; - - case WINDOW_CharacterWindow_Inventory: // inventory and other - CharacterUI_ReleaseButtons(); - ReleaseAwardsScrollBar(); - CharacterUI_InventoryTab_Draw(player, false); - pRenderer->DrawTextureIndexed(pCharacterScreen_InventoryBtn->uX, - pCharacterScreen_InventoryBtn->uY, - pIcons_LOD->LoadTexturePtr("ib-cd3-d", TEXTURE_16BIT_PALETTE)); - break; - - default: break; - } - - if (bRingsShownInCharScreen) - CharacterUI_DrawPaperdollWithRingOverlay(player); - else - CharacterUI_DrawPaperdoll(player); -} //----- (0043CC7C) -------------------------------------------------------- void CharacterUI_DrawPaperdoll(Player *player) @@ -1858,7 +1962,7 @@ } //----- (00419401) -------------------------------------------------------- -void CharacterUI_SkillsTab_CreateButtons() +void GUIWindow_CharacterRecord::CharacterUI_SkillsTab_CreateButtons() { GUIButton *pButton; // eax@3 unsigned int current_Y; // esi@8 @@ -1949,7 +2053,7 @@ } //----- (00418511) -------------------------------------------------------- -void CharacterUI_StatsTab_Draw( Player *player ) +void GUIWindow_CharacterRecord::CharacterUI_StatsTab_Draw(Player *player) { int pY; // ST34_4@4 const char *pText; // eax@9