예제 #1
0
        public void SetValue(int newValue, SetVarMethod setVarMethod)
        {
            if (setVarMethod == SetVarMethod.IncreaseByValue)
            {
                val += newValue;
            }
            else if (setVarMethod == SetVarMethod.SetAsRandom)
            {
                val = Random.Range(0, newValue);
            }
            else
            {
                val = newValue;
            }

            if (type == VariableType.Boolean)
            {
                if (val > 0)
                {
                    val = 1;
                }
                else
                {
                    val = 0;
                }
            }
        }
예제 #2
0
 /**
  * <summary>Sets the value if its type is Float.</summary>
  * <param name = "newValue">The new float value</param>
  * <param name = "setVarMethod">How the new value affects the old (replaces, increases by, or randomises)</param>
  */
 public void SetFloatValue(float newValue, SetVarMethod setVarMethod = SetVarMethod.SetValue)
 {
     if (setVarMethod == SetVarMethod.IncreaseByValue)
     {
         floatVal += newValue;
     }
     else if (setVarMethod == SetVarMethod.SetAsRandom)
     {
         floatVal = Random.Range(0f, newValue);
     }
     else
     {
         floatVal = newValue;
     }
 }
예제 #3
0
        /**
         * <summary>Sets the value if its type is Float.</summary>
         * <param name = "newValue">The new float value</param>
         * <param name = "setVarMethod">How the new value affects the old (replaces, increases by, or randomises)</param>
         */
        public void SetFloatValue(float newValue, SetVarMethod setVarMethod = SetVarMethod.SetValue)
        {
            float originalValue = floatVal;

            if (setVarMethod == SetVarMethod.IncreaseByValue)
            {
                FloatValue = originalValue + newValue;
            }
            else if (setVarMethod == SetVarMethod.SetAsRandom)
            {
                FloatValue = Random.Range(0f, newValue);
            }
            else
            {
                FloatValue = newValue;
            }
        }
예제 #4
0
        /**
         * <summary>Sets the value if its type is Integer, Boolean or PopUp.</summary>
         * <param name = "newValue">The new integer value</param>
         * <param name = "setVarMethod">How the new value affects the old (replaces, increases by, or randomises)</param>
         */
        public void SetValue(int newValue, SetVarMethod setVarMethod = SetVarMethod.SetValue)
        {
            int originalValue = val;

            if (setVarMethod == SetVarMethod.IncreaseByValue)
            {
                val += newValue;
            }
            else if (setVarMethod == SetVarMethod.SetAsRandom)
            {
                val = Random.Range(0, newValue);
            }
            else
            {
                val = newValue;
            }

            if (type == VariableType.Boolean)
            {
                if (val > 0)
                {
                    val = 1;
                }
                else
                {
                    val = 0;
                }
            }
            else if (type == VariableType.PopUp)
            {
                if (val < 0)
                {
                    val = 0;
                }
                else if (val >= popUps.Length)
                {
                    val = popUps.Length - 1;
                }
            }

            if (originalValue != val)
            {
                KickStarter.eventManager.Call_OnVariableChange(this);
            }
        }
예제 #5
0
        /**
         * <summary>Sets the value if its type is Float.</summary>
         * <param name = "newValue">The new float value</param>
         * <param name = "setVarMethod">How the new value affects the old (replaces, increases by, or randomises)</param>
         */
        public void SetFloatValue(float newValue, SetVarMethod setVarMethod = SetVarMethod.SetValue)
        {
            float originalValue = floatVal;

            if (setVarMethod == SetVarMethod.IncreaseByValue)
            {
                floatVal += newValue;
            }
            else if (setVarMethod == SetVarMethod.SetAsRandom)
            {
                floatVal = Random.Range(0f, newValue);
            }
            else
            {
                floatVal = newValue;
            }

            if (originalValue != floatVal)
            {
                KickStarter.eventManager.Call_OnVariableChange(this);
            }
        }
예제 #6
0
        /**
         * <summary>Sets the value if its type is Integer, Boolean or PopUp.</summary>
         * <param name = "newValue">The new integer value</param>
         * <param name = "setVarMethod">How the new value affects the old (replaces, increases by, or randomises)</param>
         */
        public void SetValue(int newValue, SetVarMethod setVarMethod = SetVarMethod.SetValue)
        {
            if (setVarMethod == SetVarMethod.IncreaseByValue)
            {
                newValue = IntegerValue + newValue;
            }
            else if (setVarMethod == SetVarMethod.SetAsRandom)
            {
                newValue = Random.Range(0, newValue);
            }

            if (type == VariableType.Boolean)
            {
                BooleanValue = (newValue > 0);
                return;
            }
            else if (type == VariableType.PopUp)
            {
                newValue = Mathf.Clamp(newValue, 0, GetNumPopUpValues() - 1);
            }

            IntegerValue = newValue;
        }
