nuclide/Source/Menu-FN/entry.cpp

139 lines
2.4 KiB
C++

/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
void m_init(void)
{
vector g_btnsize;
font_console = loadfont( "font", "", "12", -1 );
font_label = loadfont( "label", "gfx/shell/mssansserif.ttf", "10 12 14", -1 );
font_arial = loadfont( "label", "gfx/shell/arial.ttf", "14", -1 );
font_label_b = loadfont( "label_b", "gfx/shell/arialbd.ttf", "14 12 16", -1 );
for (int i = 0; i < g_bmp.length; i++) {
precache_pic(g_bmp[i]);
}
g_btnsize = drawgetimagesize(g_bmp[BTNS_MAIN]);
g_btnofs = 26 / g_btnsize[1];
Strings_Init();
Colors_Init();
main_init();
}
void m_shutdown(void)
{
}
void m_draw(vector screensize)
{
static float oldtime;
frametime = time - oldtime;
if (!g_active) {
return;
}
if ((screensize[0] != g_vidsize[0]) || (screensize[1] != g_vidsize[1])) {
g_vidsize[0] = screensize[0];
g_vidsize[1] = screensize[1];
g_menuofs[0] = (g_vidsize[0] / 2) - 320;
g_menuofs[1] = (g_vidsize[1] / 2) - 240;
}
if (clientstate() == 2) {
drawfill([0,0], screensize, [0,0,0], 0.75f);
} else {
drawfill([0,0], screensize, [0,0,0], 1.0f);
drawpic([g_menuofs[0],g_menuofs[1]], g_bmp[SPLASH],
[640,480], [1,1,1], 1.0f);
}
main_draw();
oldtime = time;
}
/*void m_drawloading(vector screensize, float opaque)
{
}*/
float Menu_InputEvent(float evtype, float scanx, float chary, float devid)
{
switch (evtype) {
case IE_KEYDOWN:
if (chary == K_ESCAPE) {
if (clientstate() == 2) {
m_toggle(0);
}
}
break;
case IE_MOUSEABS:
g_mousepos[0] = scanx;
g_mousepos[1] = chary;
break;
case IE_MOUSEDELTA:
g_mousepos[0] += scanx;
g_mousepos[1] += chary;
break;
}
main_input(evtype, scanx, chary, devid);
return TRUE;
}
void m_display(void)
{
g_active = TRUE;
setkeydest(KEY_MENU);
setmousetarget(TARGET_MENU);
setcursormode(TRUE, "gfx/cursor");
}
/*
=================
m_hide
=================
*/
void m_hide(void)
{
g_active = FALSE;
setkeydest(KEY_GAME);
setmousetarget(TARGET_CLIENT);
setcursormode(FALSE);
}
/*
=================
m_toggle
=================
*/
void m_toggle(float fMode)
{
if (fMode == FALSE) {
m_hide();
} else {
m_display();
}
}
float m_consolecommand(string cmd)
{
tokenize(cmd);
switch (argv(0)) {
case "togglemenu":
m_display();
break;
default:
return FALSE;
}
return TRUE;
}