- cleanup of viewborder code.

The view border will now only be rendered in one place - inside displayrooms. None of the 2D content still depends on what it is set to.
This commit is contained in:
Christoph Oelckers 2020-07-06 00:15:22 +02:00
parent 021799573e
commit c6b619214f
16 changed files with 160 additions and 361 deletions

View file

@ -275,7 +275,6 @@ void GameInterface::MenuClosed()
cameradist = 65536;
}
updateviewport();
S_PauseSounds(false);
}
}

View file

@ -36,80 +36,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
BEGIN_DUKE_NS
#ifndef ONLY_USERDEFS
// Compile game-side legacy Room over Room code?
#define LEGACY_ROR 1
enum GametypeFlags_t {
GAMETYPE_COOP = 0x00000001,
GAMETYPE_WEAPSTAY = 0x00000002,
GAMETYPE_FRAGBAR = 0x00000004,
GAMETYPE_SCORESHEET = 0x00000008,
GAMETYPE_DMSWITCHES = 0x00000010,
GAMETYPE_COOPSPAWN = 0x00000020,
GAMETYPE_ACCESSCARDSPRITES = 0x00000040,
GAMETYPE_COOPVIEW = 0x00000080,
GAMETYPE_COOPSOUND = 0x00000100,
GAMETYPE_OTHERPLAYERSINMAP = 0x00000200,
GAMETYPE_ITEMRESPAWN = 0x00000400,
GAMETYPE_MARKEROPTION = 0x00000800,
GAMETYPE_PLAYERSFRIENDLY = 0x00001000,
GAMETYPE_FIXEDRESPAWN = 0x00002000,
GAMETYPE_ACCESSATSTART = 0x00004000,
GAMETYPE_PRESERVEINVENTORYDEATH = 0x00008000,
GAMETYPE_TDM = 0x00010000,
GAMETYPE_TDMSPAWN = 0x00020000
};
// logo control
enum LogoFlags_t {
LOGO_ENABLED = 0x00000001,
LOGO_PLAYANIM = 0x00000002,
LOGO_PLAYMUSIC = 0x00000004,
LOGO_3DRSCREEN = 0x00000008,
LOGO_TITLESCREEN = 0x00000010,
LOGO_DUKENUKEM = 0x00000020,
LOGO_THREEDEE = 0x00000040,
LOGO_PLUTOPAKSPRITE = 0x00000080,
LOGO_SHAREWARESCREENS = 0x00000100,
LOGO_TENSCREEN = 0x00000200,
LOGO_STOPANIMSOUNDS = 0x00000400,
LOGO_NOE4CUTSCENE = 0x00000800,
LOGO_NOE1BONUSSCENE = 0x00001000,
LOGO_NOE2BONUSSCENE = 0x00002000,
LOGO_NOE3BONUSSCENE = 0x00004000,
LOGO_NOE4BONUSSCENE = 0x00008000,
LOGO_NOE1ENDSCREEN = 0x00010000,
LOGO_NOE2ENDSCREEN = 0x00020000,
LOGO_NOE3RADLOGO = 0x00040000,
LOGO_NODUKETEAMTEXT = 0x00080000,
LOGO_NODUKETEAMPIC = 0x00100000,
LOGO_STOPMISCSOUNDS = 0x00200000,
LOGO_NOGAMETITLE = 0x00400000,
LOGO_NOTITLEBAR = 0x00800000,
LOGO_HIDEEPISODE = 0x01000000,
LOGO_NOHELP = 0x02000000,
LOGO_NOCREDITS = 0x04000000,
};
enum {
STATUSBAR_NONONE = 0x00000001,
STATUSBAR_NOMINI = 0x00000002,
STATUSBAR_NOFULL = 0x00000004,
STATUSBAR_NOSHRINK = 0x00000008,
STATUSBAR_NOFRAGBAR = 0x00000010,
STATUSBAR_NOOVERLAY = 0x00000020,
STATUSBAR_NOMODERN = 0x00000040,
};
# define CAMERA(Membname) (ud.camera ## Membname)
# define CAMERADIST cameradist
# define CAMERACLOCK cameraclock
#endif
#define MAXSAVEGAMENAMESTRUCT 32
#define MAXSAVEGAMENAME (MAXSAVEGAMENAMESTRUCT-1)
#define MAXPWLOCKOUT 128
@ -129,7 +55,7 @@ typedef struct {
int32_t statusbarmode;
int32_t noexits,automsg;
int32_t althud;
int32_t statusbarflags, statusbarrange;
int32_t statusbarrange;
int32_t entered_name,screen_tilting;
int32_t coop,screen_size,lockout,crosshair;

View file

@ -291,46 +291,6 @@ void drawbackground(void)
DrawTexture(twod, tex, 0, 0, DTA_VirtualWidth, twod->GetWidth(), DTA_VirtualHeight, twod->GetHeight(), DTA_KeepRatio, true, DTA_Color, color, TAG_DONE);
return;
}
auto tex = tileGetTexture(TILE_SCREENBORDER);
if (tex != nullptr && tex->isValid())
{
if (windowxy1.y > 0)
{
twod->AddFlatFill(0, 0, twod->GetWidth(), windowxy1.y, tex, false, 1);
}
if (windowxy2.y + 1 < twod->GetHeight())
{
twod->AddFlatFill(0, windowxy2.y + 1, twod->GetWidth(), twod->GetHeight(), tex, false, 1);
}
if (windowxy1.x > 0)
{
twod->AddFlatFill(0, windowxy1.y, windowxy1.x, windowxy2.y + 1, tex, false, 1);
}
if (windowxy2.x + 1 < twod->GetWidth())
{
twod->AddFlatFill(windowxy2.x + 1, windowxy1.y, twod->GetWidth(), windowxy2.y + 1, tex, false, 1);
}
auto vb = tileGetTexture(TILE_VIEWBORDER);
auto ve = tileGetTexture(TILE_VIEWBORDER + 1);
int x1 = windowxy1.x - 4;
int y1 = windowxy1.y - 4;
int x2 = windowxy2.x + 5;
int y2 = windowxy2.y + 5;
twod->AddFlatFill(x1, y1, x2, y1 + 4, vb, 5);
twod->AddFlatFill(x1, y2 - 4, x2, y2, vb, 6);
twod->AddFlatFill(x1, y1, x1 + 4, y2, vb, 1);
twod->AddFlatFill(x2 - 4, y1, x2, y2, vb, 3);
twod->AddFlatFill(x1, y1, x1 + 4, y1 + 4, ve, 1);
twod->AddFlatFill(x2 - 4, y1, x2, y1 + 4, ve, 3);
twod->AddFlatFill(x1, y2 - 4, x1 + 4, y2, ve, 2);
twod->AddFlatFill(x2 - 4, y2 - 4, x2, y2, ve, 4);
}
else
{
// If we got no frame just clear the screen.
twod->ClearScreen();
}
}
//---------------------------------------------------------------------------
@ -665,57 +625,6 @@ void cameratext(int i)
}
}
//---------------------------------------------------------------------------
//
// calculate size of 3D viewport.
// Fixme: this needs to be adjusted to the new status bar code,
// once the status bar is a persistent queriable object
// (it should also be moved out of the game code then.
//
//---------------------------------------------------------------------------
void updateviewport(void)
{
ud.screen_size = clamp(ud.screen_size, 0, 64);
int ss = std::max(ud.screen_size - 8, 0);
int x1 = scale(ss, xdim, 160);
int x2 = xdim - x1;
int y1 = scale(ss, (200 * 100) - ((tilesiz[TILE_BOTTOMSTATUSBAR].y >> (RR ? 1 : 0)) * ud.statusbarscale), 200 - tilesiz[TILE_BOTTOMSTATUSBAR].y);
int y2 = 200 * 100 - y1;
if (isRR() && ud.screen_size <= 12)
{
x1 = 0;
x2 = xdim;
y1 = 0;
if (ud.statusbarmode)
y2 = 200 * 100;
}
int fbh = 0;
if (ud.screen_size > 0 && ud.coop != 1 && ud.multimode > 1)
{
int j = 0;
for (int i = connecthead; i >= 0; i = connectpoint2[i])
if (i > j) j = i;
if (j >= 1) fbh += 8;
if (j >= 4) fbh += 8;
if (j >= 8) fbh += 8;
if (j >= 12) fbh += 8;
}
y1 += fbh * 100;
if (ud.screen_size >= 8 && ud.statusbarmode == 0)
y2 -= (tilesiz[TILE_BOTTOMSTATUSBAR].y >> (isRR() ? 1 : 0)) * ud.statusbarscale;
y1 = scale(y1, ydim, 200 * 100);
y2 = scale(y2, ydim, 200 * 100);
videoSetViewableArea(x1, y1, x2 - 1, y2 - 1);
}
END_DUKE_NS

