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: # add_child(_MovingMarker) # _MovingMarker.hide() # # create unit at local position (50, 50) => eg mouse position _createUnit(GroundLayer.local_to_map(Vector2i(50, 50))) # create unit at map position (50, 50) => tile x = 50, y = 50 in the map _createUnit(GroundLayer.map_to_local(Vector2i(25,25))) for unit in _Units: add_child(unit) # $CameraController.position = get_viewport().get_camera_2d().get_screen_center_position() var firstUnit: Node2D = _Units[0] # if firstUnit.is_node_ready(): # UnitCamera.target = _Units[0].get_path_to(get_parent()) # UnitCamera.target_node = _Units[0] # 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 _getScreenCenter(): return get_viewport().get_camera_2d().get_screen_center_position() 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)