예제 #7
0
        private void ShowVarGUI(List <GVar> vars, List <ActionParameter> parameters, ParameterType parameterType)
        {
            // Create a string List of the field's names (for the PopUp box)
            List <string> labelList = new List <string>();

            int i = 0;

            if (parameterID == -1)
            {
                variableNumber = -1;
            }

            if (vars.Count > 0)
            {
                foreach (GVar _var in 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 && (parameters == null || parameters.Count == 0 || parameterID == -1))
                {
                    // Wasn't found (variable was deleted?), so revert to zero
                    Debug.LogWarning("Previously chosen variable no longer exists!");
                    variableNumber = 0;
                    variableID     = 0;
                }


                parameterID = Action.ChooseParameterGUI("Variable:", parameters, parameterID, parameterType);
                if (parameterID >= 0)
                {
                    //variableNumber = 0;
                    variableNumber = Mathf.Min(variableNumber, vars.Count - 1);
                    variableID     = -1;
                }
                else
                {
                    variableNumber = EditorGUILayout.Popup("Variable:", variableNumber, labelList.ToArray());
                    variableID     = vars [variableNumber].id;
                }

                string label = "Statement: ";

                if (vars [variableNumber].type == VariableType.Boolean)
                {
                    setVarMethodIntBool = (SetVarMethodIntBool)EditorGUILayout.EnumPopup("New value is:", setVarMethodIntBool);

                    label += "=";
                    if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
                    {
                        setParameterID = Action.ChooseParameterGUI(label, parameters, setParameterID, ParameterType.Boolean);
                        if (setParameterID < 0)
                        {
                            boolValue = (BoolValue)EditorGUILayout.EnumPopup(label, boolValue);
                        }
                    }
                    else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
                    {
                        ShowMecanimGUI();
                    }
                }
                if (vars [variableNumber].type == VariableType.PopUp)
                {
                    label   += "=";
                    intValue = EditorGUILayout.Popup(label, intValue, vars[variableNumber].popUps);
                }
                else if (vars [variableNumber].type == VariableType.Integer)
                {
                    setVarMethodIntBool = (SetVarMethodIntBool)EditorGUILayout.EnumPopup("New value is:", setVarMethodIntBool);

                    if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
                    {
                        setVarMethod = (SetVarMethod)EditorGUILayout.EnumPopup("Method:", setVarMethod);

                        if (setVarMethod == SetVarMethod.Formula)
                        {
                            label += "=";

                            setParameterID = Action.ChooseParameterGUI(label, parameters, setParameterID, ParameterType.String);
                            if (setParameterID < 0)
                            {
                                formula = EditorGUILayout.TextField(label, formula);
                            }

                                                        #if UNITY_WP8
                            EditorGUILayout.HelpBox("This feature is not available for Windows Phone 8.", MessageType.Warning);
                                                        #endif
                        }
                        else
                        {
                            if (setVarMethod == SetVarMethod.IncreaseByValue)
                            {
                                label += "+=";
                            }
                            else if (setVarMethod == SetVarMethod.SetValue)
                            {
                                label += "=";
                            }
                            else if (setVarMethod == SetVarMethod.SetAsRandom)
                            {
                                label += ("= 0 to");
                            }

                            setParameterID = Action.ChooseParameterGUI(label, parameters, setParameterID, ParameterType.Integer);
                            if (setParameterID < 0)
                            {
                                intValue = EditorGUILayout.IntField(label, intValue);

                                if (setVarMethod == SetVarMethod.SetAsRandom && intValue < 0)
                                {
                                    intValue = 0;
                                }
                            }
                        }
                    }
                    else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
                    {
                        ShowMecanimGUI();
                    }
                }
                else if (vars [variableNumber].type == VariableType.Float)
                {
                    setVarMethodIntBool = (SetVarMethodIntBool)EditorGUILayout.EnumPopup("New value is:", setVarMethodIntBool);

                    if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
                    {
                        setVarMethod = (SetVarMethod)EditorGUILayout.EnumPopup("Method:", setVarMethod);

                        if (setVarMethod == SetVarMethod.Formula)
                        {
                            label += "=";

                            setParameterID = Action.ChooseParameterGUI(label, parameters, setParameterID, ParameterType.String);
                            if (setParameterID < 0)
                            {
                                formula = EditorGUILayout.TextField(label, formula);
                            }

                                                        #if UNITY_WP8
                            EditorGUILayout.HelpBox("This feature is not available for Windows Phone 8.", MessageType.Warning);
                                                        #endif
                        }
                        else
                        {
                            if (setVarMethod == SetVarMethod.IncreaseByValue)
                            {
                                label += "+=";
                            }
                            else if (setVarMethod == SetVarMethod.SetValue)
                            {
                                label += "=";
                            }
                            else if (setVarMethod == SetVarMethod.SetAsRandom)
                            {
                                label += "= 0 to";
                            }

                            setParameterID = Action.ChooseParameterGUI(label, parameters, setParameterID, ParameterType.Float);
                            if (setParameterID < 0)
                            {
                                floatValue = EditorGUILayout.FloatField(label, floatValue);

                                if (setVarMethod == SetVarMethod.SetAsRandom && floatValue < 0f)
                                {
                                    floatValue = 0f;
                                }
                            }
                        }
                    }
                    else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
                    {
                        ShowMecanimGUI();
                    }
                }
                else if (vars [variableNumber].type == VariableType.String)
                {
                    setVarMethodString = (SetVarMethodString)EditorGUILayout.EnumPopup("New value is:", setVarMethodString);

                    label += "=";
                    if (setVarMethodString == SetVarMethodString.EnteredHere)
                    {
                        setParameterID = Action.ChooseParameterGUI(label, parameters, setParameterID, ParameterType.String);
                        if (setParameterID < 0)
                        {
                            stringValue = EditorGUILayout.TextField(label, stringValue);
                        }
                    }
                    else if (setVarMethodString == SetVarMethodString.SetAsMenuElementText)
                    {
                        menuName    = EditorGUILayout.TextField("Menu name:", menuName);
                        elementName = EditorGUILayout.TextField("Element name:", elementName);

                        slotNumberParameterID = Action.ChooseParameterGUI("Slot # (optional):", parameters, slotNumberParameterID, ParameterType.Integer);
                        if (slotNumberParameterID < 0)
                        {
                            slotNumber = EditorGUILayout.IntField("Slot # (optional):", slotNumber);
                        }
                    }
                }

                AfterRunningOption();
            }
            else
            {
                EditorGUILayout.HelpBox("No variables exist!", MessageType.Info);
                variableID     = -1;
                variableNumber = -1;
            }
        }
