protected override void OnPerform() { if (mSim.Posture != null) { mSim.Posture.PreviousPosture = null; } if (mSim.SimDescription.AgingState == null) { if (mSim.SimDescription.AgingEnabled) { AgingManager.Singleton.AddSimDescription(mSim.SimDescription); } else { mSim.SimDescription.AgingState = new AgingState(mSim.SimDescription); } } if (mSim.InteractionQueue != null) { mSim.InteractionQueue.CancelAllInteractions(); } if ((mSim.BuffManager != null) && (mSim.BuffManager.HasTransformBuff())) { mSim.BuffManager.RemoveAllElements(); } using (DreamCatcher.HouseholdStore store = new DreamCatcher.HouseholdStore(mSim.Household, false)) { AgingManager.Singleton.AgeTransitionWithoutCake(mSim); } }
public override void Apply() { try { List <SimDescription> allSims = new List <SimDescription>(); if (mSourceSimList != null) { foreach (KeyValuePair <ISimDescription, bool> pair in mSourceSimList) { SimDescription sim = pair.Key as SimDescription; if (sim == null) { continue; } allSims.Add(sim); } } if (mTargetSimList != null) { foreach (KeyValuePair <ISimDescription, bool> pair in mTargetSimList) { SimDescription sim = pair.Key as SimDescription; if (sim == null) { continue; } allSims.Add(sim); } } using (DreamCatcher.HouseholdStore store = new DreamCatcher.HouseholdStore(allSims, Mover.Settings.mDreamCatcher)) { try { SplitMergeHouseholds += OnMerge; base.Apply(); } catch (Exception e) { Common.Exception("Apply", e); } finally { SplitMergeHouseholds -= OnMerge; ProgressDialog.Close(); } } } catch (ExecutionEngineException) { } }
protected RestartTask(Sim selectedActor, int count) { mSelectedActor = selectedActor; mCount = count; if (mSelectedActor != null) { mStore = new DreamCatcher.HouseholdStore(mSelectedActor.Household, true); } }
public static bool ActivateSimScreenMaskedFuncFromHousehold(PlayFlowModel ths, Household selectedHousehold, Lot selectedLot) { if ((selectedHousehold == null) || (selectedLot == null)) { return(false); } using (DreamCatcher.HouseholdStore store = new DreamCatcher.HouseholdStore(selectedHousehold, Mover.Settings.mDreamCatcher)) { Camera.SetMapViewActiveLotMode(true); LotManager.LockActiveLot(selectedLot); // Custom DreamCatcher.Task.PrepareToBecomeActiveHousehold(selectedHousehold); Sim sim = BinCommon.ActivateSim(selectedHousehold, selectedLot); if (sim == null) { sim = Households.AllSims(selectedHousehold)[0]; if (sim != null) { PlumbBob.ForceSelectActor(sim); } } LotManager.SetWallsViewMode(0x12e); selectedLot.SetDisplayLevel(selectedLot.DoesFoundationExistOnLot() ? 0x1 : 0x0); if (sim.LotCurrent == sim.LotHome) { Camera.FocusOnSelectedSim(); Camera.SetView(CameraView.SimView, false, false); } else { Camera.FocusOnLot(sim.LotHome.LotId, 0f); Camera.SetView(CameraView.HouseView, false, false); } } selectedLot.CheckIfLotNeedsBabysitter(); ths.Sleep(1.5); return(true); }
public static bool ActivateSimScreenMaskedFuncFromHousehold(PlayFlowModel ths, Household selectedHousehold, Lot selectedLot) { if ((selectedHousehold == null) || (selectedLot == null)) { return false; } using (DreamCatcher.HouseholdStore store = new DreamCatcher.HouseholdStore(selectedHousehold, Mover.Settings.mDreamCatcher)) { Camera.SetMapViewActiveLotMode(true); LotManager.LockActiveLot(selectedLot); // Custom DreamCatcher.Task.PrepareToBecomeActiveHousehold(selectedHousehold); Sim sim = BinCommon.ActivateSim(selectedHousehold, selectedLot); if (sim == null) { sim = Households.AllSims(selectedHousehold)[0]; if (sim != null) { PlumbBob.ForceSelectActor(sim); } } LotManager.SetWallsViewMode(0x12e); selectedLot.SetDisplayLevel(selectedLot.DoesFoundationExistOnLot() ? 0x1 : 0x0); if (sim.LotCurrent == sim.LotHome) { Camera.FocusOnSelectedSim(); Camera.SetView(CameraView.SimView, false, false); } else { Camera.FocusOnLot(sim.LotHome.LotId, 0f); Camera.SetView(CameraView.HouseView, false, false); } } selectedLot.CheckIfLotNeedsBabysitter(); ths.Sleep(1.5); return true; }
public override bool Run() { try { using (DreamCatcher.HouseholdStore store = new DreamCatcher.HouseholdStore(Target.Household, false)) { return(base.Run()); } } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(Actor, Target, e); } return(false); }
public override bool Run() { try { using (DreamCatcher.HouseholdStore store = new DreamCatcher.HouseholdStore(Target.Household, false)) { return base.Run(); } } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(Actor, Target, e); } return false; }
public static Sim Perform(Sim sim, bool fadeOut) { if (sim == null) return null; try { SimDescription simDesc = sim.SimDescription; if (Simulator.GetProxy(sim.ObjectId) == null) { if (simDesc != null) { sim.Destroy(); } //sim.mSimDescription = null; return null; } if (simDesc == null) { sim.mSimDescription = new SimDescription(); sim.Destroy(); return null; } if (sim.LotHome != null) { simDesc.IsZombie = false; if (simDesc.CreatedSim != sim) { sim.Destroy(); simDesc.CreatedSim = null; return null; } else { Bed myBed = null; BedData myBedData = null; foreach (Bed bed in sim.LotHome.GetObjects<Bed>()) { myBedData = bed.GetPartOwnedBy(sim); if (myBedData != null) { myBed = bed; break; } } ResetPosture(sim); if (simDesc.TraitManager == null) { simDesc.mTraitManager = new TraitManager(); } try { simDesc.Fixup(); Corrections.CleanupBrokenSkills(simDesc, null); ResetCareer(simDesc); simDesc.ClearSpecialFlags(); if (simDesc.Pregnancy == null) { try { if (simDesc.mMaternityOutfits == null) { simDesc.mMaternityOutfits = new OutfitCategoryMap(); } simDesc.SetPregnancy(0, false); simDesc.ClearMaternityOutfits(); } catch (Exception e) { Common.Exception(sim, null, "Pregnancy", e); } } if (sim.CurrentCommodityInteractionMap == null) { try { LotManager.PlaceObjectOnLot(sim, sim.ObjectId); if (sim.CurrentCommodityInteractionMap == null) { sim.ChangeCommodityInteractionMap(sim.LotHome.Map); } } catch (Exception e) { Common.Exception(sim, null, "ChangeCommodityInteractionMap", e); } } } catch (Exception e) { Common.Exception(sim, null, "Fixup", e); } ResetSituations(sim); CleanupSlots(sim); ResetInventory(sim); if (fadeOut) { bool active = (Sim.ActiveActor == sim); if (sSimReset.Valid) { sSimReset.Invoke<bool>(new object[] { simDesc.SimDescriptionId }); } ResetRouting(sim); using (CreationProtection protection = new CreationProtection(simDesc, sim, false, true, false)) { sim.Destroy(); Common.Sleep(); sim = FixInvisibleTask.InstantiateAtHome(simDesc, null); } if (sim != null) { if (active) { try { foreach (Sim member in Households.AllSims(sim.Household)) { if (member.CareerManager == null) continue; Occupation occupation = member.CareerManager.Occupation; if (occupation == null) continue; occupation.FormerBoss = null; } using (DreamCatcher.HouseholdStore store = new DreamCatcher.HouseholdStore(sim.Household, true)) { PlumbBob.DoSelectActor(sim, true); } } catch (Exception e) { Common.Exception(sim, null, "DoSelectActor", e); } } if ((myBed != null) && (myBedData != null)) { if ((sim.Partner != null) && (sim.Partner.CreatedSim != null)) { myBed.ClaimOwnership(sim, myBedData); } } } } else { if (sim.Inventory == null) { sim.AddComponent<InventoryComponent>(new object[0x0]); } if (Instantiation.AttemptToPutInSafeLocation(sim, false)) { ResetRouting(sim); sim.SetObjectToReset(); // This is necessary to clear certain types of interactions // (it is also called in SetObjectToReset(), though doesn't always work there) if (sim.InteractionQueue != null) { sim.InteractionQueue.OnReset(); } } } ResetSkillModifiers(simDesc); ResetRole(sim); if (simDesc.IsEnrolledInBoardingSchool()) { simDesc.BoardingSchool.OnRemovedFromSchool(); } MiniSimDescription miniSim = MiniSimDescription.Find(simDesc.SimDescriptionId); if (miniSim != null) { miniSim.Instantiated = true; } UpdateInterface(sim); return sim; } } else if (simDesc.Service is Butler) { if (Instantiation.AttemptToPutInSafeLocation(sim, true)) { sim.Motives.RecreateMotives(sim); sim.SetObjectToReset(); } return sim; } else if (simDesc.IsImaginaryFriend) { OccultImaginaryFriend friend; if (OccultImaginaryFriend.TryGetOccultFromSim(sim, out friend)) { if (Simulator.GetProxy(friend.mDollId) != null) { friend.TurnBackIntoDoll(OccultImaginaryFriend.Destination.Owner); return null; } } } else if (simDesc.IsBonehilda) { foreach (BonehildaCoffin coffin in Sims3.Gameplay.Queries.GetObjects<BonehildaCoffin>()) { if (coffin.mBonehilda == simDesc) { coffin.mBonehildaSim = null; break; } } } if (fadeOut) { sim.Destroy(); } return null; } catch (Exception exception) { Common.Exception(sim, exception); return sim; } }
public static Sim Perform(Sim sim, bool fadeOut) { if (sim == null) { return(null); } try { SimDescription simDesc = sim.SimDescription; if (Simulator.GetProxy(sim.ObjectId) == null) { if (simDesc != null) { sim.Destroy(); } //sim.mSimDescription = null; return(null); } if (simDesc == null) { sim.mSimDescription = new SimDescription(); sim.Destroy(); return(null); } if (sim.LotHome != null) { simDesc.IsZombie = false; if (simDesc.CreatedSim != sim) { sim.Destroy(); simDesc.CreatedSim = null; return(null); } else { Bed myBed = null; BedData myBedData = null; foreach (Bed bed in sim.LotHome.GetObjects <Bed>()) { myBedData = bed.GetPartOwnedBy(sim); if (myBedData != null) { myBed = bed; break; } } ResetPosture(sim); if (simDesc.TraitManager == null) { simDesc.mTraitManager = new TraitManager(); } try { simDesc.Fixup(); Corrections.CleanupBrokenSkills(simDesc, null); ResetCareer(simDesc); simDesc.ClearSpecialFlags(); if (simDesc.Pregnancy == null) { try { if (simDesc.mMaternityOutfits == null) { simDesc.mMaternityOutfits = new OutfitCategoryMap(); } simDesc.SetPregnancy(0, false); simDesc.ClearMaternityOutfits(); } catch (Exception e) { Common.Exception(sim, null, "Pregnancy", e); } } if (sim.CurrentCommodityInteractionMap == null) { try { LotManager.PlaceObjectOnLot(sim, sim.ObjectId); if (sim.CurrentCommodityInteractionMap == null) { sim.ChangeCommodityInteractionMap(sim.LotHome.Map); } } catch (Exception e) { Common.Exception(sim, null, "ChangeCommodityInteractionMap", e); } } } catch (Exception e) { Common.Exception(sim, null, "Fixup", e); } ResetSituations(sim); CleanupSlots(sim); ResetInventory(sim); if (fadeOut) { bool active = (Sim.ActiveActor == sim); if (sSimReset.Valid) { sSimReset.Invoke <bool>(new object[] { simDesc.SimDescriptionId }); } ResetRouting(sim); using (CreationProtection protection = new CreationProtection(simDesc, sim, false, true, false)) { sim.Destroy(); Common.Sleep(); sim = FixInvisibleTask.InstantiateAtHome(simDesc, null); } if (sim != null) { if (active) { try { foreach (Sim member in Households.AllSims(sim.Household)) { if (member.CareerManager == null) { continue; } Occupation occupation = member.CareerManager.Occupation; if (occupation == null) { continue; } occupation.FormerBoss = null; } using (DreamCatcher.HouseholdStore store = new DreamCatcher.HouseholdStore(sim.Household, true)) { PlumbBob.DoSelectActor(sim, true); } } catch (Exception e) { Common.Exception(sim, null, "DoSelectActor", e); } } if ((myBed != null) && (myBedData != null)) { if (!(myBed is BedMultiPart) || (myBed is BedMultiPart && ((sim.Partner != null) && (sim.Partner.CreatedSim != null)))) { myBed.ClaimOwnership(sim, myBedData); } else { HandleDoubleBed(sim, myBed, myBedData); } } } } else { if (sim.Inventory == null) { sim.AddComponent <InventoryComponent>(new object[0x0]); } if (Instantiation.AttemptToPutInSafeLocation(sim, false)) { ResetRouting(sim); sim.SetObjectToReset(); // This is necessary to clear certain types of interactions // (it is also called in SetObjectToReset(), though doesn't always work there) if (sim.InteractionQueue != null) { sim.InteractionQueue.OnReset(); } } } ResetSkillModifiers(simDesc); ResetRole(sim); if (simDesc.IsEnrolledInBoardingSchool()) { simDesc.BoardingSchool.OnRemovedFromSchool(); } MiniSimDescription miniSim = MiniSimDescription.Find(simDesc.SimDescriptionId); if (miniSim != null) { miniSim.Instantiated = true; } UpdateInterface(sim); return(sim); } } else if (simDesc.Service is Butler) { if (Instantiation.AttemptToPutInSafeLocation(sim, true)) { sim.Motives.RecreateMotives(sim); sim.SetObjectToReset(); } return(sim); } else if (simDesc.IsImaginaryFriend) { OccultImaginaryFriend friend; if (OccultImaginaryFriend.TryGetOccultFromSim(sim, out friend)) { if (Simulator.GetProxy(friend.mDollId) != null) { friend.TurnBackIntoDoll(OccultImaginaryFriend.Destination.Owner); return(null); } } } else if (simDesc.IsBonehilda) { foreach (BonehildaCoffin coffin in Sims3.Gameplay.Queries.GetObjects <BonehildaCoffin>()) { if (coffin.mBonehilda == simDesc) { coffin.mBonehildaSim = null; break; } } } if (fadeOut) { sim.Destroy(); } return(null); } catch (Exception exception) { Common.Exception(sim, exception); return(sim); } }
public override void Apply() { string msg = "Apply" + Common.NewLine; try { try { sbMovingCurrentlyInProgress = true; ProgressDialog.Show(Common.LocalizeEAString("Ui/Caption/Global:Processing"), false); Household sourceHousehold = mSourceHousehold; Lot sourceLot = sourceHousehold.LotHome; mTempHousehold.ClearSilent(); mTempHousehold.Destroy(); mTempHousehold = null; msg += "A"; ParentsLeavingTownSituation situation = ParentsLeavingTownSituation.FindParentsGoneSituationForHousehold(sourceHousehold); if ((situation != null) && (ParentsLeavingTownSituation.Adults != null)) { bool freeVacation = false; foreach (ISimDescription targetSim in mTargetSimList.Keys) { if (ParentsLeavingTownSituation.Adults.Contains(targetSim.SimDescriptionId)) { freeVacation = true; break; } } if (!freeVacation) { bool flag3 = false; foreach (ISimDescription iSourceSim in mSourceSimList.Keys) { if (iSourceSim.TeenOrAbove && !ParentsLeavingTownSituation.Adults.Contains(iSourceSim.SimDescriptionId)) { SimDescription sourceSim = iSourceSim as SimDescription; if ((sourceSim != null) && (sourceSim.CreatedSim != null)) { flag3 = true; break; } } } freeVacation = !flag3; } if (freeVacation) { situation.BringParentsBack(); } } msg += "B"; Household targetHousehold = mPreselectedHousehold; // Must be ahead of check mSourceSimList Lot targetLot = null; if (targetHousehold != null) { targetLot = targetHousehold.LotHome; } if (targetHousehold == null) { if (mSourceSimList.Count == 0) { targetHousehold = sourceHousehold; } } if (targetLot == null) { targetLot = mTargetLot; } if ((mMoveOut) && (targetLot == null)) { msg += "B1"; List<Lot> allChoices = new List<Lot>(); List<Lot> affordable = new List<Lot>(); foreach (Lot lot in LotManager.AllLots) { if (!string.IsNullOrEmpty(Households.IsValidResidentialLot(lot))) continue; Lot.LotMetrics metrics = new Lot.LotMetrics(); lot.GetLotMetrics(ref metrics); if (metrics.FridgeCount == 0) continue; allChoices.Add(lot); if (Mover.GetLotCost(lot) < mNewTargetFunds) { affordable.Add(lot); } } if (affordable.Count > 0) { affordable.Sort(new Comparison<Lot>(Households.SortByCost)); targetLot = affordable[0]; } else if (allChoices.Count > 0) { if ((!Mover.Settings.mFreeRealEstate) && (!AcceptCancelDialog.Show(Common.Localize("NoAffordable:Prompt")))) { return; } allChoices.Sort(new Comparison<Lot>(Households.SortByCost)); targetLot = allChoices[0]; } if (targetLot == null) { if (!AcceptCancelDialog.Show(Common.Localize("Homeless:Prompt"))) { return; } } else { mNewTargetFunds -= Mover.GetLotCost(targetLot); if (mNewTargetFunds < 0) { mNewTargetFunds = 0; } } } msg += "C"; if (targetHousehold == null) { targetHousehold = Household.Create(); } Household activeHouse = targetHousehold; Household saleHouse = sourceHousehold; if (mSourceHouseholdActive) { msg += "C1"; activeHouse = sourceHousehold; saleHouse = targetHousehold; } Lot saleLot = saleHouse.LotHome; Dictionary<ObjectGuid, ObjectGuid> originalsToClones = null; if (mSellHome) { msg += "C2"; if ((mPackFurniture) && (saleHouse != Household.NpcHousehold)) { PackFurnitureEx(saleHouse.LotHome, activeHouse, ref originalsToClones); } saleHouse.MoveOut(); } if (targetHousehold != null) { msg += "C3"; if ((targetLot != null) && (targetHousehold.LotHome != targetLot)) { targetHousehold.MoveOut(); // Perform this preior to MoveIn() to inform StoryProgresion that it does not need to adjust lot funds Mover.PresetStoryProgressionLotHome(targetLot, targetHousehold); targetLot.MoveIn(targetHousehold); targetHousehold.AddGreetedLotToHousehold(targetLot, ObjectGuid.InvalidObjectGuid); } if (mTargetSimList.Count > 0) { if (targetHousehold != sourceHousehold) { targetHousehold.BioText = mTargetHouseholdDescription; targetHousehold.Name = mTargetHouseholdName; } targetHousehold.SetFamilyFunds(mNewTargetFunds); } } msg += "D"; if (sourceHousehold != null) { msg += "D1"; if ((sourceHousehold != Household.NpcHousehold) && (mSourceSimList.Count > 0)) { msg += "D2"; sourceHousehold.SetFamilyFunds(mNewSourceFunds); sourceHousehold.BioText = mSourceHouseholdDescription; sourceHousehold.Name = mSourceHouseholdName; } } if (mSellHome) { msg += "E"; List<SimDescription> otherSims = new List<SimDescription>(); List<Sim> movingSims = new List<Sim>(); foreach (SimDescription simDesc in Households.All(saleHouse)) { Sim sim = simDesc.CreatedSim; if (sim != null) { movingSims.Add(sim); EventTracker.SendEvent(EventTypeId.kMovedHouses, sim); } else { otherSims.Add(simDesc); } MidlifeCrisisManager.OnMoved(simDesc); } if (saleHouse != activeHouse) { Households.TransferData(activeHouse, saleHouse); } foreach (SimDescription simDesc in otherSims) { if (simDesc.Household != null) { simDesc.Household.Remove(simDesc, false); } activeHouse.Add(simDesc); } HouseholdEx.AddSims(activeHouse, movingSims, saleHouse, (saleHouse != activeHouse), true, Mover.Settings.mDreamCatcher); UpdateAttributesForNewSimsEx(true, movingSims); Sim tokenSim = null; for (int i = movingSims.Count - 1; i >= 0; i--) { Sim sim = movingSims[i]; if ((sim.CurrentInteraction is ICountsAsWorking) || (sim.GetSituationOfType<HostedSituation>() != null)) { if (tokenSim == null) { tokenSim = movingSims[i]; } movingSims.RemoveAt(i); } } if ((movingSims.Count == 0) && (tokenSim != null)) { movingSims.Add(tokenSim); } if (movingSims.Count > 0) { MovingSituation.MoveAllActiveSimsToActiveLot(saleLot, activeHouse.LotHome, movingSims, mPackFurniture, originalsToClones); } } else { msg += "F"; List<SimDescription> previousTarget = new List<SimDescription>(Households.All(targetHousehold)); List<SimDescription> previousSource = new List<SimDescription>(Households.All(sourceHousehold)); if (mSourceHouseholdActive) { msg += "F1"; if (mTargetSimList.Count == 0) { Households.TransferData(sourceHousehold, targetHousehold); } else if ((targetHousehold.RealEstateManager.AllProperties.Count > 0) && (Mover.Settings.mPromptTransferRealEstate) && (AcceptCancelDialog.Show(Common.Localize("TransferRealEstate:Prompt")))) { Households.TransferRealEstate(sourceHousehold, targetHousehold); } TransferSims(targetHousehold, sourceHousehold, false, (mSourceSimList.Count == 0), mTargetSimList); TransferSims(sourceHousehold, targetHousehold, true, (mTargetSimList.Count == 0), mSourceSimList); } else { msg += "F2"; if (mSourceSimList.Count == 0) { Households.TransferData(targetHousehold, sourceHousehold); } else if ((sourceHousehold.RealEstateManager.AllProperties.Count > 0) && (Mover.Settings.mPromptTransferRealEstate) && (AcceptCancelDialog.Show(Common.Localize("TransferRealEstate:Prompt")))) { Households.TransferRealEstate(targetHousehold, sourceHousehold); } TransferSims(sourceHousehold, targetHousehold, false, (mTargetSimList.Count == 0), mSourceSimList); TransferSims(targetHousehold, sourceHousehold, true, (mSourceSimList.Count == 0), mTargetSimList); } msg += "G"; if (targetHousehold.NumMembers == 0) { msg += "G1"; targetHousehold.HandleLastSimsDeath(); } ThumbnailManager.GenerateHouseholdThumbnail(targetHousehold.HouseholdId, targetHousehold.HouseholdId, ThumbnailSizeMask.Large | ThumbnailSizeMask.Medium); if (sourceHousehold.NumMembers == 0) { msg += "G2"; sourceHousehold.HandleLastSimsDeath(); } ThumbnailManager.GenerateHouseholdThumbnail(sourceHousehold.HouseholdId, sourceHousehold.HouseholdId, ThumbnailSizeMask.Large | ThumbnailSizeMask.Medium); if (GameStates.IsOnVacation) { using (DreamCatcher.HouseholdStore store = new DreamCatcher.HouseholdStore(activeHouse, true)) { PlumbBob.ForceSelectActor(activeHouse.GetRandomNonRoommateSim()); } } else { DreamCatcher.Select(activeHouse.GetRandomNonRoommateSim(), true, Mover.Settings.mDreamCatcher, true); } msg += "H"; if ((saleHouse != null) && (saleHouse != activeHouse)) { using (DreamCatcher.HouseholdStore store = new DreamCatcher.HouseholdStore((Household)null, Mover.Settings.mDreamCatcher)) { foreach (Sim sim in Households.AllSims(saleHouse)) { msg += "H2"; sim.OnBecameUnselectable(); } } } foreach (Sim sim in Households.AllSims(activeHouse)) { msg += "I2"; sim.ResetMapTagManager(); } msg += "K"; List<Sim> sourceNewSims = new List<Sim>(); List<Sim> sourceMovingSims = new List<Sim>(); PostTransfer(sourceHousehold, targetHousehold, targetLot, previousSource, sourceMovingSims, sourceNewSims); List<Sim> targetNewSims = new List<Sim>(); List<Sim> targetMovingSims = new List<Sim>(); PostTransfer(targetHousehold, sourceHousehold, sourceLot, previousTarget, targetMovingSims, targetNewSims); msg += Common.NewLine + " Target Moving"; foreach (Sim sim in targetMovingSims) { msg += Common.NewLine + " " + sim.FullName; } msg += Common.NewLine + " Source Moving"; foreach (Sim sim in sourceMovingSims) { msg += Common.NewLine + " " + sim.FullName; } msg += "L"; if (targetHousehold == Household.ActiveHousehold) { msg += "L1"; if (targetMovingSims.Count > 0x0) { MovingSituation.MoveNPCsToActiveHousehold(targetHousehold.LotHome, targetMovingSims, targetNewSims); } else if (sourceMovingSims.Count > 0) { MovingSituation.MoveActiveSimsToNPCLot(sourceHousehold.LotHome, sourceMovingSims, sourceNewSims, false); } } else { msg += "L2"; if (targetMovingSims.Count > 0x0) { MovingSituation.MoveActiveSimsToNPCLot(targetHousehold.LotHome, targetMovingSims, targetNewSims, false); } else if (sourceMovingSims.Count > 0) { MovingSituation.MoveNPCsToActiveHousehold(sourceHousehold.LotHome, sourceMovingSims, sourceNewSims); } } msg += "M"; sbMovingCurrentlyInProgress = false; TombRoomManager.OnChangeHousehold(Household.ActiveHousehold); } msg += "N"; CleanUpTempTravelHoushold(); CleanUpSourceTempHousehold(true); mSourceSimList.Clear(); mTargetSimList.Clear(); mSourceHousehold = null; mPreselectedHousehold = null; if (mPreviousHouseholdSims != null) { mPreviousHouseholdSims.Clear(); mPreviousHouseholdSims = null; } GameEntryMovingModel.TriggerSplitMergeHouseholdsCompleteCallback(); } catch (Exception e) { Common.Exception(msg, e); } finally { Common.DebugNotify(msg); sbMovingCurrentlyInProgress = false; ProgressDialog.Close(); } } catch (ExecutionEngineException) { } }
public override void Apply() { try { List<SimDescription> allSims = new List<SimDescription>(); if (mSourceSimList != null) { foreach (KeyValuePair<ISimDescription, bool> pair in mSourceSimList) { SimDescription sim = pair.Key as SimDescription; if (sim == null) continue; allSims.Add(sim); } } if (mTargetSimList != null) { foreach (KeyValuePair<ISimDescription, bool> pair in mTargetSimList) { SimDescription sim = pair.Key as SimDescription; if (sim == null) continue; allSims.Add(sim); } } using (DreamCatcher.HouseholdStore store = new DreamCatcher.HouseholdStore(allSims, Mover.Settings.mDreamCatcher)) { try { SplitMergeHouseholds += OnMerge; base.Apply(); } catch (Exception e) { Common.Exception("Apply", e); } finally { SplitMergeHouseholds -= OnMerge; ProgressDialog.Close(); } } } catch (ExecutionEngineException) { } }