]> git.lizzy.rs Git - nothing.git/blobdiff - src/ui/console.c
`Lt *` -> `Lt `
[nothing.git] / src / ui / console.c
index 37b6bfd262ec9a454a1ba741ffd1067ea4f11cdc..d3850ad1fa6c7fe03f4fdb043090d1202a7bb8f6 100644 (file)
@@ -1,12 +1,11 @@
-#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/player/rigid_rect.h"
-#include "game/level_script.h"
 #include "sdl/renderer.h"
 #include "system/log.h"
 #include "system/log_script.h"
@@ -16,6 +15,7 @@
 #include "ui/console_log.h"
 #include "ui/edit_field.h"
 #include "ui/history.h"
+#include "broadcast.h"
 
 #define FONT_WIDTH_SCALE 3.0f
 #define FONT_HEIGHT_SCALE 3.0f
 
 struct Console
 {
-    Lt *lt;
+    Lt lt;
     Gc *gc;
     struct Scope scope;
     Edit_field *edit_field;
     Console_Log *console_log;
-    Level *level;
     History *history;
     float a;
     char *eval_result;
@@ -54,16 +53,16 @@ struct Console
 /* TODO(#357): Console does not show the state of the GC of the script */
 /* TODO(#358): Console does not support copy, cut, paste operations */
 
-Console *create_console(Level *level,
+Console *create_console(Broadcast *broadcast,
                         const Sprite_font *font)
 {
-    Lt *lt = create_lt();
+    Lt lt = create_lt();
 
     if (lt == NULL) {
         return NULL;
     }
 
-    Console *console = PUSH_LT(lt, nth_alloc(sizeof(Console)), free);
+    Console *console = PUSH_LT(lt, nth_calloc(1, sizeof(Console)), free);
     if (console == NULL) {
         RETURN_LT(lt, NULL);
     }
@@ -80,7 +79,8 @@ Console *create_console(Level *level,
 
     load_std_library(console->gc, &console->scope);
     load_log_library(console->gc, &console->scope);
-    load_level_library(console->gc, &console->scope, level);
+    /* TODO(#669): how to report EvalResult error from create_console? */
+    broadcast_load_library(broadcast, console->gc, &console->scope);
 
     console->edit_field = PUSH_LT(
         lt,
@@ -101,12 +101,11 @@ Console *create_console(Level *level,
             CONSOLE_LOG_CAPACITY),
         destroy_console_log);
 
-    console->level = level;
     console->a = 0;
 
     console->eval_result = PUSH_LT(
         lt,
-        nth_alloc(sizeof(char) * CONSOLE_EVAL_RESULT_SIZE),
+        nth_calloc(1, sizeof(char) * CONSOLE_EVAL_RESULT_SIZE),
         free);
     if (console->eval_result == NULL) {
         RETURN_LT(lt, NULL);
@@ -126,7 +125,7 @@ Console *create_console(Level *level,
 
 void destroy_console(Console *console)
 {
-    assert(console);
+    trace_assert(console);
     RETURN_LT0(console->lt);
 }
 
@@ -250,7 +249,7 @@ int console_render(const Console *console,
 
 int console_update(Console *console, float delta_time)
 {
-    assert(console);
+    trace_assert(console);
 
     if (console->a < 1.0f) {
         console->a += 1.0f / SLIDE_DOWN_TIME * delta_time;
@@ -265,6 +264,6 @@ int console_update(Console *console, float delta_time)
 
 void console_slide_down(Console *console)
 {
-    assert(console);
+    trace_assert(console);
     console->a = 0.0f;
 }