예제 #8
0
        private void SetVariable(GVar var, VariableLocation location, bool doSkip)
        {
            if (var == null)
            {
                return;
            }

            if (location == VariableLocation.Global)
            {
                var.Download();
            }

            if (var.type == VariableType.Integer)
            {
                int _value = 0;

                if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
                {
                    if (setVarMethod == SetVarMethod.Formula)
                    {
                        _value = (int)AdvGame.CalculateFormula(AdvGame.ConvertTokens(formula));
                    }
                    else
                    {
                        _value = intValue;
                    }
                }
                else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
                {
                    if (animator && parameterName != "")
                    {
                        _value       = animator.GetInteger(parameterName);
                        setVarMethod = SetVarMethod.SetValue;
                    }
                }

                if (setVarMethod == SetVarMethod.IncreaseByValue && doSkip)
                {
                    var.RestoreBackupValue();
                }

                var.SetValue(_value, setVarMethod);

                if (doSkip)
                {
                    var.BackupValue();
                }
            }
            if (var.type == VariableType.Float)
            {
                float _value = 0;

                if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
                {
                    if (setVarMethod == SetVarMethod.Formula)
                    {
                        _value = (float)AdvGame.CalculateFormula(AdvGame.ConvertTokens(formula));
                    }
                    else
                    {
                        _value = floatValue;
                    }
                }
                else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
                {
                    if (animator && parameterName != "")
                    {
                        _value       = animator.GetFloat(parameterName);
                        setVarMethod = SetVarMethod.SetValue;
                    }
                }

                if (setVarMethod == SetVarMethod.IncreaseByValue && doSkip)
                {
                    var.RestoreBackupValue();
                }

                var.SetValue(_value, setVarMethod);

                if (doSkip)
                {
                    var.BackupValue();
                }
            }
            else if (var.type == VariableType.Boolean)
            {
                int _value = 0;

                if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
                {
                    _value = (int)boolValue;
                }
                else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
                {
                    if (animator && parameterName != "")
                    {
                        if (animator.GetBool(parameterName))
                        {
                            _value = 1;
                        }
                    }
                }

                var.SetValue(_value, SetVarMethod.SetValue);
            }
            else if (var.type == VariableType.PopUp)
            {
                var.SetValue(intValue);
            }
            else if (var.type == VariableType.String)
            {
                string _value = "";

                if (setVarMethodString == SetVarMethodString.EnteredHere)
                {
                    _value = AdvGame.ConvertTokens(stringValue);
                }
                else if (setVarMethodString == SetVarMethodString.SetAsMenuElementText)
                {
                    MenuElement menuElement = PlayerMenus.GetElementWithName(menuName, elementName);
                    if (menuElement != null)
                    {
                        if (menuElement is MenuInput)
                        {
                            MenuInput menuInput = (MenuInput)menuElement;
                            _value = menuInput.GetContents();

                            if ((Options.GetLanguageName() == "Arabic" || Options.GetLanguageName() == "Hebrew") && _value.Length > 0)
                            {
                                // Invert
                                char[] charArray = _value.ToCharArray();
                                _value = "";
                                for (int i = charArray.Length - 1; i >= 0; i--)
                                {
                                    _value += charArray[i];
                                }
                            }
                        }
                        else
                        {
                            PlayerMenus.GetMenuWithName(menuName).Recalculate();
                            menuElement.PreDisplay(slotNumber, Options.GetLanguage(), false);
                            _value = menuElement.GetLabel(slotNumber, Options.GetLanguage());
                        }
                    }
                    else
                    {
                        Debug.LogWarning("Could not find MenuInput '" + elementName + "' in Menu '" + menuName + "'");
                    }
                }

                var.SetValue(_value);
            }

            if (location == VariableLocation.Global)
            {
                var.Upload();
            }

            KickStarter.actionListManager.VariableChanged();
        }
