- switched intro movie playing over to the new system

Not tested yet.
This commit is contained in:
Christoph Oelckers 2021-04-26 22:56:37 +02:00
parent af8d06994a
commit 1166b00af2
11 changed files with 69 additions and 120 deletions

View file

@ -193,8 +193,6 @@ void AddGenericVideo(DObject* runner, const FString& fn, int soundid, int fps)
void CutsceneDef::Create(DObject* runner) void CutsceneDef::Create(DObject* runner)
{ {
if (function.CompareNoCase("none") != 0)
{
if (function.IsNotEmpty()) if (function.IsNotEmpty())
{ {
CallCreateFunction(function, runner); CallCreateFunction(function, runner);
@ -203,7 +201,6 @@ void CutsceneDef::Create(DObject* runner)
{ {
AddGenericVideo(runner, video, sound, framespersec); AddGenericVideo(runner, video, sound, framespersec);
} }
}
} }
//============================================================================= //=============================================================================
@ -212,12 +209,17 @@ void CutsceneDef::Create(DObject* runner)
// //
//============================================================================= //=============================================================================
void StartCutscene(CutsceneDef& cs, int flags, CompletionFunc completion_) bool StartCutscene(CutsceneDef& cs, int flags, CompletionFunc completion_)
{ {
if (cs.function.CompareNoCase("none") != 0)
{
completion = completion_; completion = completion_;
runner = CreateRunner(); runner = CreateRunner();
cs.Create(runner); cs.Create(runner);
gameaction = (flags & SJ_BLOCKUI) ? ga_intro : ga_intermission; gameaction = (flags & SJ_BLOCKUI) ? ga_intro : ga_intermission;
return true;
}
return false;
} }
@ -291,3 +293,48 @@ void ScreenJobDraw()
} }
} }
} }
void PlayLogos(gameaction_t complete_ga, gameaction_t def_ga, bool stopmusic)
{
Mus_Stop();
FX_StopAllSounds(); // JBF 20031228
if (userConfig.nologo)
{
gameaction = def_ga;
}
else
{
if (!StartCutscene(globalCutscenes.Intro, SJ_BLOCKUI, [=](bool) { gameaction = complete_ga; })) gameaction = def_ga;
}
}
/*
Duke:
if (!userConfig.nologo) fi.ShowLogo([](bool) { gameaction = ga_mainmenunostopsound; });
else gameaction = ga_mainmenunostopsound;
Blood:
if (!userConfig.nologo && gGameOptions.nGameType == 0) playlogos();
else
{
gameaction = ga_mainmenu;
}
RunScreenJob(jobs, [](bool) {
Mus_Stop();
gameaction = ga_mainmenu;
}, SJ_BLOCKUI);
Exhumed:
if (!userConfig.nologo) DoTitle([](bool) { gameaction = ga_mainmenu; });
else gameaction = ga_mainmenu;
SW:
if (!userConfig.nologo) Logo([](bool)
{
gameaction = ga_mainmenunostopsound;
});
else gameaction = ga_mainmenu;
*/

View file

@ -4,6 +4,7 @@
#include "v_2ddrawer.h" #include "v_2ddrawer.h"
#include "d_eventbase.h" #include "d_eventbase.h"
#include "s_soundinternal.h" #include "s_soundinternal.h"
#include "gamestate.h"
using CompletionFunc = std::function<void(bool)>; using CompletionFunc = std::function<void(bool)>;
struct JobDesc; struct JobDesc;
@ -195,3 +196,5 @@ void DeleteScreenJob();
bool ScreenJobResponder(event_t* ev); bool ScreenJobResponder(event_t* ev);
bool ScreenJobTick(); bool ScreenJobTick();
void ScreenJobDraw(); void ScreenJobDraw();
void PlayLogos(gameaction_t complete_ga, gameaction_t def_ga, bool stopmusic);

View file

@ -528,11 +528,7 @@ void GameInterface::Startup()
} }
else else
{ {
if (!userConfig.nologo && gGameOptions.nGameType == 0) playlogos(); PlayLogos(ga_mainmenu, ga_mainmenu, true);
else
{
gameaction = ga_mainmenu;
}
} }
} }

View file

@ -145,39 +145,6 @@ static void BigText(double x, double y, const char* text, int align = -1, double
DrawText(twod, BigFont, CR_UNTRANSLATED, x, y - 12, text, DTA_FullscreenScale, FSMode_Fit320x200, DTA_Alpha, alpha, TAG_DONE); DrawText(twod, BigFont, CR_UNTRANSLATED, x, y - 12, text, DTA_FullscreenScale, FSMode_Fit320x200, DTA_Alpha, alpha, TAG_DONE);
} }
//---------------------------------------------------------------------------
//
//
//
//---------------------------------------------------------------------------
void Logo_d(const CompletionFunc &completion)
{
#if 0
Mus_Stop();
FX_StopAllSounds(); // JBF 20031228
static const AnimSound logosound[] =
{
{ 1, FLY_BY+1 },
{ 19, PIPEBOMB_EXPLODE+1 },
{ -1, -1 }
};
static const int logoframetimes[] = { 9, 9, 9 };
TArray<DScreenJob*> jobs;
int job = 0;
if (!userConfig.nologo)
{
if (!isShareware()) jobs.Push(PlayVideo("logo.anm", logosound, logoframetimes));
if (!isNam()) jobs.Push(Create<DDRealmsScreen>());
}
jobs.Push(Create<DTitleScreen>());
RunScreenJob(jobs, completion, SJ_BLOCKUI);
#endif
}
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// //
// //

