mirror of
				https://github.com/KartKrewDev/RingRacers.git
				synced 2025-10-30 08:01:28 +00:00 
			
		
		
		
	- Credits demos will erase grandprixinfo - Call F_InitGameEvaluation (new function) at the beginning of the credits to cache the needed data from grandprixinfo - Fixes the evaluation screen not showing up for GP credits
		
			
				
	
	
		
			208 lines
		
	
	
	
		
			5.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			208 lines
		
	
	
	
		
			5.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
// DR. ROBOTNIK'S RING RACERS
 | 
						|
//-----------------------------------------------------------------------------
 | 
						|
// Copyright (C) 2024 by Kart Krew.
 | 
						|
// Copyright (C) 2020 by Sonic Team Junior.
 | 
						|
// Copyright (C) 2000 by DooM Legacy Team.
 | 
						|
// Copyright (C) 1996 by id Software, Inc.
 | 
						|
//
 | 
						|
// This program is free software distributed under the
 | 
						|
// terms of the GNU General Public License, version 2.
 | 
						|
// See the 'LICENSE' file for more details.
 | 
						|
//-----------------------------------------------------------------------------
 | 
						|
/// \file  f_finale.h
 | 
						|
/// \brief Title screen, intro, game evaluation, and credits.
 | 
						|
///        Also includes protos for screen wipe functions.
 | 
						|
 | 
						|
#ifndef __F_FINALE__
 | 
						|
#define __F_FINALE__
 | 
						|
 | 
						|
#include "doomtype.h"
 | 
						|
#include "d_event.h"
 | 
						|
#include "p_mobj.h"
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
//
 | 
						|
// FINALE
 | 
						|
//
 | 
						|
 | 
						|
// Called by main loop.
 | 
						|
boolean F_IntroResponder(event_t *ev);
 | 
						|
boolean F_CutsceneResponder(event_t *ev);
 | 
						|
 | 
						|
// Called by main loop.
 | 
						|
void F_IntroTicker(void);
 | 
						|
void F_TitleScreenTicker(boolean run);
 | 
						|
void F_CutsceneTicker(void);
 | 
						|
void F_AttractDemoTicker(void);
 | 
						|
void F_TextPromptTicker(void);
 | 
						|
 | 
						|
// Called by main loop.
 | 
						|
void F_IntroDrawer(void);
 | 
						|
void F_TitleScreenDrawer(void);
 | 
						|
void F_SkyScroll(INT32 scrollxspeed, INT32 scrollyspeed, const char *patchname);
 | 
						|
 | 
						|
void F_StartWaitingPlayers(void);
 | 
						|
void F_WaitingPlayersTicker(void);
 | 
						|
void F_WaitingPlayersDrawer(void);
 | 
						|
 | 
						|
void F_GameEvaluationDrawer(void);
 | 
						|
void F_InitGameEvaluation(void); // depends on grandprixinfo!
 | 
						|
void F_StartGameEvaluation(void);
 | 
						|
void F_GameEvaluationTicker(void);
 | 
						|
 | 
						|
void F_VersionDrawer(void);
 | 
						|
 | 
						|
void F_StartCustomCutscene(INT32 cutscenenum, boolean precutscene, boolean resetplayer);
 | 
						|
void F_CutsceneDrawer(void);
 | 
						|
void F_EndCutScene(void);
 | 
						|
 | 
						|
void F_StartTextPrompt(INT32 promptnum, INT32 pagenum, mobj_t *mo, UINT16 postexectag, boolean blockcontrols, boolean freezerealtime);
 | 
						|
void F_GetPromptPageByNamedTag(const char *tag, INT32 *promptnum, INT32 *pagenum);
 | 
						|
void F_TextPromptDrawer(void);
 | 
						|
void F_EndTextPrompt(boolean forceexec, boolean noexec);
 | 
						|
boolean F_GetPromptHideHudAll(void);
 | 
						|
boolean F_GetPromptHideHud(fixed_t y);
 | 
						|
 | 
						|
INT32 F_AttractDemoExitFade(void);
 | 
						|
 | 
						|
void F_StartGameEnd(void);
 | 
						|
void F_StartIntro(void);
 | 
						|
void F_StartTitleScreen(void);
 | 
						|
void F_StartEnding(void);
 | 
						|
 | 
						|
void F_PlayTitleScreenMusic(void);
 | 
						|
 | 
						|
extern INT32 finalecount;
 | 
						|
extern INT32 titlescrollxspeed;
 | 
						|
extern INT32 titlescrollyspeed;
 | 
						|
extern UINT32 titlemusicstart;
 | 
						|
 | 
						|
typedef enum
 | 
						|
{
 | 
						|
	TTMODE_NONE = 0,
 | 
						|
	TTMODE_RINGRACERS,
 | 
						|
	TTMODE_USER
 | 
						|
} ttmode_enum;
 | 
						|
 | 
						|
#define TTMAX_ALACROIX 30 // max frames for SONIC typeface, plus one for NULL terminating entry
 | 
						|
#define TTMAX_USER 100
 | 
						|
 | 
						|
extern ttmode_enum ttmode;
 | 
						|
extern UINT8 ttscale;
 | 
						|
// ttmode user vars
 | 
						|
extern char ttname[9];
 | 
						|
extern INT16 ttx;
 | 
						|
