Made many changes with caching, how players works, added sound effects and animations any many more things
72 lines
2.1 KiB
GDScript
72 lines
2.1 KiB
GDScript
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
|
|
|
|
@export
|
|
var id: 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(id, false))
|
|
minus_button.pressed.connect(minus_point)
|
|
minus_button.set_shortcut(create_button_shortcut(id, 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(scancode : int, ctrl_pressed: bool) -> Shortcut:
|
|
var button_shortcut: Shortcut = Shortcut.new()
|
|
var button_event : InputEventKey = InputEventKey.new()
|
|
button_event.keycode = scancode + 49
|
|
button_event.alt_pressed = true
|
|
button_event.ctrl_pressed = ctrl_pressed
|
|
button_shortcut.events.append(button_event)
|
|
return button_shortcut
|
|
|
|
func add_point() -> void:
|
|
Settings.player_array[id].add_point()
|
|
update_score()
|
|
|
|
func minus_point() -> void:
|
|
Settings.player_array[id].minus_point()
|
|
update_score()
|
|
|
|
func change_character() -> void:
|
|
change_character_clicked.emit()
|
|
|
|
func _on_control_character_selected_clicked(file_name: String) -> void:
|
|
print("Back in player list with: " + file_name)
|
|
Settings.player_array[id].character = load("res://characters/" + file_name)
|
|
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
|
|
character.texture_normal = Settings.player_array[id].character
|
|
|
|
func update_score() -> void:
|
|
player_name_field.text = str(Settings.player_array[id].id) + " " + Settings.player_array[id].player_name + ": " + str(Settings.player_array[id].player_score)
|