Browse Source

Merge pull request #2 from seritools/monster-refactor

monster.cpp: first cleanups
pull/4/head
Dennis Duda 8 years ago committed by GitHub
parent
commit
ce997eceff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      Source/dead.cpp
  2. 8
      Source/engine.cpp
  3. 2
      Source/engine.h
  4. 1
      Source/gendung.cpp
  5. 11
      Source/missiles.cpp
  6. 2183
      Source/monster.cpp
  7. 8
      Source/monster.h
  8. 7
      Source/player.cpp
  9. 2
      Source/player.h
  10. 6
      Source/quests.cpp
  11. 2
      Source/quests.h
  12. 3
      enums.h
  13. 19
      structs.h

2
Source/dead.cpp

@ -83,7 +83,7 @@ void __cdecl InitDead()
v10 = monster[v9].MType;
v11 = (char *)(v8 - 8);
v15 = (int *)8;
v14 = v10->Anims[4].Frames;
v14 = (int *)v10->Anims[4].Frames;
do
{
v12 = v14;

8
Source/engine.cpp

@ -1950,12 +1950,12 @@ void __fastcall LoadFileWithMem(char *pszName, void *buf)
WCloseFile(a1);
}
void __fastcall Cl2ApplyTrans(char *p, char *ttbl, int last_frame)
void __fastcall Cl2ApplyTrans(unsigned char *p, unsigned char *ttbl, int last_frame)
{
int v3; // eax
int v4; // edi
int v5; // esi
char *v6; // eax
unsigned char *v6; // eax
char v7; // bl
unsigned char v8; // bl
int v9; // edi
@ -1982,7 +1982,7 @@ void __fastcall Cl2ApplyTrans(char *p, char *ttbl, int last_frame)
v9 = v8;
do
{
*v6 = ttbl[(unsigned char)*v6];
*v6 = ttbl[*v6];
++v6;
--v9;
}
@ -1992,7 +1992,7 @@ void __fastcall Cl2ApplyTrans(char *p, char *ttbl, int last_frame)
else
{
--v5;
*v6 = ttbl[(unsigned char)*v6];
*v6 = ttbl[*v6];
++v6;
}
}

2
Source/engine.h

@ -54,7 +54,7 @@ void *__fastcall DiabloAllocPtr(int dwBytes);
void __fastcall mem_free_dbg(void *p);
unsigned char *__fastcall LoadFileInMem(char *pszName, int *pdwFileLen);
void __fastcall LoadFileWithMem(char *pszName, void *buf);
void __fastcall Cl2ApplyTrans(char *p, char *ttbl, int last_frame);
void __fastcall Cl2ApplyTrans(unsigned char *p, unsigned char *ttbl, int last_frame);
void __fastcall Cl2DecodeFrm1(int x, int y, char *pCelBuff, int nCel, int width, int dir1, int dir2);
void __fastcall Cl2DecDatFrm1(char *buffer, char *frame_content, int a3, int width);
void __fastcall Cl2DecodeFrm2(char colour, int screen_x, int screen_y, char *pCelBuff, int nCel, int frame_width, int a7, int a8);

1
Source/gendung.cpp

@ -32,6 +32,7 @@ char nTrapTable[2049];
char leveltype; // weak
unsigned char currlevel; // idb
char TransList[256];
// TODO: probably unsigned char
char nSolidTable[2049];
int level_frame_count[2049];
ScrollStruct ScrollInfo;

11
Source/missiles.cpp

