bordello/Scripts/board.gd

82 lines
1.7 KiB
GDScript3
Raw Normal View History

2023-06-06 13:35:20 +10:00
class_name Board
extends Node2D
var round_num : int = 0
var turn_num : int = 0
var _players : Array[Player] = []
var _readied_players
func add_player(player : Player) -> void:
if not _players.has(player):
_players.append(player)
turn_started.connect(player.start_turn)
round_started.connect(player.start_round)
func end_turn():
var ready = true
for x in _players:
if x.turn_completed == false:
ready = false
if ready:
turn_num += 1
turn_started.emit()
#========== TODO ==============
#All this shit should be refactored into awaits and signals so each player goes one at a time
#The players camera should be set to the currently acting player when its not their own turn
func end_round():
turn_num = 0
pass
func _ready() -> void:
_load_workers()
_load_clients()
func draw_worker(amount : int):
return _draw_card(amount, _worker_deck, _worker_discard_deck)
func search_and_draw_worker(card : Worker) -> Worker:
var worker = _worker_deck[_worker_deck.find(card)]
_worker_deck.remove_at(_worker_deck.find(card))
return worker
func draw_client(amount):
return _draw_card(amount, _client_deck, _client_discard_deck)
func search_and_draw_client(card : Client) -> Client:
var client = _client_deck[_client_deck.find(card)]
_client_deck.remove_at(_client_deck.find(card))
return client
func discard_worker(card : Worker) -> void:
_worker_discard_deck.append(card)
func discard_client(card : Client) -> void:
_client_discard_deck.append(card)
func _draw_card(amount : int, deck, discard):
var array = []
for x in amount:
if deck.size() == 0:
if discard.size() > 0:
deck.append_array(discard)
discard = []
deck.shuffle()
else:
break
array.append(deck.pop_back())
return array