Beispiel #1
0
        public ActivityInfo(string name, string abbrv, int basePriority, int exhaustionLevel, ActivityFlags flags = ActivityFlags.None, int maxD = 1, int minD = 1, int duration = 1, int maxConcurrent = 1) : base(ID_COUNTER, abbrv)
        {
            MinDorms      = minD;
            MaxDorms      = maxD;
            MaxConcurrent = maxConcurrent;
            Name          = name;
            //Zone = zone;
            Duration        = duration;
            Priority        = basePriority;
            ExhaustionLevel = exhaustionLevel;
            Flags           = flags;
            ++ID_COUNTER;
            IncompatibleActivities = new SortedSet <int>();

            if (!Flags.HasFlag(ActivityFlags.Manual))
            {
                if (Flags.HasFlag(ActivityFlags.Exclusive))
                {
                    ExclusiveActivityIDs.Add(ID);
                }
                else
                {
                    ActivityIDs.Add(ID);
                }

                if (Flags.HasFlag(ActivityFlags.Repeatable))
                {
                    RepeatableActivities.Add(ID);
                }

                if (Flags.HasFlag(ActivityFlags.MultiDorm))
                {
                    MultiDormActivities.Add(ID);
                    if (Flags.HasFlag(ActivityFlags.Concurrent) && abbrv == "GB")
                    {
                        Flags |= ActivityFlags.PriorityExclusive;
                    }
                }
            }

            if (Flags.HasFlag(ActivityFlags.Exhausting))
            {
                HighFatigueActivities.Add(ID);
            }
            else if (Flags.HasFlag(ActivityFlags.Relaxing))
            {
                LowFatigueActivities.Add(ID);
            }
        }