From a1c6255b7d67e3066ede2cde4cf675555461f505 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Madar=C3=A1sz?= Date: Wed, 11 Aug 2021 01:06:12 +0200 Subject: [PATCH] debug: improve conds --- art/lava_death.dem | Bin 0 -> 63709 bytes art/timing_test.dem | Bin 0 -> 111965 bytes code/game/src/debug_replay.c | 31 +++++++++++++++++---------- code/game/src/debug_ui.c | 25 ++++++++++++++------- code/game/src/debug_ui_actions.c | 23 ++++++++++++++++---- code/modules/source/system_vehicle.c | 2 +- 6 files changed, 57 insertions(+), 24 deletions(-) create mode 100644 art/lava_death.dem create mode 100644 art/timing_test.dem diff --git a/art/lava_death.dem b/art/lava_death.dem new file mode 100644 index 0000000000000000000000000000000000000000..c83f224ae4d992fae5d9313222bcad11215dd1b2 GIT binary patch literal 63709 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 literal 0 HcmV?d00001 diff --git a/code/game/src/debug_replay.c b/code/game/src/debug_replay.c index ba233a7..553c17f 100644 --- a/code/game/src/debug_replay.c +++ b/code/game/src/debug_replay.c @@ -104,8 +104,27 @@ void debug_replay_clear(void) { record_pos = 0; } +void debug_replay_cleanup_ents(void) { + if (!mime) return; + + entity_despawn(mime); + mime = 0; + + is_playing = false; + camera_set_follow(plr); + + for (int i = 0; i < zpl_array_count(temp_actors); i++) { + entity_despawn(temp_actors[i]); + } + + zpl_array_free(temp_actors); +} + void debug_replay_stop(void) { is_recording = false; + is_playing = false; + record_pos = 0; + debug_replay_cleanup_ents(); } void debug_replay_run(void) { @@ -160,17 +179,7 @@ void debug_replay_update(void) { // NOTE(zaklaus): remove our dummy art exhibist if (mime && record_pos == zpl_array_count(records)) { - entity_despawn(mime); - mime = 0; - - is_playing = false; - camera_set_follow(plr); - - for (int i = 0; i < zpl_array_count(temp_actors); i++) { - entity_despawn(temp_actors[i]); - } - - zpl_array_free(temp_actors); + debug_replay_cleanup_ents(); } } diff --git a/code/game/src/debug_ui.c b/code/game/src/debug_ui.c index 1e6f771..2082e75 100644 --- a/code/game/src/debug_ui.c +++ b/code/game/src/debug_ui.c @@ -45,6 +45,8 @@ typedef struct debug_item { debug_kind kind; char const *name; float name_width; + uint8_t skip; + union { union { char const *text; @@ -133,12 +135,9 @@ static debug_item items[] = { .items = (debug_item[]) { { .kind = DITEM_TEXT, .name = "macro", .proc = DrawReplayFileName }, { .kind = DITEM_TEXT, .name = "samples", .proc = DrawReplaySamples }, - { .kind = DITEM_BUTTON, .name = "new", .on_click = ActReplayNew }, - { .kind = DITEM_BUTTON, .name = "load", .on_click = ActReplayLoad }, - { .kind = DITEM_BUTTON, .name = "save", .on_click = ActReplaySave }, - { .kind = DITEM_BUTTON, .name = "save as...", .on_click = ActReplaySaveAs }, - { .kind = DITEM_GAP }, + { .kind = DITEM_COND, .on_success = CondReplayDataPresentAndNotPlaying }, + { .kind = DITEM_BUTTON, .name = "replay", .on_click = ActReplayRun }, { .kind = DITEM_COND, .on_success = CondReplayStatusOff }, { .kind = DITEM_BUTTON, .name = "record", .on_click = ActReplayBegin }, @@ -146,10 +145,20 @@ static debug_item items[] = { { .kind = DITEM_COND, .on_success = CondReplayStatusOn }, { .kind = DITEM_BUTTON, .name = "stop", .on_click = ActReplayEnd }, - { .kind = DITEM_COND, .on_success = CondReplayDataPresent }, - { .kind = DITEM_BUTTON, .name = "replay", .on_click = ActReplayRun }, + { .kind = DITEM_COND, .on_success = CondReplayIsPlaying }, + { .kind = DITEM_BUTTON, .name = "stop", .on_click = ActReplayEnd }, + { .kind = DITEM_COND, .on_success = CondReplayIsNotPlayingOrRecordsNotClear }, { .kind = DITEM_BUTTON, .name = "clear", .on_click = ActReplayClear }, + + { .kind = DITEM_GAP }, + + { .kind = DITEM_COND, .on_success = CondReplayIsNotPlaying, .skip = 4 }, + { .kind = DITEM_BUTTON, .name = "new", .on_click = ActReplayNew }, + { .kind = DITEM_BUTTON, .name = "load", .on_click = ActReplayLoad }, + { .kind = DITEM_BUTTON, .name = "save", .on_click = ActReplaySave }, + { .kind = DITEM_BUTTON, .name = "save as...", .on_click = ActReplaySaveAs }, + { .kind = DITEM_END }, } } @@ -191,7 +200,7 @@ debug_draw_result debug_draw_list(debug_item *list, float xpos, float ypos, bool assert(it->on_success); if (!it->on_success()) { - it += 1; + it += it->skip ? it->skip : 1; } }break; case DITEM_LIST: { diff --git a/code/game/src/debug_ui_actions.c b/code/game/src/debug_ui_actions.c index 010c96f..130abc4 100644 --- a/code/game/src/debug_ui_actions.c +++ b/code/game/src/debug_ui_actions.c @@ -21,17 +21,32 @@ ActSpawnCar(void) { static inline uint8_t CondReplayStatusOn(void) { - return is_recording; + return is_recording && !is_playing; } static inline uint8_t CondReplayStatusOff(void) { - return !is_recording; + return !is_recording && !is_playing; } static inline uint8_t -CondReplayDataPresent(void) { - return records != NULL && !is_recording; +CondReplayDataPresentAndNotPlaying(void) { + return records != NULL && !is_recording && !is_playing; +} + +static inline uint8_t +CondReplayIsPlaying(void) { + return records != NULL && !is_recording && is_playing; +} + +static inline uint8_t +CondReplayIsNotPlaying(void) { + return !is_recording && !is_playing; +} + +static inline uint8_t +CondReplayIsNotPlayingOrRecordsNotClear(void) { + return records != NULL && !is_recording && !is_playing; } static inline void diff --git a/code/modules/source/system_vehicle.c b/code/modules/source/system_vehicle.c index d7d4e77..92dce10 100644 --- a/code/modules/source/system_vehicle.c +++ b/code/modules/source/system_vehicle.c @@ -52,7 +52,7 @@ void EnterOrLeaveVehicle(ecs_iter_t *it) { } } -#define VEHICLE_FORCE 19.8f +#define VEHICLE_FORCE 34.8f #define VEHICLE_ACCEL 0.27f #define VEHICLE_DECEL 0.28f #define VEHICLE_STEER 0.11f