extern INT16 tty;
 | 
						|
extern INT16 ttloop;
 | 
						|
extern UINT16 tttics;
 | 
						|
extern boolean ttavailable[6];
 | 
						|
 | 
						|
// Current menu parameters
 | 
						|
extern char curbgname[9];
 | 
						|
extern SINT8 curfadevalue;
 | 
						|
extern INT32 curbgcolor;
 | 
						|
extern INT32 curbgxspeed;
 | 
						|
extern INT32 curbgyspeed;
 | 
						|
extern boolean curbghide;
 | 
						|
extern boolean hidetitlemap;
 | 
						|
 | 
						|
extern boolean curhidepics;
 | 
						|
extern ttmode_enum curttmode;
 | 
						|
extern UINT8 curttscale;
 | 
						|
// ttmode user vars
 | 
						|
extern char curttname[9];
 | 
						|
extern INT16 curttx;
 | 
						|
extern INT16 curtty;
 | 
						|
extern INT16 curttloop;
 | 
						|
extern UINT16 curtttics;
 | 
						|
 | 
						|
#define TITLEBACKGROUNDACTIVE (curfadevalue >= 0 || curbgname[0])
 | 
						|
 | 
						|
//
 | 
						|
// WIPE
 | 
						|
//
 | 
						|
 | 
						|
extern boolean WipeInAction;
 | 
						|
extern UINT8 g_wipemode;
 | 
						|
extern UINT8 g_wipetype;
 | 
						|
extern UINT8 g_wipeframe;
 | 
						|
extern boolean g_wipereverse;
 | 
						|
extern boolean g_wipeencorewiggle;
 | 
						|
extern boolean WipeStageTitle;
 | 
						|
 | 
						|
extern INT32 lastwipetic;
 | 
						|
 | 
						|
extern boolean g_attractnowipe;
 | 
						|
 | 
						|
// Don't know where else to place this constant
 | 
						|
// But this file seems appropriate
 | 
						|
#define PRELEVELTIME TICRATE // frames in tics
 | 
						|
 | 
						|
void F_WipeStartScreen(void);
 | 
						|
void F_WipeEndScreen(void);
 | 
						|
void F_RunWipe(UINT8 wipemode, UINT8 wipetype, boolean drawMenu, const char *colormap, boolean reverse, boolean encorewiggle);
 | 
						|
void F_WipeStageTitle(void);
 | 
						|
#define F_WipeColorFill(c) V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, c)
 | 
						|
tic_t F_GetWipeLength(UINT8 wipetype);
 | 
						|
boolean F_WipeExists(UINT8 wipetype);
 | 
						|
/// @brief true if the wipetype is to-black
 | 
						|
boolean F_WipeIsToBlack(UINT8 wipemode);
 | 
						|
/// @brief true if the wipetype is to-white
 | 
						|
boolean F_WipeIsToWhite(UINT8 wipemode);
 | 
						|
/// @brief true if the wipetype is to-invert
 | 
						|
boolean F_WipeIsToInvert(UINT8 wipemode);
 | 
						|
/// @brief true if the wipetype is modulated from the previous frame
 | 
						|
boolean F_WipeIsCrossfade(UINT8 wipemode);
 | 
						|
 | 
						|
enum
 | 
						|
{
 | 
						|
	wipe_credits_intermediate, // makes a good 0 I guess.
 | 
						|
 | 
						|
	// Gamestate wipes
 | 
						|
	wipe_level_toblack,
 | 
						|
	wipe_intermission_toblack,
 | 
						|
	wipe_voting_toblack,
 | 
						|
	wipe_continuing_toblack,
 | 
						|
	wipe_titlescreen_toblack,
 | 
						|
	wipe_menu_toblack,
 | 
						|
	wipe_credits_toblack,
 | 
						|
	wipe_evaluation_toblack,
 | 
						|
	wipe_ceremony_toblack,
 | 
						|
	wipe_intro_toblack,
 | 
						|
	wipe_cutscene_toblack,
 | 
						|
 | 
						|
	// Specialized wipes
 | 
						|
	wipe_encore_toinvert,
 | 
						|
	wipe_encore_towhite,
 | 
						|
 | 
						|
	// "From black" wipes
 | 
						|
	wipe_level_final,
 | 
						|
	wipe_intermission_final,
 | 
						|
	wipe_voting_final,
 | 
						|
	wipe_continuing_final,
 | 
						|
	wipe_titlescreen_final,
 | 
						|
	wipe_menu_final,
 | 
						|
	wipe_credits_final,
 | 
						|
	wipe_evaluation_final,
 | 
						|
	wipe_ceremony_final,
 | 
						|
	wipe_intro_final,
 | 
						|
	wipe_cutscene_final,
 | 
						|
 | 
						|
	// custom intermissions
 | 
						|
	wipe_specinter_final,
 | 
						|
	wipe_multinter_final,
 | 
						|
 | 
						|
	NUMWIPEDEFS,
 | 
						|
	WIPEFINALSHIFT = (wipe_level_final-wipe_level_toblack)
 | 
						|
};
 | 
						|
 | 
						|
extern UINT8 wipedefs[NUMWIPEDEFS];
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
} // extern "C"
 | 
						|
#endif
 | 
						|
 | 
						|
#endif
 |