Example #1
0
    void InitStateMachine()
    {
        BoolCondition startDrawingCon = new BoolCondition(GetIsDrawing);
        NotCondition  endDrawingCon   = new NotCondition(startDrawingCon);

        Transition start = new Transition("Start Drawing", startDrawingCon, new List <Action> {
            EnableTrail
        });
        Transition end = new Transition("Finish Drawing", endDrawingCon, new List <Action> {
            Snapshot
        });

        State idle = new State("Idle", new List <Transition> {
            start
        }, new List <Action> {
        }, new List <Action> {
        }, new List <Action> {
        });
        State drawing = new State("Drawing", new List <Transition> {
            end
        }, new List <Action> {
        }, new List <Action> {
        }, new List <Action> {
        });

        start.SetTargetState(drawing);
        end.SetTargetState(idle);

        SM = new StateMachine(idle, new List <State> {
            idle, drawing
        });
        SM.InitMachine();
    }
Example #2
0
        private int ShowVarGUI(List <InvVar> attributes, int ID, bool changeID)
        {
            if (attributes.Count > 0)
            {
                if (changeID)
                {
                    ID = ShowAttributeSelectorGUI(attributes, ID);
                }

                attributeNumber = Mathf.Min(attributeNumber, attributes.Count - 1);

                EditorGUILayout.BeginHorizontal();

                if (attributes [attributeNumber].type == VariableType.Boolean)
                {
                    boolCondition = (BoolCondition)EditorGUILayout.EnumPopup(boolCondition);
                    EditorGUILayout.LabelField("Boolean:", GUILayout.MaxWidth(60f));
                    boolValue = (BoolValue)EditorGUILayout.EnumPopup(boolValue);
                }
                else if (attributes [attributeNumber].type == VariableType.Integer)
                {
                    intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition);
                    EditorGUILayout.LabelField("Integer:", GUILayout.MaxWidth(60f));
                    intValue = EditorGUILayout.IntField(intValue);
                }
                else if (attributes [attributeNumber].type == VariableType.PopUp)
                {
                    intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition);
                    EditorGUILayout.LabelField("Value:", GUILayout.MaxWidth(60f));
                    intValue = EditorGUILayout.Popup(intValue, attributes [attributeNumber].popUps);
                }
                else if (attributes [attributeNumber].type == VariableType.Float)
                {
                    intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition);
                    EditorGUILayout.LabelField("Float:", GUILayout.MaxWidth(60f));
                    floatValue = EditorGUILayout.FloatField(floatValue);
                }
                else if (attributes [attributeNumber].type == VariableType.String)
                {
                    boolCondition = (BoolCondition)EditorGUILayout.EnumPopup(boolCondition);
                    EditorGUILayout.LabelField("String:", GUILayout.MaxWidth(60f));
                    stringValue = EditorGUILayout.TextField(stringValue);
                }

                EditorGUILayout.EndHorizontal();

                if (attributes [attributeNumber].type == VariableType.String)
                {
                    checkCase = EditorGUILayout.Toggle("Case-senstive?", checkCase);
                }
            }
            else
            {
                EditorGUILayout.HelpBox("No variables exist!", MessageType.Info);
                ID = -1;
                attributeNumber = -1;
            }

            return(ID);
        }
Example #3
0
    // Constructor
    public FlowCommand(FlowCallback flowCallback, string label, GameObject boxPreFab, int indentLevel, bool IsLoop)
    {
        isLoop = IsLoop;
        this.label = label;
        this.commandBoxPreFab = boxPreFab;

        this.flowCallback = flowCallback;
        this.indentLevel = indentLevel;

        repetitionCounter = 0;
        repetitionMax = 1;
        condition = KFunctionRepeat;
    }
    void SetupStateMachine()
    {
        // conditions.
        BoolCondition IsGamePausedCond    = new BoolCondition(IsGamePaused);
        NotCondition  IsGameNotPausedCond = new NotCondition(IsGamePausedCond);

        // transisiton.
        Transition PauseGame  = new Transition("Pause Game", IsGamePausedCond, PauseGameFunc);
        Transition ResumeGame = new Transition("Resume Game", IsGameNotPausedCond, UnPauseGameFunc);

        // states.
        State UnPaused = new State("UnPaused",
                                   new List <Transition>()
        {
            PauseGame
        },
                                   new List <Action>()
        {
        },
                                   new List <Action>()
        {
            PausedUpdate
        },
                                   new List <Action>()
        {
        });

        State Paused = new State("Paused",
                                 new List <Transition>()
        {
            ResumeGame
        },
                                 new List <Action>()
        {
        },
                                 new List <Action>()
        {
            PausedUpdate
        },
                                 new List <Action>()
        {
        });

        // set target states.
        PauseGame.SetTargetState(Paused);
        ResumeGame.SetTargetState(UnPaused);

        // setup machine.
        PausedMachine = new StateMachine(null, UnPaused, Paused);
        PausedMachine.InitMachine();
    }
