#include "log.hpp"
#include "level.hpp"
#include "physfs/physfs_stream.hpp"
+#include "../random_generator.hpp"
#ifdef ENABLE_SQDBG
#include <sqdbg/sqrdbg.h>
if(global_vm == NULL)
throw std::runtime_error("Couldn't initialize squirrel vm");
-#ifdef ENABLE_SQDBG
if(enable_debugger) {
+#ifdef ENABLE_SQDBG
sq_enabledebuginfo(global_vm, SQTrue);
debugger = sq_rdbg_init(global_vm, 1234, SQFalse);
if(debugger == NULL)
if(SQ_FAILED(sq_rdbg_waitforconnections(debugger)))
throw SquirrelError(global_vm, "Waiting for debug clients failed");
log_info << "debug client connected." << std::endl;
- }
#endif
+ }
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);
debugger = NULL;
}
#endif
- sq_close(global_vm);
+
+ if (global_vm)
+ sq_close(global_vm);
+
global_vm = NULL;
}