public void SetValue(AttrType type, long value, bool isFirstTry)
    {
        CfgFormula <long> cfgFormula = this.GetCfgFormula <long>(type);

        if (cfgFormula == null)
        {
            if (isFirstTry)
            {
                this.SetValue(type, (int)value, false);
            }
        }
        else
        {
            long val = cfgFormula.Val;
            cfgFormula.Val = value;
            if (cfgFormula.Val != val)
            {
                this.OnAttrChanged(type, val, value);
            }
        }
    }
 public void RemoveValue(AttrType type, int value, bool isFirstTry)
 {
     if (value != 0)
     {
         CfgFormula <int> cfgFormula = this.GetCfgFormula <int>(type);
         if (cfgFormula == null)
         {
             if (isFirstTry)
             {
                 this.RemoveValue(type, (long)value, false);
             }
         }
         else
         {
             int val = cfgFormula.Val;
             cfgFormula.RemoveArg(value);
             if (cfgFormula.Val != val)
             {
                 this.OnAttrChanged(type, (long)val, (long)cfgFormula.Val);
             }
         }
     }
 }