mirror of
https://github.com/UberGames/rpgxEF.git
synced 2024-11-10 23:31:35 +00:00
a39565b783
... not quite content with where the project files lie but it is ok for now. ... compiling works fine so far (only tested mingw32 right now)
275 lines
7.6 KiB
C
275 lines
7.6 KiB
C
/**********************************************************************
|
|
UI_MOTD.C
|
|
|
|
The MotD thing
|
|
RPG-X - Marcin - 15/12/2008
|
|
**********************************************************************/
|
|
|
|
#include "../qcommon/stv_version.h"
|
|
#include "ui_local.h"
|
|
|
|
#define ID_CONTINUE 10
|
|
#define ID_DISCONNECT 11
|
|
#define ID_ARROWUP 100
|
|
#define ID_ARROWDOWN 101
|
|
|
|
#define MIN_MOTD_LINES 20
|
|
#define MAX_MOTD_LINES 256
|
|
|
|
extern void InGame_LeaveAction( qboolean result );
|
|
|
|
char motdtext[MAX_MOTD_LINES][256];
|
|
int motdtextnum;
|
|
|
|
typedef struct {
|
|
menuframework_s menu;
|
|
menubitmap_s quitmenu;
|
|
menubitmap_s disconnect;
|
|
menubitmap_s arrowdwn;
|
|
menubitmap_s arrowup;
|
|
|
|
int scrollnum;
|
|
qhandle_t halfroundl_22;
|
|
} motdstuff_t;
|
|
|
|
static motdstuff_t s_motdstuff;
|
|
|
|
/*
|
|
=================
|
|
M_Motd_Event
|
|
=================
|
|
*/
|
|
static void M_MotdMenu_Event( void *ptr, int notification )
|
|
{
|
|
if( notification != QM_ACTIVATED ) {
|
|
return;
|
|
}
|
|
|
|
switch ( ((menucommon_s*)ptr)->id ) {
|
|
case ID_DISCONNECT:
|
|
UI_ConfirmMenu( menu_normal_text[MNT_LEAVE_MATCH], 0, InGame_LeaveAction );
|
|
break;
|
|
case ID_CONTINUE:
|
|
UI_PopMenu();
|
|
break;
|
|
case ID_ARROWUP:
|
|
if ( s_motdstuff.scrollnum > 0 ) {
|
|
s_motdstuff.scrollnum -= 3;
|
|
}
|
|
|
|
break;
|
|
case ID_ARROWDOWN:
|
|
if ( s_motdstuff.scrollnum + MIN_MOTD_LINES < motdtextnum ) {
|
|
s_motdstuff.scrollnum += 3;
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
=================
|
|
MotdMenu_Key
|
|
=================
|
|
*/
|
|
sfxHandle_t MotdMenu_Key( int key )
|
|
{
|
|
return ( Menu_DefaultKey( &s_motdstuff.menu, key ) );
|
|
}
|
|
|
|
/*
|
|
=================
|
|
M_MotdMenu_Graphics
|
|
=================
|
|
*/
|
|
static void M_MotdMenu_Graphics( void )
|
|
{
|
|
int i;
|
|
int x = 15;
|
|
int y = 15;
|
|
|
|
for (i = s_motdstuff.scrollnum; i < motdtextnum && i < (MIN_MOTD_LINES + s_motdstuff.scrollnum); ++i) {
|
|
UI_DrawProportionalString( x, y, motdtext[i], UI_SMALLFONT | UI_LEFT, colorTable[CT_WHITE]);
|
|
y += 21;
|
|
}
|
|
|
|
//UI_FrameBottom_Graphics(); // Bottom two thirds
|
|
|
|
// Print version
|
|
UI_DrawProportionalString( 371, 445, Q3_VERSION, UI_TINYFONT, colorTable[CT_BLACK]);
|
|
|
|
trap_R_SetColor( colorTable[s_motdstuff.quitmenu.color] );
|
|
UI_DrawHandlePic(s_motdstuff.quitmenu.generic.x - 14,
|
|
s_motdstuff.quitmenu.generic.y,
|
|
MENU_BUTTON_MED_HEIGHT, s_motdstuff.quitmenu.height, uis.graphicButtonLeftEnd);
|
|
UI_DrawHandlePic(s_motdstuff.disconnect.generic.x - 14,
|
|
s_motdstuff.disconnect.generic.y,
|
|
MENU_BUTTON_MED_HEIGHT, s_motdstuff.disconnect.height, uis.graphicButtonLeftEnd);
|
|
|
|
trap_R_SetColor( colorTable[CT_LTBLUE1]); //LTBROWN1]);
|
|
UI_DrawHandlePic( 28, 440, 287, 17, uis.whiteShader); // Bottom front Line
|
|
|
|
UI_DrawHandlePic( 0, 440, 25, 25, s_motdstuff.halfroundl_22);
|
|
UI_DrawHandlePic( 319, 440, 25, 25, uis.halfroundr_22);
|
|
|
|
trap_R_SetColor(NULL);
|
|
}
|
|
|
|
/*
|
|
===============
|
|
MotdMenu_Draw
|
|
===============
|
|
*/
|
|
static void MotdMenu_Draw( void )
|
|
{
|
|
M_MotdMenu_Graphics();
|
|
Menu_Draw( &s_motdstuff.menu );
|
|
}
|
|
|
|
/*
|
|
===============
|
|
UI_MotdMenu_Cache
|
|
===============
|
|
*/
|
|
void UI_MotdMenu_Cache( void )
|
|
{
|
|
s_motdstuff.halfroundl_22 = trap_R_RegisterShaderNoMip( "menu/common/halfroundl_22.tga" );
|
|
}
|
|
|
|
/*
|
|
===============
|
|
MotdMenu_Init
|
|
===============
|
|
*/
|
|
void MotdMenu_Init( void )
|
|
{
|
|
s_motdstuff.menu.nitems = 0;
|
|
s_motdstuff.menu.draw = MotdMenu_Draw;
|
|
s_motdstuff.menu.key = MotdMenu_Key;
|
|
s_motdstuff.menu.wrapAround = qtrue;
|
|
s_motdstuff.menu.descX = MENU_DESC_X;
|
|
s_motdstuff.menu.descY = MENU_DESC_Y;
|
|
s_motdstuff.menu.titleX = MENU_TITLE_X;
|
|
s_motdstuff.menu.titleY = MENU_TITLE_Y;
|
|
|
|
s_motdstuff.quitmenu.generic.type = MTYPE_BITMAP;
|
|
s_motdstuff.quitmenu.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_motdstuff.quitmenu.generic.x = 500;
|
|
s_motdstuff.quitmenu.generic.y = 440;
|
|
s_motdstuff.quitmenu.generic.name = GRAPHIC_BUTTONRIGHT;
|
|
s_motdstuff.quitmenu.generic.id = ID_CONTINUE;
|
|
s_motdstuff.quitmenu.generic.callback = M_MotdMenu_Event;
|
|
s_motdstuff.quitmenu.width = MENU_BUTTON_MED_WIDTH;
|
|
s_motdstuff.quitmenu.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_motdstuff.quitmenu.color = CT_DKORANGE;
|
|
s_motdstuff.quitmenu.color2 = CT_LTORANGE;
|
|
s_motdstuff.quitmenu.textX = MENU_BUTTON_TEXT_X;
|
|
s_motdstuff.quitmenu.textY = MENU_BUTTON_TEXT_Y;
|
|
s_motdstuff.quitmenu.textEnum = MBT_CONTINUE;
|
|
s_motdstuff.quitmenu.textcolor = CT_BLACK;
|
|
s_motdstuff.quitmenu.textcolor2 = CT_WHITE;
|
|
|
|
s_motdstuff.disconnect.generic.type = MTYPE_BITMAP;
|
|
s_motdstuff.disconnect.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_motdstuff.disconnect.generic.x = 350;
|
|
s_motdstuff.disconnect.generic.y = 440;
|
|
s_motdstuff.disconnect.generic.name = GRAPHIC_BUTTONRIGHT;
|
|
s_motdstuff.disconnect.generic.id = ID_DISCONNECT;
|
|
s_motdstuff.disconnect.generic.callback = M_MotdMenu_Event;
|
|
s_motdstuff.disconnect.width = MENU_BUTTON_MED_WIDTH;
|
|
s_motdstuff.disconnect.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_motdstuff.disconnect.color = CT_DKORANGE;
|
|
s_motdstuff.disconnect.color2 = CT_LTORANGE;
|
|
s_motdstuff.disconnect.textX = MENU_BUTTON_TEXT_X;
|
|
s_motdstuff.disconnect.textY = MENU_BUTTON_TEXT_Y;
|
|
s_motdstuff.disconnect.textEnum = MBT_INGAMELEAVE;
|
|
s_motdstuff.disconnect.textcolor = CT_BLACK;
|
|
s_motdstuff.disconnect.textcolor2 = CT_WHITE;
|
|
|
|
s_motdstuff.arrowup.generic.type = MTYPE_BITMAP;
|
|
s_motdstuff.arrowup.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_motdstuff.arrowup.generic.x = 610;
|
|
s_motdstuff.arrowup.generic.y = 10;
|
|
s_motdstuff.arrowup.generic.name = "menu/common/arrow_up_16.tga";
|
|
s_motdstuff.arrowup.generic.id = ID_ARROWUP;
|
|
s_motdstuff.arrowup.generic.callback = M_MotdMenu_Event;
|
|
s_motdstuff.arrowup.width = 16;
|
|
s_motdstuff.arrowup.height = 16;
|
|
s_motdstuff.arrowup.color = CT_DKBLUE1;
|
|
s_motdstuff.arrowup.color2 = CT_LTBLUE1;
|
|
s_motdstuff.arrowup.textX = 0;
|
|
s_motdstuff.arrowup.textY = 0;
|
|
s_motdstuff.arrowup.textEnum = MBT_NONE;
|
|
s_motdstuff.arrowup.textcolor = CT_BLACK;
|
|
s_motdstuff.arrowup.textcolor2 = CT_WHITE;
|
|
|
|
s_motdstuff.arrowdwn.generic.type = MTYPE_BITMAP;
|
|
s_motdstuff.arrowdwn.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_motdstuff.arrowdwn.generic.x = 610;
|
|
s_motdstuff.arrowdwn.generic.y = 420;
|
|
s_motdstuff.arrowdwn.generic.name = "menu/common/arrow_dn_16.tga";
|
|
s_motdstuff.arrowdwn.generic.id = ID_ARROWDOWN;
|
|
s_motdstuff.arrowdwn.generic.callback = M_MotdMenu_Event;
|
|
s_motdstuff.arrowdwn.width = 16;
|
|
s_motdstuff.arrowdwn.height = 16;
|
|
s_motdstuff.arrowdwn.color = CT_DKBLUE1;
|
|
s_motdstuff.arrowdwn.color2 = CT_LTBLUE1;
|
|
s_motdstuff.arrowdwn.textX = 0;
|
|
s_motdstuff.arrowdwn.textY = 0;
|
|
s_motdstuff.arrowdwn.textEnum = MBT_NONE;
|
|
s_motdstuff.arrowdwn.textcolor = CT_BLACK;
|
|
s_motdstuff.arrowdwn.textcolor2 = CT_WHITE;
|
|
|
|
Menu_AddItem( &s_motdstuff.menu, &s_motdstuff.quitmenu );
|
|
Menu_AddItem( &s_motdstuff.menu, &s_motdstuff.disconnect );
|
|
Menu_AddItem( &s_motdstuff.menu, &s_motdstuff.arrowup );
|
|
Menu_AddItem( &s_motdstuff.menu, &s_motdstuff.arrowdwn );
|
|
}
|
|
|
|
/*
|
|
===============
|
|
MotdReset
|
|
===============
|
|
*/
|
|
void MotdReset( void )
|
|
{
|
|
int i;
|
|
|
|
motdtextnum = 0;
|
|
for ( i = 0; i < MAX_MOTD_LINES; ++i ) {
|
|
*motdtext[i] = '\0';
|
|
}
|
|
}
|
|
|
|
/*
|
|
===============
|
|
MotdReceiveLine
|
|
===============
|
|
*/
|
|
void MotdReceiveLine( const char *txt )
|
|
{
|
|
Q_strncpyz(motdtext[motdtextnum], txt, sizeof (motdtext[motdtextnum]));
|
|
motdtextnum++;
|
|
}
|
|
|
|
/*
|
|
===============
|
|
UI_MotdMenu
|
|
===============
|
|
*/
|
|
void UI_MotdMenu( void )
|
|
{
|
|
memset( &s_motdstuff, 0, sizeof( s_motdstuff ) );
|
|
|
|
uis.menusp = 0;
|
|
|
|
ingameFlag = qtrue;
|
|
|
|
Mouse_Show();
|
|
|
|
UI_MotdMenu_Cache();
|
|
|
|
MotdMenu_Init();
|
|
|
|
UI_PushMenu( &s_motdstuff.menu );
|
|
|
|
Menu_AdjustCursor( &s_motdstuff.menu, 1 );
|
|
}
|