annotate LightClone/Source/Dialog.h @ 40:00d17d8f407d

Hookup game over dialog; Remove Code class
author koryspansel
date Thu, 22 Sep 2011 10:21:14 -0700
parents d0ce73ced12e
children a986355cca5f
rev   line source
38
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
1 /*
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
2 * Dialog
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
3 */
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
4
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
5 #ifndef __DIALOG_H__
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
6 #define __DIALOG_H__
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
7
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
8 #include "Core.h"
39
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
9 #include "GuiDialog.h"
38
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
10 #include "GuiLabel.h"
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
11 #include "GuiButton.h"
40
00d17d8f407d Hookup game over dialog; Remove Code class
koryspansel
parents: 39
diff changeset
12 #include <stdarg.h>
00d17d8f407d Hookup game over dialog; Remove Code class
koryspansel
parents: 39
diff changeset
13 #include <stdio.h>
38
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
14
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
15 /*
39
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
16 * DialogResult
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
17 */
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
18 enum
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
19 {
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
20 DialogResult_Ok = 0,
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
21
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
22 DialogResult_Yes = 0,
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
23 DialogResult_No = 1,
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
24 };
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
25
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
26 /*
38
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
27 * Dialog
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
28 */
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
29 template<uint32 ButtonCount>
39
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
30 class Dialog : public GuiDialog
38
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
31 {
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
32 /*
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
33 * kLabel
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
34 */
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
35 GuiLabel kLabel;
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
36
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
37 /*
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
38 * kButton
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
39 */
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
40 GuiButton kButton[ButtonCount];
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
41
39
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
42 /*
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
43 * kResult
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
44 */
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
45 uint32 kResult[ButtonCount];
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
46
38
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
47 public:
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
48
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
49 /*
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
50 * Dialog
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
51 */
39
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
52 Dialog() : GuiDialog()
38
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
53 {
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
54 }
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
55
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
56 /*
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
57 * Initialize
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
58 */
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
59 virtual ErrorCode Initialize(ResourceManager* pResourceManager)
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
60 {
39
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
61 ErrorCode eCode = GuiDialog::Initialize(pResourceManager);
38
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
62 if(eCode == Error_Success)
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
63 {
39
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
64 SetTexture("Data\\Textures\\Dialog0.tga", true);
38
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
65 //SetDimensions(300.0f, 200.0f);
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
66
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
67 kLabel.Initialize(pResourceManager);
39
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
68 kLabel.SetPosition(0.5f * kDimensions.x, 0.15f * kDimensions.y);
38
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
69 kLabel.SetLabelFlag(GuiLabelFlag_CenterX);
39
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
70 kLabel.SetFont("Courier New", 16);
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
71 kLabel.SetColor(D3DCOLOR_XRGB(0, 0, 0));
38
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
72
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
73 Add(&kLabel);
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
74
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
75 for(uint32 i = 0; i < ButtonCount; ++i)
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
76 {
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
77 kButton[i].Initialize(pResourceManager);
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
78 kButton[i].SetTexture(GuiButtonState_Normal, "Data\\Textures\\ButtonN.tga", true);
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
79 kButton[i].SetTexture(GuiButtonState_Hover, "Data\\Textures\\ButtonH.tga");
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
80 kButton[i].SetTexture(GuiButtonState_Down, "Data\\Textures\\ButtonD.tga");
39
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
81 kButton[i].SetFont("Courier New", 16);
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
82 kButton[i].SetColor(D3DCOLOR_XRGB(0, 0, 0));
38
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
83 kButton[i].Subscribe(GuiButton::EventClick, &Dialog::OnClick, this);
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
84
39
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
85 const D3DXVECTOR2& kButtonSize = kButton[i].GetDimensions();
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
86
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
87 //x = 0.5 * Wb
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
88 //1 = 0.5 * Wd - x
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
89 //2 = 0.25 * Wd - x; 0.75 * Wd - x
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
90
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
91 const float fScale = 1.0f / (float)(ButtonCount + 1);
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
92
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
93 const float fX = (i + 1) * fScale * kDimensions.x - 0.5f * kButtonSize.x;
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
94 const float fY = 0.65f * kDimensions.y;
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
95
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
96 kButton[i].SetPosition(fX, fY);
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
97
38
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
98 Add(&kButton[i]);
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
99 }
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
100 }
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
101
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
102 return eCode;
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
103 }
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
104
39
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
105 /*
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
106 * SetMessage
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
107 */
40
00d17d8f407d Hookup game over dialog; Remove Code class
koryspansel
parents: 39
diff changeset
108 void SetMessage(const char* pFormat, ...)
39
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
109 {
40
00d17d8f407d Hookup game over dialog; Remove Code class
koryspansel
parents: 39
diff changeset
110 va_list kArguments;
00d17d8f407d Hookup game over dialog; Remove Code class
koryspansel
parents: 39
diff changeset
111 va_start(kArguments, pFormat);
00d17d8f407d Hookup game over dialog; Remove Code class
koryspansel
parents: 39
diff changeset
112
00d17d8f407d Hookup game over dialog; Remove Code class
koryspansel
parents: 39
diff changeset
113 char kBuffer[128];
00d17d8f407d Hookup game over dialog; Remove Code class
koryspansel
parents: 39
diff changeset
114 vsprintf(kBuffer, pFormat, kArguments);
00d17d8f407d Hookup game over dialog; Remove Code class
koryspansel
parents: 39
diff changeset
115
00d17d8f407d Hookup game over dialog; Remove Code class
koryspansel
parents: 39
diff changeset
116 kLabel.SetText(kBuffer);
00d17d8f407d Hookup game over dialog; Remove Code class
koryspansel
parents: 39
diff changeset
117
00d17d8f407d Hookup game over dialog; Remove Code class
koryspansel
parents: 39
diff changeset
118 va_end(kArguments);
39
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
119 }
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
120
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
121 /*
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
122 * SetButton
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
123 */
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
124 void SetButton(uint32 nButton, const char* pText, uint32 nResult)
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
125 {
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
126 kButton[nButton].SetText(pText);
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
127 kResult[nButton] = nResult;
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
128 }
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
129
38
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
130 private:
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
131
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
132 /*
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
133 * OnClick
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
134 */
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
135 void OnClick(GuiEventArguments& kArguments)
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
136 {
39
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
137 for(uint32 nButton = 0; nButton < ButtonCount; ++nButton)
38
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
138 {
39
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
139 if(kArguments.pSource == &kButton[nButton])
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
140 {
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
141 Close(kResult[nButton]);
d0ce73ced12e Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents: 38
diff changeset
142 }
38
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
143 }
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
144 }
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
145 };
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
146
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents:
diff changeset
147 #endif //__DIALOG_H__