extends Camera3D @onready var playerSelectButton = preload("res://scenes/camera/UI/playerSelectionButton.tscn") @onready var roundLabel = $CanvasLayer/Control/General/HBoxContainer/roundLabel @onready var playerNameLabel = $CanvasLayer/Control/Player/HBoxContainer2/PlayerNameLabel @onready var itemCards = $CanvasLayer/Control/Player/Stats/ItemCards @onready var magazineLabel = $CanvasLayer/Control/Player/Stats/HBoxContainer/MagazineLabel @onready var playerSelection = $CanvasLayer/Control/Player/Stats/PlayerSelection @onready var stats = $CanvasLayer/Control/Player/Stats @onready var player = $CanvasLayer/Control/Player @onready var turnTimeLabel = $CanvasLayer/Control/Player/Stats/turnTimeLabel @onready var timer = $CanvasLayer/Control/Player/Stats/Timer @onready var winInfo = $CanvasLayer/Control/WinInfo @onready var general = $CanvasLayer/Control/General @onready var poolLabel = $CanvasLayer/Control/PoolLabel @onready var winnerLabel = $CanvasLayer/Control/WinInfo/winScreen/WinnerLabel @onready var winRoundLabel = $CanvasLayer/Control/WinInfo/winScreen/WinRoundLabel #@onready var itemStandardBulletButton = $ var currentPlayer: Player var selectablePlayers: Array[Player] var currentGameState: GLOBALS.GAMESTATE signal itemSelected(_itemType: GLOBALS.ITEMTYPES) signal nextTurn() func updateUi(): match currentGameState: GLOBALS.GAMESTATE.SETUP: print("-- CAMERA SETUP --") setup() player.visible = false winInfo.visible = false general.visible = true poolLabel.visible = false GLOBALS.GAMESTATE.ROUNDSTART: print("-- CAMERA ROUNDSTART --") player.visible = false winInfo.visible = false general.visible = true poolLabel.visible = false GLOBALS.GAMESTATE.PLAYER: print("-- CAMERA PLAYER --") player.visible = true updatePlayerStats() if currentPlayer.isBot(): stats.visible = false else: stats.visible = true winInfo.visible = false general.visible = true poolLabel.visible = false GLOBALS.GAMESTATE.POOL: print("-- CAMERA POOL --") player.visible = false winInfo.visible = false general.visible = true poolLabel.visible = true GLOBALS.GAMESTATE.AIM: print("-- CAMERA AIM --") player.visible = false winInfo.visible = false general.visible = true poolLabel.visible = false GLOBALS.GAMESTATE.SHOOT: print("-- CAMERA SHOOT --") player.visible = false winInfo.visible = false general.visible = true poolLabel.visible = false GLOBALS.GAMESTATE.END: print("-- CAMERA END --") if selectablePlayers.size() > 0: winnerLabel.text = selectablePlayers[0].getGameName() else: winnerLabel.text = "DRAW" winInfo.visible = true general.visible = false func setup(): for i in itemCards.get_children(): if i.has_signal("selected"): i.selected.connect(selectItem.bind()) func displayPlayerStats(_player) -> void: currentPlayer = _player updateUi() func setSelectablePlayers(_players: Array[Player]) -> void: selectablePlayers = _players updateUi() func updateGameState(_state: GLOBALS.GAMESTATE) -> void: currentGameState = _state updateUi() func getPlayerSelection() -> Player: for i in playerSelection.get_children(): if i.button_pressed == true: return i.player return currentPlayer func updatePlayerStats(): if currentPlayer != null: playerNameLabel.text = str(currentPlayer.getGameName()) magazineLabel.text = str(currentPlayer.gun.magazineSize) + "/" + str(currentPlayer.gun.getBulletAmount()) updateItemCards() updatePlayerSelection() func updateItemCards() -> void: if currentPlayer.gun.magazineSizeLeft() <= 0: for i in itemCards.get_children(): if i.has_node("ItemButton"): i.itemButton.disabled = true else: for i in itemCards.get_children(): if i.has_node("ItemButton"): i.itemButton.disabled = false for i in GLOBALS.ITEMTYPES: var counter = 0 for j in currentPlayer.getItems(): if j.type == GLOBALS.ITEMTYPES[i]: counter += 1 for j in itemCards.get_children(): if j.has_node("ItemButton/ItemAmountLabel") and j.itemType == GLOBALS.ITEMTYPES[i]: j.setAmount(counter) if counter <= 0: j.visible = false else: j.visible = true func updatePlayerSelection() -> void: for i in playerSelection.get_children(): i.free() var newButtonGroup = ButtonGroup.new() for i in selectablePlayers: if i != currentPlayer: var newSelection = playerSelectButton.instantiate() newSelection.setPlayer(i) newSelection.button_group = newButtonGroup playerSelection.add_child(newSelection) if playerSelection.get_child(0) != null: playerSelection.get_child(0).button_pressed = true var newSelection = playerSelectButton.instantiate() newSelection.setPlayer(currentPlayer) newSelection.button_group = newButtonGroup playerSelection.add_child(newSelection) func setRound(_round: int) -> void: roundLabel.text = str(_round) winRoundLabel.text = str(_round) func updatTurnTime(_timeLeft: float, _endTime: float) -> void: timer.setTime(_timeLeft, _endTime) turnTimeLabel.text = str(_timeLeft) func selectItem(_itemType: GLOBALS.ITEMTYPES): print(currentPlayer.gun.magazineSizeLeft()) if currentPlayer.gun.magazineSizeLeft() > 0: itemSelected.emit(_itemType) func resetTimer() -> void: timer.reset() func _on_next_turn_button_pressed() -> void: currentPlayer.selectPlayer(getPlayerSelection()) nextTurn.emit() func _on_button_pressed() -> void: var mainMenu: PackedScene = load("res://scenes/mainMenu/mainMenu.tscn") get_tree().change_scene_to_packed(mainMenu)