✨ Tiles able to deconstruct
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
#nullable enable
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Godot;
|
using Godot;
|
||||||
|
|
||||||
@@ -21,6 +22,11 @@ public partial class GridManager : Node
|
|||||||
{
|
{
|
||||||
_grid.Remove(cell);
|
_grid.Remove(cell);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Node2D? GetBuildingAtCell(Vector2I cell)
|
||||||
|
{
|
||||||
|
return _grid.GetValueOrDefault(cell);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class GridUtils
|
public static class GridUtils
|
||||||
|
@@ -44,13 +44,23 @@ public partial class PlacementManager : Node2D
|
|||||||
_ghostBuilding.SetGhostMode(canPlace);
|
_ghostBuilding.SetGhostMode(canPlace);
|
||||||
|
|
||||||
// Left click to place
|
// Left click to place
|
||||||
if (!Input.IsActionPressed("build_tile") || !canPlace) return;
|
if (Input.IsActionPressed("build_tile") && canPlace)
|
||||||
|
{
|
||||||
|
_ghostBuilding.FinalizePlacement();
|
||||||
|
Grid.OccupyCell(_hoveredCell, _ghostBuilding);
|
||||||
|
|
||||||
_ghostBuilding.FinalizePlacement();
|
_ghostBuilding = (BaseTile)BuildingScene.Instantiate();
|
||||||
Grid.OccupyCell(_hoveredCell, _ghostBuilding);
|
_ghostBuilding.SetGhostMode(true);
|
||||||
|
AddChild(_ghostBuilding);
|
||||||
|
}
|
||||||
|
|
||||||
_ghostBuilding = (BaseTile)BuildingScene.Instantiate();
|
if (Input.IsActionPressed("destroy_tile") && !Grid.IsCellFree(_hoveredCell))
|
||||||
_ghostBuilding.SetGhostMode(true);
|
{
|
||||||
AddChild(_ghostBuilding);
|
// Right click to destroy
|
||||||
|
var building = Grid.GetBuildingAtCell(_hoveredCell);
|
||||||
|
if (building == null) return;
|
||||||
|
building.QueueFree();
|
||||||
|
Grid.FreeCell(_hoveredCell);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -50,6 +50,11 @@ build_tile={
|
|||||||
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(680, 19),"global_position":Vector2(699, 115),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(680, 19),"global_position":Vector2(699, 115),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
destroy_tile={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":2,"position":Vector2(481, 42),"global_position":Vector2(500, 138),"factor":1.0,"button_index":2,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
[rendering]
|
[rendering]
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user