Witcher 3 Gwent card game AI class

below an example of how the game controller states flow


Timestamp 0.378737: GFX - [FSM] Switching from: , to:Initializing
Timestamp 0.41285: GFX - [FSM] Switching from: Initializing, to:Tutorials
Timestamp 0.41285: //TODO Implement Tutorials
Timestamp 0.612851: GFX - [FSM] Switching from: Tutorials, to:SpawnLeaders
Timestamp 0.612851: GFX ##########################################################
Timestamp 0.612851: GFX -#AI#-----------------------------------------------------------------------------------------------------
Timestamp 0.612851: GFX -#AI#----------------------------- NEW GWINT GAME ------------------------------------
Timestamp 0.612851: GFX -#AI#-----------------------------------------------------------------------------------------------------
Timestamp 0.612851: GFX ====== Adding card with instance ID: 1, to List ID: LEADER, for player: 0
Timestamp 0.612851: Leader Player 0 ID is 1001
Timestamp 0.612851: GFX ====== Adding card with instance ID: 2, to List ID: LEADER, for player: 1
Timestamp 0.612851: Leader Player 1 ID is 2001
Timestamp 0.812852: GFX - [FSM] Switching from: SpawnLeaders, to:CoinToss
Timestamp 0.812852: GFX - Flip coin logic, player1 faction: 3 , player2 faction:2
Timestamp 0.812852: CoinToss result is 1
Timestamp 0.812852: Player 1 starts! gwint_player_will_go_first_message | coin_flip_loss
Timestamp 1.012853: GFX - [FSM] Switching from: CoinToss, to:Mulligan
Timestamp 1.012853: //TODO Implement Mulligan
Timestamp 1.212856: GFX - [FSM] Switching from: Mulligan, to:RoundStart
Timestamp 1.412858: GFX - [FSM] Switching from: RoundStart, to:PlayerTurn
Timestamp 1.412858: GFX -#AI# starting player turn for player: 1
Timestamp 1.412858: [gwint_opponent_turn_start_message]] | Opponents_turn

Some details: player 0 is human and player 1 is AI. Player 0 is Northern Kingdom faction and player 1 is Nilfgaard. In this example the AI wins the coin toss and game controller finite state machine hands over to the AI finite state machine, coming soon.

I skipped Tutorial and Mulligan states for now, because they are visual/interactive and am currently interested in the AI finite state machine flow.