Godot Version
4.4
Question
Hello, learning developer. It looks like the TurnQueue class will cycle through array of base class Characters I have in the array, but that’s about all I can figure out.
would you mind pointing me in the right direction for: Connecting them together correctly, and having so that truly only on Character can move at a time
extends Node2D
class_name TurnQueue
signal start_turn(character)
var active_character: Character
var turn_queue : Array[Character]
var turn_index : int = 0
func initialiaze() -> void:
add_initial_characters()
var character = get_child(0)
character.connect("turn_ended", Callable(self, "next_turn"))
if turn_queue.size() > 0:
active_character = turn_queue[0]
func _ready() -> void:
initialiaze()
func add_character(character: Character) -> void:
turn_queue.append(character)
print(character.name, " has joined, total:", turn_queue.size())
func get_all_characters() -> Array:
return turn_queue.duplicate()
func add_initial_characters() -> void:
for child in get_children():
if child is Character:
add_character(child)
func next_turn() -> void:
if turn_queue.size() == 0:
return
turn_index = (turn_index + 1) % turn_queue.size()
active_character = turn_queue[turn_index]
print(active_character.name, "'s turn")
emit_signal("start_turn")
extends Node2D
class_name Character
signal turn_ended
@onready var turn_queue = TurnQueue
var action_points: float
func initialize() -> void:
turn_queue = turn_queue.new()
turn_queue.connect("start_turn", Callable(self, "start_turn"))
func _ready() -> void:
initialize()
func start_turn() -> void:
print(Character.name, " played turn")
end_turn()
func end_turn() -> void:
emit_signal("turn_ended")