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); }
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; }
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; } }
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); }