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

Go to the source code of this file.

Functions

void getAllHUDSkins (entity me, int sortbuf)
void getHUDSkinFiles (entity me, int sortbuf, string subdir)
void HUDSkinList_Filter_Change (entity box, entity me)
void HUDSkinList_Refresh_Click (entity btn, entity me)
void HUDSkinList_SavedName_Change (entity box, entity me)
entity makeXonoticHUDSkinList ()
void SaveHUDSkin_Click (entity btn, entity me)
void SetHUDSkin_Click (entity btn, entity me)
void XonoticHUDSkinList_configureXonoticHUDSkinList (entity me)
void XonoticHUDSkinList_destroy (entity me)
void XonoticHUDSkinList_doubleClickListBoxItem (entity me, float i, vector where)
void XonoticHUDSkinList_draw (entity me)
void XonoticHUDSkinList_drawListBoxItem (entity me, int i, vector absSize, bool isSelected, bool isFocused)
void XonoticHUDSkinList_getHUDSkins (entity me)
string XonoticHUDSkinList_hudskinAuthor (entity me, float i)
string XonoticHUDSkinList_hudskinName (entity me, float i)
string XonoticHUDSkinList_hudskinPath (entity me, float i)
string XonoticHUDSkinList_hudskinTitle (entity me, float i)
float XonoticHUDSkinList_keyDown (entity me, float scan, float ascii, float shift)
void XonoticHUDSkinList_resizeNotify (entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
void XonoticHUDSkinList_setHUDSkin (entity me)
void XonoticHUDSkinList_showNotify (entity me)

Variables

const float HUDSKINPARM_AUTHOR = 3
const float HUDSKINPARM_COUNT = 4
const float HUDSKINPARM_NAME = 0
const float HUDSKINPARM_PATH = 1
const float HUDSKINPARM_TITLE = 2

Function Documentation

◆ getAllHUDSkins()

void getAllHUDSkins ( entity me,
int sortbuf )

Definition at line 83 of file hudskinlist.qc.

84{
85 int n = buf_getsize(sortbuf);
86 for(int i = 0; i < n; ++i)
87 {
88 string entry = bufstr_get(sortbuf, i);
89 int ofs = strstrofs(entry, "/", 0);
90 string s = "";
91 string filename = entry;
92 if(ofs >= 0)
93 {
94 s = substring(entry, ofs + 1, -1); // skip initial "/"
95 s = strcat(s, "/");
96 bufstr_set(me.listHUDSkin, i * HUDSKINPARM_COUNT + HUDSKINPARM_PATH, s);
97 filename = strcat(s, substring(entry, 0, ofs));
98 }
99 else
100 ofs = strlen(entry);
101 s = substring(entry, 4, ofs - 4 - 4); // remove "hud_" prefix and ".cfg" suffix
102 bufstr_set(me.listHUDSkin, i * HUDSKINPARM_COUNT + HUDSKINPARM_NAME, s);
103
104 int fh = fopen(filename, FILE_READ);
105 if(fh < 0)
106 continue;
107 while((s = fgets(fh)) && substring(s, 0, 2) == "//")
108 {
109 tokenize_console(substring(s, 2, -1));
110 if(argv(0) == "title")
111 bufstr_set(me.listHUDSkin, i * HUDSKINPARM_COUNT + HUDSKINPARM_TITLE, argv(1));
112 else if(argv(0) == "author")
113 bufstr_set(me.listHUDSkin, i * HUDSKINPARM_COUNT + HUDSKINPARM_AUTHOR, argv(1));
114 }
115 fclose(fh);
116 }
117}
const float FILE_READ
#define strstrofs
#define strlen
#define tokenize_console
const float HUDSKINPARM_TITLE
const float HUDSKINPARM_PATH
const float HUDSKINPARM_AUTHOR
const float HUDSKINPARM_NAME
const float HUDSKINPARM_COUNT
string fgets(float fhandle)
void fclose(float fhandle)
string substring(string s, float start, float length)
float fopen(string filename, float mode)
string argv(float n)
strcat(_("^F4Countdown stopped!"), "\n^BG", _("Teams are too unbalanced."))

References argv(), entity(), fclose(), fgets(), FILE_READ, fopen(), HUDSKINPARM_AUTHOR, HUDSKINPARM_COUNT, HUDSKINPARM_NAME, HUDSKINPARM_PATH, HUDSKINPARM_TITLE, strcat(), strlen, strstrofs, substring(), and tokenize_console.

Referenced by XonoticHUDSkinList_getHUDSkins().

◆ getHUDSkinFiles()

void getHUDSkinFiles ( entity me,
int sortbuf,
string subdir )

Definition at line 42 of file hudskinlist.qc.

43{
44 string s;
45 if(me.filterString)
46 s = me.filterString;
47 else
48 s = "*";
49 s = strcat(subdir, "hud_", s, ".cfg");
50
51 int list = search_begin(s, false, true);
52 if(list >= 0)
53 {
54 int n = search_getsize(list);
55 for(int i = 0; i < n; ++i)
56 {
57 string s = search_getfilename(list, i);
58 int subdir_ofs = strstrofs(s, "/", 0);
59 if(subdir_ofs >= 0)
60 {
61 int ofs = subdir_ofs;
62 while(ofs != -1)
63 {
64 subdir_ofs = ofs;
65 ofs = strstrofs(s, "/", subdir_ofs + 1);
66 }
67 }
68
69 if(subdir_ofs == -1)
70 bufstr_add(sortbuf, s, true);
71 else
72 {
73 subdir = substring(s, 0, subdir_ofs);
74 string filename = substring(s, subdir_ofs + 1, -1);
75 // invert path and filename position so we can sort sortbuf by filename
76 bufstr_add(sortbuf, strcat(filename, "/", subdir), true);
77 }
78 }
79 search_end(list);
80 }
81}
string search_getfilename(float handle, float num)
float search_getsize(float handle)
float search_begin(string pattern, float caseinsensitive, float quiet)
void search_end(float handle)

References entity(), search_begin(), search_end(), search_getfilename(), search_getsize(), strcat(), strstrofs, and substring().

Referenced by XonoticHUDSkinList_getHUDSkins().

◆ HUDSkinList_Filter_Change()

void HUDSkinList_Filter_Change ( entity box,
entity me )

Definition at line 199 of file hudskinlist.qc.

200{
201 strfree(me.filterString);
202
203 if(box.text != "")
204 {
205 if (strstrofs(box.text, "*", 0) >= 0 || strstrofs(box.text, "?", 0) >= 0)
206 me.filterString = strzone(box.text);
207 else
208 me.filterString = strzone(strcat("*", box.text, "*"));
209 }
210
211 me.getHUDSkins(me);
212}
string strzone(string s)
#define strfree(this)
Definition string.qh:59

References entity(), strcat(), strfree, strstrofs, and strzone().

Referenced by XonoticHUDExitDialog_fill().

◆ HUDSkinList_Refresh_Click()

void HUDSkinList_Refresh_Click ( entity btn,
entity me )

Definition at line 185 of file hudskinlist.qc.

186{
187 me.getHUDSkins(me);
188 me.setSelected(me, 0); //always select the first element after a list update
189}

References entity().

Referenced by XonoticHUDExitDialog_fill(), and XonoticHUDSkinList_draw().

◆ HUDSkinList_SavedName_Change()

void HUDSkinList_SavedName_Change ( entity box,
entity me )

Definition at line 191 of file hudskinlist.qc.

192{
193 strfree(me.savedName);
194
195 if(box.text != "")
196 me.savedName = strzone(box.text);
197}

References entity(), strfree, and strzone().

Referenced by XonoticHUDExitDialog_fill().

◆ makeXonoticHUDSkinList()

entity makeXonoticHUDSkinList ( )

Definition at line 5 of file hudskinlist.qc.

6{
7 entity me;
9 me.configureXonoticHUDSkinList(me);
10 return me;
11}
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
#define NEW(cname,...)
Definition oo.qh:117

References entity(), and NEW.

Referenced by XonoticHUDExitDialog_fill(), and XonoticSkinResetDialog_fill().

◆ SaveHUDSkin_Click()

void SaveHUDSkin_Click ( entity btn,
entity me )

Definition at line 214 of file hudskinlist.qc.

215{
216 string s = me.savedName;
217 if(s == "")
218 s = "myconfig";
219 localcmd(sprintf("hud save \"%s\"\n", s));
220 me.delayedRefreshTime = time + 1;
221}
float time
void localcmd(string command,...)

References entity(), localcmd(), and time.

Referenced by XonoticHUDExitDialog_fill().

◆ SetHUDSkin_Click()

void SetHUDSkin_Click ( entity btn,
entity me )

Definition at line 239 of file hudskinlist.qc.

240{
241 me.setHUDSkin(me);
242}

References entity().

Referenced by XonoticSkinResetDialog_fill().

◆ XonoticHUDSkinList_configureXonoticHUDSkinList()

void XonoticHUDSkinList_configureXonoticHUDSkinList ( entity me)

Definition at line 13 of file hudskinlist.qc.

14{
15 me.configureXonoticListBox(me);
16 me.nItems = 0;
17}

References entity().

◆ XonoticHUDSkinList_destroy()

void XonoticHUDSkinList_destroy ( entity me)

Definition at line 138 of file hudskinlist.qc.

139{
140 if(me.nItems > 0)
141 buf_del(me.listHUDSkin);
142}

References entity().

◆ XonoticHUDSkinList_doubleClickListBoxItem()

void XonoticHUDSkinList_doubleClickListBoxItem ( entity me,
float i,
vector where )

Definition at line 244 of file hudskinlist.qc.

245{
247 me.setHUDSkin(me);
248}
void m_play_click_sound(string soundfile)
Definition menu.qc:1106
const string MENU_SOUND_EXECUTE
Definition menu.qh:51

References entity(), m_play_click_sound(), MENU_SOUND_EXECUTE, and vector.

◆ XonoticHUDSkinList_draw()

void XonoticHUDSkinList_draw ( entity me)

Definition at line 223 of file hudskinlist.qc.

224{
225 if(me.delayedRefreshTime > 0 && me.delayedRefreshTime < time)
226 {
228 me.delayedRefreshTime = 0;
229 }
230 SUPER(XonoticHUDSkinList).draw(me);
231}
void HUDSkinList_Refresh_Click(entity btn, entity me)
#define SUPER(cname)
Definition oo.qh:231
#define NULL
Definition post.qh:14

References entity(), HUDSkinList_Refresh_Click(), NULL, SUPER, and time.

◆ XonoticHUDSkinList_drawListBoxItem()

void XonoticHUDSkinList_drawListBoxItem ( entity me,
int i,
vector absSize,
bool isSelected,
bool isFocused )

Definition at line 159 of file hudskinlist.qc.

160{
161 string s, s2;
162 if(isSelected)
163 draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED);
164 else if(isFocused)
165 {
166 me.focusedItemAlpha = getFadedAlpha(me.focusedItemAlpha, SKINALPHA_LISTBOX_FOCUSED, SKINFADEALPHA_LISTBOX_FOCUSED);
167 draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_FOCUSED, me.focusedItemAlpha);
168 }
169
170 s = me.hudskinTitle(me, i);
171 if(s == "")
172 s = me.hudskinName(me, i);
173 s2 = me.hudskinAuthor(me, i);
174 if(s2 != "")
175 s = strcat(s, " (", s2, ")");
176 s = draw_TextShortenToWidth(s, me.columnNameSize, 0, me.realFontSize);
177 draw_Text(me.realUpperMargin * eY + (me.columnNameOrigin + 0.00 * (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize))) * eX, s, me.realFontSize, SKINCOLOR_TEXT, SKINALPHA_TEXT, 1);
178}
string draw_TextShortenToWidth(string theText, float maxWidth, float ICanHasKallerz, vector SizeThxBye)
Definition draw.qc:377
void draw_Text(vector theOrigin, string theText, vector theSize, vector theColor, float theAlpha, float ICanHasKallerz)
Definition draw.qc:282
float draw_TextWidth(string theText, float ICanHasKallerz, vector SizeThxBye)
Definition draw.qc:304
void draw_Fill(vector theOrigin, vector theSize, vector theColor, float theAlpha)
Definition draw.qc:97
float getFadedAlpha(float currentAlpha, float startAlpha, float targetAlpha)
Definition util.qc:816
spree_inf s1 s2 s3loc s2 spree_inf s1 s2 s3loc s2 spree_inf s1 s2 s3loc s2 s1 s2loc s1 s2loc s1 s2loc s1 s2loc s1 s2loc s1 s2loc s1 s2 f1points s1 s2
Definition all.inc:469
const vector eY
Definition vector.qh:45
const vector eX
Definition vector.qh:44

