From 4c093ee248e6fb7f1e14cc4cac6930c41a02506c Mon Sep 17 00:00:00 2001 From: rexim Date: Sun, 26 Jan 2020 03:04:51 +0700 Subject: [PATCH] Wire up pp to level loop --- assets/levels/level-02.txt | 6 +++--- nothing.c | 2 +- src/game/level.c | 11 +++++++++-- src/game/level/level_editor.c | 1 + src/game/level/phantom_platforms.c | 4 ++-- src/game/level/phantom_platforms.h | 2 +- 6 files changed, 17 insertions(+), 9 deletions(-) diff --git a/assets/levels/level-02.txt b/assets/levels/level-02.txt index 449c114f..d8fe8287 100644 --- a/assets/levels/level-02.txt +++ b/assets/levels/level-02.txt @@ -43,6 +43,6 @@ box_0 -3923.780518 452.429810 112.500031 107.291695 a05034 0 0 3 -pp_0 -104.841812 -42.929047 55.225319 53.499516 ff0000 -pp_1 30.632792 -131.375824 56.951111 62.559914 ff0000 -pp_2 59.539791 -29.554169 44.870571 75.071899 ff0000 +pp_0 -116.490898 -97.722908 42.713326 84.995201 ff0000 +pp_1 92.761269 -140.436234 31.927139 80.249283 ff0000 +pp_2 30.632792 -16.610737 41.418991 59.971233 ff0000 diff --git a/nothing.c b/nothing.c index 7c45c8a3..ea454258 100644 --- a/nothing.c +++ b/nothing.c @@ -49,4 +49,4 @@ #include "src/dynarray.c" #include "src/system/file.c" #include "src/ring_buffer.c" -#include "src/game/level/phantom_platforms.h" +#include "src/game/level/phantom_platforms.c" diff --git a/src/game/level.c b/src/game/level.c index c7c95c82..bb9f7ba9 100644 --- a/src/game/level.c +++ b/src/game/level.c @@ -10,6 +10,7 @@ #include "game/level/labels.h" #include "game/level/lava.h" #include "game/level/platforms.h" +#include "game/level/phantom_platforms.h" #include "game/level/player.h" #include "game/level/regions.h" #include "game/level/rigid_bodies.h" @@ -48,6 +49,7 @@ struct Level Boxes *boxes; Labels *labels; Regions *regions; + Phantom_Platforms pp; }; Level *create_level_from_level_editor(const LevelEditor *level_editor) @@ -143,12 +145,15 @@ Level *create_level_from_level_editor(const LevelEditor *level_editor) RETURN_LT(lt, NULL); } + level->pp = create_phantom_platforms(level_editor->pp_layer); + return level; } void destroy_level(Level *level) { trace_assert(level); + destroy_phantom_platforms(level->pp); RETURN_LT0(level->lt); } @@ -164,6 +169,8 @@ int level_render(const Level *level, const Camera *camera) return -1; } + phantom_platforms_render(&level->pp, camera); + if (player_render(level->player, camera) < 0) { return -1; } @@ -221,8 +228,8 @@ int level_update(Level *level, float delta_time) labels_update(level->labels, delta_time); Rect hitbox = player_hitbox(level->player); - platforms_hide_platform_at(level->back_platforms, vec(hitbox.x, hitbox.y)); - platforms_update(level->back_platforms, delta_time); + phantom_platforms_hide_at(&level->pp, vec(hitbox.x, hitbox.y)); + phantom_platforms_update(&level->pp, delta_time); return 0; } diff --git a/src/game/level/level_editor.c b/src/game/level/level_editor.c index 498f56ca..571aed64 100644 --- a/src/game/level/level_editor.c +++ b/src/game/level/level_editor.c @@ -113,6 +113,7 @@ LevelEditor *create_level_editor_from_file(Memory *memory, Cursor *cursor, const rect_layer_load(level_editor->boxes_layer, memory, &input); label_layer_load(level_editor->label_layer, memory, &input); rect_layer_load(level_editor->regions_layer, memory, &input); + rect_layer_load(level_editor->pp_layer, memory, &input); undo_history_clean(level_editor->undo_history); return level_editor; diff --git a/src/game/level/phantom_platforms.c b/src/game/level/phantom_platforms.c index 6ed96ddc..0e3d9d9c 100644 --- a/src/game/level/phantom_platforms.c +++ b/src/game/level/phantom_platforms.c @@ -23,7 +23,7 @@ void destroy_phantom_platforms(Phantom_Platforms pp) free(pp.hiding); } -void phantom_platforms_render(Phantom_Platforms *pp, Camera *camera) +void phantom_platforms_render(const Phantom_Platforms *pp, const Camera *camera) { trace_assert(pp); trace_assert(camera); @@ -33,7 +33,7 @@ void phantom_platforms_render(Phantom_Platforms *pp, Camera *camera) } } -#define HIDING_SPEED 2.0f +#define HIDING_SPEED 4.0f void phantom_platforms_update(Phantom_Platforms *pp, float dt) { diff --git a/src/game/level/phantom_platforms.h b/src/game/level/phantom_platforms.h index 710bc494..4b46d920 100644 --- a/src/game/level/phantom_platforms.h +++ b/src/game/level/phantom_platforms.h @@ -11,7 +11,7 @@ typedef struct { Phantom_Platforms create_phantom_platforms(RectLayer *rect_layer); void destroy_phantom_platforms(Phantom_Platforms pp); -void phantom_platforms_render(Phantom_Platforms *pp, Camera *camera); +void phantom_platforms_render(const Phantom_Platforms *pp, const Camera *camera); void phantom_platforms_update(Phantom_Platforms *pp, float dt); void phantom_platforms_hide_at(Phantom_Platforms *pp, Vec2f position); -- 2.44.0