예제 #1
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);
                        }
                    }
                }
            }
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        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);
            }
        }
예제 #4
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);
                }
            }
        }