示例#1
0
        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);
        }
示例#2
0
        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;
        }