generated from krampus/template-godot4
All checks were successful
linting & formatting / build (push) Successful in 16s
68 lines
1.4 KiB
GDScript
68 lines
1.4 KiB
GDScript
class_name BoardGame extends Control
|
|
|
|
const DOWN_SPAWN_SCENE = preload("uid://d4ltd1geg7s2p")
|
|
|
|
var turn: int = 0:
|
|
set(value):
|
|
turn = value
|
|
controls.set_turn(turn)
|
|
var player: Player
|
|
var citizen_count: int = 0:
|
|
set(value):
|
|
print(value)
|
|
citizen_count = value
|
|
if citizen_count == 0:
|
|
handle_turn_over()
|
|
|
|
var spawn_placement_actions = 0
|
|
|
|
@onready var board: Board = %Board
|
|
@onready var controls: Controls = %Controls
|
|
|
|
|
|
func _init() -> void:
|
|
Globals.board_game = self
|
|
|
|
|
|
func _ready() -> void:
|
|
player = Player.new()
|
|
controls.set_players([player])
|
|
start_turn()
|
|
|
|
|
|
func start_turn() -> void:
|
|
turn += 1
|
|
if spawn_placement_actions > 0:
|
|
board.set_active_tile(DOWN_SPAWN_SCENE.instantiate())
|
|
|
|
|
|
func select_tile(tile: Tile):
|
|
board.set_active_tile(tile)
|
|
|
|
|
|
func select_building(building: Building) -> void:
|
|
if building is Home:
|
|
board.set_active_building(building, player)
|
|
else:
|
|
board.set_active_building(building)
|
|
|
|
|
|
func place_walls() -> void:
|
|
board.is_placing_walls = !board.is_placing_walls
|
|
|
|
|
|
func handle_turn_over() -> void:
|
|
get_tree().call_group("PostTurnActions", "handle_post_turn_actions")
|
|
controls.reset_turn()
|
|
start_turn()
|
|
|
|
|
|
func queue_spawn_placement(num: int) -> void:
|
|
spawn_placement_actions += num
|
|
|
|
|
|
func handle_spawn_placed() -> void:
|
|
spawn_placement_actions = maxi(spawn_placement_actions - 1, 0)
|
|
if spawn_placement_actions > 0:
|
|
board.set_active_tile(DOWN_SPAWN_SCENE.instantiate())
|