Example #5
0
        private int ShowVarGUI(List <ActionParameter> parameters, List <GVar> vars, int ID, bool changeID)
        {
            if (vars.Count > 0)
            {
                if (changeID)
                {
                    ID = ShowVarSelectorGUI(vars, ID);
                }
                variableNumber = Mathf.Min(variableNumber, vars.Count - 1);
                getVarMethod   = (GetVarMethod)EditorGUILayout.EnumPopup("Compare with:", getVarMethod);

                if (parameters == null || parameters.Count == 0)
                {
                    EditorGUILayout.BeginHorizontal();
                }

                if (vars [variableNumber].type == VariableType.Boolean)
                {
                    boolCondition = (BoolCondition)EditorGUILayout.EnumPopup(boolCondition);
                    if (getVarMethod == GetVarMethod.EnteredValue)
                    {
                        checkParameterID = Action.ChooseParameterGUI("Boolean:", parameters, checkParameterID, ParameterType.Boolean);
                        if (checkParameterID < 0)
                        {
                            boolValue = (BoolValue)EditorGUILayout.EnumPopup("Boolean:", boolValue);
                        }
                    }
                }
                else if (vars [variableNumber].type == VariableType.Integer)
                {
                    intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition);
                    if (getVarMethod == GetVarMethod.EnteredValue)
                    {
                        checkParameterID = Action.ChooseParameterGUI("Integer:", parameters, checkParameterID, ParameterType.Integer);
                        if (checkParameterID < 0)
                        {
                            intValue = EditorGUILayout.IntField("Integer:", intValue);
                        }
                    }
                }
                else if (vars [variableNumber].type == VariableType.PopUp)
                {
                    intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition);
                    if (getVarMethod == GetVarMethod.EnteredValue)
                    {
                        checkParameterID = Action.ChooseParameterGUI("Value:", parameters, checkParameterID, ParameterType.Integer);
                        if (checkParameterID < 0)
                        {
                            intValue = EditorGUILayout.Popup("Value:", intValue, vars [variableNumber].popUps);
                        }
                    }
                }
                else if (vars [variableNumber].type == VariableType.Float)
                {
                    intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition);
                    if (getVarMethod == GetVarMethod.EnteredValue)
                    {
                        checkParameterID = Action.ChooseParameterGUI("Float:", parameters, checkParameterID, ParameterType.Float);
                        if (checkParameterID < 0)
                        {
                            floatValue = EditorGUILayout.FloatField("Float:", floatValue);
                        }
                    }
                }
                else if (vars [variableNumber].type == VariableType.String)
                {
                    boolCondition = (BoolCondition)EditorGUILayout.EnumPopup(boolCondition);
                    if (getVarMethod == GetVarMethod.EnteredValue)
                    {
                        checkParameterID = Action.ChooseParameterGUI("String:", parameters, checkParameterID, ParameterType.String);
                        if (checkParameterID < 0)
                        {
                            stringValue = EditorGUILayout.TextField("String:", stringValue);
                        }
                    }
                }

                if (getVarMethod == GetVarMethod.GlobalVariable)
                {
                    if (AdvGame.GetReferences().variablesManager == null || AdvGame.GetReferences().variablesManager.vars == null || AdvGame.GetReferences().variablesManager.vars.Count == 0)
                    {
                        EditorGUILayout.HelpBox("No Global variables exist!", MessageType.Info);
                    }
                    else
                    {
                        checkParameterID = Action.ChooseParameterGUI("Global variable:", parameters, checkParameterID, ParameterType.GlobalVariable);
                        if (checkParameterID < 0)
                        {
                            compareVariableID = ShowVarSelectorGUI(AdvGame.GetReferences().variablesManager.vars, compareVariableID);
                        }
                    }
                }
                else if (getVarMethod == GetVarMethod.LocalVariable)
                {
                    if (KickStarter.localVariables == null || KickStarter.localVariables.localVars == null || KickStarter.localVariables.localVars.Count == 0)
                    {
                        EditorGUILayout.HelpBox("No Local variables exist!", MessageType.Info);
                    }
                    else
                    {
                        checkParameterID = Action.ChooseParameterGUI("Local variable:", parameters, checkParameterID, ParameterType.LocalVariable);
                        if (checkParameterID < 0)
                        {
                            compareVariableID = ShowVarSelectorGUI(KickStarter.localVariables.localVars, compareVariableID);
                        }
                    }
                }

                if (parameters == null || parameters.Count == 0)
                {
                    EditorGUILayout.EndHorizontal();
                }
            }
            else
            {
                EditorGUILayout.HelpBox("No variables exist!", MessageType.Info);
                ID             = -1;
                variableNumber = -1;
            }

            return(ID);
        }
        private void ShowVarGUI(List <ActionParameter> parameters, ActionParameter parameter)
        {
            if (parameters == null || parameters.Count == 0 || parameter == null)
            {
                EditorGUILayout.HelpBox("No parameters exist! Please define one in the Inspector.", MessageType.Warning);
                parameterLabel = "";
                return;
            }

            parameterLabel = parameter.label;
            EditorGUILayout.BeginHorizontal();

            if (parameter.parameterType == ParameterType.Boolean)
            {
                boolCondition = (BoolCondition)EditorGUILayout.EnumPopup(boolCondition);
                boolValue     = (BoolValue)EditorGUILayout.EnumPopup(boolValue);
            }
            else if (parameter.parameterType == ParameterType.Integer)
            {
                intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition);
                intValue     = EditorGUILayout.IntField(intValue);
            }
            else if (parameter.parameterType == ParameterType.Float)
            {
                intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition);
                floatValue   = EditorGUILayout.FloatField(floatValue);
            }
            else if (parameter.parameterType == ParameterType.String)
            {
                boolCondition = (BoolCondition)EditorGUILayout.EnumPopup(boolCondition);
                stringValue   = EditorGUILayout.TextField(stringValue);
            }
            else if (parameter.parameterType == ParameterType.GameObject)
            {
                compareObject = (GameObject)EditorGUILayout.ObjectField("Is equal to:", compareObject, typeof(GameObject), true);

                EditorGUILayout.EndHorizontal();
                EditorGUILayout.BeginHorizontal();
                compareObjectConstantID = FieldToID(compareObject, compareObjectConstantID);
                compareObject           = IDToField(compareObject, compareObjectConstantID, false);
            }
            else if (parameter.parameterType == ParameterType.UnityObject)
            {
                compareUnityObject = (Object)EditorGUILayout.ObjectField("Is equal to:", compareUnityObject, typeof(Object), true);
            }
            else if (parameter.parameterType == ParameterType.GlobalVariable)
            {
                if (AdvGame.GetReferences().variablesManager == null || AdvGame.GetReferences().variablesManager.vars == null || AdvGame.GetReferences().variablesManager.vars.Count == 0)
                {
                    EditorGUILayout.HelpBox("No Global variables exist!", MessageType.Info);
                }
                else
                {
                    compareVariableID = ShowVarSelectorGUI(AdvGame.GetReferences().variablesManager.vars, compareVariableID);
                }
            }
            else if (parameter.parameterType == ParameterType.InventoryItem)
            {
                ShowInvSelectorGUI(compareVariableID);
            }
            else if (parameter.parameterType == ParameterType.LocalVariable)
            {
                if (isAssetFile)
                {
                    EditorGUILayout.HelpBox("Cannot compare local variables in an asset file.", MessageType.Warning);
                }
                else if (KickStarter.localVariables == null || KickStarter.localVariables.localVars == null || KickStarter.localVariables.localVars.Count == 0)
                {
                    EditorGUILayout.HelpBox("No Local variables exist!", MessageType.Info);
                }
                else
                {
                    compareVariableID = ShowVarSelectorGUI(KickStarter.localVariables.localVars, compareVariableID);
                }
            }
            else if (parameter.parameterType == ParameterType.Vector3)
            {
                vectorCondition = (VectorCondition)EditorGUILayout.EnumPopup("Condition:", vectorCondition);

                EditorGUILayout.EndHorizontal();
                EditorGUILayout.BeginHorizontal();

                if (vectorCondition == VectorCondition.MagnitudeGreaterThan)
                {
                    floatValue = EditorGUILayout.FloatField("Float:", floatValue);
                }
                else if (vectorCondition == VectorCondition.EqualTo)
                {
                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.LabelField("Vector3:", GUILayout.MaxWidth(60f));
                    vector3Value = EditorGUILayout.Vector3Field("", vector3Value);
                    EditorGUILayout.EndHorizontal();
                }
            }

            EditorGUILayout.EndHorizontal();
        }
