Beispiel #1
0
        public static bool CompTick(CompCauseGameCondition __instance)
        {
            if (__instance.Active)
            {
                foreach (Map map in Find.Maps)
                {
                    if (__instance.InAoE(map.Tile))
                    {
                        EnforceConditionOn2(__instance, map);
                    }
                }
            }

            List <Map> tmpDeadConditionMaps = new List <Map>();

            foreach (KeyValuePair <Map, GameCondition> causedCondition in causedConditions(__instance))
            {
                if (causedCondition.Value.Expired || !causedCondition.Key.GameConditionManager.ConditionIsActive(causedCondition.Value.def))
                {
                    tmpDeadConditionMaps.Add(causedCondition.Key);
                }
            }

            foreach (Map tmpDeadConditionMap in tmpDeadConditionMaps)
            {
                causedConditions(__instance).Remove(tmpDeadConditionMap);
            }
            return(false);
        }
Beispiel #2
0
        public static bool CompTick(CompCauseGameCondition __instance)
        {
            if (__instance.Active)
            {
                foreach (Map map in Find.Maps)
                {
                    if (__instance.InAoE(map.Tile))
                    {
                        __instance.EnforceConditionOn(map);
                    }
                }
            }
            tmpDeadConditionMaps.Clear();

            foreach (KeyValuePair <Map, GameCondition> causedCondition in __instance.causedConditions)
            {
                if (causedCondition.Value.Expired || !causedCondition.Key.GameConditionManager.ConditionIsActive(causedCondition.Value.def))
                {
                    tmpDeadConditionMaps.Add(causedCondition.Key);
                }
            }

            foreach (Map tmpDeadConditionMap in tmpDeadConditionMaps)
            {
                if (!__instance.causedConditions.ContainsKey(tmpDeadConditionMap))
                {
                    continue;
                }
                lock (__instance)
                {
                    if (!__instance.causedConditions.ContainsKey(tmpDeadConditionMap))
                    {
                        continue;
                    }
                    Dictionary <Map, GameCondition> newCausedConditions = new Dictionary <Map, GameCondition>(__instance.causedConditions);
                    newCausedConditions.Remove(tmpDeadConditionMap);
                    __instance.causedConditions = newCausedConditions;
                }
            }
            return(false);
        }