Пример #1
0
        public static void SetupTraitHook(Trait trait, StatusEffects parent)
        {
            bool debug      = RogueFramework.IsDebugEnabled(DebugFlags.Traits);
            bool updateable = false;

            trait.__RogueLibsContainer = parent;
            foreach (IHookFactory <Trait> factory in RogueFramework.TraitFactories)
            {
                if (factory.TryCreate(trait, out IHook <Trait> hook))
                {
                    if (debug)
                    {
                        if (hook is CustomTrait)
                        {
                            RogueFramework.LogDebug($"Initializing custom trait {hook} ({trait.traitName}, {parent.agent.agentName}).");
                        }
                        else
                        {
                            RogueFramework.LogDebug($"Initializing trait hook {hook} ({trait.traitName}, {parent.agent.agentName}).");
                        }
                    }
                    trait.AddHook(hook);
                    if (hook is CustomTrait && hook is ITraitUpdateable)
                    {
                        updateable = true;
                    }
                }
            }

            if (updateable && parent.agent.name != "DummyAgent" && !parent.agent.name.Contains("Backup"))
            {
                parent.StartCoroutine(parent.UpdateTrait(trait));
                trait.requiresUpdates = true;
            }
        }