示例#1
0
        private string GetActionPath(AutoAction lowestAction)
        {
            string     actionPath    = "";
            AutoAction currentAction = lowestAction;

            while (currentAction != null)
            {
                actionPath    = currentAction.name + ": " + actionPath;
                currentAction = currentAction.parent;
            }
            return(actionPath);
        }
示例#2
0
        public void AddAction(AutoAction action)
        {
            if (currentAction == null)
            {
                currentAction = action;
                return;
            }
            AutoAction lastAction = currentAction;

            while (currentAction.next != null)
            {
                lastAction = lastAction.next;
            }
            lastAction.next = action;
        }
示例#3
0
 public AutoAction Build(AutoAction parent)
 {
     autoActions[0].parent = parent;
     for (int i = 0; i < autoActions.Count - 1; i++)
     {
         AutoAction currentAction = autoActions[i];
         while (currentAction.next != null)
         {
             currentAction = currentAction.next;
         }
         AutoAction nextAction = autoActions[i + 1];
         nextAction.parent  = parent;
         currentAction.next = nextAction;
     }
     return(autoActions[0]);
 }
示例#4
0
 public Action GetNextAction(float timeDelta)
 {
     if (!TimeForNextAction(timeDelta) || currentAction == null)
     {
         return(() => { });
     }
     while (!currentAction.invokeable)
     {
         currentAction = currentAction.next;
     }
     return(() =>
     {
         Debug.Log(GetActionPath(currentAction));
         currentAction.Invoke();
         currentAction = currentAction.next;
     });
 }
 private void SetupExitAction()
 {
     if (exitAction == null)
     {
         exitAction = strategy.GetExitAction();
         if (exitAction != null)
         {
             exitAction.parent = this;
             exitAction.next   = next;
         }
         else
         {
             exitAction = next;
         }
         next = this;
     }
 }
示例#6
0
        public EncapsulatingRoadSelector(AutoAction middle) : base("EncapsulatingRoadSelector")
        {
            var componentChain = MainToolstripNavigator.Instance.GetComponentChain(new List <string>
            {
                "Roads",
                "RoadsSmall",
                "Basic Road"
            });
            var builder = new AutoActionBuilder();

            foreach (var component in componentChain)
            {
                builder.Add(new ClickUiComponent(component));
            }
            next = builder
                   .Add(middle)
                   .Add(new ClickUiComponent(componentChain[0]))
                   .Build(this);
        }
示例#7
0
 public AutoActionBuilder Add(AutoAction action)
 {
     autoActions.Add(action);
     return(this);
 }