diff --git a/config/menus.cfg b/config/menus.cfg index 36fd3573..fefd7cbe 100644 --- a/config/menus.cfg +++ b/config/menus.cfg @@ -59,6 +59,7 @@ newmenu [Watching demo] menuitem (_ [Stop watching demo]) stopdemo menuitem (_ [Restart demo]) [ demo $curdemofile ] menuitem (_ [Watch other demo]) [ stopdemo; closemenu [Watching demo]; showmenu [Play demo] ] +menuitemtextinput (_ [Custom description: ]) [ getalias (concatword "demodesc_" $curdemofile) ] [ alias (concatword "demodesc_" $curdemofile) $arg1 ] [] 50 menuitem [] -1 menuitem (concatword (c 4) (_ [Main menu...])) [ closemenu [Watching demo]; showmenu main ] menuitem (concatword (c 3) (_ [Quit AssaultCube])) savequit diff --git a/source/src/command.cpp b/source/src/command.cpp index de2bae56..668f3bf3 100644 --- a/source/src/command.cpp +++ b/source/src/command.cpp @@ -1478,7 +1478,14 @@ void writecfg() writebinds(f); f->printf("\n// aliases\n\n"); enumerate(*idents, ident, id, - if(id.type==ID_ALIAS && id.persist && id.action[0]) + if(id.type==ID_ALIAS && id.persist && id.action[0] && strncmp(id.name, "demodesc_", 9)) + { + f->printf("%s = [%s]\n", id.name, id.action); + } + ); + f->printf("\n// demo descriptions\n\n"); + enumerate(*idents, ident, id, + if(id.type==ID_ALIAS && id.persist && id.action[0] && !strncmp(id.name, "demodesc_", 9) && id.action) { f->printf("%s = [%s]\n", id.name, id.action); } diff --git a/source/src/menus.cpp b/source/src/menus.cpp index c0fdb82d..1dd46a5d 100644 --- a/source/src/menus.cpp +++ b/source/src/menus.cpp @@ -15,7 +15,7 @@ char *getfiledesc(const char *dir, const char *name, const char *ext) if(!browsefiledesc || !dir || !name || !ext) return NULL; defformatstring(fn)("%s/%s.%s", dir, name, ext); path(fn); - string text; + string text, demodescalias; if(!strcmp(ext, "dmo")) { stream *f = opengzfile(fn, "rb"); @@ -33,6 +33,15 @@ char *getfiledesc(const char *dir, const char *name, const char *ext) } formatstring(text)("%s%s", tag, hdr.desc); text[DHDR_DESCCHARS - 1] = '\0'; + formatstring(demodescalias)("demodesc_%s", name); + const char *customdesc = getalias(demodescalias); + if(customdesc) + { + int textlen = strlen(text); + concatformatstring(text, " \n\f4(Description: \f0%s\f4)", customdesc); + ASSERT(MAXSTRLEN > 2 * DHDR_DESCCHARS); + text[textlen + DHDR_DESCCHARS - 1] = '\0'; + } return newstring(text); } else if(!strcmp(ext, "cgz"))