public void RemoveBonus(string id, Tapestry_BonusType type)
 {
     if (type == Tapestry_BonusType.AddsToBase)
     {
         if (bonusTypeBase.ContainsKey(id))
         {
             bonusTypeBase.Remove(id);
         }
     }
     else if (type == Tapestry_BonusType.AdditiveBonus)
     {
         if (bonusTypeAdditive.ContainsKey(id))
         {
             bonusTypeAdditive.Remove(id);
         }
     }
     else if (type == Tapestry_BonusType.MultiplicativeBonus)
     {
         if (bonusTypeMultiplicative.ContainsKey(id))
         {
             bonusTypeMultiplicative.Remove(id);
         }
     }
     Recalculate();
 }
 public Tapestry_EffectBuilder_Payload_ModifyJump()
 {
     amount               = 0.10f;
     id                   = "Generic";
     type                 = Tapestry_BonusType.AdditiveBonus;
     overwrite            = false;
     overwriteByMag       = true;
     removeWhenEffectEnds = true;
 }
    public override void DrawInspector()
    {
        GUILayout.BeginVertical("box");

        GUILayout.BeginHorizontal();
        GUILayout.Space(40);
        GUILayout.Label("Amount");
        amount = EditorGUILayout.DelayedFloatField(amount, GUILayout.Width(42));
        GUILayout.FlexibleSpace();
        GUILayout.Label("ID");
        id = EditorGUILayout.DelayedTextField(id, GUILayout.Width(60));
        GUILayout.FlexibleSpace();
        GUILayout.Label("Type");
        type = (Tapestry_BonusType)EditorGUILayout.EnumPopup(type, GUILayout.Width(100));
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Space(40);
        overwrite = EditorGUILayout.Toggle(overwrite, GUILayout.Width(12));
        GUILayout.Label("Overwrite Same ID?");
        GUILayout.FlexibleSpace();
        if (overwrite)
        {
            overwriteByMag = EditorGUILayout.Toggle(overwriteByMag, GUILayout.Width(12));
            GUILayout.Label("Only if magnitude is greater?");
            GUILayout.FlexibleSpace();
        }
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Space(40);
        removeWhenEffectEnds = EditorGUILayout.Toggle(removeWhenEffectEnds, GUILayout.Width(12));
        GUILayout.Label("Remove when Effect ends?");
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();

        GUILayout.EndVertical();
    }
 public void AddBonus(float bonus, string ID, Tapestry_BonusType type, bool overwriteConflictingID = false, bool onlyOverwriteLowerMagnitude = false)
 {
     if (type == Tapestry_BonusType.AddsToBase)
     {
         if (overwriteConflictingID)
         {
             if (onlyOverwriteLowerMagnitude)
             {
                 if (bonusTypeBase.ContainsKey(ID))
                 {
                     if (Mathf.Abs(bonus) > Mathf.Abs(bonusTypeBase[ID]))
                     {
                         bonusTypeBase[ID] = bonus;
                     }
                 }
             }
             else
             {
                 bonusTypeBase[ID] = bonus;
             }
         }
         else
         {
             if (!bonusTypeBase.ContainsKey(ID))
             {
                 bonusTypeBase.Add(ID, bonus);
             }
         }
     }
     else if (type == Tapestry_BonusType.AdditiveBonus)
     {
         if (overwriteConflictingID)
         {
             if (onlyOverwriteLowerMagnitude)
             {
                 if (bonusTypeAdditive.ContainsKey(ID))
                 {
                     if (Mathf.Abs(bonus) > Mathf.Abs(bonusTypeAdditive[ID]))
                     {
                         bonusTypeAdditive[ID] = bonus;
                     }
                 }
             }
             else
             {
                 bonusTypeAdditive[ID] = bonus;
             }
         }
         else
         {
             if (!bonusTypeAdditive.ContainsKey(ID))
             {
                 bonusTypeAdditive.Add(ID, bonus);
             }
         }
     }
     else if (type == Tapestry_BonusType.MultiplicativeBonus)
     {
         if (overwriteConflictingID)
         {
             if (onlyOverwriteLowerMagnitude)
             {
                 if (bonusTypeMultiplicative.ContainsKey(ID))
                 {
                     if (Mathf.Abs(bonus) > Mathf.Abs(bonusTypeMultiplicative[ID]))
                     {
                         bonusTypeMultiplicative[ID] = bonus;
                     }
                 }
             }
             else
             {
                 bonusTypeMultiplicative[ID] = bonus;
             }
         }
         else
         {
             if (!bonusTypeMultiplicative.ContainsKey(ID))
             {
                 bonusTypeMultiplicative.Add(ID, bonus);
             }
         }
     }
     Recalculate();
 }