public bool ImportResource(ErpResource resource, string[] files) { var fragmentsImported = 0; foreach (var f in files) { var extension = Path.GetExtension(f); var name = Path.GetFileNameWithoutExtension(f); var resTextIndex = name.LastIndexOf(FragNameDelim); if (resTextIndex == -1) { continue; } var resIndex = int.Parse(name.Substring(resTextIndex + FragNameDelimLength, 3)); name = Path.GetDirectoryName(f) + "\\" + (name.Remove(resTextIndex) + extension).Replace(QEscString, "?"); if (name.EndsWith(Path.Combine(resource.Folder, resource.FileName), StringComparison.InvariantCultureIgnoreCase)) { var fragment = resource.Fragments[resIndex]; var data = File.ReadAllBytes(f); fragment.SetData(data); ++fragmentsImported; } } if (fragmentsImported == resource.Fragments.Count) { return(true); } return(false); }
private static string GetFragmentFileName(ErpResource resource, ErpFragment fragment, int fragmentIndex) { var name = resource.FileName; name = name.Replace("?", QEscString); name = Path.GetFileNameWithoutExtension(name) + FragNameDelim + fragment.Name + fragmentIndex.ToString("000") + Path.GetExtension(name); return(name); }
public ErpResourceViewModel(ErpResource resource, ResourcesWorkspaceViewModel resourceWorkspace) { this.resource = resource; this.resourceWorkspace = resourceWorkspace; fragments = new ObservableCollection <ErpFragmentViewModel>(); foreach (var fragment in resource.Fragments) { fragments.Add(new ErpFragmentViewModel(fragment)); } }
public static string GetFragmentFileName(ErpResource resource, ErpFragment fragment) { var fragmentIndex = resource.Fragments.IndexOf(fragment); if (fragmentIndex < 0) { throw new InvalidOperationException("The fragment does not belong to this resource."); } return(GetFragmentFileName(resource, fragment, fragmentIndex)); }
public override void ToResource(ErpResource resource) { Fragment0.ToFragment(resource.GetFragment("temp", 0)); Fragment1.ToFragment(resource.GetFragment("temp", 1)); ErpFragment mipsFragment = resource.TryGetFragment("mips", 0); if (mipsFragment != null) { Frag2.ToFragment(mipsFragment); } }
public override void FromResource(ErpResource resource) { Fragment0.FromFragment(resource.GetFragment("temp", 0)); Fragment1.FromFragment(resource.GetFragment("temp", 1)); ErpFragment?mipsFragment = resource.TryGetFragment("mips", 0) ?? resource.TryGetFragment("temp", 2); if (mipsFragment != null) { Frag2.FromFragment(mipsFragment); } }
public void ExportResource(ErpResource resource, string folderPath) { var outputDir = Path.Combine(folderPath, resource.Folder); Directory.CreateDirectory(outputDir); for (var i = 0; i < resource.Fragments.Count; ++i) { var fragment = resource.Fragments[i]; var fileName = GetFragmentFileName(resource, fragment, i); var filePath = Path.Combine(outputDir, fileName); using var fs = File.Open(filePath, FileMode.Create, FileAccess.Write, FileShare.Read); using var decompressStream = fragment.GetDecompressDataStream(true); decompressStream.CopyTo(fs); } }
public abstract void ToResource(ErpResource resource);
public abstract void FromResource(ErpResource resource);
public override void ToResource(ErpResource resource) { Fragment0.ToFragment(resource.GetFragment("temp", 0)); SurfaceRes.ToResource(resource.ParentFile.FindResource(Fragment0.SurfaceResourceName)); }
public override void FromResource(ErpResource resource) { Fragment0.FromFragment(resource.GetFragment("temp", 0)); SurfaceRes.FromResource(resource.ParentFile.FindEntry(Fragment0.SurfaceResourceName)); }