*** empty log message ***

git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@758 e016b1c5-ed68-44aa-a2f7-31cac88cffde
This commit is contained in:
Lee Salzman
2006-12-02 22:11:45 +00:00
parent 1d5fd74975
commit e8270ae11c
+12 -11
View File
@@ -43,7 +43,6 @@ struct client // server side version of "dynent" type
bool ismaster;
bool isauthed; // for passworded servers
vector<uchar> position, messages;
int positionoffset, messageoffset;
void reset()
{
@@ -105,27 +104,29 @@ static bool reliablemessages = false;
bool buildworldstate()
{
static struct { int posoff, msgoff, msglen; } pkt[MAXCLIENTS];
worldstate &ws = *new worldstate;
loopv(clients)
{
client &c = *clients[i];
if(c.type!=ST_TCPIP) continue;
if(c.position.empty()) c.positionoffset = -1;
if(c.position.empty()) pkt[i].posoff = -1;
else
{
c.positionoffset = ws.positions.length();
pkt[i].posoff = ws.positions.length();
loopvj(c.position) ws.positions.add(c.position[j]);
};
if(c.messages.empty()) c.messageoffset = -1;
if(c.messages.empty()) pkt[i].msgoff = -1;
else
{
c.messageoffset = ws.messages.length();
pkt[i].msgoff = ws.messages.length();
ucharbuf p = ws.messages.reserve(16);
putint(p, SV_CLIENT);
putint(p, c.clientnum);
putuint(p, c.messages.length());
ws.messages.addbuf(p);
loopvj(c.messages) ws.messages.add(c.messages[j]);
pkt[i].msglen = ws.messages.length()-pkt[i].msgoff;
};
};
int psize = ws.positions.length(), msize = ws.messages.length();
@@ -137,10 +138,10 @@ bool buildworldstate()
client &c = *clients[i];
if(c.type!=ST_TCPIP) continue;
ENetPacket *packet;
if(psize && (c.positionoffset<0 || psize-c.position.length()>0))
if(psize && (pkt[i].posoff<0 || psize-c.position.length()>0))
{
packet = enet_packet_create(&ws.positions[c.positionoffset<0 ? 0 : c.positionoffset+c.position.length()],
c.positionoffset<0 ? psize : psize-c.position.length(),
packet = enet_packet_create(&ws.positions[pkt[i].posoff<0 ? 0 : pkt[i].posoff+c.position.length()],
pkt[i].posoff<0 ? psize : psize-c.position.length(),
ENET_PACKET_FLAG_NO_ALLOCATE);
sendpacket(c.clientnum, 0, packet);
if(!packet->referenceCount) enet_packet_destroy(packet);
@@ -148,10 +149,10 @@ bool buildworldstate()
};
c.position.setsizenodelete(0);
if(msize && (c.messageoffset<0 || msize-3-c.messages.length()>0))
if(msize && (pkt[i].msgoff<0 || msize-pkt[i].msglen>0))
{
packet = enet_packet_create(&ws.messages[c.messageoffset<0 ? 0 : c.messageoffset+3+c.messages.length()],
c.messageoffset<0 ? msize : msize-3-c.messages.length(),
packet = enet_packet_create(&ws.messages[pkt[i].msgoff<0 ? 0 : pkt[i].msgoff+pkt[i].msglen],
pkt[i].msgoff<0 ? msize : msize-pkt[i].msglen,
(reliablemessages ? ENET_PACKET_FLAG_RELIABLE : 0) | ENET_PACKET_FLAG_NO_ALLOCATE);
sendpacket(c.clientnum, 1, packet);
if(!packet->referenceCount) enet_packet_destroy(packet);