public static NextBatterResult ConvertType(NextBatter o) { return(new NextBatterResult() { PlayerID = o.PlayerID, TeamID = o.TeamID, }); }
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); }