예제 #1
0
 private Func <State, bool> load(EffectConfig config)
 {
     if (config.EffectType == "incr")
     {
         Debug.Log("generate incr effect...");
         return((State state) =>
         {
             if (state.HasKey(targetField))
             {
                 Debug.Log("incrementing " + targetField);
                 int result = state.GetInt(targetField);
                 state.SetInt(targetField, ++result);
             }
             return true;
         });
     }
     else if (config.EffectType == "decr")
     {
         return((State state) =>
         {
             if (state.HasKey(targetField))
             {
                 int result = state.GetInt(targetField);
                 state.SetInt(targetField, --result);
             }
             return true;
         });
     }
     else if (config.EffectType == "set")
     {
         Debug.Log("generate set effect...");
         return((State state) =>
         {
             Type type = this.setValue.GetType();
             if (type.Equals(typeof(int)) || type.Equals(typeof(Int64)))
             {
                 Debug.Log("setting " + targetField);
                 Debug.Log(this.setValue);
                 int targetValue = Int32.Parse(this.setValue.ToString());
                 state.SetInt(targetField, targetValue);
             }
             else if (type.Equals(typeof(string)))
             {
                 Debug.Log("setting " + targetField);
                 state.SetString(targetField, (string)this.setValue);
             }
             else
             {
                 Debug.Log("Not supported type..." + type.FullName);
             }
             return true;
         });
     }
     else if (config.EffectType == "copy-sfield")
     {
         return((State state) =>
         {
             if (state.HasKey(referField))
             {
                 string value = state.GetString(referField);
                 state.SetString(targetField, value);
             }
             else
             {
                 Debug.Log("no such key as " + referField);
             }
             return true;
         });
     }
     else if (config.EffectType == "copy-ifield")
     {
         return((State state) =>
         {
             if (state.HasKey(referField))
             {
                 int value = state.GetInt(referField);
                 state.SetInt(targetField, value);
             }
             else
             {
                 Debug.Log("no such key as " + referField);
             }
             return true;
         });
     }
     else
     {
         throw new ArgumentException(config.EffectType + " is not supported");
     }
 }
예제 #2
0
 public void AddEffect(EffectConfig effectConfig)
 {
     this.effects.Add(effectConfig);
 }