public BattleState(List<int> entitiesList) { entityIdSequence = 0; actionId = 0; turns = new List<BattleEntity>(); players = new List<int>(); spectators = new List<int>(); entities = entitiesList; arena = new BattleArena(defaultsize); currentTurn = 0; WaitingPokemonGo = true; foreach (int entityId in entitiesList) { var entity = World.Instance.VisibleEntities[entityId]; if (entity.Type == EntityType.Pokemon) { BattleEntity battleEntity = new BattleEntity(entityIdSequence++, (entity as Pokemon).PokedexId, -1, entityId); battleEntity.CurrentPos = GetRandomStartPosition(Direction.Left);//TODO turns.Add(battleEntity); } else if (entity.Type == EntityType.Player) { //TODO bord var player = entity as Player; players.Add(player.Id); foreach(BattleEntity pokemon in player.Team) { pokemon.CurrentPos = null; } } } }
public List<Position> AoeTiles(BattleEntity self, Position target, Direction dir, BattleArena arena) { var result = new List<Position>(); if (AreaOfEffect == null) { result.Add(target); return result; } int startX = Position.NormalizedPos(target.X - AreaOfEffect.MaxArea, arena.ArenaSize); int endX = Position.NormalizedPos(target.X + AreaOfEffect.MaxArea, arena.ArenaSize); int startY = Position.NormalizedPos(target.Y - AreaOfEffect.MaxArea, arena.ArenaSize); int endY = Position.NormalizedPos(target.Y + AreaOfEffect.MaxArea, arena.ArenaSize); for (int x = startX; x <= endX; x++) { for (int y = startY; y <= endY; y++) { Position origin = target; Position aoe = new Position(x, y); bool inArea = false; if (TargetType == TargetType.Position) { if (AreaOfEffect.InArea(origin, aoe)) { inArea = true; } } if (TargetType == TargetType.Directional) { if (AreaOfEffect.InArea(origin, aoe, dir)) { inArea = true; } } if (inArea) { result.Add(aoe); } } } return result; }
public List<Position> InRangeTiles(BattleEntity self, BattleArena arena) { return InRangeTiles(self, Direction.None, arena); }
public List<Position> InRangeTiles(BattleEntity self, Direction dir, BattleArena arena) { return Range.InRangeTiles(self, dir, arena); }
public List<Position> InRange2Tiles(BattleEntity self, Direction dir, BattleArena arena) { if (Range2 == null) { return new List<Position>(); } return Range2.InRangeTiles(self, dir, arena).Except(Range.InRangeTiles(self, dir, arena)).ToList(); }
public void MoveBattleEntity(BattleEntity entity, Position target) { entity.CurrentPos = new Position(target); }