Example #7
0
        private int ShowVarGUI(List <ActionParameter> parameters, List <GVar> _vars, int ID, bool changeID)
        {
            VariableType showType = VariableType.Boolean;

            if (changeID)
            {
                if (_vars != null && _vars.Count > 0)
                {
                    ID = ShowVarSelectorGUI(_vars, ID, "Variable:");

                    variableNumber = Mathf.Min(variableNumber, _vars.Count - 1);
                    getVarMethod   = (GetVarMethod)EditorGUILayout.EnumPopup("Compare with:", getVarMethod);

                    showType = _vars[variableNumber].type;
                }
                else
                {
                    EditorGUILayout.HelpBox("No variables exist!", MessageType.Info);
                    ID             = -1;
                    variableNumber = -1;
                    return(ID);
                }

                placeholderType = showType;
            }
            else
            {
                showType = placeholderType;
            }

            switch (showType)
            {
            case VariableType.Boolean:
                boolCondition = (BoolCondition)EditorGUILayout.EnumPopup("Condition:", boolCondition);
                if (getVarMethod == GetVarMethod.EnteredValue)
                {
                    checkParameterID = Action.ChooseParameterGUI("Boolean:", parameters, checkParameterID, ParameterType.Boolean);
                    if (checkParameterID < 0)
                    {
                        boolValue = (BoolValue)EditorGUILayout.EnumPopup("Boolean:", boolValue);
                    }
                }
                break;

            case VariableType.Integer:
                intCondition = (IntCondition)EditorGUILayout.EnumPopup("Condition:", intCondition);
                if (getVarMethod == GetVarMethod.EnteredValue)
                {
                    checkParameterID = Action.ChooseParameterGUI("Integer:", parameters, checkParameterID, ParameterType.Integer);
                    if (checkParameterID < 0)
                    {
                        intValue = EditorGUILayout.IntField("Integer:", intValue);
                    }
                }
                break;

            case VariableType.Float:
                intCondition = (IntCondition)EditorGUILayout.EnumPopup("Condition:", intCondition);
                if (getVarMethod == GetVarMethod.EnteredValue)
                {
                    checkParameterID = Action.ChooseParameterGUI("Float:", parameters, checkParameterID, ParameterType.Float);
                    if (checkParameterID < 0)
                    {
                        floatValue = EditorGUILayout.FloatField("Float:", floatValue);
                    }
                }
                break;

            case VariableType.PopUp:
                intCondition = (IntCondition)EditorGUILayout.EnumPopup("Condition:", intCondition);
                if (getVarMethod == GetVarMethod.EnteredValue)
                {
                    checkParameterID = Action.ChooseParameterGUI("Value:", parameters, checkParameterID, ParameterType.Integer);
                    if (checkParameterID < 0)
                    {
                        if (changeID && _vars != null && _vars.Count > variableNumber)
                        {
                            string[] popUpLabels = _vars[variableNumber].GenerateEditorPopUpLabels();
                            intValue = EditorGUILayout.Popup("Value:", intValue, popUpLabels);
                            placeholderPopUpLabelDataID = _vars[variableNumber].popUpID;
                        }
                        else if (!changeID && AdvGame.GetReferences().variablesManager != null)
                        {
                            // Parameter override
                            placeholderPopUpLabelDataID = AdvGame.GetReferences().variablesManager.ShowPlaceholderPresetData(placeholderPopUpLabelDataID);
                            PopUpLabelData popUpLabelData = AdvGame.GetReferences().variablesManager.GetPopUpLabelData(placeholderPopUpLabelDataID);

                            if (popUpLabelData != null && placeholderPopUpLabelDataID > 0)
                            {
                                // Show placeholder labels
                                intValue = EditorGUILayout.Popup("Index value:", intValue, popUpLabelData.GenerateEditorPopUpLabels());
                            }
                            else
                            {
                                intValue = EditorGUILayout.IntField("Index value:", intValue);
                            }
                        }
                        else
                        {
                            intValue = EditorGUILayout.IntField("Index value:", intValue);
                        }
                    }
                }
                break;

            case VariableType.String:
                boolCondition = (BoolCondition)EditorGUILayout.EnumPopup("Condition:", boolCondition);
                if (getVarMethod == GetVarMethod.EnteredValue)
                {
                    checkParameterID = Action.ChooseParameterGUI("String:", parameters, checkParameterID, ParameterType.String);
                    if (checkParameterID < 0)
                    {
                        stringValue = EditorGUILayout.TextField("String:", stringValue);
                    }
                }
                checkCase = EditorGUILayout.Toggle("Case-sensitive?", checkCase);
                break;

            case VariableType.Vector3:
                vectorCondition = (VectorCondition)EditorGUILayout.EnumPopup("Condition:", vectorCondition);
                if (getVarMethod == GetVarMethod.EnteredValue)
                {
                    if (vectorCondition == VectorCondition.MagnitudeGreaterThan)
                    {
                        checkParameterID = Action.ChooseParameterGUI("Float:", parameters, checkParameterID, ParameterType.Float);
                        if (checkParameterID < 0)
                        {
                            floatValue = EditorGUILayout.FloatField("Float:", floatValue);
                        }
                    }
                    else if (vectorCondition == VectorCondition.EqualTo)
                    {
                        checkParameterID = Action.ChooseParameterGUI("Vector3:", parameters, checkParameterID, ParameterType.Vector3);
                        if (checkParameterID < 0)
                        {
                            EditorGUILayout.BeginHorizontal();
                            EditorGUILayout.LabelField("Vector3:", GUILayout.MaxWidth(60f));
                            vector3Value = EditorGUILayout.Vector3Field("", vector3Value);
                            EditorGUILayout.EndHorizontal();
                        }
                    }
                }
                break;

            default:
                break;
            }

            if (getVarMethod == GetVarMethod.GlobalVariable)
            {
                if (AdvGame.GetReferences().variablesManager == null || AdvGame.GetReferences().variablesManager.vars == null || AdvGame.GetReferences().variablesManager.vars.Count == 0)
                {
                    EditorGUILayout.HelpBox("No Global variables exist!", MessageType.Info);
                }
                else
                {
                    checkParameterID = Action.ChooseParameterGUI("Global variable:", parameters, checkParameterID, ParameterType.GlobalVariable);
                    if (checkParameterID < 0)
                    {
                        compareVariableID = ShowVarSelectorGUI(AdvGame.GetReferences().variablesManager.vars, compareVariableID, "Global variable:");
                    }
                }
            }
            else if (getVarMethod == GetVarMethod.LocalVariable)
            {
                if (localVariables == null || localVariables.localVars == null || localVariables.localVars.Count == 0)
                {
                    EditorGUILayout.HelpBox("No Local variables exist!", MessageType.Info);
                }
                else
                {
                    checkParameterID = Action.ChooseParameterGUI("Local variable:", parameters, checkParameterID, ParameterType.LocalVariable);
                    if (checkParameterID < 0)
                    {
                        compareVariableID = ShowVarSelectorGUI(localVariables.localVars, compareVariableID, "Local variable:");
                    }
                }
            }
            else if (getVarMethod == GetVarMethod.ComponentVariable)
            {
                checkParameterID = Action.ChooseParameterGUI("Component variable:", parameters, checkParameterID, ParameterType.ComponentVariable);
                if (checkParameterID < 0)
                {
                    compareVariables           = (Variables)EditorGUILayout.ObjectField("Component", compareVariables, typeof(Variables), true);
                    compareVariablesConstantID = FieldToID <Variables> (compareVariables, compareVariablesConstantID);
                    compareVariables           = IDToField <Variables> (compareVariables, compareVariablesConstantID, false);

                    if (compareVariables != null)
                    {
                        compareVariableID = ShowVarSelectorGUI(compareVariables.vars, compareVariableID, "Component variable:");
                    }
                }
            }

            return(ID);
        }
		private int ShowVarGUI (List<ActionParameter> parameters, List<GVar> vars, int ID, bool changeID)
		{
			if (vars.Count > 0)
			{
				if (changeID)
				{
					ID = ShowVarSelectorGUI (vars, ID);
				}
				variableNumber = Mathf.Min (variableNumber, vars.Count-1);
				getVarMethod = (GetVarMethod) EditorGUILayout.EnumPopup ("Compare with:", getVarMethod);

				if (parameters == null || parameters.Count == 0)
				{
					EditorGUILayout.BeginHorizontal ();
				}

				if (vars [variableNumber].type == VariableType.Boolean)
				{
					boolCondition = (BoolCondition) EditorGUILayout.EnumPopup (boolCondition);
					if (getVarMethod == GetVarMethod.EnteredValue)
					{
						checkParameterID = Action.ChooseParameterGUI ("Boolean:", parameters, checkParameterID, ParameterType.Boolean);
						if (checkParameterID < 0)
						{
							boolValue = (BoolValue) EditorGUILayout.EnumPopup ("Boolean:", boolValue);
						}
					}
				}
				else if (vars [variableNumber].type == VariableType.Integer)
				{
					intCondition = (IntCondition) EditorGUILayout.EnumPopup (intCondition);
					if (getVarMethod == GetVarMethod.EnteredValue)
					{
						checkParameterID = Action.ChooseParameterGUI ("Integer:", parameters, checkParameterID, ParameterType.Integer);
						if (checkParameterID < 0)
						{
							intValue = EditorGUILayout.IntField ("Integer:", intValue);
						}
					}
				}
				else if (vars [variableNumber].type == VariableType.PopUp)
				{
					intCondition = (IntCondition) EditorGUILayout.EnumPopup (intCondition);
					if (getVarMethod == GetVarMethod.EnteredValue)
					{
						checkParameterID = Action.ChooseParameterGUI ("Value:", parameters, checkParameterID, ParameterType.Integer);
						if (checkParameterID < 0)
						{
							intValue = EditorGUILayout.Popup ("Value:", intValue, vars [variableNumber].popUps);
						}
					}
				}
				else if (vars [variableNumber].type == VariableType.Float)
				{
					intCondition = (IntCondition) EditorGUILayout.EnumPopup (intCondition);
					if (getVarMethod == GetVarMethod.EnteredValue)
					{
						checkParameterID = Action.ChooseParameterGUI ("Float:", parameters, checkParameterID, ParameterType.Float);
						if (checkParameterID < 0)
						{
							floatValue = EditorGUILayout.FloatField ("Float:", floatValue);
						}
					}
				}
				else if (vars [variableNumber].type == VariableType.String)
				{
					boolCondition = (BoolCondition) EditorGUILayout.EnumPopup (boolCondition);
					if (getVarMethod == GetVarMethod.EnteredValue)
					{
						checkParameterID = Action.ChooseParameterGUI ("String:", parameters, checkParameterID, ParameterType.String);
						if (checkParameterID < 0)
						{
							stringValue = EditorGUILayout.TextField ("String:", stringValue);
						}
					}
				}

				if (getVarMethod == GetVarMethod.GlobalVariable)
				{
					if (!variablesManager)
					{
						variablesManager = AdvGame.GetReferences ().variablesManager;
					}

					if (variablesManager == null || variablesManager.vars == null || variablesManager.vars.Count == 0)
					{
						EditorGUILayout.HelpBox ("No Global variables exist!", MessageType.Info);
					}
					else
					{
						checkParameterID = Action.ChooseParameterGUI ("Global variable:", parameters, checkParameterID, ParameterType.GlobalVariable);
						if (checkParameterID < 0)
						{
							compareVariableID = ShowVarSelectorGUI (variablesManager.vars, compareVariableID);
						}
					}
				}
				else if (getVarMethod == GetVarMethod.LocalVariable)
				{
					if (!localVariables && GameObject.FindWithTag (Tags.gameEngine) && GameObject.FindWithTag (Tags.gameEngine).GetComponent<LocalVariables>())
					{
						localVariables = GameObject.FindWithTag (Tags.gameEngine).GetComponent <LocalVariables>();
					}
					
					if (localVariables == null || localVariables.localVars == null || localVariables.localVars.Count == 0)
					{
						EditorGUILayout.HelpBox ("No Local variables exist!", MessageType.Info);
					}
					else
					{
						checkParameterID = Action.ChooseParameterGUI ("Local variable:", parameters, checkParameterID, ParameterType.LocalVariable);
						if (checkParameterID < 0)
						{
							compareVariableID = ShowVarSelectorGUI (localVariables.localVars, compareVariableID);
						}
					}
				}

				if (parameters == null || parameters.Count == 0)
				{
					EditorGUILayout.EndHorizontal ();
				}
			}
			else
			{
				EditorGUILayout.HelpBox ("No variables exist!", MessageType.Info);
				ID = -1;
				variableNumber = -1;
			}

			return ID;
		}
