1 ///////////////////////////////////////////////
3 ///////////////////////
4 // This file belongs to dpmod/darkplaces
5 // AK contains all menu functions (especially the required ones)
6 ///////////////////////////////////////////////
9 float mouseButtonsPressed;
22 draw_setMousePointer("gfx/cursor");
24 main = spawnMainWindow(); main.configureMainWindow(main);
26 main.resizeNotify(main, draw_shift, draw_scale, draw_shift, draw_scale);
30 void(float key, float ascii) m_keyup =
35 main.keyUp(main, key, ascii, shiftState);
36 if(key >= K_MOUSE1 && key <= K_MOUSE10)
38 --mouseButtonsPressed;
39 if(!mouseButtonsPressed)
40 main.mouseRelease(main, mousePos);
41 if(mouseButtonsPressed < 0)
43 mouseButtonsPressed = 0;
44 print("Warning: released an already released button\n");
47 if(key == K_ALT) shiftState -= (shiftState & S_ALT);
48 if(key == K_CTRL) shiftState -= (shiftState & S_CTRL);
49 if(key == K_SHIFT) shiftState -= (shiftState & S_SHIFT);
52 void(float key, float ascii) m_keydown =
57 if(!main.keyDown(main, key, ascii, shiftState))
59 if(gamestatus & (GAME_ISSERVER | GAME_CONNECTED)) // don't back out to console only
60 m_hide(); // disable menu on unhandled ESC
61 if(key >= K_MOUSE1 && key <= K_MOUSE10)
63 if(!mouseButtonsPressed)
64 main.mousePress(main, mousePos);
65 ++mouseButtonsPressed;
66 if(mouseButtonsPressed > 10)
68 mouseButtonsPressed = 10;
69 print("Warning: pressed an already pressed button\n");
72 if(key == K_ALT) shiftState |= S_ALT;
73 if(key == K_CTRL) shiftState |= S_CTRL;
74 if(key == K_SHIFT) shiftState |= S_SHIFT;
82 realFrametime = frametime = min(0.2, t - prevTime);
85 if(cvar("cl_capturevideo"))
86 frametime = 1 / cvar("cl_capturevideo_fps"); // make capturevideo work smoothly
89 menuAlpha = min(1, menuAlpha + frametime * 5);
91 menuAlpha = max(0, menuAlpha - frametime * 5);
99 gamestatus = gamestatus | GAME_ISSERVER;
100 if(clientstate() == CS_CONNECTED)
101 gamestatus = gamestatus | GAME_CONNECTED;
102 if(cvar("developer"))
103 gamestatus = gamestatus | GAME_DEVELOPER;
106 draw_alpha *= menuAlpha;
109 dMouse = getmousepos();
110 dMouse *= frametime / realFrametime; // for capturevideo
111 if(dMouse != '0 0 0')
113 dMouse = globalToBoxSize(dMouse, draw_scale);
114 mousePos += dMouse * 1; // TODO use a cvar here
115 mousePos_x = bound(0, mousePos_x, 1);
116 mousePos_y = bound(0, mousePos_y, 1);
117 if(mouseButtonsPressed)
118 main.mouseDrag(main, mousePos);
120 main.mouseMove(main, mousePos);
123 draw_drawMousePointer(mousePos);
129 setkeydest(KEY_MENU);
130 setmousetarget(MT_MENU);
132 main.focusEnter(main);
138 setkeydest(KEY_GAME);
139 setmousetarget(MT_CLIENT);
141 main.focusLeave(main);