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 17 of file playermodel.qc.

Function Documentation

◆ makeXonoticPlayerModelSelector()

entity makeXonoticPlayerModelSelector ( )

Definition at line 3 of file playermodel.qc.

4{
6 me.configureXonoticImage(me, string_null, -1);
7 return me;
8}
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 125 of file playermodel.qc.

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

References entity().

Referenced by XonoticProfileTab_fill().

◆ PlayerModelSelector_Prev_Click()

void PlayerModelSelector_Prev_Click ( entity btn,
entity me )

Definition at line 133 of file playermodel.qc.

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

References entity().

Referenced by XonoticProfileTab_fill().

◆ XonoticPlayerModelSelector_destroy()

void XonoticPlayerModelSelector_destroy ( entity me)

Definition at line 78 of file playermodel.qc.

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

References entity().

◆ XonoticPlayerModelSelector_draw()

void XonoticPlayerModelSelector_draw ( entity me)

Definition at line 148 of file playermodel.qc.

149{
150 float i, n;
151 vector o;
152
153 if (me.numModels <= 0)
154 {
155 draw_CenterText('0.5 0.5 0', _("<no model found>"), me.realFontSize, SKINCOLOR_TEXT, 0.6, false);
156 return;
157 }
158
160 // draw text on the image, handle \n in the description
161
163
164#if XONVOTE186 // (nyov) lower name display looks better when there is no description text
165 draw_CenterText('0.5 0.8 0', me.currentModelTitle, me.realFontSize * (me.titleFontSize / me.fontSize), SKINCOLOR_MODELTITLE, SKINALPHA_MODELTITLE, false);
166#else
167 draw_CenterText('0.5 0 0', me.currentModelTitle, me.realFontSize * (me.titleFontSize / me.fontSize), SKINCOLOR_MODELTITLE, SKINALPHA_MODELTITLE, false);
168#endif
169
171
172 o = '0.5 1 0' - eY * me.realFontSize.y * ((n = tokenizebyseparator(me.currentModelDescription, "\n")) + 0.5);
173 for(i = 0; i < n; ++i)
174 {
175 draw_CenterText(o, argv(i), me.realFontSize, SKINCOLOR_TEXT, 1, false);
176 o += eY * me.realFontSize.y;
177 }
178}
#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 106 of file playermodel.qc.

107{
108 me.idxModels = mod(me.idxModels + d + me.numModels, me.numModels);
109
110 // select model #i!
111 strcpy(me.currentModelTitle, bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_TITLE));
112 strcpy(me.currentModelImage, bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_IMAGE));
113 me.currentSkin = stof(bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_SKIN));
114 strcpy(me.currentModel, bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_MODEL));
115 strcpy(me.currentModelDescription, bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_DESC));
116
117 // fix the image
118 if(draw_PictureSize(me.currentModelImage) == '0 0 0')
119 me.src = "nopreview_player";
120 else
121 me.src = me.currentModelImage;
122 me.updateAspect(me);
123}
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 87 of file playermodel.qc.

88{
89 string skin, modelname;
90 float i;
91
92 skin = cvar_string("_cl_playerskin");
93 modelname = cvar_string("_cl_playermodel");
94
95 for(i = 0; i < me.numModels; ++i)
96 {
97 if(bufstr_get(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_MODEL) == modelname)
98 if(bufstr_get(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_SKIN) == skin)
99 break;
100 }
101 if(i >= me.numModels) // fail
102 i = 0;
103 me.idxModels = i;
104}
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 19 of file playermodel.qc.

20{
21 int i;
22 string fn;
23
24 float glob = search_begin(get_model_datafilename(string_null, -1, "txt"), true, true);
25 if (glob < 0)
26 return;
27
28 float sortbuf = buf_create();
29 for(i = 0; i < search_getsize(glob); ++i)
30 {
31 // select model #i!
32 fn = search_getfilename(glob, i);
33 if(!get_model_parameters(fn, -1))
34 continue;
36 continue;
37 bufstr_add(sortbuf, sprintf("%-128s%s", get_model_parameters_name, fn), 1);
38 }
39 search_end(glob);
40 buf_sort(sortbuf, 128, 0);
41 me.numModels = buf_getsize(sortbuf);
42 me.bufModels = buf_create();
43 for(i = 0; i < me.numModels; ++i)
44 {
45 fn = substring(bufstr_get(sortbuf, i), 128, -1);
46 if(!get_model_parameters(fn, -1))
47 error("But it JUST worked!");
49 continue;
55#if XONVOTE186
58#else
67#endif
68 while(substring(get_model_parameters_desc, -1, 1) == "\n")
70 bufstr_set(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_DESC, get_model_parameters_desc);
71 }
72 buf_del(sortbuf);
74 me.loadCvars(me); // this will select the initial model, depending on the current cvars
75 me.go(me, 0); // this will set the vars for the selected model
76}
string get_model_datafilename(string m, float sk, string fil)
Definition util.qc:1479
float get_model_parameters(string m, float sk)
Definition util.qc:1492
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 180 of file playermodel.qc.

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

References entity(), SUPER, and vector.

◆ XonoticPlayerModelSelector_saveCvars()

void XonoticPlayerModelSelector_saveCvars ( entity me)

Definition at line 141 of file playermodel.qc.

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

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

◆ XonoticPlayerModelSelector_showNotify()

void XonoticPlayerModelSelector_showNotify ( entity me)

Definition at line 187 of file playermodel.qc.

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

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