Example #9
0
        private void ShowVarGUI(List<ActionParameter> parameters, ActionParameter parameter)
        {
            if (parameters == null || parameters.Count == 0 || parameter == null)
            {
                EditorGUILayout.HelpBox ("No parameters exist! Please define one in the Inspector.", MessageType.Warning);
                parameterLabel = "";
                return;
            }

            parameterLabel = parameter.label;
            EditorGUILayout.BeginHorizontal ();

            if (parameter.parameterType == ParameterType.Boolean)
            {
                boolCondition = (BoolCondition) EditorGUILayout.EnumPopup (boolCondition);
                boolValue = (BoolValue) EditorGUILayout.EnumPopup (boolValue);
            }
            else if (parameter.parameterType == ParameterType.Integer)
            {
                intCondition = (IntCondition) EditorGUILayout.EnumPopup (intCondition);
                intValue = EditorGUILayout.IntField (intValue);
            }
            else if (parameter.parameterType == ParameterType.Float)
            {
                intCondition = (IntCondition) EditorGUILayout.EnumPopup (intCondition);
                floatValue = EditorGUILayout.FloatField (floatValue);
            }
            else if (parameter.parameterType == ParameterType.String)
            {
                boolCondition = (BoolCondition) EditorGUILayout.EnumPopup (boolCondition);
                stringValue = EditorGUILayout.TextField (stringValue);
            }
            else if (parameter.parameterType == ParameterType.GameObject)
            {
                compareObject = (GameObject) EditorGUILayout.ObjectField ("Is equal to:", compareObject, typeof (GameObject), true);

                compareObjectConstantID = FieldToID (compareObject, compareObjectConstantID);
                compareObject = IDToField (compareObject, compareObjectConstantID, false);
            }
            else if (parameter.parameterType == ParameterType.GlobalVariable)
            {
                if (AdvGame.GetReferences ().variablesManager == null || AdvGame.GetReferences ().variablesManager.vars == null || AdvGame.GetReferences ().variablesManager.vars.Count == 0)
                {
                    EditorGUILayout.HelpBox ("No Global variables exist!", MessageType.Info);
                }
                else
                {
                    compareVariableID = ShowVarSelectorGUI (AdvGame.GetReferences ().variablesManager.vars, compareVariableID);
                }
            }
            else if (parameter.parameterType == ParameterType.InventoryItem)
            {
                ShowInvSelectorGUI (compareVariableID);
            }
            else if (parameter.parameterType == ParameterType.LocalVariable)
            {
                if (isAssetFile)
                {
                    EditorGUILayout.HelpBox ("Cannot compare local variables in an asset file.", MessageType.Warning);
                }
                else if (KickStarter.localVariables == null || KickStarter.localVariables.localVars == null || KickStarter.localVariables.localVars.Count == 0)
                {
                    EditorGUILayout.HelpBox ("No Local variables exist!", MessageType.Info);
                }
                else
                {
                    compareVariableID = ShowVarSelectorGUI (KickStarter.localVariables.localVars, compareVariableID);
                }
            }

            EditorGUILayout.EndHorizontal ();
        }
