Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
playermodel.qc File Reference
#include "playermodel.qh"
Include dependency graph for playermodel.qc:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define XONVOTE186   1

Functions

entity makeXonoticPlayerModelSelector ()
void PlayerModelSelector_Next_Click (entity btn, entity me)
void PlayerModelSelector_Prev_Click (entity btn, entity me)
void XonoticPlayerModelSelector_destroy (entity me)
void XonoticPlayerModelSelector_draw (entity me)
void XonoticPlayerModelSelector_go (entity me, float d)
void XonoticPlayerModelSelector_loadCvars (entity me)
void XonoticPlayerModelSelector_loadModels (entity me)
void XonoticPlayerModelSelector_resizeNotify (entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
void XonoticPlayerModelSelector_saveCvars (entity me)
void XonoticPlayerModelSelector_showNotify (entity me)

Variables

const float BUFMODELS_COUNT = 5
const float BUFMODELS_DESC = 4
const float BUFMODELS_IMAGE = 1
const float BUFMODELS_MODEL = 2
const float BUFMODELS_SKIN = 3
const float BUFMODELS_TITLE = 0

Macro Definition Documentation

◆ XONVOTE186

#define XONVOTE186   1

Definition at line 18 of file playermodel.qc.

Function Documentation

◆ makeXonoticPlayerModelSelector()

entity makeXonoticPlayerModelSelector ( )

Definition at line 3 of file playermodel.qc.

4{
5 entity me;
7 me.configureXonoticImage(me, string_null, -1);
8 return me;
9}
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
string string_null
Definition nil.qh:9
#define NEW(cname,...)
Definition oo.qh:117

References entity(), NEW, and string_null.

Referenced by XonoticProfileTab_fill().

◆ PlayerModelSelector_Next_Click()

void PlayerModelSelector_Next_Click ( entity btn,
entity me )

Definition at line 126 of file playermodel.qc.

127{
128 if (me.numModels <= 0)
129 return;
130 me.go(me, +1);
131 me.saveCvars(me);
132}

References entity().

Referenced by XonoticProfileTab_fill().

◆ PlayerModelSelector_Prev_Click()

void PlayerModelSelector_Prev_Click ( entity btn,
entity me )

Definition at line 134 of file playermodel.qc.

135{
136 if (me.numModels <= 0)
137 return;
138 me.go(me, -1);
139 me.saveCvars(me);
140}

References entity().

Referenced by XonoticProfileTab_fill().

◆ XonoticPlayerModelSelector_destroy()

void XonoticPlayerModelSelector_destroy ( entity me)

Definition at line 79 of file playermodel.qc.

80{
81 if(me.bufModels >= 0)
82 {
83 buf_del(me.bufModels);
84 me.bufModels = -1;
85 }
86}

References entity().

◆ XonoticPlayerModelSelector_draw()

void XonoticPlayerModelSelector_draw ( entity me)

Definition at line 149 of file playermodel.qc.

150{
151 float i, n;
152 vector o;
153
154 if (me.numModels <= 0)
155 {
156 draw_CenterText('0.5 0.5 0', _("<no model found>"), me.realFontSize, SKINCOLOR_TEXT, 0.6, false);
157 return;
158 }
159
161 // draw text on the image, handle \n in the description
162
164
165#if XONVOTE186 // (nyov) lower name display looks better when there is no description text
166 draw_CenterText('0.5 0.8 0', me.currentModelTitle, me.realFontSize * (me.titleFontSize / me.fontSize), SKINCOLOR_MODELTITLE, SKINALPHA_MODELTITLE, false);
167#else
168 draw_CenterText('0.5 0 0', me.currentModelTitle, me.realFontSize * (me.titleFontSize / me.fontSize), SKINCOLOR_MODELTITLE, SKINALPHA_MODELTITLE, false);
169#endif
170
172
173 o = '0.5 1 0' - eY * me.realFontSize.y * ((n = tokenizebyseparator(me.currentModelDescription, "\n")) + 0.5);
174 for(i = 0; i < n; ++i)
175 {
176 draw_CenterText(o, argv(i), me.realFontSize, SKINCOLOR_TEXT, 1, false);
177 o += eY * me.realFontSize.y;
178 }
179}
#define draw_beginBoldFont()
Definition draw.qh:4
#define draw_endBoldFont()
Definition draw.qh:5
#define tokenizebyseparator
void draw_CenterText(vector theOrigin, string theText, vector theSize, vector theColor, float theAlpha, float ICanHasKallerz)
Definition draw.qc:298
string argv(float n)
#define SUPER(cname)
Definition oo.qh:231
vector
Definition self.qh:92
const vector eY
Definition vector.qh:45

References argv(), draw_beginBoldFont, draw_CenterText(), draw_endBoldFont, entity(), eY, SUPER, tokenizebyseparator, and vector.

◆ XonoticPlayerModelSelector_go()

void XonoticPlayerModelSelector_go ( entity me,
float d )

Definition at line 107 of file playermodel.qc.

108{
109 me.idxModels = mod(me.idxModels + d + me.numModels, me.numModels);
110
111 // select model #i!
112 strcpy(me.currentModelTitle, bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_TITLE));
113 strcpy(me.currentModelImage, bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_IMAGE));
114 me.currentSkin = stof(bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_SKIN));
115 strcpy(me.currentModel, bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_MODEL));
116 strcpy(me.currentModelDescription, bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_DESC));
117
118 // fix the image
119 if(draw_PictureSize(me.currentModelImage) == '0 0 0')
120 me.src = "nopreview_player";
121 else
122 me.src = me.currentModelImage;
123 me.updateAspect(me);
124}
vector draw_PictureSize(string pic)
Definition draw.qc:80
float mod(float val, float m)
float stof(string val,...)
const float BUFMODELS_DESC
const float BUFMODELS_COUNT
const float BUFMODELS_TITLE
const float BUFMODELS_IMAGE
const float BUFMODELS_SKIN
const float BUFMODELS_MODEL
#define strcpy(this, s)
Definition string.qh:52

