public bool SetAttrByType(string name, VType type, object val) { Def.Entry entry = def.GetEntry(name); switch (type) { case VType.Bool: return(SetAttrBool(name, (bool)val)); case VType.Int: return(SetAttrInt(name, (int)val)); case VType.Long: return(SetAttrLong(name, (long)val)); case VType.UInt: return(SetAttrUInt(name, (uint)val)); case VType.ULong: return(SetAttrULong(name, (ulong)val)); case VType.Float: return(SetAttrFloat(name, (float)val)); case VType.Double: return(SetAttrDouble(name, (double)val)); case VType.String: return(SetAttrString(name, (string)val)); case VType.ID: return(SetAttrID(name, (ID)val)); case VType.None: default: return(SetAttrEntity(name, val as Entity)); } }
private void TriggerOnAttrChange(int index, Var value) { Def.Entry entry = def.GetEntry(index); if (entry == null) { return; } string attrName = entry.name; TriggerOnAttrChange(attrName, value); }
public void InitialAttr(int index, VType type, Def.Entry entry) { _attrs[index] = type.DefaultValFormType() ?? Create(entry.type, ID.Empty, root); if (_attrs[index].Type == VType.None) { Entity sub = ((Entity)_attrs[index]); sub._OnAttrChange_Private_Attr += delegate(ID subEntityID, string subAttrName, Var value) { string attrName = entry.name + "." + subAttrName; if (OnAttrChange != null) { TriggerOnAttrChange(attrName, value); //sub的property事件会触发自己的sub.property事件 } }; } }
public Entity GetAttrEntity(string name) //列表中是ID, 也可直接取出Entity { Def.Entry entry = def.GetEntry(def.GetInd(name)); if (entry == null) { return(null); } if (entry.type.TryConvertToEnum(VType.None) == VType.ID) { return(Get(GetAttrID(name))); } else { return((Entity)_attrs[def.GetInd(name)]); } }
public bool SetAttrEntity(string name, Entity value) //列表中是ID, 也可直接塞进Entity { int _id = def.GetInd(name); Def.Entry entry = def.GetEntry(_id); if (entry == null) { return(false); } if (entry.type.TryConvertToEnum(VType.None) == VType.ID) { return(SetAttrID(name, value.entityId)); } else { _attrs.SetAttr(def.GetInd(name), value); } return(true); }
public bool SetAttrByDef(string name, object val) { Def.Entry entry = def.GetEntry(name); return(SetAttrByType(name, entry.type.TryConvertToEnum(VType.None), val)); }