]> git.lizzy.rs Git - nothing.git/blobdiff - src/ui/console.c
(#580) Introduce ebisp/std unit
[nothing.git] / src / ui / console.c
index 3a33b90adafcdda20842093d0d535a7d8050b1e4..52378aa51766397487e60c71afe9e9f783dc22e2 100644 (file)
@@ -4,10 +4,13 @@
 #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"
 #include "system/lt.h"
 #include "system/nth_alloc.h"
 #include "ui/console.h"
@@ -51,35 +54,6 @@ struct Console
 /* TODO(#356): Console does not support autocompletion */
 /* TODO(#357): Console does not show the state of the GC of the script */
 /* TODO(#358): Console does not support copy, cut, paste operations */
-/* TODO(#503): hide-goal and show-goal are not accessible in Console */
-
-struct EvalResult rect_apply_force(void *param, Gc *gc, struct Scope *scope, struct Expr args)
-{
-    assert(gc);
-    assert(scope);
-    assert(param);
-
-    /* TODO(#401): rect_apply_force doesn't sanitize it's input */
-
-    Level *level = (Level*) param;
-    const char *rect_id = CAR(args).atom->str;
-    struct Expr vector_force_expr = CAR(CDR(args));
-    const float force_x = (float) CAR(vector_force_expr).atom->num;
-    const float force_y = (float) CDR(vector_force_expr).atom->num;
-
-    print_expr_as_sexpr(stdout, args); printf("\n");
-
-    Rigid_rect *rigid_rect = level_rigid_rect(level, rect_id);
-    if (rigid_rect != NULL) {
-        log_info("Found rect `%s`\n", rect_id);
-        log_info("Applying force (%f, %f)\n", force_x, force_y);
-        rigid_rect_apply_force(rigid_rect, vec(force_x, force_y));
-    } else {
-        log_fail("Couldn't find rigid_rect `%s`\n", rect_id);
-    }
-
-    return eval_success(NIL(gc));
-}
 
 Console *create_console(Level *level,
                         const Sprite_font *font)
@@ -104,11 +78,10 @@ Console *create_console(Level *level,
     console->scope.expr = CONS(console->gc,
                                NIL(console->gc),
                                NIL(console->gc));
-    set_scope_value(
-        console->gc,
-        &console->scope,
-        SYMBOL(console->gc, "rect-apply-force"),
-        NATIVE(console->gc, rect_apply_force, level));
+
+    load_std_library(console->gc, &console->scope);
+    load_log_library(console->gc, &console->scope);
+    load_level_library(console->gc, &console->scope, level);
 
     console->edit_field = PUSH_LT(
         lt,
@@ -280,7 +253,6 @@ int console_update(Console *console, float delta_time)
 {
     assert(console);
 
-    /* TODO(#366): console slide down animation doesn't have any easing */
     if (console->a < 1.0f) {
         console->a += 1.0f / SLIDE_DOWN_TIME * delta_time;