View file

@ -44,8 +44,6 @@ static FORCE_INLINE int32_t krand2(void)
TILE_SCRAP6+(r4&15),-8,RR?16:48,RR?16:48,r3&2047,(r2&63)+64,-512-(r1&2047),i,5); \
}
#define GTFLAGS(x) (g_gametypeFlags[ud.coop] & x)
#define TRAVERSE_SPRITE_SECT(l, o, n) (o) = (l); ((o) != -1) && ((n) = nextspritesect[o]); (o) = (n)
#define TRAVERSE_SPRITE_STAT(l, o, n) (o) = (l); ((o) != -1) && ((n) = nextspritestat[o]); (o) = (n)
#define TRAVERSE_CONNECT(i) i = 0; i != -1; i = connectpoint2[i]

View file

@ -33,7 +33,6 @@ int G_FindLevelByFile(const char *fileName);
void G_CacheMapData(void);
void G_NewGame(int volumeNum, int levelNum, int skillNum);
void G_ResetTimers(uint8_t keepgtics);
void updateviewport(void);
void pickrandomspot(int playerNum);
void resetinventory(int playerNum);
void P_ResetPlayer(int playerNum);

View file

@ -177,15 +177,12 @@ static void cachegoodsprites(void)
{
int i;
if (ud.screen_size >= 8)
tloadtile(BOTTOMSTATUSBAR);
if (ud.multimode > 1)
{
tloadtile(BOTTOMSTATUSBAR);
if (ud.multimode > 1)
{
tloadtile(FRAGBAR);
for (i = MINIFONT; i < MINIFONT + 63; i++)
tloadtile(i);
}
tloadtile(FRAGBAR);
for (i = MINIFONT; i < MINIFONT + 63; i++)
tloadtile(i);
}
tloadtile(VIEWSCREEN);
@ -547,11 +544,8 @@ void enterlevel(char g)
clearsoundlocks();
FX_SetReverb(0);
i = ud.screen_size;
ud.screen_size = 0;
dofrontscreens();
vscrn();
ud.screen_size = i;
#ifndef VOLUMEONE
@ -684,8 +678,8 @@ void enterlevel(char g)
palto(0,0,0,0);
vscrn();
clearview(0L);
drawbackground();
displayrooms(myconnectindex,65536);
displayrest(screenpeek);
clearbufbyte(playerquitflag,MAXPLAYERS,0x01010101);
ps[myconnectindex].over_shoulder_on = 0;

View file

@ -327,13 +327,10 @@ static void cachegoodsprites(void)
{
short i;
if (ud.screen_size >= 8)
tloadtile(BOTTOMSTATUSBAR);
if (ud.multimode > 1)
{
tloadtile(BOTTOMSTATUSBAR);
if (ud.multimode > 1)
{
tloadtile(FRAGBAR);
}
tloadtile(FRAGBAR);
}
//tloadtile(VIEWSCREEN);
@ -840,12 +837,9 @@ void enterlevel(char g)
if ((g & MODE_DEMO) == 0 && ud.recstat == 2)
ud.recstat = 0;
i = ud.screen_size;
ud.screen_size = 0;
dofrontscreens();
vscrn();
ud.screen_size = i;
if (lastlevel)
{
if (loadboard("endgame.map", &ps[0].posx, &ps[0].posy, &ps[0].posz, &ps[0].ang, &ps[0].cursectnum) == -1)
@ -991,7 +985,6 @@ void loadlevel(const char *filename)
palto(0,0,0,0);
vscrn();
clearview(0L);
drawbackground();
displayrooms(screenpeek,65536);
displayrest(screenpeek);
nextpage();

View file

@ -33,6 +33,8 @@ Modifications for JonoF's port by Jonathon Fowler (jf@jonof.id.au)
BEGIN_DUKE_NS
void DrawBorder();
//---------------------------------------------------------------------------
//
// Floor Over Floor
@ -469,8 +471,7 @@ void displayrooms(int snum, int smoothratio)
int tiltcs = 0; // JBF 20030807
p = &ps[snum];
if (ud.screen_size >= 8) drawbackground();
DrawBorder();
if (ud.overhead_on == 2 || p->cursectnum == -1)
return;

View file

@ -170,6 +170,7 @@ PalEntry DDukeCommonStatusBar::LightForShade(int shade)
return PalEntry(255, ll, ll, ll);
}
//==========================================================================
//
// Statistics output
@ -220,4 +221,141 @@ void DDukeCommonStatusBar::PrintLevelStats(int bottomy)
}
}
//==========================================================================
//
// 3D viewport size management
//
//==========================================================================
void DrawBorder()
{
auto tex = tileGetTexture(TILE_SCREENBORDER);
if (tex != nullptr && tex->isValid())
{
if (windowxy1.y > 0)
{
twod->AddFlatFill(0, 0, twod->GetWidth(), windowxy1.y, tex, false, 1);
}
if (windowxy2.y + 1 < twod->GetHeight())
{
twod->AddFlatFill(0, windowxy2.y + 1, twod->GetWidth(), twod->GetHeight(), tex, false, 1);
}
if (windowxy1.x > 0)
{
twod->AddFlatFill(0, windowxy1.y, windowxy1.x, windowxy2.y + 1, tex, false, 1);
}
if (windowxy2.x + 1 < twod->GetWidth())
{
twod->AddFlatFill(windowxy2.x + 1, windowxy1.y, twod->GetWidth(), windowxy2.y + 1, tex, false, 1);
}
auto vb = tileGetTexture(TILE_VIEWBORDER);
auto ve = tileGetTexture(TILE_VIEWBORDER + 1);
int x1 = windowxy1.x - 4;
int y1 = windowxy1.y - 4;
int x2 = windowxy2.x + 5;
int y2 = windowxy2.y + 5;
twod->AddFlatFill(x1, y1, x2, y1 + 4, vb, 5);
twod->AddFlatFill(x1, y2 - 4, x2, y2, vb, 6);
twod->AddFlatFill(x1, y1, x1 + 4, y2, vb, 1);
twod->AddFlatFill(x2 - 4, y1, x2, y2, vb, 3);
twod->AddFlatFill(x1, y1, x1 + 4, y1 + 4, ve, 1);
twod->AddFlatFill(x2 - 4, y1, x2, y1 + 4, ve, 3);
twod->AddFlatFill(x1, y2 - 4, x1 + 4, y2, ve, 2);
twod->AddFlatFill(x2 - 4, y2 - 4, x2, y2, ve, 4);
}
else
{
// If we got no frame just clear the screen.
twod->ClearScreen();
}
}
//---------------------------------------------------------------------------
//
// calculate size of 3D viewport.
// Fixme: this needs to be adjusted to the new status bar code,
// once the status bar is a persistent queriable object
// (it should also be moved out of the game code then.
//
//---------------------------------------------------------------------------
void updateviewport(void)
{
ud.screen_size = clamp(ud.screen_size, 0, 64);
int ss = std::max(ud.screen_size - 8, 0);
int x1 = scale(ss, xdim, 160);
int x2 = xdim - x1;
int y1 = scale(ss, (200 * 100) - ((tilesiz[TILE_BOTTOMSTATUSBAR].y >> (RR ? 1 : 0)) * ud.statusbarscale), 200 - tilesiz[TILE_BOTTOMSTATUSBAR].y);
int y2 = 200 * 100 - y1;
if (isRR() && ud.screen_size <= 12)
{
x1 = 0;
x2 = xdim;
y1 = 0;
if (ud.statusbarmode)
y2 = 200 * 100;
}
int fbh = 0;
if (ud.screen_size > 0 && ud.coop != 1 && ud.multimode > 1)
{
int j = 0;
for (int i = connecthead; i >= 0; i = connectpoint2[i])
if (i > j) j = i;
if (j >= 1) fbh += 8;
if (j >= 4) fbh += 8;
if (j >= 8) fbh += 8;
if (j >= 12) fbh += 8;
}
y1 += fbh * 100;
if (ud.screen_size >= 8 && ud.statusbarmode == 0)
y2 -= (tilesiz[TILE_BOTTOMSTATUSBAR].y >> (isRR() ? 1 : 0)) * ud.statusbarscale;
y1 = scale(y1, ydim, 200 * 100);
y2 = scale(y2, ydim, 200 * 100);
videoSetViewableArea(x1, y1, x2 - 1, y2 - 1);
}
//==========================================================================
//
// view sizing game interface
//
//==========================================================================
bool GameInterface::validate_hud(int layout)
{
return layout <= 11;
}
void GameInterface::set_hud_layout(int layout)
{
static const uint8_t screen_size_vals[] = { 60, 54, 48, 40, 32, 24, 16, 8, 8, 4, 4, 0 };
static const uint8_t screen_size_vals_rr[] = { 56, 48, 40, 32, 24, 16, 12, 8, 8, 4, 4, 0 };
if (validate_hud(layout))
{
ud.screen_size = isRR()? screen_size_vals_rr[layout] : screen_size_vals[layout];
ud.statusbarmode = layout >= 8;
ud.althud = layout >= 10;
updateviewport();
}
}
void GameInterface::set_hud_scale(int scale)
{
ud.statusbarscale = clamp(scale, 36, 100);
updateviewport();
}
void GameInterface::UpdateScreenSize()
{
updateviewport();
}
END_DUKE_NS

