public IEnumerable <Player> GetPlayerFromAttackData(AttackDto data) { List <Player> attackedPlayers = new List <Player>(); var targetGameObjet = GridGenerator.Instance.GetCell(data.gridPos).cellGameObject; var colliders = Physics.OverlapSphere(targetGameObjet.transform.position, Player.Spells[data.indexSpell].Attributes.Radius.FinalValue, LayerMask.GetMask("GameplayElement")) .Where(x => x.name.Contains("Grid Cell")); foreach (var collider in colliders) { var target = GridGenerator.Instance.GetCell(collider.gameObject); var attackedPlayer = LocalPlayer.PlayerTeam.Characters.FirstOrDefault(x => x.PositionOnGrid == target.Position); if (attackedPlayer == null) { attackedPlayer = OtherPlayer.PlayerTeam.Characters.FirstOrDefault(x => x.PositionOnGrid == target.Position); } if (attackedPlayer != null) { attackedPlayers.Add(attackedPlayer); } } return(attackedPlayers); }
public AttackDto Attack() { AttackDto attackDto = new AttackDto { Damage = RandomNumberProvider.GetNumber(15) + 25, ShouldBreakDefence = RandomNumberProvider.GetNumber(4) == 0 }; return(attackDto); }
private void RaiseEventPhoton(int indexSpell, Vector2Int posGridToAttack) { byte evCode = (byte)ConnectorPhoton.EventCode.EvSpell; var attackData = new AttackDto(posGridToAttack, indexSpell); string content = JsonUtility.ToJson(attackData); bool reliable = true; PhotonNetwork.RaiseEvent(evCode, content, reliable, new RaiseEventOptions() { CachingOption = EventCaching.DoNotCache, Receivers = ReceiverGroup.All }); }
public async Task <ActionResult <AttackResultDto> > AttackShip([FromBody] AttackDto attackDto) { try { var result = await _battleShipService.AttackShip(attackDto); return(Ok(result)); } catch (NotFoundException ex) { return(NotFound(ex.Message)); } catch (Exception ex) { return(BadRequest(ex)); } }
public static IAttack ToDomainObject(this AttackDto dto) { return(new Attack { Accuracy = dto.Accuracy, AdditionalEffects = dto.AdditionalEffects != null ? dto.AdditionalEffects.Select(x => x.ToDomainObject()).ToList() : null, BoostStats = dto.BoostStats, TypeID = (ElementalType)dto.TypeID, ID = dto.ID, IsSpecial = dto.IsSpecial, Level = dto.Level, Name = dto.Name, Power = dto.Power }); }
public async Task <AttackResultDto> AttackShip(AttackDto attackDto) { var player = await _battleShipDbContext.Players.FindAsync(attackDto.PlayerId); if (player == null) { throw new NotFoundException(nameof(Player), attackDto.PlayerId); } var board = await _battleShipDbContext.Boards.FindAsync(attackDto.BoardId); if (board == null) { throw new NotFoundException(nameof(Board), attackDto.BoardId); } var coordinate = await _battleShipDbContext.BattleShipCoordinates.Where(x => x.BattleShip.Board == board) .Where(x => x.X == attackDto.X && x.Y == attackDto.Y).FirstOrDefaultAsync(); // When miss happens if (coordinate == null) { return new AttackResultDto() { X = attackDto.X, Y = attackDto.Y, IsHit = false } } ; // When hit happens if (!coordinate.IsHit) { coordinate.IsHit = true; await _battleShipDbContext.SaveChangesAsync(); } return(new AttackResultDto() { X = coordinate.X, Y = coordinate.Y, IsHit = coordinate.IsHit }); } }
public async Task <AttackDto> GetAttackDto(int userId) { var currentPlayer = await _dbContext.Players .Include(p => p.City) .Include(p => p.Army) .ThenInclude(a => a.Squads) .ThenInclude(s => s.SquadUnits) .ThenInclude(su => su.Unit) .Include(p => p.Game) .Where(p => p.UserId == userId) .SingleOrDefaultAsync(); var players = await _dbContext.Players .Include(p => p.City) .Include(p => p.User) .Where(p => p.GameId == currentPlayer.Game.Id && p.Id != currentPlayer.Id) .ToListAsync(); var defendingSquad = currentPlayer.Army.Squads .Where(s => s.CityId == currentPlayer.City.Id) .SingleOrDefault(); var attackDto = new AttackDto { Players = new List <PlayerMainPropertiesDto>() }; attackDto.FreeUnits = _squadService.GetUnitListDto(defendingSquad); foreach (var player in players) { attackDto.Players.Add(new PlayerMainPropertiesDto { Id = player.City.Id, UserName = player.User.UserName, CityName = player.City.Name }); } return(attackDto); }
public async Task <AttackResultDto> AttackShip(AttackDto attackDto) { return(await _shipRepo.AttackShip(attackDto)); }