49 lines
1.3 KiB
GDScript3
49 lines
1.3 KiB
GDScript3
|
class_name DraftState
|
||
|
extends State
|
||
|
|
||
|
|
||
|
func confirm_draft():
|
||
|
if player.selected_for_draft.size() != player.draft_limit:
|
||
|
return
|
||
|
match(player.draft):
|
||
|
player.DraftType.HIRE_WORKER, player.DraftType.STARTING_HAND:
|
||
|
for card in player.selected_for_draft:
|
||
|
player.add_to_hand(card)
|
||
|
player.workers.append(card)
|
||
|
player.shown_for_draft.remove_at(player.shown_for_draft.find(card))
|
||
|
for card in player.shown_for_draft:
|
||
|
card.position = Vector2(9999, 9999)
|
||
|
player.board.discard_worker(card)
|
||
|
match(fsm.history[-1]):
|
||
|
fsm.FSMState.SETUP, fsm.FSMState.MANAGEMENT:
|
||
|
fsm.change_state(fsm.FSMState.MANAGEMENT)
|
||
|
player.draft_completed.emit()
|
||
|
|
||
|
|
||
|
func cancel_draft():
|
||
|
match(player.draft):
|
||
|
player.DraftType.HIRE_WORKER, player.DraftType.STARTING_HAND:
|
||
|
for card in player.shown_for_draft:
|
||
|
card.visible = false
|
||
|
card.set_process(false)
|
||
|
player.board.discard_worker(player.board.search_and_draw_worker(card))
|
||
|
match(fsm.history[-1]):
|
||
|
fsm.FSMState.SETUP, fsm.FSMState.MANAGEMENT:
|
||
|
fsm.change_state(fsm.FSMState.MANAGEMENT)
|
||
|
player.draft_completed.emit()
|
||
|
|
||
|
|
||
|
func enter():
|
||
|
self.visible = true
|
||
|
$Label.text = "Choose " + str(player.draft_limit) + " cards"
|
||
|
match(player.draft):
|
||
|
player.DraftType.HIRE_WORKER:
|
||
|
$CancelDraft.visible = true
|
||
|
player.DraftType.STARTING_HAND:
|
||
|
$CancelDraft.visible = false
|
||
|
|
||
|
|
||
|
func exit():
|
||
|
self.visible = false
|
||
|
|