Пример #1
0
        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));
            }
        }
Пример #2
0
        private void TriggerOnAttrChange(int index, Var value)
        {
            Def.Entry entry = def.GetEntry(index);
            if (entry == null)
            {
                return;
            }
            string attrName = entry.name;

            TriggerOnAttrChange(attrName, value);
        }
Пример #3
0
 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事件
             }
         };
     }
 }
Пример #4
0
 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)]);
     }
 }
Пример #5
0
        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);
        }
Пример #6
0
 public bool SetAttrByDef(string name, object val)
 {
     Def.Entry entry = def.GetEntry(name);
     return(SetAttrByType(name, entry.type.TryConvertToEnum(VType.None), val));
 }