int QuickMenu_Buffer_Index;
string QuickMenu_CurrentSubMenu;
float QuickMenu_TimeOut;
+
+// QuickMenu_Buffer are labeled with these tags
+#define QM_TAG_TITLE "T"
+#define QM_TAG_SUBMENU "S"
+#define QM_TAG_COMMAND "C"
+#define QM_TAG_PLCOMMAND "P"
+
+#define QuickMenu_Buffer_Set(tag, string) bufstr_set(QuickMenu_Buffer, QuickMenu_Buffer_Size, strcat(tag, string))
+#define QuickMenu_Buffer_Get() bufstr_get(QuickMenu_Buffer, QuickMenu_Buffer_Index)
+
// if s1 is not empty s will be displayed as command otherwise as submenu
void QuickMenu_Page_LoadEntry(int i, string s, string s1)
{
mode = "file";
}
+ if(mode == "file")
+ {
+ if(autocvar_hud_panel_quickmenu_file == "" || autocvar_hud_panel_quickmenu_file == "0")
+ printf("No file name is set in hud_panel_quickmenu_file, loading default quickmenu\n");
+ else
+ {
+ fh = fopen(autocvar_hud_panel_quickmenu_file, FILE_READ);
+ if(fh < 0)
+ printf("Couldn't open file \"%s\", loading default quickmenu\n", autocvar_hud_panel_quickmenu_file);
+ }
+ if(fh < 0)
+ mode = "default";
+ }
+
if(mode == "default")
{
QuickMenu_Buffer = buf_create();
}
else if(mode == "file")
{
- if(autocvar_hud_panel_quickmenu_file != "")
- if(autocvar_hud_panel_quickmenu_file != "0")
- fh = fopen(autocvar_hud_panel_quickmenu_file, FILE_READ);
- if(fh < 0)
- {
- printf("Couldn't open file \"%s\"\n", autocvar_hud_panel_quickmenu_file);
- return false;
- }
-
QuickMenu_Buffer = buf_create();
if(QuickMenu_Buffer < 0)
{
// first skip invalid entries, so we don't check them anymore
float argc;
argc = tokenize_console(s);
- if(argc == 0 || argv(0) == "" || substring(argv(0), 0, 2) == "////")
+ if(argc == 0 || argv(0) == "")
continue;
if(argc == 1)
- bufstr_set(QuickMenu_Buffer, QuickMenu_Buffer_Size, strcat("S", argv(0))); // Submenu
+ QuickMenu_Buffer_Set(QM_TAG_SUBMENU, argv(0));
else if(argc == 2)
{
if(argv(1) == "")
continue;
- bufstr_set(QuickMenu_Buffer, QuickMenu_Buffer_Size, strcat("T", argv(0))); // command Title
+ QuickMenu_Buffer_Set(QM_TAG_TITLE, argv(0));
++QuickMenu_Buffer_Size;
- bufstr_set(QuickMenu_Buffer, QuickMenu_Buffer_Size, strcat("C", argv(1))); // command
+ QuickMenu_Buffer_Set(QM_TAG_COMMAND, argv(1));
}
else if(argc == 3)
{
float teamplayers = 0, without_me = 0;
switch(argv(2))
{
- case "ALLPLAYERS_BUT_ME": without_me = 1;
+ case "ALLPLAYERS_BUT_ME": without_me = 1; // fall through
case "ALLPLAYERS": teamplayers = 0; break;
- case "OWNTEAMPLAYERS_BUT_ME": without_me = 1;
+ case "OWNTEAMPLAYERS_BUT_ME": without_me = 1; // fall through
case "OWNTEAMPLAYERS": teamplayers = 1; break;
case "ENEMYTEAMPLAYERS": teamplayers = 2; break;
default: continue;
if(QuickMenu_Buffer_Size + 3 < QUICKMENU_BUFFER_MAXENTRIES)
{
- bufstr_set(QuickMenu_Buffer, QuickMenu_Buffer_Size, strcat("S", argv(0))); // Submenu
+ QuickMenu_Buffer_Set(QM_TAG_SUBMENU, argv(0));
++QuickMenu_Buffer_Size;
- bufstr_set(QuickMenu_Buffer, QuickMenu_Buffer_Size, strcat("T", ftos(teamplayers), ftos(without_me))); // command arguments
+ QuickMenu_Buffer_Set(QM_TAG_TITLE, strcat(ftos(teamplayers), ftos(without_me))); // put PLCOMMAND arguments in the title string
++QuickMenu_Buffer_Size;
- bufstr_set(QuickMenu_Buffer, QuickMenu_Buffer_Size, strcat("P", argv(1))); // command for each player
+ QuickMenu_Buffer_Set(QM_TAG_PLCOMMAND, argv(1));
++QuickMenu_Buffer_Size;
- bufstr_set(QuickMenu_Buffer, QuickMenu_Buffer_Size, strcat("S", argv(0))); // Submenu
+ QuickMenu_Buffer_Set(QM_TAG_SUBMENU, argv(0));
}
}
++QuickMenu_Buffer_Size;
setcursormode(1);
hudShiftState = 0;
- QuickMenu_TimeOut = time + autocvar_hud_panel_quickmenu_time;
+ QuickMenu_TimeOut = ((autocvar_hud_panel_quickmenu_time > 0) ? time + autocvar_hud_panel_quickmenu_time : 0);
return true;
}
z_submenu = strzone(submenu);
for(++QuickMenu_Buffer_Index ; QuickMenu_Buffer_Index < QuickMenu_Buffer_Size; ++QuickMenu_Buffer_Index)
{
- s = bufstr_get(QuickMenu_Buffer, QuickMenu_Buffer_Index);
- if(substring(s, 0, 1) != "S")
+ s = QuickMenu_Buffer_Get();
+ if(substring(s, 0, 1) != QM_TAG_SUBMENU)
continue;
if(substring(s, 1, -1) == z_submenu) // submenu end
break;
// skip everything until the submenu open tag is found
for( ; QuickMenu_Buffer_Index < QuickMenu_Buffer_Size; ++QuickMenu_Buffer_Index)
{
- s = bufstr_get(QuickMenu_Buffer, QuickMenu_Buffer_Index);
- if(substring(s, 0, 1) == "S" && substring(s, 1, -1) == z_submenu)
+ s = QuickMenu_Buffer_Get();
+ if(substring(s, 0, 1) == QM_TAG_SUBMENU && substring(s, 1, -1) == z_submenu)
{
// printf("^3 beginning of %s\n", z_submenu);
++QuickMenu_Buffer_Index;
int entry_num = 0; // counts entries in target_submenu
for( ; QuickMenu_Buffer_Index < QuickMenu_Buffer_Size; ++QuickMenu_Buffer_Index)
{
- s = bufstr_get(QuickMenu_Buffer, QuickMenu_Buffer_Index);
+ s = QuickMenu_Buffer_Get();
if(z_submenu != "" && substring(s, 1, -1) == z_submenu)
{
}
// NOTE: entries are loaded starting from 1, not from 0
- if(substring(s, 0, 1) == "S") // submenu
+ if(substring(s, 0, 1) == QM_TAG_SUBMENU)
{
if(entry_num >= first_entry)
QuickMenu_Page_LoadEntry(QuickMenu_Page_Entries, substring(s, 1, -1), "");
QuickMenu_skip_submenu(substring(s, 1, -1));
}
- else if(entry_num >= first_entry && substring(s, 0, 1) == "T")
+ else if(entry_num >= first_entry && substring(s, 0, 1) == QM_TAG_TITLE)
{
++QuickMenu_Buffer_Index;
- cmd = bufstr_get(QuickMenu_Buffer, QuickMenu_Buffer_Index);
+ cmd = QuickMenu_Buffer_Get();
string command_code = substring(cmd, 0, 1);
- if(command_code == "C")
+ if(command_code == QM_TAG_COMMAND)
cmd = substring(cmd, 1, -1);
- else if(command_code == "P")
+ else if(command_code == QM_TAG_PLCOMMAND)
{
// throw away the current quickmenu buffer and load a new one
cmd = substring(cmd, 1, -1);
QuickMenu_Close();
return false;
}
- QuickMenu_TimeOut = time + autocvar_hud_panel_quickmenu_time;
+ QuickMenu_TimeOut = ((autocvar_hud_panel_quickmenu_time > 0) ? time + autocvar_hud_panel_quickmenu_time : 0);
return true;
}
if (QuickMenu_Page_Command[num] != "")
{
localcmd(strcat("\n", QuickMenu_Page_Command[num], "\n"));
- QuickMenu_TimeOut = time + autocvar_hud_panel_quickmenu_time;
+ QuickMenu_TimeOut = ((autocvar_hud_panel_quickmenu_time > 0) ? time + autocvar_hud_panel_quickmenu_time : 0);
return true;
}
if (QuickMenu_Page_Description[num] != "")
//if(!autocvar_hud_panel_quickmenu) return;
if(!hud_panel_quickmenu) return;
+ if(QuickMenu_TimeOut)
if(time > QuickMenu_TimeOut)
{
QuickMenu_Close();
if(target_submenu == eng_submenu && target_submenu_found) \
return; /* target_submenu entries are now loaded, exit */ \
if(QuickMenu_Buffer_Size < QUICKMENU_BUFFER_MAXENTRIES) \
- bufstr_set(QuickMenu_Buffer, QuickMenu_Buffer_Size, strcat("S", submenu)); \
+ QuickMenu_Buffer_Set(QM_TAG_SUBMENU, submenu); \
++QuickMenu_Buffer_Size; \
if(target_submenu == eng_submenu && !target_submenu_found) { \
QuickMenu_Buffer_Size = 0; /* enable load of next entries */ \
#define QUICKMENU_ENTRY(title,command) { \
if(QuickMenu_Buffer_Size + 1 < QUICKMENU_BUFFER_MAXENTRIES) \
{ \
- bufstr_set(QuickMenu_Buffer, QuickMenu_Buffer_Size, strcat("T", title)); \
+ QuickMenu_Buffer_Set(QM_TAG_TITLE, title); \
++QuickMenu_Buffer_Size; \
- bufstr_set(QuickMenu_Buffer, QuickMenu_Buffer_Size, strcat("C", command)); \
+ QuickMenu_Buffer_Set(QM_TAG_COMMAND, command); \
} \
++QuickMenu_Buffer_Size; \
}
#define QUICKMENU_SMENU_PL(submenu,eng_submenu,command,teamplayers,without_me) { \
if(QuickMenu_Buffer_Size + 3 < QUICKMENU_BUFFER_MAXENTRIES) {\
QUICKMENU_SMENU(submenu,eng_submenu) \
- bufstr_set(QuickMenu_Buffer, QuickMenu_Buffer_Size, strcat("T", ftos(teamplayers), ftos(without_me))); \
+ QuickMenu_Buffer_Set(QM_TAG_TITLE, strcat(ftos(teamplayers), ftos(without_me))); \
++QuickMenu_Buffer_Size; \
- bufstr_set(QuickMenu_Buffer, QuickMenu_Buffer_Size, strcat("P", command)); \
+ QuickMenu_Buffer_Set(QM_TAG_PLCOMMAND, command); \
++QuickMenu_Buffer_Size; \
QUICKMENU_SMENU(submenu,eng_submenu) \
} \
QuickMenu_Buffer_Size = QUICKMENU_BUFFER_MAXENTRIES; // forbids load of next entries until target_submenu
QUICKMENU_SMENU(CTX(_("QMCMD^Chat")), "Chat")
- if(prvm_language != "en")
- QUICKMENU_ENTRY(CTX(_("QMCMD^Send untranslated")), "toggle hud_panel_quickmenu_translatecommands 0 1")
QUICKMENU_ENTRY_TC(CTX(_("QMCMD^nice one")), "say %s", ":-) / nice one", CTX(_("QMCMD^:-) / nice one")))
QUICKMENU_ENTRY_TC(CTX(_("QMCMD^good game")), "say %s", "good game", CTX(_("QMCMD^good game")))
QUICKMENU_ENTRY_TC(CTX(_("QMCMD^hi / good luck")), "say %s", "hi / good luck and have fun", CTX(_("QMCMD^hi / good luck and have fun")))
QUICKMENU_ENTRY_TC(CTX(_("QMCMD^killed flag, icon")), "say_team %s; g_waypointsprite_team_here_p", "killed flagcarrier (l:%y^7)", CTX(_("QMCMD^killed flagcarrier (l:%y^7)")))
QUICKMENU_ENTRY_TC(CTX(_("QMCMD^dropped flag, icon")), "say_team %s; g_waypointsprite_team_here_d", "dropped flag (l:%d^7)", CTX(_("QMCMD^dropped flag (l:%d^7)")))
QUICKMENU_ENTRY_TC(CTX(_("QMCMD^drop gun, icon")), "say_team %s; g_waypointsprite_team_here; wait; dropweapon", "dropped gun %w^7 (l:%l^7)", CTX(_("QMCMD^dropped gun %w^7 (l:%l^7)")))
- QUICKMENU_ENTRY_TC(CTX(_("QMCMD^drop flag/key, icon")), "say_team %s; g_waypointsprite_team_here; wait; +use", "dropped flag/key %w^7 (l:%l^7)", CTX(_("QMCMD^dropped flag/key %w^7 (l:%l^7)")))
+ QUICKMENU_ENTRY_TC(CTX(_("QMCMD^drop flag/key, icon")), "say_team %s; g_waypointsprite_team_here; wait; use", "dropped flag/key %w^7 (l:%l^7)", CTX(_("QMCMD^dropped flag/key %w^7 (l:%l^7)")))
QUICKMENU_SMENU(CTX(_("QMCMD^Team chat")), "Team chat")
}
QUICKMENU_SMENU(CTX(_("QMCMD^Sound settings")), "Sound settings")
QUICKMENU_ENTRY(CTX(_("QMCMD^Hit sound")), "toggle cl_hitsound")
- QUICKMENU_ENTRY(CTX(_("QMCMD^Chat sound")), "toggle cl_chatsound")
+ QUICKMENU_ENTRY(CTX(_("QMCMD^Chat sound")), "toggle con_chatsound")
QUICKMENU_SMENU(CTX(_("QMCMD^Sound settings")), "Sound settings")
if(spectatee_status > 0)
}
QUICKMENU_ENTRY(CTX(_("QMCMD^Fullscreen")), "toggle vid_fullscreen; vid_restart")
+ if(prvm_language != "en")
+ QUICKMENU_ENTRY(CTX(_("QMCMD^Translate chat messages")), "toggle hud_panel_quickmenu_translatecommands")
QUICKMENU_SMENU(CTX(_("QMCMD^Settings")), "Settings")
QUICKMENU_SMENU(CTX(_("QMCMD^Call a vote")), "Call a vote")