예제 #1
0
    void DestroyActionToken(Behaviors.EditAction action)
    {
        var index = actionTokens.FindIndex(at => at.editAction == action);
        var token = actionTokens[index];

        GameObject.Destroy(token.gameObject);
        actionTokens.RemoveAt(index);
    }
예제 #2
0
    void AddActionToken(Behaviors.EditAction action, bool first)
    {
        var actionToken = GameObject.Instantiate <UIRuleActionToken>(actionPrefab, Vector3.zero, Quaternion.identity, contentRoot);

        UpdateActionToken(actionToken, action, first);
        actionToken.onDelete.AddListener(() => DeleteAction(action));
        actionToken.onActionChanged += OnActionChange;
        actionTokens.Add(actionToken);
    }
예제 #3
0
    public void Setup(Behaviors.EditRule rule, Behaviors.EditAction action, bool first)
    {
        parentRule     = rule;
        editAction     = action;
        labelText.text = first ? "Then" : "And";
        actionSelector.Setup(
            "Action Type",
            () => editAction.type,
            (t) => SetActionType((Behaviors.ActionType)t),
            null);

        // Setup all other parameters
        parameters = UIParameterManager.Instance.CreateControls(action, parametersRoot);
        parameters.onParameterChanged += OnActionChanged;
    }
예제 #4
0
 void DeleteAction(Behaviors.EditAction action)
 {
     if (workingRule.actions.Count > 1)
     {
         PixelsApp.Instance.ShowDialogBox("Delete Action?", "Are you sure sure you want to delete this action?", "Ok", "Cancel", res =>
         {
             if (res)
             {
                 DestroyActionToken(action);
                 workingRule.actions.Remove(action);
                 base.pageDirty = true;
             }
         });
     }
     else
     {
         PixelsApp.Instance.ShowDialogBox("Can't Delete last action", "You must have at least one action in a rule.", "Ok", null, null);
     }
     // Else can't delete last action
 }
예제 #5
0
    void SetActionType(Behaviors.ActionType newType)
    {
        if (newType != editAction.type)
        {
            onActionChanged?.Invoke(parentRule, editAction);

            // Change the type, which really means create a new action and replace the old one
            var newAction = Behaviors.EditAction.Create(newType);

            // Replace the action
            parentRule.ReplaceAction(editAction, newAction);

            // Setup the parameters again
            foreach (var parameter in parameters.parameters)
            {
                GameObject.Destroy(parameter.gameObject);
            }
            parameters = UIParameterManager.Instance.CreateControls(newAction, parametersRoot);

            editAction = newAction;

            onActionChanged?.Invoke(parentRule, editAction);
        }
    }
예제 #6
0
 public abstract void Setup(Behaviors.EditAction action, bool first);
예제 #7
0
        public void ReplaceAction(EditAction prevAction, EditAction newAction)
        {
            int index = actions.IndexOf(prevAction);

            actions[index] = newAction;
        }