Merge branch 'titlecards' into 'master'
Titlecards See merge request STJr/SRB2Internal!492
This commit is contained in:
commit
8adc5bd876
12
src/d_main.c
12
src/d_main.c
|
@ -180,6 +180,9 @@ void D_ProcessEvents(void)
|
||||||
if (M_ScreenshotResponder(ev))
|
if (M_ScreenshotResponder(ev))
|
||||||
continue; // ate the event
|
continue; // ate the event
|
||||||
|
|
||||||
|
if (WipeStageTitle)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (gameaction == ga_nothing && gamestate == GS_TITLESCREEN)
|
if (gameaction == ga_nothing && gamestate == GS_TITLESCREEN)
|
||||||
{
|
{
|
||||||
if (cht_Responder(ev))
|
if (cht_Responder(ev))
|
||||||
|
@ -435,6 +438,15 @@ static void D_Display(void)
|
||||||
if (rendermode != render_none)
|
if (rendermode != render_none)
|
||||||
{
|
{
|
||||||
F_WipeEndScreen();
|
F_WipeEndScreen();
|
||||||
|
// Funny.
|
||||||
|
if (WipeStageTitle && st_overlay)
|
||||||
|
{
|
||||||
|
lt_ticker--;
|
||||||
|
lt_lasttic = lt_ticker;
|
||||||
|
ST_preLevelTitleCardDrawer(0, false);
|
||||||
|
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, levelfadecol);
|
||||||
|
F_WipeStartScreen();
|
||||||
|
}
|
||||||
F_RunWipe(wipetypepost, gamestate != GS_TIMEATTACK && gamestate != GS_TITLESCREEN);
|
F_RunWipe(wipetypepost, gamestate != GS_TIMEATTACK && gamestate != GS_TITLESCREEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1575,6 +1575,20 @@ static void readlevelheader(MYFILE *f, INT32 num)
|
||||||
else
|
else
|
||||||
mapheaderinfo[num-1]->levelflags &= ~LF_MIXNIGHTSCOUNTDOWN;
|
mapheaderinfo[num-1]->levelflags &= ~LF_MIXNIGHTSCOUNTDOWN;
|
||||||
}
|
}
|
||||||
|
else if (fastcmp(word, "WARNINGTITLE"))
|
||||||
|
{
|
||||||
|
if (i || word2[0] == 'T' || word2[0] == 'Y')
|
||||||
|
mapheaderinfo[num-1]->levelflags |= LF_WARNINGTITLE;
|
||||||
|
else
|
||||||
|
mapheaderinfo[num-1]->levelflags &= ~LF_WARNINGTITLE;
|
||||||
|
}
|
||||||
|
else if (fastcmp(word, "NOTITLECARD"))
|
||||||
|
{
|
||||||
|
if (i || word2[0] == 'T' || word2[0] == 'Y')
|
||||||
|
mapheaderinfo[num-1]->levelflags |= LF_NOTITLECARD;
|
||||||
|
else
|
||||||
|
mapheaderinfo[num-1]->levelflags &= ~LF_NOTITLECARD;
|
||||||
|
}
|
||||||
|
|
||||||
// Individual triggers for menu flags
|
// Individual triggers for menu flags
|
||||||
else if (fastcmp(word, "HIDDEN"))
|
else if (fastcmp(word, "HIDDEN"))
|
||||||
|
@ -9017,6 +9031,8 @@ struct {
|
||||||
{"LF_NOZONE",LF_NOZONE},
|
{"LF_NOZONE",LF_NOZONE},
|
||||||
{"LF_SAVEGAME",LF_SAVEGAME},
|
{"LF_SAVEGAME",LF_SAVEGAME},
|
||||||
{"LF_MIXNIGHTSCOUNTDOWN",LF_MIXNIGHTSCOUNTDOWN},
|
{"LF_MIXNIGHTSCOUNTDOWN",LF_MIXNIGHTSCOUNTDOWN},
|
||||||
|
{"LF_NOTITLECARD",LF_NOTITLECARD},
|
||||||
|
{"LF_WARNINGTITLE",LF_WARNINGTITLE},
|
||||||
// And map flags
|
// And map flags
|
||||||
{"LF2_HIDEINMENU",LF2_HIDEINMENU},
|
{"LF2_HIDEINMENU",LF2_HIDEINMENU},
|
||||||
{"LF2_HIDEINSTATS",LF2_HIDEINSTATS},
|
{"LF2_HIDEINSTATS",LF2_HIDEINSTATS},
|
||||||
|
|
|
@ -349,6 +349,8 @@ typedef struct
|
||||||
#define LF_NOZONE 16 ///< Don't include "ZONE" on level title
|
#define LF_NOZONE 16 ///< Don't include "ZONE" on level title
|
||||||
#define LF_SAVEGAME 32 ///< Save the game upon loading this level
|
#define LF_SAVEGAME 32 ///< Save the game upon loading this level
|
||||||
#define LF_MIXNIGHTSCOUNTDOWN 64 ///< Play sfx_timeup instead of music change for NiGHTS countdown
|
#define LF_MIXNIGHTSCOUNTDOWN 64 ///< Play sfx_timeup instead of music change for NiGHTS countdown
|
||||||
|
#define LF_WARNINGTITLE 128 ///< WARNING! WARNING! WARNING! WARNING!
|
||||||
|
#define LF_NOTITLECARD 256 ///< Don't start the title card
|
||||||
|
|
||||||
#define LF2_HIDEINMENU 1 ///< Hide in the multiplayer menu
|
#define LF2_HIDEINMENU 1 ///< Hide in the multiplayer menu
|
||||||
#define LF2_HIDEINSTATS 2 ///< Hide in the statistics screen
|
#define LF2_HIDEINSTATS 2 ///< Hide in the statistics screen
|
||||||
|
|
|
@ -141,8 +141,13 @@ void F_MenuPresTicker(boolean run);
|
||||||
#define FORCEWIPEOFF -2
|
#define FORCEWIPEOFF -2
|
||||||
|
|
||||||
extern boolean WipeInAction;
|
extern boolean WipeInAction;
|
||||||
|
extern boolean WipeStageTitle;
|
||||||
extern INT32 lastwipetic;
|
extern INT32 lastwipetic;
|
||||||
|
|
||||||
|
// Don't know where else to place this constant
|
||||||
|
// But this file seems appropriate
|
||||||
|
#define PRELEVELTIME 24 // frames in tics
|
||||||
|
|
||||||
void F_WipeStartScreen(void);
|
void F_WipeStartScreen(void);
|
||||||
void F_WipeEndScreen(void);
|
void F_WipeEndScreen(void);
|
||||||
void F_RunWipe(UINT8 wipetype, boolean drawMenu);
|
void F_RunWipe(UINT8 wipetype, boolean drawMenu);
|
||||||
|
|
18
src/f_wipe.c
18
src/f_wipe.c
|
@ -18,6 +18,7 @@
|
||||||
|
|
||||||
#include "r_draw.h" // transtable
|
#include "r_draw.h" // transtable
|
||||||
#include "p_pspr.h" // tr_transxxx
|
#include "p_pspr.h" // tr_transxxx
|
||||||
|
#include "st_stuff.h"
|
||||||
#include "w_wad.h"
|
#include "w_wad.h"
|
||||||
#include "z_zone.h"
|
#include "z_zone.h"
|
||||||
|
|
||||||
|
@ -31,6 +32,10 @@
|
||||||
#include "hardware/hw_main.h"
|
#include "hardware/hw_main.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_BLUA
|
||||||
|
#include "lua_hud.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#if NUMSCREENS < 5
|
#if NUMSCREENS < 5
|
||||||
#define NOWIPE // do not enable wipe image post processing for ARM, SH and MIPS CPUs
|
#define NOWIPE // do not enable wipe image post processing for ARM, SH and MIPS CPUs
|
||||||
#endif
|
#endif
|
||||||
|
@ -82,6 +87,7 @@ UINT8 wipedefs[NUMWIPEDEFS] = {
|
||||||
//--------------------------------------------------------------------------
|
//--------------------------------------------------------------------------
|
||||||
|
|
||||||
boolean WipeInAction = false;
|
boolean WipeInAction = false;
|
||||||
|
boolean WipeStageTitle = false;
|
||||||
INT32 lastwipetic = 0;
|
INT32 lastwipetic = 0;
|
||||||
|
|
||||||
#ifndef NOWIPE
|
#ifndef NOWIPE
|
||||||
|
@ -366,6 +372,16 @@ void F_RunWipe(UINT8 wipetype, boolean drawMenu)
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
F_DoWipe(fmask);
|
F_DoWipe(fmask);
|
||||||
|
|
||||||
|
// draw level title
|
||||||
|
if ((WipeStageTitle && st_overlay)
|
||||||
|
&& !(mapheaderinfo[gamemap-1]->levelflags & LF_NOTITLECARD)
|
||||||
|
&& *mapheaderinfo[gamemap-1]->lvlttl != '\0')
|
||||||
|
{
|
||||||
|
ST_runTitleCard();
|
||||||
|
ST_drawWipeTitleCard();
|
||||||
|
}
|
||||||
|
|
||||||
I_OsPolling();
|
I_OsPolling();
|
||||||
I_UpdateNoBlit();
|
I_UpdateNoBlit();
|
||||||
|
|
||||||
|
@ -377,7 +393,9 @@ void F_RunWipe(UINT8 wipetype, boolean drawMenu)
|
||||||
if (moviemode)
|
if (moviemode)
|
||||||
M_SaveFrame();
|
M_SaveFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
WipeInAction = false;
|
WipeInAction = false;
|
||||||
|
WipeStageTitle = false;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
58
src/g_game.c
58
src/g_game.c
|
@ -47,6 +47,10 @@
|
||||||
#include "m_cond.h" // condition sets
|
#include "m_cond.h" // condition sets
|
||||||
#include "md5.h" // demo checksums
|
#include "md5.h" // demo checksums
|
||||||
|
|
||||||
|
#ifdef HAVE_BLUA
|
||||||
|
#include "lua_hud.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
gameaction_t gameaction;
|
gameaction_t gameaction;
|
||||||
gamestate_t gamestate = GS_NULL;
|
gamestate_t gamestate = GS_NULL;
|
||||||
UINT8 ultimatemode = false;
|
UINT8 ultimatemode = false;
|
||||||
|
@ -1703,6 +1707,58 @@ void G_DoLoadLevel(boolean resetplayer)
|
||||||
CON_ClearHUD();
|
CON_ClearHUD();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Start the title card.
|
||||||
|
//
|
||||||
|
void G_StartTitleCard(void)
|
||||||
|
{
|
||||||
|
// The title card has been disabled for this map.
|
||||||
|
// Oh well.
|
||||||
|
if (mapheaderinfo[gamemap-1]->levelflags & LF_NOTITLECARD)
|
||||||
|
{
|
||||||
|
WipeStageTitle = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// clear the hud
|
||||||
|
CON_ClearHUD();
|
||||||
|
|
||||||
|
// prepare status bar
|
||||||
|
ST_startTitleCard();
|
||||||
|
|
||||||
|
// start the title card
|
||||||
|
WipeStageTitle = (!titlemapinaction);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Run the title card before fading in to the level.
|
||||||
|
//
|
||||||
|
void G_PreLevelTitleCard(tic_t ticker, boolean update)
|
||||||
|
{
|
||||||
|
tic_t starttime = I_GetTime();
|
||||||
|
tic_t endtime = starttime + (PRELEVELTIME*NEWTICRATERATIO);
|
||||||
|
tic_t nowtime = starttime;
|
||||||
|
tic_t lasttime = starttime;
|
||||||
|
while (nowtime < endtime)
|
||||||
|
{
|
||||||
|
// draw loop
|
||||||
|
while (!((nowtime = I_GetTime()) - lasttime))
|
||||||
|
I_Sleep();
|
||||||
|
lasttime = nowtime;
|
||||||
|
|
||||||
|
// Run some bullshit whatever
|
||||||
|
D_ProcessEvents();
|
||||||
|
|
||||||
|
ST_runTitleCard();
|
||||||
|
ST_preLevelTitleCardDrawer(ticker, update);
|
||||||
|
|
||||||
|
if (moviemode)
|
||||||
|
M_SaveFrame();
|
||||||
|
if (takescreenshot) // Only take screenshots after drawing.
|
||||||
|
M_DoScreenShot();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
INT32 pausedelay = 0;
|
INT32 pausedelay = 0;
|
||||||
boolean pausebreakkey = false;
|
boolean pausebreakkey = false;
|
||||||
static INT32 camtoggledelay, camtoggledelay2 = 0;
|
static INT32 camtoggledelay, camtoggledelay2 = 0;
|
||||||
|
@ -1992,7 +2048,7 @@ void G_Ticker(boolean run)
|
||||||
if (titledemo)
|
if (titledemo)
|
||||||
F_TitleDemoTicker();
|
F_TitleDemoTicker();
|
||||||
P_Ticker(run); // tic the game
|
P_Ticker(run); // tic the game
|
||||||
ST_Ticker();
|
ST_Ticker(run);
|
||||||
F_TextPromptTicker();
|
F_TextPromptTicker();
|
||||||
AM_Ticker();
|
AM_Ticker();
|
||||||
HU_Ticker();
|
HU_Ticker();
|
||||||
|
|
|
@ -140,7 +140,8 @@ void G_SpawnPlayer(INT32 playernum, boolean starpost);
|
||||||
void G_DeferedInitNew(boolean pultmode, const char *mapname, INT32 pickedchar,
|
void G_DeferedInitNew(boolean pultmode, const char *mapname, INT32 pickedchar,
|
||||||
boolean SSSG, boolean FLS);
|
boolean SSSG, boolean FLS);
|
||||||
void G_DoLoadLevel(boolean resetplayer);
|
void G_DoLoadLevel(boolean resetplayer);
|
||||||
|
void G_StartTitleCard(void);
|
||||||
|
void G_PreLevelTitleCard(tic_t ticker, boolean update);
|
||||||
void G_DeferedPlayDemo(const char *demo);
|
void G_DeferedPlayDemo(const char *demo);
|
||||||
|
|
||||||
// Can be called by the startup code or M_Responder, calls P_SetupLevel.
|
// Can be called by the startup code or M_Responder, calls P_SetupLevel.
|
||||||
|
|
|
@ -380,9 +380,9 @@ void HWR_DrawStretchyFixedPatch(GLPatch_t *gpatch, fixed_t x, fixed_t y, fixed_t
|
||||||
{
|
{
|
||||||
FSurfaceInfo Surf;
|
FSurfaceInfo Surf;
|
||||||
Surf.FlatColor.s.red = Surf.FlatColor.s.green = Surf.FlatColor.s.blue = 0xff;
|
Surf.FlatColor.s.red = Surf.FlatColor.s.green = Surf.FlatColor.s.blue = 0xff;
|
||||||
if (alphalevel == 13) Surf.FlatColor.s.alpha = softwaretranstogl_lo[cv_translucenthud.value];
|
if (alphalevel == 13) Surf.FlatColor.s.alpha = softwaretranstogl_lo[st_translucency];
|
||||||
else if (alphalevel == 14) Surf.FlatColor.s.alpha = softwaretranstogl[cv_translucenthud.value];
|
else if (alphalevel == 14) Surf.FlatColor.s.alpha = softwaretranstogl[st_translucency];
|
||||||
else if (alphalevel == 15) Surf.FlatColor.s.alpha = softwaretranstogl_hi[cv_translucenthud.value];
|
else if (alphalevel == 15) Surf.FlatColor.s.alpha = softwaretranstogl_hi[st_translucency];
|
||||||
else Surf.FlatColor.s.alpha = softwaretranstogl[10-alphalevel];
|
else Surf.FlatColor.s.alpha = softwaretranstogl[10-alphalevel];
|
||||||
flags |= PF_Modulated;
|
flags |= PF_Modulated;
|
||||||
HWD.pfnDrawPolygon(&Surf, v, 4, flags);
|
HWD.pfnDrawPolygon(&Surf, v, 4, flags);
|
||||||
|
@ -538,9 +538,9 @@ void HWR_DrawCroppedPatch(GLPatch_t *gpatch, fixed_t x, fixed_t y, fixed_t pscal
|
||||||
{
|
{
|
||||||
FSurfaceInfo Surf;
|
FSurfaceInfo Surf;
|
||||||
Surf.FlatColor.s.red = Surf.FlatColor.s.green = Surf.FlatColor.s.blue = 0xff;
|
Surf.FlatColor.s.red = Surf.FlatColor.s.green = Surf.FlatColor.s.blue = 0xff;
|
||||||
if (alphalevel == 13) Surf.FlatColor.s.alpha = softwaretranstogl_lo[cv_translucenthud.value];
|
if (alphalevel == 13) Surf.FlatColor.s.alpha = softwaretranstogl_lo[st_translucency];
|
||||||
else if (alphalevel == 14) Surf.FlatColor.s.alpha = softwaretranstogl[cv_translucenthud.value];
|
else if (alphalevel == 14) Surf.FlatColor.s.alpha = softwaretranstogl[st_translucency];
|
||||||
else if (alphalevel == 15) Surf.FlatColor.s.alpha = softwaretranstogl_hi[cv_translucenthud.value];
|
else if (alphalevel == 15) Surf.FlatColor.s.alpha = softwaretranstogl_hi[st_translucency];
|
||||||
else Surf.FlatColor.s.alpha = softwaretranstogl[10-alphalevel];
|
else Surf.FlatColor.s.alpha = softwaretranstogl[10-alphalevel];
|
||||||
flags |= PF_Modulated;
|
flags |= PF_Modulated;
|
||||||
HWD.pfnDrawPolygon(&Surf, v, 4, flags);
|
HWD.pfnDrawPolygon(&Surf, v, 4, flags);
|
||||||
|
|
|
@ -43,3 +43,4 @@ boolean LUA_HudEnabled(enum hud option);
|
||||||
void LUAh_GameHUD(player_t *stplyr);
|
void LUAh_GameHUD(player_t *stplyr);
|
||||||
void LUAh_ScoresHUD(void);
|
void LUAh_ScoresHUD(void);
|
||||||
void LUAh_TitleHUD(void);
|
void LUAh_TitleHUD(void);
|
||||||
|
void LUAh_TitleCardHUD(player_t *stplyr);
|
||||||
|
|
|
@ -92,12 +92,14 @@ static const char *const patch_opt[] = {
|
||||||
enum hudhook {
|
enum hudhook {
|
||||||
hudhook_game = 0,
|
hudhook_game = 0,
|
||||||
hudhook_scores,
|
hudhook_scores,
|
||||||
hudhook_title
|
hudhook_title,
|
||||||
|
hudhook_titlecard
|
||||||
};
|
};
|
||||||
static const char *const hudhook_opt[] = {
|
static const char *const hudhook_opt[] = {
|
||||||
"game",
|
"game",
|
||||||
"scores",
|
"scores",
|
||||||
"title",
|
"title",
|
||||||
|
"titlecard",
|
||||||
NULL};
|
NULL};
|
||||||
|
|
||||||
// alignment types for v.drawString
|
// alignment types for v.drawString
|
||||||
|
@ -910,9 +912,17 @@ static int libd_RandomChance(lua_State *L)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 30/10/18 Lat': Get cv_translucenthud's value for HUD rendering as a normal V_xxTRANS int
|
// 30/10/18 Lat': Get st_translucency's value for HUD rendering as a normal V_xxTRANS int
|
||||||
// Could as well be thrown in global vars for ease of access but I guess it makes sense for it to be a HUD fn
|
// Could as well be thrown in global vars for ease of access but I guess it makes sense for it to be a HUD fn
|
||||||
static int libd_getlocaltransflag(lua_State *L)
|
static int libd_getlocaltransflag(lua_State *L)
|
||||||
|
{
|
||||||
|
HUDONLY
|
||||||
|
lua_pushinteger(L, (10-st_translucency)*V_10TRANS);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get cv_translucenthud's value for HUD rendering as a normal V_xxTRANS int
|
||||||
|
static int libd_getusertransflag(lua_State *L)
|
||||||
{
|
{
|
||||||
HUDONLY
|
HUDONLY
|
||||||
lua_pushinteger(L, (10-cv_translucenthud.value)*V_10TRANS); // A bit weird that it's called "translucenthud" yet 10 is fully opaque :V
|
lua_pushinteger(L, (10-cv_translucenthud.value)*V_10TRANS); // A bit weird that it's called "translucenthud" yet 10 is fully opaque :V
|
||||||
|
@ -954,6 +964,7 @@ static luaL_Reg lib_draw[] = {
|
||||||
{"dupy", libd_dupy},
|
{"dupy", libd_dupy},
|
||||||
{"renderer", libd_renderer},
|
{"renderer", libd_renderer},
|
||||||
{"localTransFlag", libd_getlocaltransflag},
|
{"localTransFlag", libd_getlocaltransflag},
|
||||||
|
{"userTransFlag", libd_getusertransflag},
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1043,6 +1054,9 @@ int LUA_HudLib(lua_State *L)
|
||||||
|
|
||||||
lua_newtable(L);
|
lua_newtable(L);
|
||||||
lua_rawseti(L, -2, 4); // HUD[3] = title rendering functions array
|
lua_rawseti(L, -2, 4); // HUD[3] = title rendering functions array
|
||||||
|
|
||||||
|
lua_newtable(L);
|
||||||
|
lua_rawseti(L, -2, 5); // HUD[4] = title card rendering functions array
|
||||||
lua_setfield(L, LUA_REGISTRYINDEX, "HUD");
|
lua_setfield(L, LUA_REGISTRYINDEX, "HUD");
|
||||||
|
|
||||||
luaL_newmetatable(L, META_HUDINFO);
|
luaL_newmetatable(L, META_HUDINFO);
|
||||||
|
@ -1180,4 +1194,38 @@ void LUAh_TitleHUD(void)
|
||||||
hud_running = false;
|
hud_running = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LUAh_TitleCardHUD(player_t *stplayr)
|
||||||
|
{
|
||||||
|
if (!gL || !(hudAvailable & (1<<hudhook_titlecard)))
|
||||||
|
return;
|
||||||
|
|
||||||
|
hud_running = true;
|
||||||
|
lua_pop(gL, -1);
|
||||||
|
|
||||||
|
lua_getfield(gL, LUA_REGISTRYINDEX, "HUD");
|
||||||
|
I_Assert(lua_istable(gL, -1));
|
||||||
|
lua_rawgeti(gL, -1, 5); // HUD[5] = rendering funcs
|
||||||
|
I_Assert(lua_istable(gL, -1));
|
||||||
|
|
||||||
|
lua_rawgeti(gL, -2, 1); // HUD[1] = lib_draw
|
||||||
|
I_Assert(lua_istable(gL, -1));
|
||||||
|
lua_remove(gL, -3); // pop HUD
|
||||||
|
|
||||||
|
LUA_PushUserdata(gL, stplayr, META_PLAYER);
|
||||||
|
lua_pushinteger(gL, lt_ticker);
|
||||||
|
lua_pushinteger(gL, (lt_endtime + TICRATE));
|
||||||
|
lua_pushnil(gL);
|
||||||
|
|
||||||
|
while (lua_next(gL, -6) != 0) {
|
||||||
|
lua_pushvalue(gL, -6); // graphics library (HUD[1])
|
||||||
|
lua_pushvalue(gL, -6); // stplayr
|
||||||
|
lua_pushvalue(gL, -6); // lt_ticker
|
||||||
|
lua_pushvalue(gL, -6); // lt_endtime
|
||||||
|
LUA_Call(gL, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
lua_pop(gL, -1);
|
||||||
|
hud_running = false;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -3226,44 +3226,22 @@ boolean P_SetupLevel(boolean skipprecip)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stage title!
|
// No render mode, stop here.
|
||||||
if (rendermode != render_none
|
if (rendermode == render_none)
|
||||||
&& (!titlemapinaction)
|
return true;
|
||||||
&& ranspecialwipe != 2
|
|
||||||
&& *mapheaderinfo[gamemap-1]->lvlttl != '\0'
|
|
||||||
#ifdef HAVE_BLUA
|
|
||||||
&& LUA_HudEnabled(hud_stagetitle)
|
|
||||||
#endif
|
|
||||||
)
|
|
||||||
{
|
|
||||||
tic_t starttime = I_GetTime();
|
|
||||||
tic_t endtime = starttime + (10*NEWTICRATERATIO);
|
|
||||||
tic_t nowtime = starttime;
|
|
||||||
tic_t lasttime = starttime;
|
|
||||||
while (nowtime < endtime)
|
|
||||||
{
|
|
||||||
// draw loop
|
|
||||||
while (!((nowtime = I_GetTime()) - lasttime))
|
|
||||||
I_Sleep();
|
|
||||||
lasttime = nowtime;
|
|
||||||
|
|
||||||
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, levelfadecol);
|
// Title card!
|
||||||
stplyr = &players[consoleplayer];
|
G_StartTitleCard();
|
||||||
ST_drawLevelTitle(nowtime - starttime);
|
|
||||||
if (splitscreen)
|
|
||||||
{
|
|
||||||
stplyr = &players[secondarydisplayplayer];
|
|
||||||
ST_drawLevelTitle(nowtime - starttime);
|
|
||||||
}
|
|
||||||
|
|
||||||
I_OsPolling();
|
// Can the title card actually run, though?
|
||||||
I_UpdateNoBlit();
|
if (!WipeStageTitle)
|
||||||
I_FinishUpdate(); // page flip or blit buffer
|
return true;
|
||||||
|
if (ranspecialwipe == 2)
|
||||||
|
return true;
|
||||||
|
|
||||||
if (moviemode) // make sure we save frames for the white hold too
|
// If so...
|
||||||
M_SaveFrame();
|
if ((!(mapheaderinfo[gamemap-1]->levelflags & LF_NOTITLECARD)) && (*mapheaderinfo[gamemap-1]->lvlttl != '\0'))
|
||||||
}
|
G_PreLevelTitleCard(lt_ticker, true);
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
269
src/st_stuff.c
269
src/st_stuff.c
|
@ -23,6 +23,7 @@
|
||||||
#include "v_video.h"
|
#include "v_video.h"
|
||||||
#include "z_zone.h"
|
#include "z_zone.h"
|
||||||
#include "hu_stuff.h"
|
#include "hu_stuff.h"
|
||||||
|
#include "console.h"
|
||||||
#include "s_sound.h"
|
#include "s_sound.h"
|
||||||
#include "i_system.h"
|
#include "i_system.h"
|
||||||
#include "m_menu.h"
|
#include "m_menu.h"
|
||||||
|
@ -186,14 +187,18 @@ boolean ST_SameTeam(player_t *a, player_t *b)
|
||||||
|
|
||||||
static boolean st_stopped = true;
|
static boolean st_stopped = true;
|
||||||
|
|
||||||
void ST_Ticker(void)
|
void ST_Ticker(boolean run)
|
||||||
{
|
{
|
||||||
if (st_stopped)
|
if (st_stopped)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (run)
|
||||||
|
ST_runTitleCard();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0 is default, any others are special palettes.
|
// 0 is default, any others are special palettes.
|
||||||
INT32 st_palette = 0;
|
INT32 st_palette = 0;
|
||||||
|
INT32 st_translucency = 0;
|
||||||
|
|
||||||
void ST_doPaletteStuff(void)
|
void ST_doPaletteStuff(void)
|
||||||
{
|
{
|
||||||
|
@ -818,7 +823,7 @@ static void ST_drawLivesArea(void)
|
||||||
face = superprefix[stplyr->skin];
|
face = superprefix[stplyr->skin];
|
||||||
V_DrawSmallMappedPatch(hudinfo[HUD_LIVES].x, hudinfo[HUD_LIVES].y,
|
V_DrawSmallMappedPatch(hudinfo[HUD_LIVES].x, hudinfo[HUD_LIVES].y,
|
||||||
hudinfo[HUD_LIVES].f|V_PERPLAYER|V_HUDTRANS, face, colormap);
|
hudinfo[HUD_LIVES].f|V_PERPLAYER|V_HUDTRANS, face, colormap);
|
||||||
if (cv_translucenthud.value == 10 && stplyr->powers[pw_super] == 1 && stplyr->mo->tracer)
|
if (st_translucency == 10 && stplyr->powers[pw_super] == 1 && stplyr->mo->tracer)
|
||||||
{
|
{
|
||||||
INT32 v_supertrans = (stplyr->mo->tracer->frame & FF_TRANSMASK) >> FF_TRANSSHIFT;
|
INT32 v_supertrans = (stplyr->mo->tracer->frame & FF_TRANSMASK) >> FF_TRANSSHIFT;
|
||||||
if (v_supertrans < 10)
|
if (v_supertrans < 10)
|
||||||
|
@ -1160,16 +1165,142 @@ static void ST_drawInput(void)
|
||||||
V_DrawThinString(x, y, hudinfo[HUD_LIVES].f|((leveltime & 4) ? V_YELLOWMAP : V_REDMAP), "BAD DEMO!!");
|
V_DrawThinString(x, y, hudinfo[HUD_LIVES].f|((leveltime & 4) ? V_YELLOWMAP : V_REDMAP), "BAD DEMO!!");
|
||||||
}
|
}
|
||||||
|
|
||||||
void ST_drawLevelTitle(tic_t titletime)
|
static patch_t *lt_patches[3];
|
||||||
|
static INT32 lt_scroll = 0;
|
||||||
|
static INT32 lt_mom = 0;
|
||||||
|
static INT32 lt_zigzag = 0;
|
||||||
|
|
||||||
|
tic_t lt_ticker = 0, lt_lasttic = 0;
|
||||||
|
tic_t lt_exitticker = 0, lt_endtime = 0;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Load the graphics for the title card.
|
||||||
|
//
|
||||||
|
static void ST_cacheLevelTitle(void)
|
||||||
|
{
|
||||||
|
if (!(mapheaderinfo[gamemap-1]->levelflags & LF_WARNINGTITLE))
|
||||||
|
{
|
||||||
|
lt_patches[0] = (patch_t *)W_CachePatchName("LTACTBLU", PU_HUDGFX);
|
||||||
|
lt_patches[1] = (patch_t *)W_CachePatchName("LTZIGZAG", PU_HUDGFX);
|
||||||
|
lt_patches[2] = (patch_t *)W_CachePatchName("LTZZTEXT", PU_HUDGFX);
|
||||||
|
}
|
||||||
|
else // boss map
|
||||||
|
{
|
||||||
|
lt_patches[0] = (patch_t *)W_CachePatchName("LTACTRED", PU_HUDGFX);
|
||||||
|
lt_patches[1] = (patch_t *)W_CachePatchName("LTZIGRED", PU_HUDGFX);
|
||||||
|
lt_patches[2] = (patch_t *)W_CachePatchName("LTZZWARN", PU_HUDGFX);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Start the title card.
|
||||||
|
//
|
||||||
|
void ST_startTitleCard(void)
|
||||||
|
{
|
||||||
|
// cache every HUD patch used
|
||||||
|
ST_cacheLevelTitle();
|
||||||
|
|
||||||
|
// initialize HUD variables
|
||||||
|
lt_ticker = lt_exitticker = lt_lasttic = 0;
|
||||||
|
lt_endtime = 2*TICRATE;
|
||||||
|
lt_scroll = BASEVIDWIDTH * FRACUNIT;
|
||||||
|
lt_zigzag = -((lt_patches[1])->width * FRACUNIT);
|
||||||
|
lt_mom = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// What happens before drawing the title card.
|
||||||
|
// Which is just setting the HUD translucency.
|
||||||
|
//
|
||||||
|
void ST_preDrawTitleCard(void)
|
||||||
|
{
|
||||||
|
if (lt_ticker >= (lt_endtime + TICRATE))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!lt_exitticker)
|
||||||
|
st_translucency = 0;
|
||||||
|
else
|
||||||
|
st_translucency = max(0, min((INT32)lt_exitticker-4, cv_translucenthud.value));
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Run the title card.
|
||||||
|
// Called from ST_Ticker.
|
||||||
|
//
|
||||||
|
void ST_runTitleCard(void)
|
||||||
|
{
|
||||||
|
if (lt_ticker >= (lt_endtime + TICRATE))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!(paused || P_AutoPause()))
|
||||||
|
{
|
||||||
|
// tick
|
||||||
|
lt_ticker++;
|
||||||
|
if (lt_ticker >= lt_endtime)
|
||||||
|
lt_exitticker++;
|
||||||
|
|
||||||
|
// scroll to screen (level title)
|
||||||
|
if (!lt_exitticker)
|
||||||
|
{
|
||||||
|
if (abs(lt_scroll) > FRACUNIT)
|
||||||
|
lt_scroll -= (lt_scroll>>2);
|
||||||
|
else
|
||||||
|
lt_scroll = 0;
|
||||||
|
}
|
||||||
|
// scroll away from screen (level title)
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lt_mom -= FRACUNIT*6;
|
||||||
|
lt_scroll += lt_mom;
|
||||||
|
}
|
||||||
|
|
||||||
|
// scroll to screen (zigzag)
|
||||||
|
if (!lt_exitticker)
|
||||||
|
{
|
||||||
|
if (abs(lt_zigzag) > FRACUNIT)
|
||||||
|
lt_zigzag -= (lt_zigzag>>2);
|
||||||
|
else
|
||||||
|
lt_zigzag = 0;
|
||||||
|
}
|
||||||
|
// scroll away from screen (zigzag)
|
||||||
|
else
|
||||||
|
lt_zigzag += lt_mom;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Draw the title card itself.
|
||||||
|
//
|
||||||
|
void ST_drawTitleCard(void)
|
||||||
{
|
{
|
||||||
char *lvlttl = mapheaderinfo[gamemap-1]->lvlttl;
|
char *lvlttl = mapheaderinfo[gamemap-1]->lvlttl;
|
||||||
char *subttl = mapheaderinfo[gamemap-1]->subttl;
|
char *subttl = mapheaderinfo[gamemap-1]->subttl;
|
||||||
INT32 actnum = mapheaderinfo[gamemap-1]->actnum;
|
INT32 actnum = mapheaderinfo[gamemap-1]->actnum;
|
||||||
INT32 lvlttly, zoney, lvlttlxpos, ttlnumxpos, zonexpos;
|
INT32 lvlttlxpos, ttlnumxpos, zonexpos;
|
||||||
INT32 subttlxpos = BASEVIDWIDTH/2;
|
INT32 subttlxpos = BASEVIDWIDTH/2;
|
||||||
|
INT32 ttlscroll = FixedInt(lt_scroll);
|
||||||
|
INT32 zzticker;
|
||||||
|
patch_t *actpat, *zigzag, *zztext;
|
||||||
|
|
||||||
if (!(titletime > 2 && titletime-3 < 110))
|
#ifdef HAVE_BLUA
|
||||||
|
if (!LUA_HudEnabled(hud_stagetitle))
|
||||||
|
goto luahook;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (lt_ticker >= (lt_endtime + TICRATE))
|
||||||
|
#ifdef HAVE_BLUA
|
||||||
|
goto luahook;
|
||||||
|
#else
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if ((lt_ticker-lt_lasttic) > 1)
|
||||||
|
lt_ticker = lt_lasttic+1;
|
||||||
|
|
||||||
|
ST_cacheLevelTitle();
|
||||||
|
actpat = lt_patches[0];
|
||||||
|
zigzag = lt_patches[1];
|
||||||
|
zztext = lt_patches[2];
|
||||||
|
|
||||||
lvlttlxpos = ((BASEVIDWIDTH/2) - (V_LevelNameWidth(lvlttl)/2));
|
lvlttlxpos = ((BASEVIDWIDTH/2) - (V_LevelNameWidth(lvlttl)/2));
|
||||||
|
|
||||||
|
@ -1183,66 +1314,65 @@ void ST_drawLevelTitle(tic_t titletime)
|
||||||
if (lvlttlxpos < 0)
|
if (lvlttlxpos < 0)
|
||||||
lvlttlxpos = 0;
|
lvlttlxpos = 0;
|
||||||
|
|
||||||
#if 0 // toaster's experiment. srb2&toast.exe one day, maybe? Requires stuff below to be converted to fixed point.
|
if (!splitscreen || (splitscreen && stplyr == &players[displayplayer]))
|
||||||
#define MIDTTLY 79
|
|
||||||
#define MIDZONEY 105
|
|
||||||
#define MIDDIFF 4
|
|
||||||
|
|
||||||
if (titletime < 10)
|
|
||||||
{
|
{
|
||||||
fixed_t z = ((titletime - 3)<<FRACBITS)/7;
|
zzticker = lt_ticker;
|
||||||
INT32 ttlh = V_LevelNameHeight(lvlttl);
|
V_DrawScaledPatch(FixedInt(lt_zigzag), (-zzticker) % zigzag->height, V_SNAPTOTOP|V_SNAPTOLEFT, zigzag);
|
||||||
zoney = (200<<FRACBITS) - ((200 - (MIDZONEY + MIDDIFF))*z);
|
V_DrawScaledPatch(FixedInt(lt_zigzag), (zigzag->height-zzticker) % zigzag->height, V_SNAPTOTOP|V_SNAPTOLEFT, zigzag);
|
||||||
lvlttly = ((MIDTTLY + ttlh - MIDDIFF)*z) - (ttlh<<FRACBITS);
|
V_DrawScaledPatch(FixedInt(lt_zigzag), (-zigzag->height+zzticker) % zztext->height, V_SNAPTOTOP|V_SNAPTOLEFT, zztext);
|
||||||
|
V_DrawScaledPatch(FixedInt(lt_zigzag), (zzticker) % zztext->height, V_SNAPTOTOP|V_SNAPTOLEFT, zztext);
|
||||||
}
|
}
|
||||||
else if (titletime < 105)
|
|
||||||
{
|
|
||||||
fixed_t z = (((titletime - 10)*MIDDIFF)<<(FRACBITS+1))/95;
|
|
||||||
zoney = ((MIDZONEY + MIDDIFF)<<FRACBITS) - z;
|
|
||||||
lvlttly = ((MIDTTLY - MIDDIFF)<<FRACBITS) + z;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fixed_t z = ((titletime - 105)<<FRACBITS)/7;
|
|
||||||
INT32 zoneh = V_LevelNameHeight(M_GetText("Zone"));
|
|
||||||
zoney = (MIDZONEY + zoneh - MIDDIFF)*(FRACUNIT - z) - (zoneh<<FRACBITS);
|
|
||||||
lvlttly = ((MIDTTLY + MIDDIFF)<<FRACBITS) + ((200 - (MIDTTLY + MIDDIFF))*z);
|
|
||||||
}
|
|
||||||
|
|
||||||
#undef MIDTTLY
|
|
||||||
#undef MIDZONEY
|
|
||||||
#undef MIDDIFF
|
|
||||||
#else
|
|
||||||
// There's no consistent algorithm that can accurately define the old positions
|
|
||||||
// so I just ended up resorting to a single switch statement to define them
|
|
||||||
switch (titletime-3)
|
|
||||||
{
|
|
||||||
case 0: zoney = 200; lvlttly = 0; break;
|
|
||||||
case 1: zoney = 188; lvlttly = 12; break;
|
|
||||||
case 2: zoney = 176; lvlttly = 24; break;
|
|
||||||
case 3: zoney = 164; lvlttly = 36; break;
|
|
||||||
case 4: zoney = 152; lvlttly = 48; break;
|
|
||||||
case 5: zoney = 140; lvlttly = 60; break;
|
|
||||||
case 6: zoney = 128; lvlttly = 72; break;
|
|
||||||
case 105: zoney = 80; lvlttly = 104; break;
|
|
||||||
case 106: zoney = 56; lvlttly = 128; break;
|
|
||||||
case 107: zoney = 32; lvlttly = 152; break;
|
|
||||||
case 108: zoney = 8; lvlttly = 176; break;
|
|
||||||
case 109: zoney = 0; lvlttly = 200; break;
|
|
||||||
default: zoney = 104; lvlttly = 80; break;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (actnum)
|
if (actnum)
|
||||||
V_DrawLevelActNum(ttlnumxpos, zoney, V_PERPLAYER, actnum);
|
{
|
||||||
|
if (!splitscreen)
|
||||||
V_DrawLevelTitle(lvlttlxpos, lvlttly, V_PERPLAYER, lvlttl);
|
V_DrawScaledPatch(ttlnumxpos + ttlscroll, 104 - ttlscroll, 0, actpat);
|
||||||
|
V_DrawLevelActNum(ttlnumxpos + ttlscroll, 104, V_PERPLAYER, actnum);
|
||||||
|
}
|
||||||
|
|
||||||
|
V_DrawLevelTitle(lvlttlxpos - ttlscroll, 80, V_PERPLAYER, lvlttl);
|
||||||
if (!(mapheaderinfo[gamemap-1]->levelflags & LF_NOZONE))
|
if (!(mapheaderinfo[gamemap-1]->levelflags & LF_NOZONE))
|
||||||
V_DrawLevelTitle(zonexpos, zoney, V_PERPLAYER, M_GetText("Zone"));
|
V_DrawLevelTitle(zonexpos + ttlscroll, 104, V_PERPLAYER, M_GetText("Zone"));
|
||||||
|
V_DrawCenteredString(subttlxpos - ttlnumxpos, 128, V_PERPLAYER|V_ALLOWLOWERCASE, subttl);
|
||||||
|
|
||||||
if (lvlttly+48 < 200)
|
lt_lasttic = lt_ticker;
|
||||||
V_DrawCenteredString(subttlxpos, lvlttly+48, V_PERPLAYER|V_ALLOWLOWERCASE, subttl);
|
|
||||||
|
#ifdef HAVE_BLUA
|
||||||
|
luahook:
|
||||||
|
LUAh_TitleCardHUD(stplyr);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Drawer for G_PreLevelTitleCard.
|
||||||
|
//
|
||||||
|
void ST_preLevelTitleCardDrawer(tic_t ticker, boolean update)
|
||||||
|
{
|
||||||
|
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, levelfadecol);
|
||||||
|
if (ticker < PRELEVELTIME-1)
|
||||||
|
ST_drawWipeTitleCard();
|
||||||
|
|
||||||
|
I_OsPolling();
|
||||||
|
I_UpdateNoBlit();
|
||||||
|
if (update)
|
||||||
|
I_FinishUpdate(); // page flip or blit buffer
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Draw the title card while on a wipe.
|
||||||
|
// Also used in G_PreLevelTitleCard.
|
||||||
|
//
|
||||||
|
void ST_drawWipeTitleCard(void)
|
||||||
|
{
|
||||||
|
stplyr = &players[consoleplayer];
|
||||||
|
ST_preDrawTitleCard();
|
||||||
|
ST_drawTitleCard();
|
||||||
|
if (splitscreen)
|
||||||
|
{
|
||||||
|
stplyr = &players[secondarydisplayplayer];
|
||||||
|
ST_preDrawTitleCard();
|
||||||
|
ST_drawTitleCard();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ST_drawPowerupHUD(void)
|
static void ST_drawPowerupHUD(void)
|
||||||
|
@ -2394,11 +2524,24 @@ static void ST_doItemFinderIconsAndSound(void)
|
||||||
S_StartSound(NULL, sfx_emfind);
|
S_StartSound(NULL, sfx_emfind);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
// Draw the status bar overlay, customisable: the user chooses which
|
// Draw the status bar overlay, customisable: the user chooses which
|
||||||
// kind of information to overlay
|
// kind of information to overlay
|
||||||
//
|
//
|
||||||
static void ST_overlayDrawer(void)
|
static void ST_overlayDrawer(void)
|
||||||
{
|
{
|
||||||
|
// Decide whether to draw the stage title or not
|
||||||
|
boolean stagetitle = false;
|
||||||
|
|
||||||
|
// Check for a valid level title
|
||||||
|
// If the HUD is enabled
|
||||||
|
// And, if Lua is running, if the HUD library has the stage title enabled
|
||||||
|
if (!(mapheaderinfo[gamemap-1]->levelflags & LF_NOTITLECARD) && *mapheaderinfo[gamemap-1]->lvlttl != '\0' && !(hu_showscores && (netgame || multiplayer)))
|
||||||
|
{
|
||||||
|
stagetitle = true;
|
||||||
|
ST_preDrawTitleCard();
|
||||||
|
}
|
||||||
|
|
||||||
// hu_showscores = auto hide score/time/rings when tab rankings are shown
|
// hu_showscores = auto hide score/time/rings when tab rankings are shown
|
||||||
if (!(hu_showscores && (netgame || multiplayer)))
|
if (!(hu_showscores && (netgame || multiplayer)))
|
||||||
{
|
{
|
||||||
|
@ -2550,12 +2693,8 @@ static void ST_overlayDrawer(void)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// draw level title Tails
|
// draw level title Tails
|
||||||
if (*mapheaderinfo[gamemap-1]->lvlttl != '\0' && !(hu_showscores && (netgame || multiplayer))
|
if (stagetitle && (!WipeInAction) && (!WipeStageTitle))
|
||||||
#ifdef HAVE_BLUA
|
ST_drawTitleCard();
|
||||||
&& LUA_HudEnabled(hud_stagetitle)
|
|
||||||
#endif
|
|
||||||
)
|
|
||||||
ST_drawLevelTitle(timeinmap+70);
|
|
||||||
|
|
||||||
if (!hu_showscores && (netgame || multiplayer)
|
if (!hu_showscores && (netgame || multiplayer)
|
||||||
#ifdef HAVE_BLUA
|
#ifdef HAVE_BLUA
|
||||||
|
@ -2631,6 +2770,8 @@ void ST_Drawer(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
st_translucency = cv_translucenthud.value;
|
||||||
|
|
||||||
if (st_overlay)
|
if (st_overlay)
|
||||||
{
|
{
|
||||||
// No deadview!
|
// No deadview!
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
// Called by main loop.
|
// Called by main loop.
|
||||||
void ST_Ticker(void);
|
void ST_Ticker(boolean run);
|
||||||
|
|
||||||
// Called by main loop.
|
// Called by main loop.
|
||||||
void ST_Drawer(void);
|
void ST_Drawer(void);
|
||||||
|
@ -47,8 +47,16 @@ void ST_ReloadSkinFaceGraphics(void);
|
||||||
|
|
||||||
void ST_doPaletteStuff(void);
|
void ST_doPaletteStuff(void);
|
||||||
|
|
||||||
// level title draw
|
// title card
|
||||||
void ST_drawLevelTitle(tic_t titletime);
|
void ST_startTitleCard(void);
|
||||||
|
void ST_runTitleCard(void);
|
||||||
|
void ST_drawTitleCard(void);
|
||||||
|
void ST_preDrawTitleCard(void);
|
||||||
|
void ST_preLevelTitleCardDrawer(tic_t ticker, boolean update);
|
||||||
|
void ST_drawWipeTitleCard(void);
|
||||||
|
|
||||||
|
extern tic_t lt_ticker, lt_lasttic;
|
||||||
|
extern tic_t lt_exitticker, lt_endtime;
|
||||||
|
|
||||||
// return if player a is in the same team as player b
|
// return if player a is in the same team as player b
|
||||||
boolean ST_SameTeam(player_t *a, player_t *b);
|
boolean ST_SameTeam(player_t *a, player_t *b);
|
||||||
|
@ -59,6 +67,7 @@ boolean ST_SameTeam(player_t *a, player_t *b);
|
||||||
|
|
||||||
extern boolean st_overlay; // sb overlay on or off when fullscreen
|
extern boolean st_overlay; // sb overlay on or off when fullscreen
|
||||||
extern INT32 st_palette; // 0 is default, any others are special palettes.
|
extern INT32 st_palette; // 0 is default, any others are special palettes.
|
||||||
|
extern INT32 st_translucency;
|
||||||
|
|
||||||
extern lumpnum_t st_borderpatchnum;
|
extern lumpnum_t st_borderpatchnum;
|
||||||
// patches, also used in intermission
|
// patches, also used in intermission
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include "p_local.h" // stplyr
|
#include "p_local.h" // stplyr
|
||||||
#include "g_game.h" // players
|
#include "g_game.h" // players
|
||||||
#include "v_video.h"
|
#include "v_video.h"
|
||||||
|
#include "st_stuff.h"
|
||||||
#include "hu_stuff.h"
|
#include "hu_stuff.h"
|
||||||
#include "r_draw.h"
|
#include "r_draw.h"
|
||||||
#include "console.h"
|
#include "console.h"
|
||||||
|
@ -574,11 +575,11 @@ void V_DrawStretchyFixedPatch(fixed_t x, fixed_t y, fixed_t pscale, fixed_t vsca
|
||||||
if ((alphalevel = ((scrn & V_ALPHAMASK) >> V_ALPHASHIFT)))
|
if ((alphalevel = ((scrn & V_ALPHAMASK) >> V_ALPHASHIFT)))
|
||||||
{
|
{
|
||||||
if (alphalevel == 13)
|
if (alphalevel == 13)
|
||||||
alphalevel = hudminusalpha[cv_translucenthud.value];
|
alphalevel = hudminusalpha[st_translucency];
|
||||||
else if (alphalevel == 14)
|
else if (alphalevel == 14)
|
||||||
alphalevel = 10 - cv_translucenthud.value;
|
alphalevel = 10 - st_translucency;
|
||||||
else if (alphalevel == 15)
|
else if (alphalevel == 15)
|
||||||
alphalevel = hudplusalpha[cv_translucenthud.value];
|
alphalevel = hudplusalpha[st_translucency];
|
||||||
|
|
||||||
if (alphalevel >= 10)
|
if (alphalevel >= 10)
|
||||||
return; // invis
|
return; // invis
|
||||||
|
@ -874,11 +875,11 @@ void V_DrawCroppedPatch(fixed_t x, fixed_t y, fixed_t pscale, INT32 scrn, patch_
|
||||||
if ((alphalevel = ((scrn & V_ALPHAMASK) >> V_ALPHASHIFT)))
|
if ((alphalevel = ((scrn & V_ALPHAMASK) >> V_ALPHASHIFT)))
|
||||||
{
|
{
|
||||||
if (alphalevel == 13)
|
if (alphalevel == 13)
|
||||||
alphalevel = hudminusalpha[cv_translucenthud.value];
|
alphalevel = hudminusalpha[st_translucency];
|
||||||
else if (alphalevel == 14)
|
else if (alphalevel == 14)
|
||||||
alphalevel = 10 - cv_translucenthud.value;
|
alphalevel = 10 - st_translucency;
|
||||||
else if (alphalevel == 15)
|
else if (alphalevel == 15)
|
||||||
alphalevel = hudplusalpha[cv_translucenthud.value];
|
alphalevel = hudplusalpha[st_translucency];
|
||||||
|
|
||||||
if (alphalevel >= 10)
|
if (alphalevel >= 10)
|
||||||
return; // invis
|
return; // invis
|
||||||
|
@ -1393,11 +1394,11 @@ void V_DrawFillConsoleMap(INT32 x, INT32 y, INT32 w, INT32 h, INT32 c)
|
||||||
if ((alphalevel = ((c & V_ALPHAMASK) >> V_ALPHASHIFT)))
|
if ((alphalevel = ((c & V_ALPHAMASK) >> V_ALPHASHIFT)))
|
||||||
{
|
{
|
||||||
if (alphalevel == 13)
|
if (alphalevel == 13)
|
||||||
alphalevel = hudminusalpha[cv_translucenthud.value];
|
alphalevel = hudminusalpha[st_translucency];
|
||||||
else if (alphalevel == 14)
|
else if (alphalevel == 14)
|
||||||
alphalevel = 10 - cv_translucenthud.value;
|
alphalevel = 10 - st_translucency;
|
||||||
else if (alphalevel == 15)
|
else if (alphalevel == 15)
|
||||||
alphalevel = hudplusalpha[cv_translucenthud.value];
|
alphalevel = hudplusalpha[st_translucency];
|
||||||
|
|
||||||
if (alphalevel >= 10)
|
if (alphalevel >= 10)
|
||||||
return; // invis
|
return; // invis
|
||||||
|
@ -2964,7 +2965,7 @@ INT32 V_LevelNameHeight(const char *string)
|
||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
|
|
||||||
// For ST_drawLevelTitle
|
// For ST_drawTitleCard
|
||||||
// Returns the width of the act num patch
|
// Returns the width of the act num patch
|
||||||
INT32 V_LevelActNumWidth(INT32 num)
|
INT32 V_LevelActNumWidth(INT32 num)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue