Using the new MapGlobal at various parts and switched away from the Grid.resource

This commit is contained in:
awu
2025-12-30 23:38:56 +01:00
parent 858122b8a1
commit 6431603630
7 changed files with 64 additions and 68 deletions

View File

@@ -6,12 +6,20 @@ var show_grid_display: bool:
set(v): show_grid_display = v; queue_redraw()
func toggle_grid_display(on: bool):
grid = MapGlobal.GetGrid()
show_grid_display = on
func getNewGrid():
grid = MapGlobal.GetGrid()
func _draw():
if not grid or not show_grid_display: return
for x in grid.region.size.x:
for y in grid.region.size.y:
var p = Vector2(x, y)
var p = Vector2(x + grid.region.position.x, y + grid.region.position.y)
var col = Color(1,0,0,0.3) if grid.is_point_solid(p) else Color(0,1,0,0.3)
draw_rect(Rect2(p*grid.cell_size, grid.cell_size), col)
func _on_player_move_finished() -> void:
getNewGrid() # Replace with function body.

View File

@@ -1,53 +1,16 @@
extends Node
@export var grid: Resource
@onready var _Map: Node = $Map
@onready var _Camera = $CameraController
# Units
var _UnitScene = preload("res://Scenes/Unit/unit.tscn")
var _Units: Array[Unit] = []
# MovingMarker
var _MovingMarkerScene = preload("res://Scenes/Unit/marker.tscn")
var _MovingMarker: Node2D = _MovingMarkerScene.instantiate()
#@export var mapSize: int = 15
@onready var UnitCamera: SmartCamera2D = $SmartCamera2D
@onready var GroundLayer: TileMapLayer = $Map/Ground
var aStarGrid: AStarGrid2D:
set(v): aStarGrid = v;
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
aStarGrid = MapGlobal.GenerateGridFromLayer($Map/Obstacles)
if $Player.is_node_ready():
$Player.setup($Map.getGrid())
$Player.setup(MapGlobal.GetGrid())
$GameBoard/Cursor.moved.connect($Player.setTarget)
$GameBoard/Cursor.accept_pressed.connect($Player.selectUnit)
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
func _createUnit(pos: Vector2i):
var newUnit = _UnitScene.instantiate()
newUnit.set("_spawnPosition", pos)
_Units.append(newUnit as Unit)
func _input(event: InputEvent) -> void:
if event.is_action_pressed("SetMarker"):
print("Action is SetMarker")
# _MovingMarker.global_position = _getMousePosition(event).position
_MovingMarker.position = GroundLayer.local_to_map(event.position)
_MovingMarker.show()
func selectUnitAt(cell: Vector2i):
pass
func _getScreenCenter():
return get_viewport().get_camera_2d().get_screen_center_position()
@@ -55,19 +18,5 @@ func _getScreenCenter():
func _getMousePosition(event: InputEvent):
return get_viewport().get_camera_2d().make_input_local(event)
#func prepareAStarGrid():
# var astarGrid = AStarGrid2D.new()
# astarGrid.cell_size = GroundLayer.tile_set.tile_size
# astarGrid.region = Rect2(Vector2.ZERO, ceil(get_viewport_rect().size / astarGrid.cell_size))
# astarGrid.update()
#
# for id in ObstacleLayer.get_used_cells():
# var data: TileData = ObstacleLayer.get_cell_tile_data(id)
# if data and data.get_custom_data('obstacle'):
# astarGrid.set_point_solid(id)
#
# %GridDisplay.grid = astarGrid
func get_cell_information(cell):
print(cell)

View File

@@ -1,7 +1,8 @@
[gd_scene load_steps=10 format=3 uid="uid://d05j5yuhlsxp0"]
[gd_scene load_steps=11 format=3 uid="uid://d05j5yuhlsxp0"]
[ext_resource type="PackedScene" uid="uid://cywuuce71rmgb" path="res://Scenes/Map/map.tscn" id="1_1r6ip"]
[ext_resource type="Script" uid="uid://btdvxp8ckmeb3" path="res://Scenes/Main/main.gd" id="1_qw60k"]
[ext_resource type="Script" uid="uid://76bfwrwrqfqr" path="res://Scenes/Map/map_global.gd" id="3_hryqi"]
[ext_resource type="Script" uid="uid://14cwbxcvt5dx" path="res://Scenes/Main/game_board.gd" id="4_5yls4"]
[ext_resource type="Resource" uid="uid://bpf7mj7w5kftq" path="res://Resource/Grid.tres" id="5_p6jpk"]
[ext_resource type="Script" uid="uid://dukn3yshfepum" path="res://Scenes/Main/grid_debug.gd" id="5_y3v7k"]
@@ -13,9 +14,9 @@
[node name="Main" type="Node"]
script = ExtResource("1_qw60k")
grid = ExtResource("5_p6jpk")
[node name="Map" parent="." instance=ExtResource("1_1r6ip")]
script = ExtResource("3_hryqi")
[node name="GameBoard" type="Node2D" parent="."]
script = ExtResource("4_5yls4")
@@ -42,7 +43,6 @@ scale = Vector2(2, 2)
texture = SubResource("PlaceholderTexture2D_y3v7k")
[node name="HUD" type="CanvasLayer" parent="."]
visible = false
[node name="GridDisplay" type="Control" parent="HUD"]
unique_name_in_owner = true
@@ -69,3 +69,4 @@ position = Vector2(8, 8)
[connection signal="accept_pressed" from="GameBoard/Cursor" to="." method="get_cell_information"]
[connection signal="toggled" from="HUD/GridDisplay/MarginContainer/PanelContainer/ShowGrid" to="HUD/GridDisplay" method="toggle_grid_display"]
[connection signal="MoveFinished" from="Player" to="HUD/GridDisplay" method="_on_player_move_finished"]

View File

@@ -1,16 +1,24 @@
extends CharacterBody2D
@export var SPEED = 400.0
@export var unitData = {
"MoveRange": 5,
"MoveRangeV": Vector2i(5, 5),
"Speed": 400.0
}
var grid: AStarGrid2D
var currentCell: Vector2i
var currentPoint: int
var selected: bool:
set(v):
selected = v; $PathPrev.visible = selected;
selected = v; $PathPrev.visible = selected; if selected: MapGlobal.SetRegion(calculateMovementRegion())
var moving: bool:
set(v):
moving = v; $PathPrev.visible = not moving; set_physics_process(moving)
signal MoveFinished
var targetCell: Vector2i
var movePts: Array
@@ -25,7 +33,7 @@ func setup(_grid: AStarGrid2D):
targetCell = currentCell
func pos_to_cell(pos: Vector2):
return pos / grid.cell_size
return pos / Vector2(MapGlobal.getData()["cellSize"])
func _input(event: InputEvent) -> void:
if moving: return
@@ -36,10 +44,12 @@ func setTarget(target: Vector2i):
if !selected: return
if moving: return
if target != targetCell:
movePts = grid.get_point_path(currentCell, target)
print("Setting target: ")
movePts = MapGlobal.GetGrid().get_point_path(currentCell, target)
movePts = (movePts as Array).map(func (point): return point + grid.cell_size/2.0)
$PathPrev.points = movePts
targetCell = target
print (targetCell)
func startMove():
@@ -51,10 +61,13 @@ func _physics_process(delta: float) -> void:
velocity = Vector2.ZERO
global_position = movePts[-1]
currentCell = pos_to_cell(global_position)
$PathPrev.points = []; moving = false
$PathPrev.points = [];
moving = false; MoveFinished.emit();
MapGlobal.SetRegion(calculateMovementRegion(), unitData["MoveRangeV"])
else:
var direction = (movePts[currentPoint+1] - movePts[currentPoint]).normalized()
velocity = direction * SPEED
velocity = direction * unitData["Speed"]
move_and_slide()
if (movePts[currentPoint+1] - global_position).length() < 4:
currentCell = pos_to_cell(global_position)
@@ -65,3 +78,8 @@ func selectUnit(cell: Vector2i):
selected = true
else:
selected = false
func calculateMovementRegion():
var region := Rect2i(pos_to_cell(global_position), Vector2i(unitData["MoveRange"], unitData["MoveRange"]))
region.set_center
return region