示例#1
0
        public static bool HMembers_ExportContent(Household.Members _this, ResKeyTable resKeyTable, ObjectIdTable objIdTable, IPropertyStreamWriter writer)
        {
            if (_this == null)
            {
                throw new NullReferenceException();
            }
            // writer.WriteInt32(3921240069u, _this.Count);
            oerew = false;
            uint num = 0u;

            foreach (SimDescription allSimDescription in _this.AllSimDescriptionList)
            {
                if (string.IsNullOrEmpty(allSimDescription.mFirstName) && string.IsNullOrEmpty(allSimDescription.mLastName))
                {
                    continue;
                }
                if (!Nra.NFinalizeDeath.SD_OutfitsIsValid2(allSimDescription, true))
                {
                    continue;
                }

                var allCreatedSim = allSimDescription.CreatedSim;
                if (allCreatedSim != null)
                {
                    if (allCreatedSim.ObjectId.mValue == 0 ||
                        !Nra.NFinalizeDeath.GameObjectIsValid(allCreatedSim.ObjectId.mValue) ||
                        allCreatedSim.mSimDescription != allSimDescription)
                    {
                        allSimDescription.mSim = null;
                    }
                }


                try // fix
                {
                    bool needFix = false;
                    if (allSimDescription.mTraitManager == null)
                    {
                        allSimDescription.mTraitManager = new TraitManager();
                        allSimDescription.mTraitManager.mSimDescription = allSimDescription;
                        needFix = true;
                    }
                    if (allSimDescription.SkillManager == null)
                    {
                        allSimDescription.SkillManager = new Sims3.Gameplay.Skills.SkillManager(allSimDescription);
                        allSimDescription.SkillManager.mSimDescription = allSimDescription;
                        needFix = true;
                    }
                    if (allSimDescription.mGenealogy == null)
                    {
                        allSimDescription.mGenealogy      = new Genealogy(allSimDescription);
                        allSimDescription.mGenealogy.mSim = allSimDescription;
                        needFix = true;
                    }
                    if (allSimDescription.CareerManager == null)
                    {
                        allSimDescription.CareerManager = new Sims3.Gameplay.Careers.CareerManager(allSimDescription);
                        allSimDescription.CareerManager.mSimDescription = allSimDescription;
                        needFix = true;
                    }
                    if (allSimDescription.VisaManager == null)
                    {
                        allSimDescription.VisaManager = new Sims3.Gameplay.Visa.VisaManager(allSimDescription);
                        needFix = true;
                    }
                    else
                    {
                        allSimDescription.VisaManager.mSimDescription = allSimDescription;
                    }

                    if (allSimDescription.CelebrityManager == null)
                    {
                        allSimDescription.CelebrityManager = new Sims3.Gameplay.CelebritySystem.CelebrityManager(allSimDescription.SimDescriptionId);
                        needFix = true;
                    }

                    if (needFix)
                    {
                        allSimDescription.Fixup();
                    }

                    if (needFix && allSimDescription.CelebrityManager == null)
                    {
                        allSimDescription.Fixup();
                    }

                    if (allSimDescription.CelebrityManager == null)
                    {
                        if (Nra.NFinalizeDeath.IsOpenDGSInstalled)
                        {
                            break;
                        }
                        if (!oerew)
                        {
                            Nra.NFinalizeDeath.AssertX(false, "allSimDescription.CelebrityManager == null\nST:\n" + Nra.NDebugger.GetCurrentStackLite());
                            oerew = true;
                        }

                        if (!NiecMod.Nra.BimDesc.DoneECMK)
                        {
                            continue;
                        }
                    }
                }
                catch (Exception)
                {
                    //allSimDescription.Dispose();
                    //continue; check game crash
                }


                uint keyData = num++;
                IPropertyStreamWriter writerChild = writer.CreateChild(keyData);
                // custom  14:49 12/10/2019
                try
                {
                    if (allSimDescription.ExportContent(resKeyTable, objIdTable, writerChild))
                    {
                        writer.CommitChild();
                    }
                    else
                    {
                        writer.CancelChild(keyData);
                    }
                }
                catch (StackOverflowException) { throw; }
                catch (ResetException) { throw; }
                catch (Exception)
                {
                    writer.CancelChild(keyData);
                }
            }
            writer.WriteInt32(3921240069u, (int)num);
            return(true);
        }