Skip to content

Commit

Permalink
Fixed talents menu bug. Also added layout style flag to allow for whi…
Browse files Browse the repository at this point in the history
…te/green/blinking HUD text.
  • Loading branch information
Vortex-Quake2 committed Apr 29, 2023
1 parent 7856ff7 commit 7e3d51f
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 54 deletions.
2 changes: 1 addition & 1 deletion src/characters/Talents.c
Original file line number Diff line number Diff line change
Expand Up @@ -474,7 +474,7 @@ int writeTalentDescription(edict_t *ent, int talentID) {
menu_add_line(ent, "higher level devices.", MENU_WHITE_CENTERED);
menu_add_line(ent, "Can't be combined with", MENU_WHITE_CENTERED);
menu_add_line(ent, "Rapid Assembly.", MENU_WHITE_CENTERED);
return 3;
return 5;
case TALENT_STORAGE_UPGRADE:
menu_add_line(ent, "Increases ammunition", MENU_WHITE_CENTERED);
menu_add_line(ent, "capacity of SS/sentry/AC.", MENU_WHITE_CENTERED);
Expand Down
90 changes: 37 additions & 53 deletions src/quake2/g_layout.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,18 @@ lva_result_t lva(const char* format, ...)
}

#define MAX_SIDEBAR_ROWS 32
#define STYLE_WHITE 0
#define STYLE_GREEN 1
#define STYLE_BLINK 2

typedef struct sidebar_result_s
{
lva_result_t name;
lva_result_t data;
lva_result_t pic;
layout_pos_t pos;
int name_style; // 0 = white text, 1 = green text
int data_style; // 0 = white text, 1 = green text
} sidebar_entry_t;

typedef struct sidebar_s
Expand Down Expand Up @@ -436,7 +441,7 @@ sidebar_entry_t layout_add_aura_info(sidebar_t* sidebar, que_t* que)
}

if (que->ent->owner && que->ent->owner->client)
res.data = lva(
res.data = lva(0,
"%.1fs (%s)",
que->time - level.time,
que->ent->owner->client->pers.netname
Expand Down Expand Up @@ -480,7 +485,16 @@ void layout_generate_misc(edict_t* ent, sidebar_t* sidebar)

if (pregame_time->value > level.time && !trading->value)
{
float timeleft = pregame_time->value - level.time;
sidebar_entry_t entry = { 0 };

if (timeleft < 10)
{
entry.data_style = STYLE_BLINK;
}
//else
//entry.data_style = STYLE_WHITE;
//gi.dprintf("time left %.1f, set style to %d\n", timeleft, entry.data_style);
entry.pos = sidebar_get_next_line_pos(sidebar);
entry.name = lva("pregame");
entry.data = lva("%.0fs", pregame_time->value - level.time);
Expand All @@ -499,26 +513,6 @@ void layout_generate_misc(edict_t* ent, sidebar_t* sidebar)

void layout_generate_curses(edict_t* ent, sidebar_t* sidebar)
{
/*
if (ent->cocoon_time >= level.time) {
float dt = ent->cocoon_time - level.time;
sidebar_entry_t res = {0};
res.pos = sidebar_get_next_line_pos(sidebar);
res.name = lva("cocooned");
res.data = lva("%.1fs +%.1f%%", dt, (ent->cocoon_factor - 1) * 100.0f);
sidebar_add_entry(sidebar, res);
}
if (ent->fury_time >= level.time)
{
float dt = ent->fury_time - level.time;
sidebar_entry_t res = {0};
res.pos = sidebar_get_next_line_pos(sidebar);
res.name = lva("furied");
res.data = lva("%.2fs", dt);
sidebar_add_entry(sidebar, res);
}*/

for (int i = 0; i < QUE_MAXSIZE; i++)
{
que_t* curse = &ent->curses[i];
Expand Down Expand Up @@ -566,7 +560,17 @@ void sidebar_emit_layout(layout_t* layout, sidebar_t* sidebar)

// first, emit the name string
layout_apply_pos(layout, entry->pos);
layout_add_string(layout, entry->name.str);
if (entry->name_style == STYLE_GREEN)
layout_add_highlight_string(layout, entry->name.str);
else if (entry->data_style == STYLE_BLINK)
{
if (sf2qf(level.framenum) & 2)
layout_add_string(layout, entry->name.str);
else
layout_add_highlight_string(layout, entry->name.str);
}
else
layout_add_string(layout, entry->name.str);
}

// doing it this way we save cursor position changes from the 3rd row.
Expand All @@ -580,7 +584,17 @@ void sidebar_emit_layout(layout_t* layout, sidebar_t* sidebar)
// now emit the data string
npos.x += namelen * 8;
layout_apply_pos(layout, npos);
layout_add_string(layout, entry->data.str);
if (entry->data_style == STYLE_GREEN)
layout_add_highlight_string(layout, entry->data.str);
else if (entry->data_style == STYLE_BLINK)
{
if (sf2qf(level.framenum) & 2)
layout_add_string(layout, entry->data.str);
else
layout_add_highlight_string(layout, entry->data.str);
}
else
layout_add_string(layout, entry->data.str);
}

// emit pics
Expand Down Expand Up @@ -641,36 +655,6 @@ void layout_generate_all(edict_t* ent)

layout_clean_tracked_entity_list(&ent->client->layout);
layout_reset(&ent->client->layout);
/*
if (ent->client->ability_delay > level.time)
{
sidebar_entry_t entry = {0};
entry.pos = sidebar_get_next_line_pos(&sidebar);
entry.name = lva("cd");
entry.data = lva("%.1f", ent->client->ability_delay - level.time);
sidebar_add_entry(&sidebar, entry);
}
if (pregame_time->value > level.time && !trading->value)
{
sidebar_entry_t entry = {0};
entry.pos = sidebar_get_next_line_pos(&sidebar);
entry.name = lva("pregame");
entry.data = lva("%.0fs", pregame_time->value - level.time);
sidebar_add_entry(&sidebar, entry);
}
if (ent->client->tele_timeout > level.framenum)
{
sidebar_entry_t entry = { 0 };
entry.pos = sidebar_get_next_line_pos(&sidebar);
entry.name = lva("blinkStrike");
entry.data = lva("%ds", (int)(ent->client->tele_timeout - level.framenum)/10);
sidebar_add_entry(&sidebar, entry);
}*/
layout_generate_misc(ent, &sidebar);
layout_generate_entities(&ent->client->layout, &sidebar);
layout_generate_curses(ent, &sidebar);
Expand Down

0 comments on commit 7e3d51f

Please sign in to comment.