Example #1
0
        private DungeonMap ParseMapDefinition(BinaryReader r)
        {
            var m = new DungeonMap();

            m.GlobalDataOffset = r.ReadUInt16();

            r.ReadUInt16(); //dungeon II only
            r.ReadUInt16(); //unused

            m.OffsetX = r.ReadByte();
            m.OffsetY = r.ReadByte();

            ushort dimensionData = r.ReadUInt16();

            m.Height = ((dimensionData >> 11) & fiveBitsMask) + 1;
            m.Width  = ((dimensionData >> 6) & fiveBitsMask) + 1;

            ushort graphicCountData = r.ReadUInt16();

            m.FloorDecorationGraphicsCount = (graphicCountData >> 12) & fourBitsMask;
            m.FloorGraphicsCount           = (graphicCountData >> 8) & fourBitsMask;
            m.WallDecorationGraphicsCount  = (graphicCountData >> 4) & fourBitsMask;
            m.WallGraphicsCount            = graphicCountData & fourBitsMask;

            ushort diffData = r.ReadUInt16();

            m.Difficulty          = diffData >> 12;
            m.CreatureTypeCount   = (diffData >> 4) & fourBitsMask;
            m.DoorDecorationCount = diffData & fourBitsMask;

            ushort doorIndicesData = r.ReadUInt16();

            m.DoorType0 = (DoorType)((doorIndicesData >> 12) & fourBitsMask);
            m.DoorType1 = (DoorType)((doorIndicesData >> 8) & fourBitsMask);
            m.WallSet   = (doorIndicesData >> 4) & fourBitsMask;
            m.FloorSet  = doorIndicesData & fourBitsMask;

            return(m);
        }
Example #2
0
 private static void a(DungeonMap map, DungeonData data)
 {
     //from i in map.Tiles.SelectMany(x => x.GetItems(data)) where i.GetType() == typeof(WeaponItem) && ((WeaponItem)i).ItemTypeIndex == 9 select i
     for (int i = 0; i < map.Tiles.Count; i++)
     {
         foreach (var k in map.Tiles[i].GetItems(data))
             if (k.GetType() == typeof(WeaponItemData) && ((WeaponItemData)k).ItemTypeIndex == 9)
             {
                 Console.WriteLine("{0} | {1} {2} ", i, i / map.Height, i % map.Height);
                 break;
             }
     }
 }
Example #3
0
 public IEnumerable<TileInfo<TileData>> GetNeigbourTiles(Point position, DungeonMap map)
 {
     return MapDirection.AllSides.Select(side =>
     {
         var p = position + side.RelativeShift;
         return new TileInfo<TileData>
         {
             Position = p,
             Tile = map[p.X, p.Y]
         };
     });
 }
Example #4
0
        private DungeonMap ParseMapDefinition(BinaryReader r)
        {
            var m = new DungeonMap();

            m.GlobalDataOffset = r.ReadUInt16();

            r.ReadUInt16(); //dungeon II only
            r.ReadUInt16(); //unused

            m.OffsetX = r.ReadByte();
            m.OffsetY = r.ReadByte();

            ushort dimensionData = r.ReadUInt16();

            m.Height = ((dimensionData >> 11) & fiveBitsMask) + 1;
            m.Width = ((dimensionData >> 6) & fiveBitsMask) + 1;

            ushort graphicCountData = r.ReadUInt16();

            m.FloorDecorationGraphicsCount = (graphicCountData >> 12) & fourBitsMask;
            m.FloorGraphicsCount = (graphicCountData >> 8) & fourBitsMask;
            m.WallDecorationGraphicsCount = (graphicCountData >> 4) & fourBitsMask;
            m.WallGraphicsCount = graphicCountData & fourBitsMask;

            ushort diffData = r.ReadUInt16();
            m.Difficulty = diffData >> 12;
            m.CreatureTypeCount = (diffData >> 4) & fourBitsMask;
            m.DoorDecorationCount = diffData & fourBitsMask;

            ushort doorIndicesData = r.ReadUInt16();
            m.DoorType = (DoorType)((doorIndicesData >> 12) & fourBitsMask);
            m.DoorType0Index = (doorIndicesData >> 8) & fourBitsMask;

            //TODO
            return m;
        }