Description:
Add Dezone.
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r555:092dfa9d367c -

@@ -7,7 +7,8
7 public enum Tool
7 public enum Tool
8 {
8 {
9 None,
9 None,
10 Preserve
10 Preserve,
11 Dezone
11
12
12 }
13 }
13
14
@@ -24,6 +24,7
24 typeof(PreserveComponent),
24 typeof(PreserveComponent),
25 typeof(SelectedComponent),
25 typeof(SelectedComponent),
26 typeof(ToolComponent))]
26 typeof(ToolComponent))]
27 [Sends(typeof(ChangeContractStatusMessage))]
27 public class BuildToolEngine : Engine {
28 public class BuildToolEngine : Engine {
28
29
29 private CellMap Map;
30 private CellMap Map;
@@ -47,9 +48,37
47 }
48 }
48 }
49 }
49
50
51 private void clear(Vector2[] clear_squares) {
52 List<Entity> entities = new List<Entity>();
53 foreach(ref readonly var entity in ReadEntities<AreaComponent>() ) {
54 var squares = GetComponent<AreaComponent>(entity).squares;
55
56 foreach(var clear_square in clear_squares) {
57
58 foreach(var square in squares) {
59 if(square == clear_square) {
60 entities.Add(entity);
61 break;
62 }
63 }
64 }
65 }
66
67 foreach(var entity in entities) {
68 Logging.Debug("Deleting entity.");
69
70 if (HasComponent<ContractStatusComponent>(entity)) {
71 SendMessage(new ChangeContractStatusMessage {newStatus = ContractStatus.Broken, Entity = entity});
72 }
73 else {
74 Destroy(entity);
75 }
76 }
77
78 }
79
50 public override void Update(double dt) {
80 public override void Update(double dt) {
51 var occupied = new List<Vector2>();
81 var occupied = new List<Vector2>();
52
53 Dictionary<Tool, bool> statuses = new Dictionary<Tool, bool>();
82 Dictionary<Tool, bool> statuses = new Dictionary<Tool, bool>();
54
83
55 foreach (var entity in ReadEntities<ToolComponent>()) {
84 foreach (var entity in ReadEntities<ToolComponent>()) {
@@ -78,8 +107,6
78 occupied.AddRange(entitySquares);
107 occupied.AddRange(entitySquares);
79 }
108 }
80
109
81
82
83 foreach (ref readonly var message in ReadMessages<SpawnSelection>())
110 foreach (ref readonly var message in ReadMessages<SpawnSelection>())
84 {
111 {
85 if (message.Start.X >= 0 && message.Start.X < this.Map.MapWidth
112 if (message.Start.X >= 0 && message.Start.X < this.Map.MapWidth
@@ -114,19 +141,63
114 foreach (var i in step_until(area.squares[0].X, end_x)) {
141 foreach (var i in step_until(area.squares[0].X, end_x)) {
115 foreach (var j in step_until(area.squares[0].Y, end_y)) {
142 foreach (var j in step_until(area.squares[0].Y, end_y)) {
116 var newSquare = new Vector2(i, j);
143 var newSquare = new Vector2(i, j);
144 newSquares.Add(newSquare);
145 }
146 }
147
148 SetComponent(entity, new AreaComponent { squares = newSquares.ToArray() /*new[]{ area.squares[0], message.End}*/});
149 }
150 }
151 }
152 }
153 }
154 else if (statuses.ContainsKey(Tool.Dezone) && statuses[Tool.Dezone]) {
155
156 foreach (ref readonly var message in ReadMessages<SpawnSelection>())
157 {
158 if (message.Start.X >= 0 && message.Start.X < this.Map.MapWidth
159 && message.Start.Y >= 0 && message.Start.Y < this.Map.MapHeight) {
160 var entity = CreateEntity();
161
162 AddComponent(entity, new AreaComponent { squares = new[] {message.Start} });
163 AddComponent(entity, new SelectedComponent { selected = true, Type= SelectionType.Area});
164 }
165 }
166
167 foreach (ref readonly var message in ReadMessages<AdjustSelection>()) {
168 foreach (ref readonly var entity in ReadEntities<SelectedComponent>()) {
169 var selection = GetComponent<SelectedComponent>(entity);
170 if(selection.Type == SelectionType.Area
171 && selection.selected) {
172 if(message.Type == AdjustmentType.Clear) {
173 Destroy(entity);
174 }
175 else if(message.Type == AdjustmentType.Complete) {
176 var squares = GetComponent<AreaComponent>(entity).squares;
177 clear(squares);
178 }
179 else {
180 var area = GetComponent<AreaComponent>(entity);
181
182 var newSquares = new List<Vector2>();
183
184 var end_x = MathUtils.Clamp(message.End.X, 0.0f, this.Map.MapWidth);
185 var end_y = MathUtils.Clamp(message.End.Y, 0.0f, this.Map.MapHeight);
186
187 foreach (var i in step_until(area.squares[0].X, end_x)) {
188 foreach (var j in step_until(area.squares[0].Y, end_y)) {
189 var newSquare = new Vector2(i, j);
117 if (!occupied.Contains(newSquare)) {
190 if (!occupied.Contains(newSquare)) {
118 newSquares.Add(newSquare);
191 newSquares.Add(newSquare);
119 }
192 }
120 }
193 }
121 }
194 }
122
195 SetComponent(entity, new AreaComponent { squares = newSquares.ToArray() /*new[]{ area.squares[0], message.End}*/});
123 SetComponent(entity, new AreaComponent { squares = newSquares.ToArray() /*( new[]{ area.squares[0], message.End}*/});
196 }
124 }
197 }
125 }
198 }
126 }
199 }
127
200 }
128 }
129 }
130 }
201 }
131 }
202 }
132 }
203 }
@@ -98,6 +98,8
98 }
98 }
99 }
99 }
100
100
101
102 //Set tool
101 foreach (ref readonly var toolMessage in ReadMessages<ToggleToolMessage>())
103 foreach (ref readonly var toolMessage in ReadMessages<ToggleToolMessage>())
102 {
104 {
103 foreach (ref readonly var entity in ReadEntities<ToolComponent>())
105 foreach (ref readonly var entity in ReadEntities<ToolComponent>())
@@ -106,7 +108,6
106 var tool_type = GetComponent<ToolComponent>(entity).Tool;
108 var tool_type = GetComponent<ToolComponent>(entity).Tool;
107 if (tool_type == toolMessage.Tool)
109 if (tool_type == toolMessage.Tool)
108 {
110 {
109
110 //Clear selections
111 //Clear selections
111 foreach (ref readonly var inner_entity in ReadEntities<ToolComponent>())
112 foreach (ref readonly var inner_entity in ReadEntities<ToolComponent>())
112 {
113 {
@@ -118,7 +119,6
118 selectedComponent.selected = !selectedComponent.selected;
119 selectedComponent.selected = !selectedComponent.selected;
119 SetComponent(entity, selectedComponent);
120 SetComponent(entity, selectedComponent);
120 }
121 }
121
122 }
122 }
123 }
123 }
124
124
@@ -330,6 +330,10
330 WorldBuilder.SetComponent(preserveTool, new ToolComponent { Tool = Tool.Preserve });
330 WorldBuilder.SetComponent(preserveTool, new ToolComponent { Tool = Tool.Preserve });
331 WorldBuilder.SetComponent(preserveTool, new SelectedComponent {Type = SelectionType.Tool, selected = true});
331 WorldBuilder.SetComponent(preserveTool, new SelectedComponent {Type = SelectionType.Tool, selected = true});
332
332
333 var dezoneTool = WorldBuilder.CreateEntity();
334 WorldBuilder.SetComponent(dezoneTool, new ToolComponent { Tool = Tool.Dezone });
335 WorldBuilder.SetComponent(dezoneTool, new SelectedComponent {Type = SelectionType.Tool, selected = false});
336
333
337
334 var gameEntity = WorldBuilder.CreateEntity();
338 var gameEntity = WorldBuilder.CreateEntity();
335
339
@@ -290,7 +290,7
290 for(int j = 0; j < this.map.MapHeight; j++)
290 for(int j = 0; j < this.map.MapHeight; j++)
291 {
291 {
292 var cell = this.map.cells[i][j];
292 var cell = this.map.cells[i][j];
293 var rate = interpolate((8 - (double)this.PreserveCounts[i, j] / 8.0d, PRESERVE_SPONTANEOUS_NEW_TREE_CHANCE, SPONTANEOUS_NEW_TREE_CHANCE);
293 var rate = interpolate(8 - (double)this.PreserveCounts[i, j] / 8.0d, PRESERVE_SPONTANEOUS_NEW_TREE_CHANCE, SPONTANEOUS_NEW_TREE_CHANCE);
294 if (random.NextDouble() > rate)
294 if (random.NextDouble() > rate)
295 {
295 {
296 var random_type = random.Next(0, 4);
296 var random_type = random.Next(0, 4);
@@ -99,7 +99,7
99 ImGui.Text(header);
99 ImGui.Text(header);
100
100
101
101
102 var dimensions = ImGui.CalcTextSize("| X Graph X Contracts $ Budget X Forest X News X | Pause 1 2 3 4 5") ;
102 var dimensions = ImGui.CalcTextSize("X Preserve X Dezone | X Graph X Contracts $ Budget X Forest X News X | Pause 1 2 3 4 5") ;
103
103
104 // ImGui.SetCursorPosX(width - 520);
104 // ImGui.SetCursorPosX(width - 520);
105 // Add 12 pixels for each button, plus separator
105 // Add 12 pixels for each button, plus separator
@@ -108,7 +108,10
108 if (Menu.activeButton("X Preserve", bridgeEngine.toolStatuses[Tool.Preserve], StyleSets.selected, StyleSets.white))
108 if (Menu.activeButton("X Preserve", bridgeEngine.toolStatuses[Tool.Preserve], StyleSets.selected, StyleSets.white))
109 {
109 {
110 bridgeEngine.toggleToolMessages.Add(new ToggleToolMessage {Tool = Tool.Preserve});
110 bridgeEngine.toggleToolMessages.Add(new ToggleToolMessage {Tool = Tool.Preserve});
111
111 }
112 if (Menu.activeButton("X Dezone", bridgeEngine.toolStatuses[Tool.Dezone], StyleSets.selected, StyleSets.white))
113 {
114 bridgeEngine.toggleToolMessages.Add(new ToggleToolMessage {Tool = Tool.Dezone});
112 }
115 }
113
116
114 ImGui.Text("|");
117 ImGui.Text("|");
You need to be logged in to leave comments. Login now