forked from Nekojimi/JackIt
39 lines
1.4 KiB
GDScript
39 lines
1.4 KiB
GDScript
extends Node
|
|
class_name GameManager
|
|
|
|
@export var prompt_ask_name: Dictionary
|
|
@onready var action_ask_name: Action = Action.new(prompt_ask_name, func(player:Player,answer:String): player.player_name = answer.strip_edges().capitalize(); return true)
|
|
@export var prompt_ask_pronouns: Dictionary
|
|
@onready var action_ask_pronouns: Action = Action.new(prompt_ask_pronouns, func(player:Player,answer:String): player.player_pronouns = answer; return true)
|
|
|
|
var player_actions: Dictionary = {}
|
|
|
|
func _ready() -> void:
|
|
$"../../Players".connect("player_joined", on_player_joined)
|
|
|
|
func on_player_joined(player: Player) -> void:
|
|
player.connect("prompt_answered", on_player_answered_prompt.bind(player))
|
|
check_player_setup(player)
|
|
|
|
func check_player_setup(player: Player) -> void:
|
|
if player.player_name.is_empty():
|
|
run_player_action(player, action_ask_name)
|
|
elif player.player_pronouns.is_empty():
|
|
run_player_action(player, action_ask_pronouns)
|
|
|
|
func run_player_action(player: Player, action: Action) -> void:
|
|
player_actions[player] = action
|
|
player.send_prompt(action.prompt)
|
|
|
|
func on_player_answered_prompt(answer: String, player: Player) -> void:
|
|
var action: Action = player_actions.get(player)
|
|
if action == null:
|
|
return
|
|
var validated: bool = action.prompt_answered(player,answer)
|
|
if validated:
|
|
player_actions.erase(player)
|
|
check_player_setup(player)
|
|
else:
|
|
# send it back with some kind of error?
|
|
run_player_action(player, action)
|