コード例 #1
0
 void IDataFactoryWriter.SetMapBlock(byte mapindex, uint id, IMapBlockData tiles)
 {
     //container_Map[mapindex].Write(id, 0, (tiles as MapBlockData).LandHeader);
     var lands = tiles.Lands.Select(t => new LandMapTileData(t)).ToArray();
     container_Map[mapindex].Write(id, 4, lands, 0, 64);
     var items = new ItemMapTileData[tiles.Items.Sum(t=>t.Length)];
     for (int i = -1, c = 0; c < 64; ++c)
         for (int e = 0; e < tiles.Items[c].Length; ++e)
             items[++i] = new ItemMapTileData((byte)c, tiles.Items[c][e]);
     container_Sta[mapindex].Write(id, 0, items, 0, (uint)items.Length);
 }
コード例 #2
0
 public MapBlockData(LandMapTileData[] lands, ItemMapTileData[][] items) : this(0, lands, items)
 {
 }
コード例 #3
0
        IMapBlockData IDataFactoryReader.GetMapBlock(byte mapindex, uint id)
        {
            var lhead = container_Map[mapindex].Read<uint>(id, 0);
            var lands = container_Map[mapindex].Read<LandMapTileData>(id, 4, 64);
            var tiles = container_Sta[mapindex].ReadAll<ItemMapTileData>(id, 0);
            var items = new ItemMapTileData[64][];
        
            if (tiles != null) {
                List<ItemMapTileData>[] tilelist = new List<ItemMapTileData>[64];
                for (int i = 0; i < 64; ++i)
                    tilelist[i] = new List<ItemMapTileData>(128);

                for (int i = 0; i < tiles.Length; ++i)
                    tilelist[(tiles[i].YOffset << 3) + tiles[i].XOffset].Add(new ItemMapTileData(tiles[i].XOffset, tiles[i].YOffset, tiles[i]));

                for (int i = 0; i < 64; ++i)
                    items[i] = tilelist[i].OrderBy(t => t.Altitude).ToArray();
            } else {
                for (int i = 0; i < 64; ++i)
                    items[i] = null;
            }
            return new MapBlockData(lhead, lands, items);
        }
コード例 #4
0
 public MapBlockData(uint header, LandMapTileData[] lands, ItemMapTileData[][] items)
 {
     _LandHeader = header;
     _Lands = new LandMapTile[64];
     _Items = new ItemMapTile[64][];
     for (int i = 0; i < 64; ++i)
     {
         _Lands[i] = new LandMapTile(lands[i].TileId, lands[i].Altitude);
         _Items[i] = new ItemMapTile[items[i].Length];
         for (int k = 0; k < items[i].Length; ++k)
             _Items[i][k] = new ItemMapTile(items[i][k].TileId, items[i][k].Palette, items[i][k].Altitude);
     }
 }