public bool ModifyValue(string name, GameValueModifierComponent component, GameValueModifierBehavior behavior, float value)
        {
            GameValue gv = GetGameValueObject(name);

            if (gv == null)
            {
                return(false);
            }
            return(gv.ModifyValue(component, behavior, value));
        }
Example #2
0
        public bool ModifyValue(GameValueModifierComponent component, GameValueModifierBehavior behavior, float value)
        {
            switch (component)
            {
            case GameValueModifierComponent.Base:
                switch (behavior)
                {
                case GameValueModifierBehavior.Set: return(SetBaseValue(value));

                case GameValueModifierBehavior.Add: return(AddToBaseValue(value));

                case GameValueModifierBehavior.Multiply: return(MultiplyBaseValue(value));
                }
                break;

            case GameValueModifierComponent.BaseMod:
                switch (behavior)
                {
                case GameValueModifierBehavior.Set:
                    Debug.LogError("Game Value: '" + name + "': setting base modifiers is not allowed");
                    return(false);

                case GameValueModifierBehavior.Add: return(AddToBaseModifier(value));

                case GameValueModifierBehavior.Multiply: return(MultiplyBaseModifier(value));
                }
                break;

            case GameValueModifierComponent.Ranged:
                switch (behavior)
                {
                case GameValueModifierBehavior.Set: return(SetRangedValue(value));

                case GameValueModifierBehavior.Add: return(AddToRangedValue(value));

                case GameValueModifierBehavior.Multiply: return(MultiplyRangedValue(value));
                }
                break;
            }
            return(false);
        }
Example #3
0
        public override void OnInspectorGUI()
        {
            EditorGUILayout.BeginHorizontal();

            GUITools.StringFieldWithDefault(serializedObject.FindProperty("valueName"), "Value Name");

            SerializedProperty behaviorProp = serializedObject.FindProperty("behavior");

            EditorGUILayout.PropertyField(behaviorProp, GUITools.noContent, true);
            GameValueModifierBehavior behavior = (GameValueModifierBehavior)behaviorProp.enumValueIndex;

            SerializedProperty componentProp = serializedObject.FindProperty("componentToModify");

            EditorGUILayout.PropertyField(componentProp, GUITools.noContent, true);
            GameValueModifierComponent component = (GameValueModifierComponent)componentProp.enumValueIndex;

            SerializedProperty byTimeProp = serializedObject.FindProperty("byTime");

            // cant modify by delta time if modifying base modifier or setting values
            if (component == GameValueModifierComponent.BaseMod || behavior == GameValueModifierBehavior.Set)
            {
                byTimeProp.boolValue = false;
            }
            else
            {
                GUITools.DrawIconToggle(byTimeProp, BuiltInIcons.GetIcon("UnityEditor.AnimationWindow", "Magnitude is multiplied by delta time when updated"));
            }

            EditorGUILayout.EndHorizontal();

            if (component == GameValueModifierComponent.BaseMod && behavior == GameValueModifierBehavior.Set)
            {
                EditorGUILayout.HelpBox("Cant set base value modifier.  Changes need to be able to be unmodified...", MessageType.Error);
            }

            EditorGUILayout.PropertyField(serializedObject.FindProperty("conditions"), new GUIContent("Conditions"), true);
            EditorGUILayout.PropertyField(serializedObject.FindProperty("keywords"), new GUIContent("Keywords"), true);

            serializedObject.ApplyModifiedProperties();
        }