419 lines
8.8 KiB
C++
419 lines
8.8 KiB
C++
|
#include "ui_local.h"
|
||
|
#include "gameinfo.h"
|
||
|
|
||
|
//===================================================================
|
||
|
//
|
||
|
// CDKey Menu
|
||
|
//
|
||
|
//===================================================================
|
||
|
|
||
|
static int currentFont;
|
||
|
|
||
|
// menu action identifiers
|
||
|
#define ID_MAINMENU 100
|
||
|
#define ID_CONTROLS 101
|
||
|
#define ID_VIDEO 102
|
||
|
#define ID_SOUND 103
|
||
|
#define ID_CDKEY 104
|
||
|
|
||
|
#define ID_FONT_SMALL 301
|
||
|
#define ID_FONT_MEDIUM 302
|
||
|
#define ID_FONT_LARGE 303
|
||
|
#define ID_FONT_GRID 304
|
||
|
|
||
|
static menuframework_s s_fonts_menu;
|
||
|
static menubitmap_s s_cdkey_mainmenu;
|
||
|
static menubitmap_s s_cdkey_controls;
|
||
|
static menubitmap_s s_cdkey_video;
|
||
|
static menubitmap_s s_cdkey_sound;
|
||
|
static menubitmap_s s_cdkey_game;
|
||
|
static menubitmap_s s_cdkey_cdkey;
|
||
|
static menubitmap_s s_fonts_small;
|
||
|
static menubitmap_s s_fonts_medium;
|
||
|
static menubitmap_s s_fonts_large;
|
||
|
static menubitmap_s s_fonts_grid;
|
||
|
|
||
|
/*
|
||
|
=================
|
||
|
M_GridFont_Graphics
|
||
|
=================
|
||
|
*/
|
||
|
void M_GridFont_Graphics (void)
|
||
|
{
|
||
|
int x,y,color;
|
||
|
int i,i2,xInc;
|
||
|
char character[2];
|
||
|
|
||
|
character[1] = NULL;
|
||
|
y = 190;
|
||
|
color = CT_LTORANGE;
|
||
|
for (i=32;i<256;)
|
||
|
{
|
||
|
x = 100;
|
||
|
for (i2=0;i2<30;++i2,++i)
|
||
|
{
|
||
|
character[0] = i;
|
||
|
UI_DrawString(x, y, character, UI_SMALLFONT, colorTable[CT_WHITE]);
|
||
|
|
||
|
xInc =SMALLCHAR_WIDTH + 1;
|
||
|
|
||
|
if (xInc > 0)
|
||
|
{
|
||
|
x += xInc;
|
||
|
}
|
||
|
|
||
|
if (i>=256)
|
||
|
{
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
y += (SMALLCHAR_HEIGHT * 1.25);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
=================
|
||
|
M_LargeFont_Graphics
|
||
|
=================
|
||
|
*/
|
||
|
void M_LargeFont_Graphics (void)
|
||
|
{
|
||
|
int x,y,color;
|
||
|
int i,i2,xInc;
|
||
|
char character[2];
|
||
|
|
||
|
character[1] = NULL;
|
||
|
y = 190;
|
||
|
color = CT_LTORANGE;
|
||
|
for (i=32;i<256;)
|
||
|
{
|
||
|
x = 100;
|
||
|
for (i2=0;i2<30;++i2,++i)
|
||
|
{
|
||
|
character[0] = i;
|
||
|
UI_DrawProportionalString( x, y, character, UI_BIGFONT, colorTable[color] );
|
||
|
xInc = UI_ProportionalStringWidth( character,UI_BIGFONT) + 1;
|
||
|
|
||
|
if (xInc > 0)
|
||
|
{
|
||
|
x += xInc;
|
||
|
}
|
||
|
|
||
|
if (i>=256)
|
||
|
{
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
y += 30;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
=================
|
||
|
M_MediumFont_Graphics
|
||
|
=================
|
||
|
*/
|
||
|
void M_MediumFont_Graphics (void)
|
||
|
{
|
||
|
int x,y,color;
|
||
|
int i,i2,xInc;
|
||
|
char character[2];
|
||
|
|
||
|
character[1] = NULL;
|
||
|
y = 190;
|
||
|
color = CT_LTORANGE;
|
||
|
for (i=32;i<256;)
|
||
|
{
|
||
|
x = 100;
|
||
|
for (i2=0;i2<30;++i2,++i)
|
||
|
{
|
||
|
character[0] = i;
|
||
|
UI_DrawProportionalString( x, y, character, UI_SMALLFONT, colorTable[color] );
|
||
|
xInc = UI_ProportionalStringWidth( character,UI_SMALLFONT) + 1;
|
||
|
|
||
|
if (xInc > 0)
|
||
|
{
|
||
|
x += xInc;
|
||
|
}
|
||
|
|
||
|
if (i>=256)
|
||
|
{
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
y += 24;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
=================
|
||
|
M_SmallFont_Graphics
|
||
|
=================
|
||
|
*/
|
||
|
void M_SmallFont_Graphics (void)
|
||
|
{
|
||
|
int x,y,color;
|
||
|
int i,i2,xInc;
|
||
|
char character[2];
|
||
|
|
||
|
character[1] = NULL;
|
||
|
y = 190;
|
||
|
color = CT_LTORANGE;
|
||
|
for (i=32;i<256;)
|
||
|
{
|
||
|
x = 100;
|
||
|
for (i2=0;i2<30;++i2,++i)
|
||
|
{
|
||
|
character[0] = i;
|
||
|
UI_DrawProportionalString( x, y, character, UI_TINYFONT, colorTable[color] );
|
||
|
xInc = UI_ProportionalStringWidth( character,UI_TINYFONT) + 1;
|
||
|
|
||
|
if (xInc > 0)
|
||
|
{
|
||
|
x += xInc;
|
||
|
}
|
||
|
|
||
|
if (i>=256)
|
||
|
{
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
y += 16;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/*
|
||
|
=================
|
||
|
M_Fonts_Graphics
|
||
|
=================
|
||
|
*/
|
||
|
void M_Fonts_Graphics (void)
|
||
|
{
|
||
|
|
||
|
UI_MenuFrame(&s_fonts_menu);
|
||
|
|
||
|
UI_Setup_MenuButtons();
|
||
|
|
||
|
ui.R_SetColor( colorTable[CT_LTBROWN1]);
|
||
|
UI_DrawHandlePic(30,203, 47, 186, uis.whiteShader); // Long left column square on bottom 3rd
|
||
|
|
||
|
switch (currentFont)
|
||
|
{
|
||
|
case ID_FONT_SMALL :
|
||
|
M_SmallFont_Graphics();
|
||
|
break;
|
||
|
case ID_FONT_MEDIUM :
|
||
|
M_MediumFont_Graphics();
|
||
|
break;
|
||
|
case ID_FONT_LARGE :
|
||
|
M_LargeFont_Graphics();
|
||
|
break;
|
||
|
|
||
|
case ID_FONT_GRID :
|
||
|
M_GridFont_Graphics();
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
=================
|
||
|
M_Fonts_MenuDraw
|
||
|
=================
|
||
|
*/
|
||
|
void M_Fonts_MenuDraw (void)
|
||
|
{
|
||
|
M_Fonts_Graphics();
|
||
|
|
||
|
Menu_Draw( &s_fonts_menu );
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
=================
|
||
|
Fonts_MenuEvent
|
||
|
=================
|
||
|
*/
|
||
|
static void Fonts_MenuEvent( void* ptr, int notification )
|
||
|
{
|
||
|
menuframework_s* m;
|
||
|
|
||
|
if (notification != QM_ACTIVATED)
|
||
|
return;
|
||
|
|
||
|
m = ((menucommon_s*)ptr)->parent;
|
||
|
|
||
|
switch (((menucommon_s*)ptr)->id)
|
||
|
{
|
||
|
case ID_FONT_SMALL:
|
||
|
currentFont = ID_FONT_SMALL;
|
||
|
break;
|
||
|
case ID_FONT_MEDIUM:
|
||
|
currentFont = ID_FONT_MEDIUM;
|
||
|
break;
|
||
|
case ID_FONT_LARGE:
|
||
|
currentFont = ID_FONT_LARGE;
|
||
|
break;
|
||
|
case ID_FONT_GRID:
|
||
|
currentFont = ID_FONT_GRID;
|
||
|
break;
|
||
|
case ID_VIDEO:
|
||
|
UI_PopMenu();
|
||
|
UI_VideoDataMenu();
|
||
|
return;
|
||
|
case ID_CONTROLS:
|
||
|
UI_PopMenu();
|
||
|
UI_SetupWeaponsMenu();
|
||
|
break;
|
||
|
case ID_SOUND:
|
||
|
UI_PopMenu();
|
||
|
UI_SoundMenu();
|
||
|
break;
|
||
|
case ID_CDKEY:
|
||
|
UI_PopMenu();
|
||
|
UI_CDKeyMenu();
|
||
|
break;
|
||
|
case ID_MAINMENU:
|
||
|
UI_PopMenu();
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
=================
|
||
|
M_Fonts_MenuKey
|
||
|
=================
|
||
|
*/
|
||
|
static sfxHandle_t M_Fonts_MenuKey( int key )
|
||
|
{
|
||
|
return Menu_DefaultKey( &s_fonts_menu, key );
|
||
|
}
|
||
|
|
||
|
|
||
|
/*
|
||
|
===============
|
||
|
UI_FontsMenu_Cache
|
||
|
===============
|
||
|
*/
|
||
|
void UI_FontsMenu_Cache( void )
|
||
|
{
|
||
|
;
|
||
|
}
|
||
|
|
||
|
|
||
|
/*
|
||
|
===============
|
||
|
FontsMenu_Init
|
||
|
===============
|
||
|
*/
|
||
|
void FontsMenu_Init(void)
|
||
|
{
|
||
|
UI_FontsMenu_Cache();
|
||
|
|
||
|
s_fonts_menu.nitems = 0;
|
||
|
s_fonts_menu.wrapAround = qtrue;
|
||
|
s_fonts_menu.draw = M_Fonts_MenuDraw;
|
||
|
s_fonts_menu.key = M_Fonts_MenuKey;
|
||
|
s_fonts_menu.fullscreen = qtrue;
|
||
|
s_fonts_menu.wrapAround = qfalse;
|
||
|
s_fonts_menu.descX = MENU_DESC_X;
|
||
|
s_fonts_menu.descY = MENU_DESC_Y;
|
||
|
s_fonts_menu.titleX = MENU_TITLE_X;
|
||
|
s_fonts_menu.titleY = MENU_TITLE_Y;
|
||
|
s_fonts_menu.titleI = MNT_CONTROLSMENU_TITLE;
|
||
|
s_fonts_menu.footNoteEnum = MNT_FONTS_DEVELOPER;
|
||
|
|
||
|
SetupMenu_TopButtons(&s_fonts_menu,MENU_FONTS,NULL);
|
||
|
|
||
|
s_fonts_small.generic.type = MTYPE_BITMAP;
|
||
|
s_fonts_small.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
||
|
s_fonts_small.generic.x = 100;
|
||
|
s_fonts_small.generic.y = 170;
|
||
|
s_fonts_small.generic.name = GRAPHIC_BUTTONRIGHT;
|
||
|
s_fonts_small.generic.id = ID_FONT_SMALL;
|
||
|
s_fonts_small.generic.callback = Fonts_MenuEvent;
|
||
|
s_fonts_small.width = 100;
|
||
|
s_fonts_small.height = MENU_BUTTON_MED_HEIGHT;
|
||
|
s_fonts_small.color = CT_DKPURPLE1;
|
||
|
s_fonts_small.color2 = CT_LTPURPLE1;
|
||
|
s_fonts_small.textX = 5;
|
||
|
s_fonts_small.textY = 2;
|
||
|
s_fonts_small.textEnum = MBT_FONTSSMALL;
|
||
|
s_fonts_small.textcolor = CT_BLACK;
|
||
|
s_fonts_small.textcolor2 = CT_WHITE;
|
||
|
|
||
|
s_fonts_medium.generic.type = MTYPE_BITMAP;
|
||
|
s_fonts_medium.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
||
|
s_fonts_medium.generic.x = 250;
|
||
|
s_fonts_medium.generic.y = 170;
|
||
|
s_fonts_medium.generic.name = GRAPHIC_BUTTONRIGHT;
|
||
|
s_fonts_medium.generic.id = ID_FONT_MEDIUM;
|
||
|
s_fonts_medium.generic.callback = Fonts_MenuEvent;
|
||
|
s_fonts_medium.width = 100;
|
||
|
s_fonts_medium.height = MENU_BUTTON_MED_HEIGHT;
|
||
|
s_fonts_medium.color = CT_DKPURPLE1;
|
||
|
s_fonts_medium.color2 = CT_LTPURPLE1;
|
||
|
s_fonts_medium.textX = 5;
|
||
|
s_fonts_medium.textY = 2;
|
||
|
s_fonts_medium.textEnum = MBT_FONTSMEDIUM;
|
||
|
s_fonts_medium.textcolor = CT_BLACK;
|
||
|
s_fonts_medium.textcolor2 = CT_WHITE;
|
||
|
|
||
|
s_fonts_large.generic.type = MTYPE_BITMAP;
|
||
|
s_fonts_large.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
||
|
s_fonts_large.generic.x = 400;
|
||
|
s_fonts_large.generic.y = 170;
|
||
|
s_fonts_large.generic.name = GRAPHIC_BUTTONRIGHT;
|
||
|
s_fonts_large.generic.id = ID_FONT_LARGE;
|
||
|
s_fonts_large.generic.callback = Fonts_MenuEvent;
|
||
|
s_fonts_large.width = 100;
|
||
|
s_fonts_large.height = MENU_BUTTON_MED_HEIGHT;
|
||
|
s_fonts_large.color = CT_DKPURPLE1;
|
||
|
s_fonts_large.color2 = CT_LTPURPLE1;
|
||
|
s_fonts_large.textX = 5;
|
||
|
s_fonts_large.textY = 2;
|
||
|
s_fonts_large.textEnum = MBT_FONTSLARGE;
|
||
|
s_fonts_large.textcolor = CT_BLACK;
|
||
|
s_fonts_large.textcolor2 = CT_WHITE;
|
||
|
|
||
|
s_fonts_grid.generic.type = MTYPE_BITMAP;
|
||
|
s_fonts_grid.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
||
|
s_fonts_grid.generic.x = 550;
|
||
|
s_fonts_grid.generic.y = 170;
|
||
|
s_fonts_grid.generic.name = GRAPHIC_BUTTONRIGHT;
|
||
|
s_fonts_grid.generic.id = ID_FONT_GRID;
|
||
|
s_fonts_grid.generic.callback = Fonts_MenuEvent;
|
||
|
s_fonts_grid.width = 100;
|
||
|
s_fonts_grid.height = MENU_BUTTON_MED_HEIGHT;
|
||
|
s_fonts_grid.color = CT_DKPURPLE1;
|
||
|
s_fonts_grid.color2 = CT_LTPURPLE1;
|
||
|
s_fonts_grid.textX = 5;
|
||
|
s_fonts_grid.textY = 2;
|
||
|
s_fonts_grid.textEnum = MBT_FONTSGRID;
|
||
|
s_fonts_grid.textcolor = CT_BLACK;
|
||
|
s_fonts_grid.textcolor2 = CT_WHITE;
|
||
|
|
||
|
Menu_AddItem( &s_fonts_menu, ( void * )&s_fonts_small);
|
||
|
Menu_AddItem( &s_fonts_menu, ( void * )&s_fonts_medium);
|
||
|
Menu_AddItem( &s_fonts_menu, ( void * )&s_fonts_large);
|
||
|
Menu_AddItem( &s_fonts_menu, ( void * )&s_fonts_grid);
|
||
|
|
||
|
currentFont = ID_FONT_SMALL;
|
||
|
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
===============
|
||
|
UI_FontsMenu
|
||
|
===============
|
||
|
*/
|
||
|
void UI_FontsMenu( void)
|
||
|
{
|
||
|
|
||
|
FontsMenu_Init();
|
||
|
|
||
|
UI_PushMenu( &s_fonts_menu);
|
||
|
}
|
||
|
|