diff --git a/isometric-park-fna/Components/ToggleToolComponents.cs b/isometric-park-fna/Components/ToggleToolComponents.cs --- a/isometric-park-fna/Components/ToggleToolComponents.cs +++ b/isometric-park-fna/Components/ToggleToolComponents.cs @@ -8,7 +8,8 @@ { None, Preserve, - Dezone + Dezone, + Tower } diff --git a/isometric-park-fna/FNAGame.cs b/isometric-park-fna/FNAGame.cs --- a/isometric-park-fna/FNAGame.cs +++ b/isometric-park-fna/FNAGame.cs @@ -327,13 +327,22 @@ WorldBuilder.SetComponent(graphWindow, new VisibilityComponent { visible = false }); WorldBuilder.SetComponent(graphWindow, new WindowTypeComponent { type = isometricparkfna.Messages.Window.Graph }); - var preserveTool = WorldBuilder.CreateEntity(); - WorldBuilder.SetComponent(preserveTool, new ToolComponent { Tool = Tool.Preserve }); - WorldBuilder.SetComponent(preserveTool, new SelectedComponent {Type = SelectionType.Tool, selected = true}); + //Create a tool for each tool type. + foreach (var tool in System.Enum.GetValues(typeof(Tool))) { + if ((Tool)tool != Tool.None) { + var toolEntity = WorldBuilder.CreateEntity(); + WorldBuilder.SetComponent(toolEntity, new ToolComponent { Tool = (Tool)tool }); + WorldBuilder.SetComponent(toolEntity, new SelectedComponent {Type = SelectionType.Tool, selected = ((Tool)tool == Tool.Preserve)}); + } + } - var dezoneTool = WorldBuilder.CreateEntity(); - WorldBuilder.SetComponent(dezoneTool, new ToolComponent { Tool = Tool.Dezone }); - WorldBuilder.SetComponent(dezoneTool, new SelectedComponent {Type = SelectionType.Tool, selected = false}); + // var preserveTool = WorldBuilder.CreateEntity(); + // WorldBuilder.SetComponent(preserveTool, new ToolComponent { Tool = Tool.Preserve }); + // WorldBuilder.SetComponent(preserveTool, new SelectedComponent {Type = SelectionType.Tool, selected = true}); + // + // var dezoneTool = WorldBuilder.CreateEntity(); + // WorldBuilder.SetComponent(dezoneTool, new ToolComponent { Tool = Tool.Dezone }); + // WorldBuilder.SetComponent(dezoneTool, new SelectedComponent {Type = SelectionType.Tool, selected = false}); var gameEntity = WorldBuilder.CreateEntity(); diff --git a/isometric-park-fna/Renderers/CursorRenderer.cs b/isometric-park-fna/Renderers/CursorRenderer.cs --- a/isometric-park-fna/Renderers/CursorRenderer.cs +++ b/isometric-park-fna/Renderers/CursorRenderer.cs @@ -23,11 +23,24 @@ public override void Render() { + Tool selectedTool = Tool.None; + + foreach (ref readonly var entity in ReadEntities()) { + var toolComponent = GetComponent(entity); + var selectedComponent = GetComponent(entity); + if (selectedComponent.selected) { + selectedTool = toolComponent.Tool; + } + } + foreach (ref readonly var entity in ReadEntities()) { var cursorComponent = GetComponent(entity); Tile.OutlineSquare(batch, cursorComponent.position.X, cursorComponent.position.Y, Color.Yellow); + if(selectedTool == Tool.Tower) { + Tile.drawTileAt(batch, (int)cursorComponent.position.X, (int)cursorComponent.position.Y, 300, 2, 0.70f, new Color(1.0f, 1.0f, 1.0f, 0.5f)); + } } } diff --git a/isometric-park-fna/UI/Menu.cs b/isometric-park-fna/UI/Menu.cs --- a/isometric-park-fna/UI/Menu.cs +++ b/isometric-park-fna/UI/Menu.cs @@ -99,12 +99,16 @@ ImGui.Text(header); - var dimensions = ImGui.CalcTextSize("X Preserve X Dezone | X Graph X Contracts $ Budget X Forest X News X | Pause 1 2 3 4 5") ; + var dimensions = ImGui.CalcTextSize("X Tower X Preserve X Dezone | X Graph X Contracts $ Budget X Forest X News X | Pause 1 2 3 4 5") ; // ImGui.SetCursorPosX(width - 520); // Add 12 pixels for each button, plus separator - ImGui.SetCursorPosX(width - (dimensions.X + 11*12)); + ImGui.SetCursorPosX(width - (dimensions.X + 11*15)); + if (Menu.activeButton("\ue06e Tower", bridgeEngine.toolStatuses[Tool.Tower], StyleSets.selected, StyleSets.white)) + { + bridgeEngine.toggleToolMessages.Add(new ToggleToolMessage {Tool = Tool.Tower}); + } if (Menu.activeButton("\ue099 Preserve", bridgeEngine.toolStatuses[Tool.Preserve], StyleSets.selected, StyleSets.white)) { bridgeEngine.toggleToolMessages.Add(new ToggleToolMessage {Tool = Tool.Preserve});