Beispiel #1
0
            /// <summary>
            /// Erstellt aus der angegebenen Binär-Datei eine neue External-File-Struktur.
            /// </summary>
            /// <param name="data">Die auszulesende Binär-Datei.</param>
            /// <returns></returns>
            /// <remarks></remarks>
            public static ExternalFile FromBinary(RAMBuffer data)
            {
                // An den Anfang springen
                data.Position = 0;

                // Der Rückgabewert
                ExternalFile ret = new ExternalFile();

                // Ausnahmen abfangen für ungültige Dateien
                try
                {
                    // DRS-Dateiname
                    uint drsNameLen = data.ReadUInteger();
                    ret.DRSFile = System.Text.Encoding.ASCII.GetString(data.ReadByteArray((int)drsNameLen));

                    // Datei-ID
                    ret.FileID = data.ReadUInteger();

                    // Ressourcen-Typ
                    uint resTypeLen = data.ReadUInteger();
                    ret.ResourceType = System.Text.Encoding.ASCII.GetString(data.ReadByteArray((int)resTypeLen));

                    // Data
                    uint dataLen = data.ReadUInteger();
                    ret.Data = data.ReadByteArray((int)dataLen);
                }
                catch
                {
                    // Fehler
                    MessageBox.Show("Fehler: Das Datenobjekt konnte nicht fehlerfrei in ein ExternalFile-Objekt umgewandelt werden!", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                // Fertig
                return ret;
            }
Beispiel #2
0
        /// <summary>
        /// Gibt eine vollständige Liste aller enthaltenen Dateien zurück; dazu die Dateitypen und IDs.
        /// </summary>
        /// <remarks></remarks>
        public Dictionary<ushort, ExternalFile> GetFullContentList()
        {
            // Der Rückgabewert
            Dictionary<ushort, ExternalFile> ret = new Dictionary<ushort, ExternalFile>();

            // Der Name der DRS-Datei
            string shortName = Path.GetFileNameWithoutExtension(_filename);

            // Tabellenblöcke einzeln durchlaufen
            int i = 0;
            foreach(TableInfo aktTI in _tableInfos)
            {
                // Ressourcen-Typ
                string aktTyp = ReverseString(aktTI.ResourceType);

                // Tabelle durchlaufen
                foreach(TableEntry aktE in _tables[i].Entries)
                {
                    // Dateieigenschaften sammeln
                    ExternalFile aktFile = new ExternalFile();
                    aktFile.DRSFile = shortName;
                    aktFile.ResourceType = aktTyp;
                    aktFile.FileID = aktE.FileID;
                    aktFile.Data = _files[aktE.FileID];

                    // Datei hinzufügen
                    ret.Add((ushort)aktE.FileID, aktFile);
                }

                // Nächster
                ++i;
            }

            // Fertig
            return ret;
        }