diff --git a/isometric-park-fna/Engines/BuildToolEngine.cs b/isometric-park-fna/Engines/BuildToolEngine.cs --- a/isometric-park-fna/Engines/BuildToolEngine.cs +++ b/isometric-park-fna/Engines/BuildToolEngine.cs @@ -98,6 +98,34 @@ } } + private void SpawnPointSelection(Tool tool) { + foreach (ref readonly var message in ReadMessages()) + { + if (message.Start.X >= 0 && message.Start.X < this.Map.MapWidth + && message.Start.Y >= 0 && message.Start.Y < this.Map.MapHeight) { + var entity = CreateEntity(); + + AddComponent(entity, new PointComponent {Square = message.Start, + Tool=tool}); + AddComponent(entity, new SelectedComponent { selected = true, Type= SelectionType.Area}); + } + } + } + + private void SpawnAreaSelection(Tool tool) { + foreach (ref readonly var message in ReadMessages()) + { + if (message.Start.X >= 0 && message.Start.X < this.Map.MapWidth + && message.Start.Y >= 0 && message.Start.Y < this.Map.MapHeight) { + var entity = CreateEntity(); + + AddComponent(entity, new AreaComponent { squares = new[] {message.Start}, + Tool = tool}); + AddComponent(entity, new SelectedComponent { selected = true, Type= SelectionType.Area}); + } + } + } + public List GetOccupied() { List occupied = new List(); @@ -134,17 +162,7 @@ occupied.AddRange(entitySquares); } - foreach (ref readonly var message in ReadMessages()) - { - if (message.Start.X >= 0 && message.Start.X < this.Map.MapWidth - && message.Start.Y >= 0 && message.Start.Y < this.Map.MapHeight) { - var entity = CreateEntity(); - - AddComponent(entity, new AreaComponent { squares = new[] {message.Start} , - Tool=Tool.Preserve}); - AddComponent(entity, new SelectedComponent { selected = true, Type= SelectionType.Area}); - } - } + SpawnAreaSelection(Tool.Preserve); foreach (ref readonly var message in ReadMessages()) { foreach (ref readonly var entity in ReadEntities()) { @@ -183,17 +201,7 @@ } } else if (statuses.ContainsKey(Tool.Dezone) && statuses[Tool.Dezone]) { - foreach (ref readonly var message in ReadMessages()) - { - if (message.Start.X >= 0 && message.Start.X < this.Map.MapWidth - && message.Start.Y >= 0 && message.Start.Y < this.Map.MapHeight) { - var entity = CreateEntity(); - - AddComponent(entity, new AreaComponent { squares = new[] {message.Start}, - Tool = Tool.Dezone }); - AddComponent(entity, new SelectedComponent { selected = true, Type= SelectionType.Area}); - } - } + SpawnAreaSelection(Tool.Dezone); foreach (ref readonly var message in ReadMessages()) { foreach (ref readonly var entity in ReadEntities()) { @@ -228,17 +236,7 @@ } } else if (statuses.ContainsKey(Tool.Tower) && statuses[Tool.Tower]) { - foreach (ref readonly var message in ReadMessages()) - { - if (message.Start.X >= 0 && message.Start.X < this.Map.MapWidth - && message.Start.Y >= 0 && message.Start.Y < this.Map.MapHeight) { - var entity = CreateEntity(); - - AddComponent(entity, new PointComponent {Square = message.Start, - Tool=Tool.Tower}); - AddComponent(entity, new SelectedComponent { selected = true, Type= SelectionType.Area}); - } - } + SpawnPointSelection(Tool.Tower); var occupied = GetOccupied(); @@ -289,17 +287,7 @@ } else if ((statuses.ContainsKey(Tool.Bulldozer) && statuses[Tool.Bulldozer])) { - foreach (ref readonly var message in ReadMessages()) - { - if (message.Start.X >= 0 && message.Start.X < this.Map.MapWidth - && message.Start.Y >= 0 && message.Start.Y < this.Map.MapHeight) { - var entity = CreateEntity(); - - AddComponent(entity, new AreaComponent { squares = new[] {message.Start}, - Tool = Tool.Bulldozer }); - AddComponent(entity, new SelectedComponent { selected = true, Type= SelectionType.Area}); - } - } + SpawnAreaSelection(Tool.Bulldozer); foreach (ref readonly var message in ReadMessages()) { foreach (ref readonly var entity in ReadEntities()) {