Example #10
0
    void SetupStateMachine()
    {
        // Conditions
        BoolCondition IsDeadCond       = new BoolCondition(IsDead);
        BoolCondition IsAlertedCond    = new BoolCondition(IsAlerted);
        NotCondition  IsNotAlertedCond = new NotCondition(IsAlertedCond);

        // Transitions
        Transition Dying        = new Transition("Dying", IsDeadCond, DyingFunc);
        Transition AlertedTrans = new Transition("Alerted", IsAlertedCond);
        Transition UnAlerted    = new Transition("UnAlerted", IsNotAlertedCond);

        // States
        State Alive = new State("Alive",
                                new List <Transition>()
        {
            Dying, AlertedTrans
        },
                                new List <Action>()
        {
        },
                                new List <Action>()
        {
            AliveUpdate
        },
                                new List <Action>()
        {
            EndAlive
        });

        State Alerted = new State("Alerted",
                                  new List <Transition>()
        {
            Dying, UnAlerted
        },
                                  new List <Action>()
        {
            BeginAlerted
        },
                                  new List <Action>()
        {
            AlertedUpdate, AliveUpdate
        },
                                  new List <Action>()
        {
            EndAlerted
        });

        State Dead = new State("Dead",
                               null,
                               new List <Action>()
        {
        },
                               new List <Action>()
        {
        },
                               null);

        // Target States
        Dying.SetTargetState(Dead);
        AlertedTrans.SetTargetState(Alerted);
        UnAlerted.SetTargetState(Alive);

        // init machine
        myStateMachine = new StateMachine(null, Alive, Dead, Alerted);
        myStateMachine.InitMachine();
    }
    void SetupPlayerStateMachine()
    {
        // Conditions
        BoolCondition IsDeadCond    = new BoolCondition(IsPlayerDead);
        NotCondition  IsNotDeadCond = new NotCondition(IsDeadCond);

        BoolCondition IsAimingCond    = new BoolCondition(IsPlayerAiming);
        NotCondition  IsNotAimingCond = new NotCondition(IsAimingCond);

        // Transitions
        Transition Death       = new Transition("Death", IsDeadCond, Dying);
        Transition Resurection = new Transition("Resurect", IsNotDeadCond);

        Transition StartAiming = new Transition("Begin Aim", IsAimingCond, BeginAim);
        Transition EndAiming   = new Transition("End Aim", IsNotAimingCond, EndAim);

        // States
        State Alive = new State("Alive",
                                new List <Transition>()
        {
            Death
        },
                                new List <Action>()
        {
            BeginAlive
        },
                                new List <Action>()
        {
            AliveUpdate
        },
                                new List <Action>()
        {
            EndAlive
        });

        State Dead = new State("Dead",
                               new List <Transition>()
        {
            Resurection
        },
                               null,
                               null,
                               null);

        State NotAiming = new State("Not Aiming",
                                    new List <Transition>()
        {
            StartAiming
        },
                                    null,
                                    new List <Action>()
        {
            AimUpdate
        },
                                    null);

        State Aiming = new State("Aiming",
                                 new List <Transition>()
        {
            EndAiming
        },
                                 null,
                                 new List <Action>()
        {
            AimUpdate
        },
                                 null);

        // Transition Target States
        Death.SetTargetState(Dead);
        Resurection.SetTargetState(Alive);

        StartAiming.SetTargetState(Aiming);
        EndAiming.SetTargetState(NotAiming);

        // Create Machine
        PSM = new StateMachine(null, Alive, Dead);
        PSM.InitMachine();

        AimStateMachine = new StateMachine(null, Aiming, NotAiming);
        AimStateMachine.InitMachine();
    }
