Updated how players and song list works
Made many changes with caching, how players works, added sound effects and animations any many more things
This commit is contained in:
134
Player.gd
134
Player.gd
@@ -5,10 +5,10 @@ extends Control
|
||||
var player_name_field := $HBoxContainer/Name
|
||||
|
||||
@onready
|
||||
var add := $HBoxContainer/AddPoint
|
||||
var add_button := $HBoxContainer/AddPoint
|
||||
|
||||
@onready
|
||||
var minus := $HBoxContainer/RemovePoint
|
||||
var minus_button := $HBoxContainer/RemovePoint
|
||||
|
||||
@onready
|
||||
var character := $HBoxContainer/Character
|
||||
@@ -17,119 +17,55 @@ var character := $HBoxContainer/Character
|
||||
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)
|
||||
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(): player_removed.emit())
|
||||
player_name_field.text = player_score
|
||||
remove_player.pressed.connect(func() -> void: player_removed.emit())
|
||||
update_score()
|
||||
set_player_character()
|
||||
|
||||
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 _process(delta: float) -> void:
|
||||
remove_player.visible = Settings.edit_players
|
||||
|
||||
func check_player(pressed: int, add: bool):
|
||||
if (id == pressed):
|
||||
print("Player " + str(id) + " pressed")
|
||||
if add:
|
||||
add_point()
|
||||
else:
|
||||
minus_point()
|
||||
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():
|
||||
if is_first_point:
|
||||
is_first_point = false
|
||||
first_point_triggerd.emit()
|
||||
func add_point() -> void:
|
||||
Settings.player_array[id].add_point()
|
||||
update_score()
|
||||
|
||||
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():
|
||||
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):
|
||||
func _on_control_character_selected_clicked(file_name: String) -> void:
|
||||
print("Back in player list with: " + file_name)
|
||||
|
||||
var texture = load("res://characters/" + 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 = texture
|
||||
character.texture_normal = Settings.player_array[id].character
|
||||
|
||||
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)
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user