mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-11-12 23:54:37 +00:00
- transitioned Duke to the new main loop.
Everything compiles, but hasn't been tested. Doing a safety commit first.
This commit is contained in:
parent
0c455acaa2
commit
d59284c96b
15 changed files with 89 additions and 345 deletions
|
@ -1972,6 +1972,12 @@ void Net_SkipCommand (int type, uint8_t **stream)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Net_ClearFifo(void)
|
||||||
|
{
|
||||||
|
// Q: Do we need this?
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// This was taken out of shared_hud, because UI code shouldn't do low level calculations that may change if the backing implementation changes.
|
// This was taken out of shared_hud, because UI code shouldn't do low level calculations that may change if the backing implementation changes.
|
||||||
int Net_GetLatency(int *ld, int *ad)
|
int Net_GetLatency(int *ld, int *ad)
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,6 +55,8 @@ void Net_ClearBuffers ();
|
||||||
|
|
||||||
bool D_CheckNetGame(void);
|
bool D_CheckNetGame(void);
|
||||||
|
|
||||||
|
void Net_ClearFifo(void);
|
||||||
|
|
||||||
|
|
||||||
// Netgame stuff (buffers and pointers, i.e. indices).
|
// Netgame stuff (buffers and pointers, i.e. indices).
|
||||||
|
|
||||||
|
|
|
@ -101,7 +101,7 @@ int lastTic;
|
||||||
|
|
||||||
int automapMode;
|
int automapMode;
|
||||||
bool automapFollow;
|
bool automapFollow;
|
||||||
extern int pauseext;
|
extern bool pauseext;
|
||||||
|
|
||||||
CCMD(togglemap)
|
CCMD(togglemap)
|
||||||
{
|
{
|
||||||
|
@ -863,7 +863,13 @@ int RunGame()
|
||||||
SetupGameButtons();
|
SetupGameButtons();
|
||||||
gi->app_init();
|
gi->app_init();
|
||||||
|
|
||||||
app_loop();
|
// Duke has transitioned to the new main loop, the other games haven't yet.
|
||||||
|
if (g_gameType & GAMEFLAG_DUKE | GAMEFLAG_RRALL | GAMEFLAG_NAM | GAMEFLAG_NAPALM | GAMEFLAG_WW2GI)
|
||||||
|
{
|
||||||
|
D_CheckNetGame();
|
||||||
|
MainLoop();
|
||||||
|
}
|
||||||
|
else app_loop();
|
||||||
return 0; // this is never reached. app_loop only exits via exception.
|
return 0; // this is never reached. app_loop only exits via exception.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1246,3 +1252,18 @@ CCMD(taunt)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void startmainmenu()
|
||||||
|
{
|
||||||
|
gamestate = GS_MENUSCREEN;
|
||||||
|
M_StartControlPanel(false);
|
||||||
|
M_SetMenu(NAME_Mainmenu);
|
||||||
|
FX_StopAllSounds();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,12 +8,14 @@
|
||||||
#include "tarray.h"
|
#include "tarray.h"
|
||||||
#include "name.h"
|
#include "name.h"
|
||||||
#include "memarena.h"
|
#include "memarena.h"
|
||||||
|
#include "stats.h"
|
||||||
|
|
||||||
extern FString currentGame;
|
extern FString currentGame;
|
||||||
extern FString LumpFilter;
|
extern FString LumpFilter;
|
||||||
class FArgs;
|
class FArgs;
|
||||||
extern bool GUICapture;
|
extern bool GUICapture;
|
||||||
extern bool AppActive;
|
extern bool AppActive;
|
||||||
|
extern cycle_t drawtime, actortime, thinktime, gameupdatetime;
|
||||||
|
|
||||||
extern FMemArena dump; // this is for memory blocks than cannot be deallocated without some huge effort. Put them in here so that they do not register on shutdown.
|
extern FMemArena dump; // this is for memory blocks than cannot be deallocated without some huge effort. Put them in here so that they do not register on shutdown.
|
||||||
|
|
||||||
|
@ -46,6 +48,7 @@ void CONFIG_ReadCombatMacros();
|
||||||
int32_t CONFIG_GetMapBestTime(char const* const mapname, uint8_t const* const mapmd4);
|
int32_t CONFIG_GetMapBestTime(char const* const mapname, uint8_t const* const mapmd4);
|
||||||
int CONFIG_SetMapBestTime(uint8_t const* const mapmd4, int32_t tm);
|
int CONFIG_SetMapBestTime(uint8_t const* const mapmd4, int32_t tm);
|
||||||
int GameMain();
|
int GameMain();
|
||||||
|
void startmainmenu();
|
||||||
|
|
||||||
struct UserConfig
|
struct UserConfig
|
||||||
{
|
{
|
||||||
|
|
|
@ -60,7 +60,6 @@ struct GameInterface
|
||||||
virtual ~GameInterface() {}
|
virtual ~GameInterface() {}
|
||||||
virtual bool GenerateSavePic() { return false; }
|
virtual bool GenerateSavePic() { return false; }
|
||||||
virtual void app_init() = 0;
|
virtual void app_init() = 0;
|
||||||
virtual void RunGameFrame() = 0;
|
|
||||||
virtual void clearlocalinputstate() {}
|
virtual void clearlocalinputstate() {}
|
||||||
virtual void UpdateScreenSize() {}
|
virtual void UpdateScreenSize() {}
|
||||||
virtual void FreeGameData() {}
|
virtual void FreeGameData() {}
|
||||||
|
@ -101,6 +100,8 @@ struct GameInterface
|
||||||
virtual void Ticker() {}
|
virtual void Ticker() {}
|
||||||
virtual int GetPlayerChecksum(int pnum) { return 0x12345678 + pnum; }
|
virtual int GetPlayerChecksum(int pnum) { return 0x12345678 + pnum; }
|
||||||
|
|
||||||
|
virtual void RunGameFrame() {} // this must go away once things are done.
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -81,6 +81,7 @@
|
||||||
#include "v_video.h"
|
#include "v_video.h"
|
||||||
#include "glbackend/glbackend.h"
|
#include "glbackend/glbackend.h"
|
||||||
#include "palette.h"
|
#include "palette.h"
|
||||||
|
#include "build.h"
|
||||||
|
|
||||||
CVAR(Bool, vid_activeinbackground, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
CVAR(Bool, vid_activeinbackground, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
||||||
CVAR(Bool, r_ticstability, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
CVAR(Bool, r_ticstability, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
||||||
|
@ -183,11 +184,15 @@ static void GameTicker()
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case GS_STARTUP:
|
case GS_STARTUP:
|
||||||
|
artClearMapArt();
|
||||||
gi->Startup();
|
gi->Startup();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GS_LEVEL:
|
case GS_LEVEL:
|
||||||
|
gameupdatetime.Reset();
|
||||||
|
gameupdatetime.Clock();
|
||||||
gi->Ticker();
|
gi->Ticker();
|
||||||
|
gameupdatetime.Unclock();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GS_MENUSCREEN:
|
case GS_MENUSCREEN:
|
||||||
|
@ -371,7 +376,10 @@ void TryRunTics (void)
|
||||||
gi->Predict(myconnectindex);
|
gi->Predict(myconnectindex);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
gi->GetInput(nullptr);
|
if (!cl_syncinput)
|
||||||
|
{
|
||||||
|
gi->GetInput(nullptr);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -89,7 +89,6 @@ void CheckKeys2();
|
||||||
void GameTicker();
|
void GameTicker();
|
||||||
void InitLevel(int);
|
void InitLevel(int);
|
||||||
void InitNewGame();
|
void InitNewGame();
|
||||||
void startmainmenu();
|
|
||||||
|
|
||||||
int showmap(short nLevel, short nLevelNew, short nLevelBest);
|
int showmap(short nLevel, short nLevelNew, short nLevelBest);
|
||||||
void menu_DoPlasma();
|
void menu_DoPlasma();
|
||||||
|
|
|
@ -136,20 +136,6 @@ static void GameDisplay(void)
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
void startmainmenu()
|
|
||||||
{
|
|
||||||
gamestate = GS_MENUSCREEN;
|
|
||||||
M_StartControlPanel(false);
|
|
||||||
M_SetMenu(NAME_Mainmenu);
|
|
||||||
StopAllSounds();
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void drawmenubackground()
|
void drawmenubackground()
|
||||||
{
|
{
|
||||||
auto nLogoTile = EXHUMED ? kExhumedLogo : kPowerslaveLogo;
|
auto nLogoTile = EXHUMED ? kExhumedLogo : kPowerslaveLogo;
|
||||||
|
|
|
@ -361,8 +361,7 @@ void GameInterface::DrawPlayerSprite(const DVector2& origin, bool onteam)
|
||||||
|
|
||||||
void GameInterface::QuitToTitle()
|
void GameInterface::QuitToTitle()
|
||||||
{
|
{
|
||||||
ps[myconnectindex].gm = MODE_DEMO;
|
gamestate = GS_STARTUP;
|
||||||
artClearMapArt();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
END_DUKE_NS
|
END_DUKE_NS
|
||||||
|
|
|
@ -22,8 +22,6 @@
|
||||||
#include "stats.h"
|
#include "stats.h"
|
||||||
#include "binaryangle.h"
|
#include "binaryangle.h"
|
||||||
|
|
||||||
extern cycle_t drawtime, actortime, thinktime, gameupdatetime;
|
|
||||||
|
|
||||||
BEGIN_DUKE_NS
|
BEGIN_DUKE_NS
|
||||||
|
|
||||||
extern FFont* IndexFont;
|
extern FFont* IndexFont;
|
||||||
|
@ -33,7 +31,6 @@ struct GameInterface : public ::GameInterface
|
||||||
{
|
{
|
||||||
const char* Name() override { return "Duke"; }
|
const char* Name() override { return "Duke"; }
|
||||||
void app_init() override;
|
void app_init() override;
|
||||||
void RunGameFrame() override;
|
|
||||||
void clearlocalinputstate() override;
|
void clearlocalinputstate() override;
|
||||||
bool GenerateSavePic() override;
|
bool GenerateSavePic() override;
|
||||||
void PlayHudSound() override;
|
void PlayHudSound() override;
|
||||||
|
|
|
@ -193,7 +193,6 @@ void resetinventory(int pn);
|
||||||
void resetplayerstats(int pn);
|
void resetplayerstats(int pn);
|
||||||
void resetweapons(int pn);
|
void resetweapons(int pn);
|
||||||
void resetprestat(int snum, int g);
|
void resetprestat(int snum, int g);
|
||||||
void clearfifo(void);
|
|
||||||
void prelevel_common(int g);
|
void prelevel_common(int g);
|
||||||
void cacheit_d();
|
void cacheit_d();
|
||||||
void cacheit_r();
|
void cacheit_r();
|
||||||
|
@ -234,7 +233,6 @@ void apply_seasick(player_struct* p, double scalefactor);
|
||||||
void calcviewpitch(player_struct* p, double factor);
|
void calcviewpitch(player_struct* p, double factor);
|
||||||
void sethorizon(int snum, ESyncBits actions, double factor, fixed_t adjustment);
|
void sethorizon(int snum, ESyncBits actions, double factor, fixed_t adjustment);
|
||||||
bool movementBlocked(int snum);
|
bool movementBlocked(int snum);
|
||||||
void startmainmenu();
|
|
||||||
void loadcons();
|
void loadcons();
|
||||||
|
|
||||||
void updateinterpolations();
|
void updateinterpolations();
|
||||||
|
|
|
@ -175,7 +175,7 @@ void FTA(int q, struct player_struct* p)
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
void drawbackground(void)
|
void GameInterface::DrawBackground()
|
||||||
{
|
{
|
||||||
twod->ClearScreen();
|
twod->ClearScreen();
|
||||||
auto tex = tileGetTexture(TILE_MENUSCREEN);
|
auto tex = tileGetTexture(TILE_MENUSCREEN);
|
||||||
|
|
|
@ -38,149 +38,14 @@ Modifications for JonoF's port by Jonathon Fowler (jf@jonof.id.au)
|
||||||
|
|
||||||
BEGIN_DUKE_NS
|
BEGIN_DUKE_NS
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
// abstract the queue's implementation
|
|
||||||
// All access to the input queues should go through this function interface.
|
|
||||||
//
|
|
||||||
//---------------------------------------------------------------------------
|
|
||||||
static InputPacket inputfifo[MOVEFIFOSIZ][MAXPLAYERS];
|
|
||||||
static int movefifoend[MAXPLAYERS];
|
|
||||||
static int movefifoplc;
|
|
||||||
static int bufferjitter;
|
|
||||||
|
|
||||||
void clearfifo(void)
|
|
||||||
{
|
|
||||||
memset(&inputfifo, 0, sizeof(inputfifo));
|
|
||||||
memset(sync, 0, sizeof(sync));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static inline void GetNextInput()
|
|
||||||
{
|
|
||||||
for (int i = connecthead; i >= 0; i = connectpoint2[i])
|
|
||||||
memcpy(&sync[i], &inputfifo[movefifoplc & (MOVEFIFOSIZ - 1)][i], sizeof(InputPacket));
|
|
||||||
|
|
||||||
movefifoplc++;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void advancequeue(int myconnectindex)
|
|
||||||
{
|
|
||||||
movefifoend[myconnectindex]++;
|
|
||||||
}
|
|
||||||
|
|
||||||
static InputPacket& nextinput(int myconnectindex)
|
|
||||||
{
|
|
||||||
return inputfifo[movefifoend[myconnectindex] & (MOVEFIFOSIZ - 1)][myconnectindex];
|
|
||||||
}
|
|
||||||
|
|
||||||
bool shouldprocessinput(int myconnectindex)
|
|
||||||
{
|
|
||||||
if (movefifoend[myconnectindex] - movefifoplc > bufferjitter)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
for (i = connecthead; i >= 0; i = connectpoint2[i])
|
|
||||||
if (movefifoplc == movefifoend[i]) return false;
|
|
||||||
if (i >= 0) return false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void fakedomovethings()
|
|
||||||
{
|
|
||||||
// prediction
|
|
||||||
}
|
|
||||||
|
|
||||||
static void fakedomovethingscorrect()
|
|
||||||
{
|
|
||||||
// unprediction
|
|
||||||
}
|
|
||||||
|
|
||||||
void prediction()
|
|
||||||
{
|
|
||||||
#if 0
|
|
||||||
// We currently have no net code driving this.
|
|
||||||
if (numplayers > 1)
|
|
||||||
while (fakemovefifoplc < movefifoend[myconnectindex]) fakedomovethings();
|
|
||||||
getpackets();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//---------------------------------------------------------------------------
|
|
||||||
/*
|
|
||||||
void mploadsave()
|
|
||||||
{
|
|
||||||
for(int i=connecthead;i>=0;i=connectpoint2[i])
|
|
||||||
if( sync[i].bits&(1<<17) )
|
|
||||||
{
|
|
||||||
multiflag = 2;
|
|
||||||
multiwhat = (sync[i].bits>>18)&1;
|
|
||||||
multipos = (unsigned) (sync[i].bits>>19)&15;
|
|
||||||
multiwho = i;
|
|
||||||
|
|
||||||
if( multiwhat )
|
|
||||||
{
|
|
||||||
saveplayer( multipos );
|
|
||||||
multiflag = 0;
|
|
||||||
|
|
||||||
if(multiwho != myconnectindex)
|
|
||||||
{
|
|
||||||
strcpy(&fta_quotes[122],&ud.user_name[multiwho][0]);
|
|
||||||
strcat(&fta_quotes[122]," SAVED A MULTIPLAYER GAME");
|
|
||||||
FTA(122,&ps[myconnectindex]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
strcpy(&fta_quotes[122],"MULTIPLAYER GAME SAVED");
|
|
||||||
FTA(122,&ps[myconnectindex]);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// waitforeverybody();
|
|
||||||
|
|
||||||
j = loadplayer( multipos );
|
|
||||||
|
|
||||||
multiflag = 0;
|
|
||||||
|
|
||||||
if(j == 0 && !isRR())
|
|
||||||
{
|
|
||||||
if(multiwho != myconnectindex)
|
|
||||||
{
|
|
||||||
strcpy(&fta_quotes[122],&ud.user_name[multiwho][0]);
|
|
||||||
strcat(&fta_quotes[122]," LOADED A MULTIPLAYER GAME");
|
|
||||||
FTA(122,&ps[myconnectindex]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
strcpy(&fta_quotes[122],"MULTIPLAYER GAME LOADED");
|
|
||||||
FTA(122,&ps[myconnectindex]);
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
int domovethings()
|
void GameInterface::Ticker()
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
|
|
||||||
// mplpadsave();
|
|
||||||
|
|
||||||
ud.camerasprite = -1;
|
ud.camerasprite = -1;
|
||||||
|
|
||||||
if (earthquaketime > 0) earthquaketime--;
|
if (earthquaketime > 0) earthquaketime--;
|
||||||
|
@ -192,51 +57,15 @@ int domovethings()
|
||||||
}
|
}
|
||||||
|
|
||||||
everyothertime++;
|
everyothertime++;
|
||||||
GetNextInput();
|
|
||||||
updateinterpolations();
|
updateinterpolations();
|
||||||
|
|
||||||
#if 0
|
|
||||||
j = -1;
|
|
||||||
for (i = connecthead; i >= 0; i = connectpoint2[i])
|
|
||||||
{
|
|
||||||
if (PlayerInput(i, SKB_GAMEQUIT))
|
|
||||||
{
|
|
||||||
if (i == myconnectindex) gameexitfrommenu();
|
|
||||||
if (screenpeek == i)
|
|
||||||
{
|
|
||||||
screenpeek = connectpoint2[i];
|
|
||||||
if (screenpeek < 0) screenpeek = connecthead;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i == connecthead) connecthead = connectpoint2[connecthead];
|
|
||||||
else connectpoint2[j] = connectpoint2[i];
|
|
||||||
|
|
||||||
numplayers--;
|
|
||||||
ud.multimode--;
|
|
||||||
|
|
||||||
//closedemowrite();
|
|
||||||
|
|
||||||
if (numplayers < 2 && !isRR())
|
|
||||||
S_PlaySound(GENERIC_AMBIENCE17, CHAN_AUTO, CHANF_UI);
|
|
||||||
|
|
||||||
Printf(PRINT_NOTIFY, "%s is history!", ud.user_name[i]);
|
|
||||||
|
|
||||||
quickkill(&ps[i]);
|
|
||||||
deletesprite(ps[i].i);
|
|
||||||
}
|
|
||||||
else j = i;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//if(ud.recstat == 1) record();
|
|
||||||
|
|
||||||
if (playrunning())
|
if (playrunning())
|
||||||
{
|
{
|
||||||
global_random = krand();
|
global_random = krand();
|
||||||
movedummyplayers();//ST 13
|
movedummyplayers();//ST 13
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = connecthead; i >= 0; i = connectpoint2[i])
|
for (int i = connecthead; i >= 0; i = connectpoint2[i])
|
||||||
{
|
{
|
||||||
if (playrunning())
|
if (playrunning())
|
||||||
{
|
{
|
||||||
|
@ -258,8 +87,6 @@ int domovethings()
|
||||||
fi.think();
|
fi.think();
|
||||||
}
|
}
|
||||||
|
|
||||||
fakedomovethingscorrect();
|
|
||||||
|
|
||||||
if ((everyothertime & 1) == 0)
|
if ((everyothertime & 1) == 0)
|
||||||
{
|
{
|
||||||
fi.animatewalls();
|
fi.animatewalls();
|
||||||
|
@ -269,80 +96,11 @@ int domovethings()
|
||||||
if (isRR() && ud.recstat == 0 && ud.multimode < 2)
|
if (isRR() && ud.recstat == 0 && ud.multimode < 2)
|
||||||
dotorch();
|
dotorch();
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void GameTicker()
|
|
||||||
{
|
|
||||||
if (ps[myconnectindex].gm == MODE_DEMO)
|
|
||||||
{
|
|
||||||
M_ClearMenus();
|
|
||||||
gamestate = GS_STARTUP;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Net_GetPackets();
|
|
||||||
|
|
||||||
|
|
||||||
gameupdatetime.Reset();
|
|
||||||
gameupdatetime.Clock();
|
|
||||||
|
|
||||||
int const currentTic = I_GetTime();
|
|
||||||
gameclock = I_GetBuildTime() - gameclockstart;
|
|
||||||
|
|
||||||
while (playrunning() && currentTic - lastTic >= 1)
|
|
||||||
{
|
|
||||||
lastTic = currentTic;
|
|
||||||
auto& input = nextinput(myconnectindex);
|
|
||||||
|
|
||||||
gi->GetInput(&input);
|
|
||||||
|
|
||||||
advancequeue(myconnectindex);
|
|
||||||
|
|
||||||
if (playrunning())
|
|
||||||
{
|
|
||||||
prediction();
|
|
||||||
|
|
||||||
if (numplayers < 2) bufferjitter = 0;
|
|
||||||
while (shouldprocessinput(myconnectindex))
|
|
||||||
{
|
|
||||||
if (domovethings()) break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
gameupdatetime.Unclock();
|
|
||||||
|
|
||||||
if (ps[myconnectindex].gm & (MODE_EOL | MODE_RESTART))
|
if (ps[myconnectindex].gm & (MODE_EOL | MODE_RESTART))
|
||||||
{
|
{
|
||||||
exitlevel();
|
exitlevel();
|
||||||
}
|
}
|
||||||
|
nonsharedkeys();
|
||||||
if (!cl_syncinput)
|
|
||||||
{
|
|
||||||
gi->GetInput(nullptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
nonsharedkeys();
|
|
||||||
gi->UpdateSounds();
|
|
||||||
drawtime.Reset();
|
|
||||||
drawtime.Clock();
|
|
||||||
videoSetBrightness(thunder_brightness);
|
|
||||||
double const smoothRatio = playrunning() ? I_GetTimeFrac() * MaxSmoothRatio : MaxSmoothRatio;
|
|
||||||
displayrooms(screenpeek, smoothRatio);
|
|
||||||
drawoverlays(smoothRatio);
|
|
||||||
drawtime.Unclock();
|
|
||||||
|
|
||||||
if (ps[myconnectindex].gm == MODE_DEMO)
|
|
||||||
{
|
|
||||||
gamestate = GS_STARTUP;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
@ -351,14 +109,6 @@ void GameTicker()
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
void startmainmenu()
|
|
||||||
{
|
|
||||||
gamestate = GS_MENUSCREEN;
|
|
||||||
M_StartControlPanel(false);
|
|
||||||
M_SetMenu(NAME_Mainmenu);
|
|
||||||
FX_StopAllSounds();
|
|
||||||
}
|
|
||||||
|
|
||||||
void resetGameClock()
|
void resetGameClock()
|
||||||
{
|
{
|
||||||
I_SetFrameTime();
|
I_SetFrameTime();
|
||||||
|
@ -367,33 +117,6 @@ void resetGameClock()
|
||||||
cloudclock = 0;
|
cloudclock = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Startup()
|
|
||||||
{
|
|
||||||
resetGameClock();
|
|
||||||
ps[myconnectindex].ftq = 0;
|
|
||||||
|
|
||||||
if (userConfig.CommandMap.IsNotEmpty())
|
|
||||||
{
|
|
||||||
auto maprecord = FindMapByName(userConfig.CommandMap);
|
|
||||||
userConfig.CommandMap = "";
|
|
||||||
if (maprecord)
|
|
||||||
{
|
|
||||||
ud.m_respawn_monsters = ud.m_player_skill == 4;
|
|
||||||
|
|
||||||
for (int i = 0; i != -1; i = connectpoint2[i])
|
|
||||||
{
|
|
||||||
resetweapons(i);
|
|
||||||
resetinventory(i);
|
|
||||||
}
|
|
||||||
startnewgame(maprecord, /*userConfig.skill*/2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fi.ShowLogo([](bool) { startmainmenu(); });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
@ -402,47 +125,48 @@ static void Startup()
|
||||||
|
|
||||||
void GameInterface::Startup()
|
void GameInterface::Startup()
|
||||||
{
|
{
|
||||||
|
resetGameClock();
|
||||||
|
ps[myconnectindex].ftq = 0;
|
||||||
|
|
||||||
}
|
if (userConfig.CommandMap.IsNotEmpty())
|
||||||
void GameInterface::DrawBackground()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
void GameInterface::Render()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
void GameInterface::Ticker()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void GameInterface::RunGameFrame()
|
|
||||||
{
|
|
||||||
switch (gamestate)
|
|
||||||
{
|
{
|
||||||
default:
|
auto maprecord = FindMapByName(userConfig.CommandMap);
|
||||||
case GS_STARTUP:
|
userConfig.CommandMap = "";
|
||||||
Startup();
|
if (maprecord)
|
||||||
break;
|
{
|
||||||
|
ud.m_respawn_monsters = ud.m_player_skill == 4;
|
||||||
case GS_MENUSCREEN:
|
|
||||||
case GS_FULLCONSOLE:
|
|
||||||
drawbackground();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GS_LEVEL:
|
|
||||||
GameTicker();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GS_INTERMISSION:
|
|
||||||
case GS_INTRO:
|
|
||||||
RunScreenJobFrame();
|
|
||||||
break;
|
|
||||||
|
|
||||||
|
for (int i = 0; i != -1; i = connectpoint2[i])
|
||||||
|
{
|
||||||
|
resetweapons(i);
|
||||||
|
resetinventory(i);
|
||||||
|
}
|
||||||
|
startnewgame(maprecord, /*userConfig.skill*/2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fi.ShowLogo([](bool) { startmainmenu(); });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void GameInterface::Render()
|
||||||
|
{
|
||||||
|
drawtime.Reset();
|
||||||
|
drawtime.Clock();
|
||||||
|
videoSetBrightness(thunder_brightness);
|
||||||
|
double const smoothRatio = playrunning() ? I_GetTimeFrac() * MaxSmoothRatio : MaxSmoothRatio;
|
||||||
|
displayrooms(screenpeek, smoothRatio);
|
||||||
|
drawoverlays(smoothRatio);
|
||||||
|
drawtime.Unclock();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
END_DUKE_NS
|
END_DUKE_NS
|
||||||
|
|
||||||
|
|
|
@ -1013,7 +1013,7 @@ int enterlevel(MapRecord *mi, int gamemode)
|
||||||
global_random = 0;
|
global_random = 0;
|
||||||
|
|
||||||
ud.last_level = currentLevel->levelNumber;
|
ud.last_level = currentLevel->levelNumber;
|
||||||
clearfifo();
|
Net_ClearFifo();
|
||||||
for (int i=numinterpolations-1; i>=0; i--) bakipos[i] = *curipos[i];
|
for (int i=numinterpolations-1; i>=0; i--) bakipos[i] = *curipos[i];
|
||||||
ps[myconnectindex].over_shoulder_on = 0;
|
ps[myconnectindex].over_shoulder_on = 0;
|
||||||
clearfrags();
|
clearfrags();
|
||||||
|
|
|
@ -520,7 +520,7 @@ void GameInterface::SerializeGameState(FSerializer& arc)
|
||||||
recreateinterpolations();
|
recreateinterpolations();
|
||||||
show_shareware = 0;
|
show_shareware = 0;
|
||||||
everyothertime = 0;
|
everyothertime = 0;
|
||||||
clearfifo();
|
Net_ClearFifo();
|
||||||
|
|
||||||
// should be unnecessary with the sounds getting serialized as well.
|
// should be unnecessary with the sounds getting serialized as well.
|
||||||
#if 0
|
#if 0
|
||||||
|
|
Loading…
Reference in a new issue