rpg-x2/ui/ui_specifyserver.c
2011-06-01 14:20:56 +02:00

269 lines
9.3 KiB
C

// Copyright (C) 1999-2000 Id Software, Inc.
//
#include "ui_local.h"
/*********************************************************************************
SPECIFY SERVER
*********************************************************************************/
#define ID_MAINMENU 100
#define ID_BACK 102
#define ID_SPECIFYSERVERGO 103
typedef struct
{
menuframework_s menu;
menubitmap_s mainmenu;
menubitmap_s back;
menufield_s domain;
menufield_s port;
menubitmap_s go;
qhandle_t corner_ul;
qhandle_t corner_ur;
qhandle_t corner_ll;
qhandle_t corner_lr;
} specifyserver_t;
static specifyserver_t s_specifyserver;
/*
=================
SpecifyServer_Event
=================
*/
static void SpecifyServer_Event( void* ptr, int event )
{
char buff[256];
if (event != QM_ACTIVATED)
{
return;
}
switch (((menucommon_s*)ptr)->id)
{
case ID_MAINMENU:
UI_PopMenu();
UI_MainMenu();
break;
case ID_SPECIFYSERVERGO:
if (s_specifyserver.domain.field.buffer[0])
{
strcpy(buff,s_specifyserver.domain.field.buffer);
if (s_specifyserver.port.field.buffer[0])
Com_sprintf( buff+strlen(buff), 128, ":%s", s_specifyserver.port.field.buffer );
trap_Cmd_ExecuteText( EXEC_APPEND, va( "connect %s\n", buff ) );
}
break;
case ID_BACK:
UI_PopMenu();
break;
}
}
/*
=================
SpecifyServer_Graphics
=================
*/
void SpecifyServer_Graphics (void)
{
UI_MenuFrame2(&s_specifyserver.menu);
trap_R_SetColor( colorTable[CT_LTBROWN1]);
UI_DrawHandlePic( 30,203, 47, 186, uis.whiteShader); // Left hand column of screen frame
trap_R_SetColor( colorTable[CT_LTPURPLE3]);
UI_DrawHandlePic(135, 100, 32, 32,s_specifyserver.corner_ul); // Upper left corner
UI_DrawHandlePic(574, 100, 32, 32,s_specifyserver.corner_ur); // Upper Right corner
UI_DrawHandlePic(135, 282, 32, 32,s_specifyserver.corner_ll); // corner
UI_DrawHandlePic(574, 282, 32, 32,s_specifyserver.corner_lr); // corner
// Address label
trap_R_SetColor( colorTable[CT_LTPURPLE3]);
UI_DrawHandlePic( 189,166, 385, 20, uis.whiteShader); // Background for Address label
trap_R_SetColor( colorTable[CT_BLACK]);
UI_DrawHandlePic( 253,168, 315, 16, uis.whiteShader); // Black square for data
// Port label
trap_R_SetColor( colorTable[CT_LTPURPLE3]);
UI_DrawHandlePic( 191, 214, 135, 20, uis.whiteShader); // Background for Port label
trap_R_SetColor( colorTable[CT_BLACK]);
UI_DrawHandlePic( 254, 216, 58, 16, uis.whiteShader); // Black square for data
// Frame around data
trap_R_SetColor( colorTable[CT_LTPURPLE3]);
UI_DrawHandlePic( 152,100, 426, 18, uis.whiteShader); // Top line
UI_DrawHandlePic( 135,120, 18, 171, uis.whiteShader); // Left side
UI_DrawHandlePic( 578,120, 18, 171, uis.whiteShader); // Right side
UI_DrawHandlePic( 160,286, 411, 18, uis.whiteShader); // Bottom line to left of Engage button
UI_DrawProportionalString( 169, 102, menu_normal_text[MNT_SERVERINFORMATION],UI_SMALLFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 27, "216",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 74, "1009-3",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 188, "9-3001",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 206, "10963",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 395, "10961",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
// Left rounded ends for buttons
trap_R_SetColor( colorTable[s_specifyserver.mainmenu.color]);
UI_DrawHandlePic(s_specifyserver.mainmenu.generic.x - 14, s_specifyserver.mainmenu.generic.y,
MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd);
trap_R_SetColor( colorTable[s_specifyserver.back.color]);
UI_DrawHandlePic(s_specifyserver.back.generic.x - 14, s_specifyserver.back.generic.y,
MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd);
}
/*
=================
SpecifyServer_MenuDraw
=================
*/
static void SpecifyServer_MenuDraw( void )
{
SpecifyServer_Graphics();
Menu_Draw( &s_specifyserver.menu );
}
/*
=================
SpecifyServer_MenuInit
=================
*/
void SpecifyServer_MenuInit( void )
{
// zero set all our globals
memset( &s_specifyserver, 0 ,sizeof(specifyserver_t) );
SpecifyServer_Cache();
s_specifyserver.menu.wrapAround = qtrue;
s_specifyserver.menu.fullscreen = qtrue;
s_specifyserver.menu.draw = SpecifyServer_MenuDraw;
s_specifyserver.menu.descX = MENU_DESC_X;
s_specifyserver.menu.descY = MENU_DESC_Y;
s_specifyserver.menu.titleX = MENU_TITLE_X;
s_specifyserver.menu.titleY = MENU_TITLE_Y;
s_specifyserver.menu.titleI = MNT_MULTIPLAYER_TITLE;
s_specifyserver.menu.footNoteEnum = MNT_SPECIFYSERVER;
s_specifyserver.mainmenu.generic.type = MTYPE_BITMAP;
s_specifyserver.mainmenu.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_specifyserver.mainmenu.generic.x = 110;
s_specifyserver.mainmenu.generic.y = 391;
s_specifyserver.mainmenu.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
s_specifyserver.mainmenu.generic.id = ID_MAINMENU;
s_specifyserver.mainmenu.generic.callback = SpecifyServer_Event;
s_specifyserver.mainmenu.width = MENU_BUTTON_MED_WIDTH;
s_specifyserver.mainmenu.height = MENU_BUTTON_MED_HEIGHT;
s_specifyserver.mainmenu.color = CT_DKPURPLE1;
s_specifyserver.mainmenu.color2 = CT_LTPURPLE1;
s_specifyserver.mainmenu.textX = 5;
s_specifyserver.mainmenu.textY = 2;
s_specifyserver.mainmenu.textEnum = MBT_MAINMENU;
s_specifyserver.mainmenu.textcolor = CT_BLACK;
s_specifyserver.mainmenu.textcolor2 = CT_WHITE;
s_specifyserver.back.generic.type = MTYPE_BITMAP;
s_specifyserver.back.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_specifyserver.back.generic.x = 110;
s_specifyserver.back.generic.y = 415;
s_specifyserver.back.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
s_specifyserver.back.generic.id = ID_BACK;
s_specifyserver.back.generic.callback = SpecifyServer_Event;
s_specifyserver.back.width = MENU_BUTTON_MED_WIDTH;
s_specifyserver.back.height = MENU_BUTTON_MED_HEIGHT;
s_specifyserver.back.color = CT_DKPURPLE1;
s_specifyserver.back.color2 = CT_LTPURPLE1;
s_specifyserver.back.textX = 5;
s_specifyserver.back.textY = 2;
s_specifyserver.back.textEnum = MBT_BACK;
s_specifyserver.back.textcolor = CT_BLACK;
s_specifyserver.back.textcolor2 = CT_WHITE;
s_specifyserver.domain.generic.type = MTYPE_FIELD;
s_specifyserver.domain.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_specifyserver.domain.generic.x = 255;
s_specifyserver.domain.generic.y = 168;
s_specifyserver.domain.field.widthInChars = 38;
s_specifyserver.domain.field.maxchars = 80;
s_specifyserver.domain.field.style = UI_SMALLFONT;
s_specifyserver.domain.field.titleEnum = MBT_ADDRESS;
s_specifyserver.domain.field.textcolor = CT_LTGOLD1;
s_specifyserver.domain.field.textcolor2 = CT_LTGOLD1;
s_specifyserver.domain.field.titlecolor = CT_LTGOLD1;
s_specifyserver.port.generic.type = MTYPE_FIELD;
s_specifyserver.port.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT|QMF_NUMBERSONLY;
s_specifyserver.port.generic.x = 255;
s_specifyserver.port.generic.y = 216;
s_specifyserver.port.field.widthInChars = 6;
s_specifyserver.port.field.maxchars = 5;
s_specifyserver.port.field.style = UI_SMALLFONT;
s_specifyserver.port.field.titleEnum = MBT_PORT;
s_specifyserver.port.field.textcolor = CT_LTGOLD1;
s_specifyserver.port.field.textcolor2 = CT_LTGOLD1;
s_specifyserver.port.field.titlecolor = CT_LTGOLD1;
s_specifyserver.go.generic.type = MTYPE_BITMAP;
s_specifyserver.go.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_specifyserver.go.generic.x = 462;
s_specifyserver.go.generic.y = 391;
s_specifyserver.go.generic.name = GRAPHIC_SQUARE;
s_specifyserver.go.generic.id = ID_SPECIFYSERVERGO;
s_specifyserver.go.generic.callback = SpecifyServer_Event;
s_specifyserver.go.width = 150;
s_specifyserver.go.height = 42;
s_specifyserver.go.color = CT_DKPURPLE1;
s_specifyserver.go.color2 = CT_LTPURPLE1;
s_specifyserver.go.textX = 5;
s_specifyserver.go.textY = 2;
s_specifyserver.go.textEnum = MBT_ENGAGEMULTIPLAYER;
s_specifyserver.go.textcolor = CT_BLACK;
s_specifyserver.go.textcolor2 = CT_WHITE;
Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.mainmenu );
Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.domain );
Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.port );
Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.go );
Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.back );
Com_sprintf( s_specifyserver.port.field.buffer, 6, "%i", 27960 );
}
/*
=================
SpecifyServer_Cache
=================
*/
void SpecifyServer_Cache( void )
{
s_specifyserver.corner_ul = trap_R_RegisterShaderNoMip("menu/common/corner_ul_18_18.tga");
s_specifyserver.corner_ur = trap_R_RegisterShaderNoMip("menu/common/corner_ur_18_18.tga");
s_specifyserver.corner_ll = trap_R_RegisterShaderNoMip("menu/common/corner_ll_18_18.tga");
s_specifyserver.corner_lr = trap_R_RegisterShaderNoMip("menu/common/corner_lr_18_18.tga");
}
/*
=================
UI_SpecifyServerMenu
=================
*/
void UI_SpecifyServerMenu( void )
{
SpecifyServer_MenuInit();
UI_PushMenu( &s_specifyserver.menu );
}