Mercurial > LightClone
view LightClone/Source/Dialog.h @ 41:a986355cca5f
Move Tower structure into Environment
author | koryspansel |
---|---|
date | Thu, 22 Sep 2011 10:25:35 -0700 |
parents | 00d17d8f407d |
children | 6790cf9e8bd8 |
line wrap: on
line source
/* * Dialog */ #ifndef __DIALOG_H__ #define __DIALOG_H__ #include "Core.h" #include "GuiDialog.h" #include "GuiLabel.h" #include "GuiButton.h" #include <stdarg.h> #include <stdio.h> /* * DialogResult */ enum { DialogResult_Ok = 0, DialogResult_Yes = 0, DialogResult_No = 1, }; /* * Dialog */ template<uint32 ButtonCount> class Dialog : public GuiDialog { /* * kLabel */ GuiLabel kLabel; /* * kButton */ GuiButton kButton[ButtonCount]; /* * kResult */ uint32 kResult[ButtonCount]; public: /* * Dialog */ Dialog() : GuiDialog() { } /* * Initialize */ virtual ErrorCode Initialize(ResourceManager* pResourceManager) { ErrorCode eCode = GuiDialog::Initialize(pResourceManager); if(eCode == Error_Success) { SetTexture("Data\\Textures\\Dialog0.tga", true); kLabel.Initialize(pResourceManager); kLabel.SetPosition(0.5f * kDimensions.x, 0.15f * kDimensions.y); kLabel.SetLabelFlag(GuiLabelFlag_CenterX); kLabel.SetFont("Courier New", 16); kLabel.SetColor(D3DCOLOR_XRGB(0, 0, 0)); Add(&kLabel); for(uint32 i = 0; i < ButtonCount; ++i) { kButton[i].Initialize(pResourceManager); kButton[i].SetTexture(GuiButtonState_Normal, "Data\\Textures\\ButtonN.tga", true); kButton[i].SetTexture(GuiButtonState_Hover, "Data\\Textures\\ButtonH.tga"); kButton[i].SetTexture(GuiButtonState_Down, "Data\\Textures\\ButtonD.tga"); kButton[i].SetFont("Courier New", 16); kButton[i].SetColor(D3DCOLOR_XRGB(0, 0, 0)); kButton[i].Subscribe(GuiButton::EventClick, &Dialog::OnClick, this); const float fX = ((i + 1) * kDimensions.x / (float)(ButtonCount + 1)) - 0.5f * kButton[i].GetDimensions().x; const float fY = 0.65f * kDimensions.y; kButton[i].SetPosition(fX, fY); Add(&kButton[i]); } } return eCode; } /* * SetMessage */ void SetMessage(const char* pFormat, ...) { va_list kArguments; va_start(kArguments, pFormat); char kBuffer[128]; vsprintf(kBuffer, pFormat, kArguments); kLabel.SetText(kBuffer); va_end(kArguments); } /* * SetButton */ void SetButton(uint32 nButton, const char* pText, uint32 nResult) { kButton[nButton].SetText(pText); kResult[nButton] = nResult; } private: /* * OnClick */ void OnClick(GuiEventArguments& kArguments) { for(uint32 nButton = 0; nButton < ButtonCount; ++nButton) { if(kArguments.pSource == &kButton[nButton]) { Close(kResult[nButton]); } } } }; #endif //__DIALOG_H__