Browse Source

Move Init/FreeMissileGFX functions alongside MissileSpriteData array definition

Also combined the two free missile graphics functions as they were always called together (just slightly out of order previously).
pull/2820/head
ephphatha 5 years ago committed by Anders Jenbo
parent
commit
6fa3018f05
  1. 8
      Source/diablo.cpp
  2. 18
      Source/misdat.cpp
  3. 3
      Source/misdat.h
  4. 31
      Source/missiles.cpp
  5. 3
      Source/missiles.h
  6. 2
      Source/monster.cpp

8
Source/diablo.cpp

@ -1076,7 +1076,7 @@ void LoadAllGFX()
IncProgress();
InitObjectGFX();
IncProgress();
InitMissileGFX();
InitMissileGFX(gbIsHellfire);
IncProgress();
}
@ -1520,8 +1520,8 @@ void FreeGameMem()
pLevelPieces = nullptr;
pSpecialCels = std::nullopt;
FreeMissiles();
FreeMonsters();
FreeMissileGFX();
FreeObjectGFX();
FreeMonsterSnd();
FreeTownerGFX();
@ -1859,7 +1859,7 @@ void LoadGameLevel(bool firstflag, lvl_entry lvldir)
} else {
IncProgress();
IncProgress();
InitMissileGFX();
InitMissileGFX(gbIsHellfire);
IncProgress();
IncProgress();
}
@ -1958,7 +1958,7 @@ void LoadGameLevel(bool firstflag, lvl_entry lvldir)
IncProgress();
InitMonsters();
IncProgress();
InitMissileGFX();
InitMissileGFX(gbIsHellfire);
IncProgress();
InitCorpses();
IncProgress();

18
Source/misdat.cpp

@ -248,4 +248,22 @@ void MissileFileData::LoadGFX()
}
}
void InitMissileGFX(bool loadHellfireGraphics)
{
for (size_t mi = 0; MissileSpriteData[mi].animFAmt != 0; mi++) {
if (!loadHellfireGraphics && mi > MFILE_SCBSEXPD)
break;
if (MissileSpriteData[mi].flags == MissileDataFlags::MonsterOwned)
continue;
MissileSpriteData[mi].LoadGFX();
}
}
void FreeMissileGFX()
{
for (auto &missileData : MissileSpriteData) {
missileData.FreeGFX();
}
}
} // namespace devilution

3
Source/misdat.h

@ -158,4 +158,7 @@ struct MissileFileData {
extern MissileData MissilesData[];
extern MissileFileData MissileSpriteData[];
void InitMissileGFX(bool loadHellfireGraphics = false);
void FreeMissileGFX();
} // namespace devilution

31
Source/missiles.cpp

@ -1182,37 +1182,6 @@ void SetMissDir(Missile &missile, int dir)
SetMissAnim(missile, missile._miAnimType);
}
void InitMissileGFX()
{
for (int mi = 0; MissileSpriteData[mi].animFAmt != 0; mi++) {
if (!gbIsHellfire && mi > MFILE_SCBSEXPD)
break;
if (MissileSpriteData[mi].flags == MissileDataFlags::MonsterOwned)
continue;
MissileSpriteData[mi].LoadGFX();
}
}
void FreeMissiles()
{
for (int mi = 0; MissileSpriteData[mi].animFAmt != 0; mi++) {
if (MissileSpriteData[mi].flags == MissileDataFlags::MonsterOwned)
continue;
MissileSpriteData[mi].FreeGFX();
}
}
void FreeMissiles2()
{
for (int mi = 0; MissileSpriteData[mi].animFAmt != 0; mi++) {
if (MissileSpriteData[mi].flags != MissileDataFlags::MonsterOwned)
continue;
MissileSpriteData[mi].FreeGFX();
}
}
void InitMissiles()
{
auto &myPlayer = Players[MyPlayerId];

3
Source/missiles.h

@ -139,9 +139,6 @@ void DeleteMissile(int i);
bool MonsterTrapHit(int m, int mindam, int maxdam, int dist, missile_id t, bool shift);
bool PlayerMHit(int pnum, Monster *monster, int dist, int mind, int maxd, missile_id mtype, bool shift, int earflag, bool *blocked);
void SetMissDir(Missile &missile, int dir);
void InitMissileGFX();
void FreeMissiles();
void FreeMissiles2();
void InitMissiles();
void AddHiveExplosion(Missile &missile, Point dst, Direction midir);
void AddFireRune(Missile &missile, Point dst, Direction midir);

2
Source/monster.cpp

@ -4399,8 +4399,6 @@ void FreeMonsters()
}
}
}
FreeMissiles2();
}
bool DirOK(int i, Direction mdir)

Loading…
Cancel
Save