References draw_Fill(), draw_Text(), draw_TextShortenToWidth(), draw_TextWidth(), entity(), eX, eY, getFadedAlpha(), s2, strcat(), and vector.

◆ XonoticHUDSkinList_getHUDSkins()

void XonoticHUDSkinList_getHUDSkins ( entity me)

Definition at line 119 of file hudskinlist.qc.

120{
121 if (me.listHUDSkin >= 0)
122 buf_del(me.listHUDSkin);
123 me.listHUDSkin = buf_create();
124 if (me.listHUDSkin < 0)
125 {
126 me.nItems = 0;
127 return;
128 }
129 int sortbuf = buf_create();
130 getHUDSkinFiles(me, sortbuf, "");
131 getHUDSkinFiles(me, sortbuf, "data/");
132 buf_sort(sortbuf, 128, 0);
133 getAllHUDSkins(me, sortbuf);
134 buf_del(sortbuf);
135 me.nItems = buf_getsize(me.listHUDSkin) / HUDSKINPARM_COUNT;
136}
#define buf_create
void getHUDSkinFiles(entity me, int sortbuf, string subdir)
void getAllHUDSkins(entity me, int sortbuf)

References buf_create, entity(), getAllHUDSkins(), getHUDSkinFiles(), and HUDSKINPARM_COUNT.

