Xonotic
charmap.qc
Go to the documentation of this file.
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 
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 entity makeXonoticCharmap(entity controlledInputBox)
33 {
34  entity me;
35  me = NEW(XonoticCharmap);
36  me.configureXonoticCharmap(me, controlledInputBox);
37  return me;
38 }
39 
41 {
42  me.inputBox = controlledInputBox;
43  me.configureXonoticPicker(me);
44 }
45 
46 void XonoticCharmap_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
47 {
48  SUPER(XonoticCharmap).resizeNotify(me, relOrigin, relSize, absOrigin, absSize);
49 
50  float maxFontWidth = SKINFONTSIZE_NORMAL / absSize.x;
51  float maxFontHeight = SKINFONTSIZE_NORMAL / absSize.y;
52 
53  if((me.realCellSize.x * absSize.x) > (me.realCellSize.y * absSize.y))
54  {
55  me.realFontSize_x = me.realCellSize.y * absSize.y / absSize.x;
56  me.realFontSize_y = me.realCellSize.y;
57  }
58  else
59  {
60  me.realFontSize_x = me.realCellSize.x;
61  me.realFontSize_y = me.realCellSize.x * absSize.x / absSize.y;
62  }
63 
64  if(me.realFontSize.x > maxFontWidth || me.realFontSize.y > maxFontHeight)
65  me.realFontSize = eX * maxFontWidth + eY * maxFontHeight;
66 
67  me.charOffset = eX * me.realCellSize.x / 2 + eY * ((me.realCellSize.y - me.realFontSize.y) / 2);
68 }
69 
70 float XonoticCharmap_keyDown(entity me, float key, float ascii, float shift)
71 {
72  if(SUPER(XonoticCharmap).keyDown(me, key, ascii, shift))
73  return 1;
74  return me.inputBox.keyDown(me.inputBox, key, ascii, shift);
75 }
76 
78 {
79  string character = charmap_cellToChar(me, cell);
80  if(character != "")
81  {
82  me.inputBox.enterText(me.inputBox, character);
83  if(me.inputBox.applyButton)
84  me.inputBox.applyButton.disabled = false;
85  }
86 }
87 
89 {
90  if(charmap_cellToChar(me, cell) == "")
91  return false;
92  return true;
93 }
94 
96 {
97  draw_CenterText(cellPos + me.charOffset, charmap_cellToChar(me, cell), me.realFontSize, SKINCOLOR_CHARMAP_CHAR, SKINALPHA_CHARMAP_CHAR, 0);
98 }
99 
101 {
102  me.inputBox.saveCvars(me.inputBox);
103 }
const vector eY
Definition: vector.qh:45
#define NEW(cname,...)
Definition: oo.qh:105
string charmap_cellToChar(entity me, vector cell)
Definition: charmap.qc:22
void XonoticCharmap_cellDraw(entity me, vector cell, vector cellPos)
Definition: charmap.qc:95
float XonoticCharmap_keyDown(entity me, float key, float ascii, float shift)
Definition: charmap.qc:70
entity() spawn
#define SUPER(cname)
Definition: oo.qh:219
entity makeXonoticCharmap(entity controlledInputBox)
Definition: charmap.qc:32
void XonoticCharmap_cellSelect(entity me, vector cell)
Definition: charmap.qc:77
void XonoticCharmap_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
Definition: charmap.qc:46
vector(float skel, float bonenum) _skel_get_boneabs_hidden
const vector eX
Definition: vector.qh:44
void XonoticCharmap_configureXonoticCharmap(entity me, entity controlledInputBox)
Definition: charmap.qc:40
bool XonoticCharmap_cellIsValid(entity me, vector cell)
Definition: charmap.qc:88
void XonoticCharmap_focusLeave(entity me)
Definition: charmap.qc:100
string CHARMAP
Definition: charmap.qc:5