Ejemplo n.º 1
0
        public override void GameComponentOnGUI()
        {
            if (debug)
            {
                DrawDebugButtons();
            }

            if (LevelEventQueue.Count == 0)
            {
                return;
            }

            LevelEvent levelEvent = LevelEventQueue.Dequeue();

            switch (levelEvent.LevelType)
            {
            case LevelEventType.LevelUp:
                levelEvent.NotifyLevelUp();
                break;

            case LevelEventType.LevelDown:
                levelEvent.NotifyLevelDown();
                break;
            }
        }
Ejemplo n.º 2
0
        // If original method increased or decreased skill level, add it to queue for level event notifications.
        static void Postfix(int __state, int ___levelInt, Pawn ___pawn, SkillRecord __instance)
        {
            if (__state == ___levelInt)
            {
                return;
            }

            if (___pawn.Faction == null)
            {
                return;
            }

            if (!___pawn.Faction.IsPlayer)
            {
                return;
            }

            // Ignores level downs 10 -> 9. Fix for some pawns immediately leveling down again after lvl 10.
            if (__state == 10 && ___levelInt == 9)
            {
                if (Settings.ignoreLvl10To9)
                {
                    return;
                }
            }

            if (!TimerAllowsNotifications(___pawn))
            {
                return;
            }

            if (!LevelRecord.ContainsKey(___pawn))
            {
                LevelRecord.Add(___pawn, new Dictionary <SkillDef, int>());
            }

            if (!LevelRecord[___pawn].ContainsKey(__instance.def))
            {
                LevelRecord[___pawn].Add(__instance.def, ___levelInt);
            }
            else if (LevelRecord[___pawn][__instance.def] == ___levelInt)
            {
                return;
            }

            LevelRecord[___pawn][__instance.def] = ___levelInt;
            LevelEventType levelEventType = __state < ___levelInt ? LevelEventType.LevelUp : LevelEventType.LevelDown;

            LevelEventQueue.Enqueue(new LevelEvent(___pawn, __instance, levelEventType));
        }