public List <BlueprintOccupiedTile> GetOccupiedTiles(WorldRotation order) { if (OccupiedTilesDirty) { OccupiedTiles.Clear(); foreach (var tile in IsometricTileIterator.Tiles(order, 0, 0, (short)Width, (short)Height)) { var offset = GetOffset(tile.TileX, tile.TileY); var hasFloor = Floor[offset] != null; var hasObject = Objects[offset] != null && Objects[offset].Objects.Count > 0; if (hasFloor || hasObject) { var inst = new BlueprintOccupiedTile(); inst.TileX = tile.TileX; inst.TileY = tile.TileY; if (hasFloor) { inst.Type |= BlueprintOccupiedTileType.FLOOR; } if (hasObject) { inst.Type |= BlueprintOccupiedTileType.OBJECT; } OccupiedTiles.Add(inst); } } OccupiedTilesOrder = order; OccupiedTilesDirty = false; } /** Has rotation changed? **/ if (order != OccupiedTilesOrder) { /** Re-sort **/ OccupiedTiles.Sort(new IsometricTileSorter <BlueprintOccupiedTile>(order)); OccupiedTilesOrder = order; } return(OccupiedTiles); }
public List<BlueprintOccupiedTile> GetOccupiedTiles(WorldRotation order) { if (OccupiedTilesDirty){ OccupiedTiles.Clear(); foreach (var tile in IsometricTileIterator.Tiles(order, 0, 0, (short)Width, (short)Height)) { var offset = GetOffset(tile.TileX, tile.TileY); var hasFloor = Floor[offset] != null; var hasObject = Objects[offset] != null && Objects[offset].Objects.Count > 0; if (hasFloor || hasObject) { var inst = new BlueprintOccupiedTile(); inst.TileX = tile.TileX; inst.TileY = tile.TileY; if (hasFloor){ inst.Type |= BlueprintOccupiedTileType.FLOOR; } if (hasObject){ inst.Type |= BlueprintOccupiedTileType.OBJECT; } OccupiedTiles.Add(inst); } } OccupiedTilesOrder = order; OccupiedTilesDirty = false; } /** Has rotation changed? **/ if (order != OccupiedTilesOrder){ /** Re-sort **/ OccupiedTiles.Sort(new IsometricTileSorter<BlueprintOccupiedTile>(order)); OccupiedTilesOrder = order; } return OccupiedTiles; }