Fixed wrong "top-edge" tiles in data/levels/bonus2/level11.stl ("The long cave")
[supertux.git] / src / scripting / squirrel_util.cpp
index fedc64c..b3cf9c1 100644 (file)
@@ -76,18 +76,24 @@ void init_squirrel(bool enable_debugger)
   }
 
   sq_pushroottable(global_vm);
-  if(sqstd_register_bloblib(global_vm) < 0)
+  if(SQ_FAILED(sqstd_register_bloblib(global_vm)))
     throw SquirrelError(global_vm, "Couldn't register blob lib");
-  if(sqstd_register_mathlib(global_vm) < 0)
+  if(SQ_FAILED(sqstd_register_mathlib(global_vm)))
     throw SquirrelError(global_vm, "Couldn't register math lib");
-  if(sqstd_register_stringlib(global_vm) < 0)
+  if(SQ_FAILED(sqstd_register_stringlib(global_vm)))
     throw SquirrelError(global_vm, "Couldn't register string lib");
+
+  // remove rand and srand calls from sqstdmath, we'll provide our own
+  sq_pushstring(global_vm, "srand", -1);
+  sq_deleteslot(global_vm, -2, SQFalse);
+  sq_pushstring(global_vm, "rand", -1);
+  sq_deleteslot(global_vm, -2, SQFalse);
+  
   // register supertux API
   register_supertux_wrapper(global_vm);
 
   // TODO remove this at some point... it shoud just be functions not an object
   expose_object(global_vm, -1, new Scripting::Level(), "Level", true);
-  expose_object(global_vm, -1, &systemRandom, "RandomGenerator", false);
   
   sq_pop(global_vm, 1);
 
@@ -129,7 +135,7 @@ void update_debugger()
 #endif
 }
 
-std::string squirrel2string(HSQUIRRELVM v, int i)
+std::string squirrel2string(HSQUIRRELVM v, SQInteger i)
 {
   std::ostringstream os;
   switch(sq_gettype(v, i))
@@ -147,19 +153,19 @@ std::string squirrel2string(HSQUIRRELVM v, int i)
       break;
     }
     case OT_INTEGER: {
-      int val;
+      SQInteger val;
       sq_getinteger(v, i, &val);
       os << val;
       break;
     }
     case OT_FLOAT: {
-      float val;
+      SQFloat val;
       sq_getfloat(v, i, &val);
       os << val;
       break;
     }
     case OT_STRING: {
-      const char* val;
+      const SQChar* val;
       sq_getstring(v, i, &val);
       os << "\"" << val << "\"";
       break;    
@@ -252,19 +258,19 @@ void print_squirrel_stack(HSQUIRRELVM v)
                 printf("null");        
                 break;
             case OT_INTEGER: {
-                int val;
+                SQInteger val;
                 sq_getinteger(v, i, &val);
-                printf("integer (%d)", val);
+                printf("integer (%d)", static_cast<int> (val));
                 break;
             }
             case OT_FLOAT: {
-                float val;
+                SQFloat val;
                 sq_getfloat(v, i, &val);
                 printf("float (%f)", val);
                 break;
             }
             case OT_STRING: {
-                const char* val;
+                const SQChar* val;
                 sq_getstring(v, i, &val);
                 printf("string (%s)", val);
                 break;    
@@ -331,7 +337,7 @@ void compile_and_run(HSQUIRRELVM vm, std::istream& in,
 {
   compile_script(vm, in, sourcename);
   
-  int oldtop = sq_gettop(vm);
+  SQInteger oldtop = sq_gettop(vm);
 
   try {
     sq_pushroottable(vm);