Skip to content

Commit

Permalink
Track reference splits
Browse files Browse the repository at this point in the history
  • Loading branch information
kraflab committed Aug 7, 2021
1 parent bc51e4c commit 7f040d3
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 7 deletions.
8 changes: 6 additions & 2 deletions prboom2/src/dsda/intermission_display.c
Expand Up @@ -54,6 +54,10 @@ void dsda_InitIntermissionDisplay(patchnum_t* font) {

extern int leveltime, totalleveltimes;

static int dsda_SplitComparisonDelta(dsda_split_time_t* split_time) {
return split_time->ref ? split_time->ref_delta : split_time->best_delta;
}

static void dsda_UpdateIntermissionTime(dsda_split_t* split) {
char* s;
char delta[16];
Expand All @@ -66,7 +70,7 @@ static void dsda_UpdateIntermissionTime(dsda_split_t* split) {
const char* sign;
int diff;

diff = split->leveltime.best_delta;
diff = dsda_SplitComparisonDelta(&split->leveltime);
sign = diff >= 0 ? "+" : "-";
color = diff >= 0 ? 0x30 + g_cr_gray : 0x30 + g_cr_green;
diff = abs(diff);
Expand Down Expand Up @@ -112,7 +116,7 @@ static void dsda_UpdateIntermissionTotal(dsda_split_t* split) {
const char* sign;
int diff;

diff = split->totalleveltimes.best_delta / 35;
diff = dsda_SplitComparisonDelta(&split->totalleveltimes) / 35;
sign = diff >= 0 ? "+" : "-";
color = diff >= 0 ? 0x30 + g_cr_gray : 0x30 + g_cr_green;
diff = abs(diff);
Expand Down
22 changes: 17 additions & 5 deletions prboom2/src/dsda/split_tracker.c
Expand Up @@ -85,6 +85,8 @@ static void dsda_InitSplitTime(dsda_split_time_t* split_time) {
split_time->best_delta = 0;
split_time->session_best = 0;
split_time->session_best_delta = 0;
split_time->ref = 0;
split_time->ref_delta = 0;
}

static void dsda_LoadSplits(void) {
Expand All @@ -102,7 +104,7 @@ static void dsda_LoadSplits(void) {
return;

if (M_ReadFile(path, &buffer) != -1) {
int episode, map, tics, total_tics, exits, count, i;
int episode, map, tics, total_tics, exits, count, i, ref_tics, ref_total_tics;
char* line;

line = strtok(buffer, "\n");
Expand All @@ -113,8 +115,13 @@ static void dsda_LoadSplits(void) {
}

while (line) {
count = sscanf(line, "%i %i %i %i %i", &episode, &map, &tics, &total_tics, &exits);
if (count != 5)
ref_tics = ref_total_tics = 0;
count = sscanf(
line, "%i %i %i %i %i %i %i",
&episode, &map, &tics, &total_tics, &exits,
&ref_tics, &ref_total_tics
);
if (count < 5)
break;

i = dsda_splits_count;
Expand All @@ -126,6 +133,8 @@ static void dsda_LoadSplits(void) {
dsda_splits[i].map = map;
dsda_splits[i].leveltime.best = tics;
dsda_splits[i].totalleveltimes.best = total_tics;
dsda_splits[i].leveltime.ref = ref_tics;
dsda_splits[i].totalleveltimes.ref = ref_total_tics;
dsda_splits[i].exits = exits;
dsda_splits[i].run_counter = 0;

Expand Down Expand Up @@ -153,12 +162,14 @@ void dsda_WriteSplits(void) {

for (i = 0; i < dsda_splits_count; ++i) {
p += sprintf(
p, "%i %i %i %i %i\n",
p, "%i %i %i %i %i %i %i\n",
dsda_splits[i].episode,
dsda_splits[i].map,
dsda_splits[i].leveltime.best,
dsda_splits[i].totalleveltimes.best,
dsda_splits[i].exits
dsda_splits[i].exits,
dsda_splits[i].leveltime.ref,
dsda_splits[i].totalleveltimes.ref
);
}

Expand All @@ -170,6 +181,7 @@ static void dsda_TrackSplitTime(dsda_split_time_t* split_time, int current) {
split_time->current = current;
split_time->best_delta = current - split_time->best;
split_time->session_best_delta = current - split_time->session_best;
split_time->ref_delta = current - split_time->ref;

if (current < split_time->best || !split_time->best)
split_time->best = current;
Expand Down
2 changes: 2 additions & 0 deletions prboom2/src/dsda/split_tracker.h
Expand Up @@ -24,6 +24,8 @@ typedef struct {
int best_delta;
int session_best;
int session_best_delta;
int ref;
int ref_delta;
} dsda_split_time_t;

typedef struct {
Expand Down

0 comments on commit 7f040d3

Please sign in to comment.