Inheritance: System.Windows.Forms.UserControl
Beispiel #1
0
        public static TilesetControl FromSprite(Spriteset sprite)
        {
            TilesetControl tc = new TilesetControl();

            foreach (Bitmap b in sprite.Images)
            {
                tc.AddTile(new Tile(b));
            }
            tc.SetTileSize((short)sprite.Images[0].Width, (short)sprite.Images[0].Height);
            return(tc);
        }
Beispiel #2
0
 public static TilesetControl FromSprite(Spriteset sprite)
 {
     TilesetControl tc = new TilesetControl();
     foreach (Bitmap b in sprite.Images) tc.AddTile(new Tile(b));
     tc.SetTileSize((short)sprite.Images[0].Width, (short)sprite.Images[0].Height);
     return tc;
 }
Beispiel #3
0
        public void LoadMap(string filename)
        {
            if (!File.Exists(filename))
            {
                return;
            }
            BinaryReader binread = new BinaryReader(File.OpenRead(filename));

            this.file_name = filename;

            // Read header data //
            string signature = new string(binread.ReadChars(4));

            header.VersionNum = binread.ReadInt16();
            binread.ReadByte();                          // obsolete
            header.LayerNum = binread.ReadByte();
            binread.ReadByte();                          // reserved
            header.EntityNum      = binread.ReadInt16();
            header.StartX         = binread.ReadInt16(); // I forgot that it saved -
            header.StartY         = binread.ReadInt16(); // with player coords.
            header.StartLayer     = binread.ReadByte();
            header.StartDirection = binread.ReadByte();
            header.StringNum      = binread.ReadInt16();
            header.ZoneNum        = binread.ReadInt16();
            binread.ReadBytes(235); // reserved

            // Read script data:
            int i = header.StringNum;

            while (i-- > 0)
            {
                short length = binread.ReadInt16();
                header.Scripts.Add(new string(binread.ReadChars(length)));
            }

            // Create layers:
            Layer lay;

            i = header.LayerNum;
            while (i-- > 0)
            {
                lay         = new Layer(binread);
                base_width  = Math.Max(base_width, lay.Width);
                base_height = Math.Max(base_height, lay.Height);
                Layers.Add(lay);
            }

            // Create entities:
            i = header.EntityNum;
            while (i-- > 0)
            {
                Entities.Add(new Entity(binread));
            }

            // Create Zones:
            Zone newzone;

            i = header.ZoneNum;
            while (i-- > 0)
            {
                newzone           = new Zone(binread);
                newzone.LayerName = "Zone: " + i;
                newzone.Deleted  += new Zone.EventHandler(myzone_Deleted);
                newzone.Enabled   = false;
                Controls.Add(newzone);
            }

            // Load Tileset:
            if (header.Scripts[0].Length == 0)
            {
                Tileset = new TilesetControl(binread);
            }
            else
            {
                Tileset = new TilesetControl(header.Scripts[0], filename);
            }
            Tileset.ParentMap = this;
            SetTileSize(Tileset.TileWidth, Tileset.TileHeight);
            _w = Layers[0].Width * twz;
            _h = Layers[0].Height * thz;

            bool remove = false;

            foreach (Layer l in Layers)
            {
                for (i = 0; i < l.Tiles.Length; ++i)
                {
                    if (l.Tiles[i] >= Tileset.Tiles.Count)
                    {
                        l.Tiles[i] = 0;
                        remove     = true;
                    }
                }
            }

            if (remove)
            {
                MessageBox.Show("Caution:\nInvalid tile references were removed. Please check for changes.");
            }

            LayerHistory.Add(CloneAllLayers());
            binread.Close();
        }
Beispiel #4
0
        public void LoadMap(string filename)
        {
            if (!File.Exists(filename)) return;
            BinaryReader binread = new BinaryReader(File.OpenRead(filename));

            this.file_name = filename;

            // Read header data //
            string signature = new string(binread.ReadChars(4));
            header.VersionNum = binread.ReadInt16();
            binread.ReadByte(); // obsolete
            header.LayerNum = binread.ReadByte();
            binread.ReadByte(); // reserved
            header.EntityNum = binread.ReadInt16();
            header.StartX = binread.ReadInt16(); // I forgot that it saved -
            header.StartY = binread.ReadInt16(); // with player coords.
            header.StartLayer = binread.ReadByte();
            header.StartDirection = binread.ReadByte();
            header.StringNum = binread.ReadInt16();
            header.ZoneNum = binread.ReadInt16();
            binread.ReadBytes(235); // reserved

            // Read script data:
            int i = header.StringNum;
            while(i-- > 0)
            {
                short length = binread.ReadInt16();
                header.Scripts.Add(new string(binread.ReadChars(length)));
            }

            // Create layers:
            Layer lay;
            i = header.LayerNum;
            while(i-- > 0)
            {
                lay = new Layer(binread);
                base_width = Math.Max(base_width, lay.Width);
                base_height = Math.Max(base_height, lay.Height);
                Layers.Add(lay);
            }

            // Create entities:
            i = header.EntityNum;
            while(i-- > 0) Entities.Add(new Entity(binread));

            // Create Zones:
            Zone newzone;
            i = header.ZoneNum;
            while(i-- > 0)
            {
                newzone = new Zone(binread);
                newzone.LayerName = "Zone: " + i;
                newzone.Deleted += new Zone.EventHandler(myzone_Deleted);
                newzone.Enabled = false;
                Controls.Add(newzone);
            }

            // Load Tileset:
            if (header.Scripts[0].Length == 0) Tileset = new TilesetControl(binread);
            else Tileset = new TilesetControl(header.Scripts[0], filename);
            Tileset.ParentMap = this;
            SetTileSize(Tileset.TileWidth, Tileset.TileHeight);
            _w = Layers[0].Width * twz;
            _h = Layers[0].Height * thz;

            bool remove = false;
            foreach (Layer l in Layers)
                for (i = 0; i < l.Tiles.Length; ++i)
                    if (l.Tiles[i] >= Tileset.Tiles.Count)
                    {
                        l.Tiles[i] = 0;
                        remove = true;
                    }

            if (remove) MessageBox.Show("Caution:\nInvalid tile references were removed. Please check for changes.");

            LayerHistory.Add(CloneAllLayers());
            binread.Close();
        }
Beispiel #5
0
 public AutosetEditor(TilesetControl reference_set)
 {
     this.tileset = reference_set;
 }