X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fmenu%2Fxonotic%2Fplayermodel.c;h=bbef3a6b1c2d6acdeb245a401e18f3d4b1afa00c;hb=e282b2e71118249471dde56e8f2e5b0368fe139e;hp=27d5721afd3c6d432e50fc50e15049989c0a7548;hpb=7b39a3868ca578191bc72e71873a5456517ebab6;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/menu/xonotic/playermodel.c b/qcsrc/menu/xonotic/playermodel.c index 27d5721af..bbef3a6b1 100644 --- a/qcsrc/menu/xonotic/playermodel.c +++ b/qcsrc/menu/xonotic/playermodel.c @@ -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; - drawImage(me); + if (me.numModels <= 0) + { + draw_CenterText('0.5 0.5 0', "", 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,9 +187,9 @@ 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) { - resizeNotifyImage(me, relOrigin, relSize, absOrigin, absSize); + SUPER(XonoticPlayerModelSelector).resizeNotify(me, relOrigin, relSize, absOrigin, absSize); me.realFontSize_y = me.fontSize / absSize_y; me.realFontSize_x = me.fontSize / absSize_x; }