示例#1
0
文件: SimData.cs 项目: yakoder/NRaas
        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);
        }
示例#2
0
        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);
                        }
                    }
                }
            }
        }
示例#3
0
        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);
        }
示例#4
0
        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);
                }
            }
        }
示例#5
0
        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);
        }
示例#6
0
        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);
                    }
                }
            }
        }
示例#7
0
文件: SimData.cs 项目: yakoder/NRaas
        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);
                }
            }
        }
示例#8
0
文件: SimData.cs 项目: yakoder/NRaas
 public NonPersistSimData(SimData data)
     : this(data.mSimID.SimDescription)
 {
 }