rpgxef/code/ui/ui_specifyserver.cpp

287 lines
9.2 KiB
C++
Raw Normal View History

// Copyright (C) 1999-2000 Id Software, Inc.
//
#include "ui_local.h"
#include "ui_logger.h"
/*********************************************************************************
SPECIFY SERVER
2014-11-09 12:53:48 +00:00
*********************************************************************************/
2014-11-09 12:53:48 +00:00
enum ui_specifyserverIDs_e {
ID_MAINMENU = 100,
ID_BACK = 102,
ID_SPECIFYSERVERGO
};
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
=================
*/
2014-11-09 12:53:48 +00:00
static void SpecifyServer_Event(void* ptr, int32_t event)
{
UI_LogFuncBegin();
char buff[256];
if (event != QM_ACTIVATED)
{
UI_LogFuncEnd();
return;
}
switch (((menucommon_s*)ptr)->id)
{
2014-11-09 12:53:48 +00:00
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;
}
UI_LogFuncEnd();
}
/*
=================
SpecifyServer_Graphics
=================
*/
2014-11-09 12:53:48 +00:00
void SpecifyServer_Graphics(void)
{
UI_LogFuncBegin();
UI_MenuFrame2(&s_specifyserver.menu);
2014-11-09 12:53:48 +00:00
trap_R_SetColor(colorTable[CT_LTBROWN1]);
UI_DrawHandlePic(30, 203, 47, 186, uis.whiteShader); // Left hand column of screen frame
2014-11-09 12:53:48 +00:00
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
2014-11-09 12:53:48 +00:00
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
2014-11-09 12:53:48 +00:00
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
2014-11-09 12:53:48 +00:00
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
2014-11-09 12:53:48 +00:00
UI_DrawProportionalString(169, 102, menu_normal_text[MNT_SERVERINFORMATION], UI_SMALLFONT, colorTable[CT_BLACK]);
2014-11-09 12:53:48 +00:00
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
2014-11-09 12:53:48 +00:00
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);
2014-11-09 12:53:48 +00:00
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);
UI_LogFuncEnd();
}
/*
=================
SpecifyServer_MenuDraw
=================
*/
2014-11-09 12:53:48 +00:00
static void SpecifyServer_MenuDraw(void)
{
UI_LogFuncBegin();
SpecifyServer_Graphics();
2014-11-09 12:53:48 +00:00
Menu_Draw(&s_specifyserver.menu);
UI_LogFuncEnd();
}
/*
=================
SpecifyServer_MenuInit
=================
*/
2014-11-09 12:53:48 +00:00
void SpecifyServer_MenuInit(void)
{
UI_LogFuncBegin();
// zero set all our globals
2014-11-09 12:53:48 +00:00
memset(&s_specifyserver, 0, sizeof(specifyserver_t));
SpecifyServer_Cache();
2014-11-09 12:53:48 +00:00
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);
UI_LogFuncEnd();
}
/*
=================
SpecifyServer_Cache
=================
*/
2014-11-09 12:53:48 +00:00
void SpecifyServer_Cache(void)
{
UI_LogFuncBegin();
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_LogFuncEnd();
}
/*
=================
UI_SpecifyServerMenu
=================
*/
2014-11-09 12:53:48 +00:00
void UI_SpecifyServerMenu(void)
{
UI_LogFuncBegin();
SpecifyServer_MenuInit();
2014-11-09 12:53:48 +00:00
UI_PushMenu(&s_specifyserver.menu);
UI_LogFuncEnd();
}