public bool LoadTileSheets() { string[] files = null; try { files = Directory.GetFiles(Constants.Paths.TileDirectory); } catch (Exception e) { System.Diagnostics.Debug.WriteLine("Exception while reading directory: " + e.Message); return(false); } if (files != null) { foreach (string file in files) { if (file.EndsWith(".jts", StringComparison.OrdinalIgnoreCase)) { TileSheet newTileSheet = TileSheet.ReadFromFile(file); if (newTileSheet != null) { try { TileContent.Load <Texture2D>(newTileSheet.TextureKey); } catch (ContentLoadException e) { System.Diagnostics.Debug.WriteLine("Error while reading file" + newTileSheet.TextureKey + ": " + e.Message); Exit(); } TileSheets.Add(newTileSheet.TextureKey, newTileSheet); newTileSheet.GetTexture = GetTileSheet; } } } } return(true); }
public void Load(Stream stream) { using (BinaryReader reader = new BinaryReader(stream)) { if (new string(reader.ReadChars(6)) != "tBIN10") { throw new Exception("File is not a tbin file."); } Id = ReadStringAndLength(reader); Description = ReadStringAndLength(reader); Properties = ReadProperties(reader); int count = reader.ReadInt32(); for (int i = 0; i < count; ++i) { TileSheets.Add(ReadTileSheet(reader)); } count = reader.ReadInt32(); for (int i = 0; i < count; ++i) { Layers.Add(ReadLayer(reader)); } } }
public void Close() { if (!ProjectLoaded) { return; } Rooms.Clear(); DoorSets.Clear(); Doors.Clear(); ScrollSets.Clear(); PlmSets.Clear(); ScrollPlmDatas.Clear(); Backgrounds.Clear(); Fxs.Clear(); SaveStations.Clear(); LevelDatas.Clear(); EnemySets.Clear(); EnemyGfxs.Clear(); ScrollAsms.Clear(); DoorAsms.Clear(); SetupAsms.Clear(); MainAsms.Clear(); TileSets.Clear(); TileTables.Clear(); TileSheets.Clear(); Palettes.Clear(); AreaMaps.Clear(); PlmTypes.Clear(); EnemyTypes.Clear(); CurrentRom = null; ProjectPath = String.Empty; RomFileName = String.Empty; ProjectFileName = String.Empty; RoomTiles.Clear(); MapTiles.Clear(); BackgroundImage = null; ChangesMade = false; ProjectLoaded = false; ProjectClosed?.Invoke(this, null); }
// Read all tile sheets from ROM. private void ReadTileSheets(Rom rom) { List <int> addressesPC = new List <int> (); foreach (TileSet t in TileSets) { int address = Tools.LRtoPC(t.SceSheetPtr); if (address != 0) // Skip invalid addresses { addressesPC.Add(address); } } Tools.RemoveDuplicates(addressesPC); TileSheets.Clear(); TileSheets.Add(new CompressedTileSheet()); TileSheets [0].ReadFromROM(rom, TileSheet.CreAddressPC); for (int n = 0; n < addressesPC.Count; n++) { TileSheets.Add(new CompressedTileSheet()); TileSheets [n + 1].ReadFromROM(rom, addressesPC [n]); } }
//======================================================================================== // Object management - tools. private void DeleteData(Data data) { if (data is IReferenceable refdata) { refdata.DetachAllReferences(); } switch (data) { case Room d: Rooms.Remove(d); break; case DoorSet d: DoorSets.Remove(d); break; case Door d: Doors.Remove(d); break; case ScrollSet d: ScrollSets.Remove(d); break; case PlmSet d: PlmSets.Remove(d); break; case ScrollPlmData d: ScrollPlmDatas.Remove(d); break; case Background d: Backgrounds.Remove(d); break; case Fx d: Fxs.Remove(d); break; case SaveStation d: SaveStations.Remove(d); break; case LevelData d: LevelDatas.Remove(d); break; case EnemySet d: EnemySets.Remove(d); break; case EnemyGfx d: EnemyGfxs.Remove(d); break; case ScrollAsm d: ScrollAsms.Remove(d); break; case Asm d: DoorAsms.Remove(d); SetupAsms.Remove(d); MainAsms.Remove(d); break; case TileSet d: TileSets.Remove(d); break; case TileTable d: TileTables.Remove(d); break; case TileSheet d: TileSheets.Remove(d); break; case Palette d: Palettes.Remove(d); break; case AreaMap d: AreaMaps.Remove(d); break; default: break; } ChangesMade = true; }