#include "xonotic/dialog_settings_effects.c"
#include "xonotic/dialog_settings_audio.c"
#include "xonotic/dialog_settings_user.c"
+#include "xonotic/dialog_settings_user_languagewarning.c"
#include "xonotic/dialog_settings_misc.c"
#include "xonotic/dialog_multiplayer.c"
#include "xonotic/dialog_multiplayer_playersetup.c"
return 0;
}
+void firstRun_setLanguage(entity me)
+{
+ if(prvm_language != cvar_string("_menu_prvm_language"))
+ localcmd("\nprvm_language \"$_menu_prvm_language\"; saveconfig; menu_restart\n");
+}
+
void XonoticFirstRunDialog_fill(entity me)
{
entity e;
me.TR(me);
me.TD(me, 6, 2, e = makeXonoticLanguageList());
e.name = "languageselector_firstrun";
- e.doubleClickCommand = "prvm_language \"$_menu_prvm_language\"; saveconfig; menu_restart";
+ e.setLanguage = firstRun_setLanguage;
me.TR(me);
me.TR(me);
--- /dev/null
+#ifdef INTERFACE
+CLASS(XonoticLanguageWarningDialog) EXTENDS(XonoticDialog)
+ METHOD(XonoticLanguageWarningDialog, fill, void(entity)) // to be overridden by user to fill the dialog with controls
+ ATTRIB(XonoticLanguageWarningDialog, title, string, _("Warning"))
+ ATTRIB(XonoticLanguageWarningDialog, color, vector, SKINCOLOR_DIALOG_HUDCONFIRM)
+ ATTRIB(XonoticLanguageWarningDialog, intendedWidth, float, 0.6)
+ ATTRIB(XonoticLanguageWarningDialog, rows, float, 5)
+ ATTRIB(XonoticLanguageWarningDialog, columns, float, 4)
+ENDCLASS(XonoticLanguageWarningDialog)
+#endif
+
+#ifdef IMPLEMENTATION
+void XonoticLanguageWarningDialog_fill(entity me)
+{
+ entity e;
+ me.TR(me);
+ me.TD(me, 1, 4, e = makeXonoticTextLabel(0, _("While connected language changes will be applied only to the menu,")));
+ me.TR(me);
+ me.TD(me, 1, 4, e = makeXonoticTextLabel(0, _("full language changes will take effect starting from the next game")));
+ me.TR(me);
+ me.TR(me);
+ // reconnect command doesn't work properly, otherwise it would replace disconnect
+ me.TD(me, 1, 2, e = makeXonoticCommandButton(_("Disconnect now"), '0 0 0', "disconnect", 0));
+ me.TD(me, 1, 2, e = makeXonoticCommandButton(_("Switch language"), '0 0 0', "prvm_language \"$_menu_prvm_language\"; menu_restart; menu_cmd languageselect", 0));
+}
+#endif
METHOD(XonoticLanguageList, languageParameter, string(entity, float, float))
ATTRIB(XonoticLanguageList, name, string, "languageselector") // change this to make it noninteractive (for first run dialog)
-
- ATTRIB(XonoticLanguageList, doubleClickCommand, string, "prvm_language \"$_menu_prvm_language\"\nmenu_restart\nmenu_cmd languageselect")
ENDCLASS(XonoticLanguageList)
entity makeXonoticLanguageList();
void XonoticLanguageList_setLanguage(entity me)
{
- localcmd(sprintf("\n%s\n", me.doubleClickCommand));
+ if(prvm_language != cvar_string("_menu_prvm_language"))
+ {
+ if(!(gamestatus & GAME_CONNECTED))
+ localcmd("\nprvm_language \"$_menu_prvm_language\"; menu_restart; menu_cmd languageselect\n");
+ else
+ DialogOpenButton_Click(me, main.languageWarningDialog);
+ }
}
string XonoticLanguageList_languageParameter(entity me, float i, float key)
ATTRIB(MainWindow, crosshairDialog, entity, NULL)
ATTRIB(MainWindow, hudDialog, entity, NULL)
ATTRIB(MainWindow, hudconfirmDialog, entity, NULL)
+ ATTRIB(MainWindow, languageWarningDialog, entity, NULL)
ATTRIB(MainWindow, mainNexposee, entity, NULL)
ATTRIB(MainWindow, fadedAlpha, float, SKINALPHA_BEHIND)
ATTRIB(MainWindow, dialogToShow, entity, NULL)
i.configureDialog(i);
me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+ me.languageWarningDialog = i = spawnXonoticLanguageWarningDialog();
+ i.configureDialog(i);
+ me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+
// dialog used by singleplayer
me.winnerDialog = i = spawnXonoticWinnerDialog();