Exemplo n.º 1
0
        public static void DumpTAHEntries(Stream source)
        {
            TAHFile tah = new TAHFile(source);

            try
            {
                tah.LoadEntries();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex);
                return;
            }
            foreach (string file in tah.Files.Files)
            {
                if (Path.GetExtension(file) == ".tso")
                {
                    Console.WriteLine(file);
                }
            }
            foreach (TAHEntry ent in tah.EntrySet.Entries)
            {
                if (Path.GetExtension(ent.FileName) == ".tso")
                {
                    byte[]       data   = TAHUtil.ReadEntryData(tah.Reader, ent);
                    BinaryWriter writer = new BinaryWriter(File.Create(ent.FileName), System.Text.Encoding.Default);
                    writer.Write(data);
                    writer.Close();
                }
            }
        }
Exemplo n.º 2
0
        // TAHからファイルを読み取る.
        private byte[] getTahFile(string file)
        {
            TDCGExplorer.ArcsDatabase arcDB = TDCGExplorer.TDCGExplorer.ArcsDB;
            string filename = file.ToLower();

            byte[] filedata = null;

            List <ArcsTahFilesEntry> tahs = arcDB.GetTahFilesEntry(TDCGExplorer.TAHUtil.CalcHash(filename));

            foreach (ArcsTahFilesEntry tahfile in tahs)
            {
                if (tahfile.path.ToLower() == filename)
                {
                    ArcsTahEntry arcs = arcDB.GetTah(tahfile.tahid);
                    using (Stream file_stream = File.OpenRead(Path.Combine(TDCGExplorer.TDCGExplorer.SystemDB.arcs_path, arcs.path)))
                    {
                        TAHFile tah = new TAHFile(file_stream);
                        try
                        {
                            tah.LoadEntries();
                            foreach (TAHEntry ent in tah.EntrySet.Entries)
                            {
                                if (ent.FileName != null && ent.FileName.ToLower() == filename)
                                {
                                    filedata = TAHUtil.ReadEntryData(tah.Reader, ent);
                                    break;
                                }
                            }
                        }
                        catch (Exception)
                        {
                        }
                    }
                    break;
                }
            }
            return(filedata);
        }
Exemplo n.º 3
0
        private string FindFromZipTahs(string filename, int id)
        {
            string retval = "";

            List <ArcsTahFilesEntry> files = TDCGExplorer.TDCGExplorer.ArcsDB.GetZipTahFilesEntries(TAHUtil.CalcHash("script/" + filename + ".tbn"));

            if (files.Count > 0)
            {
                ArcsTahFilesEntry file = null;
                ArcsZipTahEntry   tah  = null;
                int pastVersion        = -1;
                foreach (ArcsTahFilesEntry subfile in files)
                {
                    ArcsZipTahEntry subtah = TDCGExplorer.TDCGExplorer.ArcsDB.GetZipTah(subfile.tahid);
                    if (subtah.version > pastVersion)
                    {
                        file        = subfile;
                        tah         = subtah;
                        pastVersion = subtah.version;
                    }
                }
                if (tah != null)
                {
                    ArcsZipArcEntry zip = TDCGExplorer.TDCGExplorer.ArcsDB.GetZip(tah.zipid);
                    if (zip != null)
                    {
                        retval = Path.GetDirectoryName(zip.path) + "\\" + zip.GetDisplayPath() + "\\" + tah.path;
                        LoadTso(new GenericZipsTahInfo(tah), file, id);
                    }
                }
            }
            return(retval);
        }
Exemplo n.º 4
0
        private string FindFromArcsTahs(string filename, int id)
        {
            string retval = "";

            List <ArcsTahFilesEntry> files = TDCGExplorer.TDCGExplorer.ArcsDB.GetTahFilesEntry(TAHUtil.CalcHash("script/" + filename + ".tbn"));

            if (files.Count > 0)
            {
                ArcsTahFilesEntry file = null;
                ArcsTahEntry      tah  = null;
                int pastVersion        = -1;
                foreach (ArcsTahFilesEntry subfile in files)
                {
                    ArcsTahEntry subtah = TDCGExplorer.TDCGExplorer.ArcsDB.GetTah(subfile.tahid);
                    if (subtah.version > pastVersion)
                    {
                        file        = subfile;
                        tah         = subtah;
                        pastVersion = subtah.version;
                    }
                }
                if (tah != null)
                {
                    retval = tah.path;
                    LoadTso(new GenericArcsTahInfo(tah), file, id);
                }
            }
            //TDCGExplorer.TDCGExplorer.FigureLoad = true;
            return(retval);
        }
Exemplo n.º 5
0
        private void assembleTsoData()
        {
            foreach (LoadTsoInfo tsoload in loadtsoinfo)
            {
                GenericTahInfo    info = tsoload.info;
                ArcsTahFilesEntry file = tsoload.file;
                int id = tsoload.id;
                try
                {
                    // tso名を取得する.
                    string tsoname;
                    using (GenericTAHStream tahstream = new GenericTAHStream(info, file))
                    {
                        using (MemoryStream memorystream = new MemoryStream())
                        {
                            ZipFileUtil.CopyStream(tahstream.stream, memorystream);
                            tsoname = TDCGTbnUtil.GetTsoName(memorystream.ToArray());
                        }
                    }

                    GenericTahInfo    tsoinfo = null;
                    ArcsTahFilesEntry tso     = null;
                    if (info.zipid < 0)
                    {// Arcsの場合
                        int                      pastVersion = -1;
                        ArcsTahEntry             tahinfo     = null;
                        List <ArcsTahFilesEntry> tsos        = TDCGExplorer.TDCGExplorer.ArcsDB.GetTahFilesEntry(TAHUtil.CalcHash(tsoname));
                        foreach (ArcsTahFilesEntry subfile in tsos)
                        {
                            ArcsTahEntry subtah = TDCGExplorer.TDCGExplorer.ArcsDB.GetTah(subfile.tahid);
                            if (subtah.version > pastVersion)
                            {
                                tso         = subfile;
                                tahinfo     = subtah;
                                pastVersion = subtah.version;
                            }
                        }
                        tsoinfo = new GenericArcsTahInfo(tahinfo);
                    }
                    else
                    {// zipの場合
                        int                      pastVersion = -1;
                        ArcsZipTahEntry          tahinfo     = null;
                        List <ArcsTahFilesEntry> tsos        = TDCGExplorer.TDCGExplorer.ArcsDB.GetZipTahFilesEntries(TAHUtil.CalcHash(tsoname));
                        foreach (ArcsTahFilesEntry subfile in tsos)
                        {
                            ArcsZipTahEntry subtah = TDCGExplorer.TDCGExplorer.ArcsDB.GetZipTah(subfile.tahid);
                            if (subtah.version > pastVersion)
                            {
                                tso         = subfile;
                                tahinfo     = subtah;
                                pastVersion = subtah.version;
                            }
                        }
                        tsoinfo = new GenericZipsTahInfo(tahinfo);
                    }
                    if (tsoinfo != null && tso != null)
                    {
                        // TSOを読み込む
                        using (GenericTAHStream tahstream = new GenericTAHStream(tsoinfo, tso))
                        {
                            using (MemoryStream memorystream = new MemoryStream())
                            {
                                ZipFileUtil.CopyStream(tahstream.stream, memorystream);
                                PNGTsoData tsodata = new PNGTsoData();
                                tsodata.tsoID   = (uint)id;
                                tsodata.tsodata = memorystream.ToArray();
                                tsoDataList.Add(tsodata);
                            }
                        }
                    }
                }
                catch (Exception)
                {
                }
            }
        }