Mercurial > LightClone
annotate LightClone/Source/World.cpp @ 26:3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
author | koryspansel |
---|---|
date | Fri, 16 Sep 2011 15:28:15 -0700 |
parents | 4ee162fc3537 |
children | 5656c8e382fc |
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 */ | |
24
4ee162fc3537
More Gui work; Added new button states
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
14 World::World() : kToolbar(8), kMain(16), kFunction(8) |
8 | 15 { |
9 | 16 nGameState = GameState_Active; |
17 nSimulationState = SimulationState_Idle; | |
18 pFunction = 0; | |
19 nCurrentFunction = 0; | |
20 nCurrentLevel = 0; | |
21 | |
22 kArrowBounds[0] = Rectangle2(1206.0f + 0 * 16.0f, 473.0f + 0 * 54.0f, 16.0f, 16.0f); | |
23 kArrowBounds[1] = Rectangle2(1206.0f + 2 * 16.0f, 473.0f + 0 * 54.0f, 16.0f, 16.0f); | |
24 | |
25 kDialog1Bounds[0] = Rectangle2(567.0f, 412.0f, 150.0f, 60.0f); | |
26 | |
27 kDialog2Bounds[0] = Rectangle2(1023.0f + 2.5f * 54.0f, 638.0f + 0 * 00.0f, 48.0f, 48.0f); | |
28 kDialog2Bounds[1] = Rectangle2(1023.0f + 2.5f * 54.0f, 638.0f + 0 * 00.0f, 48.0f, 48.0f); | |
29 | |
30 kToolbar.Add(1023.0f + 0 * 54.0f, 85.0f + 0 * 54.0f, 48.0f, 48.0f); | |
31 kToolbar.Add(1023.0f + 1 * 54.0f, 85.0f + 0 * 54.0f, 48.0f, 48.0f); | |
32 kToolbar.Add(1023.0f + 2 * 54.0f, 85.0f + 0 * 54.0f, 48.0f, 48.0f); | |
33 kToolbar.Add(1023.0f + 3 * 54.0f, 85.0f + 0 * 54.0f, 48.0f, 48.0f); | |
34 kToolbar.Add(1023.0f + 0 * 54.0f, 85.0f + 1 * 54.0f, 48.0f, 48.0f); | |
35 kToolbar.Add(1023.0f + 1 * 54.0f, 85.0f + 1 * 54.0f, 48.0f, 48.0f); | |
36 kToolbar.Add(1023.0f + 2 * 54.0f, 85.0f + 1 * 54.0f, 48.0f, 48.0f); | |
37 kToolbar.Add(1023.0f + 3 * 54.0f, 85.0f + 1 * 54.0f, 48.0f, 48.0f); | |
38 | |
39 kMain.Add(1023.0f + 0 * 54.0f, 238.0f + 0 * 54.0f, 48.0f, 48.0f); | |
40 kMain.Add(1023.0f + 1 * 54.0f, 238.0f + 0 * 54.0f, 48.0f, 48.0f); | |
41 kMain.Add(1023.0f + 2 * 54.0f, 238.0f + 0 * 54.0f, 48.0f, 48.0f); | |
42 kMain.Add(1023.0f + 3 * 54.0f, 238.0f + 0 * 54.0f, 48.0f, 48.0f); | |
43 kMain.Add(1023.0f + 0 * 54.0f, 238.0f + 1 * 54.0f, 48.0f, 48.0f); | |
44 kMain.Add(1023.0f + 1 * 54.0f, 238.0f + 1 * 54.0f, 48.0f, 48.0f); | |
45 kMain.Add(1023.0f + 2 * 54.0f, 238.0f + 1 * 54.0f, 48.0f, 48.0f); | |
46 kMain.Add(1023.0f + 3 * 54.0f, 238.0f + 1 * 54.0f, 48.0f, 48.0f); | |
47 kMain.Add(1023.0f + 0 * 54.0f, 238.0f + 2 * 54.0f, 48.0f, 48.0f); | |
48 kMain.Add(1023.0f + 1 * 54.0f, 238.0f + 2 * 54.0f, 48.0f, 48.0f); | |
49 kMain.Add(1023.0f + 2 * 54.0f, 238.0f + 2 * 54.0f, 48.0f, 48.0f); | |
50 kMain.Add(1023.0f + 3 * 54.0f, 238.0f + 2 * 54.0f, 48.0f, 48.0f); | |
51 kMain.Add(1023.0f + 0 * 54.0f, 238.0f + 3 * 54.0f, 48.0f, 48.0f); | |
52 kMain.Add(1023.0f + 1 * 54.0f, 238.0f + 3 * 54.0f, 48.0f, 48.0f); | |
53 kMain.Add(1023.0f + 2 * 54.0f, 238.0f + 3 * 54.0f, 48.0f, 48.0f); | |
54 kMain.Add(1023.0f + 3 * 54.0f, 238.0f + 3 * 54.0f, 48.0f, 48.0f); | |
55 | |
56 kFunction.Add(1023.0f + 0 * 54.0f, 501.0f + 0 * 54.0f, 48.0f, 48.0f); | |
57 kFunction.Add(1023.0f + 1 * 54.0f, 501.0f + 0 * 54.0f, 48.0f, 48.0f); | |
58 kFunction.Add(1023.0f + 2 * 54.0f, 501.0f + 0 * 54.0f, 48.0f, 48.0f); | |
59 kFunction.Add(1023.0f + 3 * 54.0f, 501.0f + 0 * 54.0f, 48.0f, 48.0f); | |
60 kFunction.Add(1023.0f + 0 * 54.0f, 501.0f + 1 * 54.0f, 48.0f, 48.0f); | |
61 kFunction.Add(1023.0f + 1 * 54.0f, 501.0f + 1 * 54.0f, 48.0f, 48.0f); | |
62 kFunction.Add(1023.0f + 2 * 54.0f, 501.0f + 1 * 54.0f, 48.0f, 48.0f); | |
63 kFunction.Add(1023.0f + 3 * 54.0f, 501.0f + 1 * 54.0f, 48.0f, 48.0f); | |
8 | 64 } |
65 | |
66 /* | |
67 * Initialize | |
68 */ | |
14 | 69 ErrorCode World::Initialize(EventSystem* pSystem, ResourceManager* pResourceManager, InputManager* pInput) |
8 | 70 { |
71 ErrorCode eCode = Error_Fail; | |
72 | |
9 | 73 if(pResourceManager && pInput) |
8 | 74 { |
14 | 75 pEventSystem = pSystem; |
9 | 76 pInputManager = pInput; |
77 | |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
78 eCode = kEnvironment.Initialize(pResourceManager); |
8 | 79 if(eCode == Error_Success) |
80 { | |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
81 eCode = kBot.Initialize(pResourceManager); |
8 | 82 if(eCode == Error_Success) |
83 { | |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
84 //eCode = kProgram.Initialize(pResourceManager); |
9 | 85 if(eCode == Error_Success) |
86 { | |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
87 eCode = InitializeInterface(pResourceManager); |
9 | 88 if(eCode == Error_Success) |
89 { | |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
90 nCurrentLevel = 0; |
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
91 nGameState = GameState_LoadMap; |
9 | 92 } |
93 } | |
8 | 94 } |
95 } | |
96 } | |
97 | |
98 return eCode; | |
99 } | |
100 | |
101 /* | |
102 * Terminate | |
103 */ | |
104 void World::Terminate() | |
105 { | |
9 | 106 kInterface.Terminate(); |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
107 //kProgram.Terminate(); |
9 | 108 kBot.Terminate(); |
8 | 109 kEnvironment.Terminate(); |
110 } | |
111 | |
112 /* | |
9 | 113 * Activate |
114 */ | |
115 void World::Activate() | |
116 { | |
117 nGameState = GameState_LoadMap; | |
118 } | |
119 | |
120 /* | |
121 * Deactivate | |
122 */ | |
123 void World::Deactivate() | |
124 { | |
125 nGameState = GameState_Exit; | |
126 } | |
127 | |
128 /* | |
129 * IsActive | |
130 */ | |
131 bool World::IsActive() | |
132 { | |
133 return nGameState != GameState_Exit; | |
134 } | |
135 | |
136 /* | |
137 * Load | |
138 */ | |
139 bool World::Load(const char* pName) | |
140 { | |
141 ErrorCode eCode = kLoader.Load(pName); | |
142 if(eCode == Error_Success) | |
143 { | |
144 if(pFunction) | |
145 { | |
146 delete[] pFunction; | |
147 pFunction = NULL; | |
148 } | |
149 | |
150 const Size& kSize = kLoader.GetSize(); | |
151 | |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
152 eCode = kEnvironment.Setup(kSize.X, kSize.Y); |
9 | 153 if(eCode == Error_Success) |
154 { | |
155 for(uint32 nY = 0; nY < kSize.Y; ++nY) | |
156 { | |
157 for(uint32 nX = 0; nX < kSize.X; ++nX) | |
158 { | |
159 kEnvironment.SetType(nX, nY, kLoader.GetTowerType(nX, nY)); | |
160 kEnvironment.SetAltitude(nX, nY, kLoader.GetTowerHeight(nX, nY)); | |
161 } | |
162 } | |
163 | |
164 kBot.Setup(&kEnvironment); | |
165 kBot.kPosition = kLoader.GetInitialPosition(); | |
166 kBot.kDirection = kLoader.GetInitialDirection(); | |
167 | |
168 const uint32 nCount = kLoader.GetFunctionCount(); | |
169 | |
170 pFunction = new Code[nCount + 1]; | |
171 pFunction[0].Initialize(MainFunctionLength); | |
172 pFunction[0].Clear(); | |
173 | |
174 for(uint32 i = 0; i < nCount; ++i) | |
175 { | |
176 const uint32 nLength = kLoader.GetFunctionLength(i); | |
177 | |
178 pFunction[i + 1].Initialize(nLength); | |
179 pFunction[i + 1].Clear(); | |
180 } | |
181 } | |
182 } | |
183 | |
184 return eCode == Error_Success; | |
185 } | |
186 | |
187 /* | |
188 * ResetEnvironment | |
189 */ | |
190 void World::ResetEnvironment() | |
191 { | |
192 kEnvironment.Reset(); | |
193 } | |
194 | |
195 /* | |
196 * ResetBot | |
197 */ | |
198 void World::ResetBot() | |
199 { | |
200 kBot.Reset(); | |
201 kBot.kPosition = kLoader.GetInitialPosition(); | |
202 kBot.kDirection = kLoader.GetInitialDirection(); | |
203 } | |
204 | |
205 /* | |
206 * ResetCode | |
207 */ | |
208 void World::ClearCode() | |
209 { | |
210 for(uint32 i = 0; i < kLoader.GetFunctionCount(); ++i) | |
211 { | |
212 pFunction[i].Clear(); | |
213 } | |
214 } | |
215 | |
216 /* | |
8 | 217 * Update |
218 */ | |
219 void World::Update(float fElapsed) | |
220 { | |
9 | 221 ProcessInput(fElapsed); |
222 | |
223 if(nGameState == GameState_LoadMap) | |
224 { | |
225 char kBuffer[256]; | |
226 sprintf_s(kBuffer, "Data\\Maps\\Map%02d.map", nCurrentLevel++); | |
227 | |
228 nGameState = Load(kBuffer) ? GameState_Active : GameState_Over; | |
229 } | |
230 else | |
231 | |
232 if(nGameState == GameState_Active) | |
233 { | |
234 if(nSimulationState == SimulationState_Active) | |
235 { | |
236 if(kBot.Update(fElapsed)) | |
237 { | |
238 if(kEnvironment.RequirementsMet()) | |
239 { | |
240 kDialog.Reset("Some message"); | |
241 kDialog.AddButton(DialogButton_Ok, "Ok", 0.0f, 0.0f, 0.0f, 0.0f); | |
242 | |
243 nGameState = GameState_Complete; | |
244 } | |
245 } | |
246 } | |
17
4951acfe92fc
Reworking GUI system
koryspansel <koryspansel@bendbroadband.com>
parents:
16
diff
changeset
|
247 |
4951acfe92fc
Reworking GUI system
koryspansel <koryspansel@bendbroadband.com>
parents:
16
diff
changeset
|
248 kInterface.Update(fElapsed); |
9 | 249 } |
8 | 250 } |
251 | |
252 /* | |
253 * Render | |
254 */ | |
9 | 255 void World::Render(RenderContext& kContext) |
256 { | |
257 const uint32 nColor = D3DCOLOR_XRGB(32, 32, 32); | |
258 | |
259 kContext.Begin(nColor); | |
260 | |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
261 //TODO: Remove |
9 | 262 if(nGameState >= GameState_Active) |
263 { | |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
264 kCameraController.SetMode(CameraMode_3D); |
9 | 265 Render3D(kContext); |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
266 |
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
267 kCameraController.SetMode(CameraMode_2D); |
9 | 268 Render2D(kContext); |
269 } | |
270 | |
271 kContext.End(); | |
272 } | |
273 | |
274 /* | |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
275 * InitializeInterface |
9 | 276 */ |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
277 ErrorCode World::InitializeInterface(ResourceManager* pResourceManager) |
9 | 278 { |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
279 ErrorCode eCode = kInterface.Initialize(pResourceManager, pInputManager); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
280 if(eCode == Error_Success) |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
281 { |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
282 GuiImage* pBackground = new GuiImage(); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
283 pBackground->Initialize(pResourceManager); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
284 pBackground->SetTexture("Data\\Textures\\Background01.tga", true); |
23 | 285 pBackground->SetPosition(ScreenSizeX - pBackground->GetWidth(), 0.0f); |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
286 |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
287 GuiButton* pButtonPlay = new GuiButton(); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
288 pButtonPlay->Initialize(pResourceManager); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
289 pButtonPlay->SetTexture(GuiButtonState_Normal, "Data\\Textures\\Play.tga", true); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
290 pButtonPlay->SetPosition(1023.0f + 0.0f * 54.0f, 640.0f); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
291 pButtonPlay->Subscribe(GuiButton::EventClick, &World::OnPlay, this); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
292 |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
293 GuiButton* pButtonStop = new GuiButton(); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
294 pButtonStop->Initialize(pResourceManager); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
295 pButtonStop->SetTexture(GuiButtonState_Normal, "Data\\Textures\\Stop.tga", true); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
296 pButtonStop->SetPosition(1023.0f + 1.0f * 54.0f, 640.0f); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
297 pButtonStop->Subscribe(GuiButton::EventClick, &World::OnStop, this); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
298 |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
299 /* |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
300 GuiButton* pButtonReset = new GuiButton(); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
301 pButtonReset->Initialize(pResourceManager); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
302 pButtonReset->SetTexture(GuiButtonState_Normal, "Data\\Textures\\Reset.tga", true); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
303 pButtonReset->SetPosition(1023.0f + 2.0f * 54.0f, 640.0f.0f); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
304 pButtonReset->Subscribe(GuiButton::EventClick, &World::OnReset, this); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
305 */ |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
306 |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
307 GuiButton* pButtonExit = new GuiButton(); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
308 pButtonExit->Initialize(pResourceManager); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
309 pButtonExit->SetTexture(GuiButtonState_Normal, "Data\\Textures\\Exit.tga", true); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
310 pButtonExit->SetPosition(1023.0f + 3.0f * 54.0f, 640.0f); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
311 pButtonExit->Subscribe(GuiButton::EventClick, &World::OnExit, this); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
312 |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
313 /* |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
314 GuiLabel* |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
315 pLabel = new GuiLabel(); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
316 pLabel->Initialize(pResourceManager); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
317 pLabel->SetFont("Courier New", 16); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
318 pLabel->SetText("This is a test!"); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
319 pLabel->SetFlags(GuiLabelFlag_CenterX | GuiLabelFlag_CenterY); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
320 pLabel->SetPosition(0.5f * ScreenSizeX, 0.5f * ScreenSizeY); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
321 */ |
17
4951acfe92fc
Reworking GUI system
koryspansel <koryspansel@bendbroadband.com>
parents:
16
diff
changeset
|
322 |
23 | 323 pLevelDialog = new GuiImage(); |
324 pLevelDialog->Initialize(pResourceManager); | |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
24
diff
changeset
|
325 pLevelDialog->ClearFlag(GuiElementFlag_Visible); |
24
4ee162fc3537
More Gui work; Added new button states
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
326 pLevelDialog->SetTexture("Data\\Textures\\Dialog0.tga", true); |
23 | 327 pLevelDialog->SetPosition(0.5f * (ScreenSizeX - pLevelDialog->GetWidth()), 0.5f * (ScreenSizeY - pLevelDialog->GetHeight())); |
328 | |
329 pLevelDialogOk = new GuiButton(); | |
330 pLevelDialogOk->Initialize(pResourceManager); | |
24
4ee162fc3537
More Gui work; Added new button states
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
331 pLevelDialogOk->SetTexture(GuiButtonState_Normal, "Data\\Textures\\ButtonN.tga"); |
4ee162fc3537
More Gui work; Added new button states
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
332 pLevelDialogOk->SetTexture(GuiButtonState_Hover, "Data\\Textures\\ButtonH.tga"); |
4ee162fc3537
More Gui work; Added new button states
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
333 pLevelDialogOk->SetTexture(GuiButtonState_Down, "Data\\Textures\\ButtonD.tga"); |
23 | 334 pLevelDialogOk->SetFont("Courier New", 24); |
335 pLevelDialogOk->SetText("Ok"); | |
336 pLevelDialogOk->SetDimensions(150.0f, 52.0f); | |
337 pLevelDialogOk->SetPosition(0.5f * (pLevelDialog->GetWidth() - pLevelDialogOk->GetWidth()), 171.0f); | |
338 pLevelDialogOk->Subscribe(GuiButton::EventClick, &World::OnExit, this); | |
339 | |
340 pLevelDialog->Add(pLevelDialogOk); | |
341 | |
342 /* | |
343 pGameDialogOk = new GuiButton(); | |
344 pGameDialogOk->Initialize(pResourceManager); | |
345 pGameDialogOk->SetTexture(GuiButtonState_Normal, "Data\\Textures\\Button.tga", true); | |
24
4ee162fc3537
More Gui work; Added new button states
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
346 pGameDialogOk->SetText("Ok"); |
4ee162fc3537
More Gui work; Added new button states
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
347 pGameDialogOk->SetPosition(0.5f * (pGameDialog->GetWidth() - pGameDialogOk->GetWidth()), 171.0f); |
4ee162fc3537
More Gui work; Added new button states
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
348 pGameDialogOk->Subscribe(GuiButton::EventClick, &World::OnOk, this); |
23 | 349 */ |
350 | |
351 pGameDialog = new GuiImage(); | |
352 pGameDialog->Initialize(pResourceManager); | |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
24
diff
changeset
|
353 pGameDialog->ClearFlag(GuiElementFlag_Visible); |
24
4ee162fc3537
More Gui work; Added new button states
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
354 pGameDialog->SetTexture("Data\\Textures\\Dialog0.tga", true); |
23 | 355 pGameDialog->SetPosition(0.5f * (ScreenSizeX - pGameDialog->GetWidth()), 0.5f * (ScreenSizeY - pGameDialog->GetHeight())); |
356 //pGameDialog->Add(pGameDialogOk); | |
357 | |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
358 kInterface.Add(pBackground); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
359 kInterface.Add(pButtonPlay); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
360 kInterface.Add(pButtonStop); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
361 //kInterface.Add(pButtonReset); |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
362 kInterface.Add(pButtonExit); |
23 | 363 kInterface.Add(pLevelDialog); |
364 kInterface.Add(pGameDialog); | |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
365 |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
366 /* |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
367 //CodePanel* |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
368 pToolbar = new CodePanel(8); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
369 pToolbar->Initialize(pResourceManager); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
370 pToolbar->SetBackgroundTexture("Data\\Textures\\CodePanel.tga"); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
371 pToolbar->SetSlotTexture("Data\\Textures\\Slot.tga"); |
9 | 372 |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
373 //CodePanel* |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
374 pMain = new CodePanel(16); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
375 pMain->SetBackgroundTexture("Data\\Textures\\CodePanel.tga"); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
376 pMain->SetSlotTexture("Data\\Textures\\Slot.tga"); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
377 pMain->Subscribe(CodePanel::Drop, &World::OnDrop, this); |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
378 |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
379 //CodePanel* |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
380 pFunctionA = new CodePanel(16); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
381 pFunctionA->SetBackgroundTexture("Data\\Textures\\CodePanel.tga"); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
382 pFunctionA->SetSlotTexture("Data\\Textures\\Slot.tga"); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
383 pFunctionA->Subscribe(CodePanel::Drop, &World::OnDrop, this); |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
384 |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
385 //CodePanel* |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
386 pFunctionB = new CodePanel(16); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
387 pFunctionB->SetBackgroundTexture("Data\\Textures\\CodePanel.tga"); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
388 pFunctionB->SetSlotTexture("Data\\Textures\\Slot.tga"); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
389 pFunctionB->Subscribe(CodePanel::Drop, &World::OnDrop, this); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
390 |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
391 //GuiPanel* |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
392 pControlPanel = new GuiPanel(); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
393 pControlPanel->SetTexture("Data\\Textures\\ControlPanel.tga") |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
394 pControlPanel->SetDimensions(...); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
395 pControlPanel->Add(pButtonStart); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
396 pControlPanel->Add(pButtonStop); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
397 pControlPanel->Add(pButtonReset); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
398 pControlPanel->Add(pButtonExit); |
9 | 399 |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
400 //GuiDialog* |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
401 pLevelDialog = new GuiDialog(); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
402 pLevelDialog->AddButton(DialogButton_Ok, "Ok"); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
403 pLevelDialog->SetVisible(false); |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
404 |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
405 //GuiDialog* |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
406 pGameDialog = new GuiDialog(); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
407 pGameDialog->AddButton(DialogButton_Ok, "Ok"); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
408 pGameDialog->SetVisible(false); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
409 |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
410 //GuiDialog* |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
411 pConfirmDialog = new GuiDialog(); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
412 pConfirmDialog->AddButton(DialogButton_Yes, "Yes"); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
413 pConfirmDialog->AddButton(DialogButton_No, "No"); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
414 pConfirmDialog->SetVisible(false); |
9 | 415 |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
416 //GuiPanel* |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
417 pContainerPanel = new GuiPanel(); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
418 pContainerPanel->SetBackgroundTexture("Data\\Texturse\\ContainerPanel.tga"); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
419 pContainerPanel->Add(pToolbar); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
420 pContainerPanel->Add(pMain); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
421 pContainerPanel->Add(pSelectorPanel); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
422 pContainerPanel->Add(pControlPanel); |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
423 |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
424 pRoot->Add(pControlPanel); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
425 pRoot->Add(pLevelDialog); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
426 pRoot->Add(pGameDialog); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
427 pRoot->Add(pConfirmDialog); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
428 */ |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
429 } |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
430 |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
431 return eCode; |
9 | 432 } |
433 | |
434 /* | |
435 * Render3D | |
436 */ | |
437 void World::Render3D(RenderContext& kContext) | |
438 { | |
10
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
439 kEnvironment.Render(kContext, kCameraController); |
292e534f00c2
Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
9
diff
changeset
|
440 kBot.Render(kContext, kCameraController); |
9 | 441 } |
442 | |
443 /* | |
444 * Render2D | |
445 */ | |
446 void World::Render2D(RenderContext& kContext) | |
447 { | |
448 kInterface.Render(kContext, kCameraController); | |
449 } | |
450 | |
451 /* | |
452 * ProcessInput | |
453 */ | |
454 void World::ProcessInput(float fElapsed) | |
455 { | |
14 | 456 //pInputManager->Update(fElapsed); |
9 | 457 |
458 #if defined(_DEBUG) | |
459 if(pInputManager->IsKeyDown(DIK_LEFT)) | |
460 { | |
461 kCameraController.Yaw(0.01f); | |
462 } | |
463 else | |
464 | |
465 if(pInputManager->IsKeyDown(DIK_RIGHT)) | |
466 { | |
467 kCameraController.Yaw(-0.01f); | |
468 } | |
469 | |
470 if(pInputManager->IsKeyDown(DIK_UP)) | |
471 { | |
472 kCameraController.Pitch(0.01f); | |
473 } | |
474 else | |
475 | |
476 if(pInputManager->IsKeyDown(DIK_DOWN)) | |
477 { | |
478 kCameraController.Pitch(-0.01f); | |
479 } | |
480 | |
481 if(pInputManager->IsKeyDown(DIK_NEXT)) | |
482 { | |
483 kCameraController.Move(0.1f); | |
484 } | |
485 else | |
486 | |
487 if(pInputManager->IsKeyDown(DIK_PRIOR)) | |
488 { | |
489 kCameraController.Move(-0.1f); | |
490 } | |
491 #endif | |
492 | |
493 const float fMouseX = pInputManager->GetMouseX(); | |
494 const float fMouseY = pInputManager->GetMouseY(); | |
495 | |
496 if(nGameState == GameState_Active) | |
497 { | |
498 if(pInputManager->IsButtonDown(0) && !pInputManager->WasButtonDown(0)) | |
499 { | |
23 | 500 // pick against the toolbar |
501 int32 nSelection = kToolbar.Pick(fMouseX, fMouseY); | |
9 | 502 if(nSelection >= 0) |
503 { | |
23 | 504 kDragController.Begin(Action_Forward + nSelection); |
505 } | |
506 else | |
507 { | |
508 // pick against the main pane | |
509 nSelection = kMain.Pick(fMouseX, fMouseY); | |
510 if(nSelection >= 0) | |
9 | 511 { |
23 | 512 Code* pCode = pFunction; |
513 if(!pCode->IsEmptySlot(nSelection)) | |
9 | 514 { |
23 | 515 kDragController.Begin(pCode->GetSlot(nSelection)); |
516 pCode->ClearSlot(nSelection); | |
9 | 517 } |
518 } | |
519 else | |
520 { | |
23 | 521 // pick against the function pane |
522 nSelection = kFunction.Pick(fMouseX, fMouseY); | |
9 | 523 if(nSelection >= 0) |
524 { | |
23 | 525 Code* pCode = pFunction + nCurrentFunction + 1; |
9 | 526 if(!pCode->IsEmptySlot(nSelection)) |
527 { | |
528 kDragController.Begin(pCode->GetSlot(nSelection)); | |
529 pCode->ClearSlot(nSelection); | |
530 } | |
531 } | |
532 else | |
533 { | |
23 | 534 // pick against the function pane arrows |
535 for(uint32 i = 0; i < sizeof(kArrowBounds) / sizeof(kArrowBounds[0]); ++i) | |
9 | 536 { |
23 | 537 if(kArrowBounds[i].Contains(fMouseX, fMouseY)) |
9 | 538 { |
23 | 539 const uint32 nCount = kLoader.GetFunctionCount(); |
540 nCurrentFunction = (nCurrentFunction + 2 * (int32)i - 1 + nCount) % nCount; | |
9 | 541 } |
542 } | |
543 } | |
544 } | |
545 } | |
546 } | |
547 else | |
548 | |
549 if(!pInputManager->IsButtonDown(0) && pInputManager->WasButtonDown(0)) | |
550 { | |
551 if(kDragController.IsActive()) | |
552 { | |
553 const uint32 nAction = kDragController.End(); | |
554 | |
555 int32 nSelection = kMain.Pick(fMouseX, fMouseY); | |
556 if(nSelection >= 0) | |
557 { | |
558 pFunction[0].SetSlot(nSelection, nAction); | |
559 } | |
560 else | |
561 { | |
562 nSelection = kFunction.Pick(fMouseX, fMouseY); | |
563 if(nSelection >= 0) | |
564 { | |
565 pFunction[nCurrentFunction + 1].SetSlot(nSelection, nAction); | |
566 } | |
567 } | |
568 } | |
569 } | |
570 } | |
571 else | |
572 | |
573 if(nGameState == GameState_Complete) | |
574 { | |
575 if(pInputManager->IsButtonDown(0) && !pInputManager->WasButtonDown(0)) | |
576 { | |
577 for(uint32 i = 0; i < sizeof(kDialog1Bounds) / sizeof(kDialog1Bounds[0]); ++i) | |
578 { | |
579 if(kDialog1Bounds[i].Contains(fMouseX, fMouseY)) | |
580 { | |
581 if(i == 0) | |
582 { | |
583 if(nSimulationState == SimulationState_Active) | |
584 { | |
585 ResetEnvironment(); | |
586 ResetBot(); | |
587 | |
588 nSimulationState = SimulationState_Idle; | |
589 } | |
590 | |
591 nGameState = GameState_LoadMap; | |
592 } | |
593 } | |
594 } | |
595 | |
596 /* | |
597 int32 nSelection = kDialog.Pick(fMouseX, fMouseY); | |
598 | |
599 if(nSelection == DialogButton_A) | |
600 { | |
601 if(nSimulationState == SimulationState_Active) | |
602 { | |
603 ResetEnvironment(); | |
604 ResetBot(); | |
605 | |
606 nSimulationState = SimulationState_Idle; | |
607 } | |
608 | |
609 nGameState = GameState_LoadMap; | |
610 } | |
611 */ | |
612 } | |
613 } | |
614 else | |
615 | |
616 if(nGameState == GameState_Over) | |
617 { | |
618 // check to see if button was clicked | |
619 if(pInputManager->IsButtonDown(0) && !pInputManager->WasButtonDown(0)) | |
620 { | |
621 for(uint32 i = 0; i < sizeof(kDialog1Bounds) / sizeof(kDialog1Bounds[0]); ++i) | |
622 { | |
623 if(kDialog1Bounds[i].Contains(fMouseX, fMouseY)) | |
624 { | |
625 if(i == 0) | |
626 { | |
627 nCurrentLevel = 0; | |
628 nGameState = GameState_LoadMap; | |
629 } | |
630 } | |
631 } | |
632 | |
633 /* | |
634 int32 nSelection = kDialog.Pick(fMouseX, fMouseY); | |
635 | |
636 if(nSelection == DialogButton_A) | |
637 { | |
638 nCurrentLevel = 0; | |
639 nGameState = GameState_LoadMap; | |
640 } | |
641 */ | |
642 } | |
643 } | |
644 else | |
645 | |
646 if(nGameState == GameState_Confirm) | |
647 { | |
648 // check to see if button was clicked | |
649 if(pInputManager->IsButtonDown(0) && !pInputManager->WasButtonDown(0)) | |
650 { | |
651 for(uint32 i = 0; i < sizeof(kDialog2Bounds) / sizeof(kDialog2Bounds[0]); ++i) | |
652 { | |
653 if(kDialog2Bounds[i].Contains(fMouseX, fMouseY)) | |
654 { | |
655 if(i == 0) | |
656 { | |
657 nGameState = GameState_Exit; | |
658 } | |
659 else | |
660 | |
661 if(i == 1) | |
662 { | |
663 nGameState = GameState_Active; | |
664 } | |
665 } | |
666 } | |
667 | |
668 /* | |
669 int32 nSelection = kDialog.Pick(fMouseX, fMouseY); | |
670 | |
671 if(nSelection == DialogButton_A) | |
672 { | |
673 nGameState = GameState_Exit; | |
674 } | |
675 else | |
676 | |
677 if(nSelection == DialogButton_B) | |
678 { | |
679 nGameState = GameState_Active; | |
680 } | |
681 */ | |
682 } | |
683 } | |
684 } | |
21
b4dc5d674e22
Added GUI event system and some support data structures
koryspansel
parents:
20
diff
changeset
|
685 |
b4dc5d674e22
Added GUI event system and some support data structures
koryspansel
parents:
20
diff
changeset
|
686 /* |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
687 * OnPlay |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
688 */ |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
689 void World::OnPlay(GuiEventArguments& kArguments) |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
690 { |
23 | 691 if(nSimulationState == SimulationState_Idle) |
692 { | |
693 ResetBot(); | |
694 kBot.Upload(pFunction, kLoader.GetFunctionCount() + 1); | |
695 | |
696 nSimulationState = SimulationState_Active; | |
697 } | |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
698 } |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
699 |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
700 /* |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
701 * OnStop |
21
b4dc5d674e22
Added GUI event system and some support data structures
koryspansel
parents:
20
diff
changeset
|
702 */ |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
703 void World::OnStop(GuiEventArguments& kArguments) |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
704 { |
23 | 705 if(nSimulationState == SimulationState_Active) |
706 { | |
707 ResetEnvironment(); | |
708 ResetBot(); | |
709 | |
710 nSimulationState = SimulationState_Idle; | |
711 } | |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
712 } |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
713 |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
714 /* |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
715 * OnReset |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
716 */ |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
717 void World::OnReset(GuiEventArguments& kArguments) |
21
b4dc5d674e22
Added GUI event system and some support data structures
koryspansel
parents:
20
diff
changeset
|
718 { |
b4dc5d674e22
Added GUI event system and some support data structures
koryspansel
parents:
20
diff
changeset
|
719 } |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
720 |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
721 /* |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
722 * OnExit |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
723 */ |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
724 void World::OnExit(GuiEventArguments& kArguments) |
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
725 { |
23 | 726 nGameState = GameState_Exit; |
22
502ed0a0059a
Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents:
21
diff
changeset
|
727 } |