void F_StartIntermission(FName seq, BYTE state) { FIntermissionDescriptor **pdesc = IntermissionDescriptors.CheckKey(seq); if (pdesc != NULL) { F_StartIntermission(*pdesc, false, state); } }
void F_StartFinale (const char *music, int musicorder, int cdtrack, unsigned int cdid, const char *flat, const char *text, INTBOOL textInLump, INTBOOL finalePic, INTBOOL lookupText, bool ending, FName endsequence) { // Hexen's chess ending doesn't have a text screen, even if the cluster has a message defined. if (text != NULL && *text != 0 && endsequence != NAME_Inter_Chess) { FIntermissionActionTextscreen *textscreen = new FIntermissionActionTextscreen; if (textInLump) { int lump = Wads.CheckNumForFullName(text, true); if (lump > 0) { textscreen->mText = Wads.ReadLump(lump).GetString(); } else { textscreen->mText.Format("Unknown text lump '%s'", text); } } else if (!lookupText) { textscreen->mText = text; } else { textscreen->mText << '$' << text; } textscreen->mTextDelay = 10; if (flat != NULL && *flat != 0) { textscreen->mBackground = flat; } else { // force a black screen if no texture is set. textscreen->mBackground = "-"; } textscreen->mFlatfill = !finalePic; if (music != NULL && *music != 0) { textscreen->mMusic = music; textscreen->mMusicOrder = musicorder; } if (cdtrack > 0) { textscreen->mCdTrack = cdtrack; textscreen->mCdId = cdid; } FIntermissionDescriptor *desc = new FIntermissionDescriptor; desc->mActions.Push(textscreen); if (ending) { desc->mLink = endsequence; FIntermissionActionWiper *wiper = new FIntermissionActionWiper; desc->mActions.Push(wiper); } F_StartIntermission(desc, true, ending? FSTATE_EndingGame : FSTATE_ChangingLevel); } else if (ending) { FIntermissionDescriptor **pdesc = IntermissionDescriptors.CheckKey(endsequence); if (pdesc != NULL) { F_StartIntermission(*pdesc, false, ending? FSTATE_EndingGame : FSTATE_ChangingLevel); } } }