mirror of
https://github.com/UberGames/RPG-X2.git
synced 2024-11-15 01:11:46 +00:00
1053 lines
32 KiB
C
1053 lines
32 KiB
C
// Copyright (C) 2006 UberGames
|
|
// RPG-X: UI Credits Menu
|
|
// Developer: -=TiM=-
|
|
// Function: To load in, cache, initialize and draw all of the elements that create the Credits menu
|
|
//
|
|
// Marcin: I've modified this stuff okay? - 03/01/2009
|
|
|
|
|
|
|
|
#include "ui_local.h"
|
|
|
|
#define MAX_DEVS 15 //Max number of developers per menu
|
|
#define MAX_MENUS 9 //Max number of menus
|
|
|
|
//Just to be on the safe side, I made these increment from 1 rather than 0
|
|
//and then compensated in the code. :)
|
|
#define ID_LEADS 1
|
|
#define ID_CODERS 2
|
|
#define ID_2D 3
|
|
#define ID_3D 4
|
|
#define ID_MAPPING 5
|
|
#define ID_SOUNDS 6
|
|
#define ID_EXTRAS 7
|
|
#define ID_BETAS 8
|
|
#define ID_THANKS 9
|
|
#define ID_MAINMENU 100
|
|
|
|
#define MAIN_LOGO_MODEL "models/mapobjects/rpg-x/logo.md3"
|
|
#define LCARS_CORNER_U "menu/common/corner_lr_7_12.tga"
|
|
#define LCARS_LOGO_BACKDROP "menu/rpgx_credits/logo_backdrop"
|
|
#define LCARS_BLIP "sound/interface/button7.wav"
|
|
|
|
//----------------------------------------------------------------
|
|
//TiM : In order to lower memory by recycling any repeated names
|
|
|
|
//Developer Names
|
|
#define NAME_PHENIX "Dominic 'Phenix' Black"
|
|
#define NAME_JAY "Jason 'J2J' Griffith"
|
|
#define NAME_SHARKY "Nazar 'Sharky' Surmai"
|
|
#define NAME_RED "Stephen 'RedTechie' Shamakian"
|
|
#define NAME_TIM "Timothy 'TiM' Oliver"
|
|
#define NAME_SCOOTER "Scooter"
|
|
#define NAME_MARCIN "Marcin 'turbomarcin' Koziuk"
|
|
#define NAME_WILL "William Riker"
|
|
#define NAME_ANT "Anthony"
|
|
#define NAME_TDP "The Dark Project"
|
|
|
|
//#define NAME_DI "Digital Intervention" //TiM: DI is the brand I put all of my high-end 3D artwork under now as standardiazation for client work. :)
|
|
|
|
#define NAME_SIMMO "Tom 'Simmo666' Simpson"
|
|
#define NAME_KURO "Kuro-chan" //Kare to kare no nihongo no na dazo lol. :P
|
|
|
|
#define NAME_JAREN "Jaren"
|
|
|
|
#define NAME_MONROE "James 'Emorog' Monroe"
|
|
#define NAME_GENE "Gene Roddenberry"
|
|
#define NAME_RAVEN "Raven Software"
|
|
#define NAME_EFPEEPS "The EF RPG Community"
|
|
#define NAME_STEVE "Steve" //Never even met this d00d lol
|
|
#define NAME_GSIO01 "Walter 'GSIO01' Hennecke"
|
|
|
|
#define NAME_JEROEN "Jeroen"
|
|
|
|
#define NAME_LAZ "Laz Rojas"
|
|
|
|
#define NAME_PARKER "Chris 'Parker' Vad"
|
|
#define NAME_HOCKING "AdmiralHocking"
|
|
|
|
//Developer Uber professional sounding titles
|
|
#define TITLE_LEADER "Project Lead"
|
|
#define TITLE_LPROG "Lead Coding"
|
|
#define TITLE_L2DAS "Lead 2-D & Audio Art"
|
|
#define TITLE_L3D "Lead 3-D Art"
|
|
#define TITLE_LMAPPER "Lead Level Design"
|
|
|
|
//Programming titles
|
|
#define TITLE_PROG "Primary Coding"
|
|
#define TITLE_GPROG "Graphics Coding"
|
|
#define TITLE_ADPROG "Additional Coding"
|
|
//#define TITLE_SCRIPTING "Player Scripting"
|
|
|
|
//2-D Titles
|
|
#define TITLE_L2D "Lead 2-D Art"
|
|
#define TITLE_LCARS "Secondary 2-D Art / LCARS Design" //Simmo special lol
|
|
#define TITLE_AD2D "Additional 2-D Art"
|
|
#define TITLE_RANKS "Menu Rank Icons Creation" // Kuro special
|
|
#define TITLE_ACAI "Additional Coding / Many ideas"
|
|
|
|
//3-D Titles... none O_O
|
|
|
|
//Mapping titles
|
|
#define TITLE_LEVELART "Level Design"
|
|
|
|
//Audio Titles
|
|
#define TITLE_LAUDIO "Audio Lead"
|
|
#define TITLE_ADAUDIO "Additional Audio"
|
|
|
|
//Additional Titles
|
|
#define TITLE_CANON "Canon Inspector" //Scooter... and only Scooter hehe
|
|
#define TITLE_DOCU "Documentation"
|
|
#define TITLE_DEUTSCH "German Translation"
|
|
#define TITLE_NEDERLANDS "Dutch Translation"
|
|
|
|
//#define TITLE_CIN "Opening Cinematic"
|
|
#define TITLE_SKINSMODELS "Providing Additional Skins and Models"
|
|
|
|
//Thank you Titles
|
|
#define TITLE_TREK "Creator of Star Trek"
|
|
#define TITLE_EF "Creators of Elite Force"
|
|
#define TITLE_TEST "For Suggestions and Additional Testing"
|
|
#define TITLE_PLAGIA "Creator of the original EF RPG Mod"
|
|
#define TITLE_RAVENCODER "EF Engine Consulting and Assistance"
|
|
|
|
//----------------------------------------------------------------
|
|
|
|
static qhandle_t cornerUpper;
|
|
static qhandle_t spaceBackdrop;
|
|
|
|
int i;
|
|
|
|
static float cm_buttons[9][2] =
|
|
{
|
|
{129,62},
|
|
{129,86},
|
|
{129,109},
|
|
{305,62},
|
|
{305,86},
|
|
{305,109},
|
|
{481,62},
|
|
{481,86},
|
|
{481,109},
|
|
};
|
|
|
|
typedef struct
|
|
{
|
|
menuframework_s menu;
|
|
|
|
menulist_s list;
|
|
|
|
menubitmap_s mainmenu;
|
|
menubitmap_s leads;
|
|
menubitmap_s coders;
|
|
menubitmap_s twodee;
|
|
menubitmap_s threedee;
|
|
menubitmap_s mapping;
|
|
menubitmap_s sounds;
|
|
menubitmap_s extras;
|
|
menubitmap_s betas;
|
|
menubitmap_s thanks;
|
|
|
|
qhandle_t logoModel;
|
|
sfxHandle_t pingSound;
|
|
|
|
int startTime; //the time index the player hit t3h button, so we can calc display times
|
|
int beepTime; //increment this each time a new item appears, so we can play beep then. :)
|
|
|
|
int creditsNum; //Index of the button we last clicked
|
|
} credits_t;
|
|
|
|
static credits_t s_credits;
|
|
|
|
typedef struct
|
|
{
|
|
char name[MAX_QPATH];
|
|
char position[MAX_QPATH];
|
|
} devInfo_t;
|
|
|
|
typedef struct
|
|
{
|
|
char mainTitle[MAX_NAME_LENGTH];
|
|
devInfo_t devInfo[MAX_DEVS];
|
|
} creditsInfo_t;
|
|
|
|
//Arrays were cool for the first vers of the credits menu,
|
|
//But structs kick the utter crap out of straight arrays :)
|
|
static creditsInfo_t creditsInfo[MAX_MENUS] =
|
|
{
|
|
//The d00ds leading this shizzie :)
|
|
{
|
|
"PROJECT LEADS",
|
|
{
|
|
{ NAME_PHENIX, TITLE_LEADER },
|
|
{ NAME_JAY, TITLE_LPROG },
|
|
{ NAME_SHARKY, TITLE_L2DAS },
|
|
{ NAME_TIM, TITLE_L3D },
|
|
{ NAME_WILL, TITLE_LMAPPER }
|
|
}
|
|
},
|
|
|
|
//The d00ds l33tzor haxxoring this shizzie.
|
|
{
|
|
"PROGRAMMING",
|
|
{
|
|
{ NAME_JAY, TITLE_LPROG },
|
|
{ NAME_TIM, TITLE_PROG },
|
|
{ NAME_PHENIX, TITLE_PROG },
|
|
{ NAME_RED, TITLE_ADPROG },
|
|
{ NAME_MARCIN, TITLE_PROG }, // Scooter was originally here...sorry... not enough space!
|
|
{ NAME_SCOOTER, TITLE_ADPROG },
|
|
{ NAME_GSIO01, TITLE_PROG },
|
|
}
|
|
},
|
|
|
|
//The d00ds painting and texturing this shizzie.
|
|
{
|
|
"2-D ART",
|
|
{
|
|
{ NAME_SHARKY, TITLE_L2D },
|
|
{ NAME_SIMMO, TITLE_LCARS },
|
|
{ NAME_TIM, TITLE_AD2D },
|
|
{ NAME_SCOOTER, TITLE_AD2D },
|
|
{ NAME_KURO, TITLE_RANKS },
|
|
}
|
|
},
|
|
|
|
//The d00d modeling this shizzie. I feel so alone rofl.
|
|
{
|
|
"3-D ART",
|
|
{
|
|
{ NAME_TIM, TITLE_L3D },
|
|
//{ "Ralph Schoberth", "Enterprise-E LightWave Mesh" }, //FixMe: Put mesh credits in a smaller section below here somehow lol
|
|
}
|
|
},
|
|
|
|
//The d00ds mapping this shizzie.
|
|
{
|
|
"LEVEL DESIGN",
|
|
{
|
|
{ NAME_WILL, TITLE_LMAPPER },
|
|
{ NAME_ANT, TITLE_LEVELART },
|
|
//{ "Jack Amzadi", "Level Artist" }, //Seriously... did we see ANYTHING come out of these guys? O_o
|
|
//{ "Johan", "Level Artist" },
|
|
//{ "RED-RUM", "Level Artist" },
|
|
{ NAME_PHENIX, TITLE_LEVELART },
|
|
//{ NAME_SCOOTER, TITLE_LEVELART }, //I think he wanted to be taken off
|
|
//{ NAME_WILL, TITLE_LEVELART },
|
|
}
|
|
},
|
|
|
|
//The d00ds... uh.. soundzor-ing this shizzie. :)
|
|
{
|
|
"AUDIO DESIGN",
|
|
{
|
|
{ NAME_SHARKY, TITLE_LAUDIO },
|
|
{ NAME_PHENIX, TITLE_ADAUDIO },
|
|
{ NAME_TIM, TITLE_ADAUDIO },
|
|
{ NAME_SCOOTER, TITLE_ADAUDIO },
|
|
{ NAME_TDP, TITLE_ADAUDIO },
|
|
}
|
|
},
|
|
|
|
{
|
|
"ADDITIONAL SUPPORT",
|
|
{
|
|
{ NAME_SCOOTER, TITLE_CANON },
|
|
//{ "Highlander", "Public Relations" }, //He didn't publicly relate anything in this mod, this edition. Plus I want the space at the bottom of this lol
|
|
{ NAME_GSIO01, TITLE_DEUTSCH },
|
|
{ NAME_JEROEN, TITLE_NEDERLANDS },
|
|
{ NAME_MARCIN, TITLE_NEDERLANDS },
|
|
{ NAME_LAZ, TITLE_SKINSMODELS },
|
|
//{ NAME_PHENIX, TITLE_DOCU },
|
|
//{ NAME_SHARKY, TITLE_DOCU },
|
|
//{ NAME_RED, TITLE_DOCU },
|
|
//{ NAME_DI, TITLE_CIN },
|
|
{ NAME_PARKER, TITLE_ACAI },
|
|
{ NAME_HOCKING, TITLE_AD2D }
|
|
}
|
|
},
|
|
|
|
//The d00ds beta testing this shizzie
|
|
{
|
|
"BETA TESTERS",
|
|
{
|
|
{ "Jordan", "" },
|
|
{ "sharpkiller", "" },
|
|
{ "Telex Ferra", "" },
|
|
{ "AdmiralHocking", "" },
|
|
{ "Lee Wolfgang", "" },
|
|
{ "Quince", "" },
|
|
/*{ "Alex L.", "" },
|
|
{ "Chase Benedict", "" },
|
|
{ "Jake Conhale", "" },
|
|
{ "James Young", "" },
|
|
{ "Kadratis Velevere", "" },
|
|
{ "Ricksal0224", "" },
|
|
{ "SimmerALPHA", "" },
|
|
{ "Slayer", "" },
|
|
{ NAME_MARCIN, "" },
|
|
{ "Tuskin" "" }*/
|
|
/*{ "Alex L.", "" },
|
|
{ "Alex Mcpherson", "" },
|
|
{ "AlphaOmega", "" },
|
|
{ "Andrew", "" },
|
|
{ "Crusader", "" },
|
|
{ "Diaz", "" },
|
|
{ "Fred", "" },
|
|
{ "Jake Conhale", "" },
|
|
{ "Martin", "" },
|
|
{ "Mr Fibbles", "" },
|
|
{ "Myntz", "" },
|
|
{ "Nuttycomputer", "" },
|
|
{ "Rigs", "" },*/
|
|
//{ "Pending...", "" }
|
|
}
|
|
},
|
|
|
|
//Totally awesome d00ds whose input contributed greatly to this shizzie. :)
|
|
{
|
|
"SPECIAL THANKS",
|
|
{
|
|
{ NAME_GENE, TITLE_TREK },
|
|
{ NAME_RAVEN, TITLE_EF },
|
|
{ NAME_EFPEEPS, TITLE_TEST },
|
|
{ NAME_STEVE, TITLE_PLAGIA },
|
|
{ NAME_MONROE, TITLE_RAVENCODER }
|
|
}
|
|
}
|
|
|
|
};
|
|
|
|
/*char *ra_leads[11] =
|
|
{
|
|
"PROJECT LEADS",
|
|
"Dominic 'Phenix' Black",
|
|
"Project Leader",
|
|
"Jason 'J2J' Griffith",
|
|
"Lead Programmer",
|
|
"Nazar 'Sharky' Surmai",
|
|
"Lead 2-D & Audio Artist",
|
|
"Timothy 'TiM' Oliver",
|
|
"Lead 3-D Artist",
|
|
"Sniper",
|
|
"Lead Level Designer"
|
|
};
|
|
|
|
char *ra_coders[11] =
|
|
{
|
|
"PROGRAMMING",
|
|
"Jason 'J2J' Griffith",
|
|
"Lead Programmer",
|
|
"Dominic 'Phenix' Black",
|
|
"Primary Coding",
|
|
"Stephen 'RedTechie' Shamakian",
|
|
"Primary Coding",
|
|
"Timothy 'TiM' Oliver",
|
|
"Graphics Coding",
|
|
"Scooter",
|
|
"Additional Coding"
|
|
};
|
|
|
|
char *ra_2D[11] =
|
|
{
|
|
"2-D ART",
|
|
"Nazar 'Sharky' Surmai",
|
|
"Lead 2-D Artist",
|
|
"Tom 'Simmo666' Simpson",
|
|
"Secondary 2-D Artist / LCARS Design Guru",
|
|
"Dominic 'Phenix' Black",
|
|
"Additional 2-D Art",
|
|
"Timothy 'TiM' Oliver",
|
|
"Additional 2-D Art",
|
|
"Steven Marriott",
|
|
"Rank Icons Creator"
|
|
};
|
|
|
|
char *ra_3D[7] =
|
|
{
|
|
"3-D ART",
|
|
"Timothy 'TiM' Oliver",
|
|
"Lead 3-D Artist",
|
|
"Ralph Schoberth",
|
|
"Enterprise-E LightWave Mesh",
|
|
"Timothy 'TiM' Oliver",
|
|
"Opening Cinematic"
|
|
};
|
|
|
|
char *ra_mappers[17] = //urk! how the hell is this going to fit?!?!? O_o
|
|
{
|
|
"LEVEL DESIGN",
|
|
"Sniper",
|
|
"Lead Level Artist",
|
|
"Anthony",
|
|
"Level Artist",
|
|
"Jack Amzadi",
|
|
"Level Artist",
|
|
"Johan",
|
|
"Level Artist",
|
|
"RED-RUM",
|
|
"Level Artist",
|
|
"Phenix",
|
|
"Level Artist",
|
|
"Scooter",
|
|
"Level Artist",
|
|
"William Riker",
|
|
"Level Artist",
|
|
};
|
|
|
|
char *ra_sounds[11] =
|
|
{
|
|
"AUDIO DESIGN",
|
|
"Nazar 'Sharky' Surmai",
|
|
"Audio Lead",
|
|
"Jaren",
|
|
"Additional Audio",
|
|
"Dominic 'Phenix' Black",
|
|
"Additional Audio",
|
|
"Timothy 'TiM' Oliver",
|
|
"Additional Audio",
|
|
"Scooter",
|
|
"Additional Audio"
|
|
};
|
|
|
|
char *ra_adds[11] =
|
|
{
|
|
"ADDITIONAL SUPPORT",
|
|
"Scooter",
|
|
"Canon Inspector",
|
|
"Highlander",
|
|
"Public Relations",
|
|
"Dominic 'Phenix' Black",
|
|
"Mod Documentation",
|
|
"Nazar 'Sharky' Surmai",
|
|
"Mod Documentation",
|
|
"Stephen 'RedTechie' Shamakian",
|
|
"Mod Documentation"
|
|
};
|
|
|
|
char *ra_betas[14] =
|
|
{
|
|
"BETA TESTERS",
|
|
"Alex L.",
|
|
"Alex Mcpherson",
|
|
"AlphaOmega",
|
|
"Andrew",
|
|
"Crusader",
|
|
"Diaz",
|
|
"Fred",
|
|
"Jake Conhale",
|
|
"Martin",
|
|
"Mr Fibbles",
|
|
"Myntz",
|
|
"Nuttycomputer",
|
|
"Rigs",
|
|
};
|
|
|
|
char *ra_thanks[11] =
|
|
{
|
|
"SPECIAL THANKS",
|
|
"Gene Roddenberry",
|
|
"Creator of Star Trek",
|
|
"Raven Software",
|
|
"Creators of Elite Force",
|
|
"The EF RPG Community",
|
|
"For Suggestions and Additional Testing",
|
|
"Steve",
|
|
"Creator of the original EF RPG Mod",
|
|
"James Monroe",
|
|
"Our friend from RavenSoft"
|
|
};*/
|
|
|
|
/*
|
|
=================
|
|
UI_drawCreditNames
|
|
TiM: From the various arrays above, this function systematically
|
|
draws each value from the array in a specific order whilst playing a sound
|
|
for each set
|
|
=================
|
|
*/
|
|
void UI_drawCreditNames( int creditsIndex )
|
|
{
|
|
int timeDeviation; //used to separate the times when each credit appears
|
|
int yDeviation; //used to place each separate credit down the y-axis each loop
|
|
|
|
//w00t! I can count the length of arrays dynamically now!!!!!!! ^_^!!!!
|
|
//*SOB* Didn't work :(
|
|
//int arrayLen = sizeof ( creditSec ) / sizeof ( creditSec[0] );
|
|
|
|
//trap_Print ( va( "arrayLen = %i\n", arrayLen ) );
|
|
|
|
timeDeviation = 200;
|
|
yDeviation = 40;
|
|
|
|
{
|
|
if (uis.realtime >= s_credits.startTime + timeDeviation ) { //After .2 seconds, the title will appear
|
|
UI_DrawProportionalString( 512, 184, creditsInfo[creditsIndex].mainTitle,UI_CENTER|UI_BIGFONT, colorTable[CT_LTGOLD1]);
|
|
|
|
/*if(uis.realtime > s_credits.startTime + timeDeviation && uis.realtime < s_credits.startTime + timeDeviation + 20){
|
|
trap_S_StartLocalSound(s_credits.pingSound, CHAN_LOCAL ); //play the sound
|
|
}*/
|
|
if ( s_credits.beepTime == 0 ) {
|
|
trap_S_StartLocalSound(s_credits.pingSound, CHAN_LOCAL );
|
|
s_credits.beepTime++;
|
|
}
|
|
|
|
timeDeviation += 200;
|
|
}
|
|
|
|
for( i = 0; i < MAX_DEVS; i++ )
|
|
{
|
|
if ( !creditsInfo[creditsIndex].devInfo[i].name[0] ) {
|
|
break;
|
|
}
|
|
|
|
if (uis.realtime > s_credits.startTime + timeDeviation) {
|
|
|
|
//For entries that have positions (ie, not beta testers )
|
|
if ( i <= 9 && creditsInfo[creditsIndex].devInfo[i].position[0] ) {
|
|
if(creditsIndex == 1 || creditsIndex == 6) { // make all programmers|additional people fit in
|
|
UI_DrawProportionalString( 420, 169 + yDeviation, creditsInfo[creditsIndex].devInfo[i].name,UI_LEFT|UI_SMALLFONT, colorTable[CT_DKPURPLE2]);
|
|
UI_DrawProportionalString( 420, 187 + yDeviation, creditsInfo[creditsIndex].devInfo[i].position,UI_LEFT|UI_TINYFONT, colorTable[CT_DKPURPLE2]); //18 varaition
|
|
} else {
|
|
UI_DrawProportionalString( 420, 180 + yDeviation, creditsInfo[creditsIndex].devInfo[i].name,UI_LEFT|UI_SMALLFONT, colorTable[CT_DKPURPLE2]);
|
|
UI_DrawProportionalString( 420, 198 + yDeviation, creditsInfo[creditsIndex].devInfo[i].position,UI_LEFT|UI_TINYFONT, colorTable[CT_DKPURPLE2]); //18 varaition
|
|
}
|
|
//Play a beep effect
|
|
if ( i == s_credits.beepTime-1 ) {
|
|
trap_S_StartLocalSound(s_credits.pingSound, CHAN_LOCAL ); //play the beep-in effect
|
|
s_credits.beepTime++;
|
|
}
|
|
}
|
|
else //Beta Testers
|
|
{
|
|
UI_DrawProportionalString( 420, 180 + yDeviation, creditsInfo[creditsIndex].devInfo[i].name,UI_LEFT|UI_SMALLFONT, colorTable[CT_DKPURPLE2]);
|
|
//UI_DrawProportionalString( 512, 180 + yDeviation, creditsInfo[creditsIndex].devInfo[i+1].name,UI_LEFT|UI_SMALLFONT, colorTable[CT_DKPURPLE2]);
|
|
//i++;
|
|
|
|
//Play a beep effect
|
|
if ( i == s_credits.beepTime -1 ) {
|
|
trap_S_StartLocalSound(s_credits.pingSound, CHAN_LOCAL ); //play the beep-in effect
|
|
s_credits.beepTime++;
|
|
}
|
|
}
|
|
|
|
if ( i >= 3) { //So it appears below lead d00d
|
|
if ( creditsInfo[creditsIndex].devInfo[i+8].name[0] && creditsInfo[creditsIndex].devInfo[i+8].position[0] ) { /*( arrayLen > 11 ) && ( ( i + 10 ) <= arrayLen )*/
|
|
UI_DrawProportionalString( 524, 180 + yDeviation, creditsInfo[creditsIndex].devInfo[i+8].name,UI_LEFT|UI_SMALLFONT, colorTable[CT_DKPURPLE2]);
|
|
UI_DrawProportionalString( 524, 198 + yDeviation, creditsInfo[creditsIndex].devInfo[i+8].position,UI_LEFT|UI_TINYFONT, colorTable[CT_DKPURPLE2]); //18 varaition
|
|
}
|
|
}
|
|
}
|
|
|
|
//Increment the data for the next iteration
|
|
timeDeviation += 200; //each loop, delay the display time by .2 seconds (hence the text doesn't all appear at once)
|
|
|
|
if ( creditsInfo[creditsIndex].devInfo[i+1].position[0] )
|
|
if(creditsIndex == 1 || creditsIndex == 6) // make all programmers|additional people fit in
|
|
yDeviation += 30;
|
|
else
|
|
yDeviation += 40; //and don't all display at the same y co-ord
|
|
else
|
|
yDeviation += 18;
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/*
|
|
===============
|
|
Credits_MenuEvent
|
|
===============
|
|
*/
|
|
static void Credits_MenuEvent( void *ptr, int event )
|
|
{
|
|
if( event != QM_ACTIVATED )
|
|
{
|
|
return;
|
|
}
|
|
|
|
s_credits.startTime = uis.realtime;
|
|
s_credits.beepTime = 0;
|
|
|
|
switch ( ((menucommon_s*)ptr)->id )
|
|
{
|
|
case ID_MAINMENU:
|
|
UI_PopMenu();
|
|
break;
|
|
|
|
case ID_LEADS:
|
|
case ID_CODERS:
|
|
case ID_2D:
|
|
case ID_3D:
|
|
case ID_MAPPING:
|
|
case ID_SOUNDS:
|
|
case ID_EXTRAS:
|
|
case ID_BETAS:
|
|
case ID_THANKS:
|
|
s_credits.creditsNum = ((menucommon_s*)ptr)->id;
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*
|
|
=================
|
|
C_MainMenu_Graphics
|
|
=================
|
|
*/
|
|
void CreditsMenu_Graphics (void)
|
|
{
|
|
|
|
// Draw the basic screen layout
|
|
UI_MenuFrame(&s_credits.menu);
|
|
|
|
UI_DrawProportionalString( 74, 66, "69",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 84, "604369",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 188, "71",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 206, "6154",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 395, "2004",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
|
|
trap_R_SetColor( colorTable[CT_LTBROWN1]);
|
|
UI_DrawHandlePic(30,203, 47, 123, uis.whiteShader); // Top left column square on bottom 3rd
|
|
UI_DrawHandlePic(30,328, 47, 61, uis.whiteShader); // Bottom left column square on bottom 3rd
|
|
|
|
UI_DrawProportionalString( 74, 206, "38",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 332, "28",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
|
|
/*
|
|
Courtesy of EF SP's Credits :P
|
|
*/
|
|
trap_R_SetColor( colorTable[CT_WHITE]);
|
|
UI_DrawHandlePic(85, 169, 306, 256, spaceBackdrop);
|
|
|
|
/*
|
|
// Grid over top of space map
|
|
trap_R_SetColor( colorTable[CT_LTBLUE1]);
|
|
UI_DrawHandlePic( 89, 234, 296, 1, uis.whiteShader);
|
|
UI_DrawHandlePic( 89, 296, 296, 1, uis.whiteShader);
|
|
UI_DrawHandlePic( 89, 364, 296, 1, uis.whiteShader);
|
|
UI_DrawHandlePic( 116, 169, 1, 256, uis.whiteShader);
|
|
UI_DrawHandlePic( 234, 169, 1, 256, uis.whiteShader);
|
|
UI_DrawHandlePic( 354, 169, 1, 256, uis.whiteShader);
|
|
*/
|
|
|
|
//Left Bracket around galaxy picture
|
|
trap_R_SetColor( colorTable[CT_DKPURPLE2]);
|
|
UI_DrawHandlePic(85,169, 16, 16, uis.graphicBracket1CornerLU);
|
|
UI_DrawHandlePic(85,185, 8, 87, uis.whiteShader);
|
|
|
|
trap_R_SetColor( colorTable[CT_DKBROWN1]);
|
|
UI_DrawHandlePic(85,275, 8, 10, uis.whiteShader);
|
|
|
|
trap_R_SetColor( colorTable[CT_LTORANGE]);
|
|
UI_DrawHandlePic(87,288, 6, 21, uis.whiteShader);
|
|
|
|
trap_R_SetColor( colorTable[CT_DKBROWN1]);
|
|
UI_DrawHandlePic(85,312, 8, 10, uis.whiteShader);
|
|
|
|
trap_R_SetColor( colorTable[CT_DKPURPLE2]);
|
|
UI_DrawHandlePic(85,325, 8, 87, uis.whiteShader);
|
|
UI_DrawHandlePic(85,412, 16, -16, uis.graphicBracket1CornerLU); //LD
|
|
|
|
//Right Bracket around galaxy picture
|
|
trap_R_SetColor( colorTable[CT_DKPURPLE2]);
|
|
UI_DrawHandlePic(375,169, -16, 16, uis.graphicBracket1CornerLU); //RU
|
|
UI_DrawHandlePic(383,185, 8, 87, uis.whiteShader);
|
|
|
|
trap_R_SetColor( colorTable[CT_DKBROWN1]);
|
|
UI_DrawHandlePic(383,275, 8, 10, uis.whiteShader);
|
|
|
|
trap_R_SetColor( colorTable[CT_LTORANGE]);
|
|
UI_DrawHandlePic(383,288, 6, 21, uis.whiteShader);
|
|
|
|
trap_R_SetColor( colorTable[CT_DKBROWN1]);
|
|
UI_DrawHandlePic(383,312, 8, 10, uis.whiteShader);
|
|
|
|
trap_R_SetColor( colorTable[CT_DKPURPLE2]);
|
|
UI_DrawHandlePic(383,325, 8, 87, uis.whiteShader);
|
|
UI_DrawHandlePic(375,412, -16, -16, uis.graphicBracket1CornerLU); //RD
|
|
|
|
// Description frame
|
|
trap_R_SetColor( colorTable[CT_LTBLUE1]);
|
|
UI_DrawHandlePic( 397, 163, -16, -16, cornerUpper); // Top corner
|
|
UI_DrawHandlePic( 397, 418, -16, 16, cornerUpper);// Bottom Left Corner
|
|
|
|
UI_DrawHandlePic(398, 182, 12, 233, uis.whiteShader); // Block between top & bottom corner
|
|
|
|
UI_DrawHandlePic( 412, 169, 10, 7, uis.whiteShader); // Top line
|
|
UI_DrawHandlePic( 425, 169, 187, 7, uis.whiteShader); // Top line
|
|
|
|
UI_DrawHandlePic( 412, 421, 10, 7, uis.whiteShader); // Top line
|
|
UI_DrawHandlePic( 425, 421, 187, 7, uis.whiteShader); // Bottom line
|
|
|
|
//end
|
|
|
|
//UI_Draw3DModel( 230, 290, 245, 245, s_credits.logoModel, m_origin, m_angles, m_mid );
|
|
|
|
trap_R_SetColor( colorTable[s_credits.leads.color]);
|
|
UI_DrawHandlePic(s_credits.leads.generic.x - 14, s_credits.leads.generic.y,MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd);
|
|
UI_DrawHandlePic(s_credits.coders.generic.x - 14, s_credits.coders.generic.y,MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd);
|
|
UI_DrawHandlePic(s_credits.twodee.generic.x - 14, s_credits.twodee.generic.y,MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd);
|
|
UI_DrawHandlePic(s_credits.threedee.generic.x - 14, s_credits.threedee.generic.y,MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd);
|
|
UI_DrawHandlePic(s_credits.mapping.generic.x - 14, s_credits.mapping.generic.y,MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd);
|
|
UI_DrawHandlePic(s_credits.sounds.generic.x - 14, s_credits.sounds.generic.y,MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd);
|
|
UI_DrawHandlePic(s_credits.extras.generic.x - 14, s_credits.extras.generic.y,MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd);
|
|
UI_DrawHandlePic(s_credits.betas.generic.x - 14, s_credits.betas.generic.y,MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd);
|
|
UI_DrawHandlePic(s_credits.thanks.generic.x - 14, s_credits.thanks.generic.y,MENU_BUTTON_MED_HEIGHT, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd);
|
|
|
|
}
|
|
|
|
static void UI_drawLogo ( void )
|
|
{
|
|
refdef_t refdef;
|
|
refEntity_t ent;
|
|
vec3_t origin = {0.0, 0.0, 0.0};
|
|
vec3_t angles;
|
|
float adjust;
|
|
float x, y, w, h;
|
|
//vec4_t color = {0.5, 0, 0, 1};
|
|
|
|
// setup the refdef
|
|
|
|
memset( &refdef, 0, sizeof( refdef ) );
|
|
|
|
refdef.rdflags = RDF_NOWORLDMODEL;
|
|
|
|
AxisClear( refdef.viewaxis );
|
|
|
|
x = 0;
|
|
y = 0;
|
|
w = 400; //640 //TiM: I don't know exactly, but w and h seem to control the size of the region the model will be drawn in
|
|
h = 480; //120
|
|
UI_AdjustFrom640( &x, &y, &w, &h );
|
|
refdef.x = x;
|
|
refdef.y = y;
|
|
refdef.width = w;
|
|
refdef.height = h;
|
|
|
|
adjust = 0; // JDC: Kenneth asked me to stop this 1.0 * sin( (float)uis.realtime / 1000 );
|
|
refdef.fov_x = 17 + adjust; //60 //TiM: Controls width scale
|
|
refdef.fov_y = 19.6875 + adjust; //19.6875
|
|
|
|
refdef.time = uis.realtime;
|
|
|
|
origin[0] = 800; //300 //TiM: Controls Overall Size
|
|
origin[1] = -22; //TiM: Controls Horizontal Position
|
|
origin[2] = -70; //-32 //TiM: Controls vertical Position
|
|
|
|
trap_R_ClearScene();
|
|
|
|
// add the model
|
|
|
|
memset( &ent, 0, sizeof(ent) );
|
|
|
|
adjust = 20.0/300.0 * uis.realtime; //5.0 * sin( (float)uis.realtime / 5000 );
|
|
VectorSet( angles, 0, 180 + adjust, 0 );
|
|
AnglesToAxis( angles, ent.axis );
|
|
ent.hModel = s_credits.logoModel;
|
|
|
|
|
|
if (trap_Cvar_VariableValue("r_dynamiclight") ) {
|
|
ent.renderfx = RF_LOWLIGHT|RF_NOSHADOW; // keep it dark, and no stencil shadows //RF_LOWBRIGHT
|
|
} else {
|
|
ent.renderfx = RF_NOSHADOW; // no stencil shadows
|
|
}
|
|
|
|
|
|
VectorCopy( origin, ent.origin );
|
|
VectorCopy( origin, ent.lightingOrigin );
|
|
VectorCopy( ent.origin, ent.oldorigin );
|
|
|
|
origin[0] -= 50; // + = behind, - = in front
|
|
origin[1] += 50; // + = left, - = right
|
|
origin[2] += 50; // + = above, - = below
|
|
trap_R_AddLightToScene( origin, 150, 1.0, 1.0, 1.0 );
|
|
|
|
trap_R_AddRefEntityToScene( &ent );
|
|
|
|
trap_R_RenderScene( &refdef );
|
|
}
|
|
|
|
/*
|
|
=================
|
|
CreditsMenu_Draw
|
|
=================
|
|
*/
|
|
void CreditsMenu_Draw (void)
|
|
{
|
|
|
|
CreditsMenu_Graphics();
|
|
|
|
Menu_Draw( &s_credits.menu );
|
|
|
|
UI_drawLogo();
|
|
|
|
UI_drawCreditNames( s_credits.creditsNum-1 );
|
|
|
|
/*switch(s_credits.creditsNum)
|
|
{
|
|
case 0:
|
|
UI_drawCreditNames( ra_leads, 11 );
|
|
break;
|
|
case 1:
|
|
UI_drawCreditNames( ra_coders, 11 );
|
|
break;
|
|
case 2:
|
|
UI_drawCreditNames( ra_2D, 11 );
|
|
break;
|
|
case 3:
|
|
UI_drawCreditNames( ra_3D, 7 );
|
|
break;
|
|
case 4:
|
|
UI_drawCreditNames( ra_mappers, 17 );
|
|
break;
|
|
case 5:
|
|
UI_drawCreditNames( ra_sounds, 11 );
|
|
break;
|
|
case 6:
|
|
UI_drawCreditNames( ra_adds, 11 );
|
|
break;
|
|
case 7:
|
|
UI_drawCreditNames( ra_betas, 14 );
|
|
break;
|
|
case 8:
|
|
UI_drawCreditNames( ra_thanks, 11 );
|
|
break;
|
|
}*/
|
|
|
|
|
|
}
|
|
|
|
/*
|
|
=================
|
|
UI_Credits_Cache
|
|
=================
|
|
*/
|
|
void UI_CreditsMenu_Cache( void )
|
|
{
|
|
s_credits.logoModel = trap_R_RegisterModel( MAIN_LOGO_MODEL );
|
|
s_credits.pingSound = trap_S_RegisterSound( LCARS_BLIP );
|
|
cornerUpper = trap_R_RegisterShaderNoMip( LCARS_CORNER_U );
|
|
spaceBackdrop = trap_R_RegisterShaderNoMip( LCARS_LOGO_BACKDROP );
|
|
}
|
|
|
|
/*
|
|
===============
|
|
UI_Credits_MenuInit
|
|
===============
|
|
*/
|
|
static void UI_Credits_MenuInit( void )
|
|
{
|
|
memset( &s_credits, 0 ,sizeof(credits_t) );
|
|
|
|
s_credits.creditsNum = ID_LEADS;
|
|
s_credits.beepTime = 0;
|
|
|
|
// Menu Data
|
|
s_credits.menu.wrapAround = qtrue;
|
|
s_credits.menu.fullscreen = qtrue;
|
|
s_credits.menu.draw = CreditsMenu_Draw;
|
|
s_credits.menu.descX = MENU_DESC_X;
|
|
s_credits.menu.descY = MENU_DESC_Y;
|
|
s_credits.menu.titleX = MENU_TITLE_X;
|
|
s_credits.menu.titleY = MENU_TITLE_Y;
|
|
s_credits.menu.titleI = MNT_CREDITS_TITLE;
|
|
s_credits.menu.footNoteEnum = MNT_CREDITS;
|
|
|
|
UI_CreditsMenu_Cache();
|
|
|
|
// Button Data
|
|
s_credits.mainmenu.generic.type = MTYPE_BITMAP;
|
|
s_credits.mainmenu.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_credits.mainmenu.generic.x = 482;
|
|
s_credits.mainmenu.generic.y = 136;
|
|
s_credits.mainmenu.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
|
|
s_credits.mainmenu.generic.id = ID_MAINMENU;
|
|
s_credits.mainmenu.generic.callback = Credits_MenuEvent;
|
|
s_credits.mainmenu.width = MENU_BUTTON_MED_WIDTH;
|
|
s_credits.mainmenu.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_credits.mainmenu.color = CT_DKPURPLE1;
|
|
s_credits.mainmenu.color2 = CT_LTPURPLE1;
|
|
s_credits.mainmenu.textX = MENU_BUTTON_TEXT_X;
|
|
s_credits.mainmenu.textY = MENU_BUTTON_TEXT_Y;
|
|
s_credits.mainmenu.textEnum = MBT_MAINMENU;
|
|
s_credits.mainmenu.textcolor = CT_BLACK;
|
|
s_credits.mainmenu.textcolor2 = CT_WHITE;
|
|
|
|
s_credits.leads.generic.type = MTYPE_BITMAP;
|
|
s_credits.leads.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_credits.leads.generic.x = cm_buttons[0][0];
|
|
s_credits.leads.generic.y = cm_buttons[0][1];
|
|
s_credits.leads.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
|
|
s_credits.leads.generic.id = ID_LEADS;
|
|
s_credits.leads.generic.callback = Credits_MenuEvent;
|
|
s_credits.leads.width = MENU_BUTTON_MED_WIDTH;
|
|
s_credits.leads.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_credits.leads.color = CT_DKPURPLE1;
|
|
s_credits.leads.color2 = CT_LTPURPLE1;
|
|
s_credits.leads.textX = MENU_BUTTON_TEXT_X;
|
|
s_credits.leads.textY = MENU_BUTTON_TEXT_Y;
|
|
s_credits.leads.textEnum = MBT_LEADS;
|
|
s_credits.leads.textcolor = CT_BLACK;
|
|
s_credits.leads.textcolor2 = CT_WHITE;
|
|
|
|
s_credits.coders.generic.type = MTYPE_BITMAP;
|
|
s_credits.coders.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_credits.coders.generic.x = cm_buttons[1][0];
|
|
s_credits.coders.generic.y = cm_buttons[1][1];
|
|
s_credits.coders.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
|
|
s_credits.coders.generic.id = ID_CODERS;
|
|
s_credits.coders.generic.callback = Credits_MenuEvent;
|
|
s_credits.coders.width = MENU_BUTTON_MED_WIDTH;
|
|
s_credits.coders.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_credits.coders.color = CT_DKPURPLE1;
|
|
s_credits.coders.color2 = CT_LTPURPLE1;
|
|
s_credits.coders.textX = MENU_BUTTON_TEXT_X;
|
|
s_credits.coders.textY = MENU_BUTTON_TEXT_Y;
|
|
s_credits.coders.textEnum = MBT_CODERS;
|
|
s_credits.coders.textcolor = CT_BLACK;
|
|
s_credits.coders.textcolor2 = CT_WHITE;
|
|
|
|
s_credits.twodee.generic.type = MTYPE_BITMAP;
|
|
s_credits.twodee.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_credits.twodee.generic.x = cm_buttons[2][0];
|
|
s_credits.twodee.generic.y = cm_buttons[2][1];
|
|
s_credits.twodee.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
|
|
s_credits.twodee.generic.id = ID_2D;
|
|
s_credits.twodee.generic.callback = Credits_MenuEvent;
|
|
s_credits.twodee.width = MENU_BUTTON_MED_WIDTH;
|
|
s_credits.twodee.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_credits.twodee.color = CT_DKPURPLE1;
|
|
s_credits.twodee.color2 = CT_LTPURPLE1;
|
|
s_credits.twodee.textX = MENU_BUTTON_TEXT_X;
|
|
s_credits.twodee.textY = MENU_BUTTON_TEXT_Y;
|
|
s_credits.twodee.textEnum = MBT_2D;
|
|
s_credits.twodee.textcolor = CT_BLACK;
|
|
s_credits.twodee.textcolor2 = CT_WHITE;
|
|
|
|
s_credits.threedee.generic.type = MTYPE_BITMAP;
|
|
s_credits.threedee.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_credits.threedee.generic.x = cm_buttons[3][0];
|
|
s_credits.threedee.generic.y = cm_buttons[3][1];
|
|
s_credits.threedee.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
|
|
s_credits.threedee.generic.id = ID_3D;
|
|
s_credits.threedee.generic.callback = Credits_MenuEvent;
|
|
s_credits.threedee.width = MENU_BUTTON_MED_WIDTH;
|
|
s_credits.threedee.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_credits.threedee.color = CT_DKPURPLE1;
|
|
s_credits.threedee.color2 = CT_LTPURPLE1;
|
|
s_credits.threedee.textX = MENU_BUTTON_TEXT_X;
|
|
s_credits.threedee.textY = MENU_BUTTON_TEXT_Y;
|
|
s_credits.threedee.textEnum = MBT_3D;
|
|
s_credits.threedee.textcolor = CT_BLACK;
|
|
s_credits.threedee.textcolor2 = CT_WHITE;
|
|
|
|
s_credits.mapping.generic.type = MTYPE_BITMAP;
|
|
s_credits.mapping.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_credits.mapping.generic.x = cm_buttons[4][0];
|
|
s_credits.mapping.generic.y = cm_buttons[4][1];
|
|
s_credits.mapping.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
|
|
s_credits.mapping.generic.id = ID_MAPPING;
|
|
s_credits.mapping.generic.callback = Credits_MenuEvent;
|
|
s_credits.mapping.width = MENU_BUTTON_MED_WIDTH;
|
|
s_credits.mapping.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_credits.mapping.color = CT_DKPURPLE1;
|
|
s_credits.mapping.color2 = CT_LTPURPLE1;
|
|
s_credits.mapping.textX = MENU_BUTTON_TEXT_X;
|
|
s_credits.mapping.textY = MENU_BUTTON_TEXT_Y;
|
|
s_credits.mapping.textEnum = MBT_MAPPING;
|
|
s_credits.mapping.textcolor = CT_BLACK;
|
|
s_credits.mapping.textcolor2 = CT_WHITE;
|
|
|
|
s_credits.sounds.generic.type = MTYPE_BITMAP;
|
|
s_credits.sounds.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_credits.sounds.generic.x = cm_buttons[5][0];
|
|
s_credits.sounds.generic.y = cm_buttons[5][1];
|
|
s_credits.sounds.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
|
|
s_credits.sounds.generic.id = ID_SOUNDS;
|
|
s_credits.sounds.generic.callback = Credits_MenuEvent;
|
|
s_credits.sounds.width = MENU_BUTTON_MED_WIDTH;
|
|
s_credits.sounds.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_credits.sounds.color = CT_DKPURPLE1;
|
|
s_credits.sounds.color2 = CT_LTPURPLE1;
|
|
s_credits.sounds.textX = MENU_BUTTON_TEXT_X;
|
|
s_credits.sounds.textY = MENU_BUTTON_TEXT_Y;
|
|
s_credits.sounds.textEnum = MBT_SOUNDS;
|
|
s_credits.sounds.textcolor = CT_BLACK;
|
|
s_credits.sounds.textcolor2 = CT_WHITE;
|
|
|
|
s_credits.extras.generic.type = MTYPE_BITMAP;
|
|
s_credits.extras.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_credits.extras.generic.x = cm_buttons[6][0];
|
|
s_credits.extras.generic.y = cm_buttons[6][1];
|
|
s_credits.extras.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
|
|
s_credits.extras.generic.id = ID_EXTRAS;
|
|
s_credits.extras.generic.callback = Credits_MenuEvent;
|
|
s_credits.extras.width = MENU_BUTTON_MED_WIDTH;
|
|
s_credits.extras.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_credits.extras.color = CT_DKPURPLE1;
|
|
s_credits.extras.color2 = CT_LTPURPLE1;
|
|
s_credits.extras.textX = MENU_BUTTON_TEXT_X;
|
|
s_credits.extras.textY = MENU_BUTTON_TEXT_Y;
|
|
s_credits.extras.textEnum = MBT_EXTRAS;
|
|
s_credits.extras.textcolor = CT_BLACK;
|
|
s_credits.extras.textcolor2 = CT_WHITE;
|
|
|
|
s_credits.betas.generic.type = MTYPE_BITMAP;
|
|
s_credits.betas.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_credits.betas.generic.x = cm_buttons[7][0];
|
|
s_credits.betas.generic.y = cm_buttons[7][1];
|
|
s_credits.betas.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
|
|
s_credits.betas.generic.id = ID_BETAS;
|
|
s_credits.betas.generic.callback = Credits_MenuEvent;
|
|
s_credits.betas.width = MENU_BUTTON_MED_WIDTH;
|
|
s_credits.betas.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_credits.betas.color = CT_DKPURPLE1;
|
|
s_credits.betas.color2 = CT_LTPURPLE1;
|
|
s_credits.betas.textX = MENU_BUTTON_TEXT_X;
|
|
s_credits.betas.textY = MENU_BUTTON_TEXT_Y;
|
|
s_credits.betas.textEnum = MBT_BETAS;
|
|
s_credits.betas.textcolor = CT_BLACK;
|
|
s_credits.betas.textcolor2 = CT_WHITE;
|
|
|
|
s_credits.thanks.generic.type = MTYPE_BITMAP;
|
|
s_credits.thanks.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_credits.thanks.generic.x = cm_buttons[8][0];
|
|
s_credits.thanks.generic.y = cm_buttons[8][1];
|
|
s_credits.thanks.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
|
|
s_credits.thanks.generic.id = ID_THANKS;
|
|
s_credits.thanks.generic.callback = Credits_MenuEvent;
|
|
s_credits.thanks.width = MENU_BUTTON_MED_WIDTH;
|
|
s_credits.thanks.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_credits.thanks.color = CT_DKPURPLE1;
|
|
s_credits.thanks.color2 = CT_LTPURPLE1;
|
|
s_credits.thanks.textX = MENU_BUTTON_TEXT_X;
|
|
s_credits.thanks.textY = MENU_BUTTON_TEXT_Y;
|
|
s_credits.thanks.textEnum = MBT_THANKS;
|
|
s_credits.thanks.textcolor = CT_BLACK;
|
|
s_credits.thanks.textcolor2 = CT_WHITE;
|
|
|
|
Menu_AddItem( &s_credits.menu, &s_credits.mainmenu );
|
|
Menu_AddItem( &s_credits.menu, &s_credits.leads );
|
|
Menu_AddItem( &s_credits.menu, &s_credits.coders );
|
|
Menu_AddItem( &s_credits.menu, &s_credits.twodee );
|
|
Menu_AddItem( &s_credits.menu, &s_credits.threedee );
|
|
Menu_AddItem( &s_credits.menu, &s_credits.mapping );
|
|
Menu_AddItem( &s_credits.menu, &s_credits.sounds );
|
|
Menu_AddItem( &s_credits.menu, &s_credits.extras );
|
|
Menu_AddItem( &s_credits.menu, &s_credits.betas );
|
|
Menu_AddItem( &s_credits.menu, &s_credits.thanks );
|
|
}
|
|
|
|
/*
|
|
===============
|
|
UI_CreditsMenu
|
|
===============
|
|
*/
|
|
void UI_CreditsMenu( void )
|
|
{
|
|
|
|
UI_Credits_MenuInit();
|
|
UI_PushMenu( &s_credits.menu );
|
|
|
|
}
|