protected override void OnPerform() { try { if ((mCurrentOnly) && (mSim.CreatedSim != null)) { using (CASParts.OutfitBuilder builder = new CASParts.OutfitBuilder(mSim, new CASParts.Key(mSim.CreatedSim))) { builder.Builder.RemoveParts(mTypes); } } else { ProgressDialog.Show(Responder.Instance.LocalizationModel.LocalizeString("Ui/Caption/Global:Processing", new object[0x0]), false); SavedOutfit.Cache cache = new SavedOutfit.Cache(mSim); foreach (SavedOutfit.Cache.Key outfit in cache.Outfits) { using (CASParts.OutfitBuilder builder = new CASParts.OutfitBuilder(mSim, outfit.mKey)) { builder.Builder.RemoveParts(mTypes); } } } if (mSim.CreatedSim != null) { SimOutfit currentOutfit = mSim.CreatedSim.CurrentOutfit; if (currentOutfit != null) { ThumbnailManager.GenerateHouseholdSimThumbnail(currentOutfit.Key, currentOutfit.Key.InstanceId, 0x0, ThumbnailSizeMask.Large | ThumbnailSizeMask.ExtraLarge | ThumbnailSizeMask.Medium | ThumbnailSizeMask.Small, ThumbnailTechnique.Default, true, false, mSim.AgeGenderSpecies); } } if (mPostPerform != null) { mPostPerform(); } } finally { ProgressDialog.Close(); } }
public CrossWorldData(SimDescription sim) { mName = sim.FullName; mOutfitCache = new SavedOutfit.Cache(sim); SimOutfit outfit = sim.GetOutfit(OutfitCategories.Everyday, 0); if (outfit != null) { mSkinToneKey = outfit.SkinToneKey; mSkinToneIndex = outfit.SkinToneIndex; } else { mSkinToneKey = sim.SkinToneKey; mSkinToneIndex = sim.SkinToneIndex; } mMalePreference = sim.mGenderPreferenceMale; mFemalePreference = sim.mGenderPreferenceFemale; if (sim.CreatedSim != null) { if (sim.CreatedSim.mPreviousOutfitKey != null) { try { mPreviousOutfitCategory = sim.GetOutfitCategoryFromResKey(sim.CreatedSim.mPreviousOutfitKey, out mPreviousOutfitIndex); } catch { } } if (sim.CreatedSim.DreamsAndPromisesManager != null) { ActiveDreamNode node = sim.CreatedSim.DreamsAndPromisesManager.LifetimeWishNode; if (node != null) { mLifetimeWishTally = node.InternalCount; } } } if (sim.Pregnancy != null) { mPregnantGender = sim.Pregnancy.mGender; } foreach (Trait trait in sim.TraitManager.List) { if (trait.IsReward) continue; mTraits.Add(trait.Guid); } SocialNetworkingSkill networkSkill = sim.SkillManager.GetSkill<SocialNetworkingSkill>(SkillNames.SocialNetworking); if (networkSkill != null) { // This value is set to mNumberOfBlogFollowers for some reason mNumberOfFollowers = networkSkill.mNumberOfFollowers; // Not transitioned at all mBlogsCreated = networkSkill.mBlogsCreated; } RockBand bandSkill = sim.SkillManager.GetSkill<RockBand>(SkillNames.RockBand); if (bandSkill != null) { mBandInfo = bandSkill.mBandInfo; } Collecting collecting = sim.SkillManager.GetSkill<Collecting>(SkillNames.Collecting); if (collecting != null) { // Error in CollectingPropertyStreamWriter:Export() requires that mGlowBugData by transfered manually // Exported as two Int64, but Imported as a Int64 and Int32 mGlowBugData = collecting.mGlowBugData; mMushroomsCollected = collecting.mMushroomsCollected; } NectarSkill nectar = sim.SkillManager.GetSkill<NectarSkill>(SkillNames.Nectar); if (nectar != null) { mNectarHashesMade = nectar.mHashesMade; } Photography photography = sim.SkillManager.GetSkill<Photography>(SkillNames.Photography); if (photography != null) { mSubjectRecords = photography.mSubjectRecords; } RidingSkill riding = sim.SkillManager.GetSkill<RidingSkill>(SkillNames.Riding); if (riding != null) { // Error in the Import (Copy/Paste fail by the looks of it), where the CrossCountry Wins are imported instead mCrossCountryCompetitionsWon = new List<uint>(riding.mCrossCountryCompetitionsWon); mJumpCompetitionsWon = new List<uint>(riding.mJumpCompetitionsWon); } if ((sim.OccultManager != null) && (sim.OccultManager.mOccultList != null)) { mOccult = new List<OccultBaseClass>(sim.OccultManager.mOccultList); } }
protected override bool Run(SimDescription a, SimDescription b) { SavedOutfit.Cache cache = new SavedOutfit.Cache(a); if (!ApplyAll) { mAdd = false; List<ChangeOutfit.Item> allOptions = new List<ChangeOutfit.Item>(); allOptions.Add(new ChangeOutfit.Item(new CASParts.Key(OutfitCategories.None, 0))); foreach (SavedOutfit.Cache.Key outfit in cache.Outfits) { switch (outfit.Category) { case OutfitCategories.Everyday: case OutfitCategories.Formalwear: case OutfitCategories.Sleepwear: case OutfitCategories.Swimwear: case OutfitCategories.Athletic: case OutfitCategories.Career: case OutfitCategories.Outerwear: case OutfitCategories.MartialArts: allOptions.Add(new ChangeOutfit.Item(outfit.mKey, a)); break; } } CommonSelection<ChangeOutfit.Item>.Results choices = new CommonSelection<ChangeOutfit.Item>(Name, allOptions).SelectMultiple(); if ((choices == null) || (choices.Count == 0)) return false; mTransfers.Clear(); foreach (ChangeOutfit.Item choice in choices) { if (choice.Category == OutfitCategories.None) { mTransfers.Clear(); break; } Dictionary<int, bool> indices; if (!mTransfers.TryGetValue(choice.Category, out indices)) { indices = new Dictionary<int, bool>(); mTransfers.Add(choice.Category, indices); } indices.Add(choice.Index, true); } if (TwoButtonDialog.Show( Common.Localize(GetTitlePrefix() + ":Prompt", a.IsFemale, b.IsFemale, new object[] { a, b }), Common.Localize(GetTitlePrefix() + ":Add"), Common.Localize(GetTitlePrefix() + ":Replace") )) { mAdd = true; } } SimOutfit geneOutfit = CASParts.GetOutfit(b, CASParts.sPrimary, false); foreach (SavedOutfit.Cache.Key outfit in cache.Outfits) { bool transfer = false; if (mTransfers.Count == 0) { transfer = true; } else { Dictionary<int, bool> indices; if (mTransfers.TryGetValue(outfit.Category, out indices)) { if (indices.ContainsKey(outfit.Index)) { transfer = true; } } } if (!transfer) continue; int newIndex = -1; if (!mAdd) { newIndex = outfit.Index; } using (CASParts.OutfitBuilder builder = new CASParts.OutfitBuilder(b, new CASParts.Key(outfit.Category, newIndex), geneOutfit)) { outfit.Apply(builder, false, sTypes, null); } } SpeedTrap.Sleep(); if (b.CreatedSim != null) { b.CreatedSim.RefreshCurrentOutfit(false); } return true; }