Files
MusicPlayer/Player.gd

136 lines
3.7 KiB
GDScript

class_name Player
extends Control
@onready
var player_name_field := $HBoxContainer/Name
@onready
var add := $HBoxContainer/AddPoint
@onready
var minus := $HBoxContainer/RemovePoint
@onready
var character := $HBoxContainer/Character
@onready
var remove_player := $HBoxContainer/RemovePlayer
signal change_character_clicked
signal first_point_triggerd
signal match_point_triggerd
signal winner_triggerd
signal player_removed
@export
var player_name: String
@export
var player_score: String
@export
var id: int
var is_first_point: bool = true
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
add.pressed.connect(add_point)
minus.pressed.connect(minus_point)
character.pressed.connect(change_character)
remove_player.pressed.connect(func(): player_removed.emit())
player_name_field.text = player_score
func _input(event: InputEvent) -> void:
if event is InputEventKey and event.pressed:
if event.alt_pressed && event.ctrl_pressed && event.keycode == KEY_1:
check_player(1, false)
elif event.alt_pressed && event.keycode == KEY_1:
check_player(1, true)
if event.alt_pressed && event.ctrl_pressed && event.keycode == KEY_2:
check_player(2, false)
elif event.alt_pressed && event.keycode == KEY_2:
check_player(2, true)
if event.alt_pressed && event.ctrl_pressed && event.keycode == KEY_3:
check_player(3, false)
elif event.alt_pressed && event.keycode == KEY_3:
check_player(3, true)
if event.alt_pressed && event.ctrl_pressed && event.keycode == KEY_4:
check_player(4, false)
elif event.alt_pressed && event.keycode == KEY_4:
check_player(4, true)
if event.alt_pressed && event.ctrl_pressed && event.keycode == KEY_5:
check_player(5, false)
elif event.alt_pressed && event.keycode == KEY_5:
check_player(5, true)
if event.alt_pressed && event.ctrl_pressed && event.keycode == KEY_6:
check_player(6, false)
elif event.alt_pressed && event.keycode == KEY_6:
check_player(6, true)
if event.alt_pressed && event.ctrl_pressed && event.keycode == KEY_7:
check_player(7, false)
elif event.alt_pressed && event.keycode == KEY_7:
check_player(7, true)
if event.alt_pressed && event.ctrl_pressed && event.keycode == KEY_8:
check_player(8, false)
elif event.alt_pressed && event.keycode == KEY_8:
check_player(8, true)
if event.alt_pressed && event.ctrl_pressed && event.keycode == KEY_9:
check_player(9, false)
elif event.alt_pressed && event.keycode == KEY_9:
check_player(9, true)
func check_player(pressed: int, add: bool):
if (id == pressed):
print("Player " + str(id) + " pressed")
if add:
add_point()
else:
minus_point()
func add_point():
if is_first_point:
is_first_point = false
first_point_triggerd.emit()
var new_value := get_point() + 1
set_point(new_value)
if new_value == Settings.winning_score - 1:
match_point_triggerd.emit()
if new_value == Settings.winning_score:
winner_triggerd.emit()
func minus_point():
var new_value := get_point() - 1
set_point(new_value)
if new_value == 0:
is_first_point = true
func reset_points():
var new_value := 0
set_point(new_value)
is_first_point = true
func change_character():
change_character_clicked.emit()
func _on_control_character_selected_clicked(file_name: String):
print("Back in player list with: " + file_name)
var texture = load("res://characters/" + file_name)
character.custom_minimum_size = Vector2(80, 40)
character.ignore_texture_size = true
character.stretch_mode = TextureButton.STRETCH_KEEP_ASPECT
character.texture_normal = texture
func get_point() -> int:
var arr = player_name_field.text.split(":")
return arr[1].to_int()
func set_point(new_point: int):
var arr = player_name_field.text.split(":")
player_name_field.text = arr[0] + ": " + str(new_point)