From 6084761e0d629d80975458dc15692a0ac3706f66 Mon Sep 17 00:00:00 2001 From: Nicola Date: Thu, 14 May 2026 20:50:41 +0200 Subject: [PATCH] Added robot display to map logic, now need to add the color for it. --- Scenes/Game.tscn | 6 ++++++ Scripts/Gameplay/Robots/Robot.cs | 1 + Scripts/UI/DSL/CodingWindow.cs | 6 ++++++ Scripts/World/Map.cs | 15 +++++++++++++++ 4 files changed, 28 insertions(+) diff --git a/Scenes/Game.tscn b/Scenes/Game.tscn index 297524e..4934413 100644 --- a/Scenes/Game.tscn +++ b/Scenes/Game.tscn @@ -281,6 +281,11 @@ layout_mode = 2 size_flags_horizontal = 3 text = "Apply" +[node name="CheckBox" type="CheckBox" parent="CanvasLayer/UIHandler/MainUI/Content/CodingWindow/VBoxContainer/Renaming" unique_id=1340883792] +layout_mode = 2 +button_pressed = true +text = "Show on map" + [node name="Scripting" type="HBoxContainer" parent="CanvasLayer/UIHandler/MainUI/Content/CodingWindow/VBoxContainer" unique_id=1934932205] layout_mode = 2 size_flags_vertical = 3 @@ -732,6 +737,7 @@ vertical_alignment = 1 [connection signal="pressed" from="CanvasLayer/UIHandler/MainUI/HeaderContainer/VBoxContainer/UnlockLayer" to="CanvasLayer/UIHandler" method="UnlockLayer"] [connection signal="pressed" from="CanvasLayer/UIHandler/MainUI/Content/CodingWindow/VBoxContainer/Renaming/Button" to="CanvasLayer/UIHandler/MainUI/Content/CodingWindow" method="SaveRobotName"] +[connection signal="toggled" from="CanvasLayer/UIHandler/MainUI/Content/CodingWindow/VBoxContainer/Renaming/CheckBox" to="CanvasLayer/UIHandler/MainUI/Content/CodingWindow" method="OnMapToggled"] [connection signal="connection_request" from="CanvasLayer/UIHandler/MainUI/Content/CodingWindow/VBoxContainer/Scripting/EditorWindow/CodeContainer" to="CanvasLayer/UIHandler/MainUI/Content/CodingWindow" method="OnNodeConnect"] [connection signal="disconnection_request" from="CanvasLayer/UIHandler/MainUI/Content/CodingWindow/VBoxContainer/Scripting/EditorWindow/CodeContainer" to="CanvasLayer/UIHandler/MainUI/Content/CodingWindow" method="OnNodeDisconnect"] [connection signal="node_deselected" from="CanvasLayer/UIHandler/MainUI/Content/CodingWindow/VBoxContainer/Scripting/EditorWindow/CodeContainer" to="CanvasLayer/UIHandler/MainUI/Content/CodingWindow" method="OnNodeDeselect"] diff --git a/Scripts/Gameplay/Robots/Robot.cs b/Scripts/Gameplay/Robots/Robot.cs index 0d67a83..d6e8fce 100644 --- a/Scripts/Gameplay/Robots/Robot.cs +++ b/Scripts/Gameplay/Robots/Robot.cs @@ -21,6 +21,7 @@ public partial class Robot : Node3D public bool isCoolingDown = false; public bool isBroken = false; public string robotType = "iron_robot"; + public bool showOnMap = true; private RobotTypeStats TypeStats => GameData.robotStats.RobotTypes.TryGetValue(robotType, out RobotTypeStats stats) diff --git a/Scripts/UI/DSL/CodingWindow.cs b/Scripts/UI/DSL/CodingWindow.cs index 914f6cb..4ccc78e 100644 --- a/Scripts/UI/DSL/CodingWindow.cs +++ b/Scripts/UI/DSL/CodingWindow.cs @@ -43,6 +43,12 @@ public partial class CodingWindow : PanelContainer } } + public void OnMapToggled(bool toggledOn) + { + if(robot == null) return; + robot.showOnMap = toggledOn; + } + public void OnNodeSelect(NodeDisplay node) { selectedNode = node; diff --git a/Scripts/World/Map.cs b/Scripts/World/Map.cs index 42cc257..7a2f2ac 100644 --- a/Scripts/World/Map.cs +++ b/Scripts/World/Map.cs @@ -22,6 +22,21 @@ public partial class Map : PanelContainer Tile[,] tiles = GameData.map[GameData.currentLayer].tiles; int size = GameData.layerSize; + Dictionary> visibleRobots = new Dictionary>(); + + Vector3I tilePos; + Vector2I key; + + foreach(Robot robot in GameData.robots) + { + if(!robot.showOnMap) continue; + tilePos = Pathfinding.GetClosestStartPoint(robot.Position); + if(tilePos.Y != GameData.visibleLayer) continue; + key = new Vector2I(tilePos.X, tilePos.Z); + if(!visibleRobots.ContainsKey(key)) visibleRobots.Add(key, new List()); + visibleRobots[key].Add(robot); + } + for (int z = -1; z < size; z++) { for (int x = -1; x < size; x++)