예제 #9
0
        private void ShowVarGUI(List<GVar> vars, List<ActionParameter> parameters, ParameterType parameterType)
        {
            // Create a string List of the field's names (for the PopUp box)
            List<string> labelList = new List<string>();

            int i = 0;
            if (parameterID == -1)
            {
                variableNumber = -1;
            }

            if (vars.Count > 0)
            {
                foreach (GVar _var in 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 && (parameters == null || parameters.Count == 0 || parameterID == -1))
                {
                    // Wasn't found (variable was deleted?), so revert to zero
                    Debug.LogWarning ("Previously chosen variable no longer exists!");
                    variableNumber = 0;
                    variableID = 0;
                }

                parameterID = Action.ChooseParameterGUI ("Variable:", parameters, parameterID, parameterType);
                if (parameterID >= 0)
                {
                    //variableNumber = 0;
                    variableNumber = Mathf.Min (variableNumber, vars.Count-1);
                    variableID = -1;
                }
                else
                {
                    variableNumber = EditorGUILayout.Popup ("Variable:", variableNumber, labelList.ToArray());
                    variableID = vars [variableNumber].id;
                }

                string label = "Statement: ";

                if (vars [variableNumber].type == VariableType.Boolean)
                {
                    setVarMethodIntBool = (SetVarMethodIntBool) EditorGUILayout.EnumPopup ("New value is:", setVarMethodIntBool);

                    label += "=";
                    if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
                    {
                        setParameterID = Action.ChooseParameterGUI (label, parameters, setParameterID, ParameterType.Boolean);
                        if (setParameterID < 0)
                        {
                            boolValue = (BoolValue) EditorGUILayout.EnumPopup (label, boolValue);
                        }
                    }
                    else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
                    {
                        ShowMecanimGUI ();
                    }
                }
                if (vars [variableNumber].type == VariableType.PopUp)
                {
                    label += "=";
                    intValue = EditorGUILayout.Popup (label, intValue, vars[variableNumber].popUps);
                }
                else if (vars [variableNumber].type == VariableType.Integer)
                {
                    setVarMethodIntBool = (SetVarMethodIntBool) EditorGUILayout.EnumPopup ("New value is:", setVarMethodIntBool);

                    if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
                    {
                        setVarMethod = (SetVarMethod) EditorGUILayout.EnumPopup ("Method:", setVarMethod);

                        if (setVarMethod == SetVarMethod.Formula)
                        {
                            label += "=";

                            setParameterID = Action.ChooseParameterGUI (label, parameters, setParameterID, ParameterType.String);
                            if (setParameterID < 0)
                            {
                                formula = EditorGUILayout.TextField (label, formula);
                            }

                            #if UNITY_WP8
                            EditorGUILayout.HelpBox ("This feature is not available for Windows Phone 8.", MessageType.Warning);
                            #endif
                        }
                        else
                        {
                            if (setVarMethod == SetVarMethod.IncreaseByValue)
                            {
                                label += "+=";
                            }
                            else if (setVarMethod == SetVarMethod.SetValue)
                            {
                                label += "=";
                            }
                            else if (setVarMethod == SetVarMethod.SetAsRandom)
                            {
                                label += ("= 0 to");
                            }

                            setParameterID = Action.ChooseParameterGUI (label, parameters, setParameterID, ParameterType.Integer);
                            if (setParameterID < 0)
                            {
                                intValue = EditorGUILayout.IntField (label, intValue);

                                if (setVarMethod == SetVarMethod.SetAsRandom && intValue < 0)
                                {
                                    intValue = 0;
                                }
                            }
                        }

                    }
                    else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
                    {
                        ShowMecanimGUI ();
                    }
                }
                else if (vars [variableNumber].type == VariableType.Float)
                {
                    setVarMethodIntBool = (SetVarMethodIntBool) EditorGUILayout.EnumPopup ("New value is:", setVarMethodIntBool);

                    if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
                    {
                        setVarMethod = (SetVarMethod) EditorGUILayout.EnumPopup ("Method:", setVarMethod);

                        if (setVarMethod == SetVarMethod.Formula)
                        {
                            label += "=";

                            setParameterID = Action.ChooseParameterGUI (label, parameters, setParameterID, ParameterType.String);
                            if (setParameterID < 0)
                            {
                                formula = EditorGUILayout.TextField (label, formula);
                            }

                            #if UNITY_WP8
                            EditorGUILayout.HelpBox ("This feature is not available for Windows Phone 8.", MessageType.Warning);
                            #endif
                        }
                        else
                        {
                            if (setVarMethod == SetVarMethod.IncreaseByValue)
                            {
                                label += "+=";
                            }
                            else if (setVarMethod == SetVarMethod.SetValue)
                            {
                                label += "=";
                            }
                            else if (setVarMethod == SetVarMethod.SetAsRandom)
                            {
                                label += "= 0 to";
                            }

                            setParameterID = Action.ChooseParameterGUI (label, parameters, setParameterID, ParameterType.Float);
                            if (setParameterID < 0)
                            {
                                floatValue = EditorGUILayout.FloatField (label, floatValue);

                                if (setVarMethod == SetVarMethod.SetAsRandom && floatValue < 0f)
                                {
                                    floatValue = 0f;
                                }
                            }
                        }
                    }
                    else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
                    {
                        ShowMecanimGUI ();
                    }
                }
                else if (vars [variableNumber].type == VariableType.String)
                {
                    setVarMethodString = (SetVarMethodString) EditorGUILayout.EnumPopup ("New value is:", setVarMethodString);

                    label += "=";
                    if (setVarMethodString == SetVarMethodString.EnteredHere)
                    {
                        setParameterID = Action.ChooseParameterGUI (label, parameters, setParameterID, ParameterType.String);
                        if (setParameterID < 0)
                        {
                            stringValue = EditorGUILayout.TextField (label, stringValue);
                        }
                    }
                    else if (setVarMethodString == SetVarMethodString.SetAsMenuElementText)
                    {
                        menuName = EditorGUILayout.TextField ("Menu name:", menuName);
                        elementName = EditorGUILayout.TextField ("Element name:", elementName);

                        slotNumberParameterID = Action.ChooseParameterGUI ("Slot # (optional):", parameters, slotNumberParameterID, ParameterType.Integer);
                        if (slotNumberParameterID < 0)
                        {
                            slotNumber = EditorGUILayout.IntField ("Slot # (optional):", slotNumber);
                        }
                    }
                }

                AfterRunningOption ();
            }
            else
            {
                EditorGUILayout.HelpBox ("No variables exist!", MessageType.Info);
                variableID = -1;
                variableNumber = -1;
            }
        }
