using System; using System.Collections.Generic; using Zeta.Common; using Zeta.TreeSharp; namespace LevelSwap.Behaviors { public class HookReplacer { private static List _originalComposites; private static Composite _customBehaviors; private const string HookName = "BotBehavior"; public static bool UsingCustomBehavior { get; set; } internal static void InsertHooks() { if (!TreeHooks.Instance.Hooks.ContainsKey(HookName)) return; if (_customBehaviors == null) { _customBehaviors = new PrioritySelector( CustomBehavior.CreateBehavior() ); } Plugin.WriteToLog("Inserting Custom [" + Plugin.PluginName + "] Behaviors into " + HookName + " Hook"); UsingCustomBehavior = true; TreeHooks.Instance.InsertHook(HookName, 0, _customBehaviors); } internal static void RemoveHooks() { if (_customBehaviors != null && UsingCustomBehavior) { Plugin.WriteToLog("Removing Custom [" + Plugin.PluginName + "] behaviors from " + HookName + " Hook"); TreeHooks.Instance.RemoveHook(HookName, _customBehaviors); UsingCustomBehavior = false; } } internal static void Instance_OnHooksCleared(object sender, EventArgs e) { UsingCustomBehavior = false; } } }