mirror of
https://github.com/nzp-team/fteqw.git
synced 2024-11-24 21:02:26 +00:00
Attempt to do a better job at internationaliation.
This commit is contained in:
parent
4977eca99e
commit
e292e1bbfb
23 changed files with 319 additions and 243 deletions
|
@ -959,6 +959,15 @@ ELSE()
|
|||
TARGET_INCLUDE_DIRECTORIES(fteqw PUBLIC ${FTE_INCLUDES})
|
||||
TARGET_LINK_LIBRARIES(fteqw ${FTE_LIBS})
|
||||
SET(INSTALLTARGS ${INSTALLTARGS} fteqw)
|
||||
|
||||
ADD_CUSTOM_TARGET(fteqw-i18n ALL
|
||||
VERBATIM
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
COMMAND xgettext --output=${CMAKE_CURRENT_BINARY_DIR}/fteqw.pot -k -kCon_TPrintf -kCon_SafeTPrintf -kNetchan_OutOfBandTPrintf:4 -kSV_OutOfBandTPrintf:4 -klangtext -kSV_TPrintToClient:3 -kSV_ClientTPrintf:3 -kSV_BroadcastTPrintf:2 -kCVARAFCD:6 -kCVARAFD:5 -kCVARFCD:5 -kCVARAD:4 -kCVARFD:4 -kCVARCD:4 -kCVARD:3 -kCmd_AddCommandD:3 -kCmd_AddCommandAD:4 -kMenu_Prompt:4:5:6 -kHost_EndGame ${FTE_ARCH_FILES} ${FTE_COMMON_FILES} ${FTE_CLIENT_FILES} ${FTE_SERVER_FILES}
|
||||
BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/fteqw.pot"
|
||||
SOURCES
|
||||
${FTE_ARCH_FILES} ${FTE_COMMON_FILES} ${FTE_CLIENT_FILES} ${FTE_SERVER_FILES}
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
SET(FTE_ENGINE_SERVER_ONLY true CACHE BOOL "Compile fteqw-sv (server only) engine binary.")
|
||||
|
|
|
@ -5512,7 +5512,7 @@ NORETURN void VARGS Host_EndGame (const char *message, ...)
|
|||
char string[1024];
|
||||
|
||||
va_start (argptr,message);
|
||||
vsnprintf (string,sizeof(string)-1, message,argptr);
|
||||
vsnprintf (string,sizeof(string)-1, localtext(message),argptr);
|
||||
va_end (argptr);
|
||||
|
||||
COM_AssertMainThread(string);
|
||||
|
@ -5552,7 +5552,7 @@ void VARGS Host_Error (const char *error, ...)
|
|||
inerror = true;
|
||||
|
||||
va_start (argptr,error);
|
||||
vsnprintf (string,sizeof(string)-1, error,argptr);
|
||||
vsnprintf (string,sizeof(string)-1, localtext(error),argptr);
|
||||
va_end (argptr);
|
||||
COM_AssertMainThread(string);
|
||||
Con_TPrintf ("Host_Error: %s\n", string);
|
||||
|
@ -6094,7 +6094,7 @@ done:
|
|||
else if (f->flags & HRF_MODEL)
|
||||
{
|
||||
if (!FS_FixupGamedirForExternalFile(f->fname, loadcommand, sizeof(loadcommand)))
|
||||
Con_Printf("%s is not within the current gamedir\n", f->fname);
|
||||
Con_TPrintf("%s is not within the current gamedir\n", f->fname);
|
||||
else
|
||||
Cbuf_AddText(va("modelviewer \"%s\"\n", loadcommand), RESTRICT_LOCAL);
|
||||
goto done;
|
||||
|
@ -6121,7 +6121,7 @@ done:
|
|||
if (!(f->flags & HRF_ACTION))
|
||||
{
|
||||
Key_Dest_Remove(kdm_console);
|
||||
Menu_Prompt(Host_RunFilePrompted, f, va("Exec %s?\n", COM_SkipPath(f->fname)), "Yes", NULL, "Cancel", true);
|
||||
Menu_Prompt(Host_RunFilePrompted, f, va(localtext("Exec %s?\n"), COM_SkipPath(f->fname)), "Yes", NULL, "Cancel", true);
|
||||
return;
|
||||
}
|
||||
if (f->flags & HRF_OPENED)
|
||||
|
@ -6169,7 +6169,7 @@ done:
|
|||
|
||||
if (!f->srcfile)
|
||||
{
|
||||
Con_Printf("Unable to open %s\n", f->fname);
|
||||
Con_TPrintf("Unable to open %s\n", f->fname);
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
@ -6232,17 +6232,17 @@ done:
|
|||
Key_Dest_Remove(kdm_console);
|
||||
if (haschanged)
|
||||
{
|
||||
Menu_Prompt(Host_RunFilePrompted, f, va("File already exists.\nWhat would you like to do?\n%s\n", displayname), "Overwrite", "Run old", "Cancel", true);
|
||||
Menu_Prompt(Host_RunFilePrompted, f, va(localtext("File already exists.\nWhat would you like to do?\n%s\n"), displayname), "Overwrite", "Run old", "Cancel", true);
|
||||
return;
|
||||
}
|
||||
else if (isnew)
|
||||
{
|
||||
Menu_Prompt(Host_RunFilePrompted, f, va("File appears new.\nWould you like to install\n%s\n", displayname), "Install!", "", "Cancel", true);
|
||||
Menu_Prompt(Host_RunFilePrompted, f, va(localtext("File appears new.\nWould you like to install\n%s\n"), displayname), "Install!", "", "Cancel", true);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
Menu_Prompt(NULL, NULL, va("File is already installed\n%s\n", displayname), NULL, NULL, "Cancel", true);
|
||||
Menu_Prompt(NULL, NULL, va(localtext("File is already installed\n%s\n"), displayname), NULL, NULL, "Cancel", true);
|
||||
f->flags |= HRF_ABORT;
|
||||
}
|
||||
}
|
||||
|
@ -6411,7 +6411,7 @@ qboolean Host_RunFile(const char *fname, int nlen, vfsfile_t *file)
|
|||
if (file)
|
||||
f->flags |= HRF_OPENED;
|
||||
|
||||
Con_Printf("Opening external file: %s\n", f->fname);
|
||||
Con_TPrintf("Opening external file: %s\n", f->fname);
|
||||
|
||||
Host_DoRunFile(f);
|
||||
return true;
|
||||
|
@ -7207,7 +7207,7 @@ void Host_FinishLoading(void)
|
|||
char *scheme = Sys_URIScheme_NeedsRegistering();
|
||||
if (scheme)
|
||||
{
|
||||
Menu_Prompt(Host_URIPrompt, NULL, va("The URI scheme %s:// is not configured.\nRegister now?", scheme), "Register", NULL, "No", true);
|
||||
Menu_Prompt(Host_URIPrompt, NULL, va(localtext("The URI scheme %s:// is not configured.\nRegister now?"), scheme), "Register", NULL, "No", true);
|
||||
Z_Free(scheme);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3772,11 +3772,12 @@ void CL_ParseEstablished(void)
|
|||
default: break;
|
||||
}
|
||||
if (NET_IsEncrypted(&cls.netchan.remote_address))
|
||||
security = "^["S_COLOR_GREEN"encrypted\\tip\\Any passwords will be sent securely, but will still be readable by the server admin^]";
|
||||
security = localtext("^["S_COLOR_GREEN"encrypted\\tip\\Any passwords will be sent securely, but will still be readable by the server admin^]");
|
||||
else
|
||||
security = "^["S_COLOR_RED"plain-text\\tip\\"CON_WARNING"Do not type passwords as they can potentially be seen by network sniffers^]";
|
||||
security = localtext("^["S_COLOR_RED"plain-text\\tip\\"CON_WARNING"Do not type passwords as they can potentially be seen by network sniffers^]");
|
||||
|
||||
Con_TPrintf ("\rConnected to ^["S_COLOR_BLUE"%s\\type\\connect %s^] (%s).\n", cls.servername, cls.servername, security);
|
||||
Con_Printf ("\r");
|
||||
Con_TPrintf ("Connected to ^["S_COLOR_BLUE"%s\\type\\connect %s^] (%s).\n", cls.servername, cls.servername, security);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1179,7 +1179,7 @@ void VARGS Con_TPrintf (translation_t text, ...)
|
|||
{
|
||||
va_list argptr;
|
||||
char msg[MAXPRINTMSG];
|
||||
const char *fmt = langtext(text, com_language);
|
||||
const char *fmt = localtext(text);
|
||||
|
||||
va_start (argptr,text);
|
||||
vsnprintf (msg,sizeof(msg), fmt,argptr);
|
||||
|
@ -1193,7 +1193,7 @@ void VARGS Con_SafeTPrintf (translation_t text, ...)
|
|||
{
|
||||
va_list argptr;
|
||||
char msg[MAXPRINTMSG];
|
||||
const char *fmt = langtext(text, com_language);
|
||||
const char *fmt = localtext(text);
|
||||
|
||||
va_start (argptr,text);
|
||||
vsnprintf (msg,sizeof(msg), fmt,argptr);
|
||||
|
|
|
@ -13390,7 +13390,7 @@ struct pendingtextureinfo *Image_LoadMipsFromMemory(int flags, const char *iname
|
|||
}
|
||||
#endif
|
||||
else
|
||||
Con_Printf("Unable to read file %s (format unsupported)\n", fname);
|
||||
Con_TPrintf("Unable to load file %s (format unsupported)\n", fname);
|
||||
|
||||
BZ_Free(filedata);
|
||||
return NULL;
|
||||
|
|
|
@ -2898,7 +2898,7 @@ static void PM_UpdatePackageList(qboolean autoupdate)
|
|||
else if (allowphonehome == -1)
|
||||
{
|
||||
if (doautoupdate)
|
||||
Menu_Prompt(PM_AllowPackageListQuery_Callback, NULL, "Query updates list?\n", "Okay", NULL, "Nope", true);
|
||||
Menu_Prompt(PM_AllowPackageListQuery_Callback, NULL, localtext("Query updates list?\n"), "Okay", NULL, "Nope", true);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -3391,16 +3391,16 @@ static void PM_PackageEnabled(package_t *p)
|
|||
}
|
||||
|
||||
#ifndef HAVE_CLIENT
|
||||
#define Menu_Prompt(cb,ctx,msg,yes,no,cancel,highpri) Con_Printf(CON_WARNING msg "\n")
|
||||
#define Menu_Prompt(cb,ctx,msg,yes,no,cancel,highpri) Con_Printf(CON_WARNING "%s\n", msg)
|
||||
#endif
|
||||
|
||||
if (FS_NativePath(ef->name, p->fsroot, native, sizeof(native)) && Sys_SetUpdatedBinary(native))
|
||||
{
|
||||
Q_strncpyz(enginerevision, p->version, sizeof(enginerevision)); //make sure 'revert' picks up the new binary...
|
||||
Menu_Prompt(NULL, NULL, "Engine binary updated.\nRestart to use.", NULL, NULL, NULL, true);
|
||||
Menu_Prompt(NULL, NULL, localtext("Engine binary updated.\nRestart to use."), NULL, NULL, NULL, true);
|
||||
}
|
||||
else
|
||||
Menu_Prompt(NULL, NULL, "Engine update failed.\nManual update required.", NULL, NULL, NULL, true);
|
||||
Menu_Prompt(NULL, NULL, localtext("Engine update failed.\nManual update required."), NULL, NULL, NULL, true);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -4548,18 +4548,18 @@ static void PM_PromptApplyChanges(void)
|
|||
//lock it down, so noone can make any changes while this prompt is still displayed
|
||||
if (pkg_updating)
|
||||
{
|
||||
Menu_Prompt(PM_PromptApplyChanges_Callback, NULL, "An update is already in progress\nPlease wait\n", NULL, NULL, "Cancel", true);
|
||||
Menu_Prompt(PM_PromptApplyChanges_Callback, NULL, localtext("An update is already in progress\nPlease wait\n"), NULL, NULL, "Cancel", true);
|
||||
return;
|
||||
}
|
||||
pkg_updating = true;
|
||||
#endif
|
||||
|
||||
strcpy(text, "Really decline the following\nrecommended packages?\n\n");
|
||||
strcpy(text, localtext("Really decline the following\nrecommended packages?\n\n"));
|
||||
if (PM_DeclinedPackages(text+strlen(text), sizeof(text)-strlen(text)))
|
||||
Menu_Prompt(PM_PromptApplyDecline_Callback, NULL, text, NULL, "Confirm", "Cancel", true);
|
||||
else
|
||||
{
|
||||
strcpy(text, "Apply the following changes?\n\n");
|
||||
strcpy(text, localtext("Apply the following changes?\n\n"));
|
||||
changes = PM_ChangeList(text+strlen(text), sizeof(text)-strlen(text));
|
||||
if (!changes)
|
||||
{
|
||||
|
@ -4651,7 +4651,7 @@ void PM_Command_f(void)
|
|||
else
|
||||
{
|
||||
#ifdef HAVE_CLIENT
|
||||
Menu_Prompt(PM_AddSubList_Callback, Z_StrDup(Cmd_Argv(2)), va("Add updates source?\n%s", Cmd_Argv(2)), "Confirm", NULL, "Cancel", true);
|
||||
Menu_Prompt(PM_AddSubList_Callback, Z_StrDup(Cmd_Argv(2)), va(localtext("Add updates source?\n%s"), Cmd_Argv(2)), "Confirm", NULL, "Cancel", true);
|
||||
#else
|
||||
PM_AddSubList(Cmd_Argv(2), "", SRCFL_USER|SRCFL_ENABLED);
|
||||
PM_WriteInstalledPackages();
|
||||
|
@ -5429,7 +5429,7 @@ static void MD_Draw (int x, int y, struct menucustom_s *c, struct emenu_s *m)
|
|||
{
|
||||
allowphonehome = false;
|
||||
#ifdef HAVE_CLIENT
|
||||
Menu_Prompt(PM_AllowPackageListQuery_Callback, NULL, "Query updates list?\n", "Okay", NULL, "Nope", true);
|
||||
Menu_Prompt(PM_AllowPackageListQuery_Callback, NULL, localtext("Query updates list?\n"), "Okay", NULL, "Nope", true);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
@ -6506,7 +6506,7 @@ qboolean PM_AreSourcesNew(qboolean doprompt)
|
|||
ret = true; //something is dirty.
|
||||
if (doprompt)
|
||||
{
|
||||
const char *msg = va("Enable update source\n\n^x66F%s", (pm_source[i].flags&SRCFL_MANIFEST)?PrettyHostFromURL(pm_source[i].url):pm_source[i].url);
|
||||
const char *msg = va(localtext("Enable update source\n\n^x66F%s"), (pm_source[i].flags&SRCFL_MANIFEST)?PrettyHostFromURL(pm_source[i].url):pm_source[i].url);
|
||||
pm_pendingprompts++;
|
||||
Menu_Prompt(PM_ConfirmSource, Z_StrDup(pm_source[i].url), msg, "Enable", "Configure", "Later", true);
|
||||
pm_source[i].flags |= SRCFL_PROMPTED;
|
||||
|
|
|
@ -357,10 +357,10 @@ void Draw_BigFontString(int x, int y, const char *text)
|
|||
R2D_ImageColours(1,1,1,1);
|
||||
}
|
||||
|
||||
char *menudotstyle;
|
||||
int maxdots;
|
||||
int mindot;
|
||||
int dotofs;
|
||||
static char *menudotstyle;
|
||||
static int maxdots;
|
||||
static int mindot;
|
||||
static int dotofs;
|
||||
|
||||
static void MenuTooltipChange(emenu_t *menu, const char *text)
|
||||
{
|
||||
|
@ -795,9 +795,9 @@ static void MenuDrawItems(int xpos, int ypos, menuoption_t *option, emenu_t *men
|
|||
Draw_Character (x, y, 0xe081);
|
||||
#endif
|
||||
if (!menu->cursoritem && menu->selecteditem == option)
|
||||
Draw_AltFunString (x, y, on ? "on" : "off");
|
||||
Draw_AltFunString (x, y, on ? localtext("on") : localtext("off"));
|
||||
else
|
||||
Draw_FunString (x, y, on ? "on" : "off");
|
||||
Draw_FunString (x, y, on ? localtext("on") : localtext("off"));
|
||||
}
|
||||
break;
|
||||
case mt_edit:
|
||||
|
@ -1005,7 +1005,7 @@ menutext_t *MC_AddRedText(emenu_t *menu, int lhs, int rhs, int y, const char *te
|
|||
return n;
|
||||
}
|
||||
|
||||
menubind_t *MC_AddBind(emenu_t *menu, int cx, int bx, int y, const char *caption, char *command, char *tooltip)
|
||||
menubind_t *MC_AddBind(emenu_t *menu, int cx, int bx, int y, const char *caption, char *command, const char *tooltip)
|
||||
{
|
||||
menubind_t *n = Z_Malloc(sizeof(*n) + strlen(caption)+1 + strlen(command)+1 + (tooltip?strlen(tooltip)+1:0));
|
||||
n->common.type = mt_bind;
|
||||
|
@ -1031,7 +1031,7 @@ menubind_t *MC_AddBind(emenu_t *menu, int cx, int bx, int y, const char *caption
|
|||
return n;
|
||||
}
|
||||
|
||||
menupicture_t *MC_AddSelectablePicture(emenu_t *menu, int x, int y, int height, char *picname)
|
||||
menupicture_t *MC_AddSelectablePicture(emenu_t *menu, int x, int y, int height, const char *picname)
|
||||
{
|
||||
char selname[MAX_QPATH];
|
||||
menupicture_t *n;
|
||||
|
@ -1060,7 +1060,7 @@ menupicture_t *MC_AddSelectablePicture(emenu_t *menu, int x, int y, int height,
|
|||
return n;
|
||||
}
|
||||
|
||||
menupicture_t *MC_AddPicture(emenu_t *menu, int x, int y, int width, int height, char *picname)
|
||||
menupicture_t *MC_AddPicture(emenu_t *menu, int x, int y, int width, int height, const char *picname)
|
||||
{
|
||||
menupicture_t *n;
|
||||
if (qrenderer == QR_NONE)
|
||||
|
@ -1083,7 +1083,7 @@ menupicture_t *MC_AddPicture(emenu_t *menu, int x, int y, int width, int height,
|
|||
return n;
|
||||
}
|
||||
|
||||
menupicture_t *MC_AddCenterPicture(emenu_t *menu, int y, int height, char *picname)
|
||||
menupicture_t *MC_AddCenterPicture(emenu_t *menu, int y, int height, const char *picname)
|
||||
{
|
||||
int x;
|
||||
int width;
|
||||
|
@ -1219,7 +1219,7 @@ menupicture_t *MC_AddCursor(emenu_t *menu, menuresel_t *reselection, int x, int
|
|||
return n;
|
||||
}
|
||||
|
||||
menuedit_t *MC_AddEdit(emenu_t *menu, int cx, int ex, int y, char *text, char *def)
|
||||
menuedit_t *MC_AddEdit(emenu_t *menu, int cx, int ex, int y, const char *text, const char *def)
|
||||
{
|
||||
menuedit_t *n = Z_Malloc(sizeof(menuedit_t)+strlen(text)+1);
|
||||
n->slim = false;
|
||||
|
@ -1240,7 +1240,7 @@ menuedit_t *MC_AddEdit(emenu_t *menu, int cx, int ex, int y, char *text, char *d
|
|||
return n;
|
||||
}
|
||||
|
||||
menuedit_t *MC_AddEditCvar(emenu_t *menu, int cx, int ex, int y, char *text, char *name, qboolean isslim)
|
||||
menuedit_t *MC_AddEditCvar(emenu_t *menu, int cx, int ex, int y, const char *text, const char *name, qboolean isslim)
|
||||
{
|
||||
menuedit_t *n = Z_Malloc(sizeof(menuedit_t)+strlen(text)+1);
|
||||
cvar_t *cvar;
|
||||
|
@ -1424,6 +1424,7 @@ menucombo_t *MC_AddCombo(emenu_t *menu, int tx, int cx, int y, const char *capti
|
|||
menucombo_t *n;
|
||||
char **newops;
|
||||
char *optbuf;
|
||||
const char *o;
|
||||
int i;
|
||||
|
||||
maxoptlen = 0;
|
||||
|
@ -1432,7 +1433,9 @@ menucombo_t *MC_AddCombo(emenu_t *menu, int tx, int cx, int y, const char *capti
|
|||
optlen = 0;
|
||||
if (ops) while(ops[numopts])
|
||||
{
|
||||
optlen = strlen(ops[numopts]);
|
||||
o = localtext(ops[numopts]);
|
||||
|
||||
optlen = strlen(o);
|
||||
if (maxoptlen < optlen)
|
||||
maxoptlen = optlen;
|
||||
optbufsize += optlen+1+sizeof(char*);
|
||||
|
@ -1459,7 +1462,9 @@ menucombo_t *MC_AddCombo(emenu_t *menu, int tx, int cx, int y, const char *capti
|
|||
n->numoptions = numopts;
|
||||
for (i = 0; i < numopts; i++)
|
||||
{
|
||||
strcpy(optbuf, ops[i]);
|
||||
o = localtext(ops[i]);
|
||||
|
||||
strcpy(optbuf, o);
|
||||
newops[i] = optbuf;
|
||||
optbuf += strlen(optbuf)+1;
|
||||
}
|
||||
|
@ -1484,7 +1489,7 @@ menucombo_t *MC_AddCvarCombo(emenu_t *menu, int tx, int cx, int y, const char *c
|
|||
char **newops;
|
||||
char **newvalues;
|
||||
char *optbuf;
|
||||
const char *v;
|
||||
const char *v, *o;
|
||||
int i;
|
||||
|
||||
maxoptlen = 0;
|
||||
|
@ -1493,8 +1498,9 @@ menucombo_t *MC_AddCvarCombo(emenu_t *menu, int tx, int cx, int y, const char *c
|
|||
for (i = 0; ops[i]; i++)
|
||||
{
|
||||
v = values?values[i]:va("%i", i);
|
||||
o = localtext(ops[i]);
|
||||
|
||||
optlen = strlen(ops[i]);
|
||||
optlen = strlen(o);
|
||||
if (maxoptlen < optlen)
|
||||
maxoptlen = optlen;
|
||||
optbufsize += optlen+1+sizeof(char*);
|
||||
|
@ -1514,7 +1520,7 @@ menucombo_t *MC_AddCvarCombo(emenu_t *menu, int tx, int cx, int y, const char *c
|
|||
n->common.posy = y;
|
||||
n->common.height = 8;
|
||||
n->common.width = cx-tx + maxoptlen*8;
|
||||
n->common.tooltip = cvar->description;
|
||||
n->common.tooltip = localtext(cvar->description);
|
||||
n->captionwidth = cx-tx;
|
||||
|
||||
strcpy(optbuf, caption);
|
||||
|
@ -1537,11 +1543,12 @@ menucombo_t *MC_AddCvarCombo(emenu_t *menu, int tx, int cx, int y, const char *c
|
|||
for (i = 0; i < numopts; i++)
|
||||
{
|
||||
v = values?values[i]:va("%i", i);
|
||||
o = localtext(ops[i]);
|
||||
|
||||
if (!strcmp(v, cvar->string))
|
||||
n->selectedoption = i;
|
||||
|
||||
strcpy(optbuf, ops[i]);
|
||||
strcpy(optbuf, o);
|
||||
newops[i] = optbuf;
|
||||
optbuf += strlen(optbuf)+1;
|
||||
|
||||
|
@ -1613,15 +1620,15 @@ menubutton_t *MC_AddConsoleCommandHexen2BigFont(emenu_t *menu, int x, int y, con
|
|||
return n;
|
||||
}
|
||||
#endif
|
||||
menubutton_t *MC_AddCommand(emenu_t *menu, int lhs, int rhs, int y, char *text, qboolean (*command) (union menuoption_s *,struct emenu_s *,int))
|
||||
menubutton_t *MC_AddCommand(emenu_t *menu, int lhs, int rhs, int y, const char *text, qboolean (*command) (union menuoption_s *,struct emenu_s *,int))
|
||||
{
|
||||
menubutton_t *n = Z_Malloc(sizeof(menubutton_t));
|
||||
menubutton_t *n = Z_Malloc(sizeof(menubutton_t)+strlen(text)+1);
|
||||
n->common.type = mt_button;
|
||||
n->common.iszone = true;
|
||||
n->common.posx = lhs;
|
||||
n->common.posy = y;
|
||||
n->rightalign = true;
|
||||
n->text = text;
|
||||
n->text = strcpy((char*)(n+1), text);
|
||||
n->command = NULL;
|
||||
n->key = command;
|
||||
n->common.height = 8;
|
||||
|
@ -1734,6 +1741,8 @@ void MC_Slider_Key(menuslider_t *option, int key)
|
|||
|
||||
void MC_CheckBox_Key(menucheck_t *option, emenu_t *menu, int key)
|
||||
{
|
||||
if (key == K_DEL && option->var && !option->func)
|
||||
Cvar_Set(option->var, option->var->defaultstr);
|
||||
if (key != K_ENTER && key != K_KP_ENTER && key != K_GP_START && key != K_GP_DIAMOND_CONFIRM && key != K_GP_DIAMOND_ALTCONFIRM && key != K_LEFTARROW && key != K_KP_LEFTARROW && key != K_GP_DPAD_LEFT && key != K_GP_LEFT_THUMB_LEFT && key != K_RIGHTARROW && key != K_KP_LEFTARROW && key != K_GP_DPAD_RIGHT && key != K_GP_LEFT_THUMB_RIGHT && key != K_MWHEELUP && key != K_MWHEELDOWN && key != K_MOUSE1 && key != K_TOUCHTAP)
|
||||
return;
|
||||
if (option->func)
|
||||
|
@ -1800,7 +1809,9 @@ void MC_EditBox_Key(menuedit_t *edit, int key, unsigned int unicode)
|
|||
|
||||
void MC_Combo_Key(menucombo_t *combo, int key)
|
||||
{
|
||||
if (key == K_ENTER || key == K_KP_ENTER || key == K_GP_START || key == K_RIGHTARROW || key == K_KP_RIGHTARROW || key == K_GP_DPAD_RIGHT || key == K_GP_LEFT_THUMB_RIGHT ||key == K_GP_DIAMOND_ALTCONFIRM || key == K_MWHEELDOWN || key == K_MOUSE1 || key == K_TOUCHTAP)
|
||||
if (key == K_DEL && combo->cvar)
|
||||
Cvar_Set(combo->cvar, combo->cvar->defaultstr);
|
||||
else if (key == K_ENTER || key == K_KP_ENTER || key == K_GP_START || key == K_RIGHTARROW || key == K_KP_RIGHTARROW || key == K_GP_DPAD_RIGHT || key == K_GP_LEFT_THUMB_RIGHT ||key == K_GP_DIAMOND_ALTCONFIRM || key == K_MWHEELDOWN || key == K_MOUSE1 || key == K_TOUCHTAP)
|
||||
{
|
||||
combo->selectedoption++;
|
||||
if (combo->selectedoption >= combo->numoptions)
|
||||
|
@ -2349,24 +2360,24 @@ static int M_Main_AddExtraOptions(emenu_t *mainm, int y)
|
|||
if (Cmd_AliasExist("mod_menu", RESTRICT_LOCAL))
|
||||
{MC_AddConsoleCommandQBigFont(mainm, 72, y, va("%-14s", Cvar_Get("mod_menu", "Mod Menu", 0, NULL)->string), "mod_menu\n"); y += 20;}
|
||||
if (Cmd_Exists("xmpp"))
|
||||
{MC_AddConsoleCommandQBigFont(mainm, 72, y, "Social ", "xmpp\n"); y += 20;}
|
||||
{MC_AddConsoleCommandQBigFont(mainm, 72, y, localtext("Social "), "xmpp\n"); y += 20;}
|
||||
if (Cmd_Exists("irc"))
|
||||
{MC_AddConsoleCommandQBigFont(mainm, 72, y, "IRC ", "irc\n"); y += 20;}
|
||||
{MC_AddConsoleCommandQBigFont(mainm, 72, y, localtext("IRC "), "irc\n"); y += 20;}
|
||||
if (Cmd_Exists("qi"))
|
||||
{MC_AddConsoleCommandQBigFont(mainm, 72, y, "Quake Injector", "qi\n"); y += 20;}
|
||||
{MC_AddConsoleCommandQBigFont(mainm, 72, y, localtext("Quake Injector"), "qi\n"); y += 20;}
|
||||
else if (PM_CanInstall("qi"))
|
||||
{MC_AddConsoleCommandQBigFont(mainm, 72, y, "Get Quake Injector", "pkg reset; pkg add qi; pkg apply\n"); y += 20;}
|
||||
{MC_AddConsoleCommandQBigFont(mainm, 72, y, localtext("Get Quake Injector"), "pkg reset; pkg add qi; pkg apply\n"); y += 20;}
|
||||
if (Cmd_Exists("menu_download"))
|
||||
{
|
||||
#ifdef WEBCLIENT
|
||||
MC_AddConsoleCommandQBigFont(mainm, 72, y, "^bUpdates ", "menu_download\n"); y += 20;
|
||||
MC_AddConsoleCommandQBigFont(mainm, 72, y, localtext("^bUpdates "), "menu_download\n"); y += 20;
|
||||
#else
|
||||
MC_AddConsoleCommandQBigFont(mainm, 72, y, "^bPackages ", "menu_download\n"); y += 20;
|
||||
MC_AddConsoleCommandQBigFont(mainm, 72, y, localtext("^bPackages "), "menu_download\n"); y += 20;
|
||||
#endif
|
||||
}
|
||||
if (Cmd_Exists("menu_mods"))
|
||||
{
|
||||
MC_AddConsoleCommandQBigFont(mainm, 72, y, "Mods ", "menu_mods\n"); y += 20;
|
||||
MC_AddConsoleCommandQBigFont(mainm, 72, y, localtext("Mods "), "menu_mods\n"); y += 20;
|
||||
y += 20;
|
||||
}
|
||||
|
||||
|
@ -2386,7 +2397,9 @@ void MC_Main_Predraw(emenu_t *menu)
|
|||
PM_AreSourcesNew(false)||
|
||||
#endif
|
||||
!m_preset_chosen.ival;
|
||||
b->text = (char*)(b+1) + (flash?0:2);
|
||||
b->text = (char*)(b+1);
|
||||
if (b->text[0] == '^' && b->text[1] == 'b' && !flash)
|
||||
b->text += 2;
|
||||
}
|
||||
|
||||
#ifdef PACKAGEMANAGER
|
||||
|
@ -2394,7 +2407,9 @@ void MC_Main_Predraw(emenu_t *menu)
|
|||
if (b && b->text[0] && b->text[1])
|
||||
{
|
||||
qboolean flash = PM_AreSourcesNew(false);
|
||||
b->text = (char*)(b+1) + (flash?0:2);
|
||||
b->text = (char*)(b+1);
|
||||
if (b->text[0] == '^' && b->text[1] == 'b' && !flash)
|
||||
b->text += 2;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -2485,27 +2500,27 @@ void M_Menu_Main_f (void)
|
|||
|
||||
#if defined(HAVE_SERVER) && defined(Q2SERVER)
|
||||
b = MC_AddConsoleCommand (mainm, 68, 320, 13, "", "menu_single\n");
|
||||
b->common.tooltip = "Singleplayer.";
|
||||
b->common.tooltip = localtext("Singleplayer.");
|
||||
mainm->selecteditem = (menuoption_t *)b;
|
||||
b->common.width = 12*20;
|
||||
b->common.height = itemheight;
|
||||
#endif
|
||||
b = MC_AddConsoleCommand (mainm, 68, 320, 53, "", "menu_multi\n");
|
||||
b->common.tooltip = "Multiplayer.";
|
||||
b->common.tooltip = localtext("Multiplayer.");
|
||||
if (!mainm->selecteditem)
|
||||
mainm->selecteditem = (menuoption_t *)b;
|
||||
b->common.width = 12*20;
|
||||
b->common.height = itemheight;
|
||||
b = MC_AddConsoleCommand (mainm, 68, 320, 93, "", "menu_options\n");
|
||||
b->common.tooltip = "Options.";
|
||||
b->common.tooltip = localtext("Options.");
|
||||
b->common.width = 12*20;
|
||||
b->common.height = itemheight;
|
||||
b = MC_AddConsoleCommand (mainm, 68, 320, 133, "", "menu_video\n");
|
||||
b->common.tooltip = "Video Options.";
|
||||
b->common.tooltip = localtext("Video Options.");
|
||||
b->common.width = 12*20;
|
||||
b->common.height = itemheight;
|
||||
b = MC_AddConsoleCommand (mainm, 68, 320, 173, "", "menu_quit\n");
|
||||
b->common.tooltip = "Quit to DOS.";
|
||||
b->common.tooltip = localtext("Quit to DOS.");
|
||||
b->common.width = 12*20;
|
||||
b->common.height = itemheight;
|
||||
|
||||
|
@ -2528,37 +2543,37 @@ void M_Menu_Main_f (void)
|
|||
MC_AddCenterPicture(mainm, 0, 60, "gfx/menu/title0.lmp");
|
||||
|
||||
#ifndef CLIENTONLY
|
||||
b=MC_AddConsoleCommandHexen2BigFont (mainm, 80, y, "Single Player", "menu_single\n");
|
||||
b=MC_AddConsoleCommandHexen2BigFont (mainm, 80, y, localtext("Single Player"), "menu_single\n");
|
||||
mainm->selecteditem = (menuoption_t *)b;
|
||||
b->common.width = 12*20;
|
||||
b->common.height = 20;
|
||||
y += 20;
|
||||
#endif
|
||||
b=MC_AddConsoleCommandHexen2BigFont (mainm, 80, y, "MultiPlayer", "menu_multi\n");
|
||||
b=MC_AddConsoleCommandHexen2BigFont (mainm, 80, y, localtext("MultiPlayer"), "menu_multi\n");
|
||||
#ifdef CLIENTONLY
|
||||
mainm->selecteditem = (menuoption_t *)b;
|
||||
#endif
|
||||
b->common.width = 12*20;
|
||||
b->common.height = 20;
|
||||
y += 20;
|
||||
b=MC_AddConsoleCommandHexen2BigFont (mainm, 80, y, "^bOptions", "menu_options\n");
|
||||
b=MC_AddConsoleCommandHexen2BigFont (mainm, 80, y, localtext("^bOptions"), "menu_options\n");
|
||||
b->common.width = 12*20;
|
||||
b->common.height = 20;
|
||||
y += 20;
|
||||
if (m_helpismedia.value)
|
||||
b=MC_AddConsoleCommandHexen2BigFont (mainm, 80, y, "Media", "menu_media\n");
|
||||
b=MC_AddConsoleCommandHexen2BigFont (mainm, 80, y, localtext("Media"), "menu_media\n");
|
||||
else
|
||||
b=MC_AddConsoleCommandHexen2BigFont (mainm, 80, y, "Help", "help\n");
|
||||
b=MC_AddConsoleCommandHexen2BigFont (mainm, 80, y, localtext("Help"), "help\n");
|
||||
b->common.width = 12*20;
|
||||
b->common.height = 20;
|
||||
y += 20;
|
||||
|
||||
b=MC_AddConsoleCommandHexen2BigFont (mainm, 80, y, "Mods", "menu_mods\n");
|
||||
b=MC_AddConsoleCommandHexen2BigFont (mainm, 80, y, localtext("Mods"), "menu_mods\n");
|
||||
b->common.width = 12*20;
|
||||
b->common.height = 20;
|
||||
y += 20;
|
||||
|
||||
b=MC_AddConsoleCommandHexen2BigFont (mainm, 80, y, "Quit", "menu_quit\n");
|
||||
b=MC_AddConsoleCommandHexen2BigFont (mainm, 80, y, localtext("Quit"), "menu_quit\n");
|
||||
b->common.width = 12*20;
|
||||
b->common.height = 20;
|
||||
y += 20;
|
||||
|
@ -2582,19 +2597,19 @@ void M_Menu_Main_f (void)
|
|||
y = 32;
|
||||
mainm->selecteditem = (menuoption_t *)
|
||||
#ifndef CLIENTONLY
|
||||
MC_AddConsoleCommandQBigFont (mainm, 72, y, "Single ", "menu_single\n"); y += 20;
|
||||
MC_AddConsoleCommandQBigFont (mainm, 72, y, localtext("Single "), "menu_single\n"); y += 20;
|
||||
#endif
|
||||
MC_AddConsoleCommandQBigFont (mainm, 72, y, "Multiplayer ", "menu_multi\n"); y += 20;
|
||||
MC_AddConsoleCommandQBigFont (mainm, 72, y,"^bOptions ", "menu_options\n"); y += 20;
|
||||
MC_AddConsoleCommandQBigFont (mainm, 72, y, localtext("Multiplayer "), "menu_multi\n"); y += 20;
|
||||
MC_AddConsoleCommandQBigFont (mainm, 72, y,localtext("^bOptions "), "menu_options\n"); y += 20;
|
||||
if (m_helpismedia.value)
|
||||
{MC_AddConsoleCommandQBigFont(mainm, 72, y, "Media ", "menu_media\n"); y += 20;}
|
||||
{MC_AddConsoleCommandQBigFont(mainm, 72, y, localtext("Media "), "menu_media\n"); y += 20;}
|
||||
else
|
||||
{MC_AddConsoleCommandQBigFont(mainm, 72, y, "Help ", "help\n"); y += 20;}
|
||||
{MC_AddConsoleCommandQBigFont(mainm, 72, y, localtext("Help "), "help\n"); y += 20;}
|
||||
y = M_Main_AddExtraOptions(mainm, y);
|
||||
#ifdef FTE_TARGET_WEB
|
||||
MC_AddConsoleCommandQBigFont (mainm, 72, y, "Save Settings ", "menu_quit\n"); y += 20;
|
||||
MC_AddConsoleCommandQBigFont (mainm, 72, y, localtext("Save Settings "), "menu_quit\n"); y += 20;
|
||||
#else
|
||||
MC_AddConsoleCommandQBigFont (mainm, 72, y, "Quit ", "menu_quit\n"); y += 20;
|
||||
MC_AddConsoleCommandQBigFont (mainm, 72, y, localtext("Quit "), "menu_quit\n"); y += 20;
|
||||
#endif
|
||||
|
||||
mainm->cursoritem = (menuoption_t *)MC_AddCursor(mainm, &resel, 54, mainm->selecteditem->common.posy);
|
||||
|
@ -2616,35 +2631,35 @@ void M_Menu_Main_f (void)
|
|||
MC_AddPicture(mainm, 72, 32, 240, 112, "gfx/mainmenu.lmp");
|
||||
|
||||
b=MC_AddConsoleCommand (mainm, 72, 312, 32, "", "menu_single\n");
|
||||
b->common.tooltip = "Start singleplayer Quake game.";
|
||||
b->common.tooltip = localtext("Start singleplayer Quake game.");
|
||||
mainm->selecteditem = (menuoption_t *)b;
|
||||
b->common.width = width;
|
||||
b->common.height = 20;
|
||||
b=MC_AddConsoleCommand (mainm, 72, 312, 52, "", "menu_multi\n");
|
||||
b->common.tooltip = "Multiplayer menu.";
|
||||
b->common.tooltip = localtext("Multiplayer menu.");
|
||||
b->common.width = width;
|
||||
b->common.height = 20;
|
||||
b=MC_AddConsoleCommand (mainm, 72, 312, 72, "", "menu_options\n");
|
||||
b->common.tooltip = "Options menu.";
|
||||
b->common.tooltip = localtext("Options menu.");
|
||||
b->common.width = width;
|
||||
b->common.height = 20;
|
||||
if (m_helpismedia.value)
|
||||
{
|
||||
b=MC_AddConsoleCommand(mainm, 72, 312, 92, "", "menu_media\n");
|
||||
b->common.tooltip = "Media menu.";
|
||||
b->common.tooltip = localtext("Media menu.");
|
||||
}
|
||||
else
|
||||
{
|
||||
b=MC_AddConsoleCommand(mainm, 72, 312, 92, "", "help\n");
|
||||
b->common.tooltip = "Help menu.";
|
||||
b->common.tooltip = localtext("Help menu.");
|
||||
}
|
||||
b->common.width = width;
|
||||
b->common.height = 20;
|
||||
b=MC_AddConsoleCommand (mainm, 72, 312, 112, "", "menu_quit\n");
|
||||
#ifdef FTE_TARGET_WEB
|
||||
b->common.tooltip = "Save settings to local storage.";
|
||||
b->common.tooltip = localtext("Save settings to local storage.");
|
||||
#else
|
||||
b->common.tooltip = "Exit to DOS.";
|
||||
b->common.tooltip = localtext("Exit to DOS.");
|
||||
#endif
|
||||
b->common.width = width;
|
||||
b->common.height = 20;
|
||||
|
@ -2663,10 +2678,10 @@ void M_Menu_Main_f (void)
|
|||
y = 36;
|
||||
mainm->selecteditem = (menuoption_t *)
|
||||
//skip menu_single if we don't seem to have any content.
|
||||
MC_AddConsoleCommandQBigFont (mainm, 72, y, "Join server", "menu_servers\n"); y += 20;
|
||||
MC_AddConsoleCommandQBigFont (mainm, 72, y, "^bOptions", "menu_options\n"); y += 20;
|
||||
MC_AddConsoleCommandQBigFont (mainm, 72, y, localtext("Join server"), "menu_servers\n"); y += 20;
|
||||
MC_AddConsoleCommandQBigFont (mainm, 72, y, localtext("^bOptions"), "menu_options\n"); y += 20;
|
||||
y = M_Main_AddExtraOptions(mainm, y);
|
||||
MC_AddConsoleCommandQBigFont (mainm, 72, y, "Quit", "menu_quit\n"); y += 20;
|
||||
MC_AddConsoleCommandQBigFont (mainm, 72, y, localtext("Quit"), "menu_quit\n"); y += 20;
|
||||
|
||||
mainm->cursoritem = (menuoption_t *)MC_AddCursor(mainm, &resel, 54, mainm->selecteditem->common.posy);
|
||||
}
|
||||
|
|
|
@ -435,7 +435,7 @@ static void SL_PreDraw (emenu_t *menu)
|
|||
}
|
||||
|
||||
info->numslots = Master_NumSorted();
|
||||
snprintf(info->refreshtext, sizeof(info->refreshtext), "Refresh - %u/%u/%u\n", info->numslots, Master_NumAlive(), Master_TotalCount());
|
||||
snprintf(info->refreshtext, sizeof(info->refreshtext), localtext("Refresh - %u/%u/%u\n"), info->numslots, Master_NumAlive(), Master_TotalCount());
|
||||
}
|
||||
qboolean NET_SendPollPacket(int len, void *data, netadr_t to);
|
||||
static void SL_PostDraw (emenu_t *menu)
|
||||
|
@ -587,7 +587,7 @@ static void SL_PostDraw (emenu_t *menu)
|
|||
x = lx;
|
||||
for (i = 0; i < countof(helpstrings); i++)
|
||||
{
|
||||
Draw_FunStringWidth (x, y, helpstrings[i], w, false, false);
|
||||
Draw_FunStringWidth (x, y, localtext(helpstrings[i]), w, false, false);
|
||||
y += 8;
|
||||
}
|
||||
}
|
||||
|
@ -667,15 +667,15 @@ static void SL_PostDraw (emenu_t *menu)
|
|||
y += 8;
|
||||
}
|
||||
|
||||
Draw_FunStringWidth (lx, y, "^h(left/rightarrow for different info)", w, false, false);
|
||||
Draw_FunStringWidth (lx, y, localtext("^h(left/rightarrow for different info)"), w, false, false);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
Draw_ApproxTextBox(vid.width/2 - 100, vid.height/2 - 16, 200, 16*3);
|
||||
Draw_FunStringWidth(vid.width/2 - 100, vid.height/2 - 8, "Querying server", 200, 2, false);
|
||||
Draw_FunStringWidth(vid.width/2 - 100, vid.height/2 + 0, "Please wait", 200, 2, false);
|
||||
Draw_FunStringWidth(vid.width/2 - 100, vid.height/2 - 8, localtext("Querying server"), 200, 2, false);
|
||||
Draw_FunStringWidth(vid.width/2 - 100, vid.height/2 + 0, localtext("Please wait"), 200, 2, false);
|
||||
}
|
||||
|
||||
if (server && (server->special & SS_PROTOCOLMASK) == SS_QUAKEWORLD)
|
||||
|
@ -687,7 +687,7 @@ static void SL_PostDraw (emenu_t *menu)
|
|||
bw = w+16+12;
|
||||
bh = 24;
|
||||
// lx += bw-12;
|
||||
bw = strlen("Observe")*8 + 24;
|
||||
bw = strlen(localtext("Observe"))*8 + 24;
|
||||
bw = ((bw+15)/16) * 16; //width must be a multiple of 16
|
||||
// lx -= bw;
|
||||
|
||||
|
@ -703,7 +703,7 @@ static void SL_PostDraw (emenu_t *menu)
|
|||
if (mousecursor_y >= specbutton.y && mousecursor_y < specbutton.y+specbutton.height)
|
||||
active = true;
|
||||
|
||||
Draw_FunStringWidth(lx, y + (bh-8)/2, "Observe", bw, 2, active);y+=8;
|
||||
Draw_FunStringWidth(lx, y + (bh-8)/2, localtext("Observe"), bw, 2, active);y+=8;
|
||||
}
|
||||
|
||||
{
|
||||
|
@ -714,7 +714,7 @@ static void SL_PostDraw (emenu_t *menu)
|
|||
bw = w+16;
|
||||
bh = 24;
|
||||
lx += w-12;
|
||||
bw = strlen("Join")*8 + 24;
|
||||
bw = strlen(localtext("Join"))*8 + 24;
|
||||
bw = ((bw+15)/16) * 16; //width must be a multiple of 16
|
||||
lx -= bw;
|
||||
|
||||
|
@ -731,37 +731,37 @@ static void SL_PostDraw (emenu_t *menu)
|
|||
if (mousecursor_y >= joinbutton.y && mousecursor_y < joinbutton.y+joinbutton.height)
|
||||
active = true;
|
||||
|
||||
Draw_FunStringWidth(lx, y + (bh-8)/2, "Join", bw, 2, active);y+=8;
|
||||
Draw_FunStringWidth(lx, y + (bh-8)/2, localtext("Join"), bw, 2, active);y+=8;
|
||||
}
|
||||
}
|
||||
else if (isrefreshing)
|
||||
{
|
||||
R2D_ImageColours(1,1,1,1);
|
||||
Draw_ApproxTextBox(vid.width/2 - 100-4, vid.height/2 - 24, 200, 64);
|
||||
Draw_FunStringWidth(vid.width/2 - 100, vid.height/2 - 8, "Refreshing, please wait", 200, 2, false);
|
||||
Draw_FunStringWidth(vid.width/2 - 100, vid.height/2 + 0, va("%i of %i", Master_NumPolled(), Master_TotalCount()), 200, 2, false);
|
||||
Draw_FunStringWidth(vid.width/2 - 100, vid.height/2 - 8, localtext("Refreshing, please wait"), 200, 2, false);
|
||||
Draw_FunStringWidth(vid.width/2 - 100, vid.height/2 + 0, va(localtext("polling %i of %i"), Master_NumPolled(), Master_TotalCount()), 200, 2, false);
|
||||
}
|
||||
else if (!info->numslots)
|
||||
{
|
||||
R2D_ImageColours(1,1,1,1);
|
||||
if (!Master_TotalCount())
|
||||
{
|
||||
Draw_FunStringWidth(0, vid.height/2 - 8, "No servers found", vid.width, 2, false);
|
||||
Draw_FunStringWidth(0, vid.height/2 - 8, localtext("No servers found"), vid.width, 2, false);
|
||||
#ifdef HAVE_PACKET
|
||||
Draw_FunStringWidth(0, vid.height/2 + 0, "Check internet connection", vid.width, 2, false);
|
||||
Draw_FunStringWidth(0, vid.height/2 + 0, localtext("Check internet connection"), vid.width, 2, false);
|
||||
#endif
|
||||
}
|
||||
else if (!Master_NumAlive())
|
||||
{
|
||||
Draw_FunStringWidth(0, vid.height/2 - 8, "No servers responding", vid.width, 2, false);
|
||||
Draw_FunStringWidth(0, vid.height/2 - 8, localtext("No servers responding"), vid.width, 2, false);
|
||||
#ifdef HAVE_PACKET
|
||||
Draw_FunStringWidth(0, vid.height/2 + 0, "Check udp internet connection", vid.width, 2, false);
|
||||
Draw_FunStringWidth(0, vid.height/2 + 0, localtext("Check udp internet connection"), vid.width, 2, false);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
Draw_FunStringWidth(0, vid.height/2 - 8, "All servers were filtered out", vid.width, 2, false);
|
||||
Draw_FunStringWidth(0, vid.height/2 + 0, "Change filter settings", vid.width, 2, false);
|
||||
Draw_FunStringWidth(0, vid.height/2 - 8, localtext("All servers were filtered out"), vid.width, 2, false);
|
||||
Draw_FunStringWidth(0, vid.height/2 + 0, localtext("Change filter settings"), vid.width, 2, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -980,7 +980,7 @@ static void SL_ServerPlayer (int x, int y, menucustom_t *ths, emenu_t *menu)
|
|||
{
|
||||
int i = ths->dint;
|
||||
if (selectedserver.detail->players[i].isspec&1)
|
||||
Draw_FunStringWidth (x, y, "spectator", 32, false, false);
|
||||
Draw_FunStringWidth (x, y, localtext("spectator"), 32, false, false);
|
||||
else
|
||||
{
|
||||
R2D_ImagePaletteColour (Sbar_ColorForMap(selectedserver.detail->players[i].topc), 1.0);
|
||||
|
@ -1241,29 +1241,29 @@ void M_Menu_ServerList2_f(void)
|
|||
}
|
||||
}
|
||||
|
||||
strcpy(info->refreshtext, "Refresh");
|
||||
strcpy(info->refreshtext, localtext("Refresh Server List"));
|
||||
|
||||
MC_AddCheckBox(menu, 0, 72, vid.height - 64+8*1, "Ping ", &sb_showping, 1);
|
||||
MC_AddCheckBox(menu, 0, 72, vid.height - 64+8*2, "Address ", &sb_showaddress, 1);
|
||||
MC_AddCheckBox(menu, 0, 72, vid.height - 64+8*3, "Map ", &sb_showmap, 1);
|
||||
MC_AddCheckBox(menu, 0, 72, vid.height - 64+8*4, "Gamedir ", &sb_showgamedir, 1);
|
||||
MC_AddCheckBox(menu, 0, 72, vid.height - 64+8*5, "Players ", &sb_showplayers, 1);
|
||||
MC_AddCheckBox(menu, 0, 72, vid.height - 64+8*6, "Fraglimit", &sb_showfraglimit, 1);
|
||||
MC_AddCheckBox(menu, 0, 72, vid.height - 64+8*7, "Timelimit", &sb_showtimelimit, 1);
|
||||
MC_AddCheckBox(menu, 0, 72, vid.height - 64+8*1, localtext("Ping "), &sb_showping, 1);
|
||||
MC_AddCheckBox(menu, 0, 72, vid.height - 64+8*2, localtext("Address "), &sb_showaddress, 1);
|
||||
MC_AddCheckBox(menu, 0, 72, vid.height - 64+8*3, localtext("Map "), &sb_showmap, 1);
|
||||
MC_AddCheckBox(menu, 0, 72, vid.height - 64+8*4, localtext("Gamedir "), &sb_showgamedir, 1);
|
||||
MC_AddCheckBox(menu, 0, 72, vid.height - 64+8*5, localtext("Players "), &sb_showplayers, 1);
|
||||
MC_AddCheckBox(menu, 0, 72, vid.height - 64+8*6, localtext("Fraglimit"), &sb_showfraglimit, 1);
|
||||
MC_AddCheckBox(menu, 0, 72, vid.height - 64+8*7, localtext("Timelimit"), &sb_showtimelimit, 1);
|
||||
|
||||
#ifdef NQPROT
|
||||
if (M_GameType() == MGT_QUAKE1)
|
||||
{
|
||||
MC_AddCheckBoxFunc(menu, 128, 208, vid.height - 64+8*1, "Show NQ ", SL_ReFilter, SLFILTER_HIDENETQUAKE);
|
||||
MC_AddCheckBoxFunc(menu, 128, 208, vid.height - 64+8*2, "Show QW ", SL_ReFilter, SLFILTER_HIDEQUAKEWORLD);
|
||||
MC_AddCheckBoxFunc(menu, 128, 208, vid.height - 64+8*1, localtext("Show NQ "), SL_ReFilter, SLFILTER_HIDENETQUAKE);
|
||||
MC_AddCheckBoxFunc(menu, 128, 208, vid.height - 64+8*2, localtext("Show QW "), SL_ReFilter, SLFILTER_HIDEQUAKEWORLD);
|
||||
}
|
||||
#endif
|
||||
MC_AddCheckBoxFunc(menu, 128, 208, vid.height - 64+8*3, "Show Proxies", SL_ReFilter, SLFILTER_HIDEPROXIES);
|
||||
MC_AddCheckBoxFunc(menu, 128, 208, vid.height - 64+8*3, localtext("Show Proxies"), SL_ReFilter, SLFILTER_HIDEPROXIES);
|
||||
info->filtertext =
|
||||
MC_AddEditCvar (menu, 128, 200, vid.height - 64+8*4, "Filter ", sb_filtertext.name, true);
|
||||
MC_AddCheckBoxFunc(menu, 128, 208, vid.height - 64+8*5, "Only Favs ", SL_ReFilter, SLFILTER_ONLYFAVOURITES);
|
||||
MC_AddCheckBoxFunc(menu, 128, 208, vid.height - 64+8*6, "Show Empty", SL_ReFilter, SLFILTER_HIDEEMPTY);
|
||||
MC_AddCheckBoxFunc(menu, 128, 208, vid.height - 64+8*7, "Show Full ", SL_ReFilter, SLFILTER_HIDEFULL);
|
||||
MC_AddEditCvar (menu, 128, 200, vid.height - 64+8*4, localtext("Filter "), sb_filtertext.name, true);
|
||||
MC_AddCheckBoxFunc(menu, 128, 208, vid.height - 64+8*5, localtext("Only Favs "), SL_ReFilter, SLFILTER_ONLYFAVOURITES);
|
||||
MC_AddCheckBoxFunc(menu, 128, 208, vid.height - 64+8*6, localtext("Show Empty"), SL_ReFilter, SLFILTER_HIDEEMPTY);
|
||||
MC_AddCheckBoxFunc(menu, 128, 208, vid.height - 64+8*7, localtext("Show Full "), SL_ReFilter, SLFILTER_HIDEFULL);
|
||||
|
||||
MC_AddCommand(menu, 64, 320, 0, info->refreshtext, SL_DoRefresh);
|
||||
|
||||
|
@ -1351,7 +1351,7 @@ static void M_QuickConnect_PreDraw(emenu_t *menu)
|
|||
|
||||
if (best)
|
||||
{
|
||||
Con_Printf("Quick connect found %s (gamedir %s, players %i/%i/%i, ping %ims)\n", best->name, best->gamedir, best->numhumans, best->players, best->maxplayers, best->ping);
|
||||
Con_TPrintf("Quick connect found %s (gamedir %s, players %i/%i/%i, ping %ims)\n", best->name, best->gamedir, best->numhumans, best->players, best->maxplayers, best->ping);
|
||||
|
||||
#ifdef NQPROT
|
||||
if ((best->special & SS_PROTOCOLMASK) == SS_QEPROT)
|
||||
|
@ -1409,8 +1409,8 @@ void M_QuickConnect_f(void)
|
|||
cust->common.height = 8;
|
||||
cust->common.width = vid.width-8;
|
||||
|
||||
MC_AddCommand(menu, 64, 0, 128, "Refresh", SL_DoRefresh);
|
||||
MC_AddCommand(menu, 64, 0, 136, "Cancel", M_QuickConnect_Cancel);
|
||||
MC_AddCommand(menu, 64, 0, 128, localtext("Refresh"), SL_DoRefresh);
|
||||
MC_AddCommand(menu, 64, 0, 136, localtext("Cancel"), M_QuickConnect_Cancel);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -68,13 +68,13 @@ void M_Menu_MultiPlayer_f (void)
|
|||
|
||||
mgt=32;
|
||||
menu->selecteditem = (menuoption_t*)
|
||||
MC_AddConsoleCommandQBigFont (menu, 72, mgt, "Server List ", "menu_slist\n");mgt+=20;
|
||||
MC_AddConsoleCommandQBigFont (menu, 72, mgt, localtext("Server List "), "menu_slist\n");mgt+=20;
|
||||
#ifdef HAVE_PACKET
|
||||
MC_AddConsoleCommandQBigFont (menu, 72, mgt, "Quick Connect", "quickconnect qw\n");mgt+=20;
|
||||
MC_AddConsoleCommandQBigFont (menu, 72, mgt, localtext("Quick Connect"), "quickconnect qw\n");mgt+=20;
|
||||
#endif
|
||||
MC_AddConsoleCommandQBigFont (menu, 72, mgt, "New Server ", "menu_newmulti\n");mgt+=20;
|
||||
MC_AddConsoleCommandQBigFont (menu, 72, mgt, "Player Setup", "menu_setup\n");mgt+=20;
|
||||
MC_AddConsoleCommandQBigFont (menu, 72, mgt, "Demos ", "menu_demo\n");mgt+=20;
|
||||
MC_AddConsoleCommandQBigFont (menu, 72, mgt, localtext("New Server "), "menu_newmulti\n");mgt+=20;
|
||||
MC_AddConsoleCommandQBigFont (menu, 72, mgt, localtext("Player Setup"), "menu_setup\n");mgt+=20;
|
||||
MC_AddConsoleCommandQBigFont (menu, 72, mgt, localtext("Demos "), "menu_demo\n");mgt+=20;
|
||||
|
||||
menu->cursoritem = (menuoption_t*)MC_AddCursor(menu, &resel, 54, 32);
|
||||
return;
|
||||
|
@ -106,13 +106,13 @@ void M_Menu_MultiPlayer_f (void)
|
|||
b->common.width = width;
|
||||
|
||||
b = MC_AddConsoleCommand(menu, 72, 320, 92, "", "menu_demo\n");
|
||||
MC_AddWhiteText(menu, 72, 0, 92+20/2-6, "^aDemos", false);
|
||||
MC_AddWhiteText(menu, 72, 0, 92+20/2-6, localtext("^aDemos"), false);
|
||||
b->common.height = 20;
|
||||
b->common.width = width;
|
||||
|
||||
#ifdef HAVE_PACKET
|
||||
b = MC_AddConsoleCommand(menu, 72, 320, 112, "", "quickconnect qw\n");
|
||||
MC_AddWhiteText(menu, 72, 0, 112+20/2-6, "^aQuick Connect", false);
|
||||
MC_AddWhiteText(menu, 72, 0, 112+20/2-6, localtext("^aQuick Connect"), false);
|
||||
b->common.height = 20;
|
||||
b->common.width = width;
|
||||
#endif
|
||||
|
@ -463,8 +463,8 @@ void M_Menu_Setup_f (void)
|
|||
MC_AddCenterPicture(menu, 4, 24, "pics/m_banner_player_setup");
|
||||
|
||||
menu->selecteditem = (menuoption_t*)
|
||||
(info->nameedit = MC_AddEdit(menu, 64, 160, 40, "Your name", name.string));
|
||||
(info->modeledit = MC_AddCvarCombo(menu, 64, 160,72, "model", &skin, (const char **)modeloptions, (const char **)modeloptions));
|
||||
(info->nameedit = MC_AddEdit(menu, 64, 160, 40, localtext("Your name"), name.string));
|
||||
(info->modeledit = MC_AddCvarCombo(menu, 64, 160,72, localtext("model"), &skin, (const char **)modeloptions, (const char **)modeloptions));
|
||||
info->modeledit->selectedoption = !strncmp(skin.string, "female", 6);
|
||||
cu = MC_AddCustom(menu, 64, 88+16, NULL, 0, NULL);
|
||||
cu->draw = MSetupQ2_TransDraw;
|
||||
|
@ -483,8 +483,8 @@ void M_Menu_Setup_f (void)
|
|||
|
||||
y = 40;
|
||||
menu->selecteditem = (menuoption_t*)
|
||||
(info->nameedit = MC_AddEdit(menu, 64, 160, y, "Your name", name.string)); y+= info->nameedit->common.height;
|
||||
(info->teamedit = MC_AddEdit(menu, 64, 160, y, "Your team", team.string)); y+= info->teamedit->common.height;
|
||||
(info->nameedit = MC_AddEdit(menu, 64, 160, y, localtext("Your name"), name.string)); y+= info->nameedit->common.height;
|
||||
(info->teamedit = MC_AddEdit(menu, 64, 160, y, localtext("Your team"), team.string)); y+= info->teamedit->common.height;
|
||||
#ifdef HEXEN2
|
||||
info->ticlass = -1;
|
||||
if (M_GameType() == MGT_HEXEN2)
|
||||
|
@ -499,7 +499,7 @@ void M_Menu_Setup_f (void)
|
|||
NULL
|
||||
};
|
||||
cvar_t *pc = Cvar_Get("cl_playerclass", "1", CVAR_USERINFO|CVAR_ARCHIVE, "Hexen2");
|
||||
(info->classedit = MC_AddCombo(menu, 64, 160, y, "Your class", (const char **)classnames, pc->ival-1)); y+= info->classedit->common.height;
|
||||
(info->classedit = MC_AddCombo(menu, 64, 160, y, localtext("Your class"), (const char **)classnames, pc->ival-1)); y+= info->classedit->common.height;
|
||||
|
||||
//trim options if the artwork is missing.
|
||||
while (info->classedit->numoptions && !COM_FCheckExists(va("gfx/menu/netp%i.lmp", info->classedit->numoptions)))
|
||||
|
@ -511,23 +511,23 @@ void M_Menu_Setup_f (void)
|
|||
MC_AddPicture(menu, 16, 4, 32, 144, "gfx/qplaque.lmp");
|
||||
MC_AddCenterPicture(menu, 4, 24, "gfx/p_multi.lmp");
|
||||
|
||||
(info->skinedit = MC_AddEdit(menu, 64, 160, y, "Your skin", skin.string)); y+= info->skinedit->common.height;
|
||||
(info->skinedit = MC_AddEdit(menu, 64, 160, y, localtext("Your skin"), skin.string)); y+= info->skinedit->common.height;
|
||||
}
|
||||
|
||||
ci = MC_AddCustom(menu, 172+32, y, NULL, 0, NULL);
|
||||
ci->draw = MSetup_TransDraw;
|
||||
ci->key = NULL;
|
||||
|
||||
MC_AddCommand(menu, 64, 160, y+8, "Top colour", SetupMenuColour);
|
||||
MC_AddCommand(menu, 64, 160, y+32, "Lower colour", SetupMenuColour);
|
||||
MC_AddCommand(menu, 64, 160, y+8, localtext("Top colour"), SetupMenuColour);
|
||||
MC_AddCommand(menu, 64, 160, y+32, localtext("Lower colour"), SetupMenuColour);
|
||||
y+= 16;
|
||||
y+=4;
|
||||
|
||||
b = MC_AddConsoleCommand(menu, 64, 204, 168, "Network Settings", "menu_network\n");
|
||||
b->common.tooltip = "Change network and client prediction settings.";
|
||||
b = MC_AddConsoleCommand(menu, 64, 204, 168, localtext("Network Settings"), "menu_network\n");
|
||||
b->common.tooltip = localtext("Change network and client prediction settings.");
|
||||
y += b->common.height;
|
||||
b = MC_AddConsoleCommand(menu, 64, 204, 176, "Teamplay Settings", "menu_teamplay\n");
|
||||
b->common.tooltip = "Change teamplay macro settings.";
|
||||
b = MC_AddConsoleCommand(menu, 64, 204, 176, localtext("Teamplay Settings"), "menu_teamplay\n");
|
||||
b->common.tooltip = localtext("Change teamplay macro settings.");
|
||||
y += b->common.height;
|
||||
menu->cursoritem = (menuoption_t*)MC_AddCursorSmall(menu, &resel, 54);
|
||||
|
||||
|
@ -773,11 +773,11 @@ void M_Menu_GameOptions_f (void)
|
|||
// MC_AddPicture(menu, 72, 32, ("gfx/mp_menu.lmp") );
|
||||
|
||||
menu->selecteditem = (menuoption_t*)
|
||||
MC_AddCommand (menu, 64, 160, y, "Start game", MultiBeginGame);y+=16;
|
||||
MC_AddCommand (menu, 64, 160, y, localtext("Start game"), MultiBeginGame);y+=16;
|
||||
|
||||
y+=4;
|
||||
info->hostnameedit = MC_AddEdit (menu, 64, 160, y, "Hostname", name.string);y+=info->hostnameedit->common.height;
|
||||
info->publicgame = MC_AddCombo (menu, 64, 160, y, "Public", publicoptions, bound(0, sv_public.ival+1, 4));y+=8;
|
||||
info->hostnameedit = MC_AddEdit (menu, 64, 160, y, localtext("Hostname"), name.string);y+=info->hostnameedit->common.height;
|
||||
info->publicgame = MC_AddCombo (menu, 64, 160, y, localtext("Public"), publicoptions, bound(0, sv_public.ival+1, 4));y+=8;
|
||||
#if !defined(FTE_TARGET_WEB) && defined(HAVE_DTLS)
|
||||
{
|
||||
static const char *encoptions[] =
|
||||
|
@ -788,7 +788,7 @@ void M_Menu_GameOptions_f (void)
|
|||
"Require",
|
||||
NULL
|
||||
};
|
||||
MC_AddCvarCombo (menu, 64, 160, y, "DTLS Encryption", &net_enable_dtls, encoptions, NULL);y+=8;
|
||||
MC_AddCvarCombo (menu, 64, 160, y, localtext("DTLS Encryption"), &net_enable_dtls, encoptions, NULL);y+=8;
|
||||
}
|
||||
#endif
|
||||
y+=4;
|
||||
|
@ -799,15 +799,15 @@ void M_Menu_GameOptions_f (void)
|
|||
break;
|
||||
}
|
||||
|
||||
info->numplayers = MC_AddCombo (menu, 64, 160, y, "Max players", (const char **)numplayeroptions, players);y+=8;
|
||||
info->numplayers = MC_AddCombo (menu, 64, 160, y, localtext("Max players"), (const char **)numplayeroptions, players);y+=8;
|
||||
|
||||
info->deathmatch = MC_AddCombo (menu, 64, 160, y, "Deathmatch", (const char **)deathmatchoptions, deathmatch.value);y+=8;
|
||||
info->teamplay = MC_AddCombo (menu, 64, 160, y, "Teamplay", (!strcasecmp(FS_GetGamedir(true), "rogue")?(const char **)teamplayoptions_rogue:(const char **)teamplayoptions), teamplay.value);y+=8;
|
||||
info->skill = MC_AddCombo (menu, 64, 160, y, "Skill", (const char **)skilloptions, skill.value);y+=8;
|
||||
info->rundedicated = MC_AddCheckBox(menu, 64, 160, y, "dedicated", NULL, 0);y+=8;
|
||||
info->deathmatch = MC_AddCombo (menu, 64, 160, y, localtext("Deathmatch"), (const char **)deathmatchoptions, deathmatch.value);y+=8;
|
||||
info->teamplay = MC_AddCombo (menu, 64, 160, y, localtext("Teamplay"), (!strcasecmp(FS_GetGamedir(true), "rogue")?(const char **)teamplayoptions_rogue:(const char **)teamplayoptions), teamplay.value);y+=8;
|
||||
info->skill = MC_AddCombo (menu, 64, 160, y, localtext("Skill"), (const char **)skilloptions, skill.value);y+=8;
|
||||
info->rundedicated = MC_AddCheckBox(menu, 64, 160, y, localtext("dedicated"), NULL, 0);y+=8;
|
||||
y+=8;
|
||||
info->timelimit = MC_AddCombo (menu, 64, 160, y, "Time Limit", (const char **)timelimitoptions, timelimit.value/5);y+=8;
|
||||
info->fraglimit = MC_AddCombo (menu, 64, 160, y, "Frag Limit", (const char **)fraglimitoptions, fraglimit.value/10);y+=8;
|
||||
info->timelimit = MC_AddCombo (menu, 64, 160, y, localtext("Time Limit"), (const char **)timelimitoptions, timelimit.value/5);y+=8;
|
||||
info->fraglimit = MC_AddCombo (menu, 64, 160, y, localtext("Frag Limit"), (const char **)fraglimitoptions, fraglimit.value/10);y+=8;
|
||||
y+=8;
|
||||
|
||||
//populate it with an appropriate default. its a shame it won't change with the deathmatch/coop options
|
||||
|
@ -832,7 +832,7 @@ void M_Menu_GameOptions_f (void)
|
|||
COM_EnumerateFiles("maps/*.map.gz", M_Menu_GameOptions_AddMap, &mapopts);
|
||||
COM_EnumerateFiles("maps/*.cm", M_Menu_GameOptions_AddMap, &mapopts);
|
||||
COM_EnumerateFiles("maps/*.hmp", M_Menu_GameOptions_AddMap, &mapopts);
|
||||
info->mapname = MC_AddCombo (menu, 64, 160, y, "Map", (const char **)mapopts.maps, 0);y+=8;
|
||||
info->mapname = MC_AddCombo (menu, 64, 160, y, localtext("Map"), (const char **)mapopts.maps, 0);y+=8;
|
||||
y += 16;
|
||||
|
||||
menu->cursoritem = (menuoption_t*)MC_AddWhiteText(menu, 54, 0, menu->selecteditem->common.posy, NULL, false);
|
||||
|
|
|
@ -415,7 +415,7 @@ void M_Menu_Options_f (void)
|
|||
"3",
|
||||
NULL
|
||||
};
|
||||
MC_AddCvarCombo(menu, 16, 216, y, "Use Hud Plugin", &plug_sbar, hudplugopts, hudplugvalues); y += 8;
|
||||
MC_AddCvarCombo(menu, 16, 216, y, localtext("Use Hud Plugin"), &plug_sbar, hudplugopts, hudplugvalues); y += 8;
|
||||
}
|
||||
#endif
|
||||
MC_AddFrameEnd(menu, framey);
|
||||
|
@ -1303,17 +1303,18 @@ static void M_Menu_Preset_Predraw(emenu_t *menu)
|
|||
if (!strcmp(op->button.command, "menupop\n"))
|
||||
{
|
||||
if (m_preset_chosen.ival)
|
||||
op->button.text = "^sAccept";
|
||||
op->button.text = localtext("^sAccept");
|
||||
}
|
||||
else if (!strncmp(op->button.command, "fps_preset ", 11))
|
||||
{
|
||||
((char*)op->button.text)[1] = (preset==0)?'m':'7';
|
||||
if (((char*)op->button.text)[0] == '^' && ((char*)op->button.text)[1] == ((preset!=0)?'m':'7'))
|
||||
((char*)op->button.text)[1] = (preset==0)?'m':'7';
|
||||
preset--;
|
||||
}
|
||||
#if defined(WEBCLIENT) && defined(PACKAGEMANAGER)
|
||||
else if (!strcmp(op->button.command, "menu_download\n"))
|
||||
{
|
||||
op->button.text = PM_AreSourcesNew(false)?"^bPackages (New!)":"Packages";
|
||||
op->button.text = PM_AreSourcesNew(false)?localtext("^bPackages (New!)"):localtext("Packages");
|
||||
op->common.posx = op->common.next->common.posx;
|
||||
op->common.width = 216-op->common.posx;
|
||||
}
|
||||
|
|
|
@ -372,7 +372,7 @@ void M_Menu_SinglePlayer_f (void)
|
|||
#endif
|
||||
|
||||
#if MAX_SPLITS > 1
|
||||
b = (menubutton_t*)MC_AddCvarCombo(menu, 72, 170, 96, "Splitscreen", &cl_splitscreen, splitopts, splitvals);
|
||||
b = (menubutton_t*)MC_AddCvarCombo(menu, 72, 170, 96, localtext("Splitscreen"), &cl_splitscreen, splitopts, splitvals);
|
||||
#endif
|
||||
|
||||
menu->cursoritem = (menuoption_t*)MC_AddWhiteText(menu, 48, 0, 40, NULL, false);
|
||||
|
@ -412,7 +412,7 @@ void M_Menu_SinglePlayer_f (void)
|
|||
MC_AddCenterPicture(menu, 0, 60, "gfx/menu/title2.lmp");
|
||||
|
||||
if (cl_splitscreen.ival)
|
||||
MC_AddBufferedText(menu, 80, 0, (y+=8)+12, va("Player %i\n", pnum), false, true);
|
||||
MC_AddBufferedText(menu, 80, 0, (y+=8)+12, va(localtext("Player %i\n"), pnum), false, true);
|
||||
|
||||
for (i = 0; i <= 4+havemp; i++)
|
||||
{
|
||||
|
@ -501,7 +501,7 @@ void M_Menu_SinglePlayer_f (void)
|
|||
MC_AddConsoleCommandHexen2BigFont(menu, 80, y+=20, "Load Game", "menu_load\n");
|
||||
#endif
|
||||
|
||||
MC_AddCvarCombo(menu, 72, 170, y+=20, "Splitscreen", &cl_splitscreen, splitopts, splitvals);
|
||||
MC_AddCvarCombo(menu, 72, 170, y+=20, localtext("Splitscreen"), &cl_splitscreen, splitopts, splitvals);
|
||||
}
|
||||
|
||||
menu->cursoritem = (menuoption_t *)MC_AddCursor(menu, &resel, 56, menu->selecteditem?menu->selecteditem->common.posy:0);
|
||||
|
@ -566,7 +566,7 @@ void M_Menu_SinglePlayer_f (void)
|
|||
|
||||
#if MAX_SPLITS > 1
|
||||
b = (menubutton_t*)MC_AddCvarCombo(menu, 72, 72+width/2, 92, "", &cl_splitscreen, splitopts, splitvals);
|
||||
MC_AddWhiteText(menu, 72, 0, 92, "^aSplitscreen", false);
|
||||
MC_AddRedText(menu, 72, 0, 92, localtext("Splitscreen"), false);
|
||||
b->common.height = 20;
|
||||
b->common.width = width;
|
||||
#endif
|
||||
|
@ -1084,7 +1084,7 @@ static void ShowDemoMenu (emenu_t *menu, const char *path)
|
|||
return //wut? don't confuse basedirs here...
|
||||
Z_Free(info->man->basedir);
|
||||
info->man->basedir = Z_StrDup(info->fs->path);
|
||||
Menu_Prompt(FS_GameDirPrompted, &menu->menu, va("Use this directory?%s", info->fs->path), "Yes!", NULL, "No", true);
|
||||
Menu_Prompt(FS_GameDirPrompted, &menu->menu, va(localtext("Use this directory?\n%s"), info->fs->path), "Yes!", NULL, "No", true);
|
||||
}
|
||||
}
|
||||
void M_Demo_Reselect(demomenu_t *info, const char *name)
|
||||
|
@ -1170,7 +1170,7 @@ void M_Menu_Demos_f (void)
|
|||
info->ext[info->numext++] = archiveexts[u];
|
||||
}
|
||||
|
||||
MC_AddWhiteText(menu, 24, 170, 8, "Choose a Demo", false);
|
||||
MC_AddWhiteText(menu, 24, 170, 8, localtext("Choose a Demo"), false);
|
||||
MC_AddWhiteText(menu, 16, 170, 24, "^Ue01d^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01f", false);
|
||||
|
||||
info->list = MC_AddCustom(menu, 0, 32, NULL, 0, NULL);
|
||||
|
@ -1237,7 +1237,7 @@ void M_Menu_MediaFiles_f (void)
|
|||
#endif
|
||||
#endif
|
||||
|
||||
MC_AddWhiteText(menu, 24, 170, 8, "Media List", false);
|
||||
MC_AddWhiteText(menu, 24, 170, 8, localtext("Media List"), false);
|
||||
MC_AddWhiteText(menu, 16, 170, 24, "^Ue01d^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01f", false);
|
||||
|
||||
info->list = MC_AddCustom(menu, 0, 32, NULL, 0, NULL);
|
||||
|
@ -1287,7 +1287,7 @@ void M_Menu_BasedirPrompt(ftemanifest_t *man)
|
|||
|
||||
info->numext = 0;
|
||||
|
||||
MC_AddWhiteText(menu, 24, 170, 8, va("Where is %s installed?", man->formalname), false);
|
||||
MC_AddWhiteText(menu, 24, 170, 8, va(localtext("Where is %s installed?"), man->formalname), false);
|
||||
MC_AddWhiteText(menu, 16, 170, 24, "^Ue01d^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01f", false);
|
||||
|
||||
info->list = MC_AddCustom(menu, 0, 32, NULL, 0, NULL);
|
||||
|
|
|
@ -617,6 +617,13 @@ void Menu_Prompt (void (*callback)(void *, promptbutton_t), void *ctx, const cha
|
|||
char *t;
|
||||
conchar_t message[8192], *e;
|
||||
|
||||
if (optionyes)
|
||||
optionyes = localtext(optionyes);
|
||||
if (optionno)
|
||||
optionno = localtext(optionno);
|
||||
if (optioncancel)
|
||||
optioncancel = localtext(optioncancel);
|
||||
|
||||
e = COM_ParseFunString(CON_WHITEMASK, messages, message, sizeof(message)-sizeof(conchar_t), false);
|
||||
|
||||
m = (promptmenu_t*)Z_Malloc(sizeof(*m) + (e-message)*sizeof(conchar_t)+(optionyes?strlen(optionyes):0)+(optionno?strlen(optionno):0)+(optioncancel?strlen(optioncancel):0)+7);
|
||||
|
@ -965,7 +972,7 @@ void M_Menu_Keys_f (void)
|
|||
"4"
|
||||
#endif
|
||||
};
|
||||
MC_AddCvarCombo(menu, 16, 170, y, "Force client", &cl_forceseat, (const char **)texts, (const char **)values);
|
||||
MC_AddCvarCombo(menu, 16, 170, y, localtext("Force client"), &cl_forceseat, (const char **)texts, (const char **)values);
|
||||
y+=8;
|
||||
}
|
||||
#endif
|
||||
|
@ -997,7 +1004,7 @@ void M_Menu_Keys_f (void)
|
|||
MC_AddFrameStart(menu, 48+8);
|
||||
while (bindnames->name)
|
||||
{
|
||||
MC_AddBind(menu, 16, 170, y, bindnames->name, bindnames->command, NULL);
|
||||
MC_AddBind(menu, 16, 170, y, localtext(bindnames->name), bindnames->command, NULL);
|
||||
y += 8;
|
||||
bindnames++;
|
||||
}
|
||||
|
@ -1292,10 +1299,10 @@ void M_Menu_Quit_f (void)
|
|||
#endif
|
||||
break;
|
||||
case 2:
|
||||
Menu_Prompt (M_Menu_DoQuitSave, NULL, "You have unsaved settings\nWould you like to\nsave them now?", "Yes", "No", "Cancel", true);
|
||||
Menu_Prompt (M_Menu_DoQuitSave, NULL, localtext("You have unsaved settings\nWould you like to\nsave them now?"), "Yes", "No", "Cancel", true);
|
||||
break;
|
||||
case 1:
|
||||
Menu_Prompt (M_Menu_DoQuit, NULL, quitMessage[rand()%countof(quitMessage)], "Quit", NULL, "Cancel", true);
|
||||
Menu_Prompt (M_Menu_DoQuit, NULL, localtext(quitMessage[rand()%countof(quitMessage)]), "Quit", NULL, "Cancel", true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1303,7 +1310,7 @@ void M_Menu_Quit_f (void)
|
|||
#ifdef HAVE_LEGACY
|
||||
void M_Menu_Credits_f (void)
|
||||
{
|
||||
Menu_Prompt (NULL, NULL, "That's all folks!\nTry a different mod now.", NULL, NULL, "Sure!", false);
|
||||
Menu_Prompt (NULL, NULL, localtext("That's all folks!\nTry a different mod now."), NULL, NULL, "Sure!", false);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -347,11 +347,11 @@ struct emenu_s {
|
|||
menutext_t *MC_AddBufferedText(emenu_t *menu, int lhs, int rhs, int y, const char *text, int rightalign, qboolean red);
|
||||
menutext_t *MC_AddRedText(emenu_t *menu, int lhs, int rhs, int y, const char *text, int rightalign);
|
||||
menutext_t *MC_AddWhiteText(emenu_t *menu, int lhs, int rhs, int y, const char *text, int rightalign);
|
||||
menubind_t *MC_AddBind(emenu_t *menu, int cx, int bx, int y, const char *caption, char *command, char *tooltip);
|
||||
menubind_t *MC_AddBind(emenu_t *menu, int cx, int bx, int y, const char *caption, char *command, const char *tooltip);
|
||||
menubox_t *MC_AddBox(emenu_t *menu, int x, int y, int width, int height);
|
||||
menupicture_t *MC_AddPicture(emenu_t *menu, int x, int y, int width, int height, char *picname);
|
||||
menupicture_t *MC_AddSelectablePicture(emenu_t *menu, int x, int y, int height, char *picname);
|
||||
menupicture_t *MC_AddCenterPicture(emenu_t *menu, int y, int height, char *picname);
|
||||
menupicture_t *MC_AddPicture(emenu_t *menu, int x, int y, int width, int height, const char *picname);
|
||||
menupicture_t *MC_AddSelectablePicture(emenu_t *menu, int x, int y, int height, const char *picname);
|
||||
menupicture_t *MC_AddCenterPicture(emenu_t *menu, int y, int height, const char *picname);
|
||||
menupicture_t *MC_AddCursor(emenu_t *menu, menuresel_t *resel, int x, int y);
|
||||
menuoption_t *MC_AddCursorSmall(emenu_t *menu, menuresel_t *reselection, int x);
|
||||
menuslider_t *MC_AddSlider(emenu_t *menu, int tx, int sx, int y, const char *text, cvar_t *var, float min, float max, float delta);
|
||||
|
@ -362,11 +362,11 @@ menubutton_t *MC_AddConsoleCommandQBigFont(emenu_t *menu, int x, int y, const ch
|
|||
mpic_t *QBigFontWorks(void);
|
||||
menubutton_t *MC_AddConsoleCommandHexen2BigFont(emenu_t *menu, int x, int y, const char *text, const char *command);
|
||||
menubutton_t *VARGS MC_AddConsoleCommandf(emenu_t *menu, int lhs, int rhs, int y, int rightalign, const char *text, char *command, ...);
|
||||
menubutton_t *MC_AddCommand(emenu_t *menu, int lhs, int rhs, int y, char *text, qboolean (*command) (union menuoption_s *,struct emenu_s *,int));
|
||||
menubutton_t *MC_AddCommand(emenu_t *menu, int lhs, int rhs, int y, const char *text, qboolean (*command) (union menuoption_s *,struct emenu_s *,int));
|
||||
menucombo_t *MC_AddCombo(emenu_t *menu, int tx, int cx, int y, const char *caption, const char **ops, int initialvalue);
|
||||
menucombo_t *MC_AddCvarCombo(emenu_t *menu, int tx, int cx, int y, const char *caption, cvar_t *cvar, const char **ops, const char **values);
|
||||
menuedit_t *MC_AddEdit(emenu_t *menu, int cx, int ex, int y, char *text, char *def);
|
||||
menuedit_t *MC_AddEditCvar(emenu_t *menu, int cx, int ex, int y, char *text, char *name, qboolean slim);
|
||||
menuedit_t *MC_AddEdit(emenu_t *menu, int cx, int ex, int y, const char *text, const char *def);
|
||||
menuedit_t *MC_AddEditCvar(emenu_t *menu, int cx, int ex, int y, const char *text, const char *name, qboolean slim);
|
||||
menucustom_t *MC_AddCustom(emenu_t *menu, int x, int y, void *dptr, int dint, const char *tooltip);
|
||||
menuframe_t *MC_AddFrameStart(emenu_t *menu, int y); //call before items are added
|
||||
menuframe_t *MC_AddFrameEnd(emenu_t *menu, int y); //and call AFTER that stuff with the same y.
|
||||
|
@ -374,7 +374,7 @@ menuframe_t *MC_AddFrameEnd(emenu_t *menu, int y); //and call AFTER that stuff w
|
|||
typedef struct menubulk_s {
|
||||
menutype_t type;
|
||||
int variant;
|
||||
char *text;
|
||||
const char *text;
|
||||
const char *tooltip;
|
||||
char *consolecmd; // console command
|
||||
cvar_t *cvar; // check box, slider
|
||||
|
@ -393,24 +393,24 @@ typedef struct menubulk_s {
|
|||
int spacing; // spacing
|
||||
} menubulk_t;
|
||||
|
||||
#define MB_CONSOLECMD(text, cmd, tip) {mt_button, 0, text, tip, cmd}
|
||||
#define MB_CONSOLECMDRETURN(text, cmd, tip, ret) {mt_button, 0, text, tip, cmd, NULL, 0, NULL, 0, 0, 0, false, NULL, NULL, NULL, NULL, 0, (union menuoption_s **)&ret}
|
||||
#define MB_CHECKBOXCVAR(text, cvar, cvarflag) {mt_checkbox, 0, text, NULL, NULL, &cvar, cvarflag}
|
||||
#define MB_CHECKBOXCVARTIP(text, cvar, cvarflag, tip) {mt_checkbox, 0, text, tip, NULL, &cvar, cvarflag}
|
||||
#define MB_CHECKBOXCVARRETURN(text, cvar, cvarflag, ret) {mt_checkbox, 0, text, NULL, NULL, &cvar, cvarflag, NULL, 0, 0, 0, false, NULL, NULL, NULL, NULL, 0, (union menuoption_s **)&ret}
|
||||
#define MB_CHECKBOXFUNC(text, func, flags, tip) {mt_checkbox, 0, text, tip, NULL, NULL, flags, func}
|
||||
#define MB_SLIDER(text, cvar, min, max, delta, tip) {mt_slider, 0, text, tip, NULL, &cvar, 0, NULL, min, max, delta}
|
||||
#define MB_TEXT(text, align) {mt_text, 0, text, NULL, NULL, NULL, 0, NULL, 0, 0, 0, align}
|
||||
#define MB_REDTEXT(text, align) {mt_text, 1, text, NULL, NULL, NULL, 0, NULL, 0, 0, 0, align}
|
||||
#define MB_CMD(text, cmdfunc, tip) {mt_button, 1, text, tip, NULL, NULL, 0, NULL, 0, 0, 0, false, cmdfunc}
|
||||
#define MB_EDITCVARTIP(text, cvarname, tip) {mt_edit, 0, text, tip, NULL, NULL, 0, NULL, 0, 0, 0, false, NULL, cvarname}
|
||||
#define MB_EDITCVAR(text, cvarname) {mt_edit, 0, text, NULL, NULL, NULL, 0, NULL, 0, 0, 0, false, NULL, cvarname}
|
||||
#define MB_EDITCVARSLIM(text, cvarname, tip) {mt_edit, 1, text, tip, NULL, NULL, 0, NULL, 0, 0, 0, false, NULL, cvarname}
|
||||
#define MB_EDITCVARSLIMRETURN(text, cvarname, ret) {mt_edit, 1, text, NULL, NULL, NULL, 0, NULL, 0, 0, 0, false, NULL, cvarname, NULL, NULL, 0, (union menuoption_s **)&ret}
|
||||
#define MB_COMBOCVAR(text, cvar, options, values, tip) {mt_combo, 0, text, tip, NULL, &cvar, 0, NULL, 0, 0, 0, false, NULL, NULL, options, values}
|
||||
#define MB_COMBORETURN(text, options, selected, ret, tip) {mt_combo, 1, text, tip, NULL, NULL, 0, NULL, 0, 0, 0, false, NULL, NULL, options, NULL, selected, (union menuoption_s **)&ret}
|
||||
#define MB_COMBOCVARRETURN(text, cvar, options, values, ret, tip) {mt_combo, 0, text, tip, NULL, &cvar, 0, NULL, 0, 0, 0, false, NULL, NULL, options, values, 0, (union menuoption_s **)&ret}
|
||||
#define MB_SPACING(space) {mt_text, 2, NULL, NULL, NULL, NULL, 0, NULL, 0, 0, 0, false, NULL, NULL, NULL, NULL, 0, NULL, space}
|
||||
#define MB_CONSOLECMD(text, cmd, tip) {mt_button, 0, localtext(text), localtext(tip), cmd}
|
||||
#define MB_CONSOLECMDRETURN(text, cmd, tip, ret) {mt_button, 0, localtext(text), localtext(tip), cmd, NULL, 0, NULL, 0, 0, 0, false, NULL, NULL, NULL, NULL, 0, (union menuoption_s **)&ret}
|
||||
#define MB_CHECKBOXCVAR(text, cvar, cvarflag) {mt_checkbox, 0, localtext(text), NULL, NULL, &cvar, cvarflag}
|
||||
#define MB_CHECKBOXCVARTIP(text, cvar, cvarflag, tip) {mt_checkbox, 0, localtext(text), localtext(tip), NULL, &cvar, cvarflag}
|
||||
#define MB_CHECKBOXCVARRETURN(text, cvar, cvarflag, ret) {mt_checkbox, 0, localtext(text), NULL, NULL, &cvar, cvarflag, NULL, 0, 0, 0, false, NULL, NULL, NULL, NULL, 0, (union menuoption_s **)&ret}
|
||||
#define MB_CHECKBOXFUNC(text, func, flags, tip) {mt_checkbox, 0, localtext(text), localtext(tip), NULL, NULL, flags, func}
|
||||
#define MB_SLIDER(text, cvar, min, max, delta, tip) {mt_slider, 0, localtext(text), localtext(tip), NULL, &cvar, 0, NULL, min, max, delta}
|
||||
#define MB_TEXT(text, align) {mt_text, 0, localtext(text), NULL, NULL, NULL, 0, NULL, 0, 0, 0, align}
|
||||
#define MB_REDTEXT(text, align) {mt_text, 1, localtext(text), NULL, NULL, NULL, 0, NULL, 0, 0, 0, align}
|
||||
#define MB_CMD(text, cmdfunc, tip) {mt_button, 1, localtext(text), localtext(tip), NULL, NULL, 0, NULL, 0, 0, 0, false, cmdfunc}
|
||||
#define MB_EDITCVARTIP(text, cvarname, tip) {mt_edit, 0, localtext(text), localtext(tip), NULL, NULL, 0, NULL, 0, 0, 0, false, NULL, cvarname}
|
||||
#define MB_EDITCVAR(text, cvarname) {mt_edit, 0, localtext(text), NULL, NULL, NULL, 0, NULL, 0, 0, 0, false, NULL, cvarname}
|
||||
#define MB_EDITCVARSLIM(text, cvarname, tip) {mt_edit, 1, localtext(text), localtext(tip), NULL, NULL, 0, NULL, 0, 0, 0, false, NULL, cvarname}
|
||||
#define MB_EDITCVARSLIMRETURN(text, cvarname, ret) {mt_edit, 1, localtext(text), NULL, NULL, NULL, 0, NULL, 0, 0, 0, false, NULL, cvarname, NULL, NULL, 0, (union menuoption_s **)&ret}
|
||||
#define MB_COMBOCVAR(text, cvar, options, values, tip) {mt_combo, 0, localtext(text), localtext(tip), NULL, &cvar, 0, NULL, 0, 0, 0, false, NULL, NULL, options, values}
|
||||
#define MB_COMBORETURN(text, options, selected, ret, tip) {mt_combo, 1, localtext(text), localtext(tip), NULL, NULL, 0, NULL, 0, 0, 0, false, NULL, NULL, options, NULL, selected, (union menuoption_s **)&ret}
|
||||
#define MB_COMBOCVARRETURN(text, cvar, options, values, ret, tip) {mt_combo, 0, localtext(text), localtext(tip), NULL, &cvar, 0, NULL, 0, 0, 0, false, NULL, NULL, options, values, 0, (union menuoption_s **)&ret}
|
||||
#define MB_SPACING(space) {mt_text, 2, NULL, NULL, NULL, NULL, 0, NULL, 0, 0, 0, false, NULL, NULL, NULL, NULL, 0, NULL, space}
|
||||
#define MB_END() {mt_text, -1}
|
||||
|
||||
int MC_AddBulk(emenu_t *menu, menuresel_t *resel, menubulk_t *bulk, int xstart, int xtextend, int y);
|
||||
|
|
|
@ -2644,7 +2644,7 @@ static void P_ExportAllEffects_f(void)
|
|||
if (!outf)
|
||||
{
|
||||
FS_NativePath(fname, FS_GAMEONLY, effect, sizeof(effect));
|
||||
Con_Printf("Unable to open file %s\n", effect);
|
||||
Con_TPrintf("Unable to open file %s\n", effect);
|
||||
return;
|
||||
}
|
||||
for (i = 0; i < numparticletypes; i++)
|
||||
|
@ -3391,7 +3391,7 @@ static void P_ConvertEffectInfo_f(void)
|
|||
if (!outf)
|
||||
{
|
||||
FS_NativePath(fname, FS_GAMEONLY, effect, sizeof(effect));
|
||||
Con_Printf("Unable to open file %s\n", effect);
|
||||
Con_TPrintf("Unable to open file %s\n", effect);
|
||||
return;
|
||||
}
|
||||
for (i = 0; i < numparticletypes; i++)
|
||||
|
|
|
@ -2195,7 +2195,7 @@ void R_RestartRenderer (rendererstate_t *newr)
|
|||
rendererstate_t oldr;
|
||||
if (r_blockvidrestart)
|
||||
{
|
||||
Con_Printf("Ignoring vid_restart from config\n");
|
||||
Con_TPrintf("Ignoring vid_restart from config\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -850,7 +850,7 @@ qboolean Con_Editor_Close(console_t *con, qboolean force)
|
|||
{
|
||||
if (!strncmp(con->title, "MODIFIED: ", 10))
|
||||
{
|
||||
Menu_Prompt(Con_Editor_CloseCallback, con, va("Save changes?\n%s\n", con->name), "Yes", "No", "Cancel", true);
|
||||
Menu_Prompt(Con_Editor_CloseCallback, con, va(localtext("Save changes?\n%s\n"), con->name), "Yes", "No", "Cancel", true);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -975,7 +975,7 @@ static void Cmd_Exec_f (void)
|
|||
else
|
||||
#endif
|
||||
{
|
||||
Menu_Prompt(NULL, NULL, va("WARNING: nquake %s file detected. The file has been ignored.", name), NULL, NULL, "Argh", false);
|
||||
Menu_Prompt(NULL, NULL, va(localtext("WARNING: nquake %s file detected. The file has been ignored."), name), NULL, NULL, "Argh", false);
|
||||
*s = 0;
|
||||
foundone = 0;
|
||||
}
|
||||
|
@ -2366,8 +2366,8 @@ static void Cmd_Complete_CheckArg(const char *value, const char *desc, const cha
|
|||
char *p;
|
||||
char quoted[8192];
|
||||
|
||||
if (!desc) //if no arg desc, use the command's.
|
||||
desc = ctx->desc;
|
||||
if (!desc && ctx->desc) //if no arg desc, use the command's.
|
||||
desc = localtext(ctx->desc);
|
||||
|
||||
if (strchr(value, ' ') || strchr(value, '\t') || strchr(value, '\"') || strchr(value, '\r') || strchr(value, '\n'))
|
||||
{
|
||||
|
|
|
@ -7355,7 +7355,7 @@ static void FS_ModInstallGot(struct dl_download *dl)
|
|||
if (ctx->man && !strcmp(ctx->man->basedir, com_gamepath))
|
||||
{
|
||||
//should probably show just the hostname for brevity.
|
||||
Menu_Prompt(FS_ModInstallConfirmed, ctx, va("Install %s from\n%s ?", ctx->man->formalname, ctx->url), "Install", NULL, "Cancel", true);
|
||||
Menu_Prompt(FS_ModInstallConfirmed, ctx, va(localtext("Install %s from\n%s ?"), ctx->man->formalname, ctx->url), "Install", NULL, "Cancel", true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -80,7 +80,7 @@ static int TL_LoadLanguage(char *lang)
|
|||
languages[j].name = strdup(lang);
|
||||
languages[j].po = NULL;
|
||||
|
||||
#ifndef COLOURUNTRANSLATEDSTRINGS
|
||||
#if !defined(COLOURUNTRANSLATEDSTRINGS) && !defined(COLOURMISSINGSTRINGS)
|
||||
if (f)
|
||||
#endif
|
||||
{
|
||||
|
@ -308,14 +308,45 @@ struct po_s
|
|||
};
|
||||
|
||||
static struct poline_s *PO_AddText(struct po_s *po, const char *orig, const char *trans)
|
||||
{
|
||||
{ //input is assumed to be utf-8, but that's not always what quake uses. on the plus side we do have our own silly markup to handle unicode (and colours etc).
|
||||
size_t olen = strlen(orig)+1;
|
||||
size_t tlen = strlen(trans)+1;
|
||||
struct poline_s *line = Z_Malloc(sizeof(*line)+olen+tlen);
|
||||
size_t tlen;
|
||||
struct poline_s *line;
|
||||
const char *s;
|
||||
char temp[64];
|
||||
|
||||
//figure out the required length for the encoding we're actually going to use
|
||||
if (com_parseutf8.ival != 1)
|
||||
{
|
||||
tlen = 0;
|
||||
for (s = trans, tlen = 0; *s; )
|
||||
{
|
||||
unsigned int err;
|
||||
unsigned int chr = utf8_decode(&err, s, &s);
|
||||
tlen += unicode_encode(temp, chr, sizeof(temp), true);
|
||||
}
|
||||
tlen++;
|
||||
}
|
||||
else
|
||||
tlen = strlen(trans)+1;
|
||||
|
||||
line = Z_Malloc(sizeof(*line)+olen+tlen);
|
||||
memcpy(line+1, orig, olen);
|
||||
orig = (const char*)(line+1);
|
||||
line->translated = (char*)(line+1)+olen;
|
||||
memcpy(line->translated, trans, tlen);
|
||||
if (com_parseutf8.ival != 1)
|
||||
{
|
||||
//do the loop again now we know we've got enough space for it.
|
||||
for (s = trans, tlen = 0; *s; )
|
||||
{
|
||||
unsigned int err;
|
||||
unsigned int chr = utf8_decode(&err, s, &s);
|
||||
tlen += unicode_encode(line->translated+tlen, chr, sizeof(temp), true);
|
||||
}
|
||||
line->translated[tlen] = 0;
|
||||
}
|
||||
else
|
||||
memcpy(line->translated, trans, tlen);
|
||||
trans = (const char*)(line->translated);
|
||||
Hash_Add(&po->hash, orig, line, &line->buck);
|
||||
|
||||
|
@ -470,7 +501,7 @@ void PO_Close(struct po_s *po)
|
|||
const char *PO_GetText(struct po_s *po, const char *msg)
|
||||
{
|
||||
struct poline_s *line;
|
||||
if (!po)
|
||||
if (!po || !msg)
|
||||
return msg;
|
||||
line = Hash_Get(&po->hash, msg);
|
||||
|
||||
|
@ -479,17 +510,20 @@ const char *PO_GetText(struct po_s *po, const char *msg)
|
|||
{
|
||||
char temp[1024];
|
||||
int i;
|
||||
Q_snprintfz(temp, sizeof(temp), "%s", msg);
|
||||
for (i = 0; temp[i]; i++)
|
||||
const char *in = msg;
|
||||
for (i = 0; *in && i < sizeof(temp)-1; )
|
||||
{
|
||||
if (temp[i] == '%')
|
||||
{
|
||||
while (temp[i] > ' ')
|
||||
i++;
|
||||
if (*in == '%')
|
||||
{ //don't mess up % formatting too much
|
||||
while (*in > ' ' && i < sizeof(temp)-1)
|
||||
temp[i++] = *in++;
|
||||
}
|
||||
else if (temp[i] >= ' ')
|
||||
temp[i] |= 0x80;
|
||||
else if (in > ' ' && *in < 128) //otherwise force any ascii chars to the 0xe0XX range so it doesn't use any freetype fonts so its instantly recognisable as bad.
|
||||
i += utf8_encode(temp+i, *in++|0xe080, sizeof(temp)-1-i);
|
||||
else
|
||||
temp[i++] = *in++; //don't mess with any c0/extended codepoints
|
||||
}
|
||||
temp[i] = 0;
|
||||
line = PO_AddText(po, msg, temp);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -5160,7 +5160,7 @@ void QCBUILTIN PF_terrain_edit(pubprogfuncs_t *prinst, struct globalvars_s *pr_g
|
|||
/*
|
||||
if (mod->type == mod_brush)
|
||||
{
|
||||
Con_Printf("that model isn't a suitable worldmodel\n");
|
||||
Con_TPrintf("that model isn't a suitable worldmodel\n");
|
||||
return;
|
||||
}
|
||||
else
|
||||
|
@ -5168,7 +5168,7 @@ void QCBUILTIN PF_terrain_edit(pubprogfuncs_t *prinst, struct globalvars_s *pr_g
|
|||
FS_CreatePath(fname, FS_GAMEONLY);
|
||||
file = FS_OpenVFS(fname, "wb", FS_GAMEONLY);
|
||||
if (!file)
|
||||
Con_Printf("unable to open %s\n", fname);
|
||||
Con_TPrintf("unable to open %s\n", fname);
|
||||
else
|
||||
{
|
||||
Terr_WriteMapFile(file, mod);
|
||||
|
@ -7968,7 +7968,7 @@ void Mod_Terrain_Save_f(void)
|
|||
FS_CreatePath(fname, FS_GAMEONLY);
|
||||
file = FS_OpenVFS(fname, "wb", FS_GAMEONLY);
|
||||
if (!file)
|
||||
Con_Printf("unable to open %s\n", fname);
|
||||
Con_TPrintf("unable to open %s\n", fname);
|
||||
else
|
||||
{
|
||||
const char *s = Mod_GetEntitiesString(mod);
|
||||
|
@ -7982,7 +7982,7 @@ void Mod_Terrain_Save_f(void)
|
|||
FS_CreatePath(fname, FS_GAMEONLY);
|
||||
file = FS_OpenVFS(fname, "wb", FS_GAMEONLY);
|
||||
if (!file)
|
||||
Con_Printf("unable to open %s\n", fname);
|
||||
Con_TPrintf("unable to open %s\n", fname);
|
||||
else
|
||||
{
|
||||
Terr_WriteMapFile(file, mod);
|
||||
|
@ -9005,12 +9005,12 @@ void Mod_Terrain_Create_f(void)
|
|||
FS_CreatePath(mname, FS_GAMEONLY);
|
||||
file = FS_OpenVFS(mname, "wb", FS_GAMEONLY);
|
||||
if (!file)
|
||||
Con_Printf("unable to open %s\n", mname);
|
||||
Con_TPrintf("unable to open %s\n", mname);
|
||||
else
|
||||
{
|
||||
Terr_WriteMapFile(file, &mod);
|
||||
VFS_CLOSE(file);
|
||||
Con_Printf("Wrote %s\n", mname);
|
||||
Con_TPrintf("Wrote %s\n", mname);
|
||||
FS_FlushFSHashWritten(mname);
|
||||
}
|
||||
Mod_SetEntitiesString(&mod, NULL, false);
|
||||
|
|
|
@ -1931,7 +1931,7 @@ forcequake:
|
|||
else if (c >= 0x80)
|
||||
{
|
||||
//FIXME: spit it out as ^{xxxxxx} instead
|
||||
QCC_PR_ParseWarning(WARN_NOTUTF8, "Cannot convert character to quake's charset");
|
||||
QCC_PR_ParseWarning(WARN_NOTUTF8, "Cannot convert codepoint %#x to quake's charset", c);
|
||||
}
|
||||
|
||||
forcebyte:
|
||||
|
|
|
@ -948,7 +948,7 @@ void SV_Map_f (void)
|
|||
!strcmp(cmd, "map") && !startspot &&
|
||||
!isDedicated && Cmd_ExecLevel==RESTRICT_LOCAL && !strchr(level, '.'))
|
||||
{
|
||||
Menu_Prompt(SV_Map_DownloadPrompted, Z_StrDup(level), va("Download map %s from "S_COLOR_BLUE "%s" S_COLOR_WHITE"?", level, cl_download_mapsrc.string), "Download", NULL, "Cancel", true);
|
||||
Menu_Prompt(SV_Map_DownloadPrompted, Z_StrDup(level), va(localtext("Download map %s from "S_COLOR_BLUE "%s" S_COLOR_WHITE"?"), level, cl_download_mapsrc.string), "Download", NULL, "Cancel", true);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
@ -2245,7 +2245,7 @@ static void SV_Status_f (void)
|
|||
s = "direct";
|
||||
else
|
||||
s = "private";
|
||||
Con_TPrintf("public : %s\n", s);
|
||||
Con_TPrintf("public : %s\n", localtext(s));
|
||||
|
||||
switch(svs.gametype)
|
||||
{
|
||||
|
@ -2270,29 +2270,29 @@ static void SV_Status_f (void)
|
|||
#endif
|
||||
#ifdef HAVE_DTLS
|
||||
if (net_enable_dtls.ival >= 3)
|
||||
Con_Printf(" ^[DTLS-only\\tip\\Insecure clients (those without support for DTLS) will be barred from connecting.^]");
|
||||
Con_TPrintf(" ^[DTLS-only\\tip\\Insecure clients (those without support for DTLS) will be barred from connecting.^]");
|
||||
else if (net_enable_dtls.ival)
|
||||
Con_Printf(" ^[DTLS\\tip\\Clients may optionally connect via DTLS for added security^]");
|
||||
Con_TPrintf(" ^[DTLS\\tip\\Clients may optionally connect via DTLS for added security^]");
|
||||
#endif
|
||||
Con_Printf("\n");
|
||||
#if defined(TCPCONNECT) && !defined(CLIENTONLY)
|
||||
Con_TPrintf("tcp services :");
|
||||
#if defined(HAVE_SSL)
|
||||
if (net_enable_tls.ival)
|
||||
Con_Printf(" ^[TLS\\tip\\Clients are able to connect with Transport Layer Security for the other services, allowing for the use of tls://, wss:// or https:// schemes when their underlaying protocol is enabled.^]");
|
||||
Con_TPrintf(" ^[TLS\\tip\\Clients are able to connect with Transport Layer Security for the other services, allowing for the use of tls://, wss:// or https:// schemes when their underlaying protocol is enabled.^]");
|
||||
#endif
|
||||
#ifdef HAVE_HTTPSV
|
||||
if (net_enable_http.ival)
|
||||
Con_Printf(" ^[HTTP\\tip\\This server also acts as a web server. This might be useful to allow hosting demos or stats.^]");
|
||||
Con_TPrintf(" ^[HTTP\\tip\\This server also acts as a web server. This might be useful to allow hosting demos or stats.^]");
|
||||
if (net_enable_rtcbroker.ival)
|
||||
Con_Printf(" ^[RTC\\tip\\This server is set up to act as a webrtc broker, allowing clients+servers to locate each other instead of playing on this server.^]");
|
||||
Con_TPrintf(" ^[RTC\\tip\\This server is set up to act as a webrtc broker, allowing clients+servers to locate each other instead of playing on this server.^]");
|
||||
if (net_enable_websockets.ival)
|
||||
Con_Printf(" ^[WebSocket\\tip\\Clients can use the ws:// or possibly wss:// schemes to connect to this server, potentially from browser ports. This may be laggy.^]");
|
||||
Con_TPrintf(" ^[WebSocket\\tip\\Clients can use the ws:// or possibly wss:// schemes to connect to this server, potentially from browser ports. This may be laggy.^]");
|
||||
#endif
|
||||
if (net_enable_qizmo.ival)
|
||||
Con_Printf(" ^[Qizmo\\tip\\Compatible with the tcp connection feature of qizmo, equivelent to 'connect tcp://ip:port' in FTE.^]");
|
||||
Con_TPrintf(" ^[Qizmo\\tip\\Compatible with the tcp connection feature of qizmo, equivelent to 'connect tcp://ip:port' in FTE.^]");
|
||||
if (net_enable_qtv.ival)
|
||||
Con_Printf(" ^[QTV\\tip\\Allows receiving streamed mvd data from this server.^]");
|
||||
Con_TPrintf(" ^[QTV\\tip\\Allows receiving streamed mvd data from this server.^]");
|
||||
Con_Printf("\n");
|
||||
#endif
|
||||
break;
|
||||
|
@ -2352,7 +2352,7 @@ static void SV_Status_f (void)
|
|||
{
|
||||
// most remote clients are 40 columns
|
||||
// 0123456789012345678901234567890123456789
|
||||
Con_Printf ( "name userid frags\n"
|
||||
Con_TPrintf ( "name userid frags\n"
|
||||
" address rate ping drop\n"
|
||||
" ---------------- ---- ---- -----\n");
|
||||
for (i=0,cl=svs.clients ; i<svs.allocated_client_slots ; i++,cl++)
|
||||
|
@ -2386,12 +2386,12 @@ static void SV_Status_f (void)
|
|||
Con_Printf (" %-16.16s", s);
|
||||
if (cl->state == cs_connected)
|
||||
{
|
||||
Con_Printf ("CONNECTING\n");
|
||||
Con_TPrintf ("CONNECTING\n");
|
||||
continue;
|
||||
}
|
||||
if (cl->state == cs_zombie || cl->state == cs_loadzombie)
|
||||
{
|
||||
Con_Printf ("ZOMBIE\n");
|
||||
Con_TPrintf ("ZOMBIE\n");
|
||||
continue;
|
||||
}
|
||||
Con_Printf ("%4i %4i %5.2f\n"
|
||||
|
@ -2654,7 +2654,7 @@ void SV_Serverinfo_f (void)
|
|||
|
||||
return;
|
||||
}
|
||||
Con_Printf ("Can't set * keys\n");
|
||||
Con_TPrintf ("Can't set * keys\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -2664,11 +2664,11 @@ void SV_Serverinfo_f (void)
|
|||
char *data = FS_MallocFile(Cmd_Argv(2), FS_GAME, &fsize);
|
||||
if (!data)
|
||||
{
|
||||
Con_Printf ("Unable to read %s\n", Cmd_Argv(2));
|
||||
Con_TPrintf ("Unable to read %s\n", Cmd_Argv(2));
|
||||
return;
|
||||
}
|
||||
if (fsize > 64*1024*1024)
|
||||
Con_Printf ("File is over 64mb\n");
|
||||
Con_TPrintf ("File is over 64mb\n");
|
||||
else
|
||||
InfoBuf_SetStarBlobKey(&svs.info, Cmd_Argv(1), data, fsize);
|
||||
FS_FreeFile(data);
|
||||
|
@ -2731,7 +2731,7 @@ static void SV_Localinfo_f (void)
|
|||
InfoBuf_Clear(&svs.localinfo, false);
|
||||
return;
|
||||
}
|
||||
Con_Printf ("Can't set * keys\n");
|
||||
Con_TPrintf ("Can't set * keys\n");
|
||||
return;
|
||||
}
|
||||
old = InfoBuf_ValueForKey(&svs.localinfo, Cmd_Argv(1));
|
||||
|
@ -2794,7 +2794,7 @@ void SV_User_f (void)
|
|||
|
||||
while((cl = SV_GetClientForString(Cmd_Argv(1), &clnum)))
|
||||
{
|
||||
Con_Printf("Userinfo (%i):\n", cl->userid);
|
||||
Con_TPrintf("Userinfo (%i):\n", cl->userid);
|
||||
InfoBuf_Print (&cl->userinfo, " ");
|
||||
Con_Printf("[%u/%i, %u/%i]\n", (unsigned)cl->userinfo.totalsize, sv_userinfo_bytelimit.ival, (unsigned)cl->userinfo.numkeys, sv_userinfo_keylimit.ival);
|
||||
switch(cl->protocol)
|
||||
|
|
|
@ -29,6 +29,15 @@ void VARGS Con_Printf (const char *fmt, ...)
|
|||
va_end (argptr);
|
||||
fflush(stderr);
|
||||
}
|
||||
void VARGS Con_TPrintf (const char *fmt, ...)
|
||||
{
|
||||
va_list argptr;
|
||||
|
||||
va_start (argptr,fmt);
|
||||
vfprintf (stderr,fmt,argptr);
|
||||
va_end (argptr);
|
||||
fflush(stderr);
|
||||
}
|
||||
void VARGS Con_DPrintf (const char *fmt, ...)
|
||||
{
|
||||
va_list argptr;
|
||||
|
|
Loading…
Reference in a new issue