// DeactivatePlayer gets the received player and marks it as inactive // because the player has left the game. All player's // assets are returned to its respective origin sets. If the deactivated player was in // his/her turn, turn passes to the next player. func (g *Game) DeactivatePlayer(pl interfaces.Player) { pl.Deactivate() pl.RemoveCash(pl.Cash()) g.tileset.Add(pl.Tiles()) for _, corp := range g.Corporations() { if pl.Shares(corp) > 0 { corp.AddStock(pl.Shares(corp)) pl.RemoveShares(corp, pl.Shares(corp)) } } if len(g.activePlayers()) < 3 { g.stateMachine.ToInsufficientPlayers() return } for i := range g.players { if g.players[i] == pl && g.currentPlayerNumber == i { g.endTurn() return } } }