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, draw, void(entity))
10 ATTRIB(NexuizCharmap, controlledTextbox, entity, NULL)
11 ATTRIB(NexuizCharmap, image, string, SKINGFX_CHARMAP)
12 ATTRIB(NexuizCharmap, image2, string, SKINGFX_CHARMAP_SELECTED)
13 ATTRIB(NexuizCharmap, focusable, float, 1)
14 ATTRIB(NexuizCharmap, previouslySelectedCharacterCell, float, -1)
15 ATTRIB(NexuizCharmap, selectedCharacterCell, float, 0)
16 ATTRIB(NexuizCharmap, mouseSelectedCharacterCell, float, -1)
17 ENDCLASS(NexuizCharmap)
18 entity makeNexuizCharmap(entity theTextbox);
22 entity makeNexuizCharmap(entity theTextbox)
25 me = spawnNexuizCharmap();
26 me.configureNexuizCharmap(me, theTextbox);
30 string CharMap_CellToChar(float c)
40 void configureNexuizCharmapNexuizCharmap(entity me, entity theTextbox)
42 me.controlledTextbox = theTextbox;
43 me.configureImage(me, me.image);
46 float mouseMoveNexuizCharmap(entity me, vector coords)
49 x = floor(coords_x * 16);
50 y = floor(coords_y * 10);
51 if(x < 0 || y < 0 || x >= 16 || y >= 10)
53 me.mouseSelectedCharacterCell = -1;
57 if(c != me.mouseSelectedCharacterCell)
58 me.mouseSelectedCharacterCell = me.selectedCharacterCell = c;
61 float mouseDragNexuizCharmap(entity me, vector coords)
63 return me.mouseMove(me, coords);
65 float mousePressNexuizCharmap(entity me, vector coords)
67 me.mouseMove(me, coords);
68 if(me.mouseSelectedCharacterCell >= 0)
71 me.previouslySelectedCharacterCell = me.selectedCharacterCell;
75 float mouseReleaseNexuizCharmap(entity me, vector coords)
79 me.mouseMove(me, coords);
80 if(me.selectedCharacterCell == me.previouslySelectedCharacterCell)
81 me.controlledTextbox.enterText(me.controlledTextbox, CharMap_CellToChar(me.selectedCharacterCell));
85 float keyDownNexuizCharmap(entity me, float key, float ascii, float shift)
90 me.selectedCharacterCell = mod(me.selectedCharacterCell + 159, 160);
93 me.selectedCharacterCell = mod(me.selectedCharacterCell + 1, 160);
96 me.selectedCharacterCell = mod(me.selectedCharacterCell + 144, 160);
99 me.selectedCharacterCell = mod(me.selectedCharacterCell + 16, 160);
102 me.selectedCharacterCell = 0;
105 me.selectedCharacterCell = 159;
110 me.controlledTextbox.enterText(me.controlledTextbox, CharMap_CellToChar(me.selectedCharacterCell));
113 return me.controlledTextbox.keyDown(me.controlledTextbox, key, ascii, shift);
116 void drawNexuizCharmap(entity me)
120 if(!me.pressed || (me.selectedCharacterCell == me.previouslySelectedCharacterCell))
123 c = eX * (mod(me.selectedCharacterCell, 16) / 16.0);
124 c += eY * (floor(me.selectedCharacterCell / 16.0) / 10.0);
125 draw_Picture(c, me.image2, '0.0625 0.1 0', '1 1 1', 1);