2022-04-10 06:59:10 +00:00
2022-04-11 11:12:37 +00:00
class IntermissionController native ui
2022-04-10 06:59:10 +00:00
{
// This is mostly a black box to the native intermission code.
// May be scriptified later, but right now we do not need it.
2022-04-11 11:12:37 +00:00
/*
static native IntermissionController Create(String music, int musicorder, String flat, String text, int textInLump, int finalePic, int lookupText, bool ending, Name endsequence);
2022-04-10 06:59:10 +00:00
static native IntermissionController CreateNamed(Name nm);
2022-04-11 11:12:37 +00:00
*/
2022-04-10 06:59:10 +00:00
native bool Responder(InputEvent ev);
native bool Ticker();
native void Drawer();
native bool NextPage();
}
// Wrappers to play the old intermissions and status screens within a screen job.
class IntermissionScreenJob : ScreenJob
{
IntermissionController controller;
2022-04-11 11:12:37 +00:00
2022-04-22 10:43:08 +00:00
ScreenJob Init(IntermissionController ctrl)
{
controller = ctrl;
return self;
}
2022-04-10 06:59:10 +00:00
override bool OnEvent(InputEvent evt) { return controller.Responder(evt); }
2022-04-11 11:12:37 +00:00
override void OnTick() { if (!controller.Ticker()) jobstate = finished; }
override void Draw(double smoothratio) { controller.Drawer(); }
2022-04-10 06:59:10 +00:00
override void OnDestroy()
{
controller.Destroy();
Super.OnDestroy();
}
}
2022-04-22 11:39:44 +00:00
class StatusScreenJob : ScreenJob
2022-04-10 06:59:10 +00:00
{
StatusScreen controller;
2022-04-25 15:32:23 +00:00
ScreenJob Init(StatusScreen scr, bool allowwipe)
2022-04-10 06:59:10 +00:00
{
2022-04-25 15:32:23 +00:00
if (allowwipe && wipetype != 0) flags |= wipetype << ScreenJob.transition_shift;
2022-04-10 06:59:10 +00:00
controller = scr;
2022-04-22 10:43:08 +00:00
return self;
2022-04-10 06:59:10 +00:00
}
2022-04-11 11:12:37 +00:00
override void OnTick() { controller.Ticker(); if (controller.CurState == StatusScreen.LeavingIntermission) jobstate = finished; }
override void Draw(double smoothratio) { controller.Drawer(); }
2022-04-22 11:39:44 +00:00
override bool OnEvent(InputEvent evt) { return controller.Responder(evt); }
2022-04-10 06:59:10 +00:00
override void OnDestroy()
{
controller.Destroy();
Super.OnDestroy();
}
2022-04-11 11:12:37 +00:00
}
2022-04-22 10:43:08 +00:00
class DoomCutscenes ui
2022-04-11 11:12:37 +00:00
{
//---------------------------------------------------------------------------
//
//
//
//---------------------------------------------------------------------------
static void BuildMapTransition(ScreenJobRunner runner, IntermissionController inter, StatusScreen status)
{
if (status)
{
runner.Append(new("StatusScreenJob").Init(status));
}
if (inter)
{
2022-04-25 15:32:23 +00:00
runner.Append(new("IntermissionScreenJob").Init(inter, status != nullptr));
2022-04-11 11:12:37 +00:00
}
}
}