View file

@ -353,7 +353,7 @@ public:
FString format;
if (ud.multimode > 1 && (g_gametypeFlags[ud.coop] & GAMETYPE_FRAGBAR))
if (ud.multimode > 1 && !ud.coop)
{
DrawGraphic(tileGetTexture(KILLSICON), 228, top + 8, DI_ITEM_OFFSETS, 1, 0, 0, 1, 1);
format.Format("%d", max(p->frag - p->fraggedself, 0));

View file

@ -297,7 +297,7 @@ public:
FString format;
if (ud.multimode > 1 && (g_gametypeFlags[ud.coop] & GAMETYPE_FRAGBAR))
if (ud.multimode > 1 && !ud.coop)
{
DrawGraphic(tileGetTexture(KILLSICON), 228, top + 8, DI_ITEM_OFFSETS, 1, 0, 0, 1, 1);
format.Format("%d", max(p->frag - p->fraggedself, 0));

View file

@ -87,20 +87,6 @@ static void gameTimerHandler(void)
}
}
static int G_MaybeTakeOnFloorPal(tspritetype *pSprite, int sectNum)
{
int const floorPal = sector[sectNum].floorpal;
if (floorPal && !lookups.noFloorPal(floorPal) && !actorflag(pSprite->owner, SFLAG_NOPAL))
{
pSprite->pal = floorPal;
return 1;
}
return 0;
}
void G_InitTimer(int32_t ticspersec)
{
if (g_timerTicsPerSecond != ticspersec)
@ -132,56 +118,6 @@ int G_StartRTS(int lumpNum, int localPlayer)
return 0;
}
// Trying to sanitize the mess of options and the mess of variables the mess was stored in. (Did I say this was a total mess before...? >) )
// Hopefully this is more comprehensible, at least it neatly stores everything useful in a single linear value...
bool GameInterface::validate_hud(int layout)
{
if (layout <= (RR? 5: 6)) // Status bar with border
{
return !(ud.statusbarflags & STATUSBAR_NOSHRINK);
}
else if (layout <= 7) // Status bar fullscreen
{
return (!(ud.statusbarflags & STATUSBAR_NOFULL) || !(ud.statusbarflags & STATUSBAR_NOOVERLAY));
}
else if (layout == 8) // Status bar overlay
{
return !(ud.statusbarflags & STATUSBAR_NOOVERLAY);
}
else if (layout == 9) // Fullscreen HUD
{
return (!(ud.statusbarflags & STATUSBAR_NOMINI) || !(ud.statusbarflags & STATUSBAR_NOMODERN));
}
else if (layout == 10)
{
return !(ud.statusbarflags & STATUSBAR_NOMODERN);
}
else if (layout == 11)
{
return !(ud.statusbarflags & STATUSBAR_NONONE);
}
return false;
}
void GameInterface::set_hud_layout(int layout)
{
static const uint8_t screen_size_vals[] = { 60, 54, 48, 40, 32, 24, 16, 8, 8, 4, 4, 0 };
static const uint8_t screen_size_vals_rr[] = { 56, 48, 40, 32, 24, 16, 12, 8, 8, 4, 4, 0 };
if (validate_hud(layout))
{
ud.screen_size = RR? screen_size_vals_rr[layout] : screen_size_vals[layout];
ud.statusbarmode = layout >= 8;
ud.althud = layout >= 10;
updateviewport();
}
}
void GameInterface::set_hud_scale(int scale)
{
ud.statusbarscale = clamp(scale, 36, 100);
updateviewport();
}
void G_HandleLocalKeys(void)
{
// CONTROL_ProcessBinds();
@ -209,8 +145,6 @@ void G_HandleLocalKeys(void)
{
hud_scale = hud_scale + 4;
}
updateviewport();
}
if (buttonMap.ButtonDown(gamefunc_Shrink_Screen))
@ -228,15 +162,13 @@ void G_HandleLocalKeys(void)
{
hud_scale = hud_scale - 4;
}
updateviewport();
}
}
if (g_player[myconnectindex].ps->cheat_phase == 1 || (g_player[myconnectindex].ps->gm&(MODE_MENU|MODE_TYPE)) || System_WantGuiCapture())
return;
if (buttonMap.ButtonDown(gamefunc_See_Coop_View) && (GTFLAGS(GAMETYPE_COOPVIEW) || ud.recstat == 2))
if (buttonMap.ButtonDown(gamefunc_See_Coop_View) && (ud.coop || ud.recstat == 2))
{
buttonMap.ClearButton(gamefunc_See_Coop_View);
screenpeek = connectpoint2[screenpeek];
@ -318,8 +250,8 @@ void G_HandleLocalKeys(void)
{
g_player[myconnectindex].ps->over_shoulder_on = !g_player[myconnectindex].ps->over_shoulder_on;
CAMERADIST = 0;
CAMERACLOCK = (int32_t) totalclock;
cameradist = 0;
cameraclock = (int32_t) totalclock;
FTA(QUOTE_VIEW_MODE_OFF + g_player[myconnectindex].ps->over_shoulder_on, g_player[myconnectindex].ps);
}
@ -347,7 +279,6 @@ void G_HandleLocalKeys(void)
ud.last_overhead = ud.overhead_on;
ud.overhead_on = 0;
ud.scrollmode = 0;
updateviewport();
}
#endif
@ -367,7 +298,6 @@ void G_HandleLocalKeys(void)
}
restorepalette = 1;
updateviewport();
}
}
@ -431,14 +361,6 @@ static void G_CompileScripts(void)
VM_OnEvent(EVENT_INIT);
}
static inline void G_CheckGametype(void)
{
m_coop = clamp(*m_coop, 0, g_gametypeCnt-1);
Printf("%s\n",g_gametypeNames[m_coop]);
if (g_gametypeFlags[m_coop] & GAMETYPE_ITEMRESPAWN)
ud.m_respawn_items = ud.m_respawn_inventory = 1;
}
inline int G_CheckPlayerColor(int color)
{
static int32_t player_pals[] = { 0, 9, 10, 11, 12, 13, 14, 15, 16, 21, 23, };
@ -464,7 +386,6 @@ static void G_Startup(void)
// These depend on having the dynamic tile and/or sound mappings set up:
G_InitMultiPsky(TILE_CLOUDYOCEAN, TILE_MOONSKY1, TILE_BIGORBIT1, TILE_LA);
Net_SendClientInfo();
if (g_netServer || ud.multimode > 1) G_CheckGametype();
if (userConfig.CommandMap.IsNotEmpty())
{
@ -574,11 +495,6 @@ static int G_EndOfLevel(void)
if (ud.display_bonus_screen == 1)
{
int32_t i = ud.screen_size;
ud.screen_size = 0;
updateviewport();
ud.screen_size = i;
G_BonusScreen(0);
}
@ -703,7 +619,6 @@ int32_t SetDefaults(void)
ud.camera_time = 0;//4;
ud.screen_tilting = 1;
ud.statusbarflags = 0;// STATUSBAR_NOSHRINK;
playerteam = 0;
ud.angleinterpolation = 0;
@ -901,19 +816,13 @@ MAIN_LOOP_RESTART:
goto MAIN_LOOP_RESTART;
}
}
else updateviewport();
ud.showweapons = ud.config.ShowOpponentWeapons;
P_SetupMiscInputSettings();
g_player[myconnectindex].pteam = playerteam;
if (g_gametypeFlags[ud.coop] & GAMETYPE_TDM)
g_player[myconnectindex].ps->palookup = g_player[myconnectindex].pcolor = G_GetTeamPalette(g_player[myconnectindex].pteam);
else
{
if (playercolor) g_player[myconnectindex].ps->palookup = g_player[myconnectindex].pcolor = G_CheckPlayerColor(playercolor);
else g_player[myconnectindex].ps->palookup = g_player[myconnectindex].pcolor;
}
if (playercolor) g_player[myconnectindex].ps->palookup = g_player[myconnectindex].pcolor = G_CheckPlayerColor(playercolor);
else g_player[myconnectindex].ps->palookup = g_player[myconnectindex].pcolor;
ud.warp_on = 0;
inputState.ClearKeyStatus(sc_Pause); // JBF: I hate the pause key
@ -1001,8 +910,6 @@ MAIN_LOOP_RESTART:
drawtime.Reset();
drawtime.Clock();
displayrooms(screenpeek, smoothRatio);
if (videoGetRenderMode() >= REND_POLYMOST)
drawbackground();
G_DisplayRest(smoothRatio);
drawtime.Unclock();
videoNextPage();
@ -1084,14 +991,7 @@ int G_DoMoveThings(void)
if (g_player[i].input->extbits&(1<<6))
{
g_player[i].ps->team = g_player[i].pteam;
if (g_gametypeFlags[ud.coop] & GAMETYPE_TDM)
{
actor[g_player[i].ps->i].picnum = TILE_APLAYERTOP;
quickkill(g_player[i].ps);
}
}
if (g_gametypeFlags[ud.coop] & GAMETYPE_TDM)
g_player[i].ps->palookup = g_player[i].pcolor = G_GetTeamPalette(g_player[i].ps->team);
if (sprite[g_player[i].ps->i].pal != 1)
sprite[g_player[i].ps->i].pal = g_player[i].pcolor;
@ -1139,11 +1039,6 @@ void GameInterface::FreeGameData()
G_Cleanup();
}
void GameInterface::UpdateScreenSize()
{
updateviewport();
}
::GameInterface* CreateInterface()
{
return new GameInterface;

View file

@ -34,49 +34,6 @@ const char *s_buildDate = "20120522";
char g_gametypeNames[MAXGAMETYPES][33]
= { "DukeMatch (Spawn)", "Cooperative Play", "DukeMatch (No Spawn)", "Team DM (Spawn)", "Team DM (No Spawn)" };
int32_t g_gametypeFlags[MAXGAMETYPES] =
{
GAMETYPE_FRAGBAR |
GAMETYPE_SCORESHEET |
GAMETYPE_DMSWITCHES |
GAMETYPE_ITEMRESPAWN |
GAMETYPE_MARKEROPTION |
GAMETYPE_ACCESSATSTART,
GAMETYPE_COOP |
GAMETYPE_WEAPSTAY |
GAMETYPE_COOPSPAWN |
GAMETYPE_ACCESSCARDSPRITES |
GAMETYPE_COOPVIEW |
GAMETYPE_COOPSOUND |
GAMETYPE_OTHERPLAYERSINMAP |
GAMETYPE_PLAYERSFRIENDLY |
GAMETYPE_FIXEDRESPAWN |
GAMETYPE_PRESERVEINVENTORYDEATH,
GAMETYPE_WEAPSTAY |
GAMETYPE_FRAGBAR |
GAMETYPE_SCORESHEET |
GAMETYPE_DMSWITCHES |
GAMETYPE_ACCESSATSTART,
GAMETYPE_FRAGBAR |
GAMETYPE_SCORESHEET |
GAMETYPE_DMSWITCHES |
GAMETYPE_ITEMRESPAWN |
GAMETYPE_MARKEROPTION |
GAMETYPE_ACCESSATSTART |
GAMETYPE_TDM |
GAMETYPE_TDMSPAWN,
GAMETYPE_WEAPSTAY |
GAMETYPE_FRAGBAR |
GAMETYPE_SCORESHEET |
GAMETYPE_DMSWITCHES |
GAMETYPE_ACCESSATSTART |
GAMETYPE_TDM |
GAMETYPE_TDMSPAWN,
};
float g_gameUpdateAvgTime = -1.f;

View file

@ -370,20 +370,13 @@ int G_EnterLevel(int gameMode)
return 1;
}
i = ud.screen_size;
ud.screen_size = 0;
FStringf msg("%s . . .", GStrings("TXT_LOADMAP"));
ud.screen_size = i;
DukePlayer_t *const pPlayer = g_player[0].ps;
/*
G_DoLoadScreen(msg, -1);
*/
updateviewport();
int res = LoadTheMap(mi, pPlayer, gameMode);
if (res != 0) return res;
@ -477,10 +470,9 @@ int G_EnterLevel(int gameMode)
restorepalette = -1;
updateviewport();
videoClearViewableArea(0L);
drawbackground();
displayrooms(myconnectindex,65536);
G_DisplayRest(65536);
Net_WaitForEverybody();
return 0;

View file

@ -1429,7 +1429,6 @@ static void postloadplayer(int32_t savegamep)
T1(i) = 0;
}
updateviewport();
FX_SetReverb(0);
}

View file

@ -285,7 +285,6 @@ void G_DisplayRest(int32_t smoothratio)
if (ud.overhead_on == 2)
{
twod->ClearScreen();
drawbackground();
renderDrawMapView(cposx, cposy, pp->zoom, cang);
}
drawoverheadmap(cposx, cposy, pp->zoom, cang);