]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/xonotic/playermodel.c
get rid of a warning
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / playermodel.c
index 6f4851c99460046744f5e045ec9205004dd13c75..bbef3a6b1c2d6acdeb245a401e18f3d4b1afa00c 100644 (file)
@@ -42,15 +42,18 @@ entity makeXonoticPlayerModelSelector()
 #define BUFMODELS_DESC 4
 #define BUFMODELS_COUNT 5
 
-void configureXonoticPlayerModelSelectorXonoticPlayerModelSelector(entity me)
+void XonoticPlayerModelSelector_configureXonoticPlayerModelSelector(entity me)
 {
        float sortbuf, glob, i;
        string fn;
 
+       glob = search_begin(get_model_datafilename(string_null, -1, "txt"), TRUE, TRUE);
+       if (glob < 0)
+               return;
+
        me.configureXonoticImage(me, string_null, -1);
 
        sortbuf = buf_create();
-       glob = search_begin(get_model_datafilename(string_null, -1, "txt"), TRUE, TRUE);
        for(i = 0; i < search_getsize(glob); ++i)
        {
                // select model #i!
@@ -85,34 +88,35 @@ void configureXonoticPlayerModelSelectorXonoticPlayerModelSelector(entity me)
        }
        buf_del(sortbuf);
        get_model_parameters(string_null, 0);
-       me.loadCvars(me);
+       me.loadCvars(me); // this will select the initial model, depending on the current cvars
+       me.go(me, 0); // this will set the vars for the selected model
 }
-void destroyXonoticPlayerModelSelector(entity me)
+void XonoticPlayerModelSelector_destroy(entity me)
 {
        buf_del(me.bufModels);
        me.bufModels = -1;
 }
 
-void loadCvarsXonoticPlayerModelSelector(entity me)
+void XonoticPlayerModelSelector_loadCvars(entity me)
 {
+       string skin, modelname;
        float i;
-       if(me.currentModel)
-               strunzone(me.currentModel);
-       me.currentSkin = cvar("_cl_playerskin");
-       me.currentModel = strzone(cvar_string("_cl_playermodel"));
+
+       skin = cvar_string("_cl_playerskin");
+       modelname = cvar_string("_cl_playermodel");
+
        for(i = 0; i < me.numModels; ++i)
        {
-               if(bufstr_get(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_MODEL) == me.currentModel)
-               if(bufstr_get(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_SKIN) == ftos(me.currentSkin))
+               if(bufstr_get(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_MODEL) == modelname)
+               if(bufstr_get(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_SKIN) == skin)
                        break;
        }
        if(i >= me.numModels) // fail
                i = 0;
        me.idxModels = i;
-       me.go(me, 0); // this will set the other vars for currentSkin and currentModel
 }
 
-void goXonoticPlayerModelSelector(entity me, float d)
+void XonoticPlayerModelSelector_go(entity me, float d)
 {
        me.idxModels = mod(me.idxModels + d + me.numModels, me.numModels);
 
@@ -139,30 +143,39 @@ void goXonoticPlayerModelSelector(entity me, float d)
 
 void PlayerModelSelector_Next_Click(entity btn, entity me)
 {
+       if (me.numModels <= 0)
+               return;
        me.go(me, +1);
        me.saveCvars(me);
 }
 
 void PlayerModelSelector_Prev_Click(entity btn, entity me)
 {
+       if (me.numModels <= 0)
+               return;
        me.go(me, -1);
        me.saveCvars(me);
 }
 
-void saveCvarsXonoticPlayerModelSelector(entity me)
+void XonoticPlayerModelSelector_saveCvars(entity me)
 {
        // we can't immediately apply here because of flood control
        cvar_set("_cl_playermodel", me.currentModel);
        cvar_set("_cl_playerskin", ftos(me.currentSkin));
 }
 
-void drawXonoticPlayerModelSelector(entity me)
+void XonoticPlayerModelSelector_draw(entity me)
 {
        float i, n;
        vector o;
 
-       SUPER(XonoticPlayerModelSelector).draw(me);
+       if (me.numModels <= 0)
+       {
+               draw_CenterText('0.5 0.5 0', "<no model found>", me.realFontSize, '1 1 1', 0.6, FALSE);
+               return;
+       }
 
+       SUPER(XonoticPlayerModelSelector).draw(me);
        // draw text on the image, handle \n in the description
        draw_CenterText('0.5 0 0', me.currentModelTitle, me.realFontSize * (me.titleFontSize / me.fontSize), SKINCOLOR_MODELTITLE, SKINALPHA_MODELTITLE, FALSE);
 
@@ -174,7 +187,7 @@ void drawXonoticPlayerModelSelector(entity me)
        }
 }
 
-void resizeNotifyXonoticPlayerModelSelector(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
+void XonoticPlayerModelSelector_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
 {
        SUPER(XonoticPlayerModelSelector).resizeNotify(me, relOrigin, relSize, absOrigin, absSize);
        me.realFontSize_y = me.fontSize / absSize_y;