public bool Disallowed <T>(SimData sim, bool checkOtherSide) where T : DisallowCasteBaseOption { T lOption = GetInternalOption <T>(); if ((lOption != null) && (lOption.Count > 0)) { if (lOption.Contains(sim.Castes)) { return(true); } } if (checkOtherSide) { T rOption = sim.GetInternalOption <T>(); if ((rOption != null) && (rOption.Count > 0)) { if (rOption.Contains(Castes)) { return(true); } } } return(false); }
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 SimData GetSim(SimDescription sim) { SimID id = new SimID(sim); SimData data; if (!Sims.TryGetValue(id, out data)) { data = new SimData(sim); Sims.Add(id, data); mSimData.Add(data); } data.SetSimDescription(sim); return(data); }
public override void UpdateInheritors(IGenericLevelOption option) { base.UpdateInheritors(option); if (House == null) { return; } foreach (SimDescription sim in Households.All(House)) { SimData data = StoryProgression.Main.GetData(sim); data.Uncache(option); if (!data.IsValidOption(option)) { data.RemoveOption(option); } } }
public bool AllowCastes(Common.IStatGenerator stats, IEnumerable <SimDescription> sims) { if (sims == null) { return(true); } RequireCasteLotOption requireCastes = GetInternalOption <RequireCasteLotOption>(); DisallowCasteLotOption disallowCastes = GetInternalOption <DisallowCasteLotOption>(); if ((requireCastes == null) && (disallowCastes == null)) { return(true); } foreach (SimDescription sim in sims) { SimData simData = StoryProgression.Main.GetData(sim); if ((disallowCastes != null) && (disallowCastes.Count > 0)) { if (disallowCastes.Contains(simData.Castes)) { stats.IncStat("Find Lot: Disallow Caste Denied"); return(false); } } if ((requireCastes != null) && (requireCastes.Count > 0)) { if (!requireCastes.Contains(simData.Castes)) { stats.IncStat("Find Lot: Require Caste Denied"); return(false); } } } return(true); }
protected override void GetParentOptions(List <ParentItem> options, DefaultingLevel level) { if (Lot == null) { // Global options options.Add(new ParentItem(StoryProgression.Main.Options, level)); } else { options.Add(new ParentItem(StoryProgression.Main.GetLotOptions(Lot), level)); if (((level & DefaultingLevel.Castes) == DefaultingLevel.Castes) && ((level & DefaultingLevel.HeadOfFamily) == DefaultingLevel.HeadOfFamily)) { SimData sim = StoryProgression.Main.GetData(SimTypes.HeadOfFamily(House)); if (sim != null) { sim.GetAllCasteOptions(options, false, true); } } } }
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); } } }
public NonPersistSimData(SimData data) : this(data.mSimID.SimDescription) { }