58 lines
1.6 KiB
GDScript
58 lines
1.6 KiB
GDScript
extends Control
|
|
|
|
@onready var bull_tracker = $BullTracker
|
|
@onready var power_picker = $PowerPicker
|
|
@onready var placement_panel = $PlacementPanel
|
|
@onready var placement_list = $PlacementPanel/VBoxContainer/List
|
|
@onready var counters_lbl = $PowerCounters/Label
|
|
|
|
var local_pid: int = -1
|
|
var arena_manager: Node
|
|
|
|
func _ready():
|
|
power_picker.hide()
|
|
placement_panel.hide()
|
|
|
|
func set_local_player(pid: int):
|
|
local_pid = pid
|
|
|
|
func initialize(manager: Node):
|
|
arena_manager = manager
|
|
|
|
func _process(delta: float):
|
|
# Hide tracker if bull is close/visible, else point to it
|
|
if not arena_manager: return
|
|
|
|
var local_powers = arena_manager.player_powers.get(local_pid, {"FREEZE": 0, "KNOCK": 0})
|
|
counters_lbl.text = "Freeze: %d | Knock: %d" % [local_powers.get("FREEZE", 0), local_powers.get("KNOCK", 0)]
|
|
|
|
func show_power_picker():
|
|
power_picker.show()
|
|
|
|
func _on_freeze_btn_pressed():
|
|
if arena_manager:
|
|
arena_manager.rpc_id(1, "try_pick_power", "FREEZE")
|
|
power_picker.hide()
|
|
|
|
func _on_knock_btn_pressed():
|
|
if arena_manager:
|
|
arena_manager.rpc_id(1, "try_pick_power", "KNOCK")
|
|
power_picker.hide()
|
|
|
|
func show_placement(scores: Dictionary):
|
|
placement_panel.show()
|
|
for child in placement_list.get_children():
|
|
child.queue_free()
|
|
|
|
var items = []
|
|
for pid in scores.keys():
|
|
items.append({"pid": pid, "rank": scores[pid]})
|
|
|
|
items.sort_custom(func(a, b): return a.rank < b.rank)
|
|
|
|
for item in items:
|
|
var lbl = Label.new()
|
|
lbl.text = "Player %s - Rank %s" % [str(item.pid), str(item.rank)]
|
|
placement_list.add_child(lbl)
|
|
|