Browse Source

🚚 Rename 'Dead' concept to 'Corpse' everywhere (#2808)

pull/2812/head
Juliano Leal Goncalves 5 years ago committed by GitHub
parent
commit
0d3d4c14f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 38
      Source/dead.cpp
  2. 10
      Source/dead.h
  3. 6
      Source/diablo.cpp
  4. 4
      Source/gendung.cpp
  5. 2
      Source/gendung.h
  6. 8
      Source/loadsave.cpp
  7. 2
      Source/missiles.cpp
  8. 12
      Source/monster.cpp
  9. 4
      Source/msg.cpp
  10. 4
      Source/objects.cpp
  11. 2
      Source/player.cpp
  12. 4
      Source/scrollrt.cpp
  13. 12
      test/dead_test.cpp

38
Source/dead.cpp

@ -12,22 +12,22 @@
namespace devilution { namespace devilution {
DeadStruct Dead[MaxDead]; Corpse Corpses[MaxCorpses];
int8_t stonendx; int8_t stonendx;
namespace { namespace {
void InitDeadAnimationFromMonster(DeadStruct &dead, const CMonster &mon) void InitDeadAnimationFromMonster(Corpse &corpse, const CMonster &mon)
{ {
int i = 0; int i = 0;
const auto &animData = mon.GetAnimData(MonsterGraphic::Death); const auto &animData = mon.GetAnimData(MonsterGraphic::Death);
for (const auto &celSprite : animData.CelSpritesForDirections) for (const auto &celSprite : animData.CelSpritesForDirections)
dead.data[i++] = celSprite->Data(); corpse.data[i++] = celSprite->Data();
dead.frame = animData.Frames; corpse.frame = animData.Frames;
dead.width = animData.CelSpritesForDirections[0]->Width(); corpse.width = animData.CelSpritesForDirections[0]->Width();
} }
} // namespace } // namespace
void InitDead() void InitCorpses()
{ {
int8_t mtypes[MAXMONSTERS] = {}; int8_t mtypes[MAXMONSTERS] = {};
@ -37,8 +37,8 @@ void InitDead()
if (mtypes[LevelMonsterTypes[i].mtype] != 0) if (mtypes[LevelMonsterTypes[i].mtype] != 0)
continue; continue;
InitDeadAnimationFromMonster(Dead[nd], LevelMonsterTypes[i]); InitDeadAnimationFromMonster(Corpses[nd], LevelMonsterTypes[i]);
Dead[nd].translationPaletteIndex = 0; Corpses[nd].translationPaletteIndex = 0;
nd++; nd++;
LevelMonsterTypes[i].mdeadval = nd; LevelMonsterTypes[i].mdeadval = nd;
@ -47,12 +47,12 @@ void InitDead()
nd++; // Unused blood spatter nd++; // Unused blood spatter
for (auto &dead : Dead[nd].data) for (auto &corpse : Corpses[nd].data)
dead = MissileSpriteData[MFILE_SHATTER1].animData[0].get(); corpse = MissileSpriteData[MFILE_SHATTER1].animData[0].get();
Dead[nd].frame = 12; Corpses[nd].frame = 12;
Dead[nd].width = 128; Corpses[nd].width = 128;
Dead[nd].translationPaletteIndex = 0; Corpses[nd].translationPaletteIndex = 0;
nd++; nd++;
stonendx = nd; stonendx = nd;
@ -60,20 +60,20 @@ void InitDead()
for (int i = 0; i < ActiveMonsterCount; i++) { for (int i = 0; i < ActiveMonsterCount; i++) {
auto &monster = Monsters[ActiveMonsters[i]]; auto &monster = Monsters[ActiveMonsters[i]];
if (monster._uniqtype != 0) { if (monster._uniqtype != 0) {
InitDeadAnimationFromMonster(Dead[nd], *monster.MType); InitDeadAnimationFromMonster(Corpses[nd], *monster.MType);
Dead[nd].translationPaletteIndex = monster._uniqtrans + 4; Corpses[nd].translationPaletteIndex = monster._uniqtrans + 4;
nd++; nd++;
monster._udeadval = nd; monster._udeadval = nd;
} }
} }
assert(static_cast<unsigned>(nd) <= MaxDead); assert(static_cast<unsigned>(nd) <= MaxCorpses);
} }
void AddDead(Point tilePosition, int8_t dv, Direction ddir) void AddCorpse(Point tilePosition, int8_t dv, Direction ddir)
{ {
dDead[tilePosition.x][tilePosition.y] = (dv & 0x1F) + (ddir << 5); dCorpse[tilePosition.x][tilePosition.y] = (dv & 0x1F) + (ddir << 5);
} }
void SyncUniqDead() void SyncUniqDead()
@ -84,7 +84,7 @@ void SyncUniqDead()
continue; continue;
for (int dx = 0; dx < MAXDUNX; dx++) { for (int dx = 0; dx < MAXDUNX; dx++) {
for (int dy = 0; dy < MAXDUNY; dy++) { for (int dy = 0; dy < MAXDUNY; dy++) {
if ((dDead[dx][dy] & 0x1F) == monster._udeadval) if ((dCorpse[dx][dy] & 0x1F) == monster._udeadval)
ChangeLightXY(monster.mlid, { dx, dy }); ChangeLightXY(monster.mlid, { dx, dy });
} }
} }

10
Source/dead.h

@ -13,20 +13,20 @@
namespace devilution { namespace devilution {
static constexpr unsigned MaxDead = 31; static constexpr unsigned MaxCorpses = 31;
struct DeadStruct { struct Corpse {
std::array<const byte *, 8> data; std::array<const byte *, 8> data;
int frame; int frame;
int width; int width;
uint8_t translationPaletteIndex; uint8_t translationPaletteIndex;
}; };
extern DeadStruct Dead[MaxDead]; extern Corpse Corpses[MaxCorpses];
extern int8_t stonendx; extern int8_t stonendx;
void InitDead(); void InitCorpses();
void AddDead(Point tilePosition, int8_t dv, Direction ddir); void AddCorpse(Point tilePosition, int8_t dv, Direction ddir);
void SyncUniqDead(); void SyncUniqDead();
} // namespace devilution } // namespace devilution

6
Source/diablo.cpp

@ -1909,7 +1909,7 @@ void LoadGameLevel(bool firstflag, lvl_entry lvldir)
IncProgress(); IncProgress();
uint32_t mid3Seed = GetLCGEngineState(); uint32_t mid3Seed = GetLCGEngineState();
InitMissiles(); InitMissiles();
InitDead(); InitCorpses();
#if _DEBUG #if _DEBUG
SetDebugLevelSeedInfos(mid1Seed, mid2Seed, mid3Seed, GetLCGEngineState()); SetDebugLevelSeedInfos(mid1Seed, mid2Seed, mid3Seed, GetLCGEngineState());
#endif #endif
@ -1923,7 +1923,7 @@ void LoadGameLevel(bool firstflag, lvl_entry lvldir)
HoldThemeRooms(); HoldThemeRooms();
InitMonsters(); InitMonsters();
InitMissiles(); InitMissiles();
InitDead(); InitCorpses();
IncProgress(); IncProgress();
LoadLevel(); LoadLevel();
IncProgress(); IncProgress();
@ -1960,7 +1960,7 @@ void LoadGameLevel(bool firstflag, lvl_entry lvldir)
IncProgress(); IncProgress();
InitMissileGFX(); InitMissileGFX();
IncProgress(); IncProgress();
InitDead(); InitCorpses();
IncProgress(); IncProgress();
FillSolidBlockTbls(); FillSolidBlockTbls();
IncProgress(); IncProgress();

4
Source/gendung.cpp

@ -52,7 +52,7 @@ char dPreLight[MAXDUNX][MAXDUNY];
int8_t dFlags[MAXDUNX][MAXDUNY]; int8_t dFlags[MAXDUNX][MAXDUNY];
int8_t dPlayer[MAXDUNX][MAXDUNY]; int8_t dPlayer[MAXDUNX][MAXDUNY];
int16_t dMonster[MAXDUNX][MAXDUNY]; int16_t dMonster[MAXDUNX][MAXDUNY];
int8_t dDead[MAXDUNX][MAXDUNY]; int8_t dCorpse[MAXDUNX][MAXDUNY];
char dObject[MAXDUNX][MAXDUNY]; char dObject[MAXDUNX][MAXDUNY];
int8_t dItem[MAXDUNX][MAXDUNY]; int8_t dItem[MAXDUNX][MAXDUNY];
char dSpecial[MAXDUNX][MAXDUNY]; char dSpecial[MAXDUNX][MAXDUNY];
@ -561,7 +561,7 @@ void DRLG_Init_Globals()
memset(dFlags, 0, sizeof(dFlags)); memset(dFlags, 0, sizeof(dFlags));
memset(dPlayer, 0, sizeof(dPlayer)); memset(dPlayer, 0, sizeof(dPlayer));
memset(dMonster, 0, sizeof(dMonster)); memset(dMonster, 0, sizeof(dMonster));
memset(dDead, 0, sizeof(dDead)); memset(dCorpse, 0, sizeof(dCorpse));
memset(dObject, 0, sizeof(dObject)); memset(dObject, 0, sizeof(dObject));
memset(dItem, 0, sizeof(dItem)); memset(dItem, 0, sizeof(dItem));
memset(dSpecial, 0, sizeof(dSpecial)); memset(dSpecial, 0, sizeof(dSpecial));

2
Source/gendung.h

@ -208,7 +208,7 @@ extern int16_t dMonster[MAXDUNX][MAXDUNY];
* dDead[x][y] & 0x1F - index of dead * dDead[x][y] & 0x1F - index of dead
* dDead[x][y] >> 0x5 - direction * dDead[x][y] >> 0x5 - direction
*/ */
extern int8_t dDead[MAXDUNX][MAXDUNY]; extern int8_t dCorpse[MAXDUNX][MAXDUNY];
/** Contains the object numbers (objects array indices) of the map. */ /** Contains the object numbers (objects array indices) of the map. */
extern char dObject[MAXDUNX][MAXDUNY]; extern char dObject[MAXDUNX][MAXDUNY];
/** Contains the item numbers (items array indices) of the map. */ /** Contains the item numbers (items array indices) of the map. */

8
Source/loadsave.cpp

@ -1792,7 +1792,7 @@ void LoadGame(bool firstflag)
} }
for (int j = 0; j < MAXDUNY; j++) { for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++) // NOLINT(modernize-loop-convert) for (int i = 0; i < MAXDUNX; i++) // NOLINT(modernize-loop-convert)
dDead[i][j] = file.NextLE<int8_t>(); dCorpse[i][j] = file.NextLE<int8_t>();
} }
for (int j = 0; j < MAXDUNY; j++) { for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++) // NOLINT(modernize-loop-convert) for (int i = 0; i < MAXDUNX; i++) // NOLINT(modernize-loop-convert)
@ -1987,7 +1987,7 @@ void SaveGameData()
} }
for (int j = 0; j < MAXDUNY; j++) { for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++) // NOLINT(modernize-loop-convert) for (int i = 0; i < MAXDUNX; i++) // NOLINT(modernize-loop-convert)
file.WriteLE<int8_t>(dDead[i][j]); file.WriteLE<int8_t>(dCorpse[i][j]);
} }
for (int j = 0; j < MAXDUNY; j++) { for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++) // NOLINT(modernize-loop-convert) for (int i = 0; i < MAXDUNX; i++) // NOLINT(modernize-loop-convert)
@ -2045,7 +2045,7 @@ void SaveLevel()
if (leveltype != DTYPE_TOWN) { if (leveltype != DTYPE_TOWN) {
for (int j = 0; j < MAXDUNY; j++) { for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++) // NOLINT(modernize-loop-convert) for (int i = 0; i < MAXDUNX; i++) // NOLINT(modernize-loop-convert)
file.WriteLE<int8_t>(dDead[i][j]); file.WriteLE<int8_t>(dCorpse[i][j]);
} }
} }
@ -2123,7 +2123,7 @@ void LoadLevel()
if (leveltype != DTYPE_TOWN) { if (leveltype != DTYPE_TOWN) {
for (int j = 0; j < MAXDUNY; j++) { for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++) // NOLINT(modernize-loop-convert) for (int i = 0; i < MAXDUNX; i++) // NOLINT(modernize-loop-convert)
dDead[i][j] = file.NextLE<int8_t>(); dCorpse[i][j] = file.NextLE<int8_t>();
} }
SyncUniqDead(); SyncUniqDead();
} }

