Mercurial > LightClone
annotate LightClone/Source/World.cpp @ 53:8cefb65577cc
Clean up world states
author | koryspansel |
---|---|
date | Fri, 30 Sep 2011 15:23:16 -0700 |
parents | efd2b1ca5b77 |
children | dc1f4a668d50 |
rev | line source |
---|---|
7
31373c5bd1b9
Start on World refactor
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
1 /* |
31373c5bd1b9
Start on World refactor
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
2 * World |
31373c5bd1b9
Start on World refactor
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
3 */ |
31373c5bd1b9
Start on World refactor
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
4 |
31373c5bd1b9
Start on World refactor
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
5 #include "World.h" |
9 | 6 #include "VertexTypes.h" |
17
4951acfe92fc
Reworking GUI system
koryspansel <koryspansel@bendbroadband.com>
parents:
16
diff
changeset
|
7 #include "GuiLabel.h" |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
8 #include "GuiImage.h" |
21
b4dc5d674e22
Added GUI event system and some support data structures
koryspansel
parents:
20
diff
changeset
|
9 #include "GuiButton.h" |
7
31373c5bd1b9
Start on World refactor
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
10 |
8 | 11 /* |
12 * World | |
13 */ | |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
14 World::World() |
8 | 15 { |
53 | 16 nWorldState = WorldState_Main; |
17 nLogicState = LogicState_LevelLoad; | |
37
58a16d529d95
Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
36
diff
changeset
|
18 nSimulationState = SimulationState_Idle; |
58a16d529d95
Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
36
diff
changeset
|
19 nCurrentLevel = 0; |
8 | 20 } |
21 | |
22 /* | |
23 * Initialize | |
24 */ | |
43 | 25 ErrorCode World::Initialize(ResourceManager* pResourceManager, InputManager* pInput) |
8 | 26 { |
53 | 27 //ASSERT(pResourceManager != NULL); |
28 //ASSERT(pInput != NULL); | |
29 | |
30 ErrorCode eCode = kEnvironment.Initialize(pResourceManager); | |
31 if(eCode != Error_Success) | |
32 { | |
33 TRACE("Error: Failed to initialize environment\n"); | |
8 | 34 |
53 | 35 Terminate(); |
36 return eCode; | |
37 } | |
38 | |
39 eCode = kBot.Initialize(pResourceManager); | |
40 if(eCode != Error_Success) | |
8 | 41 { |
53 | 42 TRACE("Error: Failed to initialize bot\n"); |
43 | |
44 Terminate(); | |
45 return eCode; | |
46 } | |
9 | 47 |
53 | 48 eCode = kProgram.Initialize(); |
49 if(eCode == Error_Success) | |
50 { | |
51 TRACE("Error: Failed to initialize program\n"); | |
52 | |
53 Terminate(); | |
54 return eCode; | |
8 | 55 } |
56 | |
53 | 57 eCode = InitializeInterface(pResourceManager); |
58 if(eCode != Error_Success) | |
59 { | |
60 TRACE("Error: Failed to initialize interface\n"); | |
61 | |
62 Terminate(); | |
63 return eCode; | |
64 } | |
65 | |
66 pInputManager = pInput; | |
67 nLogicState = LogicState_LevelLoad; | |
68 nCurrentLevel = 0; | |
69 | |
8 | 70 return eCode; |
71 } | |
72 | |
73 /* | |
74 * Terminate | |
75 */ | |
76 void World::Terminate() | |
77 { | |
9 | 78 kInterface.Terminate(); |
37
58a16d529d95
Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
36
diff
changeset
|
79 kProgram.Terminate(); |
9 | 80 kBot.Terminate(); |
8 | 81 kEnvironment.Terminate(); |
82 } | |
83 | |
84 /* | |
9 | 85 * Activate |
86 */ | |
87 void World::Activate() | |
88 { | |
53 | 89 nWorldState = WorldState_Game; |
90 nLogicState = LogicState_LevelLoad; | |
9 | 91 } |
92 | |
93 /* | |
94 * Deactivate | |
95 */ | |
96 void World::Deactivate() | |
97 { | |
53 | 98 nWorldState = WorldState_Exit; |
9 | 99 } |
100 | |
101 /* | |
102 * IsActive | |
103 */ | |
104 bool World::IsActive() | |
105 { | |
53 | 106 return nWorldState != WorldState_Exit; |
9 | 107 } |
108 | |
109 /* | |
110 * Load | |
111 */ | |
39
d0ce73ced12e
Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents:
38
diff
changeset
|
112 ErrorCode World::Load(const char* pName) |
9 | 113 { |
114 ErrorCode eCode = kLoader.Load(pName); | |
115 if(eCode == Error_Success) | |
116 { | |
117 const Size& kSize = kLoader.GetSize(); | |
118 | |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
119 eCode = kEnvironment.Setup(kSize.X, kSize.Y); |
9 | 120 if(eCode == Error_Success) |
121 { | |
122 for(uint32 nY = 0; nY < kSize.Y; ++nY) | |
123 { | |
124 for(uint32 nX = 0; nX < kSize.X; ++nX) | |
125 { | |
126 kEnvironment.SetType(nX, nY, kLoader.GetTowerType(nX, nY)); | |
127 kEnvironment.SetAltitude(nX, nY, kLoader.GetTowerHeight(nX, nY)); | |
128 } | |
129 } | |
130 | |
131 kBot.Setup(&kEnvironment); | |
37
58a16d529d95
Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
36
diff
changeset
|
132 kBot.SetPosition(kLoader.GetInitialPosition()); |
58a16d529d95
Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
36
diff
changeset
|
133 kBot.SetDirection(kLoader.GetInitialDirection()); |
9 | 134 } |
135 } | |
136 | |
39
d0ce73ced12e
Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents:
38
diff
changeset
|
137 return eCode; |
9 | 138 } |
139 | |
140 /* | |
8 | 141 * Update |
142 */ | |
143 void World::Update(float fElapsed) | |
144 { | |
53 | 145 kInterface.Update(fElapsed); |
39
d0ce73ced12e
Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents:
38
diff
changeset
|
146 |
53 | 147 if(nWorldState == WorldState_Main) |
148 { | |
9 | 149 } |
150 else | |
151 | |
53 | 152 if(nWorldState == WorldState_Game) |
9 | 153 { |
53 | 154 UpdateInput(fElapsed); |
155 UpdateLogic(fElapsed); | |
156 } | |
157 else | |
9 | 158 |
53 | 159 if(nWorldState == WorldState_Pause) |
160 { | |
9 | 161 } |
8 | 162 } |
163 | |
164 /* | |
165 * Render | |
166 */ | |
9 | 167 void World::Render(RenderContext& kContext) |
168 { | |
169 const uint32 nColor = D3DCOLOR_XRGB(32, 32, 32); | |
170 | |
171 kContext.Begin(nColor); | |
172 | |
53 | 173 D3DVIEWPORT9 kOriginal; |
174 kContext.GetViewport(&kOriginal); | |
175 | |
176 D3DVIEWPORT9 kViewport; | |
177 kViewport.X = 0; | |
178 kViewport.Y = 0; | |
179 kViewport.Width = ScreenSizeX - 280; | |
180 kViewport.Height = ScreenSizeY; | |
181 kViewport.MinZ = kOriginal.MinZ; | |
182 kViewport.MaxZ = kOriginal.MaxZ; | |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
183 |
53 | 184 kContext.SetViewport(kViewport); |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
185 |
53 | 186 kCameraController.SetMode(CameraMode_3D); |
187 kEnvironment.Render(kContext, kCameraController); | |
188 kBot.Render(kContext, kCameraController); | |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
189 |
53 | 190 kContext.SetViewport(kOriginal); |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
191 |
53 | 192 kCameraController.SetMode(CameraMode_2D); |
193 kInterface.Render(kContext, kCameraController); | |
9 | 194 |
195 kContext.End(); | |
196 } | |
197 | |
198 /* | |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
199 * InitializeInterface |
9 | 200 */ |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
201 ErrorCode World::InitializeInterface(ResourceManager* pResourceManager) |
9 | 202 { |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
203 ErrorCode eCode = kInterface.Initialize(pResourceManager, pInputManager); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
204 if(eCode == Error_Success) |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
205 { |
28 | 206 pBackground = new GuiImage(); |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
207 pBackground->Initialize(pResourceManager); |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
208 pBackground->SetTexture("Data\\Textures\\Background03.tga", true); |
23 | 209 pBackground->SetPosition(ScreenSizeX - pBackground->GetWidth(), 0.0f); |
51 | 210 pBackground->SetDepth(512.0f); |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
211 |
32
c227be6a15fe
Fixed drag and drop handling; Just needs to be hooked up now
koryspansel
parents:
31
diff
changeset
|
212 pToolbar = new CodePanel(4, 2); |
28 | 213 pToolbar->Initialize(pResourceManager); |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
214 pToolbar->SetTexture("Data\\Textures\\PanelA.png"); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
215 pToolbar->SetPosition(16, 16.0f); |
38 | 216 pToolbar->SetAction(0, Action_Forward); |
217 pToolbar->SetAction(1, Action_RotateCW); | |
218 pToolbar->SetAction(2, Action_RotateCCW); | |
219 pToolbar->SetAction(3, Action_Jump); | |
220 pToolbar->SetAction(4, Action_Light); | |
221 pToolbar->SetAction(5, Action_FunctionA); | |
222 pToolbar->SetAction(6, Action_FunctionB); | |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
223 pToolbar->SetPermanent(true); |
51 | 224 pToolbar->SetDepth(256.0f); |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
225 |
34
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
226 GuiLabel* pMainLabel = new GuiLabel(); |
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
227 pMainLabel->Initialize(pResourceManager); |
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
228 pMainLabel->SetFont("Courier New", 16); |
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
229 pMainLabel->SetText("Main:"); |
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
230 pMainLabel->SetColor(D3DCOLOR_XRGB(0, 0, 0)); |
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
231 pMainLabel->SetPosition(26.0f, 149.0f); |
51 | 232 pMainLabel->SetDepth(256.0f); |
34
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
233 |
53 | 234 pCode[0] = new CodePanel(4, 3); |
235 pCode[0]->Initialize(pResourceManager); | |
236 pCode[0]->SetTexture("Data\\Textures\\PanelB.png"); | |
237 pCode[0]->SetPosition(16.0f, 160.0f); | |
238 pCode[0]->Subscribe(CodePanel::EventAction, &World::OnAction, this); | |
239 pCode[0]->SetDepth(256.0f); | |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
240 |
34
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
241 GuiLabel* pFunctionALabel = new GuiLabel(); |
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
242 pFunctionALabel->Initialize(pResourceManager); |
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
243 pFunctionALabel->SetFont("Courier New", 16); |
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
244 pFunctionALabel->SetText("Function 1:"); |
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
245 pFunctionALabel->SetColor(D3DCOLOR_XRGB(0, 0, 0)); |
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
246 pFunctionALabel->SetPosition(26.0f, 349.0f); |
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
247 |
53 | 248 pCode[1] = new CodePanel(4, 2); |
249 pCode[1]->Initialize(pResourceManager); | |
250 pCode[1]->SetTexture("Data\\Textures\\PanelA.png"); | |
251 pCode[1]->SetPosition(16.0f, 360.0f); | |
252 pCode[1]->Subscribe(CodePanel::EventAction, &World::OnAction, this); | |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
253 |
34
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
254 GuiLabel* pFunctionBLabel = new GuiLabel(); |
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
255 pFunctionBLabel->Initialize(pResourceManager); |
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
256 pFunctionBLabel->SetFont("Courier New", 16); |
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
257 pFunctionBLabel->SetText("Function 2:"); |
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
258 pFunctionBLabel->SetColor(D3DCOLOR_XRGB(0, 0, 0)); |
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
259 pFunctionBLabel->SetPosition(26.0f, 493.0f); |
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
260 |
53 | 261 pCode[2] = new CodePanel(4, 2); |
262 pCode[2]->Initialize(pResourceManager); | |
263 pCode[2]->SetTexture("Data\\Textures\\PanelA.png"); | |
264 pCode[2]->SetPosition(16.0f, 504.0f); | |
265 pCode[2]->Subscribe(CodePanel::EventAction, &World::OnAction, this); | |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
266 |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
267 const float fButtonPadding = 32.0f; |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
268 const float fButtonSpacing = 8.0f; |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
269 const float fButtonSize = 48.0f; |
28 | 270 |
271 pButtonPlay = new GuiButton(); | |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
272 pButtonPlay->Initialize(pResourceManager); |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
273 pButtonPlay->SetTexture(GuiButtonState_Normal, "Data\\Textures\\Button1N.png", true); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
274 pButtonPlay->SetTexture(GuiButtonState_Hover, "Data\\Textures\\Button1H.png", true); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
275 pButtonPlay->SetTexture(GuiButtonState_Down, "Data\\Textures\\Button1D.png", true); |
34
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
276 pButtonPlay->SetFont("Courier New", 16, FW_BOLD); |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
277 pButtonPlay->SetText("Play"); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
278 pButtonPlay->SetColor(D3DCOLOR_XRGB(0, 0, 0)); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
279 pButtonPlay->SetPosition(fButtonPadding + 0.0f * (fButtonSize + fButtonSpacing), 652.0f); |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
280 pButtonPlay->Subscribe(GuiButton::EventClick, &World::OnPlay, this); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
281 |
28 | 282 pButtonStop = new GuiButton(); |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
283 pButtonStop->Initialize(pResourceManager); |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
284 pButtonStop->SetTexture(GuiButtonState_Normal, "Data\\Textures\\Button1N.png", true); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
285 pButtonStop->SetTexture(GuiButtonState_Hover, "Data\\Textures\\Button1H.png", true); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
286 pButtonStop->SetTexture(GuiButtonState_Down, "Data\\Textures\\Button1D.png", true); |
34
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
287 pButtonStop->SetFont("Courier New", 16, FW_BOLD); |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
288 pButtonStop->SetText("Stop"); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
289 pButtonStop->SetColor(D3DCOLOR_XRGB(0, 0, 0)); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
290 pButtonStop->SetPosition(fButtonPadding + 1.0f * (fButtonSize + fButtonSpacing), 652.0f); |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
291 pButtonStop->Subscribe(GuiButton::EventClick, &World::OnStop, this); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
292 |
28 | 293 pButtonReset = new GuiButton(); |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
294 pButtonReset->Initialize(pResourceManager); |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
295 pButtonReset->SetTexture(GuiButtonState_Normal, "Data\\Textures\\Button1N.png", true); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
296 pButtonReset->SetTexture(GuiButtonState_Hover, "Data\\Textures\\Button1H.png", true); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
297 pButtonReset->SetTexture(GuiButtonState_Down, "Data\\Textures\\Button1D.png", true); |
34
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
298 pButtonReset->SetFont("Courier New", 16, FW_BOLD); |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
299 pButtonReset->SetText("Reset"); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
300 pButtonReset->SetColor(D3DCOLOR_XRGB(0, 0, 0)); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
301 pButtonReset->SetPosition(fButtonPadding + 2.0f * (fButtonSize + fButtonSpacing), 652.0f); |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
302 pButtonReset->Subscribe(GuiButton::EventClick, &World::OnReset, this); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
303 |
28 | 304 pButtonExit = new GuiButton(); |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
305 pButtonExit->Initialize(pResourceManager); |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
306 pButtonExit->SetTexture(GuiButtonState_Normal, "Data\\Textures\\Button1N.png", true); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
307 pButtonExit->SetTexture(GuiButtonState_Hover, "Data\\Textures\\Button1H.png", true); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
308 pButtonExit->SetTexture(GuiButtonState_Down, "Data\\Textures\\Button1D.png", true); |
34
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
309 pButtonExit->SetFont("Courier New", 16, FW_BOLD); |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
310 pButtonExit->SetText("Exit"); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
311 pButtonExit->SetColor(D3DCOLOR_XRGB(0, 0, 0)); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
312 pButtonExit->SetPosition(fButtonPadding + 3.0f * (fButtonSize + fButtonSpacing), 652.0f); |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
313 pButtonExit->Subscribe(GuiButton::EventClick, &World::OnExit, this); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
314 |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
315 pBackground->Add(pToolbar); |
34
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
316 pBackground->Add(pMainLabel); |
53 | 317 pBackground->Add(pCode[0]); |
34
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
318 pBackground->Add(pFunctionALabel); |
53 | 319 pBackground->Add(pCode[1]); |
34
7f5feeb3f604
Implemented reset functionality
koryspansel <koryspansel@bendbroadband.com>
parents:
33
diff
changeset
|
320 pBackground->Add(pFunctionBLabel); |
53 | 321 pBackground->Add(pCode[2]); |
33
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
322 pBackground->Add(pButtonPlay); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
323 pBackground->Add(pButtonStop); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
324 pBackground->Add(pButtonReset); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
325 pBackground->Add(pButtonExit); |
06b151afc8d0
Cleaned up UI art; Completed drag and drop; Centered grid
koryspansel <koryspansel@bendbroadband.com>
parents:
32
diff
changeset
|
326 |
53 | 327 pMessageDialog = new MessageDialog(); |
328 pMessageDialog->Initialize(pResourceManager); | |
329 pMessageDialog->Subscribe(GuiDialog::EventResult, &World::OnResult, this); | |
40 | 330 |
53 | 331 const D3DXVECTOR2& kMessageSize = pMessageDialog->GetDimensions(); |
332 pMessageDialog->SetPosition(0.5f * ((ScreenSizeX - pBackground->GetWidth()) - kMessageSize.x), 0.5f * (ScreenSizeY - kMessageSize.y)); | |
23 | 333 |
53 | 334 pConfirmDialog = new ChoiceDialog(); |
335 pConfirmDialog->Initialize(pResourceManager); | |
336 pConfirmDialog->Subscribe(GuiDialog::EventResult, &World::OnConfirm, this); | |
27 | 337 |
53 | 338 const D3DXVECTOR2& kConfigSize = pConfirmDialog->GetDimensions(); |
339 pConfirmDialog->SetPosition(0.5f * ((ScreenSizeX - pBackground->GetWidth()) - kConfigSize.x), 0.5f * (ScreenSizeY - kConfigSize.y)); | |
340 | |
341 //pHud = new GuiElement(); | |
342 //pHud->Add(pBackground); | |
23 | 343 |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
344 kInterface.Add(pBackground); |
53 | 345 kInterface.Add(pMessageDialog); |
346 kInterface.Add(pConfirmDialog); | |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
347 } |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
348 |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
349 return eCode; |
9 | 350 } |
351 | |
352 /* | |
53 | 353 * UpdateInput |
9 | 354 */ |
53 | 355 void World::UpdateInput(float fElapsed) |
9 | 356 { |
43 | 357 pInputManager->Update(fElapsed); |
358 | |
9 | 359 #if defined(_DEBUG) |
360 if(pInputManager->IsKeyDown(DIK_LEFT)) | |
361 { | |
362 kCameraController.Yaw(0.01f); | |
363 } | |
364 else | |
365 | |
366 if(pInputManager->IsKeyDown(DIK_RIGHT)) | |
367 { | |
368 kCameraController.Yaw(-0.01f); | |
369 } | |
370 | |
371 if(pInputManager->IsKeyDown(DIK_UP)) | |
372 { | |
373 kCameraController.Pitch(0.01f); | |
374 } | |
375 else | |
376 | |
377 if(pInputManager->IsKeyDown(DIK_DOWN)) | |
378 { | |
379 kCameraController.Pitch(-0.01f); | |
380 } | |
381 | |
382 if(pInputManager->IsKeyDown(DIK_NEXT)) | |
383 { | |
384 kCameraController.Move(0.1f); | |
385 } | |
386 else | |
387 | |
388 if(pInputManager->IsKeyDown(DIK_PRIOR)) | |
389 { | |
390 kCameraController.Move(-0.1f); | |
391 } | |
51 | 392 |
393 static bool bControl = false; | |
394 static uint32 nBuffer[4] = {0}; | |
395 static uint32 nCount = 0; | |
396 | |
397 if(bControl) | |
398 { | |
399 if(pInputManager->IsKeyDown(DIK_0) && !pInputManager->WasKeyDown(DIK_0)) | |
400 { | |
401 nBuffer[nCount++] = 0; | |
402 } | |
403 else | |
404 | |
405 if(pInputManager->IsKeyDown(DIK_1) && !pInputManager->WasKeyDown(DIK_1)) | |
406 { | |
407 nBuffer[nCount++] = 1; | |
408 } | |
409 else | |
410 | |
411 if(pInputManager->IsKeyDown(DIK_2) && !pInputManager->WasKeyDown(DIK_2)) | |
412 { | |
413 nBuffer[nCount++] = 2; | |
414 } | |
415 else | |
416 | |
417 if(pInputManager->IsKeyDown(DIK_3) && !pInputManager->WasKeyDown(DIK_3)) | |
418 { | |
419 nBuffer[nCount++] = 3; | |
420 } | |
421 else | |
422 | |
423 if(pInputManager->IsKeyDown(DIK_4) && !pInputManager->WasKeyDown(DIK_4)) | |
424 { | |
425 nBuffer[nCount++] = 4; | |
426 } | |
427 else | |
428 | |
429 if(pInputManager->IsKeyDown(DIK_5) && !pInputManager->WasKeyDown(DIK_5)) | |
430 { | |
431 nBuffer[nCount++] = 5; | |
432 } | |
433 else | |
434 | |
435 if(pInputManager->IsKeyDown(DIK_6) && !pInputManager->WasKeyDown(DIK_6)) | |
436 { | |
437 nBuffer[nCount++] = 6; | |
438 } | |
439 else | |
440 | |
441 if(pInputManager->IsKeyDown(DIK_7) && !pInputManager->WasKeyDown(DIK_7)) | |
442 { | |
443 nBuffer[nCount++] = 7; | |
444 } | |
445 else | |
446 | |
447 if(pInputManager->IsKeyDown(DIK_8) && !pInputManager->WasKeyDown(DIK_8)) | |
448 { | |
449 nBuffer[nCount++] = 8; | |
450 } | |
451 else | |
452 | |
453 if(pInputManager->IsKeyDown(DIK_9) && !pInputManager->WasKeyDown(DIK_9)) | |
454 { | |
455 nBuffer[nCount++] = 9; | |
456 } | |
457 | |
458 if(!pInputManager->IsKeyDown(DIK_LCONTROL)) | |
459 { | |
460 if(nCount > 0) | |
461 { | |
462 nCurrentLevel = 0; | |
53 | 463 nLogicState = LogicState_LevelLoad; |
51 | 464 |
465 for(uint32 i = 0; i < nCount; ++i) | |
466 { | |
467 nCurrentLevel += (uint32)(nBuffer[i] * powf(10.0f, (float)i)); | |
468 } | |
469 } | |
470 | |
471 bControl = false; | |
472 } | |
473 } | |
474 else | |
475 { | |
476 if(pInputManager->IsKeyDown(DIK_LCONTROL)) | |
477 { | |
478 bControl = true; | |
479 nCount = 0; | |
480 } | |
481 } | |
53 | 482 #endif |
483 } | |
51 | 484 |
53 | 485 /* |
486 * UpdateLogic | |
487 */ | |
488 void World::UpdateLogic(float fElapsed) | |
489 { | |
490 if(nLogicState == LogicState_LevelLoad) | |
491 { | |
492 char kBuffer[256]; | |
493 sprintf(kBuffer, "Data\\Maps\\Map%02d.map", nCurrentLevel++); | |
494 | |
495 ErrorCode eCode = Load(kBuffer); | |
496 if(eCode == Error_Success) | |
497 { | |
498 kProgram.Clear(); | |
499 | |
500 for(uint32 i = 0; i < MaximumCodePanels; ++i) | |
501 { | |
502 pCode[i]->Clear(); | |
503 } | |
504 | |
505 nLogicState = LogicState_GameActive; | |
506 } | |
507 else | |
508 { | |
509 pMessageDialog->SetButton(0, "Ok", 0); | |
510 pMessageDialog->SetMessage("Congratulations!\nYou have completed the game"); | |
511 pMessageDialog->Show(); | |
512 | |
513 nLogicState = LogicState_GameOver; | |
514 } | |
515 | |
516 nSimulationState = SimulationState_Idle; | |
517 } | |
518 else | |
519 | |
520 if(nLogicState == LogicState_GameActive) | |
521 { | |
522 if(nSimulationState == SimulationState_Active) | |
523 { | |
524 if(kBot.Update(fElapsed)) | |
525 { | |
526 if(kEnvironment.RequirementsMet()) | |
527 { | |
528 pMessageDialog->SetButton(0, "Ok", 0); | |
529 pMessageDialog->SetMessage("Congratulations!\nYou have completed level %d", nCurrentLevel); | |
530 pMessageDialog->Show(); | |
531 | |
532 nLogicState = LogicState_LevelComplete; | |
533 } | |
534 } | |
535 } | |
536 } | |
9 | 537 } |
21
b4dc5d674e22
Added GUI event system and some support data structures
koryspansel
parents:
20
diff
changeset
|
538 |
b4dc5d674e22
Added GUI event system and some support data structures
koryspansel
parents:
20
diff
changeset
|
539 /* |
38 | 540 * OnAction |
541 */ | |
542 void World::OnAction(GuiEventArguments& kArguments) | |
543 { | |
544 ActionArguments& kActionArguments = (ActionArguments&)kArguments; | |
545 | |
53 | 546 for(uint32 i = 0; i < MaximumCodePanels; ++i) |
38 | 547 { |
53 | 548 if(kArguments.pSource == pCode[i]) |
549 { | |
550 kProgram.SetAction(i, kActionArguments.nSlot, pCode[i]->GetAction(kActionArguments.nSlot)); | |
551 } | |
38 | 552 } |
553 } | |
554 | |
555 /* | |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
556 * OnPlay |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
557 */ |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
558 void World::OnPlay(GuiEventArguments& kArguments) |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
559 { |
23 | 560 if(nSimulationState == SimulationState_Idle) |
561 { | |
37
58a16d529d95
Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
36
diff
changeset
|
562 kEnvironment.Reset(); |
35 | 563 |
37
58a16d529d95
Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
36
diff
changeset
|
564 kBot.Reset(); |
58a16d529d95
Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
36
diff
changeset
|
565 kBot.SetPosition(kLoader.GetInitialPosition()); |
58a16d529d95
Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
36
diff
changeset
|
566 kBot.SetDirection(kLoader.GetInitialDirection()); |
38 | 567 kBot.Upload(kProgram); |
23 | 568 |
569 nSimulationState = SimulationState_Active; | |
570 } | |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
571 } |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
572 |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
573 /* |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
574 * OnStop |
21
b4dc5d674e22
Added GUI event system and some support data structures
koryspansel
parents:
20
diff
changeset
|
575 */ |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
576 void World::OnStop(GuiEventArguments& kArguments) |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
577 { |
23 | 578 if(nSimulationState == SimulationState_Active) |
579 { | |
37
58a16d529d95
Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
36
diff
changeset
|
580 kEnvironment.Reset(); |
58a16d529d95
Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
36
diff
changeset
|
581 |
58a16d529d95
Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
36
diff
changeset
|
582 kBot.Reset(); |
58a16d529d95
Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
36
diff
changeset
|
583 kBot.SetPosition(kLoader.GetInitialPosition()); |
58a16d529d95
Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
36
diff
changeset
|
584 kBot.SetDirection(kLoader.GetInitialDirection()); |
23 | 585 |
586 nSimulationState = SimulationState_Idle; | |
587 } | |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
588 } |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
589 |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
590 /* |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
591 * OnReset |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
592 */ |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
593 void World::OnReset(GuiEventArguments& kArguments) |
21
b4dc5d674e22
Added GUI event system and some support data structures
koryspansel
parents:
20
diff
changeset
|
594 { |
37
58a16d529d95
Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
36
diff
changeset
|
595 kProgram.Clear(); |
58a16d529d95
Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
36
diff
changeset
|
596 |
53 | 597 for(uint32 i = 0; i < MaximumCodePanels; ++i) |
598 { | |
599 pCode[i]->Clear(); | |
600 } | |
21
b4dc5d674e22
Added GUI event system and some support data structures
koryspansel
parents:
20
diff
changeset
|
601 } |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
602 |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
603 /* |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
604 * OnExit |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
605 */ |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
606 void World::OnExit(GuiEventArguments& kArguments) |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
607 { |
53 | 608 pConfirmDialog->SetMessage("Are you sure you want to exit?"); |
609 pConfirmDialog->SetButton(0, "Yes", DialogResult_Yes); | |
610 pConfirmDialog->SetButton(1, "No", DialogResult_No); | |
611 pConfirmDialog->Show(); | |
44
6790cf9e8bd8
Game works from start to finish
koryspansel <koryspansel@bendbroadband.com>
parents:
43
diff
changeset
|
612 |
53 | 613 nWorldState = WorldState_Confirm; |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
614 } |
39
d0ce73ced12e
Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents:
38
diff
changeset
|
615 |
d0ce73ced12e
Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents:
38
diff
changeset
|
616 /* |
d0ce73ced12e
Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents:
38
diff
changeset
|
617 * OnResult |
d0ce73ced12e
Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents:
38
diff
changeset
|
618 */ |
d0ce73ced12e
Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents:
38
diff
changeset
|
619 void World::OnResult(GuiEventArguments& kArguments) |
d0ce73ced12e
Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents:
38
diff
changeset
|
620 { |
53 | 621 if(nWorldState == WorldState_Game) |
39
d0ce73ced12e
Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents:
38
diff
changeset
|
622 { |
53 | 623 if(nLogicState == LogicState_LevelComplete) |
624 { | |
625 nLogicState = LogicState_LevelLoad; | |
626 } | |
627 else | |
39
d0ce73ced12e
Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents:
38
diff
changeset
|
628 |
53 | 629 if(nLogicState == LogicState_GameOver) |
630 { | |
631 nCurrentLevel = 0; | |
632 nLogicState = LogicState_LevelLoad; | |
633 | |
634 //TODO: Return to main menu | |
635 nWorldState = WorldState_Main; | |
636 } | |
40 | 637 } |
638 } | |
639 | |
640 /* | |
641 * OnConfirm | |
642 */ | |
643 void World::OnConfirm(GuiEventArguments& kArguments) | |
644 { | |
53 | 645 if(nWorldState == WorldState_Confirm) |
40 | 646 { |
53 | 647 GuiResultArguments& kResultArguments = (GuiResultArguments&)kArguments; |
39
d0ce73ced12e
Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents:
38
diff
changeset
|
648 |
53 | 649 if(kResultArguments.nResult == DialogResult_Yes) |
650 { | |
651 Deactivate(); | |
652 } | |
653 else | |
654 | |
655 if(kResultArguments.nResult == DialogResult_No) | |
656 { | |
657 nWorldState = WorldState_Game; | |
658 } | |
39
d0ce73ced12e
Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents:
38
diff
changeset
|
659 } |
d0ce73ced12e
Added base GuiDialog for event handling; Hookup level complete dialog
koryspansel <koryspansel@bendbroadband.com>
parents:
38
diff
changeset
|
660 } |