mirror of
https://github.com/danbulant/programovani-kostky
synced 2026-06-18 13:51:09 +00:00
59 lines
1.8 KiB
GDScript
59 lines
1.8 KiB
GDScript
extends Control
|
|
|
|
@onready var selector: Control = $SelectorContainer
|
|
@onready var p1 = $Players/Player1
|
|
@onready var p2 = $Players/Player2
|
|
@onready var p3 = $Players/Player3
|
|
@onready var p4 = $Players/Player4
|
|
@onready var p5 = $Players/Player5
|
|
@onready var start_button: Button = $StartButton
|
|
@onready var start_disabled_info: Label = $StartDisabledInfo
|
|
|
|
var players: Array[VBoxContainer]
|
|
var player_names: Array[String] = ["", "", "", "", ""]
|
|
var player_ready := false
|
|
signal start_game
|
|
signal back_to_menu
|
|
|
|
var tween: Tween
|
|
func _ready() -> void:
|
|
players = [p1, p2, p3, p4, p5]
|
|
|
|
get_viewport().connect("gui_focus_changed", _on_focus_changed)
|
|
for player in players:
|
|
var line_edit: LineEdit = player.get_node("LineEdit")
|
|
line_edit.connect("text_changed", _on_text_changed)
|
|
|
|
func recheck_names() -> void:
|
|
var non_empty_player_names = 0
|
|
for pname in player_names:
|
|
if pname != "":
|
|
non_empty_player_names += 1
|
|
player_ready = non_empty_player_names >= 2
|
|
start_disabled_info.visible = !player_ready
|
|
start_button.disabled = !player_ready
|
|
|
|
func _on_start_button_pressed() -> void:
|
|
start_game.emit()
|
|
|
|
func _on_focus_changed(focus: Control) -> void:
|
|
if focus is LineEdit:
|
|
var parent: VBoxContainer = focus.get_parent()
|
|
if parent is VBoxContainer:
|
|
selector.visible = true
|
|
if tween:
|
|
tween.kill()
|
|
tween = get_tree().create_tween().bind_node(self).set_trans(Tween.TRANS_ELASTIC)
|
|
tween.tween_property(selector, "global_position:x", parent.global_position.x + parent.size.x/2 - selector.size.x/2, .6)
|
|
return
|
|
selector.visible = false
|
|
|
|
func _on_text_changed(_text: String) -> void:
|
|
for i in players.size():
|
|
player_names[i] = players[i].get_node("LineEdit").text
|
|
recheck_names()
|
|
|
|
func _on_texture_rect_gui_input(event: InputEvent) -> void:
|
|
if event is InputEventMouse:
|
|
if event.is_pressed():
|
|
back_to_menu.emit()
|