예제 #10
0
        private void SetVariable(GVar var, VariableLocation location, bool doSkip)
        {
            if (var == null)
            {
                return;
            }

            if (location == VariableLocation.Global)
            {
                var.Download ();
            }

            if (var.type == VariableType.Integer)
            {
                int _value = 0;

                if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
                {
                    if (setVarMethod == SetVarMethod.Formula)
                    {
                        _value = (int) AdvGame.CalculateFormula (AdvGame.ConvertTokens (formula));
                    }
                    else
                    {
                        _value = intValue;
                    }
                }
                else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
                {
                    if (animator && parameterName != "")
                    {
                        _value = animator.GetInteger (parameterName);
                        setVarMethod = SetVarMethod.SetValue;
                    }
                }

                if (setVarMethod == SetVarMethod.IncreaseByValue && doSkip)
                {
                    var.RestoreBackupValue ();
                }

                var.SetValue (_value, setVarMethod);

                if (doSkip)
                {
                    var.BackupValue ();
                }
            }
            if (var.type == VariableType.Float)
            {
                float _value = 0;

                if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
                {
                    if (setVarMethod == SetVarMethod.Formula)
                    {
                        _value = (float) AdvGame.CalculateFormula (AdvGame.ConvertTokens (formula));
                    }
                    else
                    {
                        _value = floatValue;
                    }
                }
                else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
                {
                    if (animator && parameterName != "")
                    {
                        _value = animator.GetFloat (parameterName);
                        setVarMethod = SetVarMethod.SetValue;
                    }
                }

                if (setVarMethod == SetVarMethod.IncreaseByValue && doSkip)
                {
                    var.RestoreBackupValue ();
                }

                var.SetFloatValue (_value, setVarMethod);

                if (doSkip)
                {
                    var.BackupValue ();
                }
            }
            else if (var.type == VariableType.Boolean)
            {
                int _value = 0;

                if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
                {
                    _value = (int) boolValue;
                }
                else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
                {
                    if (animator && parameterName != "")
                    {
                        if (animator.GetBool (parameterName))
                        {
                            _value = 1;
                        }
                    }
                }

                var.SetValue (_value, SetVarMethod.SetValue);
            }
            else if (var.type == VariableType.PopUp)
            {
                var.SetValue (intValue);
            }
            else if (var.type == VariableType.String)
            {
                string _value = "";

                if (setVarMethodString == SetVarMethodString.EnteredHere)
                {
                    _value = AdvGame.ConvertTokens (stringValue);
                }
                else if (setVarMethodString == SetVarMethodString.SetAsMenuElementText)
                {
                    MenuElement menuElement = PlayerMenus.GetElementWithName (menuName, elementName);
                    if (menuElement != null)
                    {
                        if (menuElement is MenuInput)
                        {
                            MenuInput menuInput = (MenuInput) menuElement;
                            _value = menuInput.GetContents ();

                            if ((Options.GetLanguageName () == "Arabic" || Options.GetLanguageName () == "Hebrew") && _value.Length > 0)
                            {
                                // Invert
                                char[] charArray = _value.ToCharArray ();
                                _value = "";
                                for (int i = charArray.Length-1; i >= 0; i --)
                                {
                                    _value += charArray[i];
                                }
                            }
                        }
                        else
                        {
                            PlayerMenus.GetMenuWithName (menuName).Recalculate ();
                            menuElement.PreDisplay (slotNumber, Options.GetLanguage (), false);
                            _value = menuElement.GetLabel (slotNumber, Options.GetLanguage ());
                        }
                    }
                    else
                    {
                        Debug.LogWarning ("Could not find MenuInput '" + elementName + "' in Menu '" + menuName + "'");
                    }
                }

                var.SetStringValue (_value);
            }

            if (location == VariableLocation.Global)
            {
                var.Upload ();
            }

            KickStarter.actionListManager.VariableChanged ();
        }
예제 #11
0
파일: GVar.cs 프로젝트: mcbodge/eidolon
        /**
         * <summary>Sets the value if its type is Integer, Boolean or PopUp.</summary>
         * <param name = "newValue">The new integer value</param>
         * <param name = "setVarMethod">How the new value affects the old (replaces, increases by, or randomises)</param>
         */
        public void SetValue(int newValue, SetVarMethod setVarMethod = SetVarMethod.SetValue)
        {
            if (setVarMethod == SetVarMethod.IncreaseByValue)
            {
                val += newValue;
            }
            else if (setVarMethod == SetVarMethod.SetAsRandom)
            {
                val = Random.Range (0, newValue);
            }
            else
            {
                val = newValue;
            }

            if (type == VariableType.Boolean)
            {
                if (val > 0)
                {
                    val = 1;
                }
                else
                {
                    val = 0;
                }
            }
            else if (type == VariableType.PopUp)
            {
                if (val < 0)
                {
                    val = 0;
                }
                else if (val >= popUps.Length)
                {
                    val = popUps.Length - 1;
                }
            }
        }
예제 #12
0
파일: GVar.cs 프로젝트: mcbodge/eidolon
 /**
  * <summary>Sets the value if its type is Float.</summary>
  * <param name = "newValue">The new float value</param>
  * <param name = "setVarMethod">How the new value affects the old (replaces, increases by, or randomises)</param>
  */
 public void SetFloatValue(float newValue, SetVarMethod setVarMethod = SetVarMethod.SetValue)
 {
     if (setVarMethod == SetVarMethod.IncreaseByValue)
     {
         floatVal += newValue;
     }
     else if (setVarMethod == SetVarMethod.SetAsRandom)
     {
         floatVal = Random.Range (0f, newValue);
     }
     else
     {
         floatVal = newValue;
     }
 }