View file

@ -139,59 +139,6 @@ static void BigText(double x, double y, const char* text, int align, double alph
} }
//---------------------------------------------------------------------------
//
//
//
//---------------------------------------------------------------------------
void Logo_r(const CompletionFunc& completion)
{
#if 0
Mus_Stop();
FX_StopAllSounds(); // JBF 20031228
static const AnimSound introsound[] =
{
{ 1, 29+1 },
{ -1, -1 }
};
static const AnimSound rednecksound[] =
{
{ 1, 478+1 },
{ -1, -1 }
};
static const AnimSound xatrixsound[] =
{
{ 1, 479+1 },
{ -1, -1 }
};
static const int framespeed[] = { 9, 9, 9 }; // same for all 3 anims
TArray<DScreenJob*> jobs;
if (userConfig.nologo)
{
completion(false);
return;
}
else if (!isRRRA())
{
jobs.Push(PlayVideo("rr_intro.anm", introsound, framespeed));
jobs.Push(PlayVideo("redneck.anm", rednecksound, framespeed));
jobs.Push(PlayVideo("xatlogo.anm", xatrixsound, framespeed));
}
else
{
jobs.Push(PlayVideo("redint.mve"));
}
RunScreenJob(jobs, completion, SJ_BLOCKUI);
#endif
}
#if 0 #if 0
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// //

View file

@ -105,8 +105,6 @@ void think_r();
void animatesprites_d(int x, int y, int a, int smoothratio); void animatesprites_d(int x, int y, int a, int smoothratio);
void animatesprites_r(int x, int y, int a, int smoothratio); void animatesprites_r(int x, int y, int a, int smoothratio);
void Logo_d(const CompletionFunc&);
void Logo_r(const CompletionFunc&);
void InitFonts_d(); void InitFonts_d();
void InitFonts_r(); void InitFonts_r();
void PrintPaused_d(); void PrintPaused_d();
@ -120,7 +118,6 @@ void SetDispatcher()
if (!isRR()) if (!isRR())
{ {
fi = { fi = {
Logo_d,
InitFonts_d, InitFonts_d,
PrintPaused_d, PrintPaused_d,
@ -167,7 +164,6 @@ void SetDispatcher()
else else
{ {
fi = { fi = {
Logo_r,
InitFonts_r, InitFonts_r,
PrintPaused_r, PrintPaused_r,

View file

@ -71,7 +71,6 @@ struct GameInterface : public ::GameInterface
struct Dispatcher struct Dispatcher
{ {
// global stuff // global stuff
void (*ShowLogo)(const CompletionFunc& completion);
void (*InitFonts)(); void (*InitFonts)();
void (*PrintPaused)(); void (*PrintPaused)();

View file

@ -133,8 +133,7 @@ void GameInterface::Startup()
} }
else else
{ {
if (!userConfig.nologo) fi.ShowLogo([](bool) { gameaction = ga_mainmenunostopsound; }); PlayLogos(ga_mainmenunostopsound, ga_mainmenunostopsound, false);
else gameaction = ga_mainmenunostopsound;
} }
} }

View file

@ -167,8 +167,7 @@ void GameInterface::Startup()
} }
else else
{ {
if (!userConfig.nologo) DoTitle([](bool) { gameaction = ga_mainmenu; }); PlayLogos(ga_mainmenu, ga_mainmenu, false);
else gameaction = ga_mainmenu;
} }
} }

View file

@ -650,11 +650,7 @@ void GameInterface::Startup()
} }
else else
{ {
if (!userConfig.nologo) Logo([](bool) PlayLogos(ga_mainmenunostopsound, ga_mainmenu, false);
{
gameaction = ga_mainmenunostopsound;
});
else gameaction = ga_mainmenu;
} }
} }

View file

@ -47,7 +47,7 @@ class ScreenJob : Object
int DrawFrame(double smoothratio) int DrawFrame(double smoothratio)
{ {
if (jobstate != running) smoothratio = 1; // this is necessary because the ticker won't be incremented anymore to avoid having a negative time span. if (jobstate != running) smoothratio = 1; // this is necessary to avoid having a negative time span because the ticker won't be incremented anymore.
Draw(smoothratio); Draw(smoothratio);
if (jobstate == skipped) return -1; if (jobstate == skipped) return -1;
if (jobstate == finished) return 0; if (jobstate == finished) return 0;