Mercurial > LightClone
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 | 1 /* |
2 * Dialog | |
3 */ | |
4 | |
5 #ifndef __DIALOG_H__ | |
6 #define __DIALOG_H__ | |
7 | |
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 | 10 #include "GuiLabel.h" |
11 #include "GuiButton.h" | |
40 | 12 #include <stdarg.h> |
13 #include <stdio.h> | |
38 | 14 |
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 | 27 * Dialog |
28 */ | |
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 | 31 { |
32 /* | |
33 * kLabel | |
34 */ | |
35 GuiLabel kLabel; | |
36 | |
37 /* | |
38 * kButton | |
39 */ | |
40 GuiButton kButton[ButtonCount]; | |
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 | 47 public: |
48 | |
49 /* | |
50 * Dialog | |
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 | 53 { |
54 } | |
55 | |
56 /* | |
57 * Initialize | |
58 */ | |
59 virtual ErrorCode Initialize(ResourceManager* pResourceManager) | |
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 | 62 if(eCode == Error_Success) |
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 | 65 //SetDimensions(300.0f, 200.0f); |
66 | |
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 | 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 | 72 |
73 Add(&kLabel); | |
74 | |
75 for(uint32 i = 0; i < ButtonCount; ++i) | |
76 { | |
77 kButton[i].Initialize(pResourceManager); | |
78 kButton[i].SetTexture(GuiButtonState_Normal, "Data\\Textures\\ButtonN.tga", true); | |
79 kButton[i].SetTexture(GuiButtonState_Hover, "Data\\Textures\\ButtonH.tga"); | |
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 | 83 kButton[i].Subscribe(GuiButton::EventClick, &Dialog::OnClick, this); |
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 | 98 Add(&kButton[i]); |
99 } | |
100 } | |
101 | |
102 return eCode; | |
103 } | |
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 | 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 | 110 va_list kArguments; |
111 va_start(kArguments, pFormat); | |
112 | |
113 char kBuffer[128]; | |
114 vsprintf(kBuffer, pFormat, kArguments); | |
115 | |
116 kLabel.SetText(kBuffer); | |
117 | |
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 | 130 private: |
131 | |
132 /* | |
133 * OnClick | |
134 */ | |
135 void OnClick(GuiEventArguments& kArguments) | |
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 | 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 | 143 } |
144 } | |
145 }; | |
146 | |
147 #endif //__DIALOG_H__ |