Browse Source

Fixed InitMonsterGFX, it now actually works!

pull/4/head
Dennis Duda 8 years ago
parent
commit
375d0d469b
  1. 39
      Source/monster.cpp

39
Source/monster.cpp

@ -563,54 +563,51 @@ void __fastcall InitMonsterGFX(int monst)
int mtype = (unsigned char)Monsters[monst].mtype;
char strBuff[256];
MonsterData *pmonsterdata = &monsterdata[mtype];
for ( int anim = 0; anim < 6; anim++ )
{
if ( (animletter[anim] != 's' || pmonsterdata->has_special) && pmonsterdata->Frames )
if ( (animletter[anim] != 's' || monsterdata[mtype].has_special) && monsterdata[mtype].Frames[anim] > 0 )
{
sprintf(strBuff, pmonsterdata->GraphicType, animletter[anim]);
sprintf(strBuff, monsterdata[mtype].GraphicType, animletter[anim]);
Monsters[monst].Anims[anim].CMem = LoadFileInMem(strBuff, NULL);
unsigned char* celBuf = LoadFileInMem(strBuff, NULL);
Monsters[monst].Anims[anim].CMem = celBuf;
if ( Monsters[monst].mtype != MT_GOLEM || (animletter[anim] != 's' && animletter[anim] != 'd') )
{
for ( int i = 0; i < 8; i++ )
{
// TODO: this can probably be cleaned up by defining the CMem structure
Monsters[monst].Anims[anim].Frames[i] =
(unsigned char*)
((int)Monsters[monst].Anims[anim].CMem + ((int *)Monsters[monst].Anims[anim].CMem)[i]);
&celBuf[((int *)celBuf)[i]];
}
}
else
{
for ( int i = 0; i < 8; i++ )
{
Monsters[monst].Anims[anim].Frames[i] = Monsters[monst].Anims[anim].CMem;
Monsters[monst].Anims[anim].Frames[i] = celBuf;
}
}
}
// TODO: either the AnimStruct members have wrong naming or the MonsterData ones it seems
Monsters[monst].Anims[anim].Rate = pmonsterdata->Frames[0];
Monsters[monst].Anims[anim].Delay = pmonsterdata->Rate[0];
Monsters[monst].Anims[anim].Rate = monsterdata[mtype].Frames[anim];
Monsters[monst].Anims[anim].Delay = monsterdata[mtype].Rate[anim];
}
Monsters[monst].MData = pmonsterdata;
Monsters[monst].flags_1 = pmonsterdata->flags;
Monsters[monst].flags_2 = (pmonsterdata->flags - 64) >> 1;
Monsters[monst].mMinHP = pmonsterdata->mMinHP;
Monsters[monst].mMaxHP = pmonsterdata->mMaxHP;
Monsters[monst].has_special = pmonsterdata->has_special;
Monsters[monst].mAFNum = pmonsterdata->mAFNum;
Monsters[monst].MData = &monsterdata[mtype];
Monsters[monst].flags_1 = monsterdata[mtype].flags;
Monsters[monst].flags_2 = (monsterdata[mtype].flags - 64) >> 1;
Monsters[monst].mMinHP = monsterdata[mtype].mMinHP;
Monsters[monst].mMaxHP = monsterdata[mtype].mMaxHP;
Monsters[monst].has_special = monsterdata[mtype].has_special;
Monsters[monst].mAFNum = monsterdata[mtype].mAFNum;
if ( pmonsterdata->has_trans )
if ( monsterdata[mtype].has_trans )
{
Monsters[monst].trans_file = LoadFileInMem(pmonsterdata->TransFile, NULL);
InitMonsterTRN(monst, pmonsterdata->has_special);
Monsters[monst].trans_file = LoadFileInMem(monsterdata[mtype].TransFile, NULL);
InitMonsterTRN(monst, monsterdata[mtype].has_special);
void *trans_file = Monsters[monst].trans_file;
Monsters[monst].trans_file = NULL;

Loading…
Cancel
Save