コード例 #1
0
ファイル: lmathlib.cs プロジェクト: lywaterman/KopiLua
        private static int MathRandom(LuaState L)
        {
            /* the `%' avoids the (rare) case of r==1, and is needed also because on
             *     some systems (SunOS!) `rand()' may return a value larger than RAND_MAX */
            //LuaNumberType r = (LuaNumberType)(rng.Next()%RAND_MAX) / (LuaNumberType)RAND_MAX;
            LuaNumberType r = (LuaNumberType)rng.NextDouble();

            switch (LuaGetTop(L))    /* check number of arguments */
            {
            case 0: {                /* no arguments */
                LuaPushNumber(L, r); /* Number between 0 and 1 */
                break;
            }

            case 1: {              /* only upper limit */
                int u = LuaLCheckInt(L, 1);
                LuaLArgCheck(L, 1 <= u, 1, "interval is empty");
                LuaPushNumber(L, Math.Floor(r * u) + 1);        /* int between 1 and `u' */
                break;
            }

            case 2: {              /* lower and upper limits */
                int l = LuaLCheckInt(L, 1);
                int u = LuaLCheckInt(L, 2);
                LuaLArgCheck(L, l <= u, 2, "interval is empty");
                LuaPushNumber(L, Math.Floor(r * (u - l + 1)) + l);            /* int between `l' and `u' */
                break;
            }

            default: return(LuaLError(L, "wrong number of arguments"));
            }
            return(1);
        }
コード例 #2
0
        public static LuaNumberType LuaLCheckNumber(LuaState L, int narg)
        {
            LuaNumberType d = LuaToNumber(L, narg);

            if ((d == 0) && (LuaIsNumber(L, narg) == 0))      /* avoid extra test when d is not 0 */
            {
                TagError(L, narg, LUA_TNUMBER);
            }
            return(d);
        }
コード例 #3
0
ファイル: lmathlib.cs プロジェクト: weimingtom/KopiLua
        private static int MathRandomSeed(LuaState L)
        {
            // math.randomseed() can take a double number but Random expects an integer seed.
            // we use modulus to bring back the double to the allowed integer interval.
            LuaNumberType seed = Math.Abs(LuaLCheckNumber(L, 1));
            LuaNumberType max  = (LuaNumberType)int.MaxValue;

            while (seed > max)
            {
                seed = fmod(seed, max);
            }

            rng = new Random((int)seed);
            return(0);
        }
コード例 #4
0
        private static int MathMax(LuaState L)
        {
            int           n    = LuaGetTop(L); /* number of arguments */
            LuaNumberType dmax = LuaLCheckNumber(L, 1);
            int           i;

            for (i = 2; i <= n; i++)
            {
                LuaNumberType d = LuaLCheckNumber(L, i);
                if (d > dmax)
                {
                    dmax = d;
                }
            }
            LuaPushNumber(L, dmax);
            return(1);
        }
コード例 #5
0
ファイル: lobject.cs プロジェクト: oathx/Six
		internal static void SetNValue(Lua.LuaTypeValue obj, LuaNumberType x) {
			obj.value.n = x;
			obj.tt = LUA_TNUMBER;
		}
コード例 #6
0
 internal static void SetNValue(Lua.LuaTypeValue obj, LuaNumberType x)
 {
     obj.value.n = x;
     obj.tt      = LUA_TNUMBER;
 }
コード例 #7
0
ファイル: lua.cs プロジェクト: zkov96/FAForeverMapEditor
 public static bool LuaIsNoneOrNil(LuaState L, LuaNumberType n)
 {
     return(LuaType(L, (int)n) <= 0);
 }
コード例 #8
0
 public static LuaNumberType LuaLOptNumber(LuaState L, int narg, LuaNumberType def)
 {
     return(LuaLOpt(L, LuaLCheckNumber, narg, def));
 }
コード例 #9
0
 public static LuaIntegerType LuaLOptInteger(LuaState L, LuaLOptDelegateInteger f, int n, LuaNumberType d)
 {
     return((LuaIntegerType)(LuaIsNoneOrNil(L, n) ? d : f(L, (n))));
 }
コード例 #10
0
ファイル: lauxlib.cs プロジェクト: oathx/Six
		public static LuaIntegerType LuaLOptInteger(LuaState L, LuaLOptDelegateInteger f, int n, LuaNumberType d) {
			return (LuaIntegerType)(LuaIsNoneOrNil(L, n) ? d : f(L, (n)));
		}
コード例 #11
0
ファイル: lauxlib.cs プロジェクト: oathx/Six
		public static LuaNumberType LuaLOpt(LuaState L, LuaLOptDelegate f, int n, LuaNumberType d) {
			return LuaIsNoneOrNil(L, (n != 0) ? d : f(L, n)) ? 1 : 0;}
コード例 #12
0
ファイル: lauxlib.cs プロジェクト: oathx/Six
		public static LuaNumberType LuaLOptNumber (LuaState L, int narg, LuaNumberType def) {
		  return LuaLOpt(L, LuaLCheckNumber, narg, def);
		}
コード例 #13
0
ファイル: ldump.cs プロジェクト: OpenRA/KopiLua
 private static void DumpNumber(LuaNumberType x, DumpState D)
 {
     DumpVar(x, D);
 }
コード例 #14
0
ファイル: ldump.cs プロジェクト: oathx/Six
		private static void DumpNumber(LuaNumberType x, DumpState D)
		{
		 DumpVar(x,D);
		}
コード例 #15
0
ファイル: lua.cs プロジェクト: ZoneBeat/FAForeverMapEditor
 public static bool LuaIsNoneOrNil(LuaState L, LuaNumberType n)
 {
     return LuaType(L, (int)n) <= 0;
 }
コード例 #16
0
ファイル: lobject.cs プロジェクト: oathx/Six
		public static int LuaOStr2d (CharPtr s, out LuaNumberType result) {
		  CharPtr endptr;
		  result = lua_str2number(s, out endptr);
		  if (endptr == s) return 0;  /* conversion failed */
		  if (endptr[0] == 'x' || endptr[0] == 'X')  /* maybe an hexadecimal constant? */
			result = CastNum(strtoul(s, out endptr, 16));
		  if (endptr[0] == '\0') return 1;  /* most common case */
		  while (isspace(endptr[0])) endptr = endptr.next();
		  if (endptr[0] != '\0') return 0;  /* invalid trailing characters? */
		  return 1;
		}
コード例 #17
0
ファイル: lcode.cs プロジェクト: ZoneBeat/FAForeverMapEditor
		public static int LuaKNumberK (FuncState fs, LuaNumberType r) {
		  TValue o = new LuaTypeValue();
		  SetNValue(o, r);
		  return AddK(fs, o, o);
		}
コード例 #18
0
 public static LuaNumberType LuaLOpt(LuaState L, LuaLOptDelegate f, int n, LuaNumberType d)
 {
     return(LuaIsNoneOrNil(L, n) ? d : f(L, (n)));
 }