2 CLASS(NexuizCharmap) EXTENDS(Image)
3 METHOD(NexuizCharmap, configureNexuizCharmap, void(entity, entity))
4 METHOD(NexuizCharmap, mousePress, float(entity, vector))
5 METHOD(NexuizCharmap, mouseRelease, float(entity, vector))
6 METHOD(NexuizCharmap, mouseMove, float(entity, vector))
7 METHOD(NexuizCharmap, mouseDrag, float(entity, vector))
8 METHOD(NexuizCharmap, keyDown, float(entity, float, float, float))
9 METHOD(NexuizCharmap, focusLeave, void(entity))
10 METHOD(NexuizCharmap, draw, void(entity))
11 ATTRIB(NexuizCharmap, controlledTextbox, entity, NULL)
12 ATTRIB(NexuizCharmap, image, string, SKINGFX_CHARMAP)
13 ATTRIB(NexuizCharmap, image2, string, SKINGFX_CHARMAP_SELECTED)
14 ATTRIB(NexuizCharmap, focusable, float, 1)
15 ATTRIB(NexuizCharmap, previouslySelectedCharacterCell, float, -1)
16 ATTRIB(NexuizCharmap, selectedCharacterCell, float, 0)
17 ATTRIB(NexuizCharmap, mouseSelectedCharacterCell, float, -1)
18 ENDCLASS(NexuizCharmap)
19 entity makeNexuizCharmap(entity theTextbox);
23 entity makeNexuizCharmap(entity theTextbox)
26 me = spawnNexuizCharmap();
27 me.configureNexuizCharmap(me, theTextbox);
31 string CharMap_CellToChar(float c)
41 void configureNexuizCharmapNexuizCharmap(entity me, entity theTextbox)
43 me.controlledTextbox = theTextbox;
44 me.configureImage(me, me.image);
47 float mouseMoveNexuizCharmap(entity me, vector coords)
50 x = floor(coords_x * 16);
51 y = floor(coords_y * 10);
52 if(x < 0 || y < 0 || x >= 16 || y >= 10)
54 me.mouseSelectedCharacterCell = -1;
58 if(c != me.mouseSelectedCharacterCell)
59 me.mouseSelectedCharacterCell = me.selectedCharacterCell = c;
62 float mouseDragNexuizCharmap(entity me, vector coords)
64 return me.mouseMove(me, coords);
66 float mousePressNexuizCharmap(entity me, vector coords)
68 me.mouseMove(me, coords);
69 if(me.mouseSelectedCharacterCell >= 0)
72 me.previouslySelectedCharacterCell = me.selectedCharacterCell;
76 float mouseReleaseNexuizCharmap(entity me, vector coords)
80 me.mouseMove(me, coords);
81 if(me.selectedCharacterCell == me.previouslySelectedCharacterCell)
82 me.controlledTextbox.enterText(me.controlledTextbox, CharMap_CellToChar(me.selectedCharacterCell));
86 float keyDownNexuizCharmap(entity me, float key, float ascii, float shift)
91 me.selectedCharacterCell = mod(me.selectedCharacterCell + 159, 160);
94 me.selectedCharacterCell = mod(me.selectedCharacterCell + 1, 160);
97 me.selectedCharacterCell = mod(me.selectedCharacterCell + 144, 160);
100 me.selectedCharacterCell = mod(me.selectedCharacterCell + 16, 160);
103 me.selectedCharacterCell = 0;
106 me.selectedCharacterCell = 159;
111 me.controlledTextbox.enterText(me.controlledTextbox, CharMap_CellToChar(me.selectedCharacterCell));
114 return me.controlledTextbox.keyDown(me.controlledTextbox, key, ascii, shift);
117 void focusLeaveNexuizCharmap(entity me)
119 me.controlledTextbox.saveCvars(me.controlledTextbox);
121 void drawNexuizCharmap(entity me)
125 if(!me.pressed || (me.selectedCharacterCell == me.previouslySelectedCharacterCell))
128 c = eX * (mod(me.selectedCharacterCell, 16) / 16.0);
129 c += eY * (floor(me.selectedCharacterCell / 16.0) / 10.0);
130 draw_Picture(c, me.image2, '0.0625 0.1 0', '1 1 1', 1);