/// <summary> /// Show the Graph /// </summary> /// <param name="pkg"></param> /// <param name="fileindex"></param> /// <remarks>Do not run twice</remarks> public void BuildGraph(SimPe.Interfaces.Files.IPackageFile pkg, SimPe.Interfaces.Scenegraph.IScenegraphFileIndex fileindex) { gc.BeginUpdate(); gc.Clear(); gc.SaveBounds = false; gc.AutoSize = true; this.coords.Clear(); this.names.Clear(); if (WaitingScreen.Running) { WaitingScreen.UpdateMessage("Scaning MMAT Tree"); } SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(Data.MetaData.MMAT); foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in pfds) { AddItem(pfd, pkg, null, fileindex); } if (WaitingScreen.Running) { WaitingScreen.UpdateMessage("Scaning CRES Tree"); } pfds = pkg.FindFiles(Data.MetaData.CRES); foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in pfds) { AddItem(pfd, pkg, null, fileindex); } gc.AutoSize = false; gc.SaveBounds = true; gc.EndUpdate(); }
public override void SetFromPackage(SimPe.Interfaces.Files.IPackageFile pkg) { if (pkg == null) { objd = null; ClearScreen(); return; } //this is a regular Object? if (pkg.FindFiles(Data.MetaData.OBJD_FILE).Length > 0) { cpf = null; base.SetFromPackage(pkg); return; } objd = null; foreach (uint t in xtypes) { SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(t); if (pfds.Length > 0) { cpf = new SimPe.PackedFiles.Wrapper.Cpf(); cpf.ProcessData(pfds[0], pkg); break; } } UpdateXObjScreen(); }
public SimPe.Cache.PackageType GetType(SimPe.Interfaces.Files.IPackageFile pkg) { if (pkg.FindFiles(Data.MetaData.IDNO).Length != 0) { return(SimPe.Cache.PackageType.Neighborhood); } if (pkg.FindFiles(Data.MetaData.HOUS).Length != 0) { return(SimPe.Cache.PackageType.Lot); } return(SimPe.Cache.PackageType.Unknown); }
public SimPe.Cache.PackageType GetType(SimPe.Interfaces.Files.IPackageFile pkg) { if (pkg.FindFiles(0xCCCEF852).Length != 0) { return(SimPe.Cache.PackageType.Sim); //Facial Structure } if (pkg.FindFiles(0xAC598EAC).Length != 0) { return(SimPe.Cache.PackageType.Sim); //Age Data } return(SimPe.Cache.PackageType.Unknown); }
/// <summary> /// Add Resources referenced from 3IDR Files /// </summary> /// <param name="names"></param> public void AddFrom3IDR(SimPe.Interfaces.Files.IPackageFile pkg) { SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(Data.MetaData.REF_FILE); foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in pfds) { SimPe.Plugin.RefFile re = new RefFile(); re.ProcessData(pfd, pkg); foreach (SimPe.Interfaces.Files.IPackedFileDescriptor p in re.Items) { SimPe.Interfaces.Scenegraph.IScenegraphFileIndexItem[] items = FileTable.FileIndex.FindFile(p, null); foreach (SimPe.Interfaces.Scenegraph.IScenegraphFileIndexItem item in items) { try { SimPe.Plugin.GenericRcol sub = new GenericRcol(null, false); sub.ProcessData(item); LoadReferenced(this.modelnames, this.exclude, files, itemlist, sub, item, true, setup); } catch (Exception ex) { if (Helper.DebugMode) { Helper.ExceptionMessage("", ex); } } } } } }
void DeleteFamMembers(uint inst, uint guid, SimPe.Interfaces.Files.IPackageFile pkg, SimPe.PackedFiles.Wrapper.ExtSDesc victim) { SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(0x46414D49); foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in pfds) { SimPe.PackedFiles.Wrapper.Fami f = new SimPe.PackedFiles.Wrapper.Fami(null); f.ProcessData(pfd, pkg); ArrayList list = new ArrayList(); foreach (uint i in f.Members) { if (i != guid) { list.Add(i); } } f.Members = new uint[list.Count]; list.CopyTo(f.Members); f.SynchronizeUserData(); } }
private bool IsReallyEnabled(SimPe.Interfaces.Files.IPackedFileDescriptor pfd, SimPe.Interfaces.Files.IPackageFile package) { if (System.IO.File.Exists(DefaultCareerFile)) { return(true); } if (package == null) { System.Windows.Forms.MessageBox.Show("You do not have a package open and the Default Career File was not found."); return(false); } Interfaces.Files.IPackedFileDescriptor[] globals = package.FindFiles(Data.MetaData.GLOB_FILE); if (globals.Length == 1) { SimPe.Plugin.Glob glob = new SimPe.Plugin.Glob(); glob.ProcessData(globals[0], package); if (glob.SemiGlobalName == "JobDataGlobals") { return(true); } } System.Windows.Forms.MessageBox.Show("This package does not contain a career."); return(false); }
void DeleteRelations(uint inst, uint guid, SimPe.Interfaces.Files.IPackageFile pkg, SimPe.PackedFiles.Wrapper.ExtSDesc victim) { SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(Data.MetaData.SIM_DESCRIPTION_FILE); foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in pfds) { if (pfd.Instance == inst) { continue; } ArrayList list = new ArrayList(); SimPe.PackedFiles.Wrapper.ExtSDesc sdsc = new SimPe.PackedFiles.Wrapper.ExtSDesc(); sdsc.ProcessData(pfd, pkg); foreach (uint i in sdsc.Relations.SimInstances) { if (i != inst) { list.Add((ushort)i); } } if (list.Count < sdsc.Relations.SimInstances.Length) { sdsc.Relations.SimInstances = new ushort[list.Count]; list.CopyTo(sdsc.Relations.SimInstances); sdsc.SynchronizeUserData(); } } }
public static SimPe.Cache.ObjectCacheItem ObjectCacheItemFromPackage(SimPe.Interfaces.Files.IPackageFile pkg) { SimPe.Cache.ObjectCacheItem oci = new SimPe.Cache.ObjectCacheItem(); oci.Class = SimPe.Cache.ObjectClass.Object; SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(Data.MetaData.OBJD_FILE); bool first = true; foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in pfds) { SimPe.Interfaces.Scenegraph.IScenegraphFileIndexItem[] items = FileTable.FileIndex.FindFile(pfd, pkg); foreach (SimPe.Interfaces.Scenegraph.IScenegraphFileIndexItem item in items) { if (first || item.FileDescriptor.Instance == 0x41A7 || item.FileDescriptor.Instance == 0x41AF) { oci.Tag = item; oci.Useable = false; ObjectConsumer.DoConsume(oci, null, Helper.WindowsRegistry.LanguageCode); first = false; } } } return(oci); }
/// <summary> /// Find the GMND that is referencing the passed gmdc /// </summary> /// <param name="gmdc"></param> /// <param name="flname">null, or the Filename of a package to search in</param> /// <returns>null or the found gmnd</returns> public Rcol FindReferencingGMND(Rcol gmdc, string flname) { if (gmdc == null) { return(null); } SimPe.Interfaces.Files.IPackageFile lpackage = package; if (flname != null) { lpackage = SimPe.Packages.File.LoadFromFile(flname); } Interfaces.Files.IPackedFileDescriptor[] pfds = lpackage.FindFiles(0x7BA3838C); foreach (Interfaces.Files.IPackedFileDescriptor pfd in pfds) { Rcol rcol = new GenericRcol(null, false); rcol.ProcessData(pfd, lpackage); foreach (Interfaces.Files.IPackedFileDescriptor rpfd in rcol.ReferencedFiles) { if ((gmdc.FileDescriptor.Group == rpfd.Group) && (gmdc.FileDescriptor.Instance == rpfd.Instance) && (gmdc.FileDescriptor.SubType == rpfd.SubType) && (gmdc.FileDescriptor.Type == rpfd.Type)) { return(rcol); } } } return(null); }
/// <summary> /// Find the SHPE that is referencing the passed GMND /// </summary> /// <param name="gmnd"></param> /// <param name="flname">null, or the Filename of a package to search in</param> /// <returns>null or the first found shpe</returns> public Rcol FindReferencingSHPE(Rcol gmnd, string flname) { if (gmnd == null) { return(null); } SimPe.Interfaces.Files.IPackageFile lpackage = package; if (flname != null) { lpackage = SimPe.Packages.File.LoadFromFile(flname); } Interfaces.Files.IPackedFileDescriptor[] pfds = lpackage.FindFiles(0xFC6EB1F7); foreach (Interfaces.Files.IPackedFileDescriptor pfd in pfds) { Rcol rcol = new GenericRcol(null, false); rcol.ProcessData(pfd, lpackage); Shape shp = (Shape)rcol.Blocks[0]; foreach (ShapeItem i in shp.Items) { if (Hashes.StripHashFromName(i.FileName).Trim().ToLower() == Hashes.StripHashFromName(gmnd.FileName).Trim().ToLower()) { return(rcol); } } } return(null); }
/// <summary> /// Loads Slave TXMTs by name Replacement /// </summary> /// <param name="pkg">the package File with the base TXMTs</param> /// <param name="slaves">The Hashtable holding als Slave Subsets</param> public static void AddSlaveTxmts(SimPe.Interfaces.Files.IPackageFile pkg, Hashtable slaves) { ArrayList files = new ArrayList(); ArrayList items = new ArrayList(); SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(Data.MetaData.TXMT); foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in pfds) { GenericRcol rcol = new GenericRcol(null, false); rcol.ProcessData(pfd, pkg); if (rcol.FileDescriptor.Type == Data.MetaData.TXMT) { AddSlaveTxmts(new ArrayList(), new ArrayList(), files, items, rcol, slaves); } } foreach (GenericRcol rcol in files) { if (pkg.FindFile(rcol.FileDescriptor) == null) { rcol.FileDescriptor = rcol.FileDescriptor.Clone(); rcol.SynchronizeUserData(); pkg.Add(rcol.FileDescriptor); } } }
protected void GetObjd(SimPe.Interfaces.Files.IPackageFile pkg) { SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(Data.MetaData.OBJD_FILE); if (pfds.Length > 0) { foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in pfds) { SimPe.PackedFiles.Wrapper.ExtObjd mobjd = new SimPe.PackedFiles.Wrapper.ExtObjd(); mobjd.ProcessData(pfd, pkg); nfo.AddGuid(mobjd.Guid); if (objd == null) { objd = mobjd; } if (pfds.Length == 1) { break; } if (mobjd.Data.Length > 0xb) { if (mobjd.Data[0xb] == -1) { objd = mobjd; } } } } }
public SimPe.Cache.PackageType GetType(SimPe.Interfaces.Files.IPackageFile pkg) { if (pkg.FindFiles(Data.MetaData.OBJD_FILE).Length == 0) { return(SimPe.Cache.PackageType.Unknown); } if (pkg.FindFiles(0x484F5553).Length > 0) { return(SimPe.Cache.PackageType.Lot); //HOUS Resources } if (pkg.FindFilesByGroup(Data.MetaData.CUSTOM_GROUP).Length > 0) { return(SimPe.Cache.PackageType.Object); } else { return(SimPe.Cache.PackageType.MaxisObject); } }
void DeleteRes(uint type, uint inst, uint guid, SimPe.Interfaces.Files.IPackageFile pkg, SimPe.PackedFiles.Wrapper.ExtSDesc victim) { SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(type); foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in pfds) { if (pfd.Instance == inst) { pfd.MarkForDelete = true; } } }
protected void SetImage(uint type, SimPe.Interfaces.Files.IPackageFile pkg) { SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(type); if (pfds.Length > 0) { SimPe.PackedFiles.Wrapper.Picture pic = new SimPe.PackedFiles.Wrapper.Picture(); pic.ProcessData(pfds[0], pkg); nfo.Image = pic.Image; } nfo.KnockoutThumbnail = false; }
/// <summary> /// Return all Modelnames that can be found in this package /// </summary> /// <param name="pkg">The Package you want to scan</param> /// <returns>a list of Modelnames</returns> public static string[] FindModelNames(SimPe.Interfaces.Files.IPackageFile pkg) { ArrayList names = new ArrayList(); Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFile(Data.MetaData.STRING_FILE, 0, 0x85); if (pfds.Length > 0) { foreach (Interfaces.Files.IPackedFileDescriptor pfd in pfds) { SimPe.PackedFiles.Wrapper.Str str = new SimPe.PackedFiles.Wrapper.Str(); str.ProcessData(pfd, pkg); foreach (SimPe.PackedFiles.Wrapper.StrToken item in str.Items) { string mname = Hashes.StripHashFromName(item.Title.Trim().ToLower()); if (!mname.EndsWith("_cres")) { mname += "_cres"; } if ((mname != "") && (!names.Contains(mname))) { names.Add(mname); } } } } pfds = pkg.FindFiles(Data.MetaData.MMAT); if (pfds.Length > 0) { foreach (Interfaces.Files.IPackedFileDescriptor pfd in pfds) { SimPe.PackedFiles.Wrapper.Cpf cpf = new SimPe.PackedFiles.Wrapper.Cpf(); cpf.ProcessData(pfd, pkg); string mname = Hashes.StripHashFromName(cpf.GetSaveItem("modelName").StringValue.Trim().ToLower()); if (!mname.EndsWith("_cres")) { mname += "_cres"; } if ((mname != "") && (!names.Contains(mname))) { names.Add(mname); } } } string[] ret = new string[names.Count]; names.CopyTo(ret); return(ret); }
protected void SetName(uint type, SimPe.Interfaces.Files.IPackageFile pkg) { SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(type); if (pfds.Length > 0) { SimPe.PackedFiles.Wrapper.StrItemList items = Downloads.DefaultTypeHandler.GetCtssItems(pfds[0], pkg); if (items.Length > 0) { nfo.Name = items[0].Title; } } }
/// <summary> /// Will return a Hashtable (key = subset name) of ArrayLists (slave subset names) /// </summary> /// <param name="pkg"></param> /// <returns></returns> public static Hashtable GetSlaveSubsets(SimPe.Interfaces.Files.IPackageFile pkg) { Hashtable map = new Hashtable(); SimPe.Interfaces.Files.IPackedFileDescriptor[] gmnds = pkg.FindFiles(Data.MetaData.GMND); foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in gmnds) { SimPe.Plugin.GenericRcol gmnd = new GenericRcol(null, false); gmnd.ProcessData(pfd, pkg); GetSlaveSubsets(gmnd, map); } return(map); }
void DeleteSRels(uint inst, uint guid, SimPe.Interfaces.Files.IPackageFile pkg, SimPe.PackedFiles.Wrapper.ExtSDesc victim) { SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(Data.MetaData.RELATION_FILE); foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in pfds) { uint up = (pfd.Instance & 0xFFFF0000) >> 16; uint low = (pfd.Instance & 0x0000FFFFF); if (up == inst || low == inst) { pfd.MarkForDelete = true; } } }
/// <summary> /// Find the Modelname of the Original Object /// </summary> /// <param name="package">The Package containing the Data</param> /// <returns>The Modelname</returns> public static string FindMainOldName(SimPe.Interfaces.Files.IPackageFile package) { Interfaces.Files.IPackedFileDescriptor[] pfds = package.FindFiles(Data.MetaData.STRING_FILE); foreach (Interfaces.Files.IPackedFileDescriptor pfd in pfds) { if (pfd.Instance == 0x85) { SimPe.PackedFiles.Wrapper.Str str = new SimPe.PackedFiles.Wrapper.Str(); str.ProcessData(pfd, package); SimPe.PackedFiles.Wrapper.StrItemList sil = str.LanguageItems(1); if (sil.Length > 1) { return(sil[1].Title); } else if (str.Items.Length > 1) { return(str.Items[1].Title); } } } pfds = package.FindFiles(0x4C697E5A); foreach (Interfaces.Files.IPackedFileDescriptor pfd in pfds) { SimPe.PackedFiles.Wrapper.Cpf cpf = new SimPe.PackedFiles.Wrapper.Cpf(); cpf.ProcessData(pfd, package); if (cpf.GetSaveItem("modelName").StringValue.Trim() != "") { return(cpf.GetSaveItem("modelName").StringValue.Trim()); } } return("SimPE"); }
/// <summary> /// Return al Hashtable (subset) of Hashtable (family) of ArrayLists (mmat Files) specifiying all available Material Overrides /// </summary> /// <param name="pkg">The package you want to scan</param> /// <returns>The Hashtable</returns> public static Hashtable GetMMATMap(SimPe.Interfaces.Files.IPackageFile pkg) { if (pkg == null) { return(new Hashtable()); } SimPe.Interfaces.Files.IPackedFileDescriptor[] mmats = pkg.FindFiles(Data.MetaData.MMAT); Hashtable ht = new Hashtable(); foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in mmats) { SimPe.Plugin.MmatWrapper mmat = new MmatWrapper(); mmat.ProcessData(pfd, pkg); string subset = mmat.GetSaveItem("subsetName").StringValue.Trim().ToLower(); string family = mmat.GetSaveItem("family").StringValue; //get the available families Hashtable families = null; if (!ht.ContainsKey(subset)) { families = new Hashtable(); ht[subset] = families; } else { families = (Hashtable)ht[subset]; } //get listing of the current Family ArrayList list = null; if (!families.ContainsKey(family)) { list = new ArrayList(); families[family] = list; } else { list = (ArrayList)families[family]; } //add the MMAT File list.Add(mmat); } return(ht); }
/// <summary> /// Loads the ModelNames of the Objects referenced in all tsMaterialsMeshName Block /// </summary> /// <param name="pkg"></param> /// <param name="delete">true, if the tsMaterialsMeshName Blocks should get cleared</param> /// <returns>A List of Modelnames</returns> public static string[] LoadParentModelNames(SimPe.Interfaces.Files.IPackageFile pkg, bool delete) { if (WaitingScreen.Running) { WaitingScreen.UpdateMessage("Loading Parent Modelnames"); } ArrayList list = new ArrayList(); Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(Data.MetaData.GMND); foreach (Interfaces.Files.IPackedFileDescriptor pfd in pfds) { Rcol rcol = new GenericRcol(null, false); rcol.ProcessData(pfd, pkg); foreach (IRcolBlock irb in rcol.Blocks) { if (irb.BlockName.Trim().ToLower() == "cdatalistextension") { DataListExtension dle = (DataListExtension)irb; if (dle.Extension.VarName.Trim().ToLower() == "tsmaterialsmeshname") { foreach (ExtensionItem ei in dle.Extension.Items) { string mname = ei.String.Trim().ToLower(); if (mname.EndsWith("_cres")) { mname += "_cres"; } if (!list.Contains(mname)) { list.Add(mname); } } dle.Extension.Items = new ExtensionItem[0]; rcol.SynchronizeUserData(); break; } } } } string[] ret = new string[list.Count]; list.CopyTo(ret); return(ret); }
protected override void SetName(SimPe.Interfaces.Files.IPackageFile pkg) { SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(Data.MetaData.CTSS_FILE); if (pfds.Length > 0) { SimPe.PackedFiles.Wrapper.StrItemList items = Downloads.DefaultTypeHandler.GetCtssItems(pfds[0], pkg); if (items.Length > 0) { nfo.Name = items[0].Title; } if (items.Length > 1) { nfo.Description = items[1].Title; } } }
protected void GetCpf(SimPe.Interfaces.Files.IPackageFile pkg) { foreach (uint t in xtypes) { SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(t); foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in pfds) { cpf = new SimPe.PackedFiles.Wrapper.Cpf(); cpf.ProcessData(pfd, pkg); SimPe.PackedFiles.Wrapper.CpfItem item = cpf.GetItem("guid"); if (item != null) { nfo.AddGuid(item.UIntegerValue); } } } }
void DeleteMemories(uint inst, uint guid, SimPe.Interfaces.Files.IPackageFile pkg, SimPe.PackedFiles.Wrapper.ExtSDesc victim) { SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(0x4E474248); foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in pfds) { SimPe.Plugin.Ngbh n = new Ngbh(null); n.ProcessData(pfd, pkg); SimPe.Plugin.Collections.NgbhSlots slots = new SimPe.Plugin.Collections.NgbhSlots(n, Data.NeighborhoodSlots.Sims); foreach (NgbhSlot s in n.Sims) { if (s.SlotID != inst) { slots.Add(s); SimPe.Plugin.Collections.NgbhItems list = new SimPe.Plugin.Collections.NgbhItems(s); foreach (NgbhItem i in s.ItemsA) { if (i.SimID != guid && i.SimInstance != inst && i.OwnerInstance != inst) { list.Add(i); } } s.ItemsA = list; list = new SimPe.Plugin.Collections.NgbhItems(s); foreach (NgbhItem i in s.ItemsB) { if (i.SimID != guid && i.SimInstance != inst && i.OwnerInstance != inst) { list.Add(i); } } s.ItemsB = list; } } n.Sims = slots; n.SynchronizeUserData(); } }
protected override void SetImage(SimPe.Interfaces.Files.IPackageFile pkg) { SimPe.Interfaces.Files.IPackedFileDescriptor pfd = pkg.FindFile(0x856DDBAC, 0, Data.MetaData.LOCAL_GROUP, 0x35CA0002); if (pfd == null) { SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(0x856DDBAC); if (pfds.Length > 0) { pfd = pfds[0]; } } if (pfd != null) { SimPe.PackedFiles.Wrapper.Picture pic = new SimPe.PackedFiles.Wrapper.Picture(); pic.ProcessData(pfd, pkg); nfo.Image = pic.Image; } nfo.KnockoutThumbnail = false; }
public override void SetFromPackage(SimPe.Interfaces.Files.IPackageFile pkg) { ClearScreen(); if (pkg == null) { objd = null; return; } //this is a regular Object? if (pkg.FindFiles(Data.MetaData.OBJD_FILE).Length > 0) { cpf = null; base.SetFromPackage(pkg); return; } objd = null; GetCpf(pkg); UpdateXObjScreen(pkg, false); }
void DeleteFamilyTies(uint inst, uint guid, SimPe.Interfaces.Files.IPackageFile pkg, SimPe.PackedFiles.Wrapper.ExtSDesc victim) { SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(0x8C870743); foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in pfds) { SimPe.PackedFiles.Wrapper.FamilyTies ft = new SimPe.PackedFiles.Wrapper.FamilyTies(null); ft.ProcessData(pfd, pkg); ArrayList sims = new ArrayList(); foreach (SimPe.PackedFiles.Wrapper.Supporting.FamilyTieSim fts in ft.Sims) { if (fts.Instance != inst) { sims.Add(fts); ArrayList items = new ArrayList(); foreach (SimPe.PackedFiles.Wrapper.Supporting.FamilyTieItem fti in fts.Ties) { if (fti.Instance != inst) { items.Add(fti); } } fts.Ties = new SimPe.PackedFiles.Wrapper.Supporting.FamilyTieItem[items.Count]; items.CopyTo(fts.Ties); } } SimPe.PackedFiles.Wrapper.Supporting.FamilyTieSim[] fsims = new SimPe.PackedFiles.Wrapper.Supporting.FamilyTieSim[sims.Count]; sims.CopyTo(fsims); ft.Sims = fsims; ft.SynchronizeUserData(); } }
public SimPe.Cache.PackageType GetType(SimPe.Interfaces.Files.IPackageFile pkg) { if (pkg.FindFiles(Data.MetaData.TXMT).Length == 0) { return(SimPe.Cache.PackageType.Unknown); } if (pkg.FindFiles(Data.MetaData.OBJD_FILE).Length != 0) { return(SimPe.Cache.PackageType.Unknown); } if (pkg.FindFiles(Data.MetaData.GZPS).Length != 0) { return(SimPe.Cache.PackageType.Unknown); } if (pkg.FindFiles(0xCCA8E925).Length != 0) { return(SimPe.Cache.PackageType.Unknown); //Object XML } if (pkg.FindFiles(Data.MetaData.REF_FILE).Length != 0) { return(SimPe.Cache.PackageType.Unknown); } foreach (uint type in Data.MetaData.RcolList) { if (type == Data.MetaData.TXMT) { continue; } if (type == Data.MetaData.TXTR) { continue; } if (type == Data.MetaData.LIFO) { continue; } if (pkg.FindFiles(type).Length != 0) { return(SimPe.Cache.PackageType.Unknown); } } return(SimPe.Cache.PackageType.Recolor); }