]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/menu/xonotic/textbox.qc
Show a welcome window with banner, IP and MOTD on server connection (WIP: need a...
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / textbox.qc
1 #include "textbox.qh"
2
3 entity makeXonoticTextBox()
4 {
5         entity me;
6         me = NEW(XonoticTextBox);
7         me.configureXonoticTextBox(me);
8         return me;
9 }
10 void XonoticTextBox_configureXonoticTextBox(entity me)
11 {
12         me.configureListBox(me, me.scrollbarWidth, 1); // item height gets set up later
13 }
14 void XonoticTextBox_setSelected(entity me, float i)
15 {
16         // nothing
17 }
18 void XonoticTextBox_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
19 {
20         me.itemHeight = me.rowsPerItem * me.fontSize / absSize_y;
21         SUPER(XonoticTextBox).resizeNotify(me, relOrigin, relSize, absOrigin, absSize);
22
23         me.realFontSize_y = me.fontSize / (absSize_y * me.itemHeight);
24         me.realFontSize_x = me.fontSize / (absSize_x * (1 - me.controlWidth));
25         me.realUpperMargin = 0.5 * (1 - me.realFontSize_y);
26 }
27 void XonoticTextBox_setText(entity me, string theText)
28 {
29         int i, k;
30         string ts;
31         if(me.textbuf >= 0)
32                 buf_del(me.textbuf);
33         me.textbuf = buf_create();
34         string s = strzone(theText);
35         me.nItems = 0;
36         k = tokenizebyseparator(s, "\\n");
37         for(i = 0; i < k; ++i)
38         {
39                 getWrappedLine_remaining = argv(i);
40                 if(!getWrappedLine_remaining)
41                 {
42                         bufstr_add(me.textbuf, "", 1);
43                         ++me.nItems;
44                 }
45                 else while(getWrappedLine_remaining)
46                 {
47                         ts = getWrappedLine(1 - me.controlWidth, me.realFontSize, draw_TextWidth_WithColors);
48                         if (ts != "")
49                         {
50                                 bufstr_add(me.textbuf, ts, 1);
51                                 ++me.nItems;
52                         }
53                 }
54         }
55         strunzone(s);
56         me.textbufSize = buf_getsize(me.textbuf);
57 }
58 void XonoticTextBox_destroy(entity me)
59 {
60         if(me.textbuf >= 0)
61                 buf_del(me.textbuf);
62 }
63 void XonoticTextBox_drawListBoxItem(entity me, int i, vector absSize, bool isSelected, bool isFocused)
64 {
65         if(me.textbufSize > 0)
66                 draw_CenterText(me.realUpperMargin * eY + 0.5 * eX, bufstr_get(me.textbuf, i), me.realFontSize, '1 1 1', 1, me.allowColors);
67 }