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)); }
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); }
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(); }