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 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;

10
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();

Loading…
Cancel
Save