Gave client address as player_address for all UPID_SYNC packets so clients can properly discover their player number when (re)joining running games. Defined 0xcc as MULTI_PNUM_UNDEF for purpose of uninitialized Multiplayer client slots.
This commit is contained in:
parent
eef3dc03a7
commit
afd70564e5
|
@ -43,6 +43,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
||||||
|
|
||||||
#define MAX_PLAYERS 8u
|
#define MAX_PLAYERS 8u
|
||||||
#define MAX_MULTI_PLAYERS MAX_PLAYERS+3
|
#define MAX_MULTI_PLAYERS MAX_PLAYERS+3
|
||||||
|
#define MULTI_PNUM_UNDEF 0xcc
|
||||||
|
|
||||||
// Initial player stat values
|
// Initial player stat values
|
||||||
#define INITIAL_ENERGY i2f(100) // 100% energy to start
|
#define INITIAL_ENERGY i2f(100) // 100% energy to start
|
||||||
|
|
|
@ -2113,7 +2113,7 @@ void net_udp_send_rejoin_sync(int player_num)
|
||||||
Netgame.level_time = Players[Player_num].time_level;
|
Netgame.level_time = Players[Player_num].time_level;
|
||||||
Netgame.monitor_vector = net_udp_create_monitor_vector();
|
Netgame.monitor_vector = net_udp_create_monitor_vector();
|
||||||
|
|
||||||
net_udp_send_game_info(UDP_sync_player.player.protocol.udp.addr, nullptr, UPID_SYNC);
|
net_udp_send_game_info(UDP_sync_player.player.protocol.udp.addr, &UDP_sync_player.player.protocol.udp.addr, UPID_SYNC);
|
||||||
#if defined(DXX_BUILD_DESCENT_I)
|
#if defined(DXX_BUILD_DESCENT_I)
|
||||||
net_udp_send_door_updates();
|
net_udp_send_door_updates();
|
||||||
#endif
|
#endif
|
||||||
|
@ -2140,7 +2140,7 @@ static void net_udp_resend_sync_due_to_packet_loss()
|
||||||
Netgame.level_time = Players[Player_num].time_level;
|
Netgame.level_time = Players[Player_num].time_level;
|
||||||
Netgame.monitor_vector = net_udp_create_monitor_vector();
|
Netgame.monitor_vector = net_udp_create_monitor_vector();
|
||||||
|
|
||||||
net_udp_send_game_info(UDP_sync_player.player.protocol.udp.addr, nullptr, UPID_SYNC);
|
net_udp_send_game_info(UDP_sync_player.player.protocol.udp.addr, &UDP_sync_player.player.protocol.udp.addr, UPID_SYNC);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void net_udp_add_player(UDP_sequence_packet *p)
|
static void net_udp_add_player(UDP_sequence_packet *p)
|
||||||
|
@ -2421,7 +2421,7 @@ static uint_fast32_t net_udp_prepare_heavy_game_info(const _sockaddr *addr, ubyt
|
||||||
PUT_INTEL_SHORT(buf + len, DXX_VERSION_MINORi); len += 2;
|
PUT_INTEL_SHORT(buf + len, DXX_VERSION_MINORi); len += 2;
|
||||||
PUT_INTEL_SHORT(buf + len, DXX_VERSION_MICROi); len += 2;
|
PUT_INTEL_SHORT(buf + len, DXX_VERSION_MICROi); len += 2;
|
||||||
ubyte &your_index = buf[len++];
|
ubyte &your_index = buf[len++];
|
||||||
your_index = 0xcc;
|
your_index = MULTI_PNUM_UNDEF;
|
||||||
for (int i = 0; i < Netgame.players.size(); i++)
|
for (int i = 0; i < Netgame.players.size(); i++)
|
||||||
{
|
{
|
||||||
memcpy(&buf[len], Netgame.players[i].callsign.buffer(), CALLSIGN_LEN+1); len += CALLSIGN_LEN+1;
|
memcpy(&buf[len], Netgame.players[i].callsign.buffer(), CALLSIGN_LEN+1); len += CALLSIGN_LEN+1;
|
||||||
|
@ -3623,7 +3623,7 @@ void net_udp_read_sync_packet(const uint8_t * data, uint_fast32_t data_len, cons
|
||||||
|
|
||||||
callsign_t temp_callsign = Players[Player_num].callsign;
|
callsign_t temp_callsign = Players[Player_num].callsign;
|
||||||
|
|
||||||
Player_num = -1;
|
Player_num = MULTI_PNUM_UNDEF;
|
||||||
|
|
||||||
range_for (auto &i, Players)
|
range_for (auto &i, Players)
|
||||||
{
|
{
|
||||||
|
@ -3634,7 +3634,7 @@ void net_udp_read_sync_packet(const uint8_t * data, uint_fast32_t data_len, cons
|
||||||
for (int i=0; i<N_players; i++ ) {
|
for (int i=0; i<N_players; i++ ) {
|
||||||
if (i == Netgame.protocol.udp.your_index && Netgame.players[i].callsign == temp_callsign)
|
if (i == Netgame.protocol.udp.your_index && Netgame.players[i].callsign == temp_callsign)
|
||||||
{
|
{
|
||||||
if (Player_num!=-1) {
|
if (Player_num!=MULTI_PNUM_UNDEF) {
|
||||||
Int3(); // Hey, we've found ourselves twice
|
Int3(); // Hey, we've found ourselves twice
|
||||||
Network_status = NETSTAT_MENU;
|
Network_status = NETSTAT_MENU;
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in a new issue