예제 #1
0
        bool importFile(string filename, TGIN tgin, bool useName, bool rename, bool compress, DuplicateHandling dups, bool select)
        {
            IResourceKey rk      = (TGIBlock)tgin;
            string       resName = tgin.ResName;
            bool         nmOK    = true;
            MemoryStream ms      = new MemoryStream();
            BinaryWriter w       = new BinaryWriter(ms);
            BinaryReader r       = new BinaryReader(new FileStream(filename, FileMode.Open, FileAccess.Read));

            w.Write(r.ReadBytes((int)r.BaseStream.Length));
            r.Close();
            w.Flush();

            if (useName && resName != null && resName.Length > 0)
            {
                nmOK = browserWidget1.ResourceName(rk.Instance, resName, true, rename);
            }

            IResourceIndexEntry rie = NewResource(rk, ms, dups, compress);

            if (rie != null)
            {
                browserWidget1.Add(rie, select);
            }
            return(nmOK);
        }
예제 #2
0
            public TGIN ToTGIN()
            {
                uint  type     = TypeID;
                uint  group    = GroupID;
                ulong instance = InstanceID;

                if (Type != null)
                {
                    type = uint.Parse(Type, NumberStyles.HexNumber);
                }

                if (Group != null)
                {
                    group = uint.Parse(Group, NumberStyles.HexNumber);
                }

                if (Instance != null)
                {
                    instance = ulong.Parse(Instance, NumberStyles.HexNumber);
                }

                TGIN tginObject = new TGIN {
                    ResType     = type,
                    ResGroup    = group,
                    ResInstance = instance
                };

                if (Name != null)
                {
                    tginObject.ResName = Name;
                }

                return(tginObject);
            }
 private void UpdateTGIN()
 {
     if (internalchg)
     {
         return;
     }
     details             = new TGIN();
     details.ResType     = cbType.Value;
     details.ResGroup    = ResourceGroup;
     details.ResInstance = Instance;
     details.ResName     = ResourceName;
 }
예제 #4
0
        public static void AddFiles(IPackage package, List <string> sourceFilePaths)
        {
            List <TGIN> addedResourceKeys = new List <TGIN>();

            for (int sourceFilePathIndex = 0; sourceFilePathIndex < sourceFilePaths.Count; sourceFilePathIndex++)
            {
                string sourceInfoFilePath = sourceFilePaths[sourceFilePathIndex] + "." + SourceInfoFileExtension;

                TGIN targetResourceKeyTGIN = Path.GetFileName(sourceFilePaths[sourceFilePathIndex]);

                if (File.Exists(sourceInfoFilePath))
                {
                    try {
                        SourceInfo sourceInfo = (SourceInfo)Tools.ReadXML <SourceInfo>(sourceInfoFilePath);
                        targetResourceKeyTGIN = sourceInfo.ToTGIN();
                    } catch (Exception e) {
                        Console.Error.Write("Failed to read source info file.\n" + sourceInfoFilePath + "\n" + e.ToString());
                    }
                }

                AResourceKey targetResourceKey = targetResourceKeyTGIN;

                MemoryStream sourceStream       = new MemoryStream();
                BinaryWriter sourceStreamWriter = new BinaryWriter(sourceStream);

                using (BinaryReader sourceFileReader = new BinaryReader(new FileStream(sourceFilePaths[sourceFilePathIndex], FileMode.Open, FileAccess.Read))) {
                    sourceStreamWriter.Write(sourceFileReader.ReadBytes((int)sourceFileReader.BaseStream.Length));
                    sourceStreamWriter.Flush();
                }

                IResourceIndexEntry targetPreviousEntry = package.Find(targetResourceKey.Equals);

                while (targetPreviousEntry != null)
                {
                    package.DeleteResource(targetPreviousEntry);
                    targetPreviousEntry = package.Find(targetResourceKey.Equals);
                }

                IResourceIndexEntry targetEntry = package.AddResource(targetResourceKey, sourceStream, false);

                if (targetEntry == null)
                {
                    continue;
                }

                targetEntry.Compressed = 23106;
                addedResourceKeys.Add(targetResourceKeyTGIN);
            }

            GenerateNameMap(package, addedResourceKeys, null);
        }
 private void FillPanel()
 {
     internalchg = true;
     try
     {
         details         = this.tbFilename.Text;
         cbType.Value    = details.ResType;
         tbGroup.Text    = "0x" + details.ResGroup.ToString("X8");
         tbInstance.Text = "0x" + details.ResInstance.ToString("X16");
         tbName.Text     = details.ResName;
         btnOK.Enabled   = btnOKCanEnable;
     }
     finally { internalchg = false; }
 }
예제 #6
0
        public static void RemoveFiles(IPackage package, List <string> fileNames)
        {
            List <TGIN> removedResourceKeys = new List <TGIN>();

            for (int fileNameIndex = 0; fileNameIndex < fileNames.Count; fileNameIndex++)
            {
                TGIN         targetResourceKeyTGIN = fileNames[fileNameIndex];
                AResourceKey targetResourceKey     = targetResourceKeyTGIN;

                IResourceIndexEntry targetPreviousEntry = package.Find(targetResourceKey.Equals);

                while (targetPreviousEntry != null)
                {
                    package.DeleteResource(targetPreviousEntry);
                    targetPreviousEntry = package.Find(targetResourceKey.Equals);
                }

                removedResourceKeys.Add(targetResourceKeyTGIN);
            }

            GenerateNameMap(package, null, removedResourceKeys);
        }