Browse Source

Clean up SyncMonsterAnim.

pull/114/head
Sergey Semushin 7 years ago
parent
commit
0549fc189e
  1. 102
      Source/monster.cpp

102
Source/monster.cpp

@ -4703,7 +4703,7 @@ BOOL DirOK(int i, int mdir)
if (mdir == DIR_W) {
if (SolidLoc(fx + 1, fy) || dFlags[fx + 1][fy] & DFLAG_MONSTER)
return FALSE;
}
}
if (mdir == DIR_N) {
if (SolidLoc(fx + 1, fy) || SolidLoc(fx, fy + 1))
return FALSE;
@ -4920,82 +4920,72 @@ BOOL LineClearF1(BOOL(*Clear)(int, int, int), int monst, int x1, int y1, int x2,
void SyncMonsterAnim(int i)
{
int v1; // esi
int v2; // eax
int v3; // edx
MonsterData *v4; // esi
CMonster *v5; // ecx
unsigned char v6; // dl
char *v7; // edx
int v8; // esi
int v9; // edx
unsigned char *v10; // ecx
unsigned char *v11; // edx
int v12; // ecx
unsigned char *v13; // edx
v1 = i;
MonsterData *MData;
CMonster *cmonst;
unsigned char _uniqtype;
int _mdir;
MonsterStruct *Monst;
if ((DWORD)i >= MAXMONSTERS)
app_fatal("SyncMonsterAnim: Invalid monster %d", i);
v2 = v1;
v3 = monster[v1]._mMTidx;
v4 = Monsters[v3].MData;
v5 = &Monsters[v3];
v6 = monster[v2]._uniqtype;
monster[v2].MType = v5;
monster[v2].MData = v4;
if (v6 != 0)
v7 = UniqMonst[v6 - 1].mName;
Monst = monster + i;
Monst->MType = Monsters + Monst->_mMTidx;
MData = Monsters[Monst->_mMTidx].MData;
Monst->MData = MData;
if (Monst->_uniqtype != 0)
Monst->mName = UniqMonst[Monst->_uniqtype - 1].mName;
else
v7 = v4->mName;
v8 = monster[v2]._mmode;
monster[v2].mName = v7;
v9 = monster[v2]._mdir;
switch (v8) {
case MM_STAND:
case MM_DELAY:
case MM_TALK:
v10 = v5->Anims[MA_STAND].Data[v9];
goto LABEL_13;
Monst->mName = MData->mName;
_mdir = monster[i]._mdir;
switch (Monst->_mmode) {
case MM_WALK:
case MM_WALK2:
case MM_WALK3:
v10 = v5->Anims[MA_WALK].Data[v9];
goto LABEL_13;
Monst->_mAnimData = Monst->MType->Anims[MA_WALK].Data[_mdir];
return;
case MM_ATTACK:
case MM_RATTACK:
v10 = v5->Anims[MA_ATTACK].Data[v9];
goto LABEL_13;
Monst->_mAnimData = Monst->MType->Anims[MA_ATTACK].Data[_mdir];
return;
case MM_GOTHIT:
v10 = v5->Anims[MA_GOTHIT].Data[v9];
goto LABEL_13;
Monst->_mAnimData = Monst->MType->Anims[MA_GOTHIT].Data[_mdir];
return;
case MM_DEATH:
v10 = v5->Anims[MA_DEATH].Data[v9];
goto LABEL_13;
Monst->_mAnimData = Monst->MType->Anims[MA_DEATH].Data[_mdir];
return;
case MM_SATTACK:
case MM_FADEIN:
case MM_FADEOUT:
Monst->_mAnimData = Monst->MType->Anims[MA_SPECIAL].Data[_mdir];
return;
case MM_SPSTAND:
case MM_RSPATTACK:
Monst->_mAnimData = Monst->MType->Anims[MA_SPECIAL].Data[_mdir];
return;
case MM_HEAL:
v10 = v5->Anims[MA_SPECIAL].Data[v9];
LABEL_13:
monster[v2]._mAnimData = v10;
Monst->_mAnimData = Monst->MType->Anims[MA_SPECIAL].Data[_mdir];
return;
case MM_STAND:
Monst->_mAnimData = Monst->MType->Anims[MA_STAND].Data[_mdir];
return;
case MM_DELAY:
Monst->_mAnimData = Monst->MType->Anims[MA_STAND].Data[_mdir];
return;
case MM_TALK:
Monst->_mAnimData = Monst->MType->Anims[MA_STAND].Data[_mdir];
return;
case MM_CHARGE:
v11 = v5->Anims[MA_ATTACK].Data[v9];
monster[v2]._mAnimFrame = 1;
monster[v2]._mAnimData = v11;
v12 = v5->Anims[MA_ATTACK].Frames;
Monst->_mAnimData = Monst->MType->Anims[MA_ATTACK].Data[_mdir];
Monst->_mAnimFrame = 1;
Monst->_mAnimLen = Monst->MType->Anims[MA_ATTACK].Frames;
break;
default:
v13 = v5->Anims[MA_STAND].Data[v9];
monster[v2]._mAnimFrame = 1;
monster[v2]._mAnimData = v13;
v12 = v5->Anims[MA_STAND].Frames;
Monst->_mAnimData = Monst->MType->Anims[MA_STAND].Data[_mdir];
Monst->_mAnimFrame = 1;
Monst->_mAnimLen = Monst->MType->Anims[MA_STAND].Frames;
break;
}
monster[v2]._mAnimLen = v12;
}
void M_FallenFear(int x, int y)
@ -5097,7 +5087,7 @@ void PrintMonstHistory(int mt)
tempstr[strlen(tempstr) - 1] = '\0';
AddPanelString(tempstr, 1);
}
}
}
}
pinfoflag = 1;
}

Loading…
Cancel
Save