2 CLASS(VoretPlayerList) EXTENDS(VoretListBox)
\r
3 ATTRIB(VoretPlayerList, rowsPerItem, float, 1)
\r
4 METHOD(VoretPlayerList, resizeNotify, void(entity, vector, vector, vector, vector))
\r
5 METHOD(VoretPlayerList, drawListBoxItem, void(entity, float, vector, float))
\r
6 ATTRIB(VoretPlayerList, realFontSize, vector, '0 0 0')
\r
7 ATTRIB(VoretPlayerList, columnNameOrigin, float, 0)
\r
8 ATTRIB(VoretPlayerList, columnNameSize, float, 0)
\r
9 ATTRIB(VoretPlayerList, columnScoreOrigin, float, 0)
\r
10 ATTRIB(VoretPlayerList, columnScoreSize, float, 0)
\r
11 ATTRIB(VoretPlayerList, realUpperMargin, float, 0)
\r
12 ATTRIB(VoretPlayerList, origin, vector, '0 0 0')
\r
13 ATTRIB(VoretPlayerList, itemAbsSize, vector, '0 0 0')
\r
14 METHOD(VoretPlayerList, setPlayerList, void(entity, string))
\r
15 METHOD(VoretPlayerList, getPlayerList, string(entity, float, float))
\r
16 ATTRIB(VoretPlayerList, playerList, float, -1)
\r
17 ENDCLASS(VoretPlayerList)
\r
18 entity makeVoretPlayerList();
\r
21 #ifdef IMPLEMENTATION
\r
23 #define PLAYERPARM_SCORE 0
\r
24 #define PLAYERPARM_PING 1
\r
25 #define PLAYERPARM_TEAM 2
\r
26 #define PLAYERPARM_NAME 3
\r
27 #define PLAYERPARM_COUNT 4
\r
29 entity makeVoretPlayerList()
\r
32 me = spawnVoretPlayerList();
\r
33 me.configureVoretListBox(me);
\r
37 void setPlayerListVoretPlayerList(entity me, string plist)
\r
39 dprint(plist,"------------\n");
\r
45 me.nItems = tokenizebyseparator(plist, "\n");
\r
46 for(i = 0; i < me.nItems; ++i)
\r
48 bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_NAME, argv(i)); // -666 100 "^4Nex ^2Player"
\r
51 for(i = 0; i < me.nItems; ++i)
\r
53 s = bufstr_get(buf, i * PLAYERPARM_COUNT + PLAYERPARM_NAME);
\r
54 n = tokenize_console(s);
\r
58 bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_SCORE, argv(0)); // -666
\r
59 bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_PING, argv(1)); // 100
\r
60 bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_TEAM, argv(2)); // 0 for spec, else 1, 2, 3, 4
\r
61 bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_NAME, argv(3)); // ^4Nex ^2Player
\r
65 bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_SCORE, argv(0)); // -666
\r
66 bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_PING, argv(1)); // 100
\r
67 bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_TEAM, "-1");
\r
68 bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_NAME, argv(2)); // ^4Nex ^2Player
\r
71 me.playerList = buf;
\r
74 string getPlayerListVoretPlayerList(entity me, float i, float key)
\r
76 return bufstr_get(me.playerList, i * PLAYERPARM_COUNT + key);
\r
79 void resizeNotifyVoretPlayerList(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
\r
81 me.itemAbsSize = '0 0 0';
\r
82 resizeNotifyVoretListBox(me, relOrigin, relSize, absOrigin, absSize);
\r
84 me.realFontSize_y = me.fontSize / (me.itemAbsSize_y = (absSize_y * me.itemHeight));
\r
85 me.realFontSize_x = me.fontSize / (me.itemAbsSize_x = (absSize_x * (1 - me.controlWidth)));
\r
86 me.realUpperMargin = 0.5 * (1 - me.realFontSize_y);
\r
88 // this list does 1 char left and right margin
\r
89 me.columnScoreSize = 3 * me.realFontSize_x;
\r
90 me.columnNameSize = 1 - 3 * me.realFontSize_x - me.columnScoreSize;
\r
92 me.columnNameOrigin = me.realFontSize_x;
\r
93 me.columnScoreOrigin = me.columnNameOrigin + me.columnNameSize + me.realFontSize_x;
\r
96 void drawListBoxItemVoretPlayerList(entity me, float i, vector absSize, float isSelected)
\r
103 t = stof(me.getPlayerList(me, i, PLAYERPARM_TEAM));
\r
105 rgb = colormapPaletteColor(4, 0);
\r
107 rgb = colormapPaletteColor(13, 0);
\r
109 rgb = colormapPaletteColor(12, 0);
\r
111 rgb = colormapPaletteColor(9, 0);
\r
115 s = me.getPlayerList(me, i, PLAYERPARM_NAME);
\r
116 score = me.getPlayerList(me, i, PLAYERPARM_SCORE);
\r
118 if(substring(score, strlen(score) - 10, 10) == ":spectator")
\r
124 if((t = strstrofs(score, ":", 0)) >= 0)
\r
125 score = substring(score, 0, t);
\r
126 if((t = strstrofs(score, ",", 0)) >= 0)
\r
127 score = substring(score, 0, t);
\r
130 s = draw_TextShortenToWidth(s, me.columnNameSize, 1, me.realFontSize);
\r
131 score = draw_TextShortenToWidth(score, me.columnScoreSize, 0, me.realFontSize);
\r
133 draw_Text(me.realUpperMargin2 * eY + (me.columnNameOrigin + 0.00 * (me.columnNameSize - draw_TextWidth(s, 1, me.realFontSize))) * eX, s, me.realFontSize, '1 1 1', 1, 1);
\r
134 draw_Text(me.realUpperMargin2 * eY + (me.columnScoreOrigin + 1.00 * (me.columnScoreSize - draw_TextWidth(score, 1, me.realFontSize))) * eX, score, me.realFontSize, rgb, 1, 0);
\r