References BUFMODELS_COUNT, BUFMODELS_DESC, BUFMODELS_IMAGE, BUFMODELS_MODEL, BUFMODELS_SKIN, BUFMODELS_TITLE, draw_PictureSize(), entity(), mod(), stof(), and strcpy.

◆ XonoticPlayerModelSelector_loadCvars()

void XonoticPlayerModelSelector_loadCvars ( entity me)

Definition at line 88 of file playermodel.qc.

89{
90 string skin, modelname;
91 float i;
92
93 skin = cvar_string("_cl_playerskin");
94 modelname = cvar_string("_cl_playermodel");
95
96 for(i = 0; i < me.numModels; ++i)
97 {
98 if(bufstr_get(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_MODEL) == modelname)
99 if(bufstr_get(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_SKIN) == skin)
100 break;
101 }
102 if(i >= me.numModels) // fail
103 i = 0;
104 me.idxModels = i;
105}
float skin
const string cvar_string(string name)

References BUFMODELS_COUNT, BUFMODELS_MODEL, BUFMODELS_SKIN, cvar_string(), entity(), and skin.

◆ XonoticPlayerModelSelector_loadModels()

void XonoticPlayerModelSelector_loadModels ( entity me)

Definition at line 20 of file playermodel.qc.

21{
22 int i;
23 string fn;
24
25 float glob = search_begin(get_model_datafilename(string_null, -1, "txt"), true, true);
26 if (glob < 0)
27 return;
28
29 float sortbuf = buf_create();
30 for(i = 0; i < search_getsize(glob); ++i)
31 {
32 // select model #i!
33 fn = search_getfilename(glob, i);
34 if(!get_model_parameters(fn, -1))
35 continue;
37 continue;
38 bufstr_add(sortbuf, sprintf("%-128s%s", get_model_parameters_name, fn), 1);
39 }
40 search_end(glob);
41 buf_sort(sortbuf, 128, 0);
42 me.numModels = buf_getsize(sortbuf);
43 me.bufModels = buf_create();
44 for(i = 0; i < me.numModels; ++i)
45 {
46 fn = substring(bufstr_get(sortbuf, i), 128, -1);
47 if(!get_model_parameters(fn, -1))
48 error("But it JUST worked!");
50 continue;
56#if XONVOTE186
59#else
68#endif
69 while(substring(get_model_parameters_desc, -1, 1) == "\n")
71 bufstr_set(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_DESC, get_model_parameters_desc);
72 }
73 buf_del(sortbuf);
75 me.loadCvars(me); // this will select the initial model, depending on the current cvars
76 me.go(me, 0); // this will set the vars for the selected model
77}
string get_model_datafilename(string m, float sk, string fil)
Definition util.qc:1381
float get_model_parameters(string m, float sk)
Definition util.qc:1394
float get_model_parameters_weight
Definition util.qh:182
string get_model_parameters_sex
Definition util.qh:181
float get_model_parameters_modelskin
Definition util.qh:178
string get_model_parameters_name
Definition util.qh:179
string get_model_parameters_description
Definition util.qh:185
bool get_model_parameters_hidden
Definition util.qh:184
string get_model_parameters_modelname
Definition util.qh:177
float get_model_parameters_age
Definition util.qh:183
string get_model_parameters_desc
Definition util.qh:192
#define buf_create
string substring(string s, float start, float length)
string search_getfilename(float handle, float num)
float search_getsize(float handle)
float search_begin(string pattern, float caseinsensitive, float quiet)
string ftos(float f)
void search_end(float handle)
strcat(_("^F4Countdown stopped!"), "\n^BG", _("Teams are too unbalanced."))
#define error
Definition pre.qh:6

