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"); } }
public void AddEffect(EffectConfig effectConfig) { this.effects.Add(effectConfig); }