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)
606 lines
16 KiB
C
606 lines
16 KiB
C
/**********************************************************************
|
|
UI_TURBOLIFT.C
|
|
|
|
User interface trigger from within game
|
|
**********************************************************************/
|
|
#include "ui_local.h"
|
|
|
|
typedef struct
|
|
{
|
|
int deckNum;
|
|
char deckDesc[MAX_QPATH];
|
|
} deckData_t;
|
|
|
|
// Data for Closing Credits Menu
|
|
typedef struct //static
|
|
{
|
|
menuframework_s menu;
|
|
int maxDecks;
|
|
int chosenDeck;
|
|
int highLightedDeck;
|
|
sfxHandle_t openingVoice;
|
|
menubitmap_s quitmenu;
|
|
menubitmap_s engage;
|
|
menubitmap_s deck1;
|
|
menubitmap_s deck2;
|
|
menubitmap_s deck3;
|
|
menubitmap_s deck4;
|
|
menubitmap_s deck5;
|
|
menubitmap_s deck6;
|
|
menubitmap_s deck7;
|
|
menubitmap_s deck8;
|
|
menubitmap_s deck9;
|
|
menubitmap_s deck10;
|
|
menubitmap_s deck11;
|
|
menubitmap_s deck12;
|
|
menubitmap_s deck13;
|
|
menubitmap_s deck14;
|
|
menubitmap_s deck15;
|
|
menubitmap_s deck16;
|
|
|
|
deckData_t deckData[MAX_DECKS];
|
|
int numDecks;
|
|
|
|
int liftNum;
|
|
} turbolift_t;
|
|
|
|
turbolift_t s_turbolift;
|
|
|
|
void TurboliftMenu_LoadText (void);
|
|
|
|
#define ID_ARROW1UP 2
|
|
#define ID_ARROW1DOWN 3
|
|
#define ID_ARROW2UP 4
|
|
#define ID_ARROW2DOWN 5
|
|
#define ID_COMPUTERVOICE 6
|
|
|
|
#define ID_QUIT 10
|
|
#define ID_DECK1 11
|
|
#define ID_DECK2 12
|
|
#define ID_DECK3 13
|
|
#define ID_DECK4 14
|
|
#define ID_DECK5 15
|
|
#define ID_DECK6 16
|
|
#define ID_DECK7 17
|
|
#define ID_DECK8 18
|
|
#define ID_DECK9 19
|
|
#define ID_DECK10 20
|
|
#define ID_DECK11 21
|
|
#define ID_DECK12 22
|
|
#define ID_DECK13 23
|
|
#define ID_DECK14 24
|
|
#define ID_DECK15 25
|
|
#define ID_DECK16 26
|
|
#define ID_ENGAGE 100
|
|
|
|
void UI_HolodeckMenu_Cache (void);
|
|
|
|
/*
|
|
=================
|
|
M_Turbolift_Event
|
|
=================
|
|
*/
|
|
static void M_Turbolift_Event (void* ptr, int notification)
|
|
{
|
|
int id;
|
|
menubitmap_s *holdDeck;
|
|
|
|
id = ((menucommon_s*)ptr)->id;
|
|
|
|
/*if ( notification != QM_ACTIVATED )
|
|
{
|
|
return;
|
|
}*/
|
|
|
|
switch (id)
|
|
{
|
|
case ID_QUIT:
|
|
if ( notification == QM_ACTIVATED )
|
|
UI_PopMenu();
|
|
break;
|
|
case ID_DECK1:
|
|
case ID_DECK2:
|
|
case ID_DECK3:
|
|
case ID_DECK4:
|
|
case ID_DECK5:
|
|
case ID_DECK6:
|
|
case ID_DECK7:
|
|
case ID_DECK8:
|
|
case ID_DECK9:
|
|
case ID_DECK10:
|
|
case ID_DECK11:
|
|
case ID_DECK12:
|
|
case ID_DECK13:
|
|
case ID_DECK14:
|
|
case ID_DECK15:
|
|
case ID_DECK16:
|
|
|
|
if ( notification == QM_ACTIVATED )
|
|
{
|
|
if (s_turbolift.chosenDeck >= 0)
|
|
{
|
|
holdDeck = &s_turbolift.deck1;
|
|
holdDeck += s_turbolift.chosenDeck;
|
|
holdDeck->textcolor = CT_BLACK;
|
|
}
|
|
|
|
s_turbolift.chosenDeck = id - ID_DECK1;
|
|
s_turbolift.engage.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
|
|
holdDeck = &s_turbolift.deck1;
|
|
holdDeck += s_turbolift.chosenDeck;
|
|
//holdDeck->textcolor = CT_WHITE;//CT_LTGOLD1;
|
|
}
|
|
else if ( notification == QM_GOTFOCUS )
|
|
{
|
|
s_turbolift.highLightedDeck = id - ID_DECK1;
|
|
}
|
|
break;
|
|
case ID_ENGAGE: // Active only if a deck has been chosen
|
|
if ( notification == QM_ACTIVATED ) {
|
|
UI_ForceMenuOff();
|
|
trap_Cmd_ExecuteText( EXEC_APPEND, va( "deck %i %i", s_turbolift.liftNum, s_turbolift.deckData[s_turbolift.chosenDeck].deckNum ) );
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*
|
|
=================
|
|
TurboliftMenu_Key
|
|
=================
|
|
*/
|
|
sfxHandle_t TurboliftMenu_Key (int key)
|
|
{
|
|
return ( Menu_DefaultKey( &s_turbolift.menu, key ) );
|
|
}
|
|
|
|
qhandle_t leftRound;
|
|
qhandle_t corner_ul_24_60;
|
|
qhandle_t corner_ll_12_60;
|
|
qhandle_t turbolift;
|
|
|
|
/*
|
|
=================
|
|
M_TurboliftMenu_Graphics
|
|
=================
|
|
*/
|
|
static void M_TurboliftMenu_Graphics (void)
|
|
{
|
|
menubitmap_s *holdDeck;
|
|
int i,length,xTurboStart;
|
|
int numColor,roundColor;
|
|
|
|
// Draw the basic screen frame
|
|
|
|
// Upper corners
|
|
trap_R_SetColor( colorTable[CT_DKPURPLE1]);
|
|
UI_DrawHandlePic( 20, 24, 64, 32, corner_ul_24_60); // Upper corner
|
|
UI_DrawHandlePic( 20, 353, 64, 16, corner_ll_12_60); // Lower Corner
|
|
trap_R_SetColor( colorTable[CT_LTPURPLE1] ); //colorTable[CT_LTBLUE1] //[CT_DKGOLD1] //colorTable[CT_VDKPURPLE2]
|
|
UI_DrawHandlePic( 100, 86, 128, 128, turbolift); // Turbolift graphic
|
|
|
|
// Lower corners
|
|
trap_R_SetColor( colorTable[CT_DKPURPLE3]); //colorTable[CT_VDKPURPLE2]
|
|
UI_DrawHandlePic( 20, 375, 64, -16, corner_ll_12_60); //
|
|
UI_DrawHandlePic( 20, 440, 64, 16, corner_ll_12_60); //
|
|
|
|
xTurboStart = 604;
|
|
length = UI_ProportionalStringWidth( menu_normal_text[MNT_TURBOLIFT],UI_BIGFONT);
|
|
length += 4;
|
|
|
|
// Upper half
|
|
trap_R_SetColor( colorTable[CT_DKPURPLE1]); //DKGOLD1
|
|
UI_DrawHandlePic( 79, 24, xTurboStart - (79 + length), PROP_BIG_HEIGHT, uis.whiteShader); // Top left line
|
|
UI_DrawHandlePic( 20, 60, 60, 40, uis.whiteShader); //
|
|
trap_R_SetColor( colorTable[CT_DKPURPLE3]);
|
|
UI_DrawHandlePic( 20, 106, 60, 11, uis.whiteShader); //
|
|
trap_R_SetColor( colorTable[CT_DKPURPLE1]); //DKGOLD1
|
|
UI_DrawHandlePic( 20, 123, 60, 240, uis.whiteShader); // Left hand column
|
|
UI_DrawHandlePic( 69, 356, 245, 12, uis.whiteShader); //
|
|
|
|
trap_R_SetColor( colorTable[CT_DKPURPLE3] ); //colorTable[CT_DKPURPLE1]
|
|
UI_DrawHandlePic(319, 356, 93, 5, uis.whiteShader); //
|
|
UI_DrawHandlePic(319, 360, 31, 8, uis.whiteShader); //
|
|
UI_DrawHandlePic(381, 360, 31, 8, uis.whiteShader); //
|
|
|
|
trap_R_SetColor( colorTable[CT_DKPURPLE1]);
|
|
UI_DrawHandlePic(417, 356, 93, 12, uis.whiteShader); //
|
|
|
|
UI_DrawHandlePic(510, 356,114, 12, uis.whiteShader); //
|
|
|
|
// Lower half
|
|
trap_R_SetColor( colorTable[CT_DKPURPLE3] ); //colorTable[CT_VDKPURPLE2]
|
|
UI_DrawHandlePic( 20, 380, 60, 70, uis.whiteShader); // Left Column
|
|
|
|
trap_R_SetColor( colorTable[CT_DKPURPLE3] ); //colorTable[CT_VDKPURPLE2]
|
|
UI_DrawHandlePic( 69, 376, 158, 12, uis.whiteShader); // Top line
|
|
UI_DrawHandlePic(232, 376, 82, 12, uis.whiteShader); // Top line
|
|
UI_DrawHandlePic(417, 376, 12, 12, uis.whiteShader); //
|
|
UI_DrawHandlePic(434, 376, 190, 12, uis.whiteShader); //
|
|
|
|
// Funky indent
|
|
trap_R_SetColor( colorTable[CT_DKPURPLE1] ); //colorTable[CT_DKGOLD1]
|
|
UI_DrawHandlePic(319, 383, 93, 5, uis.whiteShader); //
|
|
UI_DrawHandlePic(319, 376, 31, 8, uis.whiteShader); //
|
|
UI_DrawHandlePic(381, 376, 31, 8, uis.whiteShader); //
|
|
|
|
// Bottom line
|
|
trap_R_SetColor( colorTable[CT_DKPURPLE3] ); //colorTable[CT_VDKPURPLE2]
|
|
UI_DrawHandlePic( 69, 443, 287, 12, uis.whiteShader); //
|
|
trap_R_SetColor( colorTable[CT_DKPURPLE1]); //colorTable[CT_DKGOLD1]
|
|
UI_DrawHandlePic(364, 443, 260, 12, uis.whiteShader); // Bottom line
|
|
|
|
|
|
UI_DrawProportionalString( xTurboStart, 24,
|
|
menu_normal_text[MNT_TURBOLIFT], UI_BIGFONT | UI_RIGHT, colorTable[CT_WHITE]);
|
|
|
|
trap_R_SetColor( colorTable[CT_DKPURPLE1]); //DKGOLD1
|
|
UI_DrawHandlePic( 607, 24,-16, 32, leftRound);
|
|
|
|
holdDeck = &s_turbolift.deck1;
|
|
|
|
// Print deck buttons
|
|
for (i=0;i<s_turbolift.maxDecks;i++)
|
|
{
|
|
if (s_turbolift.deckData[i].deckNum )
|
|
{
|
|
if (s_turbolift.chosenDeck == i) // This deck was chosen
|
|
{
|
|
numColor = CT_WHITE;//CT_LTGOLD1;
|
|
roundColor = CT_LTPURPLE1;//CT_LTGOLD1;
|
|
}
|
|
else // This deck was not chosen
|
|
{
|
|
numColor = CT_WHITE;
|
|
roundColor = CT_DKPURPLE1;//CT_DKGOLD1;
|
|
}
|
|
|
|
UI_DrawProportionalString( holdDeck->generic.x - 6,
|
|
holdDeck->generic.y,
|
|
va("%d",s_turbolift.deckData[i].deckNum), UI_BIGFONT|UI_RIGHT, colorTable[numColor]); //i+1
|
|
|
|
trap_R_SetColor( colorTable[roundColor]);
|
|
UI_DrawHandlePic( holdDeck->generic.x - 45,
|
|
holdDeck->generic.y,
|
|
16, 32, leftRound);
|
|
}
|
|
|
|
holdDeck++;
|
|
}
|
|
|
|
|
|
if ( s_turbolift.highLightedDeck >= 0 )
|
|
{
|
|
UI_DrawProportionalString( 353, 409,
|
|
s_turbolift.deckData[s_turbolift.highLightedDeck].deckDesc, UI_SMALLFONT|UI_CENTER, colorTable[CT_WHITE]);
|
|
}
|
|
else
|
|
{
|
|
UI_DrawProportionalString( 353, 409, menu_normal_text[MNT_SPECFICYDECK], UI_SMALLFONT|UI_CENTER, colorTable[CT_WHITE]);
|
|
}
|
|
|
|
// Round graphic on left of engage & quit button
|
|
trap_R_SetColor( colorTable[s_turbolift.quitmenu.color]);
|
|
UI_DrawHandlePic(s_turbolift.engage.generic.x - 14,
|
|
s_turbolift.engage.generic.y,
|
|
MENU_BUTTON_MED_HEIGHT, s_turbolift.engage.height, uis.graphicButtonLeftEnd);
|
|
|
|
UI_DrawHandlePic(s_turbolift.quitmenu.generic.x - 14,
|
|
s_turbolift.quitmenu.generic.y,
|
|
MENU_BUTTON_MED_HEIGHT, s_turbolift.quitmenu.height, uis.graphicButtonLeftEnd);
|
|
|
|
}
|
|
|
|
/*
|
|
===============
|
|
TurboliftMenu_Draw
|
|
===============
|
|
*/
|
|
static void TurboliftMenu_Draw(void)
|
|
{
|
|
// Draw graphics particular to Main Menu
|
|
M_TurboliftMenu_Graphics();
|
|
|
|
Menu_Draw( &s_turbolift.menu );
|
|
}
|
|
|
|
/*
|
|
===============
|
|
UI_TurboliftMenu_Cache
|
|
===============
|
|
*/
|
|
void UI_TurboliftMenu_Cache (void)
|
|
{
|
|
leftRound = trap_R_RegisterShaderNoMip("menu/common/halfroundl_24.tga");
|
|
corner_ul_24_60 = trap_R_RegisterShaderNoMip("menu/common/corner_ul_24_60.tga");
|
|
corner_ll_12_60 = trap_R_RegisterShaderNoMip("menu/common/corner_ll_12_60.tga");
|
|
turbolift = trap_R_RegisterShaderNoMip("menu/common/lift_button.tga");
|
|
}
|
|
|
|
|
|
//Sorts decks in ascending order
|
|
static int QDECL SortDecks( const void *arg1, const void *arg2 )
|
|
{
|
|
int deck1;
|
|
int deck2;
|
|
|
|
deck1 = ( (deckData_t *)arg1)->deckNum;
|
|
deck2 = ( (deckData_t *)arg2)->deckNum;
|
|
|
|
if ( deck1 < 0 )
|
|
deck1 = 0;
|
|
|
|
if ( deck2 < 0 )
|
|
deck2 = 0;
|
|
|
|
if ( deck1 > deck2 )
|
|
return 1;
|
|
|
|
if ( deck1 == deck2 )
|
|
return 0;
|
|
|
|
return -1;
|
|
}
|
|
|
|
static void UI_TurboliftMenu_LoadDecks( void )
|
|
{
|
|
char buffer[MAX_TOKEN_CHARS];
|
|
int i;
|
|
char *temp;
|
|
|
|
s_turbolift.numDecks = 0;
|
|
|
|
//load the string
|
|
trap_GetConfigString( CS_TURBOLIFT_DATA, buffer, sizeof( buffer ) );
|
|
|
|
if ( !buffer[0] )
|
|
return;
|
|
|
|
memset( &s_turbolift.deckData, 0, sizeof( s_turbolift.deckData ) );
|
|
|
|
for ( i=0; i < MAX_DECKS; i++ )
|
|
{
|
|
temp = Info_ValueForKey( buffer, va( "d%i", i ) );
|
|
|
|
if ( !temp[0] )
|
|
break;
|
|
|
|
s_turbolift.deckData[ s_turbolift.numDecks ].deckNum = atoi( temp );
|
|
|
|
temp = Info_ValueForKey( buffer, va( "n%i", i ) );
|
|
|
|
Q_strncpyz( s_turbolift.deckData[ s_turbolift.numDecks ].deckDesc, temp, sizeof( s_turbolift.deckData[ s_turbolift.numDecks ].deckDesc ) );
|
|
|
|
s_turbolift.numDecks++;
|
|
}
|
|
|
|
//TiM - sort the decks into their sequential order
|
|
qsort( s_turbolift.deckData, s_turbolift.numDecks, sizeof( deckData_t ), SortDecks );
|
|
}
|
|
|
|
static void UI_ManageDeckLoading( void )
|
|
{
|
|
char fileRoute[MAX_QPATH];
|
|
char mapRoute[MAX_QPATH];
|
|
char info[MAX_TOKEN_CHARS];
|
|
fileHandle_t f;
|
|
int file_len;
|
|
char *textPtr;
|
|
char buffer[20000];
|
|
char *token;
|
|
|
|
//get the map name
|
|
trap_GetConfigString( CS_SERVERINFO, info, sizeof( info ) );
|
|
Com_sprintf( mapRoute, sizeof( fileRoute ), "maps/%s", Info_ValueForKey( info, "mapname" ) );
|
|
|
|
//check for language
|
|
UI_LanguageFilename( mapRoute, "turbolift", fileRoute );
|
|
|
|
file_len = trap_FS_FOpenFile( fileRoute, &f, FS_READ );
|
|
|
|
if ( file_len <= 1 )
|
|
{
|
|
//Com_Printf( S_COLOR_YELLOW "WARNING: Attempted to load %s, but wasn't found.\n", fileRoute );
|
|
UI_TurboliftMenu_LoadDecks();
|
|
return;
|
|
}
|
|
|
|
trap_FS_Read( buffer, file_len, f );
|
|
trap_FS_FCloseFile( f );
|
|
|
|
if ( !buffer[0] )
|
|
{
|
|
Com_Printf( S_COLOR_RED "ERROR: Attempted to load %s, but no data was read.\n", fileRoute );
|
|
UI_TurboliftMenu_LoadDecks();
|
|
return;
|
|
}
|
|
|
|
s_turbolift.numDecks = 0;
|
|
memset( &s_turbolift.deckData, 0, sizeof( s_turbolift.deckData ) );
|
|
buffer[file_len] = '\0';
|
|
|
|
COM_BeginParseSession();
|
|
textPtr = buffer;
|
|
|
|
//Com_Printf( S_COLOR_RED "Beginning Parse\n" );
|
|
|
|
//expected format is 'decknum' <space> 'deck Desc'
|
|
while( 1 )
|
|
{
|
|
token = COM_Parse( &textPtr );
|
|
if ( !token[0] )
|
|
break;
|
|
|
|
//Com_Printf( S_COLOR_RED "First Token: %s\n", token );
|
|
|
|
//in case of Scooter's EF SP style DAT files, which require 'DECK' in front of the number
|
|
if ( !Q_strncmp( token, "DECK", 4 ) )
|
|
token += 4;
|
|
|
|
//grab the deck number
|
|
s_turbolift.deckData[s_turbolift.numDecks].deckNum = atoi( token );
|
|
|
|
token = COM_ParseExt( &textPtr, qfalse );
|
|
if (!token[0])
|
|
continue;
|
|
|
|
//Com_Printf( S_COLOR_RED "Second Token: %s\n", token );
|
|
|
|
Q_strncpyz( s_turbolift.deckData[s_turbolift.numDecks].deckDesc,
|
|
token,
|
|
sizeof( s_turbolift.deckData[s_turbolift.numDecks].deckDesc ) );
|
|
|
|
s_turbolift.numDecks++;
|
|
|
|
//if this is an EF SP style script, there may be more data after these two. ignore them
|
|
if ( COM_ParseExt( &textPtr, qfalse ) == NULL )
|
|
SkipRestOfLine( &textPtr );
|
|
}
|
|
|
|
qsort( s_turbolift.deckData, s_turbolift.numDecks, sizeof( deckData_t ), SortDecks );
|
|
}
|
|
|
|
/*
|
|
===============
|
|
TurboliftMenu_Init
|
|
===============
|
|
*/
|
|
void TurboliftMenu_Init(void)
|
|
{
|
|
int y,pad,x;
|
|
menubitmap_s *holdDeck;
|
|
int i,width;
|
|
|
|
UI_ManageDeckLoading();
|
|
|
|
s_turbolift.menu.nitems = 0;
|
|
s_turbolift.menu.draw = TurboliftMenu_Draw;
|
|
s_turbolift.menu.key = TurboliftMenu_Key;
|
|
s_turbolift.menu.wrapAround = qtrue;
|
|
s_turbolift.menu.descX = MENU_DESC_X;
|
|
s_turbolift.menu.descY = MENU_DESC_Y;
|
|
s_turbolift.menu.titleX = MENU_TITLE_X;
|
|
s_turbolift.menu.titleY = MENU_TITLE_Y;
|
|
|
|
s_turbolift.chosenDeck = -1;
|
|
s_turbolift.highLightedDeck = -1;
|
|
|
|
pad = PROP_BIG_HEIGHT + 10;
|
|
y = 72;
|
|
x = 319;
|
|
width = MENU_BUTTON_MED_WIDTH-20;
|
|
|
|
s_turbolift.maxDecks = MAX_DECKS;
|
|
holdDeck = &s_turbolift.deck1;
|
|
|
|
for (i=0;i<s_turbolift.maxDecks;i++)
|
|
{
|
|
holdDeck->generic.type = MTYPE_BITMAP;
|
|
holdDeck->generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
holdDeck->generic.x = x;
|
|
holdDeck->generic.y = y;
|
|
holdDeck->generic.name = GRAPHIC_BUTTONRIGHT;
|
|
holdDeck->generic.id = ID_DECK1 + i;
|
|
holdDeck->generic.callback = M_Turbolift_Event;
|
|
holdDeck->width = width;
|
|
holdDeck->height = PROP_BIG_HEIGHT;
|
|
holdDeck->color = CT_DKPURPLE1;//CT_VDKRED1;//CT_DKGOLD1;
|
|
holdDeck->color2 = CT_LTPURPLE1;//CT_DKRED1;//CT_LTGOLD1;
|
|
holdDeck->textX = MENU_BUTTON_TEXT_X;
|
|
holdDeck->textY = 12;
|
|
holdDeck->textEnum = MBT_DECK;
|
|
holdDeck->textcolor = CT_BLACK;
|
|
holdDeck->textcolor2 = CT_WHITE;
|
|
holdDeck->textStyle = UI_TINYFONT;
|
|
|
|
holdDeck++;
|
|
y += pad;
|
|
|
|
// Start the next column
|
|
if (i == ((s_turbolift.maxDecks-1)/2))
|
|
{
|
|
x += width + 90;
|
|
y = 80;
|
|
}
|
|
}
|
|
|
|
s_turbolift.engage.generic.type = MTYPE_BITMAP;
|
|
s_turbolift.engage.generic.flags = QMF_GRAYED;
|
|
s_turbolift.engage.generic.x = 110;
|
|
s_turbolift.engage.generic.y = 72 + (pad * 5);
|
|
s_turbolift.engage.generic.name = GRAPHIC_BUTTONRIGHT;
|
|
s_turbolift.engage.generic.id = ID_ENGAGE;
|
|
s_turbolift.engage.generic.callback = M_Turbolift_Event;
|
|
s_turbolift.engage.width = width;
|
|
s_turbolift.engage.height = PROP_BIG_HEIGHT;
|
|
s_turbolift.engage.color = CT_DKORANGE;
|
|
s_turbolift.engage.color2 = CT_LTORANGE;
|
|
s_turbolift.engage.textX = MENU_BUTTON_TEXT_X;
|
|
s_turbolift.engage.textY = 6;
|
|
s_turbolift.engage.textEnum = MBT_ENGAGE;
|
|
s_turbolift.engage.textcolor = CT_BLACK;
|
|
s_turbolift.engage.textcolor2 = CT_WHITE;
|
|
//s_turbolift.engage.generic.statusbarfunc = Turbolift_StatusBar;
|
|
|
|
s_turbolift.quitmenu.generic.type = MTYPE_BITMAP;
|
|
s_turbolift.quitmenu.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_turbolift.quitmenu.generic.x = 110;
|
|
s_turbolift.quitmenu.generic.y = 72 + (pad * 7);
|
|
s_turbolift.quitmenu.generic.name = GRAPHIC_BUTTONRIGHT;
|
|
s_turbolift.quitmenu.generic.id = ID_QUIT;
|
|
s_turbolift.quitmenu.generic.callback = M_Turbolift_Event;
|
|
s_turbolift.quitmenu.width = width;
|
|
s_turbolift.quitmenu.height = PROP_BIG_HEIGHT;
|
|
s_turbolift.quitmenu.color = CT_DKORANGE;
|
|
s_turbolift.quitmenu.color2 = CT_LTORANGE;
|
|
s_turbolift.quitmenu.textX = MENU_BUTTON_TEXT_X;
|
|
s_turbolift.quitmenu.textY = 6;
|
|
s_turbolift.quitmenu.textEnum = MBT_RETURNMENU;//MBT_RETURN;
|
|
s_turbolift.quitmenu.textcolor = CT_BLACK;
|
|
s_turbolift.quitmenu.textcolor2 = CT_WHITE;
|
|
//s_turbolift.quitmenu.generic.statusbarfunc = Turbolift_StatusBar;
|
|
|
|
Menu_AddItem( &s_turbolift.menu, &s_turbolift.engage );
|
|
Menu_AddItem( &s_turbolift.menu, &s_turbolift.quitmenu );
|
|
|
|
holdDeck = &s_turbolift.deck1;
|
|
for (i=0;i<s_turbolift.maxDecks;i++)
|
|
{
|
|
if (s_turbolift.deckData[i].deckDesc[0])
|
|
{
|
|
Menu_AddItem( &s_turbolift.menu, holdDeck );
|
|
}
|
|
holdDeck++;
|
|
}
|
|
}
|
|
|
|
/*
|
|
===============
|
|
UI_TurboliftMenu
|
|
===============
|
|
*/
|
|
void UI_TurboliftMenu ( int liftNum )
|
|
{
|
|
if ( !liftNum )
|
|
return;
|
|
|
|
memset( &s_turbolift, 0, sizeof( s_turbolift ) );
|
|
|
|
s_turbolift.liftNum = liftNum;
|
|
|
|
uis.menusp = 0;
|
|
|
|
ingameFlag = qtrue; // true when in game menu is in use
|
|
|
|
Mouse_Show();
|
|
|
|
UI_TurboliftMenu_Cache();
|
|
|
|
TurboliftMenu_Init();
|
|
|
|
UI_PushMenu( &s_turbolift.menu );
|
|
|
|
Menu_AdjustCursor( &s_turbolift.menu, 1 );
|
|
}
|
|
|