public static List <IDescendantHouseholdUiData> GetTimeAlamanacDescendantHouseholdData(FutureDescendantService instance) { // custom BuildDescendantHouseholdSpecs(instance); List <IDescendantHouseholdUiData> list = new List <IDescendantHouseholdUiData>(); List <ulong> remove = new List <ulong>(); foreach (ulong num in FutureDescendantService.sPersistableData.DescendantHouseholdsMap.Keys) { // Overwatch does this too but no harm in doing it here too if (SimDescription.Find(num) == null && MiniSims.Find(num) == null) { remove.Add(num); } FutureDescendantService.DescendantHouseholdUiData item = new FutureDescendantService.DescendantHouseholdUiData { mAncestorSimId = num }; int householdWealthScore = 0; int numberOfMembers = 0; bool flag = false; foreach (FutureDescendantService.FutureDescendantHouseholdInfo info in FutureDescendantService.sPersistableData.DescendantHouseholdsMap[num]) { if (remove.Contains(num) && info.IsSimAnAncestor(num)) { FutureDescendantService.sPersistableData.InvalidDescendantHouseholdsInfo.Add(info); flag = true; continue; } if (!info.HasAncestorFromHousehold(Household.ActiveHousehold)) { flag = true; continue; } foreach (ulong num4 in info.mHouseholdMembers) { IMiniSimDescription iMiniSimDescription = SimDescription.GetIMiniSimDescription(num4); if ((iMiniSimDescription != null) && !item.mHouseholdMembers.Contains(iMiniSimDescription)) { item.mHouseholdMembers.Add(iMiniSimDescription); } } householdWealthScore += info.mCurrentHouseholdWealthScore; numberOfMembers += info.mCurrentDesiredHouseholdSize; } householdWealthScore /= Math.Max(1, FutureDescendantService.sPersistableData.DescendantHouseholdsMap[num].Count); numberOfMembers /= Math.Max(1, FutureDescendantService.sPersistableData.DescendantHouseholdsMap[num].Count); item.mHouseholdWorth = FutureDescendantService.GetWealthTypeString(householdWealthScore); item.mHouseholdSize = FutureDescendantService.GetHouseholdSizeString(numberOfMembers); if (item != null && !flag) { list.Add(item); } } return(list); }
public static void UpdateThumb(FamilyTreeThumb ths) { ImageDrawable drawable = ths.ThumbWin.Drawable as ImageDrawable; if (drawable != null) { drawable.Image = UIManager.GetThumbnailImage(MiniSims.GetThumbnailKey(ths.SimDescription, ThumbnailSize.Large, 0x0)); ths.ThumbWin.Invalidate(); } }
public static void EnsureForeignFather(Pregnancy pregnancy) { if (SimDescription.Find(pregnancy.DadDescriptionId) == null) { SimDescription dad = MiniSims.UnpackSim(MiniSimDescription.Find(pregnancy.DadDescriptionId)); if (dad != null) { Household.CreateTouristHousehold(); Household.TouristHousehold.AddTemporary(dad); } } }
public static void WipeDescendants() { if (FutureDescendantService.sPersistableData == null) { return; } if (Household.ActiveHousehold == null) { return; } foreach (FutureDescendantService.FutureDescendantHouseholdInfo info in FutureDescendantService.sPersistableData.ActiveDescendantHouseholdsInfo) { if (info.HasAncestorFromHousehold(Household.ActiveHousehold)) { FutureDescendantService.sPersistableData.InvalidDescendantHouseholdsInfo.Add(info); if (info.DescendantHousehold != null && !GameUtils.IsFutureWorld()) { foreach (ulong id in info.mHouseholdMembers) { MiniSimDescription mini = MiniSims.Find(id); if (mini != null) { foreach (SimDescription desc in Household.ActiveHousehold.AllSimDescriptions) { mini.RemoveMiniRelatioship(desc.SimDescriptionId); } } } } if (info.DescendantHousehold != null && GameUtils.IsFutureWorld()) { Annihilation.Cleanse(info.DescendantHousehold); } } } foreach (FutureDescendantService.FutureDescendantHouseholdInfo info in FutureDescendantService.sPersistableData.InvalidDescendantHouseholdsInfo) { FutureDescendantService.sPersistableData.ActiveDescendantHouseholdsInfo.Remove(info); } if (GameUtils.IsFutureWorld()) { // will axe map tags GetInstance().RemoveInactiveDescendantHouseholds(); } }
public static SimDescription CreateProgenitor(ulong id, out bool unpacked) { unpacked = false; if (id == 0) { return(null); } if (FutureDescendantServiceEx.UnpackedSims.ContainsKey(id)) { return(FutureDescendantServiceEx.UnpackedSims[id]); } SimDescription sim = SimDescription.Find(id); if (sim == null) { MiniSimDescription msd = MiniSimDescription.Find(id); if (msd == null) { return(null); } // Custom sim = MiniSims.UnpackSimAndUpdateRel(msd); if (sim == null) { return(null); } Household.CreateTouristHousehold(); Household.TouristHousehold.AddTemporary(sim); msd.Instantiated = true; if (sim.AgingState != null) { sim.AgingState.MergeTravelInformation(msd); } FutureDescendantServiceEx.UnpackedSims.Add(id, sim); SpeedTrap.Sleep(); unpacked = true; } sim.Fixup(); return(sim); }
private bool UnpackForeignVisitors(ForeignVisitorsSituation ths) { foreach (MiniSimDescription description in ths.GuestMiniDescriptions) { SimDescription simDescription = MiniSims.ImportWithCheck(description); if (simDescription == null) { continue; } ths.GuestDescriptions.Add(simDescription); } return(ths.GuestDescriptions.Count > 0x0); }
// externalized to Register and MasterController public static WorldName GetSimHomeworld(ulong sim) { MiniSimDescription desc = MiniSims.Find(sim); if (desc != null) { return(Traveler.Settings.GetHomeWorld(desc)); } SimDescription desc2 = SimDescription.Find(sim); if (desc2 != null) { return(Traveler.Settings.GetHomeWorld(desc2 as IMiniSimDescription)); } return(WorldName.Undefined); }
protected static void Update(MiniSimDescription miniSim) { if (miniSim == null) { return; } while ((AgingManager.Singleton == null) || (AlarmManager.Global == null)) { SpeedTrap.Sleep(); } if (MiniSims.UpdateThumbnailKey(miniSim) == MiniSims.Results.Success) { //Common.DebugNotify("Updated: " + miniSim.FullName); SpeedTrap.Sleep(); } }
protected override OptionResult RunAll(List <IMiniSimDescription> sims) { bool singleSelection = (sims.Count == 1); foreach (IMiniSimDescription sim in sims) { if (sim is SimDescription) { Run(sim as SimDescription, singleSelection); } else if (sim is MiniSimDescription) { SimDescription import = MiniSims.ImportWithCheck(sim as MiniSimDescription); if (import != null) { Run(import, singleSelection); } } } return(OptionResult.SuccessClose); }
public ThumbnailKey GetThumbnailKey(ThumbnailSize size, int thumbIndex) { return(MiniSims.GetThumbnailKey(mSim, size, thumbIndex)); }
public static void AddMiniSims() { Common.StringBuilder msg = new Common.StringBuilder("AddMiniSims" + Common.NewLine); try { if (MiniSimDescription.sMiniSims == null) { MiniSimDescription.sMiniSims = new Dictionary <ulong, MiniSimDescription>(); } if (!Sims3.Gameplay.UI.Responder.Instance.ClockSpeedModel.GameSpeedLocked) { Sims3.Gameplay.Gameflow.LockGameSpeed(Sims3.Gameplay.Gameflow.GameSpeed.Pause); } msg += "A"; MiniSimDescription.sPendingSimUpdates = 0x0; Household activeHouse = Household.ActiveHousehold; if (GameStates.TravelHousehold != null) { activeHouse = GameStates.TravelHousehold; } List <SimDescription> list = new List <SimDescription>(); if ((activeHouse != null) && (GameStates.TravelerIds != null)) { foreach (ulong num in GameStates.TravelerIds) { list.Add(activeHouse.FindMember(num)); } } msg += "B"; foreach (SimDescription description in SimDescription.GetSimDescriptionsInWorld()) { try { if (description.CelebrityManager == null) { description.Fixup(); } if (!list.Contains(description)) { MiniSims.FixUpForeignPregnantSims(description); } bool flag = MiniSimDescription.UpdateMiniSim(description); bool hasRelationship = false; if (!flag && !list.Contains(description)) { foreach (SimDescription description2 in list) { if ((description2 != null) && (Relationship.Get(description, description2, false) != null)) { hasRelationship = true; break; } } } if (hasRelationship) { MiniSimDescription.sPendingSimUpdates++; MiniSimDescription.MiniSimUpdater updater = new MiniSimDescription.MiniSimUpdater(description); Common.FunctionTask.Perform(updater.UpdateMiniSim); } } catch (Exception e) { Common.Exception(description, null, msg, e); } } msg += "C"; while (MiniSimDescription.sPendingSimUpdates > 0x0) { SpeedTrap.Sleep(); } msg += "D"; if (MiniSimDescription.sMiniSims != null) { msg += Common.NewLine + MiniSimDescription.sMiniSims.Count; } Sims3.Gameplay.Gameflow.UnlockGameSpeed(); } catch (Exception e) { Common.Exception(msg, e); } }
protected override void OnPerform() { MiniSims.UpdateRelationsThumbnails(mSim); }