Files
turnbasedstrategygame/Scenes/Unit/unit.gd

69 lines
1.6 KiB
GDScript

extends Node2D
class_name Unit
### Marker
# For now the marker will be spawned and deleted by the unit.
# Later it will be handled by the main scene.
# Load marker scene.
var marker_scene = preload("res://Scenes/Unit/marker.tscn")
var marker
@onready var _readyToSelectMarker = $ReadyToSelectMarker
@onready var _selectedMarker = $SelectedMarker
var _selected = false
var _readyToSelect = false
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
marker = marker_scene.instantiate()
marker.hide()
_readyToSelectMarker.hide()
_selectedMarker.hide()
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
func _input(event: InputEvent):
if event.is_action_pressed("Select"):
print_debug("Action is Select")
# We combine it with the fact that it is already marked (@see _markUnit)
if _readyToSelect: _selectUnit()
else: _deselectUnit()
if event.is_action_pressed("SetMarker") and _selected:
marker.global_position = event.position
marker.show()
print_debug("Setting marker")
func _getUnitPosition():
return $AnimatedSprite2D.global_position
func _setSelected(selected: bool):
_selected = selected
func _selectUnit():
_setSelected(true)
_selectedMarker.show()
func _deselectUnit():
_setSelected(false)
_selectedMarker.hide()
func _gets_selected(viewport: Node, event: InputEvent, shape_index: int):
if event.is_action_pressed("Select") and event.position == position:
_selectUnit()
func _markUnit():
_readyToSelect = true
_readyToSelectMarker.show()
func _unMarkUnit():
_readyToSelect = false
_readyToSelectMarker.hide()