public override void UpdateInheritors(IGenericLevelOption option) { base.UpdateInheritors(option); InvalidateFilter(); bool updateAll = ((option is ISimCasteOption) || (GetValue <CasteApplyToHouseOption, bool>())); Dictionary <Household, bool> houses = new Dictionary <Household, bool>(); foreach (SimDescription sim in StoryProgression.Main.Sims.All) { SimData data = StoryProgression.Main.GetData(sim); if (!updateAll) { if (!data.Contains(this)) { continue; } } else { data.InvalidateCache(); } data.Uncache(option); if (!data.IsValidOption(option)) { data.RemoveOption(option); } if (sim == SimTypes.HeadOfFamily(sim.Household)) { if (!houses.ContainsKey(sim.Household)) { houses.Add(sim.Household, true); HouseholdOptions options = StoryProgression.Main.GetHouseOptions(sim.Household); if (options != null) { if (updateAll) { options.InvalidateCache(); } options.Uncache(option); options.UpdateInheritors(option); } } } } }
public override void UpdateInheritors(IGenericLevelOption option) { base.UpdateInheritors(option); foreach (Household house in Household.sHouseholdList) { HouseholdOptions options = GetHouseOptions(house); if (!IsValidOption(option)) { options.RemoveOption(option); } options.UpdateInheritors(option); } }
public HouseholdOptions GetHouseOptions(Household house) { if (house == null) { return(null); } else { HouseholdOptions options; if (!Households.TryGetValue(house.HouseholdId, out options)) { options = new HouseholdOptions(house); mHouseholdOptions.Add(options); Households.Add(house.HouseholdId, options); } return(options); } }
protected override void GetParentOptions(List <ParentItem> options, DefaultingLevel level) { SimDescription sim = SimDescription; if (sim != null) { if (SimTypes.HeadOfFamily(sim.Household) == sim) { level &= ~DefaultingLevel.HeadOfFamily; } if ((level & DefaultingLevel.Castes) == DefaultingLevel.Castes) { if ((level & DefaultingLevel.HeadOfFamily) == DefaultingLevel.HeadOfFamily) { SimData head = StoryProgression.Main.GetData(SimTypes.HeadOfFamily(House)); if (head != null) { head.GetAllCasteOptions(options, true, true); } } GetAllCasteOptions(options, true, false); } HouseholdOptions houseOptions = StoryProgression.Main.GetHouseOptions(sim.Household); if (houseOptions != null) { options.Add(new ParentItem(houseOptions, level)); } if ((level & DefaultingLevel.Castes) == DefaultingLevel.Castes) { GetAllCasteOptions(options, false, false); } } }