Merge branch 'master' into pet-robo

This commit is contained in:
Sally Coolatta 2020-05-03 23:08:00 -04:00
commit 2dfa20f758
4 changed files with 55 additions and 16 deletions

View file

@ -82,7 +82,7 @@
boolean server = true; // true or false but !server == client boolean server = true; // true or false but !server == client
#define client (!server) #define client (!server)
boolean nodownload = false; boolean nodownload = false;
static boolean serverrunning = false; boolean serverrunning = false;
INT32 serverplayer = 0; INT32 serverplayer = 0;
char motd[254], server_context[8]; // Message of the Day, Unique Context (even without Mumble support) char motd[254], server_context[8]; // Message of the Day, Unique Context (even without Mumble support)

View file

@ -41,6 +41,8 @@ extern SINT8 nodetoplayer4[MAXNETNODES]; // Say the numplayer for this node if a
extern UINT8 playerpernode[MAXNETNODES]; // Used specially for splitscreen extern UINT8 playerpernode[MAXNETNODES]; // Used specially for splitscreen
extern boolean nodeingame[MAXNETNODES]; // Set false as nodes leave game extern boolean nodeingame[MAXNETNODES]; // Set false as nodes leave game
extern boolean serverrunning;
INT32 Net_GetFreeAcks(boolean urgent); INT32 Net_GetFreeAcks(boolean urgent);
void Net_AckTicker(void); void Net_AckTicker(void);

View file

@ -246,7 +246,8 @@ static size_t numbans = 0;
static boolean SOCK_bannednode[MAXNETNODES+1]; /// \note do we really need the +1? static boolean SOCK_bannednode[MAXNETNODES+1]; /// \note do we really need the +1?
static boolean init_tcp_driver = false; static boolean init_tcp_driver = false;
static char port_name[8] = DEFAULTPORT; static const char *serverport_name = DEFAULTPORT;
static const char *clientport_name;/* any port */
#ifndef NONET #ifndef NONET
@ -924,6 +925,7 @@ static boolean UDP_Socket(void)
#ifdef HAVE_IPV6 #ifdef HAVE_IPV6
const INT32 b_ipv6 = M_CheckParm("-ipv6"); const INT32 b_ipv6 = M_CheckParm("-ipv6");
#endif #endif
const char *serv;
for (s = 0; s < mysocketses; s++) for (s = 0; s < mysocketses; s++)
@ -939,11 +941,16 @@ static boolean UDP_Socket(void)
hints.ai_socktype = SOCK_DGRAM; hints.ai_socktype = SOCK_DGRAM;
hints.ai_protocol = IPPROTO_UDP; hints.ai_protocol = IPPROTO_UDP;
if (serverrunning)
serv = serverport_name;
else
serv = clientport_name;
if (M_CheckParm("-bindaddr")) if (M_CheckParm("-bindaddr"))
{ {
while (M_IsNextParm()) while (M_IsNextParm())
{ {
gaie = I_getaddrinfo(M_GetNextParm(), port_name, &hints, &ai); gaie = I_getaddrinfo(M_GetNextParm(), serv, &hints, &ai);
if (gaie == 0) if (gaie == 0)
{ {
runp = ai; runp = ai;
@ -964,7 +971,7 @@ static boolean UDP_Socket(void)
} }
else else
{ {
gaie = I_getaddrinfo("0.0.0.0", port_name, &hints, &ai); gaie = I_getaddrinfo("0.0.0.0", serv, &hints, &ai);
if (gaie == 0) if (gaie == 0)
{ {
runp = ai; runp = ai;
@ -979,8 +986,8 @@ static boolean UDP_Socket(void)
#ifdef HAVE_MINIUPNPC #ifdef HAVE_MINIUPNPC
if (UPNP_support) if (UPNP_support)
{ {
I_UPnP_rem(port_name, "UDP"); I_UPnP_rem(serverport_name, "UDP");
I_UPnP_add(NULL, port_name, "UDP"); I_UPnP_add(NULL, serverport_name, "UDP");
} }
#endif #endif
} }
@ -997,7 +1004,7 @@ static boolean UDP_Socket(void)
{ {
while (M_IsNextParm()) while (M_IsNextParm())
{ {
gaie = I_getaddrinfo(M_GetNextParm(), port_name, &hints, &ai); gaie = I_getaddrinfo(M_GetNextParm(), serv, &hints, &ai);
if (gaie == 0) if (gaie == 0)
{ {
runp = ai; runp = ai;
@ -1018,7 +1025,7 @@ static boolean UDP_Socket(void)
} }
else else
{ {
gaie = I_getaddrinfo("::", port_name, &hints, &ai); gaie = I_getaddrinfo("::", serv, &hints, &ai);
if (gaie == 0) if (gaie == 0)
{ {
runp = ai; runp = ai;
@ -1475,15 +1482,19 @@ boolean I_InitTcpNetwork(void)
if (!I_InitTcpDriver()) if (!I_InitTcpDriver())
return false; return false;
if (M_CheckParm("-port")) if (M_CheckParm("-port") || M_CheckParm("-serverport"))
// Combined -udpport and -clientport into -port // Combined -udpport and -clientport into -port
// As it was really redundant having two seperate parms that does the same thing // As it was really redundant having two seperate parms that does the same thing
/* Sorry Steel, I'm adding these back. But -udpport is a stupid name. */
{ {
if (M_IsNextParm()) /*
strcpy(port_name, M_GetNextParm()); If it's NULL, that's okay! Because then
else we'll get a random port from getaddrinfo.
strcpy(port_name, "0"); */
serverport_name = M_GetNextParm();
} }
if (M_CheckParm("-clientport"))
clientport_name = M_GetNextParm();
// parse network game options, // parse network game options,
if (M_CheckParm("-server") || dedicated) if (M_CheckParm("-server") || dedicated)

View file

@ -8977,13 +8977,39 @@ void P_MobjThinker(mobj_t *mobj)
{ {
if (ticstilimpact <= 8) if (ticstilimpact <= 8)
{ {
newskin = ((skin_t*)mobj->target->skin)-skins; newskin = mobj->target->player->skin;
newcolor = mobj->target->player->skincolor; newcolor = mobj->target->player->skincolor;
} }
else else
{ {
newskin = leveltime % numskins; UINT8 plist[MAXPLAYERS];
newcolor = skins[newskin].prefcolor; UINT8 plistlen = 0;
UINT8 i;
memset(plist, 0, sizeof(plist));
for (i = 0; i < MAXPLAYERS; i++)
{
if (playeringame[i] && !players[i].spectator)
{
plist[plistlen] = i;
plistlen++;
}
}
if (plistlen <= 1)
{
// Default to the winner
newskin = mobj->target->player->skin;
newcolor = mobj->target->player->skincolor;
}
else
{
// Pick another player in the server!
player_t *p = &players[plist[P_RandomKey(plistlen)]];
newskin = p->skin;
newcolor = p->skincolor;
}
} }
} }
} }