public ServiceResponse Start() { int currentPlayerId = 0; // Assign positions to Pieces - GamePlayerPiecePosition List <GamePlayer> gamePlayers = LudoContext.GamePlayers .Where(c => c.GameId == Game.Id).ToList(); List <GamePlayerPiecePosition> gamePlayerPiecePositions = new List <GamePlayerPiecePosition>(); foreach (GamePlayer gamePlayer in gamePlayers) { AddGamePlayerPiecePosition(gamePlayerPiecePositions, gamePlayer.PlayerId, gamePlayer.Quadrant); if (gamePlayer.Quadrant == 0) { currentPlayerId = gamePlayer.PlayerId; } } LudoContext.GamePlayerPiecePositions.AddRange(gamePlayerPiecePositions); // Change GameStatusId - Games LudoContext.Games .Single(c => c.Id == Game.Id) .GameStatusId = 2; // Create New Entry in GameProgress GameProgress gameProgress = new GameProgress { GameId = Game.Id, CurrentPlayerId = currentPlayerId, CurrentPlayerDiceRolled = false, LastActionDateTime = DateTime.Now }; LudoContext.GameProgresses.Add(gameProgress); LudoContext.DiceStacks.Add(new DiceStack { GameId = Game.Id, DiceValue1 = -1, DiceValue2 = -1, DiceValue3 = -1 }); GameDetails gameDetails = new GameDetails(Game, gamePlayers, gamePlayerPiecePositions, gameProgress); LudoContext.SaveChanges(); return(new ServiceResponse { Data = gameDetails, Messages = new List <Message>() }); }
public ServiceResponse GetGameDetails(int gameId) { Game game = LudoContext.Games.Single(c => c.Id == gameId); List <GamePlayer> gamePlayers = LudoContext.GamePlayers.Where(c => c.GameId == gameId).ToList(); List <GamePlayerPiecePosition> gamePlayerPiecePositions = LudoContext.GamePlayerPiecePositions.Where(c => c.GameId == gameId).ToList(); GameProgress gameProgress = LudoContext.GameProgresses.Single(c => c.GameId == gameId); GameDetails gameDetails = new GameDetails(game, gamePlayers, gamePlayerPiecePositions, gameProgress); return(new ServiceResponse { Data = gameDetails, Messages = new List <Message>() }); }