Пример #1
0
        private IEnumerator ExecuteDelay(AbilityContext ctx)
        {
            yield return(new WaitForLogicSeconds(m_Time));

            m_TimeEnumrator = null;
            ExecuteCommands(ctx);
        }
Пример #2
0
 public AbilityRoot(float keepTime) : base(EmptyList)
 {
     this.keepTime = keepTime;
     m_Context     = new AbilityContext
     {
         modifiers = new Dictionary <string, ModifierRoot>(),
         triggers  = new Dictionary <AbilityEventTrigger, AbilityContext.TriggerEvent>()
     };
     m_AbilityEvents = new List <IAbilityExecutor>();
 }
Пример #3
0
 public override void Execute(AbilityContext ctx)
 {
     m_Context = ctx;
     if (ctx.triggers.ContainsKey(m_TriggerType))
     {
         ctx.triggers[m_TriggerType] += ExecuteImpl;
     }
     else
     {
         ctx.triggers.Add(m_TriggerType, ExecuteImpl);
     }
 }
Пример #4
0
 public override void Kill()
 {
     if (m_AutoFinish != null)
     {
         Game.Instance.coroutineManager.StopLogic(m_AutoFinish);
         m_AutoFinish = null;
     }
     foreach (var abilityEvent in m_AbilityEvents)
     {
         abilityEvent.Kill();
     }
     m_Context = null;
     base.Kill();
 }
Пример #5
0
 protected void ExecuteCommands(AbilityContext ctx)
 {
     if (commands != null)
     {
         var cmdCtx = new AbilityCommandContext();
         cmdCtx.caster    = ctx.caster;
         cmdCtx.modifiers = ctx.modifiers;
         cmdCtx.triggers  = ctx.triggers;
         foreach (var cmd in commands)
         {
             foreach (var target in ctx.targets)
             {
                 cmdCtx.target = target;
                 cmd.Execute(cmdCtx);
             }
         }
     }
 }
Пример #6
0
 public abstract void Execute(AbilityContext ctx);
Пример #7
0
 public override void Kill()
 {
     m_Context.triggers[m_TriggerType] -= ExecuteImpl;
     m_Context = null;
     base.Kill();
 }
Пример #8
0
 public override void Execute(AbilityContext ctx)
 {
     m_TimeEnumrator = ExecuteDelay(ctx);
     Game.Instance.coroutineManager.StartLogic(m_TimeEnumrator);
 }
Пример #9
0
 public override void Execute(AbilityContext ctx)
 {
     ExecuteCommands(ctx);
 }