void DestroyActionToken(Behaviors.EditAction action) { var index = actionTokens.FindIndex(at => at.editAction == action); var token = actionTokens[index]; GameObject.Destroy(token.gameObject); actionTokens.RemoveAt(index); }
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); }
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; }
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 }
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); } }
public abstract void Setup(Behaviors.EditAction action, bool first);
public void ReplaceAction(EditAction prevAction, EditAction newAction) { int index = actions.IndexOf(prevAction); actions[index] = newAction; }