예제 #13
0
        private void ShowVarGUI(List <GVar> _vars, List <ActionParameter> parameters, ParameterType parameterType, bool changeID)
        {
            // Create a string List of the field's names (for the PopUp box)
            List <string> labelList = new List <string>();

            int i = 0;

            if (parameterID == -1)
            {
                variableNumber = -1;
            }

            VariableType showType = VariableType.Boolean;

            if (changeID)
            {
                if (_vars != null && _vars.Count > 0)
                {
                    foreach (GVar _var in _vars)
                    {
                        labelList.Add(_var.label);

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

                        i++;
                    }

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

                    variableNumber = EditorGUILayout.Popup("Variable:", variableNumber, labelList.ToArray());
                    variableID     = _vars [variableNumber].id;
                    showType       = _vars[variableNumber].type;
                }
                else
                {
                    EditorGUILayout.HelpBox("No variables exist!", MessageType.Info);
                    variableID     = -1;
                    variableNumber = -1;
                    return;
                }

                placeholderType = showType;
            }
            else
            {
                showType = placeholderType;
            }
            string label = "Statement: ";

            switch (showType)
            {
            case VariableType.Boolean:
                setVarMethodIntBool = (SetVarMethodIntBool)EditorGUILayout.EnumPopup("New value is:", setVarMethodIntBool);
                label += "=";
                if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
                {
                    setParameterID = Action.ChooseParameterGUI(label, parameters, setParameterID, ParameterType.Boolean);
                    if (setParameterID < 0)
                    {
                        boolValue = (BoolValue)EditorGUILayout.EnumPopup(label, boolValue);
                    }
                }
                else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
                {
                    ShowMecanimGUI();
                }
                break;

            case VariableType.Float:
                setVarMethodIntBool = (SetVarMethodIntBool)EditorGUILayout.EnumPopup("New value is:", setVarMethodIntBool);

                if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
                {
                    setVarMethod = (SetVarMethod)EditorGUILayout.EnumPopup("Method:", setVarMethod);

                    if (setVarMethod == SetVarMethod.Formula)
                    {
                        label += "=";

                        setParameterID = Action.ChooseParameterGUI(label, parameters, setParameterID, ParameterType.String);
                        if (setParameterID < 0)
                        {
                            formula = EditorGUILayout.TextField(label, formula);
                        }

                                                        #if UNITY_WP8
                        EditorGUILayout.HelpBox("This feature is not available for Windows Phone 8.", MessageType.Warning);
                                                        #endif
                    }
                    else
                    {
                        if (setVarMethod == SetVarMethod.IncreaseByValue)
                        {
                            label += "+=";
                        }
                        else if (setVarMethod == SetVarMethod.SetValue)
                        {
                            label += "=";
                        }
                        else if (setVarMethod == SetVarMethod.SetAsRandom)
                        {
                            label += "= 0 to (exc.)";
                        }

                        setParameterID = Action.ChooseParameterGUI(label, parameters, setParameterID, ParameterType.Float);
                        if (setParameterID < 0)
                        {
                            floatValue = EditorGUILayout.FloatField(label, floatValue);

                            if (setVarMethod == SetVarMethod.SetAsRandom && floatValue < 0f)
                            {
                                floatValue = 0f;
                            }
                        }
                    }
                }
                else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
                {
                    ShowMecanimGUI();
                }
                break;

            case VariableType.Integer:
                setVarMethodIntBool = (SetVarMethodIntBool)EditorGUILayout.EnumPopup("New value is:", setVarMethodIntBool);

                if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
                {
                    setVarMethod = (SetVarMethod)EditorGUILayout.EnumPopup("Method:", setVarMethod);

                    if (setVarMethod == SetVarMethod.Formula)
                    {
                        label += "=";

                        setParameterID = Action.ChooseParameterGUI(label, parameters, setParameterID, ParameterType.String);
                        if (setParameterID < 0)
                        {
                            formula = EditorGUILayout.TextField(label, formula);
                        }

                                                        #if UNITY_WP8
                        EditorGUILayout.HelpBox("This feature is not available for Windows Phone 8.", MessageType.Warning);
                                                        #endif
                    }
                    else
                    {
                        if (setVarMethod == SetVarMethod.IncreaseByValue)
                        {
                            label += "+=";
                        }
                        else if (setVarMethod == SetVarMethod.SetValue)
                        {
                            label += "=";
                        }
                        else if (setVarMethod == SetVarMethod.SetAsRandom)
                        {
                            label += ("= 0 to");
                        }

                        setParameterID = Action.ChooseParameterGUI(label, parameters, setParameterID, ParameterType.Integer);
                        if (setParameterID < 0)
                        {
                            intValue = EditorGUILayout.IntField(label, intValue);

                            if (setVarMethod == SetVarMethod.SetAsRandom && intValue < 0)
                            {
                                intValue = 0;
                            }
                        }
                    }
                }
                else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
                {
                    ShowMecanimGUI();
                }
                break;

            case VariableType.PopUp:
                setVarMethod = (SetVarMethod)EditorGUILayout.EnumPopup("Method:", setVarMethod);

                if (setVarMethod == SetVarMethod.Formula)
                {
                    label += "=";

                    setParameterID = Action.ChooseParameterGUI(label, parameters, setParameterID, ParameterType.String);
                    if (setParameterID < 0)
                    {
                        formula = EditorGUILayout.TextField(label, formula);
                    }

                                                #if UNITY_WP8
                    EditorGUILayout.HelpBox("This feature is not available for Windows Phone 8.", MessageType.Warning);
                                                #endif
                }
                else if (setVarMethod == SetVarMethod.IncreaseByValue || setVarMethod == SetVarMethod.SetValue)
                {
                    if (setVarMethod == SetVarMethod.IncreaseByValue)
                    {
                        label += "+=";
                    }
                    else if (setVarMethod == SetVarMethod.SetValue)
                    {
                        label += "=";
                    }

                    setParameterID = Action.ChooseParameterGUI(label, parameters, setParameterID, ParameterType.Integer);
                    if (setParameterID < 0)
                    {
                        if (setVarMethod == SetVarMethod.SetValue && changeID && _vars != null)
                        {
                            string[] popUpLabels = _vars[variableNumber].GenerateEditorPopUpLabels();
                            intValue = EditorGUILayout.Popup(label, intValue, popUpLabels);
                            placeholderPopUpLabelDataID = _vars[variableNumber].popUpID;
                        }
                        else if (setVarMethod == SetVarMethod.SetValue && !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(label, intValue, popUpLabelData.GenerateEditorPopUpLabels());
                            }
                            else
                            {
                                intValue = EditorGUILayout.IntField(label, intValue);
                            }
                        }
                        else
                        {
                            intValue = EditorGUILayout.IntField(label, intValue);
                        }

                        if (setVarMethod == SetVarMethod.SetAsRandom && intValue < 0)
                        {
                            intValue = 0;
                        }
                    }
                }
                break;

            case VariableType.String:
                setVarMethodString = (SetVarMethodString)EditorGUILayout.EnumPopup("New value is:", setVarMethodString);

                label += "=";
                if (setVarMethodString == SetVarMethodString.EnteredHere)
                {
                    setParameterID = Action.ChooseParameterGUI(label, parameters, setParameterID, ParameterType.String);
                    if (setParameterID < 0)
                    {
                        EditorGUILayout.BeginHorizontal();
                        EditorGUILayout.LabelField(label, GUILayout.Width(140f));
                        EditorStyles.textField.wordWrap = true;
                        stringValue = EditorGUILayout.TextArea(stringValue, GUILayout.MaxWidth(400f));
                        EditorGUILayout.EndHorizontal();
                    }
                }
                else if (setVarMethodString == SetVarMethodString.SetAsMenuElementText)
                {
                    menuName    = EditorGUILayout.TextField("Menu name:", menuName);
                    elementName = EditorGUILayout.TextField("Element name:", elementName);

                    slotNumberParameterID = Action.ChooseParameterGUI("Slot # (optional):", parameters, slotNumberParameterID, ParameterType.Integer);
                    if (slotNumberParameterID < 0)
                    {
                        slotNumber = EditorGUILayout.IntField("Slot # (optional):", slotNumber);
                    }
                }
                break;

            case VariableType.Vector3:
                setVarMethodVector = (SetVarMethodVector)EditorGUILayout.EnumPopup("Method:", setVarMethodVector);

                if (setVarMethodVector == SetVarMethodVector.IncreaseByValue)
                {
                    label += "+=";
                }
                else if (setVarMethodVector == SetVarMethodVector.SetValue)
                {
                    label += "=";
                }

                setParameterID = Action.ChooseParameterGUI(label, parameters, setParameterID, ParameterType.Vector3);
                if (setParameterID < 0)
                {
                    vector3Value = EditorGUILayout.Vector3Field(label, vector3Value);
                }
                break;

            default:
                break;
            }
        }
