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)