Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
        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));
                }
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        // 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]);
            }
        }
Ejemplo n.º 5
0
//========================================================================================
// 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;
        }