diff --git a/Source/sync.cpp b/Source/sync.cpp index 197e8207b..eec751629 100644 --- a/Source/sync.cpp +++ b/Source/sync.cpp @@ -11,50 +11,7 @@ WORD sgwLRU[MAXMONSTERS]; int sgnSyncItem; int sgnSyncPInv; -DWORD sync_all_monsters(const BYTE *pbBuf, DWORD dwMaxLen) -{ - 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() +static void sync_one_monster() { 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; DWORD lru; @@ -93,19 +62,7 @@ BOOL sync_monster_active(TSyncMonster *p) return TRUE; } -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; -} - -BOOL sync_monster_active2(TSyncMonster *p) +static BOOL sync_monster_active2(TSyncMonster *p) { int i, m, ndx; DWORD lru; @@ -133,7 +90,7 @@ BOOL sync_monster_active2(TSyncMonster *p) return TRUE; } -void SyncPlrInv(TSyncHeader *pHdr) +static void SyncPlrInv(TSyncHeader *pHdr) { int ii; 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; - WORD wLen; - - pHdr = (TSyncHeader *)pbBuf; - pbBuf += sizeof(*pHdr); + int i; + BOOL sync; - if (pHdr->bCmd != CMD_SYNCDATA) { - app_fatal("bad sync command"); + if (nummonsters < 1) { + 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) { - return pHdr->wLen + sizeof(*pHdr); - } - if (pnum == myplr) { - return pHdr->wLen + sizeof(*pHdr); - } + pHdr->bCmd = CMD_SYNCDATA; + pHdr->bLevel = currlevel; + pHdr->wLen = 0; + SyncPlrInv(pHdr); + assert(dwMaxLen <= 0xffff); + sync_one_monster(); - for (wLen = pHdr->wLen; wLen >= sizeof(TSyncMonster); wLen -= sizeof(TSyncMonster)) { - if (currlevel == pHdr->bLevel) { - sync_monster(pnum, (TSyncMonster *)pbBuf); + 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; } - delta_sync_monster((TSyncMonster *)pbBuf, pHdr->bLevel); pbBuf += sizeof(TSyncMonster); + pHdr->wLen += sizeof(TSyncMonster); + dwMaxLen -= sizeof(TSyncMonster); } - assert(wLen == 0); - - return pHdr->wLen + sizeof(*pHdr); + return dwMaxLen; } -void sync_monster(int pnum, const TSyncMonster *p) +static void sync_monster(int pnum, const TSyncMonster *p) { int i, ndx, md, mdx, mdy; DWORD delta; @@ -287,6 +253,40 @@ void sync_monster(int pnum, const TSyncMonster *p) 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() { sgnMonsters = 16 * myplr; diff --git a/Source/sync.h b/Source/sync.h index 0ebccaea7..c667998a9 100644 --- a/Source/sync.h +++ b/Source/sync.h @@ -6,17 +6,7 @@ #ifndef __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); -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); void sync_monster(int pnum, const TSyncMonster *p); void sync_init();