--- /dev/null
+#ifndef CONFIG_H_
+#define CONFIG_H_
+
+#define PLAYER_DEATH_LEVEL 1000.0f
+
+// TODO: LEVEL_EDITOR_DETH_LEVEL_COLOR is hardcoded
+// Should be customizable in the Level Editor
+#define LEVEL_EDITOR_DETH_LEVEL_COLOR hsla(0.0f, 0.8f, 0.6f, 1.0f)
+
+#endif // CONFIG_H_
SDL_Rect view_port;
SDL_RenderGetViewport(camera->renderer, &view_port);
- const Vec s = effective_scale(&view_port);
- const float w = (float) view_port.w * s.x;
- const float h = (float) view_port.h * s.y;
-
- return rect(camera->position.x - w * 0.5f,
- camera->position.y - h * 0.5f,
- w, h);
+ Point p1 = camera_map_screen(
+ camera,
+ view_port.x,
+ view_port.y);
+ Point p2 = camera_map_screen(
+ camera,
+ view_port.x + view_port.w,
+ view_port.y + view_port.h);
+
+ return rect_from_points(p1, p2);
}
Rect camera_view_port_screen(const Camera *camera)
return -1;
}
+ // TODO: background rendering is broken
+ // Broken by #1067
const Rect view_port = camera_view_port(camera);
- const Vec position = vec(view_port.x, view_port.y);
+ const Vec position = vec(
+ view_port.x - view_port.w * 0.5f,
+ view_port.y - view_port.h * 0.5f);
for (int l = 0; l < 3; ++l) {
- const float parallax = 1.0f - 0.2f * (float)l;
+ const float parallax = 1.0f - 0.2f * (float) l;
int min_x = 0, min_y = 0;
chunk_of_point(vec(view_port.x - position.x * parallax,
#include "system/lt_adapters.h"
#include "system/log.h"
#include "system/str.h"
+#include "config.h"
#include "level_editor.h"
return -1;
}
+ const Rect world_viewport = camera_view_port(camera);
+
+ if (PLAYER_DEATH_LEVEL < world_viewport.y + world_viewport.h) {
+ if (camera_fill_rect(
+ camera,
+ rect(
+ world_viewport.x, PLAYER_DEATH_LEVEL,
+ world_viewport.w, world_viewport.h + fmaxf(0.0f, world_viewport.y - PLAYER_DEATH_LEVEL)),
+ LEVEL_EDITOR_DETH_LEVEL_COLOR) < 0) {
+ return -1;
+ }
+ }
+
for (size_t i = 0; i < LAYER_PICKER_N; ++i) {
if (layer_render(
level_editor->layers[i],
}
}
- const Rect viewport = camera_view_port_screen(camera);
+ const Rect screen_viewport = camera_view_port_screen(camera);
const Vec text_size = fading_wiggly_text_size(
&level_editor->notice,
camera);
fading_wiggly_text_render(
&level_editor->notice, camera,
- vec(viewport.w * 0.5f - text_size.x * 0.5f,
+ vec(screen_viewport.w * 0.5f - text_size.x * 0.5f,
LEVEL_EDITOR_NOTICE_PADDING_TOP));
return 0;
#include "system/nth_alloc.h"
#include "system/stacktrace.h"
#include "ebisp/builtins.h"
+#include "config.h"
#define PLAYER_WIDTH 25.0f
#define PLAYER_HEIGHT 25.0f
const Rect hitbox = rigid_bodies_hitbox(player->rigid_bodies, player->alive_body_id);
- if (hitbox.y > 1000.0f) {
+ if (hitbox.y > PLAYER_DEATH_LEVEL) {
player_die(player);
}
} break;