Description:
Further refactoring. I don't love this, but I think it lays the groundwork for future refactorings.
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r635:9629d87ba045 -

@@ -165,6 +165,10
165 - Additional in-game menu
165 - Additional in-game menu
166 - Save
166 - Save
167 - Save & Quit
167 - Save & Quit
168 - Fix selection
169 Selections require two components to really work, which is messy and doesn't really fit. A Selection without some sort of associated selection that describes what's selected doesn't really work
170 - Turn tools into classes?
171 Creating a shallow hierarchy seems a little nicer than the current setup.
168
172
169 Music and Audio:
173 Music and Audio:
170 Sound Effects:
174 Sound Effects:
@@ -33,6 +33,11
33
33
34 private CellMap Map;
34 private CellMap Map;
35
35
36 private static Dictionary<Tool, bool> ToolArea = new Dictionary<Tool, bool> {{Tool.Preserve, true},
37 {Tool.Dezone, true},
38 {Tool.Tower, false},
39 {Tool.Bulldozer, true}};
40
36 public BuildToolEngine(CellMap map) {
41 public BuildToolEngine(CellMap map) {
37 this.Map = map;
42 this.Map = map;
38 }
43 }
@@ -98,33 +103,25
98 }
103 }
99 }
104 }
100
105
101 private void SpawnPointSelection(Tool tool) {
106 private void SpawnSelection(Tool tool) {
102 foreach (ref readonly var message in ReadMessages<SpawnSelection>())
107 foreach (ref readonly var message in ReadMessages<SpawnSelection>())
103 {
108 {
104 if (message.Start.X >= 0 && message.Start.X < this.Map.MapWidth
109 if (message.Start.X >= 0 && message.Start.X < this.Map.MapWidth
105 && message.Start.Y >= 0 && message.Start.Y < this.Map.MapHeight) {
110 && message.Start.Y >= 0 && message.Start.Y < this.Map.MapHeight) {
106 var entity = CreateEntity();
111 var entity = CreateEntity();
107
112 if (BuildToolEngine.ToolArea[tool]) {
108 AddComponent(entity, new PointComponent {Square = message.Start,
113 AddComponent(entity, new AreaComponent {squares = new[] {message.Start},
109 Tool=tool});
114 Tool = tool});
110 AddComponent(entity, new SelectedComponent { selected = true, Type= SelectionType.Area});
115 }
116 else {
117 AddComponent(entity, new PointComponent {Square = message.Start,
118 Tool=tool});
119 }
120 AddComponent(entity, new SelectedComponent {selected = true, Type= SelectionType.Area});
111 }
121 }
112 }
122 }
113 }
123 }
114
124
115 private void SpawnAreaSelection(Tool tool) {
116 foreach (ref readonly var message in ReadMessages<SpawnSelection>())
117 {
118 if (message.Start.X >= 0 && message.Start.X < this.Map.MapWidth
119 && message.Start.Y >= 0 && message.Start.Y < this.Map.MapHeight) {
120 var entity = CreateEntity();
121
122 AddComponent(entity, new AreaComponent { squares = new[] {message.Start},
123 Tool = tool});
124 AddComponent(entity, new SelectedComponent { selected = true, Type= SelectionType.Area});
125 }
126 }
127 }
128
125
129 public List<Vector2> GetOccupied() {
126 public List<Vector2> GetOccupied() {
130 List<Vector2> occupied = new List<Vector2>();
127 List<Vector2> occupied = new List<Vector2>();
@@ -162,7 +159,7
162 occupied.AddRange(entitySquares);
159 occupied.AddRange(entitySquares);
163 }
160 }
164
161
165 SpawnAreaSelection(Tool.Preserve);
162 SpawnSelection(Tool.Preserve);
166
163
167 foreach (ref readonly var message in ReadMessages<AdjustSelection>()) {
164 foreach (ref readonly var message in ReadMessages<AdjustSelection>()) {
168 foreach (ref readonly var entity in ReadEntities<SelectedComponent>()) {
165 foreach (ref readonly var entity in ReadEntities<SelectedComponent>()) {
@@ -201,7 +198,7
201 }
198 }
202 }
199 }
203 else if (statuses.ContainsKey(Tool.Dezone) && statuses[Tool.Dezone]) {
200 else if (statuses.ContainsKey(Tool.Dezone) && statuses[Tool.Dezone]) {
204 SpawnAreaSelection(Tool.Dezone);
201 SpawnSelection(Tool.Dezone);
205
202
206 foreach (ref readonly var message in ReadMessages<AdjustSelection>()) {
203 foreach (ref readonly var message in ReadMessages<AdjustSelection>()) {
207 foreach (ref readonly var entity in ReadEntities<SelectedComponent>()) {
204 foreach (ref readonly var entity in ReadEntities<SelectedComponent>()) {
@@ -236,7 +233,7
236 }
233 }
237 }
234 }
238 else if (statuses.ContainsKey(Tool.Tower) && statuses[Tool.Tower]) {
235 else if (statuses.ContainsKey(Tool.Tower) && statuses[Tool.Tower]) {
239 SpawnPointSelection(Tool.Tower);
236 SpawnSelection(Tool.Tower);
240
237
241 var occupied = GetOccupied();
238 var occupied = GetOccupied();
242
239
@@ -287,7 +284,7
287 }
284 }
288
285
289 else if ((statuses.ContainsKey(Tool.Bulldozer) && statuses[Tool.Bulldozer])) {
286 else if ((statuses.ContainsKey(Tool.Bulldozer) && statuses[Tool.Bulldozer])) {
290 SpawnAreaSelection(Tool.Bulldozer);
287 SpawnSelection(Tool.Bulldozer);
291
288
292 foreach (ref readonly var message in ReadMessages<AdjustSelection>()) {
289 foreach (ref readonly var message in ReadMessages<AdjustSelection>()) {
293 foreach (ref readonly var entity in ReadEntities<SelectedComponent>()) {
290 foreach (ref readonly var entity in ReadEntities<SelectedComponent>()) {
You need to be logged in to leave comments. Login now