◆ XonoticHUDSkinList_hudskinAuthor()

string XonoticHUDSkinList_hudskinAuthor ( entity me,
float i )

Definition at line 36 of file hudskinlist.qc.

37{
38 return bufstr_get(me.listHUDSkin, i * HUDSKINPARM_COUNT + HUDSKINPARM_AUTHOR);
39}

References entity(), HUDSKINPARM_AUTHOR, and HUDSKINPARM_COUNT.

◆ XonoticHUDSkinList_hudskinName()

string XonoticHUDSkinList_hudskinName ( entity me,
float i )

Definition at line 24 of file hudskinlist.qc.

25{
26 return bufstr_get(me.listHUDSkin, i * HUDSKINPARM_COUNT + HUDSKINPARM_NAME);
27}

References entity(), HUDSKINPARM_COUNT, and HUDSKINPARM_NAME.

◆ XonoticHUDSkinList_hudskinPath()

string XonoticHUDSkinList_hudskinPath ( entity me,
float i )

Definition at line 28 of file hudskinlist.qc.

29{
30 return bufstr_get(me.listHUDSkin, i * HUDSKINPARM_COUNT + HUDSKINPARM_PATH);
31}

References entity(), HUDSKINPARM_COUNT, and HUDSKINPARM_PATH.

