Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Loads all package Files in the directory and scans them for Name Informations
        /// </summary>
        public void LoadSimsFromFolder()
        {
            names = new Hashtable();
            if (BasePackage == null)
            {
                return;
            }

            SimPe.PackedFiles.Wrapper.Fami fami = new SimPe.PackedFiles.Wrapper.Fami(null);
            Hashtable al = new Hashtable();

            foreach (uint type in fami.AssignableTypes)
            {
                IPackedFileDescriptor[] list = BasePackage.FindFiles(type);

                foreach (IPackedFileDescriptor pfd in list)
                {
                    fami.ProcessData(pfd, BasePackage);
                    al[(ushort)pfd.Instance] = fami.Name;

                    foreach (uint simid in fami.Members)
                    {
                        Alias a = new Alias(simid, fami.Name);
                        if (!names.Contains(simid))
                        {
                            names.Add(simid, a);
                        }
                    }
                }
            }            //foreach

            ///add unlisted Sims
            foreach (SimPe.PackedFiles.Wrapper.SDesc sdesc in FileTable.ProviderRegistry.SimDescriptionProvider.SimInstance.Values)
            {
                //load extern Fami Name
                if (!names.Contains(sdesc.SimId))
                {
                    if (sdesc.Package.SaveFileName.Trim().ToLower() != BasePackage.SaveFileName.Trim().ToLower())
                    {
                        SimPe.Interfaces.Files.IPackageFile pkg = sdesc.Package;
                        if (pkg != null)
                        {
                            SimPe.Interfaces.Files.IPackedFileDescriptor pfd = pkg.FindFile(fami.AssignableTypes[0], 0, Data.MetaData.LOCAL_GROUP, sdesc.FamilyInstance);
                            if (pfd != null)
                            {
                                fami.ProcessData(pfd, pkg);
                                Alias a = new Alias(sdesc.SimId, fami.Name);
                                names.Add(sdesc.SimId, a);
                            }
                        }
                    }
                    else
                    {
                        object o = al[sdesc.FamilyInstance];
                        if (o != null)
                        {
                            Alias a = new Alias(sdesc.SimId, o.ToString());
                            names.Add(sdesc.SimId, a);
                        }
                    }
                }
            }

            al.Clear();

            /*names = new Alias[al.Count];
             * al.CopyTo(names);*/
        }