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); }
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; }
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(); }
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(); }
public AutosetEditor(TilesetControl reference_set) { this.tileset = reference_set; }