Browse Source

SetMissAnim & SetMissDir (#584)

* Clean up SetMissAnim & SetMissDir

* Use enums for _miAnimType

* Use const for gdwMsgLenTbl & glpMsgTbl
pull/25/head
Anders Jenbo 7 years ago committed by Robin Eklind
parent
commit
b048de798a
  1. 61
      Source/missiles.cpp
  2. 4
      Source/nthread.cpp
  3. 4
      Source/nthread.h
  4. 2
      structs.h

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

4
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

4
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

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

Loading…
Cancel
Save