diff options
Diffstat (limited to 'src/ui_confirm.c')
-rw-r--r-- | src/ui_confirm.c | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/src/ui_confirm.c b/src/ui_confirm.c new file mode 100644 index 0000000..4a6b849 --- /dev/null +++ b/src/ui_confirm.c @@ -0,0 +1,129 @@ +/* +Copyright (C) 1997-2001 Id Software, Inc. + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "ui_local.h" + + +/* +======================================================================= + +CONFIRM MENU + +======================================================================= +*/ + +typedef struct { + menuFrameWork_t menu; + menuStatic_t text; + confirmAction_t action; +} confirmMenu_t; + +static confirmMenu_t m_confirm; + +static menuSound_t ConfirmKeydown( menuFrameWork_t *self, int key ) { + switch( key ) { + case 'Y': + case 'y': + m_confirm.action( qtrue ); + // UI_PopMenu(); + return QMS_IN; + case 'N': + case 'n': + m_confirm.action( qfalse ); + UI_PopMenu(); + return QMS_OUT; + default: + return QMS_NOTHANDLED; + } +} + +void M_Menu_Confirm( const char *text, confirmAction_t action ) { + memset( &m_confirm, 0, sizeof( m_confirm ) ); + + m_confirm.menu.keydown = ConfirmKeydown; + m_confirm.menu.image = uis.backgroundHandle; + *( uint32_t * )m_confirm.menu.color = *( uint32_t * )colorBlack; + + m_confirm.text.generic.type = MTYPE_STATIC; + m_confirm.text.generic.name = ( char * )text; + m_confirm.text.generic.uiFlags = UI_CENTER; + + m_confirm.action = action; + + Menu_AddItem( &m_confirm.menu, &m_confirm.text ); + + UI_PushMenu( &m_confirm.menu ); + +} + +/* +======================================================================= + +ERROR MENU + +======================================================================= +*/ + +typedef struct m_errorMenu_s { + menuFrameWork_t menu; + menuStatic_t text; +} m_errorMenu_t; + +static m_errorMenu_t m_error; + +static menuSound_t ErrorKeydown( menuFrameWork_t *self, int key ) { + UI_PopMenu(); + return QMS_OUT; +} + +void M_Menu_Error( error_type_t type, const char *text ) { + color_t color; + + if( !text ) { + return; + } + switch( type ) { + case ERR_SILENT: + return; + case ERR_DROP: + *( uint32_t * )color = *( uint32_t * )colorRed; + break; + default: + *( uint32_t * )color = *( uint32_t * )colorYellow; + break; + } + + memset( &m_error, 0, sizeof( m_error ) ); + + m_error.menu.keydown = ErrorKeydown; + m_error.menu.image = uis.backgroundHandle; + *( uint32_t * )m_error.menu.color = *( uint32_t * )colorBlack; + + m_error.text.generic.type = MTYPE_STATIC; + m_error.text.generic.flags = QMF_CUSTOM_COLOR; + m_error.text.generic.name = ( char * )text; + m_error.text.generic.uiFlags = UI_CENTER|UI_MULTILINE; + *( uint32_t * )m_error.text.generic.color = *( uint32_t * )color; + + Menu_AddItem( &m_error.menu, ( void * )&m_error.text ); + + UI_PushMenu( &m_error.menu ); +} + |