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

Go to the source code of this file.

Functions

entity makeXonoticPlayerList ()
void XonoticPlayerList_drawListBoxItem (entity me, int i, vector absSize, bool isSelected, bool isFocused)
string XonoticPlayerList_getPlayerList (entity me, float i, float key)
void XonoticPlayerList_resizeNotify (entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
void XonoticPlayerList_setPlayerList (entity me, string plist)

Variables

const int PLAYERPARM_COUNT = 4
const int PLAYERPARM_NAME = 3
const int PLAYERPARM_PING = 1
const int PLAYERPARM_SCORE = 0
const int PLAYERPARM_TEAM = 2
float realUpperMargin2

Function Documentation

◆ makeXonoticPlayerList()

entity makeXonoticPlayerList ( )

Definition at line 11 of file playerlist.qc.

12{
14 me.configureXonoticListBox(me);
15 return me;
16}
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
#define NEW(cname,...)
Definition oo.qh:117

References entity(), and NEW.

Referenced by XonoticServerInfoTab_fill().

◆ XonoticPlayerList_drawListBoxItem()

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

Definition at line 74 of file playerlist.qc.

75{
76 float t = stof(me.getPlayerList(me, i, PLAYERPARM_TEAM));
77
78 vector rgb = SKINCOLOR_TEXT;
79 if(t == 1)
80 rgb = colormapPaletteColor(4, 0);
81 else if(t == 2)
82 rgb = colormapPaletteColor(13, 0);
83 else if(t == 3)
84 rgb = colormapPaletteColor(12, 0);
85 else if(t == 4)
86 rgb = colormapPaletteColor(9, 0);
87
88 string name = me.getPlayerList(me, i, PLAYERPARM_NAME);
89 string score = me.getPlayerList(me, i, PLAYERPARM_SCORE);
90 string ping = me.getPlayerList(me, i, PLAYERPARM_PING);
91
92 bool is_bot = (ping == "0");
93 bool is_spectator = false;
94 if(substring(score, strlen(score) - 10, 10) == ":spectator")
95 {
96 is_spectator = true;
97 }
98 else
99 {
100 if((t = strstrofs(score, ":", 0)) >= 0)
101 score = substring(score, 0, t);
102 if((t = strstrofs(score, ",", 0)) >= 0)
103 score = substring(score, 0, t);
104
105 if(stof(score) == FRAGS_SPECTATOR)
106 is_spectator = true;
107 }
108
109 if(is_bot)
110 name = cons("^9(bot)^7", name);
111
112 if (is_spectator)
113 {
114 score = _("spectator");
115 rgb = '0.3 0.3 0.3';
116 }
117
118 name = draw_TextShortenToWidth(name, me.columnNameSize, 1, me.realFontSize);
119 draw_Text(me.realUpperMargin2 * eY + me.columnNameOrigin * eX, name, me.realFontSize, '1 1 1', 1, 1);
120
121 score = draw_TextShortenToWidth(score, me.columnScoreSize, 0, me.realFontSize);
122 float score_ofs = me.columnScoreSize - draw_TextWidth(score, 1, me.realFontSize);
123 draw_Text(me.realUpperMargin2 * eY + (me.columnScoreOrigin + score_ofs) * eX, score, me.realFontSize, rgb, 1, 0);
124}
float ping
Definition main.qh:169
#define colormapPaletteColor(c, isPants)
Definition color.qh:5
const int FRAGS_SPECTATOR
Definition constants.qh:4
#define strstrofs
#define strlen
string draw_TextShortenToWidth(string theText, float maxWidth, float ICanHasKallerz, vector SizeThxBye)
Definition draw.qc:378
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
string name
Definition menu.qh:30
float stof(string val,...)
string substring(string s, float start, float length)
const int PLAYERPARM_NAME
Definition playerlist.qc:8
const int PLAYERPARM_PING
Definition playerlist.qc:6
const int PLAYERPARM_TEAM
Definition playerlist.qc:7
const int PLAYERPARM_SCORE
Definition playerlist.qc:5
vector
Definition self.qh:92
ERASEABLE string cons(string a, string b)
Definition string.qh:276
const vector eY
Definition vector.qh:45
const vector eX
Definition vector.qh:44

References colormapPaletteColor, cons(), draw_Text(), draw_TextShortenToWidth(), draw_TextWidth(), entity(), eX, eY, FRAGS_SPECTATOR, name, ping, PLAYERPARM_NAME, PLAYERPARM_PING, PLAYERPARM_SCORE, PLAYERPARM_TEAM, stof(), strlen, strstrofs, substring(), and vector.

◆ XonoticPlayerList_getPlayerList()

string XonoticPlayerList_getPlayerList ( entity me,
float i,
float key )

Definition at line 50 of file playerlist.qc.

51{
52 return bufstr_get(me.playerList, i * PLAYERPARM_COUNT + key);
53}
const int PLAYERPARM_COUNT
Definition playerlist.qc:9

References entity(), and PLAYERPARM_COUNT.

◆ XonoticPlayerList_resizeNotify()

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

Definition at line 55 of file playerlist.qc.

56{
57 me.itemAbsSize = '0 0 0';
58 SUPER(XonoticPlayerList).resizeNotify(me, relOrigin, relSize, absOrigin, absSize);
59
60 me.itemAbsSize.y = absSize.y * me.itemHeight;
61 me.itemAbsSize.x = absSize.x * (1 - me.controlWidth);
62 me.realFontSize.y = me.fontSize / me.itemAbsSize.y;
63 me.realFontSize.x = me.fontSize / me.itemAbsSize.x;
64 me.realUpperMargin = 0.5 * (1 - me.realFontSize.y);
65
66 // this list does 1 char left and right margin
67 me.columnScoreSize = 5 * me.realFontSize.x;
68 me.columnNameSize = 1 - 3 * me.realFontSize.x - me.columnScoreSize;
69
70 me.columnScoreOrigin = me.realFontSize.x;
71 me.columnNameOrigin = me.columnScoreOrigin + me.columnScoreSize + me.realFontSize.x;
72}
#define SUPER(cname)
Definition oo.qh:231

References entity(), SUPER, and vector.

◆ XonoticPlayerList_setPlayerList()

void XonoticPlayerList_setPlayerList ( entity me,
string plist )

Definition at line 18 of file playerlist.qc.

19{
20 int i;
21 int buf = buf_create();
22
23 me.nItems = tokenizebyseparator(plist, "\n");
24 for(i = 0; i < me.nItems; ++i)
25 {
26 bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_NAME, argv(i)); // -666 100 "^4Xon ^2Player"
27 }
28
29 for(i = 0; i < me.nItems; ++i)
30 {
31 string name = bufstr_get(buf, i * PLAYERPARM_COUNT + PLAYERPARM_NAME);
32 int n = tokenize_console(name);
33
34 bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_SCORE, argv(0)); // -666
35 bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_PING, argv(1)); // 100
36 if(n == PLAYERPARM_COUNT)
37 {
38 bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_TEAM, argv(2)); // 0 for spec, else 1, 2, 3, 4
39 bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_NAME, argv(3)); // ^4Xon ^2Player
40 }
41 else
42 {
43 bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_TEAM, "-1");
44 bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_NAME, argv(2)); // ^4Xon ^2Player
45 }
46 }
47 me.playerList = buf;
48}
#define tokenize_console
#define tokenizebyseparator
#define buf_create
string argv(float n)

References argv(), buf_create, entity(), name, PLAYERPARM_COUNT, PLAYERPARM_NAME, PLAYERPARM_PING, PLAYERPARM_SCORE, PLAYERPARM_TEAM, tokenize_console, and tokenizebyseparator.

Variable Documentation

◆ PLAYERPARM_COUNT

const int PLAYERPARM_COUNT = 4

◆ PLAYERPARM_NAME

const int PLAYERPARM_NAME = 3

◆ PLAYERPARM_PING

const int PLAYERPARM_PING = 1

◆ PLAYERPARM_SCORE

const int PLAYERPARM_SCORE = 0

◆ PLAYERPARM_TEAM

const int PLAYERPARM_TEAM = 2

◆ realUpperMargin2

float realUpperMargin2

Definition at line 3 of file playerlist.qc.