@ -2119,6 +2119,9 @@ void __fastcall SetMissDir(int mi, int dir)
SetMissAnim(mi, _LOBYTE(missile[mi]._miAnimType));
}
// TODO: replace `int mi` parameter with `missile_graphic_id mi`
// to enable the compiler to optimize int to char properly
// check for example the calls in `InitMonsterGFX`
void __fastcall LoadMissileGFX(int mi)
{
MisFileData *v1; // esi
@ -3454,7 +3457,7 @@ void __fastcall AddRhino(int mi, int sx, int sy, int dx, int dy, int midir, int
v13 = i;
missile[v13]._miAnimFlags = 0;
missile[v13]._mimfnum = midir;
missile[v13]._miAnimData = v12->Frames[midir];
missile[v13]._miAnimData = (int)v12->Frames[midir];
missile[v13]._miAnimDelay = v12->Delay;
missile[v13]._miAnimLen = v12->Rate;
v14 = monster[v9].MType;
@ -3494,7 +3497,7 @@ void __fastcall miss_null_32(int mi, int sx, int sy, int dx, int dy, int midir,
v12 = v10;
missile[v12]._mimfnum = midir;
missile[v12]._miAnimFlags = 0;
missile[v12]._miAnimData = v11->Frames[midir];
missile[v12]._miAnimData = (int)v11->Frames[midir];
missile[v12]._miAnimDelay = v11->Delay;
missile[v12]._miAnimLen = v11->Rate;
v13 = monster[id].MType;
@ -6511,7 +6514,7 @@ void __fastcall mi_null_32(int i)
missile[v2]._miyvel = -missile[v2]._miyvel;
v14 = opposite[v13];
missile[v2]._mimfnum = v14;
v15 = monster[v4].MType->Anims[1].Frames[v14];
v15 = (int)monster[v4].MType->Anims[1].Frames[v14];
++missile[v2]._miVar2;
missile[v2]._miAnimData = v15;
if ( v10 > 0 )
@ -7479,7 +7482,7 @@ void __cdecl missiles_process_charge()
{
v7 = &v5->Anims[5];
}
missile[v2]._miAnimData = v7->Frames[v3];
missile[v2]._miAnimData = (int)v7->Frames[v3];
}
}
}

2183
Source/monster.cpp

File diff suppressed because it is too large Load Diff

8
Source/monster.h

@ -17,7 +17,7 @@ extern int uniquetrans;
extern int nummtypes;
void __cdecl monster_cpp_init();
void __fastcall InitMonsterTRN(int monst, int special);
void __fastcall InitMonsterTRN(int monst, BOOL special);
void __cdecl InitLevelMonsters();
int __fastcall AddMonsterType(int type, int placeflag);
void __cdecl GetLevelMTypes();
@ -25,11 +25,11 @@ void __fastcall InitMonsterGFX(int monst);
void __fastcall ClearMVars(int i);
void __fastcall InitMonster(int i, int rd, int mtype, int x, int y);
void __cdecl ClrAllMonsters();
bool __fastcall MonstPlace(int xp, int yp);
BOOL __fastcall MonstPlace(int xp, int yp);
void __fastcall PlaceMonster(int i, int mtype, int x, int y);
void __fastcall PlaceUniqueMonst(int uniqindex, int miniontype, int unpackfilesize);
void __cdecl PlaceQuestMonsters();
void __fastcall PlaceGroup(int mtype, int num, unsigned char leaderf, int leader);
void __fastcall PlaceGroup(int mtype, int num, int leaderf, int leader);
void __cdecl LoadDiabMonsts();
void __cdecl InitMonsters();
void __cdecl PlaceUniques();
@ -150,7 +150,7 @@ void __fastcall MissToMonst(int i, int x, int y);
BOOL __fastcall PosOkMonst(int i, int x, int y);
BOOL __fastcall PosOkMonst2(int i, int x, int y);
BOOL __fastcall PosOkMonst3(int i, int x, int y);
bool __fastcall IsSkel(int mt);
BOOL __fastcall IsSkel(int mt);
bool __fastcall IsGoat(int mt);
int __fastcall M_SpawnSkel(int x, int y, int dir);
void __fastcall ActivateSpawn(int i, int x, int y, int dir);

7
Source/player.cpp

