2 CLASS(VoretCharmap) EXTENDS(Image)
\r
3 METHOD(VoretCharmap, configureVoretCharmap, void(entity, entity))
\r
4 METHOD(VoretCharmap, mousePress, float(entity, vector))
\r
5 METHOD(VoretCharmap, mouseRelease, float(entity, vector))
\r
6 METHOD(VoretCharmap, mouseMove, float(entity, vector))
\r
7 METHOD(VoretCharmap, mouseDrag, float(entity, vector))
\r
8 METHOD(VoretCharmap, keyDown, float(entity, float, float, float))
\r
9 METHOD(VoretCharmap, focusLeave, void(entity))
\r
10 METHOD(VoretCharmap, draw, void(entity))
\r
11 ATTRIB(VoretCharmap, controlledTextbox, entity, NULL)
\r
12 ATTRIB(VoretCharmap, image, string, SKINGFX_CHARMAP)
\r
13 ATTRIB(VoretCharmap, image2, string, SKINGFX_CHARMAP_SELECTED)
\r
14 ATTRIB(VoretCharmap, focusable, float, 1)
\r
15 ATTRIB(VoretCharmap, previouslySelectedCharacterCell, float, -1)
\r
16 ATTRIB(VoretCharmap, selectedCharacterCell, float, 0)
\r
17 ATTRIB(VoretCharmap, mouseSelectedCharacterCell, float, -1)
\r
18 ENDCLASS(VoretCharmap)
\r
19 entity makeVoretCharmap(entity theTextbox);
\r
22 #ifdef IMPLEMENTATION
\r
23 entity makeVoretCharmap(entity theTextbox)
\r
26 me = spawnVoretCharmap();
\r
27 me.configureVoretCharmap(me, theTextbox);
\r
31 string CharMap_CellToChar(float c)
\r
33 if (cvar("utf8_enable")) {
\r
35 return chr(0xE000 + 127);
\r
37 return chr(0xE000 + c);
\r
39 return chr(0xE000 + c + 96);
\r
50 void configureVoretCharmapVoretCharmap(entity me, entity theTextbox)
\r
52 me.controlledTextbox = theTextbox;
\r
53 me.configureImage(me, me.image);
\r
56 float mouseMoveVoretCharmap(entity me, vector coords)
\r
59 x = floor(coords_x * 16);
\r
60 y = floor(coords_y * 10);
\r
61 if(x < 0 || y < 0 || x >= 16 || y >= 10)
\r
63 me.mouseSelectedCharacterCell = -1;
\r
67 if(c != me.mouseSelectedCharacterCell)
\r
68 me.mouseSelectedCharacterCell = me.selectedCharacterCell = c;
\r
71 float mouseDragVoretCharmap(entity me, vector coords)
\r
73 return me.mouseMove(me, coords);
\r
75 float mousePressVoretCharmap(entity me, vector coords)
\r
77 me.mouseMove(me, coords);
\r
78 if(me.mouseSelectedCharacterCell >= 0)
\r
81 me.previouslySelectedCharacterCell = me.selectedCharacterCell;
\r
85 float mouseReleaseVoretCharmap(entity me, vector coords)
\r
89 me.mouseMove(me, coords);
\r
90 if(me.selectedCharacterCell == me.previouslySelectedCharacterCell)
\r
91 me.controlledTextbox.enterText(me.controlledTextbox, CharMap_CellToChar(me.selectedCharacterCell));
\r
95 float keyDownVoretCharmap(entity me, float key, float ascii, float shift)
\r
100 me.selectedCharacterCell = mod(me.selectedCharacterCell + 159, 160);
\r
103 me.selectedCharacterCell = mod(me.selectedCharacterCell + 1, 160);
\r
106 me.selectedCharacterCell = mod(me.selectedCharacterCell + 144, 160);
\r
109 me.selectedCharacterCell = mod(me.selectedCharacterCell + 16, 160);
\r
112 me.selectedCharacterCell = 0;
\r
115 me.selectedCharacterCell = 159;
\r
120 me.controlledTextbox.enterText(me.controlledTextbox, CharMap_CellToChar(me.selectedCharacterCell));
\r
123 return me.controlledTextbox.keyDown(me.controlledTextbox, key, ascii, shift);
\r
126 void focusLeaveVoretCharmap(entity me)
\r
128 me.controlledTextbox.saveCvars(me.controlledTextbox);
\r
130 void drawVoretCharmap(entity me)
\r
134 if(!me.pressed || (me.selectedCharacterCell == me.previouslySelectedCharacterCell))
\r
137 c = eX * (mod(me.selectedCharacterCell, 16) / 16.0);
\r
138 c += eY * (floor(me.selectedCharacterCell / 16.0) / 10.0);
\r
139 draw_Picture(c, me.image2, '0.0625 0.1 0', '1 1 1', 1);
\r