-#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"
#include "system/lt.h"
#include "system/nth_alloc.h"
#include "ui/console.h"
#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;
/* 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);
}
NIL(console->gc));
load_std_library(console->gc, &console->scope);
- load_level_library(console->gc, &console->scope, level);
+ load_log_library(console->gc, &console->scope);
+ /* TODO(#669): how to report EvalResult error from create_console? */
+ broadcast_load_library(broadcast, console->gc, &console->scope);
console->edit_field = PUSH_LT(
lt,
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);
void destroy_console(Console *console)
{
- assert(console);
+ trace_assert(console);
RETURN_LT0(console->lt);
}
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;
void console_slide_down(Console *console)
{
- assert(console);
+ trace_assert(console);
console->a = 0.0f;
}