@ -1270,13 +1270,14 @@ void __fastcall InitPlayerLoc(int pnum, bool flag)
}
}
bool __fastcall SolidLoc(int x, int y)
BOOL __fastcall SolidLoc(int x, int y)
{
bool result; // eax
BOOL result; // eax
if ( x < 0 || y < 0 || x >= 112 || y >= 112 )
result = 0;
result = FALSE;
else
// TODO: remove cast when changing nSolidTable to unsigned char
result = (unsigned char)nSolidTable[dPiece[0][y + 112 * x]];
return result;
}

2
Source/player.h

@ -38,7 +38,7 @@ void __fastcall AddPlrMonstExper(int lvl, int exp, char pmask);
void __fastcall InitPlayer(int pnum, bool FirstTime);
void __cdecl InitMultiView();
void __fastcall InitPlayerLoc(int pnum, bool flag);
bool __fastcall SolidLoc(int x, int y);
BOOL __fastcall SolidLoc(int x, int y);
bool __fastcall PlrDirOK(int pnum, int dir);
void __fastcall PlrClrTrans(int x, int y);
void __fastcall PlrDoTrans(int x, int y);

6
Source/quests.cpp

@ -302,16 +302,16 @@ LABEL_10:
}
// 679660: using guessed type char gbMaxPlayers;
bool __fastcall QuestStatus(int i)
BOOL __fastcall QuestStatus(int i)
{
bool result; // al
BOOL result; // al
if ( setlevel
|| currlevel != quests[i]._qlevel
|| !quests[i]._qactive
|| (result = 1, gbMaxPlayers != 1) && !(questlist[i]._qflags & 1) )
{
result = 0;
result = FALSE;
}
return result;
}

2
Source/quests.h

@ -19,7 +19,7 @@ extern int ReturnLvl; // idb
void __cdecl InitQuests();
void __cdecl CheckQuests();
bool __cdecl ForceQuests();
bool __fastcall QuestStatus(int i);
BOOL __fastcall QuestStatus(int i);
void __fastcall CheckQuestKill(int m, unsigned char sendmsg);
void __cdecl DrawButcher();
void __fastcall DrawSkelKing(int q, int x, int y);

3
enums.h

@ -1315,7 +1315,8 @@ enum _monster_id
MT_ADVOCATE = 0x6C,
MT_GOLEM = 0x6D,
MT_DIABLO = 0x6E,
MT_DARKMAGE = 0x6F
MT_DARKMAGE = 0x6F,
NUM_MTYPES
};
enum _speech_id

19
structs.h

@ -139,7 +139,7 @@ struct MonsterData
int flags; // width?
int mType;
char *GraphicType;
int has_special;
BOOL has_special;
char *sndfile;
int snd_special;
int has_trans;
@ -480,8 +480,8 @@ struct MissileStruct
struct AnimStruct
{
int CMem; // [unsigned] char * ??
int Frames[8]; // unsigned char *
unsigned char *CMem;
unsigned char *Frames[8]; // TODO: to CelBuf struct?
int Rate;
int Delay;
};
@ -500,19 +500,22 @@ struct CMonster
unsigned char mAFNum;
char mdeadval;
MonsterData *MData;
void *trans_file;
// A TRN file contains a sequence of colour transitions, represented
// as indexes into a palette. (a 256 byte array of palette indices)
unsigned char *trans_file;
};
struct MonsterStruct
{
int _mMTidx;
int _mmode;
int _mgoal;
unsigned char _mgoal;
int _mgoalvar1;
int _mgoalvar2;
int _mgoalvar3;
int field_18;
int _pathcount;
unsigned char _pathcount;
int _mx;
int _my;
int _mfutx;
@ -560,7 +563,7 @@ struct MonsterStruct
unsigned char _uniqtrans;
char _udeadval;
char mWhoHit;
short mLevel; /* char */
char mLevel;
unsigned short mExp;
unsigned char mHit;
unsigned char mMinDamage;
@ -570,7 +573,7 @@ struct MonsterStruct
unsigned char mMaxDamage2;
char mArmorClass;
char falign_CB;
int mMagicRes; /* ushort */
unsigned short mMagicRes;
int mtalkmsg;
unsigned char leader;
unsigned char leaderflag;

Loading…
Cancel
Save