]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/menu/xonotic/charmap.qc
take3: format 903 files
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / charmap.qc
1 #include "charmap.qh"
2
3 #include "inputbox.qh"
4
5 string CHARMAP =
6         "★◆■▮▰▬◣◤◥◢◀▲▶▼"
7         "🌍🌎🌏🚀🌌👽🔫⌖❇❈←↑→↓"
8         "☠☣☢⚛⚡⚙🔥❌⚠⛔❰❱❲❳"
9         "😃😊😁😄😆😎😈😇😉😛😝😘❤ "
10         "😐😒😕😮😲😞😟😠😣😭😵😴  "
11         "\xEE\x83\xA1\xEE\x83\xA2\xEE\x83\xA3\xEE\x83\xA4\xEE\x83\xA5\xEE\x83\xA6\xEE\x83\xA7"
12         "\xEE\x83\xA8\xEE\x83\xA9\xEE\x83\xAA\xEE\x83\xAB\xEE\x83\xAC\xEE\x83\xAD\xEE\x83\xAE"
13         "\xEE\x83\xAF\xEE\x83\xB0\xEE\x83\xB1\xEE\x83\xB2\xEE\x83\xB3\xEE\x83\xB4\xEE\x83\xB5"
14         "\xEE\x83\xB6\xEE\x83\xB7\xEE\x83\xB8\xEE\x83\xB9\xEE\x83\xBA\xEE\x80\x90\xEE\x80\x91"
15         "\xEE\x82\xB0\xEE\x82\xB1\xEE\x82\xB2\xEE\x82\xB3\xEE\x82\xB4\xEE\x82\xB5\xEE\x82\xB6"
16         "\xEE\x82\xB7\xEE\x82\xB8\xEE\x82\xB9\xEE\x82\xA1\xEE\x82\xBF\xEE\x82\xA6\xEE\x82\xA5"
17         "\xEE\x83\x81\xEE\x83\x82\xEE\x83\x83\xEE\x83\x84\xEE\x83\x85\xEE\x83\x86\xEE\x83\x87"
18         "\xEE\x83\x88\xEE\x83\x89\xEE\x83\x8A\xEE\x83\x8B\xEE\x83\x8C\xEE\x83\x8D\xEE\x83\x8E"
19         "\xEE\x83\x8F\xEE\x83\x90\xEE\x83\x91\xEE\x83\x92\xEE\x83\x93\xEE\x83\x94\xEE\x83\x95"
20         "\xEE\x83\x96\xEE\x83\x97\xEE\x83\x98\xEE\x83\x99\xEE\x83\x9A\xEE\x81\x9B\xEE\x81\x9D";
21
22 string charmap_cellToChar(entity me, vector cell)
23 {
24         string character = substring(CHARMAP, cell.y * me.columns + cell.x, 1);
25
26         if (character != " ") {
27                 return character;
28         } else {
29                 return "";
30         }
31 }
32
33 entity makeXonoticCharmap(entity controlledInputBox)
34 {
35         entity me;
36         me = NEW(XonoticCharmap);
37         me.configureXonoticCharmap(me, controlledInputBox);
38         return me;
39 }
40
41 void XonoticCharmap_configureXonoticCharmap(entity me, entity controlledInputBox)
42 {
43         me.inputBox = controlledInputBox;
44         me.configureXonoticPicker(me);
45 }
46
47 void XonoticCharmap_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
48 {
49         SUPER(XonoticCharmap).resizeNotify(me, relOrigin, relSize, absOrigin, absSize);
50
51         float maxFontWidth = SKINFONTSIZE_NORMAL / absSize.x;
52         float maxFontHeight = SKINFONTSIZE_NORMAL / absSize.y;
53
54         if ((me.realCellSize.x * absSize.x) > (me.realCellSize.y * absSize.y)) {
55                 me.realFontSize_x = me.realCellSize.y * absSize.y / absSize.x;
56                 me.realFontSize_y = me.realCellSize.y;
57         } else {
58                 me.realFontSize_x = me.realCellSize.x;
59                 me.realFontSize_y = me.realCellSize.x * absSize.x / absSize.y;
60         }
61
62         if (me.realFontSize.x > maxFontWidth || me.realFontSize.y > maxFontHeight) {
63                 me.realFontSize = eX * maxFontWidth + eY * maxFontHeight;
64         }
65
66         me.charOffset = eX * me.realCellSize.x / 2 + eY * ((me.realCellSize.y - me.realFontSize.y) / 2);
67 }
68
69 float XonoticCharmap_keyDown(entity me, float key, float ascii, float shift)
70 {
71         if (SUPER(XonoticCharmap).keyDown(me, key, ascii, shift)) {
72                 return 1;
73         }
74         return me.inputBox.keyDown(me.inputBox, key, ascii, shift);
75 }
76
77 void XonoticCharmap_cellSelect(entity me, vector cell)
78 {
79         string character = charmap_cellToChar(me, cell);
80         if (character != "") {
81                 me.inputBox.enterText(me.inputBox, character);
82                 if (me.inputBox.applyButton) {
83                         me.inputBox.applyButton.disabled = false;
84                 }
85         }
86 }
87
88 bool XonoticCharmap_cellIsValid(entity me, vector cell)
89 {
90         if (charmap_cellToChar(me, cell) == "") {
91                 return false;
92         }
93         return true;
94 }
95
96 void XonoticCharmap_cellDraw(entity me, vector cell, vector cellPos)
97 {
98         draw_CenterText(cellPos + me.charOffset, charmap_cellToChar(me, cell), me.realFontSize, SKINCOLOR_CHARMAP_CHAR, SKINALPHA_CHARMAP_CHAR, 0);
99 }
100
101 void XonoticCharmap_focusLeave(entity me)
102 {
103         me.inputBox.saveCvars(me.inputBox);
104 }