From b048de798a8c239b08f8d5f43388d50d51e01f2f Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sat, 26 Jan 2019 17:28:48 +0100 Subject: [PATCH] SetMissAnim & SetMissDir (#584) * Clean up SetMissAnim & SetMissDir * Use enums for _miAnimType * Use const for gdwMsgLenTbl & glpMsgTbl --- Source/missiles.cpp | 61 ++++++++++++++++----------------------------- Source/nthread.cpp | 4 +-- Source/nthread.h | 4 +-- structs.h | 2 +- 4 files changed, 26 insertions(+), 45 deletions(-) diff --git a/Source/missiles.cpp b/Source/missiles.cpp index f23745854..50ae9f1ba 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -1404,7 +1404,7 @@ void __fastcall CheckMissileCol(int i, int mindam, int maxdam, BOOLEAN shift, in maxdam, missile[v8]._mitype, shift, - _LOBYTE(missile[v8]._miAnimType) == 4); + _LOBYTE(missile[v8]._miAnimType) == MFILE_FIREWAL); LABEL_35: if (v17) { if (!(_BYTE)nodel) @@ -1516,42 +1516,23 @@ LABEL_39: void __fastcall SetMissAnim(int mi, int animtype) { - int v2; // ecx - int v3; // esi - int v4; // edi - int v5; // eax - int v6; // edx - int v7; // esi - int v8; // eax - int v9; // eax - unsigned char *v10; // edi - int v11; // eax + int dir = missile[mi]._mimfnum; - v2 = mi; - v3 = missile[v2]._mimfnum; - _LOBYTE(missile[v2]._miAnimType) = animtype; - v4 = misfiledata[animtype].mFlags; - v5 = v3 + 236 * animtype; - v6 = v3 + 59 * animtype; - v7 = misfiledata[0].mAnimDelay[v5]; - v8 = misfiledata[0].mAnimLen[v5]; - missile[v2]._miAnimCnt = 0; - missile[v2]._miAnimLen = v8; - v9 = misfiledata[0].mAnimWidth[v6]; - missile[v2]._miAnimFlags = v4; - v10 = misfiledata[0].mAnimData[v6]; - missile[v2]._miAnimWidth = v9; - v11 = misfiledata[0].mAnimWidth2[v6]; - missile[v2]._miAnimData = v10; - missile[v2]._miAnimDelay = v7; - missile[v2]._miAnimWidth2 = v11; - missile[v2]._miAnimFrame = 1; + missile[mi]._miAnimType = animtype; + missile[mi]._miAnimFlags = misfiledata[animtype].mFlags; + missile[mi]._miAnimData = misfiledata[animtype].mAnimData[dir]; + missile[mi]._miAnimDelay = misfiledata[animtype].mAnimDelay[dir]; + missile[mi]._miAnimLen = misfiledata[animtype].mAnimLen[dir]; + missile[mi]._miAnimWidth = misfiledata[animtype].mAnimWidth[dir]; + missile[mi]._miAnimWidth2 = misfiledata[animtype].mAnimWidth2[dir]; + missile[mi]._miAnimCnt = 0; + missile[mi]._miAnimFrame = 1; } void __fastcall SetMissDir(int mi, int dir) { missile[mi]._mimfnum = dir; - SetMissAnim(mi, _LOBYTE(missile[mi]._miAnimType)); + SetMissAnim(mi, missile[mi]._miAnimType); } // TODO: replace `int mi` parameter with `missile_graphic_id mi` @@ -2292,7 +2273,7 @@ void __fastcall AddWeapexp(int mi, int sx, int sy, int dx, int dy, int midir, in missile[v9]._miVar2 = dx; missile[v9]._mimfnum = 0; if (dx == 1) - SetMissAnim(mi, 5); + SetMissAnim(mi, MFILE_MAGBLOS); else SetMissAnim(mi, MFILE_MINILTNG); missile[v9]._mirange = missile[v9]._miAnimLen - 1; @@ -3981,7 +3962,7 @@ void __fastcall MI_LArrow(int i) v2 = missile[i]._miAnimType; --missile[v1]._mirange; v3 = missile[i]._misource; - if (v2 == 26 || v2 == 5) { + if (v2 == MFILE_MINILTNG || v2 == MFILE_MAGBLOS) { ChangeLight(missile[v1]._mlid, missile[v1]._mix, missile[v1]._miy, missile[v1]._miAnimFrame + 5); v18 = missiledata[missile[v1]._mitype].mResist; v32 = missiledata[missile[v1]._mitype].mResist; @@ -4057,7 +4038,7 @@ void __fastcall MI_LArrow(int i) missile[v1]._mityoff -= v14; GetMissilePos(ia); if (missile[v1]._mitype == MIS_LARROW) - SetMissAnim(ia, 26); + SetMissAnim(ia, MFILE_MINILTNG); else SetMissAnim(ia, MFILE_MAGBLOS); missile[v1]._mirange = missile[v1]._miAnimLen - 1; @@ -4457,7 +4438,7 @@ void __fastcall MI_Fireball(int i) } fx = v7; fy = v8; - if (_LOBYTE(missile[v1]._miAnimType) == 19) { + if (_LOBYTE(missile[v1]._miAnimType) == MFILE_KRULL) { if (!v4) { v10 = missile[v1]._mlid; missile[v1]._miDelFlag = 1; @@ -5391,7 +5372,7 @@ void __fastcall MI_Stone(int i) v2 = missile[i]._miVar2; --missile[v1]._mirange; v3 = v2; - if (!monster[v3]._mhitpoints && _LOBYTE(missile[v1]._miAnimType) != 18) { + if (!monster[v3]._mhitpoints && _LOBYTE(missile[v1]._miAnimType) != MFILE_MAGBALL) { missile[v1]._mimfnum = 0; missile[v1]._miDrawFlag = TRUE; SetMissAnim(i, MFILE_SHATTER1); @@ -5407,7 +5388,7 @@ void __fastcall MI_Stone(int i) else monster[v3]._mmode = missile[v1]._miVar1; } - if (_LOBYTE(missile[v1]._miAnimType) == 18) + if (_LOBYTE(missile[v1]._miAnimType) == MFILE_MAGBALL) PutMissile(ia); } else { missile[v1]._miDelFlag = 1; @@ -5965,7 +5946,7 @@ void __fastcall MI_Cbolt(int i) ia = i; v1 = i; --missile[v1]._mirange; - v2 = _LOBYTE(missile[i]._miAnimType) == 3; + v2 = _LOBYTE(missile[i]._miAnimType) == MFILE_LGHNING; bpath[0] = -1; bpath[1] = 0; bpath[2] = 1; @@ -6038,7 +6019,7 @@ void __fastcall MI_Hbolt(int i) v1 = i; v2 = i; --missile[v2]._mirange; - if (_LOBYTE(missile[i]._miAnimType) == 28) { + if (_LOBYTE(missile[i]._miAnimType) == MFILE_HOLYEXPL) { ChangeLight(missile[v2]._mlid, missile[v2]._mix, missile[v2]._miy, missile[v2]._miAnimFrame + 7); if (!missile[v2]._mirange) { v7 = missile[v2]._mlid; @@ -6105,7 +6086,7 @@ void __fastcall MI_Element(int i) --missile[v1]._mirange; v2 = missile[i]._midam; ty = missile[i]._misource; - if (_LOBYTE(missile[i]._miAnimType) == 19) { + if (_LOBYTE(missile[i]._miAnimType) == MFILE_KRULL) { v3 = missile[i]._misource; v4 = missile[v1]._mix; y = missile[v1]._miy; diff --git a/Source/nthread.cpp b/Source/nthread.cpp index cb298ed87..3e1dd4f38 100644 --- a/Source/nthread.cpp +++ b/Source/nthread.cpp @@ -3,12 +3,12 @@ #include "../types.h" char byte_679704; // weak -int gdwMsgLenTbl[4]; +int gdwMsgLenTbl[MAX_PLRS]; static CRITICAL_SECTION sgMemCrit; int gdwDeltaBytesSec; // weak char nthread_should_run; // weak DWORD gdwTurnsInTransit; // weak -int glpMsgTbl[4]; +int glpMsgTbl[MAX_PLRS]; unsigned int glpNThreadId; char sgbSyncCountdown; // weak int turn_upper_bit; // weak diff --git a/Source/nthread.h b/Source/nthread.h index bbb48941f..9a573d45c 100644 --- a/Source/nthread.h +++ b/Source/nthread.h @@ -3,11 +3,11 @@ #define __NTHREAD_H__ extern char byte_679704; // weak -extern int gdwMsgLenTbl[4]; +extern int gdwMsgLenTbl[MAX_PLRS]; extern int gdwDeltaBytesSec; // weak extern char nthread_should_run; // weak extern DWORD gdwTurnsInTransit; // weak -extern int glpMsgTbl[4]; +extern int glpMsgTbl[MAX_PLRS]; extern unsigned int glpNThreadId; extern int turn_upper_bit; // weak extern char byte_679758; // weak diff --git a/structs.h b/structs.h index 27851c6a4..767d282f8 100644 --- a/structs.h +++ b/structs.h @@ -402,7 +402,7 @@ typedef struct MissileStruct { int _mimfnum; int _mispllvl; int _miDelFlag; - int _miAnimType; + BYTE _miAnimType; int _miAnimFlags; unsigned char *_miAnimData; int _miAnimDelay;