Factor some duplicate code into Net_SpawnPlayer(), adjust Net_ExtractPlayerUpdate() a bit.

git-svn-id: https://svn.eduke32.com/eduke32@3994 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
terminx 2013-08-06 23:54:09 +00:00
parent 3391de39be
commit 67d786f48f
3 changed files with 26 additions and 29 deletions

View file

@ -1014,20 +1014,8 @@ static int32_t VM_ResetPlayer(int32_t g_p, int32_t g_flags)
#ifndef NETCODE_DISABLE #ifndef NETCODE_DISABLE
if (g_netServer) if (g_netServer)
{ {
int32_t jj = 0;
P_ResetPlayer(g_p); P_ResetPlayer(g_p);
Net_SpawnPlayer(g_p);
packbuf[jj++] = PACKET_PLAYER_SPAWN;
packbuf[jj++] = g_p;
Bmemcpy(&packbuf[jj], &g_player[g_p].ps->pos.x, sizeof(vec3_t) * 2);
jj += sizeof(vec3_t) * 2;
packbuf[jj++] = 0;
enet_host_broadcast(g_netServer, CHAN_GAMESTATE, enet_packet_create(
packbuf, jj, ENET_PACKET_FLAG_RELIABLE));
} }
#endif #endif
} }

View file

@ -164,6 +164,20 @@ void Net_SyncPlayer(ENetEvent *event)
Net_SendNewGame(0, event->peer); Net_SendNewGame(0, event->peer);
} }
void Net_SpawnPlayer(int32_t player)
{
int32_t j = 0;
packbuf[j++] = PACKET_PLAYER_SPAWN;
packbuf[j++] = player;
Bmemcpy(&packbuf[j], &g_player[player].ps->pos.x, sizeof(vec3_t) * 2);
j += sizeof(vec3_t) * 2;
packbuf[j++] = 0;
enet_host_broadcast(g_netServer, CHAN_GAMESTATE, enet_packet_create(packbuf, j, ENET_PACKET_FLAG_RELIABLE));
}
static void display_betascreen(void) static void display_betascreen(void)
{ {
rotatesprite_fs(0,0,65536,0,BETASCREEN,0,0,2+8+16+64); rotatesprite_fs(0,0,65536,0,BETASCREEN,0,0,2+8+16+64);
@ -549,17 +563,8 @@ void Net_ParseClientPacket(ENetEvent *event)
actor[g_player[other].ps->i].t_data[2] = actor[g_player[other].ps->i].t_data[3] = actor[g_player[other].ps->i].t_data[4] = 0; actor[g_player[other].ps->i].t_data[2] = actor[g_player[other].ps->i].t_data[3] = actor[g_player[other].ps->i].t_data[4] = 0;
P_ResetPlayer(other); P_ResetPlayer(other);
Net_SpawnPlayer(other);
j = 0;
packbuf[j++] = PACKET_PLAYER_SPAWN;
packbuf[j++] = other;
Bmemcpy(&packbuf[j], &g_player[other].ps->pos.x, sizeof(vec3_t) * 2);
j += sizeof(vec3_t) * 2;
packbuf[j++] = 0;
enet_host_broadcast(g_netServer, CHAN_GAMESTATE, enet_packet_create(packbuf, j, ENET_PACKET_FLAG_RELIABLE));
break; break;
case PACKET_PLAYER_PING: case PACKET_PLAYER_PING:
@ -1422,7 +1427,7 @@ void Net_FillPlayerUpdate(playerupdate_t *update, int32_t player)
update->playerquitflag = g_player[player].playerquitflag; update->playerquitflag = g_player[player].playerquitflag;
} }
void Net_ExtractPlayerUpdate(playerupdate_t *update) void Net_ExtractPlayerUpdate(playerupdate_t *update, int32_t type)
{ {
const int32_t playerindex = update->playerindex; const int32_t playerindex = update->playerindex;
@ -1436,9 +1441,12 @@ void Net_ExtractPlayerUpdate(playerupdate_t *update)
g_player[playerindex].ps->horizoff = update->horizoff; g_player[playerindex].ps->horizoff = update->horizoff;
} }
if (type == PACKET_MASTER_TO_SLAVE)
{
g_player[playerindex].ping = update->ping; g_player[playerindex].ping = update->ping;
g_player[playerindex].ps->dead_flag = update->deadflag; g_player[playerindex].ps->dead_flag = update->deadflag;
g_player[playerindex].playerquitflag = update->playerquitflag; g_player[playerindex].playerquitflag = update->playerquitflag;
}
//updatesectorz(g_player[other].ps->pos.x, g_player[other].ps->pos.y, g_player[other].ps->pos.z, &g_player[other].ps->cursectnum); //updatesectorz(g_player[other].ps->pos.x, g_player[other].ps->pos.y, g_player[other].ps->pos.z, &g_player[other].ps->cursectnum);
//changespritesect(g_player[other].ps->i, g_player[other].ps->cursectnum); //changespritesect(g_player[other].ps->i, g_player[other].ps->cursectnum);
@ -1588,7 +1596,7 @@ void Net_ReceiveServerUpdate(ENetEvent *event)
Bmemcpy(&playerupdate, updatebuf, sizeof(serverplayerupdate_t)); Bmemcpy(&playerupdate, updatebuf, sizeof(serverplayerupdate_t));
updatebuf += sizeof(serverplayerupdate_t); updatebuf += sizeof(serverplayerupdate_t);
Net_ExtractPlayerUpdate(&playerupdate.player); Net_ExtractPlayerUpdate(&playerupdate.player, PACKET_MASTER_TO_SLAVE);
g_player[i].ps->gotweapon = playerupdate.gotweapon; g_player[i].ps->gotweapon = playerupdate.gotweapon;
sprite[g_player[i].ps->i].extra = playerupdate.extra; sprite[g_player[i].ps->i].extra = playerupdate.extra;
@ -1656,7 +1664,7 @@ void Net_ReceiveClientUpdate(ENetEvent *event)
g_player[playeridx].revision = update.revision; g_player[playeridx].revision = update.revision;
inputfifo[0][playeridx] = update.nsyn; inputfifo[0][playeridx] = update.nsyn;
Net_ExtractPlayerUpdate(&update.player); Net_ExtractPlayerUpdate(&update.player, PACKET_SLAVE_TO_MASTER);
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////

View file

@ -247,6 +247,7 @@ void Net_RecieveMapVoteCancel(uint8_t *pbuf);
////////// //////////
void Net_ResetPrediction(void); void Net_ResetPrediction(void);
void Net_SpawnPlayer(int32_t player);
void Net_SyncPlayer(ENetEvent *event); void Net_SyncPlayer(ENetEvent *event);
void Net_WaitForServer(void); void Net_WaitForServer(void);
void faketimerhandler(void); void faketimerhandler(void);