class_name Player extends Control @onready var player_name_field := $HBoxContainer/Name @onready var add_button := $HBoxContainer/AddPoint @onready var minus_button := $HBoxContainer/RemovePoint @onready var character := $HBoxContainer/Character @onready var remove_player := $HBoxContainer/RemovePlayer signal change_character_clicked signal player_removed ## The player shown in this row. var player_object: PlayerObject ## Position in Settings.player_array. Only used for the keybinds: Alt+ ## gives this player a point and Ctrl+Alt+ takes one away. var list_index: int # Called when the node enters the scene tree for the first time. func _ready() -> void: add_button.pressed.connect(add_point) add_button.set_shortcut(create_button_shortcut(list_index, false)) minus_button.pressed.connect(minus_point) minus_button.set_shortcut(create_button_shortcut(list_index, true)) character.pressed.connect(change_character) remove_player.pressed.connect(func() -> void: player_removed.emit()) update_score() set_player_character() func _process(delta: float) -> void: remove_player.visible = Settings.edit_players func create_button_shortcut(index: int, ctrl_pressed: bool) -> Shortcut: var button_shortcut: Shortcut = Shortcut.new() var button_event : InputEventKey = InputEventKey.new() button_event.keycode = KEY_1 + index button_event.alt_pressed = true button_event.ctrl_pressed = ctrl_pressed button_shortcut.events.append(button_event) return button_shortcut func add_point() -> void: player_object.add_point() update_score() func minus_point() -> void: player_object.minus_point() update_score() func change_character() -> void: change_character_clicked.emit() func character_selected(file_name: String) -> void: print("Back in player list with: " + file_name) player_object.character = load("res://characters/" + file_name) set_player_character() func new_character_selected(character_texture: ImageTexture) -> void: print("Back in player list with new") player_object.character = character_texture set_player_character() func set_player_character() -> void: character.custom_minimum_size = Vector2(80, 40) character.ignore_texture_size = true character.stretch_mode = TextureButton.STRETCH_KEEP_ASPECT_CENTERED character.texture_normal = player_object.character func update_score() -> void: if OS.has_feature("debug"): player_name_field.text = str(list_index + 1) + " " + player_object.player_name + ": " + str(player_object.player_score) else: player_name_field.text = player_object.player_name + ": " + str(player_object.player_score)