Mercurial > mm7
diff GUI/GUIButton.cpp @ 2502:a77c34acdbc9
Media folder
author | Ritor1 |
---|---|
date | Fri, 19 Sep 2014 05:13:32 +0600 |
parents | |
children | a902abdfc7f2 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/GUI/GUIButton.cpp Fri Sep 19 05:13:32 2014 +0600 @@ -0,0 +1,247 @@ +#define _CRTDBG_MAP_ALLOC +#include <stdlib.h> +#include <crtdbg.h> + +#define _CRT_SECURE_NO_WARNINGS +#include "GUIButton.h" +#include "GUIWindow.h" +#include "GUIFont.h" + +#include "Engine/mm7_data.h" +#include "Engine/LOD.h" +#include "Engine/Texts.h" +#include "OSWindow.h" + + + +struct GUIButton *pBtn_CloseBook; +struct GUIButton *pBtn_InstallRemoveSpell; +struct GUIButton *pBtn_Autonotes_Instructors; +struct GUIButton *pBtn_Autonotes_Misc; +struct GUIButton *pBtn_Book_6; +struct GUIButton *pBtn_Book_5; +struct GUIButton *pBtn_Book_4; +struct GUIButton *pBtn_Book_3; +struct GUIButton *pBtn_Book_2; +struct GUIButton *pBtn_Book_1; + + +struct GUIButton *pPlayerCreationUI_BtnReset; +struct GUIButton *pPlayerCreationUI_BtnOK; +struct GUIButton *pBtn_ExitCancel; +struct GUIButton *pBtn_YES; +struct GUIButton *pPlayerCreationUI_BtnPlus; +struct GUIButton *pPlayerCreationUI_BtnMinus; + + +struct GUIButton *pButton_RestUI_Main; +struct GUIButton *pButton_RestUI_Exit; +struct GUIButton *pButton_RestUI_Wait5Minutes; +struct GUIButton *pButton_RestUI_WaitUntilDawn; +struct GUIButton *pButton_RestUI_Wait1Hour; + + +struct GUIButton *pCharacterScreen_ExitBtn; +struct GUIButton *pCharacterScreen_AwardsBtn; +struct GUIButton *pCharacterScreen_InventoryBtn; +struct GUIButton *pCharacterScreen_SkillsBtn; +struct GUIButton *pCharacterScreen_StatsBtn; +struct GUIButton *pCharacterScreen_DollBtn; +struct GUIButton *pCharacterScreen_DetalizBtn; + + +struct GUIButton *pBtn_NPCRight; +struct GUIButton *pBtn_NPCLeft; +struct GUIButton *pBtn_GameSettings; +struct GUIButton *pBtn_QuickReference; +struct GUIButton *pBtn_CastSpell; +struct GUIButton *pBtn_Rest; +struct GUIButton *pBtn_History; +struct GUIButton *pBtn_Calendar; +struct GUIButton *pBtn_Maps; +struct GUIButton *pBtn_Autonotes; +struct GUIButton *pBtn_Quests; + + +struct GUIButton *pMMT_MainMenu_BtnMM6; +struct GUIButton *pMMT_MainMenu_BtnMM7; +struct GUIButton *pMMT_MainMenu_BtnMM8; +struct GUIButton *pMMT_MainMenu_BtnContinue; +struct GUIButton *pMMT_MainMenu_BtnExit; + + +struct GUIButton *pMainMenu_BtnExit; +struct GUIButton *pMainMenu_BtnCredits; +struct GUIButton *pMainMenu_BtnLoad; +struct GUIButton *pMainMenu_BtnNew; + + +struct GUIButton *pBtn_Up; +struct GUIButton *pBtn_Down; +struct GUIButton *ptr_507BA4; + + +struct GUIWindow *pPrimaryWindow; +struct GUIWindow *pChestWindow; +struct GUIWindow *pDialogueWindow; +struct GUIWindow *window_SpeakInHouse; +struct GUIWindow *pGUIWindow_ScrollWindow; +struct GUIWindow *ptr_507BC8; +struct GUIWindow *pGUIWindow_CurrentMenu; +struct GUIWindow *ptr_507BD0; +struct GUIWindow *pGUIWindow_Settings; +struct GUIWindow *pModalWindow; +struct GUIWindow *pGUIWindow_EscMessageWindow; +struct GUIWindow *pBooksWindow; +struct GUIWindow *pGUIWindow2; + + +struct GUIButton *pBtn_Resume; +struct GUIButton *pBtn_QuitGame; +struct GUIButton *pBtn_GameControls; +struct GUIButton *pBtn_LoadGame; +struct GUIButton *pBtn_SaveGame; +struct GUIButton *pBtn_NewGame; + +struct GUIButton *pBtn_SliderRight; +struct GUIButton *pBtn_SliderLeft; + + +struct GUIButton *pBtnDownArrow; +struct GUIButton *pBtnArrowUp; +struct GUIButton *pBtnCancel; +struct GUIButton *pBtnLoadSlot; + + +std::array<GUIButton*, 4> pCreationUI_BtnPressRight2; +std::array<GUIButton*, 4> pCreationUI_BtnPressLeft2; +std::array<GUIButton*, 4> pCreationUI_BtnPressLeft; +std::array<GUIButton*, 4> pCreationUI_BtnPressRight; + + + + + + +//----- (0041D0D8) -------------------------------------------------------- +void GUIButton::Release() +{ + if ( this ) + { + if ( this == this->pParent->pControlsHead ) + { + if ( this->pNext ) + { + this->pParent->pControlsHead = this->pNext; + this->pNext->pPrev = 0; + } + else + { + this->pParent->pControlsHead = 0; + this->pParent->pControlsTail = 0; + } + } + else + { + if ( this->pNext ) + { + this->pPrev->pNext = this->pNext; + this->pNext->pPrev = this->pPrev; + } + else + { + this->pPrev->pNext = 0; + this->pParent->pControlsTail = this->pPrev; + } + } + --this->pParent->uNumControls; + } +} + +//----- (00415180) -------------------------------------------------------- +void GUIButton::DrawLabel( const char *label_text, struct GUIFont *pFont, int a5, int uFontShadowColor ) +{ + //strlen(edx0); + return pParent->DrawText(pFont, + this->uX + (signed int)(this->uWidth - pFont->GetLineWidth(label_text)) / 2, + this->uY + (signed int)(this->uHeight - pFont->uFontHeight) / 2, + a5, label_text, 0, 0, uFontShadowColor); +} +//----- (004B36CC) -------------------------------------------------------- +void CreateButtonInColumn( int column_pos, unsigned int control_id ) +{ + pDialogueWindow->CreateButton( 480, 30 * column_pos + 146, 140, 30, 1, 0, UIMSG_SelectShopDialogueOption, control_id, 0, "", 0); +} +//----- (00419379) -------------------------------------------------------- +void ReleaseAwardsScrollBar() +{ + GUIButton *pButton; // esi@2 + + if ( awards_scroll_bar_created ) + { + awards_scroll_bar_created = false; + ptr_507BA4->Release(); + pBtn_Up->Release(); + pBtn_Down->Release(); + pBtn_Down = 0; + pBtn_Up = 0; + for ( pButton = pGUIWindow_CurrentMenu->pControlsHead; pButton; pButton = pButton->pNext ) + { + if ( pButton->msg == UIMSG_InventoryLeftClick ) + { + pButton->uX = dword_50698C_uX; + pButton->uY = dword_506988_uY; + pButton->uZ = dword_506984_uZ; + pButton->uW = dword_506980_uW; + pGUIWindow_CurrentMenu->_41D08F_set_keyboard_control_group(1, 0, 0, 0); + } + } + } +} +//----- (00419220) -------------------------------------------------------- +void CreateAwardsScrollBar() +{ + GUIButton *pButton; // eax@2 + + if ( !awards_scroll_bar_created ) + { + awards_scroll_bar_created = 1; + for ( pButton = pGUIWindow_CurrentMenu->pControlsHead; pButton; pButton = pButton->pNext ) + { + if ( pButton->msg == UIMSG_InventoryLeftClick ) + { + dword_50698C_uX = pButton->uX; + dword_506988_uY = pButton->uY; + dword_506984_uZ = pButton->uZ; + dword_506980_uW = pButton->uW; + pButton->uW = 0; + pButton->uZ = 0; + pButton->uY = 0; + pButton->uX = 0; + } + } + pBtn_Up = pGUIWindow_CurrentMenu->CreateButton(438, 46, + pIcons_LOD->GetTexture(uTextureID_ar_up_up)->uTextureWidth, + pIcons_LOD->GetTexture(uTextureID_ar_up_up)->uTextureHeight, + 1, 0, UIMSG_ClickAwardsUpBtn, 0, 0, "", + pIcons_LOD->GetTexture(uTextureID_ar_up_up), + pIcons_LOD->GetTexture(uTextureID_ar_up_dn), 0); + pBtn_Down = pGUIWindow_CurrentMenu->CreateButton(438, 292, + pIcons_LOD->GetTexture(uTextureID_ar_dn_up)->uTextureWidth, + pIcons_LOD->GetTexture(uTextureID_ar_dn_up)->uTextureHeight, + 1, 0, UIMSG_ClickAwardsDownBtn, 0, 0, "", + pIcons_LOD->GetTexture(uTextureID_ar_dn_up), + pIcons_LOD->GetTexture(uTextureID_ar_dn_dn), 0); + ptr_507BA4 = pGUIWindow_CurrentMenu->CreateButton(440, 62, 16, 232, 1, 0, UIMSG_ClickAwardScrollBar, 0, 0, "", 0); + } +} +//----- (004BCA33) -------------------------------------------------------- +void UI_CreateEndConversationButton() +{ + pDialogueWindow->Release(); + pDialogueWindow = GUIWindow::Create(0, 0, window->GetWidth(), 345, WINDOW_MainMenu, 0, 0); + pBtn_ExitCancel = pDialogueWindow->CreateButton( 471, 445, 169, 35, 1, 0, UIMSG_Escape, 0, 0, + pGlobalTXT_LocalizationStrings[74], //"End Conversation" + pIcons_LOD->GetTexture(uExitCancelTextureId), 0); + pDialogueWindow->CreateButton(8, 8, 450, 320, 1, 0, UIMSG_BuyInShop_Identify_Repair, 0, 0, "", 0); +} \ No newline at end of file