Prepared Movement behaviour. Fixed multi-tile placement bug
This commit is contained in:
parent
62eef907d3
commit
397082f966
17 changed files with 395 additions and 75 deletions
71
UI/ActionMoveMenu.gd
Normal file
71
UI/ActionMoveMenu.gd
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
extends Control
|
||||
|
||||
@onready var move_button = $PanelContainer/MarginContainer/VBoxContainer/MoveButton
|
||||
@onready var action_button = $PanelContainer/MarginContainer/VBoxContainer/ActionButton
|
||||
|
||||
var current_tile: InsectTile = null
|
||||
var tween: Tween = null
|
||||
|
||||
func show_panel() -> void:
|
||||
scale = Vector2.ZERO
|
||||
|
||||
visible = true
|
||||
if tween != null:
|
||||
tween.kill()
|
||||
|
||||
tween = get_tree().create_tween()
|
||||
tween.tween_property(self, "scale", Vector2(1.0, 1.0), 0.35).set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_SPRING)
|
||||
|
||||
func hide_panel() -> void:
|
||||
current_tile = null
|
||||
|
||||
if tween != null:
|
||||
tween.kill()
|
||||
|
||||
tween = get_tree().create_tween()
|
||||
tween.tween_property(self, "scale", Vector2(0.0, 0.0), 0.35).set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_EXPO)
|
||||
|
||||
tween.finished.connect(_on_panel_hidden)
|
||||
pass
|
||||
|
||||
func _on_panel_hidden() -> void:
|
||||
visible = false
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
GameEvents.choose_action_or_move.connect(_on_choose_action_or_move)
|
||||
GameEvents.insect_tile_deselected.connect(_on_tile_deselected)
|
||||
|
||||
func _on_tile_deselected(tile: InsectTile) -> void:
|
||||
hide_panel()
|
||||
|
||||
|
||||
func _on_choose_action_or_move(tile: InsectTile, has_action_targets: bool, can_move: bool) -> void:
|
||||
current_tile = tile
|
||||
move_button.text = "Move as %s" % tile.resource.tile_name
|
||||
move_button.disabled = !can_move
|
||||
|
||||
action_button.text = "Use action of %s" % tile.resource.tile_name
|
||||
action_button.disabled = !has_action_targets
|
||||
show_panel()
|
||||
pass
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
func _on_action_button_pressed():
|
||||
GameEvents.insect_tile_action_started.emit(current_tile)
|
||||
hide_panel()
|
||||
|
||||
|
||||
func _on_move_button_pressed():
|
||||
GameEvents.insect_tile_move_started.emit(current_tile)
|
||||
hide_panel()
|
||||
|
||||
|
||||
func _on_cancel_button_pressed():
|
||||
GameEvents.insect_tile_deselected.emit(current_tile)
|
||||
pass # Replace with function body.
|
||||
Loading…
Add table
Add a link
Reference in a new issue