public void GeneratorPieces() { Game game = GetGame(activeGameId); NavyBattlePiece piece; for (int i = 0; i < 100; i++) { piece = new NavyBattlePiece(); // není to stále jen ten jeden dílek - je jich 100 piece.State = BattlePieceState.Water; piece.GameId = activeGameId; piece.UserId = activeUserId; piece.PosX = i % 10; piece.PosY = i / 10; _db.NavyBattlePieces.Add(piece); } _db.SaveChanges(); //tohle nemůže fungovat - musí se na to jinak... var shipPieces = _db.NavyBattlePieces.AsEnumerable().Where(sP => sP.PosX == _rnd.Next(1, 10) && sP.PosY == _rnd.Next(1, 10) && sP.GameId == activeGameId).ToList(); foreach (var shipPiece in shipPieces) { shipPiece.State = BattlePieceState.Ship; } _db.SaveChanges(); }
public string AddShipColorManagement(int navyBattlePieceId) { NavyBattlePiece battlePiece = _db.NavyBattlePieces.Where(p => p.Id == navyBattlePieceId).SingleOrDefault(); // nevim jak tohle funguje takže nevim jestli to tu vubec ma bejt switch (battlePiece.PieceState) { case PieceState.Ship: return("black"); case PieceState.Margin: return("white"); default: return(""); } }
public void PlaceShips(int?navyBattlePieceId) { if (navyBattlePieceId == null) { return; } NavyBattlePiece battlePiece = _db.NavyBattlePieces.Where(p => p.Id == navyBattlePieceId).SingleOrDefault(); Game currentgame = GetCurrentGame(); UserGame activeUserGame = _db.UserGames.Where(m => m.UserId == currentgame.PlayerOnTurnId && m.GameId == currentgame.GameId).AsNoTracking().SingleOrDefault(); string activeUserId = GetActiveUserId(); UserGame ShootersGame = _db.UserGames.Where(u => u.UserId == activeUserId && u.GameId == currentgame.GameId) .Include(u => u.Game) .AsNoTracking().SingleOrDefault(); PieceState newState; switch (battlePiece.PieceState) { case PieceState.Ship: newState = PieceState.Water; battlePiece.Hidden = true; break; case PieceState.Water: newState = PieceState.Ship; battlePiece.Hidden = true; break; default: newState = battlePiece.PieceState; break; } battlePiece.PieceState = newState; _db.SaveChanges(); }
public string Fire(int?navyBattlePieceId) { //TODO - podmínky pro střelbu string result = " "; if (navyBattlePieceId == null) { return(result); } NavyBattlePiece battlePiece = _db.NavyBattlePieces.Include(x => x.UserGame).Where(p => p.Id == navyBattlePieceId).SingleOrDefault(); Game currentgame = GetCurrentGame(); UserGame activeUserGame = _db.UserGames.Include(x => x.NavyBattlePieces).Where(m => m.UserId == currentgame.PlayerOnTurnId && m.GameId == currentgame.GameId).AsNoTracking().SingleOrDefault(); string activeUserId = GetActiveUserId(); UserGame ShootersGame = _db.UserGames.Where(u => u.UserId == activeUserId && u.GameId == currentgame.GameId) .Include(u => u.Game) .AsNoTracking().SingleOrDefault(); IList <NavyBattlePiece> UnhittedPieces = _db.NavyBattlePieces.Where(u => u.UserGameId == battlePiece.UserGameId && u.PieceState == PieceState.Ship).ToList(); User hittedPlayer = _db.Users.Where(u => u.Id == battlePiece.UserGame.UserId).FirstOrDefault(); if (UnhittedPieces.Count() < 1) { //result = $"Zničil jsi poslední loď {hittedPlayer.UserName} a vyhrál jsi!"; //hittedPlayer. = PlayerState.Loser; //_db.Users.Update(hittedPlayer); currentgame.GameState = GameState.End; //_db.Games.Update(ShootersGame.Game); _db.SaveChanges(); } if (currentgame.GameState == GameState.End) { return("Konec hry!"); } else { currentgame.GameState = GameState.Battle; _db.SaveChanges(); if (battlePiece.UserGameId == ShootersGame.Id) { return("Nemůžeš střílet do své lodě"); } if (battlePiece.PieceState == PieceState.DeadShip) { return("Tato loď je již trefená"); } if (battlePiece.PieceState == PieceState.DeadWater) { return("Tuto vodu jsi již trefil"); } //if (activeUserId != currentgame.PlayerOnTurnId) //{ // return "Nejsi na řadě"; //} else { PieceState newState; switch (battlePiece.PieceState) { case PieceState.Ship: newState = PieceState.DeadShip; battlePiece.Hidden = false; result = "Trefil jsi loď!"; break; case PieceState.Water: newState = PieceState.DeadWater; battlePiece.Hidden = false; result = "Trefil jsi vodu"; break; default: newState = battlePiece.PieceState; battlePiece.Hidden = false; break; } battlePiece.PieceState = newState; _db.SaveChanges(); } } return(result); }