Esempio n. 1
0
 public static NextBatterResult ConvertType(NextBatter o)
 {
     return(new NextBatterResult()
     {
         PlayerID = o.PlayerID,
         TeamID = o.TeamID,
     });
 }
Esempio n. 2
0
        public NextBatter SaveNewGameState(BaseballGameState state, bool manualAdjustment, DataCache dataCache = null)
        {
            var nextBatterResult = new NextBatter();

            if (UserHelper.HasUpdatePermissions())
            {
                var game = GamesService.GetInstance().GetGame(state.GameID, dataCache: dataCache);
                if (!manualAdjustment)
                {
                    var atBatTeamID   = state.TopOfInning ? game.Team1ID : game.Team2ID;
                    var atBatPlayerID = state.TopOfInning ? state.Team1Player?.ID : state.Team2Player?.ID;
                    var battingOrder  = GameDataProvider.GetInstance().GetBattingOrder(state.GameID, atBatTeamID);
                    if (battingOrder.Count == 0)
                    {
                        battingOrder.Add(new DTOBattingOrder()
                        {
                            BattingOrder = 1
                        });
                    }
                    var currentBatter = battingOrder.First(bo => bo.PlayerID == atBatPlayerID);
                    var nextBatter    = battingOrder.FirstOrDefault(bo => bo.BattingOrder == currentBatter.BattingOrder + 1);
                    if (nextBatter == null)
                    {
                        nextBatter = battingOrder.First();
                    }
                    if (state.TopOfInning)
                    {
                        state.Team1Player = new PlayerBase()
                        {
                            ID = nextBatter.PlayerID
                        };
                    }
                    else
                    {
                        state.Team2Player = new PlayerBase()
                        {
                            ID = nextBatter.PlayerID
                        };
                    }
                    nextBatterResult.PlayerID = nextBatter.PlayerID;
                    nextBatterResult.TeamID   = atBatTeamID;
                }

                //Change Teams
                if (state.NumberOfOuts == 3)
                {
                    state.NumberOfOuts = 0;
                    state.TopOfInning  = !state.TopOfInning;
                    if (state.TopOfInning)
                    {
                        state.Inning++;
                    }
                    state.PlayerOnFirst  = null;
                    state.PlayerOnSecond = null;
                    state.PlayerOnThird  = null;
                    var nextAtBatTeamID = state.TopOfInning ? game.Team1ID : game.Team2ID;

                    var battingOrderNextTeam = GameDataProvider.GetInstance().GetBattingOrder(state.GameID, nextAtBatTeamID);
                    nextBatterResult.TeamID = nextAtBatTeamID;

                    var nextAtBatPlayer = state.TopOfInning ? state.Team1Player : state.Team2Player;
                    if (nextAtBatPlayer == null)
                    {
                        if (battingOrderNextTeam.Any())
                        {
                            nextBatterResult.PlayerID = battingOrderNextTeam.First().PlayerID;
                        }
                        else
                        {
                            nextBatterResult.PlayerID = null;
                        }
                    }
                    else
                    {
                        nextBatterResult.PlayerID = battingOrderNextTeam.FirstOrDefault(bo => bo.PlayerID == nextAtBatPlayer.ID).PlayerID;
                    }
                }

                GameDataProvider.GetInstance().SaveBaseballGameState(ConvertObjects.ConvertType2(state));
            }
            return(nextBatterResult);
        }