mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-27 20:20:40 +00:00
- ported the credits screen.
This commit is contained in:
parent
d94077f833
commit
bddd196539
4 changed files with 198 additions and 197 deletions
|
@ -1215,11 +1215,80 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// Credits roll
|
||||||
|
//
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class DExCredits : public DScreenJob
|
||||||
|
{
|
||||||
|
TArray<FString> credits;
|
||||||
|
TArray<FString> pagelines;
|
||||||
|
uint64_t page;
|
||||||
|
uint64_t pagetime;
|
||||||
|
|
||||||
|
public:
|
||||||
|
DExCredits()
|
||||||
|
{
|
||||||
|
auto textdata = fileSystem.LoadFile("credits.txt", 1);
|
||||||
|
FString text = (char*)textdata.Data();
|
||||||
|
text.Substitute("\r", "");
|
||||||
|
credits = text.Split("\n\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
int Frame(uint64_t clock, bool skiprequest) override
|
||||||
|
{
|
||||||
|
if (clock == 0)
|
||||||
|
{
|
||||||
|
if (credits.Size() == 0) return 0;
|
||||||
|
playCDtrack(19, false);
|
||||||
|
pagetime = 0;
|
||||||
|
page = -1;
|
||||||
|
}
|
||||||
|
if (clock >= pagetime || skiprequest)
|
||||||
|
{
|
||||||
|
page++;
|
||||||
|
if (page < credits.Size())
|
||||||
|
pagelines = credits[page].Split("\n");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (skiprequest || !CDplaying()) return 0;
|
||||||
|
pagelines.Clear();
|
||||||
|
}
|
||||||
|
pagetime = clock + 2'000'000'000; //
|
||||||
|
}
|
||||||
|
twod->ClearScreen();
|
||||||
|
|
||||||
|
int y = 100 - ((10 * (pagelines.Size() - 1)) / 2);
|
||||||
|
|
||||||
|
for (unsigned i = 0; i < pagelines.Size(); i++)
|
||||||
|
{
|
||||||
|
uint64_t ptime = (pagetime-clock) / 1'000'000;
|
||||||
|
int light;
|
||||||
|
|
||||||
|
if (ptime < 255) light = ptime;
|
||||||
|
else if (ptime > 2000 - 255) light = 2000 - ptime;
|
||||||
|
else light = 255;
|
||||||
|
|
||||||
|
auto color = PalEntry(255, light, light, light);
|
||||||
|
|
||||||
|
int nStringWidth = SmallFont->StringWidth(pagelines[i]);
|
||||||
|
DrawText(twod, SmallFont, CR_UNTRANSLATED, 160 - nStringWidth / 2, y, pagelines[i], DTA_FullscreenScale, FSMode_ScaleToFit43, DTA_VirtualWidth, 320, DTA_VirtualHeight, 200, DTA_Color, color, TAG_DONE);
|
||||||
|
y += 10;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// temporary.
|
// temporary.
|
||||||
void RunCinemaScene(int num)
|
void RunCinemaScene(int num)
|
||||||
{
|
{
|
||||||
num = -1;
|
num = -1;
|
||||||
JobDesc job = { num == -1? (DScreenJob*)Create<DLastLevelCinema>() : Create<DCinema>(num) };
|
JobDesc job = { num == -1? (DScreenJob*)Create<DExCredits>() : Create<DCinema>(num) };
|
||||||
RunScreenJob(&job, 1, [](bool) { gamestate = GS_LEVEL; });
|
RunScreenJob(&job, 1, [](bool) { gamestate = GS_LEVEL; });
|
||||||
SyncScreenJob();
|
SyncScreenJob();
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,132 +99,6 @@ const char *gString[] =
|
||||||
"3D ENGINE BY 3D REALMS",
|
"3D ENGINE BY 3D REALMS",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"CREDITS",
|
|
||||||
"EXHUMED",
|
|
||||||
"",
|
|
||||||
"EXECUTIVE PRODUCERS",
|
|
||||||
" ",
|
|
||||||
"BRIAN MCNEELY",
|
|
||||||
"PAUL LANGE",
|
|
||||||
"",
|
|
||||||
"GAME CONCEPT",
|
|
||||||
" ",
|
|
||||||
"PAUL LANGE",
|
|
||||||
"",
|
|
||||||
"GAME DESIGN",
|
|
||||||
" ",
|
|
||||||
"BRIAN MCNEELY",
|
|
||||||
"",
|
|
||||||
"ADDITIONAL DESIGN",
|
|
||||||
" ",
|
|
||||||
"PAUL KNUTZEN",
|
|
||||||
"PAUL LANGE",
|
|
||||||
"JOHN VAN DEUSEN",
|
|
||||||
"KURT PFEIFER",
|
|
||||||
"DOMINICK MEISSNER",
|
|
||||||
"DANE EMERSON",
|
|
||||||
"",
|
|
||||||
"GAME PROGRAMMING",
|
|
||||||
" ",
|
|
||||||
"KURT PFEIFER",
|
|
||||||
"JOHN YUILL",
|
|
||||||
"",
|
|
||||||
"ADDITIONAL PROGRAMMING",
|
|
||||||
" ",
|
|
||||||
"PAUL HAUGERUD",
|
|
||||||
"",
|
|
||||||
"ADDITIONAL TECHNICAL SUPPORT",
|
|
||||||
" ",
|
|
||||||
"JOHN YUILL",
|
|
||||||
"PAUL HAUGERUD",
|
|
||||||
"JEFF BLAZIER",
|
|
||||||
"",
|
|
||||||
"LEVEL DESIGN",
|
|
||||||
" ",
|
|
||||||
"PAUL KNUTZEN",
|
|
||||||
"",
|
|
||||||
"ADDITIONAL LEVELS",
|
|
||||||
" ",
|
|
||||||
"BRIAN MCNEELY",
|
|
||||||
"",
|
|
||||||
"MONSTERS AND WEAPONS ",
|
|
||||||
" ",
|
|
||||||
"JOHN VAN DEUSEN",
|
|
||||||
"",
|
|
||||||
"ARTISTS",
|
|
||||||
" ",
|
|
||||||
"BRIAN MCNEELY",
|
|
||||||
"PAUL KNUTZEN",
|
|
||||||
"JOHN VAN DEUSEN",
|
|
||||||
"TROY JACOBSON",
|
|
||||||
"KEVIN CHUNG",
|
|
||||||
"ERIC KLOKSTAD",
|
|
||||||
"RICHARD NICHOLS",
|
|
||||||
"JOE KRESOJA",
|
|
||||||
"JASON WIGGIN",
|
|
||||||
"",
|
|
||||||
"MUSIC AND SOUND EFFECTS",
|
|
||||||
" ",
|
|
||||||
"SCOTT BRANSTON",
|
|
||||||
"",
|
|
||||||
"PRODUCT TESTING",
|
|
||||||
" ",
|
|
||||||
"DOMINICK MEISSNER",
|
|
||||||
"TOM KRISTENSEN",
|
|
||||||
"JASON WIGGIN",
|
|
||||||
"MARK COATES",
|
|
||||||
"",
|
|
||||||
"INSTRUCTION MANUAL",
|
|
||||||
" ",
|
|
||||||
"TOM KRISTENSEN",
|
|
||||||
"",
|
|
||||||
"SPECIAL THANKS",
|
|
||||||
" ",
|
|
||||||
"JACQUI LYONS",
|
|
||||||
"MARJACQ MICRO, LTD.",
|
|
||||||
"MIKE BROWN",
|
|
||||||
"IAN MATHIAS",
|
|
||||||
"CHERYL LUSCHEI",
|
|
||||||
"3D REALMS",
|
|
||||||
"KENNETH SILVERMAN",
|
|
||||||
"GREG MALONE",
|
|
||||||
"MILES DESIGN",
|
|
||||||
"REDMOND AM/PM MINI MART",
|
|
||||||
"7-11 DOUBLE GULP",
|
|
||||||
"",
|
|
||||||
"THANKS FOR PLAYING",
|
|
||||||
"",
|
|
||||||
"THE END",
|
|
||||||
"",
|
|
||||||
"GUESS YOURE STUCK HERE",
|
|
||||||
"UNTIL THE SONG ENDS",
|
|
||||||
"",
|
|
||||||
"MAYBE THIS IS A GOOD",
|
|
||||||
"TIME TO THINK ABOUT ALL",
|
|
||||||
"THE THINGS YOU CAN DO",
|
|
||||||
"AFTER THE MUSIC IS OVER.",
|
|
||||||
"",
|
|
||||||
"OR YOU COULD JUST STARE",
|
|
||||||
"AT THIS SCREEN",
|
|
||||||
"",
|
|
||||||
"AND WATCH THESE MESSAGES",
|
|
||||||
"GO BY...",
|
|
||||||
"",
|
|
||||||
"...AND WONDER JUST HOW LONG",
|
|
||||||
"WE WILL DRAG THIS OUT...",
|
|
||||||
"",
|
|
||||||
"AND BELIEVE ME, WE CAN DRAG",
|
|
||||||
"IT OUT FOR QUITE A WHILE.",
|
|
||||||
"",
|
|
||||||
"SHOULD BE OVER SOON...",
|
|
||||||
"",
|
|
||||||
"ANY MOMENT NOW...",
|
|
||||||
"",
|
|
||||||
" ",
|
|
||||||
"",
|
|
||||||
"SEE YA",
|
|
||||||
"",
|
|
||||||
"END",
|
|
||||||
"PASSWORDS",
|
"PASSWORDS",
|
||||||
"HOLLY",
|
"HOLLY",
|
||||||
"KIMBERLY",
|
"KIMBERLY",
|
||||||
|
@ -913,74 +787,6 @@ void CheckKeys()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DoCredits()
|
|
||||||
{
|
|
||||||
NoClip();
|
|
||||||
|
|
||||||
playCDtrack(19, false);
|
|
||||||
|
|
||||||
int nSecretSkipKeyCount = 0;
|
|
||||||
|
|
||||||
if (videoGetRenderMode() == REND_CLASSIC)
|
|
||||||
FadeOut(0);
|
|
||||||
|
|
||||||
int nCreditsIndex = FindGString("CREDITS");
|
|
||||||
|
|
||||||
while (strcmp(gString[nCreditsIndex], "END") != 0)
|
|
||||||
{
|
|
||||||
EraseScreen(overscanindex);
|
|
||||||
|
|
||||||
int nStart = nCreditsIndex;
|
|
||||||
|
|
||||||
// skip blanks
|
|
||||||
while (strlen(gString[nCreditsIndex]) != 0) {
|
|
||||||
nCreditsIndex++;
|
|
||||||
}
|
|
||||||
|
|
||||||
int y = 100 - ((10 * (nCreditsIndex - nStart - 1)) / 2);
|
|
||||||
|
|
||||||
for (int i = nStart; i < nCreditsIndex; i++)
|
|
||||||
{
|
|
||||||
int nStringWidth = SmallFont->StringWidth(gString[i]);
|
|
||||||
DrawText(twod, SmallFont, CR_UNTRANSLATED, 160 - nStringWidth / 2, y, gString[i], DTA_FullscreenScale, FSMode_ScaleToFit43, DTA_VirtualWidth, 320, DTA_VirtualHeight, 200, TAG_DONE);
|
|
||||||
y += 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
videoNextPage();
|
|
||||||
|
|
||||||
nCreditsIndex++;
|
|
||||||
|
|
||||||
if (videoGetRenderMode() == REND_CLASSIC)
|
|
||||||
FadeIn();
|
|
||||||
|
|
||||||
int nDuration = (int)totalclock + 600;
|
|
||||||
|
|
||||||
while ((int)totalclock <= nDuration)
|
|
||||||
{
|
|
||||||
HandleAsync();
|
|
||||||
if(inputState.GetKeyStatus(sc_F12))
|
|
||||||
{
|
|
||||||
nSecretSkipKeyCount++;
|
|
||||||
|
|
||||||
inputState.ClearKeyStatus(sc_F12);
|
|
||||||
|
|
||||||
if (nSecretSkipKeyCount > 5) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (videoGetRenderMode() == REND_CLASSIC)
|
|
||||||
FadeOut(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
while (CDplaying())
|
|
||||||
{
|
|
||||||
HandleAsync();
|
|
||||||
inputState.keyGetChar();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void FinishLevel()
|
void FinishLevel()
|
||||||
{
|
{
|
||||||
if (levelnum > nBestLevel) {
|
if (levelnum > nBestLevel) {
|
||||||
|
@ -1018,7 +824,7 @@ void FinishLevel()
|
||||||
DoAfterCinemaScene(levelnum);
|
DoAfterCinemaScene(levelnum);
|
||||||
if (levelnum == kMap20)
|
if (levelnum == kMap20)
|
||||||
{
|
{
|
||||||
DoCredits();
|
//DoCredits();
|
||||||
nPlayerLives[0] = 0;
|
nPlayerLives[0] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1252,6 +1058,7 @@ int32_t r_maxfpsoffset = 0;
|
||||||
|
|
||||||
void PatchDemoStrings()
|
void PatchDemoStrings()
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
if (!ISDEMOVER)
|
if (!ISDEMOVER)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -1270,6 +1077,7 @@ void PatchDemoStrings()
|
||||||
gString[66] = "TWENTY LEVELS, PLUS 12 NETWORK";
|
gString[66] = "TWENTY LEVELS, PLUS 12 NETWORK";
|
||||||
gString[67] = "PLAY LEVELS CAN BE YOURS!";
|
gString[67] = "PLAY LEVELS CAN BE YOURS!";
|
||||||
gString[68] = "END";
|
gString[68] = "END";
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExitGame()
|
void ExitGame()
|
||||||
|
|
|
@ -353,7 +353,7 @@ short nBeforeScene[] = { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0
|
||||||
|
|
||||||
void CheckBeforeScene(int nLevel)
|
void CheckBeforeScene(int nLevel)
|
||||||
{
|
{
|
||||||
if (nLevel == kMap20)
|
if (1)//nLevel == kMap20)
|
||||||
{
|
{
|
||||||
RunCinemaScene(-1);
|
RunCinemaScene(-1);
|
||||||
return;
|
return;
|
||||||
|
|
124
wadsrc/static/filter/exhumed/credits.txt
Normal file
124
wadsrc/static/filter/exhumed/credits.txt
Normal file
|
@ -0,0 +1,124 @@
|
||||||
|
EXHUMED
|
||||||
|
|
||||||
|
EXECUTIVE PRODUCERS
|
||||||
|
|
||||||
|
BRIAN MCNEELY
|
||||||
|
PAUL LANGE
|
||||||
|
|
||||||
|
GAME CONCEPT
|
||||||
|
|
||||||
|
PAUL LANGE
|
||||||
|
|
||||||
|
GAME DESIGN
|
||||||
|
|
||||||
|
BRIAN MCNEELY
|
||||||
|
|
||||||
|
ADDITIONAL DESIGN
|
||||||
|
|
||||||
|
PAUL KNUTZEN
|
||||||
|
PAUL LANGE
|
||||||
|
JOHN VAN DEUSEN
|
||||||
|
KURT PFEIFER
|
||||||
|
DOMINICK MEISSNER
|
||||||
|
DANE EMERSON
|
||||||
|
|
||||||
|
GAME PROGRAMMING
|
||||||
|
|
||||||
|
KURT PFEIFER
|
||||||
|
JOHN YUILL
|
||||||
|
|
||||||
|
ADDITIONAL PROGRAMMING
|
||||||
|
|
||||||
|
PAUL HAUGERUD
|
||||||
|
|
||||||
|
ADDITIONAL TECHNICAL SUPPORT
|
||||||
|
|
||||||
|
JOHN YUILL
|
||||||
|
PAUL HAUGERUD
|
||||||
|
JEFF BLAZIER
|
||||||
|
|
||||||
|
LEVEL DESIGN
|
||||||
|
|
||||||
|
PAUL KNUTZEN
|
||||||
|
|
||||||
|
ADDITIONAL LEVELS
|
||||||
|
|
||||||
|
BRIAN MCNEELY
|
||||||
|
|
||||||
|
MONSTERS AND WEAPONS
|
||||||
|
|
||||||
|
JOHN VAN DEUSEN
|
||||||
|
|
||||||
|
ARTISTS
|
||||||
|
|
||||||
|
BRIAN MCNEELY
|
||||||
|
PAUL KNUTZEN
|
||||||
|
JOHN VAN DEUSEN
|
||||||
|
TROY JACOBSON
|
||||||
|
KEVIN CHUNG
|
||||||
|
ERIC KLOKSTAD
|
||||||
|
RICHARD NICHOLS
|
||||||
|
JOE KRESOJA
|
||||||
|
JASON WIGGIN
|
||||||
|
|
||||||
|
MUSIC AND SOUND EFFECTS
|
||||||
|
|
||||||
|
SCOTT BRANSTON
|
||||||
|
|
||||||
|
PRODUCT TESTING
|
||||||
|
|
||||||
|
DOMINICK MEISSNER
|
||||||
|
TOM KRISTENSEN
|
||||||
|
JASON WIGGIN
|
||||||
|
MARK COATES
|
||||||
|
|
||||||
|
INSTRUCTION MANUAL
|
||||||
|
|
||||||
|
TOM KRISTENSEN
|
||||||
|
|
||||||
|
SPECIAL THANKS
|
||||||
|
|
||||||
|
JACQUI LYONS
|
||||||
|
MARJACQ MICRO, LTD.
|
||||||
|
MIKE BROWN
|
||||||
|
IAN MATHIAS
|
||||||
|
CHERYL LUSCHEI
|
||||||
|
3D REALMS
|
||||||
|
KENNETH SILVERMAN
|
||||||
|
GREG MALONE
|
||||||
|
MILES DESIGN
|
||||||
|
REDMOND AM/PM MINI MART
|
||||||
|
7-11 DOUBLE GULP
|
||||||
|
|
||||||
|
THANKS FOR PLAYING
|
||||||
|
|
||||||
|
THE END
|
||||||
|
|
||||||
|
GUESS YOURE STUCK HERE
|
||||||
|
UNTIL THE SONG ENDS
|
||||||
|
|
||||||
|
MAYBE THIS IS A GOOD
|
||||||
|
TIME TO THINK ABOUT ALL
|
||||||
|
THE THINGS YOU CAN DO
|
||||||
|
AFTER THE MUSIC IS OVER.
|
||||||
|
|
||||||
|
OR YOU COULD JUST STARE
|
||||||
|
AT THIS SCREEN
|
||||||
|
|
||||||
|
AND WATCH THESE MESSAGES
|
||||||
|
GO BY...
|
||||||
|
|
||||||
|
...AND WONDER JUST HOW LONG
|
||||||
|
WE WILL DRAG THIS OUT...
|
||||||
|
|
||||||
|
AND BELIEVE ME, WE CAN DRAG
|
||||||
|
IT OUT FOR QUITE A WHILE.
|
||||||
|
|
||||||
|
SHOULD BE OVER SOON...
|
||||||
|
|
||||||
|
ANY MOMENT NOW...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SEE YA
|
||||||
|
|
Loading…
Reference in a new issue