예제 #14
0
        protected void SetVariable(GVar var, VariableLocation location, bool doSkip)
        {
            if (var == null)
            {
                return;
            }

            switch (var.type)
            {
            case VariableType.Integer:
            {
                int _value = 0;

                if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
                {
                    if (setVarMethod == SetVarMethod.Formula)
                    {
                        _value = (int)AdvGame.CalculateFormula(AdvGame.ConvertTokens(formula, Options.GetLanguage(), localVariables));
                    }
                    else
                    {
                        _value = intValue;
                    }
                }
                else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
                {
                    if (animator && !string.IsNullOrEmpty(parameterName))
                    {
                        _value       = animator.GetInteger(parameterName);
                        setVarMethod = SetVarMethod.SetValue;
                    }
                }

                if (setVarMethod == SetVarMethod.IncreaseByValue && doSkip)
                {
                    var.RestoreBackupValue();
                }

                var.SetValue(_value, setVarMethod);

                if (doSkip)
                {
                    var.BackupValue();
                }
                break;
            }

            case VariableType.Float:
            {
                float _value = 0;

                if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
                {
                    if (setVarMethod == SetVarMethod.Formula)
                    {
                        _value = (float)AdvGame.CalculateFormula(AdvGame.ConvertTokens(formula, Options.GetLanguage(), localVariables));
                    }
                    else
                    {
                        _value = floatValue;
                    }
                }
                else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
                {
                    if (animator && !string.IsNullOrEmpty(parameterName))
                    {
                        _value       = animator.GetFloat(parameterName);
                        setVarMethod = SetVarMethod.SetValue;
                    }
                }

                if (setVarMethod == SetVarMethod.IncreaseByValue && doSkip)
                {
                    var.RestoreBackupValue();
                }

                var.SetFloatValue(_value, setVarMethod);

                if (doSkip)
                {
                    var.BackupValue();
                }

                break;
            }

            case VariableType.Boolean:
            {
                int _value = 0;

                if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
                {
                    _value = (int)boolValue;
                }
                else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
                {
                    if (animator && !string.IsNullOrEmpty(parameterName))
                    {
                        if (animator.GetBool(parameterName))
                        {
                            _value = 1;
                        }
                    }
                }

                var.SetValue(_value, SetVarMethod.SetValue);
                break;
            }

            case VariableType.Vector3:
            {
                Vector3 newValue = vector3Value;
                if (setVarMethodVector == SetVarMethodVector.IncreaseByValue)
                {
                    newValue += var.vector3Val;
                }

                var.SetVector3Value(newValue);
                break;
            }

            case VariableType.PopUp:
            {
                int _value = 0;

                if (setVarMethod == SetVarMethod.Formula)
                {
                    _value = (int)AdvGame.CalculateFormula(AdvGame.ConvertTokens(formula, Options.GetLanguage(), localVariables));
                }
                else if (setVarMethod == SetVarMethod.SetAsRandom)
                {
                    _value = var.GetNumPopUpValues();
                }
                else
                {
                    _value = Mathf.Clamp(intValue, 0, var.GetNumPopUpValues() - 1);
                }

                if (setVarMethod == SetVarMethod.IncreaseByValue && doSkip)
                {
                    var.RestoreBackupValue();
                }

                var.SetValue(_value, setVarMethod);

                if (doSkip)
                {
                    var.BackupValue();
                }
                break;
            }

            case VariableType.String:
            {
                string _value = string.Empty;

                if (setVarMethodString == SetVarMethodString.EnteredHere)
                {
                    _value = AdvGame.ConvertTokens(stringValue, Options.GetLanguage(), localVariables);
                }
                else if (setVarMethodString == SetVarMethodString.SetAsMenuElementText)
                {
                    MenuElement menuElement = PlayerMenus.GetElementWithName(menuName, elementName);
                    if (menuElement != null)
                    {
                        if (menuElement is MenuInput)
                        {
                            MenuInput menuInput = (MenuInput)menuElement;
                            _value = menuInput.GetContents();

                            if (KickStarter.runtimeLanguages.LanguageReadsRightToLeft(Options.GetLanguage()) && _value.Length > 0)
                            {
                                // Invert
                                char[] charArray = _value.ToCharArray();
                                _value = "";
                                for (int i = charArray.Length - 1; i >= 0; i--)
                                {
                                    _value += charArray[i];
                                }
                            }
                        }
                        else
                        {
                            PlayerMenus.GetMenuWithName(menuName).Recalculate();
                            menuElement.PreDisplay(slotNumber, Options.GetLanguage(), false);
                            _value = menuElement.GetLabel(slotNumber, Options.GetLanguage());
                        }
                    }
                    else
                    {
                        LogWarning("Could not find MenuInput '" + elementName + "' in Menu '" + menuName + "'");
                    }
                }

                var.SetStringValue(_value, lineID);
                break;
            }

            default:
                break;
            }

            var.Upload(location, runtimeVariables);

            KickStarter.actionListManager.VariableChanged();
        }
