]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/xonotic/languagelist.c
Merge remote-tracking branch 'origin/master' into terencehill/menu_focus_stuff
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / languagelist.c
index 510c7a9ea5e38a6b34f23cd644b280652304e16b..5be639a07559ec27058539e8c838b3526f8e8d43 100644 (file)
@@ -26,6 +26,8 @@ CLASS(XonoticLanguageList) EXTENDS(XonoticListBox)
        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();
@@ -83,7 +85,7 @@ void XonoticLanguageList_loadCvars(entity me)
 {
        string s;
        float i, n;
-       s = cvar_string("prvm_language");
+       s = cvar_string("_menu_prvm_language");
        n = me.nItems;
 
        // default to English
@@ -105,17 +107,18 @@ void XonoticLanguageList_loadCvars(entity me)
                        break;
                }
        }
+
+       // save it off (turning anything unknown into "en")
+       me.saveCvars(me);
 }
 
 void XonoticLanguageList_saveCvars(entity me)
 {
-       cvar_set("prvm_language", me.languageParameter(me, me.selectedItem, LANGPARM_ID));
+       cvar_set("_menu_prvm_language", me.languageParameter(me, me.selectedItem, LANGPARM_ID));
 }
 
 void XonoticLanguageList_clickListBoxItem(entity me, float i, vector where)
 {
-       if(me.name != "languageselector")
-               return;
        if(i == me.lastClickedLanguage)
                if(time < me.lastClickedTime + 0.3)
                {
@@ -129,8 +132,6 @@ void XonoticLanguageList_clickListBoxItem(entity me, float i, vector where)
 
 float XonoticLanguageList_keyDown(entity me, float scan, float ascii, float shift)
 {
-       if(me.name != "languageselector")
-               return SUPER(XonoticLanguageList).keyDown(me, scan, ascii, shift);
        if(scan == K_ENTER || scan == K_KP_ENTER) {
                me.setLanguage(me);
                return 1;
@@ -152,6 +153,7 @@ void XonoticLanguageList_getLanguages(entity me)
        buf = buf_create();
 
        fh = fopen("languages.txt", FILE_READ);
+       i = 0;
        while((s = fgets(fh)))
        {
                n = tokenize_console(s);
@@ -170,9 +172,7 @@ void XonoticLanguageList_getLanguages(entity me)
 
 void XonoticLanguageList_setLanguage(entity me)
 {
-       if(me.name != "languageselector")
-               return;
-       localcmd("\nmenu_restart\ntogglemenu\ndefer 0.1 \"menu_cmd languageselect\"\n");
+       localcmd(sprintf("\n%s\n", me.doubleClickCommand));
 }
 
 string XonoticLanguageList_languageParameter(entity me, float i, float key)