Browse Source

Reorder sync.cpp

pull/914/head
Anders Jenbo 5 years ago
parent
commit
4bd9023bcf
  1. 162
      Source/sync.cpp
  2. 10
      Source/sync.h

162
Source/sync.cpp

@ -11,50 +11,7 @@ WORD sgwLRU[MAXMONSTERS];
int sgnSyncItem; int sgnSyncItem;
int sgnSyncPInv; int sgnSyncPInv;
DWORD sync_all_monsters(const BYTE *pbBuf, DWORD dwMaxLen) static void sync_one_monster()
{
TSyncHeader *pHdr;
int i;
BOOL sync;
if (nummonsters < 1) {
return dwMaxLen;
}
if (dwMaxLen < sizeof(*pHdr) + sizeof(TSyncMonster)) {
return dwMaxLen;
}
pHdr = (TSyncHeader *)pbBuf;
pbBuf += sizeof(*pHdr);
dwMaxLen -= sizeof(*pHdr);
pHdr->bCmd = CMD_SYNCDATA;
pHdr->bLevel = currlevel;
pHdr->wLen = 0;
SyncPlrInv(pHdr);
assert(dwMaxLen <= 0xffff);
sync_one_monster();
for (i = 0; i < nummonsters && dwMaxLen >= sizeof(TSyncMonster); i++) {
sync = FALSE;
if (i < 2) {
sync = sync_monster_active2((TSyncMonster *)pbBuf);
}
if (!sync) {
sync = sync_monster_active((TSyncMonster *)pbBuf);
}
if (!sync) {
break;
}
pbBuf += sizeof(TSyncMonster);
pHdr->wLen += sizeof(TSyncMonster);
dwMaxLen -= sizeof(TSyncMonster);
}
return dwMaxLen;
}
void sync_one_monster()
{ {
int i, m; int i, m;
@ -69,7 +26,19 @@ void sync_one_monster()
} }
} }
BOOL sync_monster_active(TSyncMonster *p) static void sync_monster_pos(TSyncMonster *p, int ndx)
{
p->_mndx = ndx;
p->_mx = monster[ndx]._mx;
p->_my = monster[ndx]._my;
p->_menemy = encode_enemy(ndx);
p->_mdelta = sync_word_6AA708[ndx] > 255 ? 255 : sync_word_6AA708[ndx];
sync_word_6AA708[ndx] = 0xFFFF;
sgwLRU[ndx] = monster[ndx]._msquelch == 0 ? 0xFFFF : 0xFFFE;
}
static BOOL sync_monster_active(TSyncMonster *p)
{ {
int i, m, ndx; int i, m, ndx;
DWORD lru; DWORD lru;
@ -93,19 +62,7 @@ BOOL sync_monster_active(TSyncMonster *p)
return TRUE; return TRUE;
} }
void sync_monster_pos(TSyncMonster *p, int ndx) static BOOL sync_monster_active2(TSyncMonster *p)
{
p->_mndx = ndx;
p->_mx = monster[ndx]._mx;
p->_my = monster[ndx]._my;
p->_menemy = encode_enemy(ndx);
p->_mdelta = sync_word_6AA708[ndx] > 255 ? 255 : sync_word_6AA708[ndx];
sync_word_6AA708[ndx] = 0xFFFF;
sgwLRU[ndx] = monster[ndx]._msquelch == 0 ? 0xFFFF : 0xFFFE;
}
BOOL sync_monster_active2(TSyncMonster *p)
{ {
int i, m, ndx; int i, m, ndx;
DWORD lru; DWORD lru;
@ -133,7 +90,7 @@ BOOL sync_monster_active2(TSyncMonster *p)
return TRUE; return TRUE;
} }
void SyncPlrInv(TSyncHeader *pHdr) static void SyncPlrInv(TSyncHeader *pHdr)
{ {
int ii; int ii;
ItemStruct *pItem; ItemStruct *pItem;
@ -191,41 +148,50 @@ void SyncPlrInv(TSyncHeader *pHdr)
} }
} }
DWORD sync_update(int pnum, const BYTE *pbBuf) DWORD sync_all_monsters(const BYTE *pbBuf, DWORD dwMaxLen)
{ {
TSyncHeader *pHdr; TSyncHeader *pHdr;
WORD wLen; int i;
BOOL sync;
pHdr = (TSyncHeader *)pbBuf;
pbBuf += sizeof(*pHdr);
if (pHdr->bCmd != CMD_SYNCDATA) { if (nummonsters < 1) {
app_fatal("bad sync command"); return dwMaxLen;
}
if (dwMaxLen < sizeof(*pHdr) + sizeof(TSyncMonster)) {
return dwMaxLen;
} }
/// ASSERT: assert(gbBufferMsgs != BUFFER_PROCESS); pHdr = (TSyncHeader *)pbBuf;
pbBuf += sizeof(*pHdr);
dwMaxLen -= sizeof(*pHdr);
if (gbBufferMsgs == 1) { pHdr->bCmd = CMD_SYNCDATA;
return pHdr->wLen + sizeof(*pHdr); pHdr->bLevel = currlevel;
} pHdr->wLen = 0;
if (pnum == myplr) { SyncPlrInv(pHdr);
return pHdr->wLen + sizeof(*pHdr); assert(dwMaxLen <= 0xffff);
} sync_one_monster();
for (wLen = pHdr->wLen; wLen >= sizeof(TSyncMonster); wLen -= sizeof(TSyncMonster)) { for (i = 0; i < nummonsters && dwMaxLen >= sizeof(TSyncMonster); i++) {
if (currlevel == pHdr->bLevel) { sync = FALSE;
sync_monster(pnum, (TSyncMonster *)pbBuf); if (i < 2) {
sync = sync_monster_active2((TSyncMonster *)pbBuf);
}
if (!sync) {
sync = sync_monster_active((TSyncMonster *)pbBuf);
}
if (!sync) {
break;
} }
delta_sync_monster((TSyncMonster *)pbBuf, pHdr->bLevel);
pbBuf += sizeof(TSyncMonster); pbBuf += sizeof(TSyncMonster);
pHdr->wLen += sizeof(TSyncMonster);
dwMaxLen -= sizeof(TSyncMonster);
} }
assert(wLen == 0); return dwMaxLen;
return pHdr->wLen + sizeof(*pHdr);
} }
void sync_monster(int pnum, const TSyncMonster *p) static void sync_monster(int pnum, const TSyncMonster *p)
{ {
int i, ndx, md, mdx, mdy; int i, ndx, md, mdx, mdy;
DWORD delta; DWORD delta;
@ -287,6 +253,40 @@ void sync_monster(int pnum, const TSyncMonster *p)
decode_enemy(ndx, p->_menemy); decode_enemy(ndx, p->_menemy);
} }
DWORD sync_update(int pnum, const BYTE *pbBuf)
{
TSyncHeader *pHdr;
WORD wLen;
pHdr = (TSyncHeader *)pbBuf;
pbBuf += sizeof(*pHdr);
if (pHdr->bCmd != CMD_SYNCDATA) {
app_fatal("bad sync command");
}
/// ASSERT: assert(gbBufferMsgs != BUFFER_PROCESS);
if (gbBufferMsgs == 1) {
return pHdr->wLen + sizeof(*pHdr);
}
if (pnum == myplr) {
return pHdr->wLen + sizeof(*pHdr);
}
for (wLen = pHdr->wLen; wLen >= sizeof(TSyncMonster); wLen -= sizeof(TSyncMonster)) {
if (currlevel == pHdr->bLevel) {
sync_monster(pnum, (TSyncMonster *)pbBuf);
}
delta_sync_monster((TSyncMonster *)pbBuf, pHdr->bLevel);
pbBuf += sizeof(TSyncMonster);
}
assert(wLen == 0);
return pHdr->wLen + sizeof(*pHdr);
}
void sync_init() void sync_init()
{ {
sgnMonsters = 16 * myplr; sgnMonsters = 16 * myplr;

10
Source/sync.h

@ -6,17 +6,7 @@
#ifndef __SYNC_H__ #ifndef __SYNC_H__
#define __SYNC_H__ #define __SYNC_H__
extern WORD sync_word_6AA708[MAXMONSTERS];
extern int sgnMonsters;
extern WORD sgwLRU[MAXMONSTERS];
extern int sgnSyncItem;
DWORD sync_all_monsters(const BYTE *pbBuf, DWORD dwMaxLen); DWORD sync_all_monsters(const BYTE *pbBuf, DWORD dwMaxLen);
void sync_one_monster();
BOOL sync_monster_active(TSyncMonster *p);
void sync_monster_pos(TSyncMonster *p, int ndx);
BOOL sync_monster_active2(TSyncMonster *p);
void SyncPlrInv(TSyncHeader *pHdr);
DWORD sync_update(int pnum, const BYTE *pbBuf); DWORD sync_update(int pnum, const BYTE *pbBuf);
void sync_monster(int pnum, const TSyncMonster *p); void sync_monster(int pnum, const TSyncMonster *p);
void sync_init(); void sync_init();

Loading…
Cancel
Save