コード例 #1
0
        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);
        }
コード例 #2
0
        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;
        }
コード例 #3
0
        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);
        }