2
Source/missiles.cpp

@ -3786,7 +3786,7 @@ void MI_Stone(Missile &missile)
monster._mmode = static_cast<MonsterMode>(missile.var1); monster._mmode = static_cast<MonsterMode>(missile.var1);
monster.AnimInfo.IsPetrified = false; monster.AnimInfo.IsPetrified = false;
} else { } else {
AddDead(monster.position.tile, stonendx, monster._mdir); AddCorpse(monster.position.tile, stonendx, monster._mdir);
} }
} }
if (missile._miAnimType == MFILE_SHATTER1) if (missile._miAnimType == MFILE_SHATTER1)

12
Source/monster.cpp

@ -1822,9 +1822,9 @@ bool MonsterDeath(int i)
PrepDoEnding(); PrepDoEnding();
} else if (monster.AnimInfo.CurrentFrame == monster.AnimInfo.NumberOfFrames) { } else if (monster.AnimInfo.CurrentFrame == monster.AnimInfo.NumberOfFrames) {
if (monster._uniqtype == 0) if (monster._uniqtype == 0)
AddDead(monster.position.tile, monster.MType->mdeadval, monster._mdir); AddCorpse(monster.position.tile, monster.MType->mdeadval, monster._mdir);
else else
AddDead(monster.position.tile, monster._udeadval, monster._mdir); AddCorpse(monster.position.tile, monster._udeadval, monster._mdir);
dMonster[monster.position.tile.x][monster.position.tile.y] = 0; dMonster[monster.position.tile.x][monster.position.tile.y] = 0;
monster._mDelFlag = true; monster._mDelFlag = true;
@ -2439,7 +2439,7 @@ void ScavengerAi(int i)
} }
if (monster._mgoal == MGOAL_HEALING && monster._mgoalvar3 != 0) { if (monster._mgoal == MGOAL_HEALING && monster._mgoalvar3 != 0) {
monster._mgoalvar3--; monster._mgoalvar3--;
if (dDead[monster.position.tile.x][monster.position.tile.y] != 0) { if (dCorpse[monster.position.tile.x][monster.position.tile.y] != 0) {
StartEating(monster); StartEating(monster);
if ((monster._mFlags & MFLAG_NOHEAL) == 0) { if ((monster._mFlags & MFLAG_NOHEAL) == 0) {
if (gbIsHellfire) { if (gbIsHellfire) {
@ -2448,7 +2448,7 @@ void ScavengerAi(int i)
if (monster._mhitpoints > monster._mmaxhp) if (monster._mhitpoints > monster._mmaxhp)
monster._mhitpoints = monster._mmaxhp; monster._mhitpoints = monster._mmaxhp;
if (monster._mgoalvar3 <= 0 || monster._mhitpoints == monster._mmaxhp) if (monster._mgoalvar3 <= 0 || monster._mhitpoints == monster._mmaxhp)
dDead[monster.position.tile.x][monster.position.tile.y] = 0; dCorpse[monster.position.tile.x][monster.position.tile.y] = 0;
} else { } else {
monster._mhitpoints += 64; monster._mhitpoints += 64;
} }
@ -2472,7 +2472,7 @@ void ScavengerAi(int i)
// BUGFIX: incorrect check of offset against limits of the dungeon // BUGFIX: incorrect check of offset against limits of the dungeon
if (y < 0 || y >= MAXDUNY || x < 0 || x >= MAXDUNX) if (y < 0 || y >= MAXDUNY || x < 0 || x >= MAXDUNX)
continue; continue;
done = dDead[monster.position.tile.x + x][monster.position.tile.y + y] != 0 done = dCorpse[monster.position.tile.x + x][monster.position.tile.y + y] != 0
&& IsLineNotSolid( && IsLineNotSolid(
monster.position.tile, monster.position.tile,
monster.position.tile + Displacement { x, y }); monster.position.tile + Displacement { x, y });
@ -2486,7 +2486,7 @@ void ScavengerAi(int i)
// BUGFIX: incorrect check of offset against limits of the dungeon // BUGFIX: incorrect check of offset against limits of the dungeon
if (y < 0 || y >= MAXDUNY || x < 0 || x >= MAXDUNX) if (y < 0 || y >= MAXDUNY || x < 0 || x >= MAXDUNX)
continue; continue;
done = dDead[monster.position.tile.x + x][monster.position.tile.y + y] != 0 done = dCorpse[monster.position.tile.x + x][monster.position.tile.y + y] != 0
&& IsLineNotSolid( && IsLineNotSolid(
monster.position.tile, monster.position.tile,
monster.position.tile + Displacement { x, y }); monster.position.tile + Displacement { x, y });

4
Source/msg.cpp

@ -2044,9 +2044,9 @@ void DeltaLoadLevel()
if (monster._mAi != AI_DIABLO) { if (monster._mAi != AI_DIABLO) {
if (monster._uniqtype == 0) { if (monster._uniqtype == 0) {
assert(monster.MType != nullptr); assert(monster.MType != nullptr);
AddDead(monster.position.tile, monster.MType->mdeadval, monster._mdir); AddCorpse(monster.position.tile, monster.MType->mdeadval, monster._mdir);
} else { } else {
AddDead(monster.position.tile, monster._udeadval, monster._mdir); AddCorpse(monster.position.tile, monster._udeadval, monster._mdir);
} }
} }
monster._mDelFlag = true; monster._mDelFlag = true;

4
Source/objects.cpp

@ -1503,7 +1503,7 @@ void UpdateDoor(int i)
int dy = Objects[i].position.y; int dy = Objects[i].position.y;
bool dok = dMonster[dx][dy] == 0; bool dok = dMonster[dx][dy] == 0;
dok = dok && dItem[dx][dy] == 0; dok = dok && dItem[dx][dy] == 0;
dok = dok && dDead[dx][dy] == 0; dok = dok && dCorpse[dx][dy] == 0;
dok = dok && dPlayer[dx][dy] == 0; dok = dok && dPlayer[dx][dy] == 0;
Objects[i]._oSelFlag = 2; Objects[i]._oSelFlag = 2;
Objects[i]._oVar4 = dok ? 1 : 2; Objects[i]._oVar4 = dok ? 1 : 2;
@ -1804,7 +1804,7 @@ void DoorSet(Point position, bool isLeftDoor)
*/ */
inline bool IsDoorClear(const Point &doorPosition) inline bool IsDoorClear(const Point &doorPosition)
{ {
return dDead[doorPosition.x][doorPosition.y] == 0 return dCorpse[doorPosition.x][doorPosition.y] == 0
&& dMonster[doorPosition.x][doorPosition.y] == 0 && dMonster[doorPosition.x][doorPosition.y] == 0
&& dItem[doorPosition.x][doorPosition.y] == 0; && dItem[doorPosition.x][doorPosition.y] == 0;
} }

2
Source/player.cpp

@ -3189,7 +3189,7 @@ void RemovePlrMissiles(int pnum)
auto &golem = Monsters[MyPlayerId]; auto &golem = Monsters[MyPlayerId];
if (golem.position.tile.x != 1 || golem.position.tile.y != 0) { if (golem.position.tile.x != 1 || golem.position.tile.y != 0) {
M_StartKill(MyPlayerId, MyPlayerId); M_StartKill(MyPlayerId, MyPlayerId);
AddDead(golem.position.tile, golem.MType->mdeadval, golem._mdir); AddCorpse(golem.position.tile, golem.MType->mdeadval, golem._mdir);
int mx = golem.position.tile.x; int mx = golem.position.tile.x;
int my = golem.position.tile.y; int my = golem.position.tile.y;
dMonster[mx][my] = 0; dMonster[mx][my] = 0;

4
Source/scrollrt.cpp

@ -829,7 +829,7 @@ void DrawDungeon(const Surface &out, Point tilePosition, Point targetBufferPosit
DrawCell(out, tilePosition, targetBufferPosition); DrawCell(out, tilePosition, targetBufferPosition);
int8_t bFlag = dFlags[tilePosition.x][tilePosition.y]; int8_t bFlag = dFlags[tilePosition.x][tilePosition.y];
int8_t bDead = dDead[tilePosition.x][tilePosition.y]; int8_t bDead = dCorpse[tilePosition.x][tilePosition.y];
int8_t bMap = dTransVal[tilePosition.x][tilePosition.y]; int8_t bMap = dTransVal[tilePosition.x][tilePosition.y];
int negMon = 0; int negMon = 0;
@ -849,7 +849,7 @@ void DrawDungeon(const Surface &out, Point tilePosition, Point targetBufferPosit
if (LightTableIndex < LightsMax && bDead != 0) { if (LightTableIndex < LightsMax && bDead != 0) {
do { do {
DeadStruct *pDeadGuy = &Dead[(bDead & 0x1F) - 1]; Corpse *pDeadGuy = &Corpses[(bDead & 0x1F) - 1];
auto dd = static_cast<Direction>((bDead >> 5) & 7); auto dd = static_cast<Direction>((bDead >> 5) & 7);
int px = targetBufferPosition.x - CalculateWidth2(pDeadGuy->width); int px = targetBufferPosition.x - CalculateWidth2(pDeadGuy->width);
const byte *pCelBuff = pDeadGuy->data[dd]; const byte *pCelBuff = pDeadGuy->data[dd];

12
test/dead_test.cpp

@ -6,14 +6,14 @@
using namespace devilution; using namespace devilution;
TEST(Dead, AddDead) TEST(Corpses, AddCorpse)
{ {
AddDead({ 21, 48 }, 8, DIR_W); AddCorpse({ 21, 48 }, 8, DIR_W);
EXPECT_EQ(dDead[21][48], 8 + (DIR_W << 5)); EXPECT_EQ(dCorpse[21][48], 8 + (DIR_W << 5));
} }
TEST(Dead, AddDead_OOB) TEST(Corpses, AddCorpse_OOB)
{ {
AddDead({ 21, 48 }, MaxDead + 1, DIR_W); AddCorpse({ 21, 48 }, MaxCorpses + 1, DIR_W);
EXPECT_EQ(dDead[21][48], 0 + (DIR_W << 5)); EXPECT_EQ(dCorpse[21][48], 0 + (DIR_W << 5));
} }

Loading…
Cancel
Save