예제 #15
0
		private void SetVariable (GVar var, VariableLocation location)
		{
			if (var == null)
			{
				return;
			}

			if (location == VariableLocation.Global)
			{
				var.Download ();
			}

			if (var.type == VariableType.Integer)
			{
				int _value = 0;

				if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
				{
					if (setVarMethod == SetVarMethod.Formula)
					{
						_value = (int) AdvGame.CalculateFormula (AdvGame.ConvertTokens (formula));
					}
					else
					{
						_value = intValue;
					}
				}
				else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
				{
					if (animator && parameterName != "")
					{
						_value = animator.GetInteger (parameterName);
						setVarMethod = SetVarMethod.SetValue;
					}	
				}

				var.SetValue (_value, setVarMethod);
			}
			if (var.type == VariableType.Float)
			{
				float _value = 0;
				
				if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
				{
					if (setVarMethod == SetVarMethod.Formula)
					{
						_value = (float) AdvGame.CalculateFormula (AdvGame.ConvertTokens (formula));
					}
					else
					{
						_value = floatValue;
					}
				}
				else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
				{
					if (animator && parameterName != "")
					{
						_value = animator.GetFloat (parameterName);
						setVarMethod = SetVarMethod.SetValue;
					}	
				}
				
				var.SetValue (_value, setVarMethod);
			}
			else if (var.type == VariableType.Boolean)
			{
				int _value = 0;

				if (setVarMethodIntBool == SetVarMethodIntBool.EnteredHere)
				{
					_value = (int) boolValue;
				}
				else if (setVarMethodIntBool == SetVarMethodIntBool.SetAsMecanimParameter)
				{
					if (animator && parameterName != "")
					{
						if (animator.GetBool (parameterName))
						{
							_value = 1;
						}
					}
				}

				var.SetValue (_value, SetVarMethod.SetValue);
			}
			else if (var.type == VariableType.PopUp)
			{
				var.SetValue (intValue);
			}
			else if (var.type == VariableType.String)
			{
				string _value = "";

				if (setVarMethodString == SetVarMethodString.EnteredHere)
				{
					_value = AdvGame.ConvertTokens (stringValue);
				}
				else if (setVarMethodString == SetVarMethodString.SetAsMenuInputLabel)
				{
					if (PlayerMenus.GetElementWithName (menuName, elementName) != null)
					{
						MenuInput menuInput = (MenuInput) PlayerMenus.GetElementWithName (menuName, elementName);
						_value = menuInput.label;

						if ((Options.GetLanguageName () == "Arabic" || Options.GetLanguageName () == "Hebrew") && _value.Length > 0)
						{
							// Invert
							char[] charArray = _value.ToCharArray ();
							_value = "";
							for (int i = charArray.Length-1; i >= 0; i --)
							{
								_value += charArray[i];
							}
						}
					}
					else
					{
						Debug.LogWarning ("Could not find MenuInput '" + elementName + "' in Menu '" + menuName + "'");
					}
				}

				var.SetValue (_value);
			}

			if (location == VariableLocation.Global)
			{
				var.Upload ();
			}

			GameObject.FindWithTag (Tags.gameEngine).GetComponent <ActionListManager>().VariableChanged ();
		}