◆ XonoticHUDSkinList_hudskinTitle()

string XonoticHUDSkinList_hudskinTitle ( entity me,
float i )

Definition at line 32 of file hudskinlist.qc.

33{
34 return bufstr_get(me.listHUDSkin, i * HUDSKINPARM_COUNT + HUDSKINPARM_TITLE);
35}

References entity(), HUDSKINPARM_COUNT, and HUDSKINPARM_TITLE.

◆ XonoticHUDSkinList_keyDown()

float XonoticHUDSkinList_keyDown ( entity me,
float scan,
float ascii,
float shift )

Definition at line 250 of file hudskinlist.qc.

251{
252 if(scan == K_ENTER || scan == K_KP_ENTER)
253 {
254 me.setHUDSkin(me);
255 return 1;
256 }
257 else
258 {
259 return SUPER(XonoticHUDSkinList).keyDown(me, scan, ascii, shift);
260 }
261}
float K_ENTER
Definition keycodes.qc:8
float K_KP_ENTER
Definition keycodes.qc:74

References entity(), K_ENTER, K_KP_ENTER, and SUPER.

◆ XonoticHUDSkinList_resizeNotify()

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

Definition at line 144 of file hudskinlist.qc.

145{
146 me.itemAbsSize = '0 0 0';
147 SUPER(XonoticHUDSkinList).resizeNotify(me, relOrigin, relSize, absOrigin, absSize);
148
149 me.itemAbsSize.y = absSize.y * me.itemHeight;
150 me.itemAbsSize.x = absSize.x * (1 - me.controlWidth);
151 me.realFontSize.y = me.fontSize / me.itemAbsSize.y;
152 me.realFontSize.x = me.fontSize / me.itemAbsSize.x;
153 me.realUpperMargin = 0.5 * (1 - me.realFontSize.y);
154
155 me.columnNameOrigin = me.realFontSize.x;
156 me.columnNameSize = 1 - 2 * me.realFontSize.x;
157}

References entity(), SUPER, and vector.

◆ XonoticHUDSkinList_setHUDSkin()

void XonoticHUDSkinList_setHUDSkin ( entity me)

Definition at line 233 of file hudskinlist.qc.

234{
235 string cfg = strcat(me.hudskinPath(me, me.selectedItem), "hud_", me.hudskinName(me, me.selectedItem), ".cfg");
236 localcmd("exec \"", cfg, "\"\n");
237}

References entity(), localcmd(), and strcat().

◆ XonoticHUDSkinList_showNotify()

void XonoticHUDSkinList_showNotify ( entity me)

Definition at line 180 of file hudskinlist.qc.

181{
182 me.getHUDSkins(me);
183}

References entity().

Variable Documentation

◆ HUDSKINPARM_AUTHOR

const float HUDSKINPARM_AUTHOR = 3

Definition at line 22 of file hudskinlist.qc.

Referenced by getAllHUDSkins(), and XonoticHUDSkinList_hudskinAuthor().

◆ HUDSKINPARM_COUNT

◆ HUDSKINPARM_NAME

const float HUDSKINPARM_NAME = 0

Definition at line 19 of file hudskinlist.qc.

Referenced by getAllHUDSkins(), and XonoticHUDSkinList_hudskinName().

◆ HUDSKINPARM_PATH

const float HUDSKINPARM_PATH = 1

Definition at line 20 of file hudskinlist.qc.

Referenced by getAllHUDSkins(), and XonoticHUDSkinList_hudskinPath().

◆ HUDSKINPARM_TITLE

const float HUDSKINPARM_TITLE = 2

Definition at line 21 of file hudskinlist.qc.

Referenced by getAllHUDSkins(), and XonoticHUDSkinList_hudskinTitle().