This repository has been archived on 2022-06-27. You can view files and clone it, but cannot push or open issues or pull requests.
Xash3DArchive/engine/uimenu/ui_main.c

111 lines
2.5 KiB
C

//=======================================================================
// Copyright XashXT Group 2007 ©
// ui_main.c - progs user interface
//=======================================================================
#include "uimenu.h"
bool ui_active = false;
void UI_KeyEvent( int key )
{
const char *ascii = Key_KeynumToString(key);
PRVM_Begin;
PRVM_SetProg( PRVM_MENUPROG );
// set time
*prog->time = cls.realtime;
// setup args
PRVM_G_FLOAT(OFS_PARM0) = key;
PRVM_G_INT(OFS_PARM1) = PRVM_SetEngineString(ascii);
PRVM_ExecuteProgram (prog->globals.ui->m_keydown, "QC function m_keydown is missing");
PRVM_End;
switch( key )
{
case K_ESCAPE:
UI_HideMenu();
break;
}
}
void UI_Draw( void )
{
PRVM_Begin;
PRVM_SetProg(PRVM_MENUPROG);
// set time
*prog->time = cls.realtime;
PRVM_ExecuteProgram (prog->globals.ui->m_draw, "QC function m_draw is missing");
PRVM_End;
}
void UI_ShowMenu( void )
{
PRVM_Begin;
PRVM_SetProg(PRVM_MENUPROG);
// set time
*prog->time = cls.realtime;
ui_active = true;
PRVM_ExecuteProgram (prog->globals.ui->m_show, "QC function m_toggle is missing");
PRVM_End;
}
void UI_HideMenu( void )
{
PRVM_Begin;
PRVM_SetProg(PRVM_MENUPROG);
// set time
*prog->time = cls.realtime;
ui_active = false;
PRVM_ExecuteProgram (prog->globals.ui->m_hide, "QC function m_toggle is missing");
PRVM_End;
}
void UI_Shutdown( void )
{
PRVM_Begin;
PRVM_SetProg(PRVM_MENUPROG);
// set time
//*prog->time = cls.realtime;
PRVM_ExecuteProgram (prog->globals.ui->m_shutdown, "QC function m_shutdown is missing");
// reset key_dest
cls.key_dest = key_game;
// AK not using this cause Im not sure whether this is useful at all instead :
PRVM_ResetProg();
PRVM_End;
}
void UI_Init( void )
{
PRVM_Begin;
PRVM_InitProg( PRVM_MENUPROG );
prog->progs_mempool = Mem_AllocPool( "Uimenu Progs" );
prog->builtins = vm_ui_builtins;
prog->numbuiltins = vm_ui_numbuiltins;
prog->edictprivate_size = sizeof(ui_edict_t);
prog->limit_edicts = UI_MAX_EDICTS;
prog->name = "uimenu";
prog->num_edicts = 1;
prog->loadintoworld = false;
prog->init_cmd = VM_Cmd_Init;
prog->reset_cmd = VM_Cmd_Reset;
prog->error_cmd = VM_Error;
PRVM_LoadProgs( GI->uimenu_prog, 0, NULL, UI_NUM_REQFIELDS, ui_reqfields );
*prog->time = cls.realtime;
PRVM_ExecuteProgram (prog->globals.ui->m_init, "QC function m_init is missing");
PRVM_End;
}