protected override void Perform(SimDescription sim, CASParts.Key outfitKey, CASParts.Key displayKey) { CASParts.Key currentKey = new CASParts.Key(sim.CreatedSim); if (outfitKey == currentKey) { return; } switch (outfitKey.mCategory) { case OutfitCategories.Everyday: case OutfitCategories.Athletic: case OutfitCategories.Formalwear: case OutfitCategories.Swimwear: case OutfitCategories.Sleepwear: case OutfitCategories.Career: case OutfitCategories.Outerwear: // Don't allow the user to remove the last of a category if (sim.GetOutfitCount(outfitKey.mCategory) == 1) { return; } break; } CASParts.RemoveOutfit(sim, outfitKey, false); }
public void Restore(SimDescription sim) { try { sim.mGenderPreferenceMale = mMalePreference; sim.mGenderPreferenceFemale = mFemalePreference; if (sim.Pregnancy != null) { sim.Pregnancy.mGender = mPregnantGender; } if (sim.CreatedSim != null) { if (mPreviousOutfitCategory != OutfitCategories.None) { SimOutfit outfit = sim.GetOutfit(mPreviousOutfitCategory, mPreviousOutfitIndex); if (outfit != null) { sim.CreatedSim.mPreviousOutfitKey = outfit.Key; } } if (sim.CreatedSim.DreamsAndPromisesManager != null) { ActiveDreamNode node = sim.CreatedSim.DreamsAndPromisesManager.LifetimeWishNode; if (node != null) { node.InternalCount = mLifetimeWishTally; } } } foreach (TraitNames trait in mTraits) { if (sim.TraitManager.HasElement(trait)) { continue; } sim.TraitManager.AddElement(trait); } SocialNetworkingSkill networkSkill = sim.SkillManager.GetSkill <SocialNetworkingSkill>(SkillNames.SocialNetworking); if (networkSkill != null) { networkSkill.mNumberOfFollowers = mNumberOfFollowers; networkSkill.mBlogsCreated = mBlogsCreated; } RockBand bandSkill = sim.SkillManager.GetSkill <RockBand>(SkillNames.RockBand); if (bandSkill != null) { bandSkill.mBandInfo = mBandInfo; } Collecting collecting = sim.SkillManager.GetSkill <Collecting>(SkillNames.Collecting); if (collecting != null) { collecting.mGlowBugData = mGlowBugData; collecting.mMushroomsCollected = mMushroomsCollected; } NectarSkill nectar = sim.SkillManager.GetSkill <NectarSkill>(SkillNames.Nectar); if (nectar != null) { nectar.mHashesMade = mNectarHashesMade; } Photography photography = sim.SkillManager.GetSkill <Photography>(SkillNames.Photography); if (photography != null) { // Forces a recalculation of the completion count // photography.mCollectionsCompleted = uint.MaxValue; photography.mCollectionsCompleted = mCollectionsCompleted; if (mSubjectRecords != null) { photography.mSubjectRecords = mSubjectRecords; } if (mStyleRecords != null) { photography.mStyleRecords = mStyleRecords; } if (mSizeRecords != null) { photography.mSizeRecords = mSizeRecords; } } RidingSkill riding = sim.SkillManager.GetSkill <RidingSkill>(SkillNames.Riding); if (riding != null) { if (mCrossCountryCompetitionsWon != null) { riding.mCrossCountryCompetitionsWon = mCrossCountryCompetitionsWon.ToArray(); } if (mJumpCompetitionsWon != null) { riding.mJumpCompetitionsWon = mJumpCompetitionsWon.ToArray(); } } Bartending mixology = sim.SkillManager.GetSkill <Bartending>(SkillNames.Bartending); if (mixology != null) { if (mCustomDrinks != null) { mixology.mUniqueDrinks = mCustomDrinks; } } if (mOccult != null) { foreach (OccultBaseClass occult in mOccult) { if (OccultTypeHelper.Add(sim, occult.ClassOccultType, false, false)) { OccultTransfer transfer = OccultTransfer.Get(occult.ClassOccultType); if (transfer != null) { transfer.Perform(sim, occult); } } } } mOccult = null; if (mOutfitCache != null) { foreach (SavedOutfit.Cache.Key outfit in mOutfitCache.Outfits) { using (CASParts.OutfitBuilder builder = new CASParts.OutfitBuilder(sim, outfit.mKey, false)) { builder.Builder.SkinTone = mSkinToneKey; builder.Builder.SkinToneIndex = mSkinToneIndex; outfit.Apply(builder, true, null, null); } } foreach (SavedOutfit.Cache.Key outfit in mOutfitCache.AltOutfits) { using (CASParts.OutfitBuilder builder = new CASParts.OutfitBuilder(sim, outfit.mKey, true)) { builder.Builder.SkinTone = mSkinToneKey; builder.Builder.SkinToneIndex = mSkinToneIndex; outfit.Apply(builder, true, null, null); } } int count = 0; int originalCount = mOutfitCache.GetOutfitCount(OutfitCategories.Everyday, false); while ((originalCount > 0) && (originalCount < sim.GetOutfitCount(OutfitCategories.Everyday)) && (count < originalCount)) { CASParts.RemoveOutfit(sim, new CASParts.Key(OutfitCategories.Everyday, sim.GetOutfitCount(OutfitCategories.Everyday) - 1), false); count++; } } } catch (Exception e) { Common.Exception(sim, e); } }