Example #1
0
 private void CheckInput()
 {
     if (Input.GetKeyDown(KeyCode.Escape))
     {
         if (currentAction != null)
         {
             currentAction.OnCancel();
             currentAction = null;
             actionQueue.Clear();
         }
         return;
     }
     for (int i = 0; i < inputActions.Count; i++)
     {
         KeyCode[] keys = inputActions[i].keys;
         for (int j = 0; j < keys.Length; j++)
         {
             //only hadles 1 key for now
             if (Input.GetKeyDown(keys[j]))
             {
                 string actionId = inputActions[i].actionId;
                 PlayerCharacterAction action = actionMap.Get(actionId);
                 if (action != null)
                 {
                     actionQueue.Enqueue(new QueuedAction(action));
                     return;
                 }
             }
         }
     }
 }
Example #2
0
        public void Update()
        {
            CheckInput();
            currentAction = currentAction ?? Dequeue();

            if (currentAction != null)
            {
                CharacterActionStatus actionStatus = currentAction.OnUpdate();

                switch (actionStatus)
                {
                case CharacterActionStatus.Running:
                    break;

                case CharacterActionStatus.Cancelled:
                    currentAction.OnCancel();
                    currentAction.OnCleanup();
                    currentAction = null;
                    break;

                case CharacterActionStatus.Completed:
                    currentAction.OnComplete();
                    currentAction.OnCleanup();
                    currentAction = null;
                    break;
                }
            }
        }
Example #3
0
 public void Initialize(Entity entity)
 {
     if (initialized)
     {
         return;
     }
     initialized    = true;
     ability        = abilityCreator.Create(); //ability does not have an entity right now
     ability.Caster = entity;
     action         = new PlayerAction_UseSkill(ability, contextCreator);
 }
Example #4
0
 public static void Enqueue(PlayerCharacterAction action)
 {
     instance.actionQueue.Enqueue(new QueuedAction(action));
 }
Example #5
0
 public QueuedAction(PlayerCharacterAction action)
 {
     this.action = action;
     timestamp   = Time.realtimeSinceStartup;
 }