Example #12
0
 private bool KFlowFunctionTrue(BoolCondition cond, ref int programCounter)
 {
     return true;
 }
Example #13
0
 public void setTypeOfComparison(VariableForComparison type)
 {
     variableForComparison = type;
     condition = KFunctionCompare;
 }
Example #14
0
    public void ShowGUI(int lowerValue, int upperValue)
    {
        if (!variablesManager)
        {
            variablesManager = AdvGame.GetReferences().variablesManager;
        }

        if (variablesManager)
        {
            // Create a string List of the field's names (for the PopUp box)
            List <string> labelList = new List <string>();

            int i = 0;
            variableNumber = -1;

            if (variablesManager.vars.Count > 0)
            {
                foreach (GVar _var in variablesManager.vars)
                {
                    labelList.Add(_var.label);

                    // If a GlobalVar variable has been removed, make sure selected variable is still valid
                    if (_var.id == variableID)
                    {
                        variableNumber = i;
                    }

                    i++;
                }

                if (variableNumber == -1)
                {
                    // Wasn't found (variable was deleted?), so revert to zero
                    Debug.LogWarning("Previously chosen variable no longer exists!");
                    variableNumber = 0;
                    variableID     = 0;
                }

                EditorGUILayout.BeginHorizontal();

                variableNumber = EditorGUILayout.Popup(variableNumber, labelList.ToArray());
                variableID     = variablesManager.vars[variableNumber].id;

                if (variablesManager.vars[variableNumber].type == VariableType.Boolean)
                {
                    boolCondition = (BoolCondition)EditorGUILayout.EnumPopup(boolCondition);
                    boolValue     = (BoolValue)EditorGUILayout.EnumPopup(boolValue);
                }
                else
                {
                    intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition);
                    intValue     = EditorGUILayout.IntField(intValue);
                }

                EditorGUILayout.EndHorizontal();

                if (lowerValue > upperValue || lowerValue == upperValue)
                {
                    lowerValue = upperValue;
                }

                resultActionTrue = (Action.ResultAction)EditorGUILayout.EnumPopup("If condition is met:", (Action.ResultAction)resultActionTrue);
                if (resultActionTrue == Action.ResultAction.RunCutscene)
                {
                    linkedCutsceneTrue = (Cutscene)EditorGUILayout.ObjectField("Cutscene to run:", linkedCutsceneTrue, typeof(Cutscene), true);
                }
                else if (resultActionTrue == Action.ResultAction.Skip)
                {
                    skipActionTrue = EditorGUILayout.IntSlider("Action # to skip to:", skipActionTrue, lowerValue, upperValue);
                }

                resultActionFail = (Action.ResultAction)EditorGUILayout.EnumPopup("If condition is not met:", (Action.ResultAction)resultActionFail);
                if (resultActionFail == Action.ResultAction.RunCutscene)
                {
                    linkedCutsceneFail = (Cutscene)EditorGUILayout.ObjectField("Cutscene to run:", linkedCutsceneFail, typeof(Cutscene), true);
                }
                else if (resultActionFail == Action.ResultAction.Skip)
                {
                    skipActionFail = EditorGUILayout.IntSlider("Action # to skip to:", skipActionFail, lowerValue, upperValue);
                }
            }
            else
            {
                EditorGUILayout.LabelField("No global variables exist!");
                variableID     = -1;
                variableNumber = -1;
            }
        }
    }
Example #15
0
 public bool ForCommand(BoolCondition condition, ref int programCounter)
 {
     if (condition() == false)
         programCounter = getEndForFromIndex(programCounter) + 1;
     return true;
 }
Example #16
0
 public bool EndForCommand(BoolCondition condition, ref int programCounter)
 {
     // Subtract 2 to jump the endFor
     programCounter = getBeginForFromIndex(programCounter - 2);
     return true;
 }