gzdoom/wadsrc/static/zscript/ui/intermission.zs

61 lines
1.5 KiB
Text

class IntermissionController native ui
{
// This is mostly a black box to the native intermission code.
// May be scriptified later, but right now we do not need it.
native void Start();
native bool Responder(InputEvent ev);
native bool Ticker();
native void Drawer();
native bool NextPage();
}
// Wrapper to play the native intermissions within a screen job.
class IntermissionScreenJob : ScreenJob
{
IntermissionController controller;
ScreenJob Init(IntermissionController ctrl, bool allowwipe)
{
Super.Init();
if (allowwipe && wipetype != 0) flags = wipetype << ScreenJob.transition_shift;
controller = ctrl;
return self;
}
override void Start() { controller.Start(); }
override bool OnEvent(InputEvent evt) { return controller.Responder(evt); }
override void OnTick() { if (!controller.Ticker()) jobstate = finished; }
override void Draw(double smoothratio) { controller.Drawer(); }
override void OnDestroy()
{
if (controller)
controller.Destroy();
Super.OnDestroy();
}
}
class DoomCutscenes ui
{
//---------------------------------------------------------------------------
//
//
//
//---------------------------------------------------------------------------
static void BuildMapTransition(ScreenJobRunner runner, IntermissionController inter, StatusScreen status)
{
if (status)
{
runner.Append(status);
}
if (inter)
{
runner.Append(new("IntermissionScreenJob").Init(inter, status != null));
}
}
}