tweak the binds menu. adding spacers, titles, and tooltips.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4653 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2014-05-10 17:26:41 +00:00
parent 6cc33d7d08
commit d39708f043
4 changed files with 27 additions and 14 deletions

View file

@ -665,16 +665,14 @@ static void MenuDraw(menu_t *menu)
menutext_t *MC_AddWhiteText(menu_t *menu, int lhs, int rhs, int y, const char *text, qboolean rightalign) menutext_t *MC_AddWhiteText(menu_t *menu, int lhs, int rhs, int y, const char *text, qboolean rightalign)
{ {
menutext_t *n = Z_Malloc(sizeof(menutext_t)); menutext_t *n = Z_Malloc(sizeof(menutext_t) + (text?strlen(text):0)+1);
n->common.type = mt_text; n->common.type = mt_text;
n->common.iszone = true; n->common.iszone = true;
n->common.posx = lhs; n->common.posx = lhs;
n->common.posy = y; n->common.posy = y;
n->common.width = rhs?rhs-lhs:0; n->common.width = (rhs && rightalign)?rhs-lhs:0;
n->text = text; n->text = (char*)(n+1);
strcpy((char*)(n+1), (text?text:""));
if (rightalign && text)
n->common.posx -= strlen(text)*8;
n->common.next = menu->options; n->common.next = menu->options;
menu->options = (menuoption_t *)n; menu->options = (menuoption_t *)n;
@ -704,14 +702,14 @@ menutext_t *MC_AddBufferedText(menu_t *menu, int lhs, int rhs, int y, const char
menutext_t *MC_AddRedText(menu_t *menu, int lhs, int rhs, int y, const char *text, qboolean rightalign) menutext_t *MC_AddRedText(menu_t *menu, int lhs, int rhs, int y, const char *text, qboolean rightalign)
{ {
menutext_t *n; menutext_t *n;
n = MC_AddWhiteText(menu, lhs, rhs, y, text, false); n = MC_AddWhiteText(menu, lhs, rhs, y, text, rightalign);
n->isred = true; n->isred = true;
return n; return n;
} }
menubind_t *MC_AddBind(menu_t *menu, int cx, int bx, int y, const char *caption, char *command) menubind_t *MC_AddBind(menu_t *menu, int cx, int bx, int y, const char *caption, char *command, char *tooltip)
{ {
menubind_t *n = Z_Malloc(sizeof(*n) + strlen(caption)+1 + strlen(command)+1); menubind_t *n = Z_Malloc(sizeof(*n) + strlen(caption)+1 + strlen(command)+1 + (tooltip?strlen(tooltip)+1:0));
n->common.type = mt_bind; n->common.type = mt_bind;
n->common.iszone = true; n->common.iszone = true;
n->common.posx = cx; n->common.posx = cx;
@ -721,6 +719,11 @@ menubind_t *MC_AddBind(menu_t *menu, int cx, int bx, int y, const char *caption,
strcpy(n->caption, caption); strcpy(n->caption, caption);
n->command = n->caption+strlen(n->caption)+1; n->command = n->caption+strlen(n->caption)+1;
strcpy(n->command, command); strcpy(n->command, command);
if (tooltip)
{
n->common.tooltip = n->command+strlen(n->command)+1;
strcpy(n->common.tooltip, tooltip);
}
n->common.width = n->captionwidth + 64; n->common.width = n->captionwidth + 64;
n->common.height = 8; n->common.height = 8;

View file

@ -291,7 +291,7 @@ void M_MenuS_Bind_f (void)
if (!*caption) if (!*caption)
caption = command; caption = command;
MC_AddBind(menu_script, x, x+160, y, command, caption); MC_AddBind(menu_script, x, x+160, y, command, caption, NULL);
} }
void M_MenuS_Comboi_f (void) void M_MenuS_Comboi_f (void)

View file

@ -435,17 +435,27 @@ void M_Menu_Keys_f (void)
char line[1024]; char line[1024];
while(VFS_GETS(bindslist, line, sizeof(line))) while(VFS_GETS(bindslist, line, sizeof(line)))
{ {
char *cmd, *desc, *tip;
Cmd_TokenizeString(line, false, false); Cmd_TokenizeString(line, false, false);
MC_AddBind(menu, 16, 170, y, Cmd_Argv(1), Cmd_Argv(0)); cmd = Cmd_Argv(0);
desc = Cmd_Argv(1);
tip = Cmd_Argv(2);
if (*cmd)
{
if (strcmp(cmd, "-")) //lines with a command of "-" are spacers/comments.
MC_AddBind(menu, (320-(int)vid.width)/2, 170, y, desc, cmd, tip);
else if (*desc)
MC_AddRedText(menu, (320-(int)vid.width)/2, 170, y, desc, true);
y += 8; y += 8;
} }
}
VFS_CLOSE(bindslist); VFS_CLOSE(bindslist);
return; return;
} }
while (bindnames->name) while (bindnames->name)
{ {
MC_AddBind(menu, 16, 170, y, bindnames->name, bindnames->command); MC_AddBind(menu, 16, 170, y, bindnames->name, bindnames->command, NULL);
y += 8; y += 8;
bindnames++; bindnames++;

View file

@ -293,7 +293,7 @@ typedef struct menu_s {
menutext_t *MC_AddBufferedText(menu_t *menu, int lhs, int rhs, int y, const char *text, qboolean rightalign, qboolean red); menutext_t *MC_AddBufferedText(menu_t *menu, int lhs, int rhs, int y, const char *text, qboolean rightalign, qboolean red);
menutext_t *MC_AddRedText(menu_t *menu, int lhs, int rhs, int y, const char *text, qboolean rightalign); menutext_t *MC_AddRedText(menu_t *menu, int lhs, int rhs, int y, const char *text, qboolean rightalign);
menutext_t *MC_AddWhiteText(menu_t *menu, int lhs, int rhs, int y, const char *text, qboolean rightalign); menutext_t *MC_AddWhiteText(menu_t *menu, int lhs, int rhs, int y, const char *text, qboolean rightalign);
menubind_t *MC_AddBind(menu_t *menu, int cx, int bx, int y, const char *caption, char *command); menubind_t *MC_AddBind(menu_t *menu, int cx, int bx, int y, const char *caption, char *command, char *tooltip);
menubox_t *MC_AddBox(menu_t *menu, int x, int y, int width, int height); menubox_t *MC_AddBox(menu_t *menu, int x, int y, int width, int height);
menupicture_t *MC_AddPicture(menu_t *menu, int x, int y, int width, int height, char *picname); menupicture_t *MC_AddPicture(menu_t *menu, int x, int y, int width, int height, char *picname);
menupicture_t *MC_AddSelectablePicture(menu_t *menu, int x, int y, char *picname); menupicture_t *MC_AddSelectablePicture(menu_t *menu, int x, int y, char *picname);