Exemplo n.º 1
0
 public LuaValue(LuaFloat value) : this()
 {
     _numValue  = value;
     _objValue  = null;
     _boolValue = false;
     Type       = ELuaType.Float;
 }
Exemplo n.º 2
0
 public LuaValue(object value, ELuaType type) : this()
 {
     _objValue  = value;
     _boolValue = false;
     _numValue  = 0;
     Type       = type;
 }
Exemplo n.º 3
0
 public LuaValue(bool value) : this()
 {
     _boolValue = value;
     _numValue  = 0;
     _objValue  = null;
     Type       = ELuaType.Boolean;
 }
Exemplo n.º 4
0
        private LuaValue(object value) : this()
        {
            _numValue  = 0;
            _boolValue = false;
            _objValue  = null;

            if (value is LuaInt l)
            {
                _numValue = l;
                Type      = ELuaType.Int;
            }
            else if (value is LuaFloat f)
            {
                _numValue = f;
                Type      = ELuaType.Float;
            }
            else if (value is string)
            {
                _objValue = value;
                Type      = ELuaType.String;
            }
            else if (value is LuaTable)
            {
                _objValue = value;
                Type      = ELuaType.Table;
            }
            else if (value is Closure c)
            {
                Type      = c.CSFunction != null ? ELuaType.CSFunction : ELuaType.Closure;
                _objValue = c;
            }
            else if (value is LuaState)
            {
                _objValue = value;
                Type      = ELuaType.Thread;
            }
            else
            {
                _objValue = value;
                Type      = ELuaType.LightUserData;
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// 把给定Lua类型转换成对应的字符串表示
        /// </summary>
        public string TypeName(ELuaType tp)
        {
            switch (tp)
            {
            case ELuaType.None:
                return("no value");

            case ELuaType.Nil:
                return("nil");

            case ELuaType.Boolean:
                return("boolean");

            case ELuaType.Number:
                return("number");

            case ELuaType.Int:
                return("integer");

            case ELuaType.String:
                return("string");

            case ELuaType.Table:
                return("table");

            case ELuaType.Function:
                return("function");

            case ELuaType.CSFunction:
                return("csfunction");

            case ELuaType.Thread:
                return("thread");

            default:
                return("userdata");
            }
        }
Exemplo n.º 6
0
 public LuaValue()
 {
     Type = ELuaType.None;
 }
Exemplo n.º 7
0
 public static bool IsUserdata(this ELuaType type)
 {
     return(type == ELuaType.UserData || type == ELuaType.LightUserData);
 }
Exemplo n.º 8
0
 public static bool IsFunction(this ELuaType type)
 {
     return(type.GetParentType() == ELuaType.Function);
 }
Exemplo n.º 9
0
 public static bool IsNumber(this ELuaType type)
 {
     return(type.GetParentType() == ELuaType.Number);
 }
Exemplo n.º 10
0
 public static ELuaType GetParentType(this ELuaType type)
 {
     return((ELuaType)((int)type & 0b1111));
 }