References buf_create, BUFMODELS_COUNT, BUFMODELS_DESC, BUFMODELS_IMAGE, BUFMODELS_MODEL, BUFMODELS_SKIN, BUFMODELS_TITLE, entity(), error, ftos(), get_model_datafilename(), get_model_parameters(), get_model_parameters_age, get_model_parameters_desc, get_model_parameters_description, get_model_parameters_hidden, get_model_parameters_modelname, get_model_parameters_modelskin, get_model_parameters_name, get_model_parameters_sex, get_model_parameters_weight, search_begin(), search_end(), search_getfilename(), search_getsize(), strcat(), string_null, and substring().

◆ XonoticPlayerModelSelector_resizeNotify()

void XonoticPlayerModelSelector_resizeNotify ( entity me,
vector relOrigin,
vector relSize,
vector absOrigin,
vector absSize )

Definition at line 181 of file playermodel.qc.

182{
183 SUPER(XonoticPlayerModelSelector).resizeNotify(me, relOrigin, relSize, absOrigin, absSize);
184 me.realFontSize_y = me.fontSize / absSize.y;
185 me.realFontSize_x = me.fontSize / absSize.x;
186}

References entity(), SUPER, and vector.

◆ XonoticPlayerModelSelector_saveCvars()

void XonoticPlayerModelSelector_saveCvars ( entity me)

Definition at line 142 of file playermodel.qc.

143{
144 // we can't immediately apply here because of flood control
145 cvar_set("_cl_playermodel", me.currentModel);
146 cvar_set("_cl_playerskin", ftos(me.currentSkin));
147}
void cvar_set(string name, string value)

References cvar_set(), entity(), and ftos().

◆ XonoticPlayerModelSelector_showNotify()

void XonoticPlayerModelSelector_showNotify ( entity me)

Definition at line 188 of file playermodel.qc.

189{
190 // Reinitialize self.
191 me.destroy(me);
192 me.loadModels(me);
193}

References entity().

Variable Documentation

◆ BUFMODELS_COUNT

◆ BUFMODELS_DESC

const float BUFMODELS_DESC = 4

◆ BUFMODELS_IMAGE

const float BUFMODELS_IMAGE = 1

◆ BUFMODELS_MODEL

◆ BUFMODELS_SKIN

◆ BUFMODELS_TITLE

const float BUFMODELS_TITLE = 0