#include "game/camera.h"
#include "game/sound_samples.h"
#include "game/level/boxes.h"
-#include "game/level/level_editor/action_picker.h"
#include "game/level/level_editor/color_picker.h"
#include "game/level/level_editor/rect_layer.h"
#include "game/level/level_editor/point_layer.h"
}
level_editor->lt = lt;
- level_editor->edit_field_filename = PUSH_LT(
- lt,
- create_edit_field(
- LEVEL_EDITOR_EDIT_FIELD_SIZE,
- LEVEL_EDITOR_EDIT_FIELD_COLOR),
- destroy_edit_field);
- if (level_editor->edit_field_filename == NULL) {
- RETURN_LT(lt, NULL);
- }
+ level_editor->edit_field_filename.font_size = LEVEL_EDITOR_EDIT_FIELD_SIZE;
+ level_editor->edit_field_filename.font_color = LEVEL_EDITOR_EDIT_FIELD_COLOR;
level_editor->background_layer = create_background_layer(hexstr("fffda5"));
-
- level_editor->player_layer =
- create_player_layer(vec(0.0f, 0.0f), hexstr("ff8080"));
-
- level_editor->platforms_layer = PUSH_LT(
- lt,
- create_rect_layer("platform", cursor),
- destroy_rect_layer);
- if (level_editor->platforms_layer == NULL) {
- RETURN_LT(lt, NULL);
- }
-
- level_editor->goals_layer = PUSH_LT(
- lt,
- create_point_layer("goal"),
- destroy_point_layer);
- if (level_editor->goals_layer == NULL) {
- RETURN_LT(lt, NULL);
- }
-
- level_editor->lava_layer = PUSH_LT(
- lt,
- create_rect_layer("lava", cursor),
- destroy_rect_layer);
- if (level_editor->lava_layer == NULL) {
- RETURN_LT(lt, NULL);
- }
-
- level_editor->back_platforms_layer = PUSH_LT(
- lt,
- create_rect_layer("back_platform", cursor),
- destroy_rect_layer);
- if (level_editor->back_platforms_layer == NULL) {
- RETURN_LT(lt, NULL);
- }
-
- level_editor->boxes_layer = PUSH_LT(
- lt,
- create_rect_layer("box", cursor),
- destroy_rect_layer);
- if (level_editor->boxes_layer == NULL) {
- RETURN_LT(lt, NULL);
- }
-
- level_editor->label_layer = PUSH_LT(
- lt,
- create_label_layer("label"),
- destroy_label_layer);
- if (level_editor->label_layer == NULL) {
- RETURN_LT(lt, NULL);
- }
-
- level_editor->regions_layer = PUSH_LT(
- lt,
- create_rect_layer("region", cursor),
- destroy_rect_layer);
- if (level_editor->regions_layer == NULL) {
- RETURN_LT(lt, NULL);
- }
-
- level_editor->layers[LAYER_PICKER_BOXES] = rect_layer_as_layer(level_editor->boxes_layer);
- level_editor->layers[LAYER_PICKER_PLATFORMS] = rect_layer_as_layer(level_editor->platforms_layer);
- level_editor->layers[LAYER_PICKER_BACK_PLATFORMS] = rect_layer_as_layer(level_editor->back_platforms_layer);
- level_editor->layers[LAYER_PICKER_GOALS] = point_layer_as_layer(level_editor->goals_layer);
+ level_editor->player_layer = create_player_layer(vec(0.0f, 0.0f), hexstr("ff8080"));
+ level_editor->platforms_layer = create_rect_layer("platform", cursor);
+ level_editor->goals_layer = create_point_layer("goal"),
+ level_editor->lava_layer = create_rect_layer("lava", cursor);
+ level_editor->back_platforms_layer = create_rect_layer("back_platform", cursor);
+ level_editor->boxes_layer = create_rect_layer("box", cursor);
+ level_editor->label_layer = create_label_layer("label");
+ level_editor->regions_layer = create_rect_layer("region", cursor),
+
+ level_editor->layers[LAYER_PICKER_BOXES] = rect_layer_as_layer(&level_editor->boxes_layer);
+ level_editor->layers[LAYER_PICKER_PLATFORMS] = rect_layer_as_layer(&level_editor->platforms_layer);
+ level_editor->layers[LAYER_PICKER_BACK_PLATFORMS] = rect_layer_as_layer(&level_editor->back_platforms_layer);
+ level_editor->layers[LAYER_PICKER_GOALS] = point_layer_as_layer(&level_editor->goals_layer);
level_editor->layers[LAYER_PICKER_PLAYER] = player_layer_as_layer(&level_editor->player_layer);
- level_editor->layers[LAYER_PICKER_LAVA] = rect_layer_as_layer(level_editor->lava_layer);
- level_editor->layers[LAYER_PICKER_REGIONS] = rect_layer_as_layer(level_editor->regions_layer);
+ level_editor->layers[LAYER_PICKER_LAVA] = rect_layer_as_layer(&level_editor->lava_layer);
+ level_editor->layers[LAYER_PICKER_REGIONS] = rect_layer_as_layer(&level_editor->regions_layer);
level_editor->layers[LAYER_PICKER_BACKGROUND] = background_layer_as_layer(&level_editor->background_layer);
- level_editor->layers[LAYER_PICKER_LABELS] = label_layer_as_layer(level_editor->label_layer);
+ level_editor->layers[LAYER_PICKER_LABELS] = label_layer_as_layer(&level_editor->label_layer);
level_editor->notice = (FadingWigglyText) {
.wiggly_text = {
level_editor->camera_scale = 1.0f;
+ level_editor->undo_history = create_undo_history();
+
return level_editor;
}
}
level_editor->lt = lt;
- level_editor->edit_field_filename = PUSH_LT(
- lt,
- create_edit_field(
- LEVEL_EDITOR_EDIT_FIELD_SIZE,
- LEVEL_EDITOR_EDIT_FIELD_COLOR),
- destroy_edit_field);
- if (level_editor->edit_field_filename == NULL) {
- RETURN_LT(lt, NULL);
- }
+ level_editor->edit_field_filename.font_size = LEVEL_EDITOR_EDIT_FIELD_SIZE;
+ level_editor->edit_field_filename.font_color = LEVEL_EDITOR_EDIT_FIELD_COLOR;
level_editor->file_name =
PUSH_LT(
level_editor->label_layer = chop_label_layer(&tmpmem, &input, "label");
level_editor->regions_layer = chop_rect_layer(&tmpmem, &input, "region", cursor),
- level_editor->layers[LAYER_PICKER_BOXES] = rect_layer_as_layer(level_editor->boxes_layer);
- level_editor->layers[LAYER_PICKER_PLATFORMS] = rect_layer_as_layer(level_editor->platforms_layer);
- level_editor->layers[LAYER_PICKER_BACK_PLATFORMS] = rect_layer_as_layer(level_editor->back_platforms_layer);
- level_editor->layers[LAYER_PICKER_GOALS] = point_layer_as_layer(level_editor->goals_layer);
+ level_editor->layers[LAYER_PICKER_BOXES] = rect_layer_as_layer(&level_editor->boxes_layer);
+ level_editor->layers[LAYER_PICKER_PLATFORMS] = rect_layer_as_layer(&level_editor->platforms_layer);
+ level_editor->layers[LAYER_PICKER_BACK_PLATFORMS] = rect_layer_as_layer(&level_editor->back_platforms_layer);
+ level_editor->layers[LAYER_PICKER_GOALS] = point_layer_as_layer(&level_editor->goals_layer);
level_editor->layers[LAYER_PICKER_PLAYER] = player_layer_as_layer(&level_editor->player_layer);
- level_editor->layers[LAYER_PICKER_LAVA] = rect_layer_as_layer(level_editor->lava_layer);
- level_editor->layers[LAYER_PICKER_REGIONS] = rect_layer_as_layer(level_editor->regions_layer);
+ level_editor->layers[LAYER_PICKER_LAVA] = rect_layer_as_layer(&level_editor->lava_layer);
+ level_editor->layers[LAYER_PICKER_REGIONS] = rect_layer_as_layer(&level_editor->regions_layer);
level_editor->layers[LAYER_PICKER_BACKGROUND] = background_layer_as_layer(&level_editor->background_layer);
- level_editor->layers[LAYER_PICKER_LABELS] = label_layer_as_layer(level_editor->label_layer);
+ level_editor->layers[LAYER_PICKER_LABELS] = label_layer_as_layer(&level_editor->label_layer);
level_editor->drag = false;
level_editor->camera_scale = 1.0f;
- log_info("%ld bytes of tmp memory consumed during parsing the level\n", tmpmem.size);
+ level_editor->undo_history = create_undo_history();
free(tmpmem.buffer);
{
trace_assert(level_editor);
destroy_undo_history(level_editor->undo_history);
- RETURN_LT0(level_editor->lt);
+ destroy_rect_layer(level_editor->boxes_layer);
+ destroy_rect_layer(level_editor->platforms_layer);
+ destroy_rect_layer(level_editor->back_platforms_layer);
+ destroy_point_layer(level_editor->goals_layer);
+ destroy_rect_layer(level_editor->lava_layer);
+ destroy_rect_layer(level_editor->regions_layer);
+ destroy_label_layer(level_editor->label_layer);
}
int level_editor_render(const LevelEditor *level_editor,
position);
if (edit_field_render_screen(
- level_editor->edit_field_filename,
+ &level_editor->edit_field_filename,
camera,
vec(position.x + save_as_width, position.y)) < 0) {
return -1;
path,
LEVEL_FOLDER_MAX_LENGTH,
"./assets/levels/%s.txt",
- edit_field_as_text(level_editor->edit_field_filename));
+ edit_field_as_text(&level_editor->edit_field_filename));
level_editor->file_name = PUSH_LT(
level_editor->lt,
string_duplicate(path, NULL),
} break;
}
- return edit_field_event(level_editor->edit_field_filename, event);
+ return edit_field_event(&level_editor->edit_field_filename, event);
}
static