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
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
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
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
11 /*
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
12 * World
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
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
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
15 {
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
16 nGameState = GameState_Active;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
17 nSimulationState = SimulationState_Idle;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
18 pFunction = 0;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
19 nCurrentFunction = 0;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
20 nCurrentLevel = 0;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
21
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
22 kArrowBounds[0] = Rectangle2(1206.0f + 0 * 16.0f, 473.0f + 0 * 54.0f, 16.0f, 16.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
23 kArrowBounds[1] = Rectangle2(1206.0f + 2 * 16.0f, 473.0f + 0 * 54.0f, 16.0f, 16.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
24
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
25 kDialog1Bounds[0] = Rectangle2(567.0f, 412.0f, 150.0f, 60.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
26
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
27 kDialog2Bounds[0] = Rectangle2(1023.0f + 2.5f * 54.0f, 638.0f + 0 * 00.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
28 kDialog2Bounds[1] = Rectangle2(1023.0f + 2.5f * 54.0f, 638.0f + 0 * 00.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
29
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
30 kToolbar.Add(1023.0f + 0 * 54.0f, 85.0f + 0 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
31 kToolbar.Add(1023.0f + 1 * 54.0f, 85.0f + 0 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
32 kToolbar.Add(1023.0f + 2 * 54.0f, 85.0f + 0 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
33 kToolbar.Add(1023.0f + 3 * 54.0f, 85.0f + 0 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
34 kToolbar.Add(1023.0f + 0 * 54.0f, 85.0f + 1 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
35 kToolbar.Add(1023.0f + 1 * 54.0f, 85.0f + 1 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
36 kToolbar.Add(1023.0f + 2 * 54.0f, 85.0f + 1 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
37 kToolbar.Add(1023.0f + 3 * 54.0f, 85.0f + 1 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
38
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
39 kMain.Add(1023.0f + 0 * 54.0f, 238.0f + 0 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
40 kMain.Add(1023.0f + 1 * 54.0f, 238.0f + 0 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
41 kMain.Add(1023.0f + 2 * 54.0f, 238.0f + 0 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
42 kMain.Add(1023.0f + 3 * 54.0f, 238.0f + 0 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
43 kMain.Add(1023.0f + 0 * 54.0f, 238.0f + 1 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
44 kMain.Add(1023.0f + 1 * 54.0f, 238.0f + 1 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
45 kMain.Add(1023.0f + 2 * 54.0f, 238.0f + 1 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
46 kMain.Add(1023.0f + 3 * 54.0f, 238.0f + 1 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
47 kMain.Add(1023.0f + 0 * 54.0f, 238.0f + 2 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
48 kMain.Add(1023.0f + 1 * 54.0f, 238.0f + 2 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
49 kMain.Add(1023.0f + 2 * 54.0f, 238.0f + 2 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
50 kMain.Add(1023.0f + 3 * 54.0f, 238.0f + 2 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
51 kMain.Add(1023.0f + 0 * 54.0f, 238.0f + 3 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
52 kMain.Add(1023.0f + 1 * 54.0f, 238.0f + 3 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
53 kMain.Add(1023.0f + 2 * 54.0f, 238.0f + 3 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
54 kMain.Add(1023.0f + 3 * 54.0f, 238.0f + 3 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
55
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
56 kFunction.Add(1023.0f + 0 * 54.0f, 501.0f + 0 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
57 kFunction.Add(1023.0f + 1 * 54.0f, 501.0f + 0 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
58 kFunction.Add(1023.0f + 2 * 54.0f, 501.0f + 0 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
59 kFunction.Add(1023.0f + 3 * 54.0f, 501.0f + 0 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
60 kFunction.Add(1023.0f + 0 * 54.0f, 501.0f + 1 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
61 kFunction.Add(1023.0f + 1 * 54.0f, 501.0f + 1 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
62 kFunction.Add(1023.0f + 2 * 54.0f, 501.0f + 1 * 54.0f, 48.0f, 48.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
63 kFunction.Add(1023.0f + 3 * 54.0f, 501.0f + 1 * 54.0f, 48.0f, 48.0f);
8
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
64 }
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
65
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
66 /*
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
67 * Initialize
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
68 */
14
7081e8e6008c Working on integrating the EventSystem
koryspansel
parents: 11
diff changeset
69 ErrorCode World::Initialize(EventSystem* pSystem, ResourceManager* pResourceManager, InputManager* pInput)
8
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
70 {
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
71 ErrorCode eCode = Error_Fail;
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
72
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
73 if(pResourceManager && pInput)
8
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
74 {
14
7081e8e6008c Working on integrating the EventSystem
koryspansel
parents: 11
diff changeset
75 pEventSystem = pSystem;
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
76 pInputManager = pInput;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
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
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
79 if(eCode == Error_Success)
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
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
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
82 if(eCode == Error_Success)
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
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
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
85 if(eCode == Error_Success)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
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
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
88 if(eCode == Error_Success)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
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
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
92 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
93 }
8
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
94 }
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
95 }
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
96 }
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
97
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
98 return eCode;
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
99 }
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
100
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
101 /*
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
102 * Terminate
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
103 */
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
104 void World::Terminate()
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
105 {
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
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
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
108 kBot.Terminate();
8
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
109 kEnvironment.Terminate();
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
110 }
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
111
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
112 /*
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
113 * Activate
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
114 */
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
115 void World::Activate()
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
116 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
117 nGameState = GameState_LoadMap;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
118 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
119
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
120 /*
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
121 * Deactivate
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
122 */
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
123 void World::Deactivate()
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
124 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
125 nGameState = GameState_Exit;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
126 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
127
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
128 /*
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
129 * IsActive
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
130 */
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
131 bool World::IsActive()
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
132 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
133 return nGameState != GameState_Exit;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
134 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
135
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
136 /*
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
137 * Load
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
138 */
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
139 bool World::Load(const char* pName)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
140 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
141 ErrorCode eCode = kLoader.Load(pName);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
142 if(eCode == Error_Success)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
143 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
144 if(pFunction)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
145 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
146 delete[] pFunction;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
147 pFunction = NULL;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
148 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
149
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
150 const Size& kSize = kLoader.GetSize();
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
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
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
153 if(eCode == Error_Success)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
154 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
155 for(uint32 nY = 0; nY < kSize.Y; ++nY)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
156 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
157 for(uint32 nX = 0; nX < kSize.X; ++nX)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
158 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
159 kEnvironment.SetType(nX, nY, kLoader.GetTowerType(nX, nY));
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
160 kEnvironment.SetAltitude(nX, nY, kLoader.GetTowerHeight(nX, nY));
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
161 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
162 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
163
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
164 kBot.Setup(&kEnvironment);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
165 kBot.kPosition = kLoader.GetInitialPosition();
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
166 kBot.kDirection = kLoader.GetInitialDirection();
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
167
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
168 const uint32 nCount = kLoader.GetFunctionCount();
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
169
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
170 pFunction = new Code[nCount + 1];
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
171 pFunction[0].Initialize(MainFunctionLength);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
172 pFunction[0].Clear();
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
173
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
174 for(uint32 i = 0; i < nCount; ++i)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
175 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
176 const uint32 nLength = kLoader.GetFunctionLength(i);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
177
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
178 pFunction[i + 1].Initialize(nLength);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
179 pFunction[i + 1].Clear();
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
180 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
181 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
182 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
183
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
184 return eCode == Error_Success;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
185 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
186
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
187 /*
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
188 * ResetEnvironment
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
189 */
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
190 void World::ResetEnvironment()
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
191 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
192 kEnvironment.Reset();
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
193 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
194
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
195 /*
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
196 * ResetBot
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
197 */
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
198 void World::ResetBot()
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
199 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
200 kBot.Reset();
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
201 kBot.kPosition = kLoader.GetInitialPosition();
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
202 kBot.kDirection = kLoader.GetInitialDirection();
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
203 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
204
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
205 /*
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
206 * ResetCode
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
207 */
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
208 void World::ClearCode()
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
209 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
210 for(uint32 i = 0; i < kLoader.GetFunctionCount(); ++i)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
211 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
212 pFunction[i].Clear();
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
213 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
214 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
215
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
216 /*
8
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
217 * Update
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
218 */
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
219 void World::Update(float fElapsed)
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
220 {
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
221 ProcessInput(fElapsed);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
222
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
223 if(nGameState == GameState_LoadMap)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
224 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
225 char kBuffer[256];
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
226 sprintf_s(kBuffer, "Data\\Maps\\Map%02d.map", nCurrentLevel++);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
227
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
228 nGameState = Load(kBuffer) ? GameState_Active : GameState_Over;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
229 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
230 else
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
231
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
232 if(nGameState == GameState_Active)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
233 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
234 if(nSimulationState == SimulationState_Active)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
235 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
236 if(kBot.Update(fElapsed))
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
237 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
238 if(kEnvironment.RequirementsMet())
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
239 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
240 kDialog.Reset("Some message");
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
241 kDialog.AddButton(DialogButton_Ok, "Ok", 0.0f, 0.0f, 0.0f, 0.0f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
242
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
243 nGameState = GameState_Complete;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
244 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
245 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
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
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
249 }
8
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
250 }
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
251
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
252 /*
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
253 * Render
968341ab1fb2 First pass world re-structuring
koryspansel
parents: 7
diff changeset
254 */
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
255 void World::Render(RenderContext& kContext)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
256 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
257 const uint32 nColor = D3DCOLOR_XRGB(32, 32, 32);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
258
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
259 kContext.Begin(nColor);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
260
19
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
261 //TODO: Remove
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
262 if(nGameState >= GameState_Active)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
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
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
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
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
268 Render2D(kContext);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
269 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
270
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
271 kContext.End();
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
272 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
273
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
274 /*
10
292e534f00c2 Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents: 9
diff changeset
275 * InitializeInterface
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
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
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
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
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
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
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
323 pLevelDialog = new GuiImage();
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
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
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
327 pLevelDialog->SetPosition(0.5f * (ScreenSizeX - pLevelDialog->GetWidth()), 0.5f * (ScreenSizeY - pLevelDialog->GetHeight()));
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
328
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
329 pLevelDialogOk = new GuiButton();
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
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
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
334 pLevelDialogOk->SetFont("Courier New", 24);
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
335 pLevelDialogOk->SetText("Ok");
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
336 pLevelDialogOk->SetDimensions(150.0f, 52.0f);
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
337 pLevelDialogOk->SetPosition(0.5f * (pLevelDialog->GetWidth() - pLevelDialogOk->GetWidth()), 171.0f);
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
338 pLevelDialogOk->Subscribe(GuiButton::EventClick, &World::OnExit, this);
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
339
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
340 pLevelDialog->Add(pLevelDialogOk);
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
341
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
342 /*
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
343 pGameDialogOk = new GuiButton();
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
344 pGameDialogOk->Initialize(pResourceManager);
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
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
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
349 */
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
350
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
351 pGameDialog = new GuiImage();
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
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
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
355 pGameDialog->SetPosition(0.5f * (ScreenSizeX - pGameDialog->GetWidth()), 0.5f * (ScreenSizeY - pGameDialog->GetHeight()));
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
356 //pGameDialog->Add(pGameDialogOk);
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
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
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
363 kInterface.Add(pLevelDialog);
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
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
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
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
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
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
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
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
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
432 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
433
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
434 /*
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
435 * Render3D
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
436 */
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
437 void World::Render3D(RenderContext& kContext)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
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
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
441 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
442
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
443 /*
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
444 * Render2D
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
445 */
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
446 void World::Render2D(RenderContext& kContext)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
447 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
448 kInterface.Render(kContext, kCameraController);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
449 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
450
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
451 /*
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
452 * ProcessInput
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
453 */
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
454 void World::ProcessInput(float fElapsed)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
455 {
14
7081e8e6008c Working on integrating the EventSystem
koryspansel
parents: 11
diff changeset
456 //pInputManager->Update(fElapsed);
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
457
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
458 #if defined(_DEBUG)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
459 if(pInputManager->IsKeyDown(DIK_LEFT))
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
460 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
461 kCameraController.Yaw(0.01f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
462 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
463 else
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
464
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
465 if(pInputManager->IsKeyDown(DIK_RIGHT))
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
466 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
467 kCameraController.Yaw(-0.01f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
468 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
469
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
470 if(pInputManager->IsKeyDown(DIK_UP))
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
471 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
472 kCameraController.Pitch(0.01f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
473 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
474 else
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
475
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
476 if(pInputManager->IsKeyDown(DIK_DOWN))
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
477 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
478 kCameraController.Pitch(-0.01f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
479 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
480
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
481 if(pInputManager->IsKeyDown(DIK_NEXT))
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
482 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
483 kCameraController.Move(0.1f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
484 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
485 else
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
486
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
487 if(pInputManager->IsKeyDown(DIK_PRIOR))
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
488 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
489 kCameraController.Move(-0.1f);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
490 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
491 #endif
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
492
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
493 const float fMouseX = pInputManager->GetMouseX();
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
494 const float fMouseY = pInputManager->GetMouseY();
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
495
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
496 if(nGameState == GameState_Active)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
497 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
498 if(pInputManager->IsButtonDown(0) && !pInputManager->WasButtonDown(0))
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
499 {
23
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
500 // pick against the toolbar
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
501 int32 nSelection = kToolbar.Pick(fMouseX, fMouseY);
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
502 if(nSelection >= 0)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
503 {
23
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
504 kDragController.Begin(Action_Forward + nSelection);
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
505 }
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
506 else
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
507 {
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
508 // pick against the main pane
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
509 nSelection = kMain.Pick(fMouseX, fMouseY);
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
510 if(nSelection >= 0)
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
511 {
23
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
512 Code* pCode = pFunction;
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
513 if(!pCode->IsEmptySlot(nSelection))
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
514 {
23
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
515 kDragController.Begin(pCode->GetSlot(nSelection));
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
516 pCode->ClearSlot(nSelection);
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
517 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
518 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
519 else
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
520 {
23
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
521 // pick against the function pane
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
522 nSelection = kFunction.Pick(fMouseX, fMouseY);
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
523 if(nSelection >= 0)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
524 {
23
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
525 Code* pCode = pFunction + nCurrentFunction + 1;
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
526 if(!pCode->IsEmptySlot(nSelection))
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
527 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
528 kDragController.Begin(pCode->GetSlot(nSelection));
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
529 pCode->ClearSlot(nSelection);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
530 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
531 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
532 else
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
533 {
23
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
534 // pick against the function pane arrows
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
535 for(uint32 i = 0; i < sizeof(kArrowBounds) / sizeof(kArrowBounds[0]); ++i)
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
536 {
23
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
537 if(kArrowBounds[i].Contains(fMouseX, fMouseY))
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
538 {
23
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
539 const uint32 nCount = kLoader.GetFunctionCount();
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
540 nCurrentFunction = (nCurrentFunction + 2 * (int32)i - 1 + nCount) % nCount;
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
541 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
542 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
543 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
544 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
545 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
546 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
547 else
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
548
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
549 if(!pInputManager->IsButtonDown(0) && pInputManager->WasButtonDown(0))
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
550 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
551 if(kDragController.IsActive())
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
552 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
553 const uint32 nAction = kDragController.End();
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
554
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
555 int32 nSelection = kMain.Pick(fMouseX, fMouseY);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
556 if(nSelection >= 0)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
557 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
558 pFunction[0].SetSlot(nSelection, nAction);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
559 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
560 else
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
561 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
562 nSelection = kFunction.Pick(fMouseX, fMouseY);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
563 if(nSelection >= 0)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
564 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
565 pFunction[nCurrentFunction + 1].SetSlot(nSelection, nAction);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
566 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
567 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
568 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
569 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
570 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
571 else
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
572
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
573 if(nGameState == GameState_Complete)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
574 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
575 if(pInputManager->IsButtonDown(0) && !pInputManager->WasButtonDown(0))
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
576 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
577 for(uint32 i = 0; i < sizeof(kDialog1Bounds) / sizeof(kDialog1Bounds[0]); ++i)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
578 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
579 if(kDialog1Bounds[i].Contains(fMouseX, fMouseY))
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
580 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
581 if(i == 0)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
582 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
583 if(nSimulationState == SimulationState_Active)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
584 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
585 ResetEnvironment();
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
586 ResetBot();
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
587
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
588 nSimulationState = SimulationState_Idle;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
589 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
590
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
591 nGameState = GameState_LoadMap;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
592 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
593 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
594 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
595
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
596 /*
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
597 int32 nSelection = kDialog.Pick(fMouseX, fMouseY);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
598
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
599 if(nSelection == DialogButton_A)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
600 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
601 if(nSimulationState == SimulationState_Active)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
602 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
603 ResetEnvironment();
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
604 ResetBot();
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
605
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
606 nSimulationState = SimulationState_Idle;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
607 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
608
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
609 nGameState = GameState_LoadMap;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
610 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
611 */
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
612 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
613 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
614 else
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
615
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
616 if(nGameState == GameState_Over)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
617 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
618 // check to see if button was clicked
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
619 if(pInputManager->IsButtonDown(0) && !pInputManager->WasButtonDown(0))
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
620 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
621 for(uint32 i = 0; i < sizeof(kDialog1Bounds) / sizeof(kDialog1Bounds[0]); ++i)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
622 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
623 if(kDialog1Bounds[i].Contains(fMouseX, fMouseY))
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
624 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
625 if(i == 0)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
626 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
627 nCurrentLevel = 0;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
628 nGameState = GameState_LoadMap;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
629 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
630 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
631 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
632
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
633 /*
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
634 int32 nSelection = kDialog.Pick(fMouseX, fMouseY);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
635
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
636 if(nSelection == DialogButton_A)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
637 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
638 nCurrentLevel = 0;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
639 nGameState = GameState_LoadMap;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
640 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
641 */
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
642 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
643 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
644 else
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
645
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
646 if(nGameState == GameState_Confirm)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
647 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
648 // check to see if button was clicked
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
649 if(pInputManager->IsButtonDown(0) && !pInputManager->WasButtonDown(0))
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
650 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
651 for(uint32 i = 0; i < sizeof(kDialog2Bounds) / sizeof(kDialog2Bounds[0]); ++i)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
652 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
653 if(kDialog2Bounds[i].Contains(fMouseX, fMouseY))
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
654 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
655 if(i == 0)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
656 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
657 nGameState = GameState_Exit;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
658 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
659 else
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
660
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
661 if(i == 1)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
662 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
663 nGameState = GameState_Active;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
664 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
665 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
666 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
667
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
668 /*
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
669 int32 nSelection = kDialog.Pick(fMouseX, fMouseY);
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
670
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
671 if(nSelection == DialogButton_A)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
672 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
673 nGameState = GameState_Exit;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
674 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
675 else
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
676
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
677 if(nSelection == DialogButton_B)
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
678 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
679 nGameState = GameState_Active;
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
680 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
681 */
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
682 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
683 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 8
diff changeset
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
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
691 if(nSimulationState == SimulationState_Idle)
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
692 {
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
693 ResetBot();
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
694 kBot.Upload(pFunction, kLoader.GetFunctionCount() + 1);
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
695
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
696 nSimulationState = SimulationState_Active;
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
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
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
705 if(nSimulationState == SimulationState_Active)
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
706 {
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
707 ResetEnvironment();
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
708 ResetBot();
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
709
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
710 nSimulationState = SimulationState_Idle;
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
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
a785b0aaf004 More work on the Gui system
koryspansel
parents: 22
diff changeset
726 nGameState = GameState_Exit;
22
502ed0a0059a Hooking up Gui elements
koryspansel <koryspansel@bendbroadband.com>
parents: 21
diff changeset
727 }