mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-25 03:00:46 +00:00
- moved the net init code out of the game frontends to avoid having to call atexit for their deinit function.
When doing this during startup it can be done by regular cleanup measures. This also moves two larger chunks of networking code out of game.cpp. Nevertheless, the fact that enet is a very dirty library which directly depends on Windows types is a big problem because it bleeds Windows definitions everywhere thanks to poor abstraction in all relevant layers.
This commit is contained in:
parent
67acad3984
commit
6c5d9c3507
8 changed files with 104 additions and 73 deletions
|
@ -39,6 +39,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
#include "sound.h"
|
||||
#include "view.h"
|
||||
|
||||
extern bool gHaveNetworking;
|
||||
|
||||
BEGIN_BLD_NS
|
||||
|
||||
char packet[576];
|
||||
|
@ -972,7 +974,7 @@ void netInitialize(bool bConsole)
|
|||
netResetToSinglePlayer();
|
||||
return;
|
||||
}
|
||||
if (enet_initialize() != 0)
|
||||
if (!gHaveNetworking)
|
||||
{
|
||||
initprintf("An error occurred while initializing ENet.\n");
|
||||
netResetToSinglePlayer();
|
||||
|
|
|
@ -30,8 +30,13 @@
|
|||
#include "i_specialpaths.h"
|
||||
#include "inputstate.h"
|
||||
#include "c_cvars.h"
|
||||
#ifndef NETCODE_DISABLE
|
||||
#include "enet.h"
|
||||
#endif
|
||||
#include "../../glbackend/glbackend.h"
|
||||
|
||||
bool gHaveNetworking;
|
||||
|
||||
#ifdef USE_OPENGL
|
||||
# include "glbuild.h"
|
||||
# include "glsurface.h"
|
||||
|
@ -447,6 +452,13 @@ int main(int argc, char *argv[])
|
|||
{
|
||||
// Write to the DOCUMENTS directory, not the game directory
|
||||
|
||||
// Initialize the netcode here, because enet pulls in a lot of headers that pollute the namespace.
|
||||
#ifndef NETCODE_DISABLE
|
||||
gHaveNetworking = !enet_initialize();
|
||||
if (!gHaveNetworking)
|
||||
initprintf("An error occurred while initializing ENet.\n");
|
||||
#endif
|
||||
|
||||
FString logpath = M_GetDocumentsPath() + "demolition.log";
|
||||
OSD_SetLogFile(logpath);
|
||||
r = CONFIG_Init();
|
||||
|
@ -461,6 +473,9 @@ int main(int argc, char *argv[])
|
|||
// Just let the rest of the function execute.
|
||||
r = exit.Reason();
|
||||
}
|
||||
#ifndef NETCODE_DISABLE
|
||||
if (gHaveNetworking) enet_deinitialize();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_GTK2)
|
||||
gtkbuild_exit(r);
|
||||
|
|
|
@ -4747,22 +4747,8 @@ void G_HandleLocalKeys(void)
|
|||
}
|
||||
|
||||
G_AddUserQuote(*CombatMacros[ridiculeNum-1]);
|
||||
Net_SendTaunt(ridiculeNum);
|
||||
|
||||
#ifndef NETCODE_DISABLE
|
||||
tempbuf[0] = PACKET_MESSAGE;
|
||||
tempbuf[1] = 255;
|
||||
tempbuf[2] = 0;
|
||||
Bstrcat(tempbuf+2,*CombatMacros[ridiculeNum-1]);
|
||||
|
||||
ridiculeNum = 2+ strlen(*CombatMacros[ridiculeNum-1]);
|
||||
|
||||
tempbuf[ridiculeNum++] = myconnectindex;
|
||||
|
||||
if (g_netClient)
|
||||
enet_peer_send(g_netClientPeer, CHAN_CHAT, enet_packet_create(&tempbuf[0], ridiculeNum, 0));
|
||||
else if (g_netServer)
|
||||
enet_host_broadcast(g_netServer, CHAN_CHAT, enet_packet_create(&tempbuf[0], ridiculeNum, 0));
|
||||
#endif
|
||||
pus = NUMPAGES;
|
||||
pub = NUMPAGES;
|
||||
|
||||
|
@ -4772,19 +4758,7 @@ void G_HandleLocalKeys(void)
|
|||
// Not SHIFT -- that is, either some ALT or WIN.
|
||||
if (G_StartRTS(ridiculeNum, 1))
|
||||
{
|
||||
#ifndef NETCODE_DISABLE
|
||||
if ((g_netServer || ud.multimode > 1))
|
||||
{
|
||||
tempbuf[0] = PACKET_RTS;
|
||||
tempbuf[1] = ridiculeNum;
|
||||
tempbuf[2] = myconnectindex;
|
||||
|
||||
if (g_netClient)
|
||||
enet_peer_send(g_netClientPeer, CHAN_CHAT, enet_packet_create(&tempbuf[0], 3, 0));
|
||||
else if (g_netServer)
|
||||
enet_host_broadcast(g_netServer, CHAN_CHAT, enet_packet_create(&tempbuf[0], 3, 0));
|
||||
}
|
||||
#endif
|
||||
Net_SendRTS(ridiculeNum);
|
||||
pus = NUMPAGES;
|
||||
pub = NUMPAGES;
|
||||
|
||||
|
@ -6245,12 +6219,6 @@ EDUKE32_STATIC_ASSERT(sizeof(DukePlayer_t)%4 == 0);
|
|||
|
||||
int app_main()
|
||||
{
|
||||
#ifndef NETCODE_DISABLE
|
||||
if (enet_initialize() != 0)
|
||||
initprintf("An error occurred while initializing ENet.\n");
|
||||
else atexit(enet_deinitialize);
|
||||
#endif
|
||||
|
||||
OSD_SetFunctions(GAME_drawosdchar,
|
||||
GAME_drawosdstr,
|
||||
GAME_drawosdcursor,
|
||||
|
|
|
@ -5223,6 +5223,40 @@ void Net_NotifyNewGame()
|
|||
// The client didn't load the map until G_EnterLevel
|
||||
}
|
||||
|
||||
|
||||
void Net_SendTaunt(int ridiculeNum)
|
||||
{
|
||||
tempbuf[0] = PACKET_MESSAGE;
|
||||
tempbuf[1] = 255;
|
||||
tempbuf[2] = 0;
|
||||
Bstrcat(tempbuf + 2, *CombatMacros[ridiculeNum - 1]);
|
||||
|
||||
ridiculeNum = 2 + strlen(*CombatMacros[ridiculeNum - 1]);
|
||||
|
||||
tempbuf[ridiculeNum++] = myconnectindex;
|
||||
|
||||
if (g_netClient)
|
||||
enet_peer_send(g_netClientPeer, CHAN_CHAT, enet_packet_create(&tempbuf[0], ridiculeNum, 0));
|
||||
else if (g_netServer)
|
||||
enet_host_broadcast(g_netServer, CHAN_CHAT, enet_packet_create(&tempbuf[0], ridiculeNum, 0));
|
||||
|
||||
}
|
||||
|
||||
void Net_SendRTS(int ridiculeNum)
|
||||
{
|
||||
if ((g_netServer || ud.multimode > 1))
|
||||
{
|
||||
tempbuf[0] = PACKET_RTS;
|
||||
tempbuf[1] = ridiculeNum;
|
||||
tempbuf[2] = myconnectindex;
|
||||
|
||||
if (g_netClient)
|
||||
enet_peer_send(g_netClientPeer, CHAN_CHAT, enet_packet_create(&tempbuf[0], 3, 0));
|
||||
else if (g_netServer)
|
||||
enet_host_broadcast(g_netServer, CHAN_CHAT, enet_packet_create(&tempbuf[0], 3, 0));
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
//-------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -296,6 +296,9 @@ void DumpMapStateHistory();
|
|||
|
||||
void Net_WaitForInitialSnapshot();
|
||||
|
||||
void Net_SendTaunt(int ridiculeNum);
|
||||
void Net_SendRTS(int ridiculeNum);
|
||||
|
||||
#else
|
||||
|
||||
// note: don't include faketimerhandler in this
|
||||
|
@ -345,6 +348,9 @@ void Net_WaitForInitialSnapshot();
|
|||
#define Net_AddWorldToInitialSnapshot(...) ((void)0)
|
||||
#define DumpMapStateHistory(...) ((void)0)
|
||||
|
||||
#define Net_SendTaunt(...) ((void)0)
|
||||
#define Net_SendRTS(...) ((void)0)
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -6260,22 +6260,7 @@ void G_HandleLocalKeys(void)
|
|||
}
|
||||
|
||||
G_AddUserQuote(*CombatMacros[ridiculeNum-1]);
|
||||
|
||||
#ifndef NETCODE_DISABLE
|
||||
tempbuf[0] = PACKET_MESSAGE;
|
||||
tempbuf[1] = 255;
|
||||
tempbuf[2] = 0;
|
||||
Bstrcat(tempbuf+2,*CombatMacros[ridiculeNum-1]);
|
||||
|
||||
ridiculeNum = 2 + strlen(*CombatMacros[ridiculeNum - 1]);
|
||||
|
||||
tempbuf[ridiculeNum++] = myconnectindex;
|
||||
|
||||
if (g_netClient)
|
||||
enet_peer_send(g_netClientPeer, CHAN_CHAT, enet_packet_create(tempbuf, ridiculeNum, 0));
|
||||
else if (g_netServer)
|
||||
enet_host_broadcast(g_netServer, CHAN_CHAT, enet_packet_create(tempbuf, ridiculeNum, 0));
|
||||
#endif
|
||||
Net_SendTaunt(ridiculeNum);
|
||||
pus = NUMPAGES;
|
||||
pub = NUMPAGES;
|
||||
|
||||
|
@ -6285,19 +6270,7 @@ void G_HandleLocalKeys(void)
|
|||
// Not SHIFT -- that is, either some ALT or WIN.
|
||||
if (G_StartRTS(ridiculeNum, 1))
|
||||
{
|
||||
#ifndef NETCODE_DISABLE
|
||||
if ((g_netServer || ud.multimode > 1))
|
||||
{
|
||||
tempbuf[0] = PACKET_RTS;
|
||||
tempbuf[1] = ridiculeNum;
|
||||
tempbuf[2] = myconnectindex;
|
||||
|
||||
if (g_netClient)
|
||||
enet_peer_send(g_netClientPeer, CHAN_CHAT, enet_packet_create(tempbuf, 3, 0));
|
||||
else if (g_netServer)
|
||||
enet_host_broadcast(g_netServer, CHAN_CHAT, enet_packet_create(tempbuf, 3, 0));
|
||||
}
|
||||
#endif
|
||||
Net_SendRTS(ridiculeNum);
|
||||
pus = NUMPAGES;
|
||||
pub = NUMPAGES;
|
||||
|
||||
|
@ -7616,12 +7589,6 @@ EDUKE32_STATIC_ASSERT(sizeof(DukePlayer_t)%4 == 0);
|
|||
int app_main()
|
||||
{
|
||||
playing_rr = 1;
|
||||
#ifndef NETCODE_DISABLE
|
||||
if (enet_initialize() != 0)
|
||||
initprintf("An error occurred while initializing ENet.\n");
|
||||
else atexit(enet_deinitialize);
|
||||
#endif
|
||||
|
||||
OSD_SetFunctions(GAME_drawosdchar,
|
||||
GAME_drawosdstr,
|
||||
GAME_drawosdcursor,
|
||||
|
|
|
@ -4062,6 +4062,39 @@ void Net_ReceiveMapVoteCancel(uint8_t *pbuf)
|
|||
voting = -1;
|
||||
}
|
||||
|
||||
void Net_SendTaunt(int ridiculeNum)
|
||||
{
|
||||
tempbuf[0] = PACKET_MESSAGE;
|
||||
tempbuf[1] = 255;
|
||||
tempbuf[2] = 0;
|
||||
Bstrcat(tempbuf + 2, *CombatMacros[ridiculeNum - 1]);
|
||||
|
||||
ridiculeNum = 2 + strlen(*CombatMacros[ridiculeNum - 1]);
|
||||
|
||||
tempbuf[ridiculeNum++] = myconnectindex;
|
||||
|
||||
if (g_netClient)
|
||||
enet_peer_send(g_netClientPeer, CHAN_CHAT, enet_packet_create(&tempbuf[0], ridiculeNum, 0));
|
||||
else if (g_netServer)
|
||||
enet_host_broadcast(g_netServer, CHAN_CHAT, enet_packet_create(&tempbuf[0], ridiculeNum, 0));
|
||||
|
||||
}
|
||||
|
||||
void Net_SendRTS(int ridiculeNum)
|
||||
{
|
||||
if ((g_netServer || ud.multimode > 1))
|
||||
{
|
||||
tempbuf[0] = PACKET_RTS;
|
||||
tempbuf[1] = ridiculeNum;
|
||||
tempbuf[2] = myconnectindex;
|
||||
|
||||
if (g_netClient)
|
||||
enet_peer_send(g_netClientPeer, CHAN_CHAT, enet_packet_create(&tempbuf[0], 3, 0));
|
||||
else if (g_netServer)
|
||||
enet_host_broadcast(g_netServer, CHAN_CHAT, enet_packet_create(&tempbuf[0], 3, 0));
|
||||
}
|
||||
}
|
||||
|
||||
#endif // !defined NETCODE_DISABLE
|
||||
|
||||
END_RR_NS
|
||||
|
|
|
@ -306,6 +306,9 @@ void Net_Update(void);
|
|||
void Net_PostPacket(ENetPacket *packet);
|
||||
void faketimerhandler(void);
|
||||
|
||||
void Net_SendTaunt(int ridiculeNum);
|
||||
void Net_SendRTS(int ridiculeNum);
|
||||
|
||||
#else
|
||||
|
||||
/* NETCODE_ENABLE is not defined */
|
||||
|
@ -392,6 +395,9 @@ void faketimerhandler(void);
|
|||
|
||||
#define Net_NotifyNewGame(...) ((void)0)
|
||||
|
||||
#define Net_SendTaunt(...) ((void)0)
|
||||
#define Net_SendRTS(...) ((void)0)
|
||||
|
||||
#endif
|
||||
|
||||
END_RR_NS
|
||||
|
|
Loading…
Reference in a new issue