]> git.lizzy.rs Git - nothing.git/blobdiff - src/game/level/script.c
(#608) Introduce (send) function
[nothing.git] / src / game / level / script.c
index 7c3a8e5a23c28027bba928ab2909425023b9739f..07e91122e5c2cbb4c4a86680c50d549ccee4b103 100644 (file)
@@ -1,18 +1,21 @@
-#include <assert.h>
+#include "system/stacktrace.h"
 
 #include "ebisp/gc.h"
 #include "ebisp/interpreter.h"
 #include "ebisp/parser.h"
 #include "ebisp/scope.h"
+#include "ebisp/std.h"
 #include "game/level.h"
 #include "game/level_script.h"
 #include "script.h"
 #include "str.h"
 #include "system/line_stream.h"
 #include "system/log.h"
+#include "system/log_script.h"
 #include "system/lt.h"
 #include "system/nth_alloc.h"
 #include "ui/console.h"
+#include "game_script.h"
 
 struct Script
 {
@@ -21,9 +24,9 @@ struct Script
     struct Scope scope;
 };
 
-Script *create_script_from_line_stream(LineStream *line_stream, Level *level)
+Script *create_script_from_line_stream(LineStream *line_stream, Game *game)
 {
-    assert(line_stream);
+    trace_assert(line_stream);
 
     Lt *lt = create_lt();
     if (lt == NULL) {
@@ -43,6 +46,10 @@ Script *create_script_from_line_stream(LineStream *line_stream, Level *level)
 
     script->scope = create_scope(script->gc);
 
+    load_std_library(script->gc, &script->scope);
+    load_log_library(script->gc, &script->scope);
+    load_game_library(script->gc, &script->scope, game);
+
     size_t n = 0;
     sscanf(line_stream_next(line_stream), "%lu", &n);
 
@@ -55,9 +62,6 @@ Script *create_script_from_line_stream(LineStream *line_stream, Level *level)
     }
     PUSH_LT(lt, source_code, free);
 
-    load_std_library(script->gc, &script->scope);
-    load_level_library(script->gc, &script->scope, level);
-
     struct ParseResult parse_result =
         read_all_exprs_from_string(
             script->gc,
@@ -88,14 +92,14 @@ Script *create_script_from_line_stream(LineStream *line_stream, Level *level)
 
 void destroy_script(Script *script)
 {
-    assert(script);
+    trace_assert(script);
     RETURN_LT0(script->lt);
 }
 
 int script_eval(Script *script, const char *source_code)
 {
-    assert(script);
-    assert(source_code);
+    trace_assert(script);
+    trace_assert(source_code);
 
     struct ParseResult parse_result = read_expr_from_string(
         script->gc,