private GameStageInfo MapToGameStageInfo(GameStage gameStage) { var gameRound = gameStage?.CurrentGameRound; var currentPlayer = gameRound?.ExpectedActionType == ActionType.BetAction ? gameRound?.BetStage?.CurrentPlayer : gameRound?.PlayStage?.CurrentStickRound?.CurrentPlayer; var gameStageInfo = new GameStageInfo { CurrentPlayer = currentPlayer, ExpectedActionType = gameRound?.ExpectedActionType, CurrentBetActionList = gameRound?.BetStage?.BetActionList, CurrentBetResult = gameRound?.BetStage?.BetResult, StickRoundInfoList = gameRound?.PlayStage?.StickRoundList ?.Select(r => MapToStickRoundInfo(r)) .ToList(), CurrentPlayResult = gameRound?.PlayResult, RoundResultList = gameStage?.GameRoundList ?.Select(r => r.RoundResult) .ToList(), GameResult = gameStage?.GameResult }; return(gameStageInfo); }
public BoardRepresentation(GameInfo gameInfo, PlayerInfo playerInfo, GameStageInfo gameStageInfo) { GameInfo = gameInfo; PlayerInfo = playerInfo; GameStageInfo = gameStageInfo; var betResult = GameStageInfo?.CurrentBetResult; BetResultRepresentation = betResult != null ? new BetResultRepresentation(betResult) : null; var topPlayer = GameInfo.PlayerGroupInfo.GetOppositePlayer(PlayerInfo.PlayerId); var rightPlayer = GameInfo.PlayerGroupInfo.GetNextPlayer(PlayerInfo.PlayerId); var leftPlayer = GameInfo.PlayerGroupInfo.GetPreviousPlayer(PlayerInfo.PlayerId); var topCard = GameStageInfo?.CurrentStickRoundInfo?.PlayActionList ?.SingleOrDefault(a => a.PlayerInfo.PlayerId == topPlayer.PlayerId) ?.Card; var rightCard = GameStageInfo?.CurrentStickRoundInfo?.PlayActionList ?.SingleOrDefault(a => a.PlayerInfo.PlayerId == rightPlayer.PlayerId) ?.Card; var leftCard = GameStageInfo?.CurrentStickRoundInfo?.PlayActionList ?.SingleOrDefault(a => a.PlayerInfo.PlayerId == leftPlayer.PlayerId) ?.Card; var bottomCard = GameStageInfo?.CurrentStickRoundInfo?.PlayActionList ?.SingleOrDefault(a => a.PlayerInfo.PlayerId == PlayerInfo.PlayerId) ?.Card; TopCardRepresentation = topCard != null ? new CardRepresentation(topCard) : null; LeftCardRepresentation = leftCard != null ? new CardRepresentation(leftCard) : null; RightCardRepresentation = rightCard != null ? new CardRepresentation(rightCard) : null; BottomCardRepresentation = bottomCard != null ? new CardRepresentation(bottomCard) : null; }
public static GameStageInfo GetRelativeGameStageInfo(this GameStageInfo gameStageInfo, PlayerGroupInfo playerGroupInfo, string playerId) { var isCurrentTeamTeam1 = playerGroupInfo.GetTeamOfPlayer(playerId).TeamId == playerGroupInfo.Team1.TeamId; var relativePlayerGroupInfo = playerGroupInfo.GetRelativePlayerGroupInfo(playerId); var relativeGameStageInfo = (GameStageInfo)(gameStageInfo?.Clone()); if (relativeGameStageInfo.CurrentPlayer != null) { relativeGameStageInfo.CurrentPlayer = playerGroupInfo.GetRelativePlayerInfo(playerId, gameStageInfo.CurrentPlayer.PlayerId); } if (relativeGameStageInfo.CurrentBetActionList != null) { foreach (var betAction in relativeGameStageInfo.CurrentBetActionList) { betAction.PlayerInfo = playerGroupInfo.GetRelativePlayerInfo(playerId, betAction.PlayerInfo.PlayerId); } } if (relativeGameStageInfo?.CurrentBetResult?.BettingTeam != null) { relativeGameStageInfo.CurrentBetResult.BettingTeam = playerGroupInfo.GetRelativeTeamInfo(playerId, gameStageInfo.CurrentBetResult.BettingTeam.TeamId); } if (relativeGameStageInfo?.StickRoundInfoList != null) { foreach (var stickRoundInfo in relativeGameStageInfo.StickRoundInfoList) { if (stickRoundInfo?.PlayActionList != null) { foreach (var playAction in stickRoundInfo.PlayActionList) { playAction.PlayerInfo = playerGroupInfo.GetRelativePlayerInfo(playerId, playAction.PlayerInfo.PlayerId); } } if (stickRoundInfo?.StickResult?.Winner != null) { stickRoundInfo.StickResult.Winner = playerGroupInfo.GetRelativePlayerInfo(playerId, stickRoundInfo.StickResult.Winner.PlayerId); } } } if (relativeGameStageInfo?.CurrentPlayResult != null) { relativeGameStageInfo.CurrentPlayResult.PlayerGroupInfo = relativePlayerGroupInfo; if (!isCurrentTeamTeam1) { relativeGameStageInfo.CurrentPlayResult.Team1Score = gameStageInfo.CurrentPlayResult.Team2Score; relativeGameStageInfo.CurrentPlayResult.Team2Score = gameStageInfo.CurrentPlayResult.Team1Score; } } if (relativeGameStageInfo?.RoundResultList != null) { foreach (var roundResult in relativeGameStageInfo?.RoundResultList) { if (roundResult != null) { roundResult.PlayerGroupInfo = relativePlayerGroupInfo; roundResult.WinningTeam = playerGroupInfo.GetRelativeTeamInfo(playerId, roundResult.WinningTeam.TeamId); if (!isCurrentTeamTeam1) { var team1Score = roundResult.Team2FinalScore; var team2Score = roundResult.Team1FinalScore; roundResult.Team1FinalScore = team1Score; roundResult.Team2FinalScore = team2Score; } } } } if (relativeGameStageInfo?.GameResult != null) { relativeGameStageInfo.GameResult.PlayerGroupInfo = relativePlayerGroupInfo; relativeGameStageInfo.GameResult.WinningTeam = playerGroupInfo.GetRelativeTeamInfo(playerId, relativeGameStageInfo.GameResult.WinningTeam.TeamId); if (!isCurrentTeamTeam1) { var team1Score = relativeGameStageInfo.GameResult.Team2FinalScore; var team2Score = relativeGameStageInfo.GameResult.Team1FinalScore; relativeGameStageInfo.GameResult.Team1FinalScore = team1Score; relativeGameStageInfo.GameResult.Team2FinalScore = team2Score; } } return(relativeGameStageInfo); }