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 {
DeadStruct Dead[MaxDead];
Corpse Corpses[MaxCorpses];
int8_t stonendx;
namespace {
void InitDeadAnimationFromMonster(DeadStruct &dead, const CMonster &mon)
void InitDeadAnimationFromMonster(Corpse &corpse, const CMonster &mon)
{
int i = 0;
const auto &animData = mon.GetAnimData(MonsterGraphic::Death);
for (const auto &celSprite : animData.CelSpritesForDirections)
dead.data[i++] = celSprite->Data();
dead.frame = animData.Frames;
dead.width = animData.CelSpritesForDirections[0]->Width();
corpse.data[i++] = celSprite->Data();
corpse.frame = animData.Frames;
corpse.width = animData.CelSpritesForDirections[0]->Width();
}
} // namespace
void InitDead()
void InitCorpses()
{
int8_t mtypes[MAXMONSTERS] = {};
@ -37,8 +37,8 @@ void InitDead()
if (mtypes[LevelMonsterTypes[i].mtype] != 0)
continue;
InitDeadAnimationFromMonster(Dead[nd], LevelMonsterTypes[i]);
Dead[nd].translationPaletteIndex = 0;
InitDeadAnimationFromMonster(Corpses[nd], LevelMonsterTypes[i]);
Corpses[nd].translationPaletteIndex = 0;
nd++;
LevelMonsterTypes[i].mdeadval = nd;
@ -47,12 +47,12 @@ void InitDead()
nd++; // Unused blood spatter
for (auto &dead : Dead[nd].data)
dead = MissileSpriteData[MFILE_SHATTER1].animData[0].get();
for (auto &corpse : Corpses[nd].data)
corpse = MissileSpriteData[MFILE_SHATTER1].animData[0].get();
Dead[nd].frame = 12;
Dead[nd].width = 128;
Dead[nd].translationPaletteIndex = 0;
Corpses[nd].frame = 12;
Corpses[nd].width = 128;
Corpses[nd].translationPaletteIndex = 0;
nd++;
stonendx = nd;
@ -60,20 +60,20 @@ void InitDead()
for (int i = 0; i < ActiveMonsterCount; i++) {
auto &monster = Monsters[ActiveMonsters[i]];
if (monster._uniqtype != 0) {
InitDeadAnimationFromMonster(Dead[nd], *monster.MType);
Dead[nd].translationPaletteIndex = monster._uniqtrans + 4;
InitDeadAnimationFromMonster(Corpses[nd], *monster.MType);
Corpses[nd].translationPaletteIndex = monster._uniqtrans + 4;
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()
@ -84,7 +84,7 @@ void SyncUniqDead()
continue;
for (int dx = 0; dx < MAXDUNX; dx++) {
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 });
}
}

10
Source/dead.h

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

6
Source/diablo.cpp

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

4
Source/gendung.cpp

@ -52,7 +52,7 @@ char dPreLight[MAXDUNX][MAXDUNY];
int8_t dFlags[MAXDUNX][MAXDUNY];
int8_t dPlayer[MAXDUNX][MAXDUNY];
int16_t dMonster[MAXDUNX][MAXDUNY];
int8_t dDead[MAXDUNX][MAXDUNY];
int8_t dCorpse[MAXDUNX][MAXDUNY];
char dObject[MAXDUNX][MAXDUNY];
int8_t dItem[MAXDUNX][MAXDUNY];
char dSpecial[MAXDUNX][MAXDUNY];
@ -561,7 +561,7 @@ void DRLG_Init_Globals()
memset(dFlags, 0, sizeof(dFlags));
memset(dPlayer, 0, sizeof(dPlayer));
memset(dMonster, 0, sizeof(dMonster));
memset(dDead, 0, sizeof(dDead));
memset(dCorpse, 0, sizeof(dCorpse));
memset(dObject, 0, sizeof(dObject));
memset(dItem, 0, sizeof(dItem));
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] >> 0x5 - direction
*/
extern int8_t dDead[MAXDUNX][MAXDUNY];
extern int8_t dCorpse[MAXDUNX][MAXDUNY];
/** Contains the object numbers (objects array indices) of the map. */
extern char dObject[MAXDUNX][MAXDUNY];
/** 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 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 i = 0; i < MAXDUNX; i++) // NOLINT(modernize-loop-convert)
@ -1987,7 +1987,7 @@ void SaveGameData()
}
for (int j = 0; j < MAXDUNY; j++) {
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 i = 0; i < MAXDUNX; i++) // NOLINT(modernize-loop-convert)
@ -2045,7 +2045,7 @@ void SaveLevel()
if (leveltype != DTYPE_TOWN) {
for (int j = 0; j < MAXDUNY; j++) {
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) {
for (int j = 0; j < MAXDUNY; j++) {
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();
}

2
Source/missiles.cpp

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

12
Source/monster.cpp

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

4
Source/msg.cpp

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

4
Source/objects.cpp

@ -1503,7 +1503,7 @@ void UpdateDoor(int i)
int dy = Objects[i].position.y;
bool dok = dMonster[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;
Objects[i]._oSelFlag = 2;
Objects[i]._oVar4 = dok ? 1 : 2;
@ -1804,7 +1804,7 @@ void DoorSet(Point position, bool isLeftDoor)
*/
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
&& dItem[doorPosition.x][doorPosition.y] == 0;
}

2
Source/player.cpp

@ -3189,7 +3189,7 @@ void RemovePlrMissiles(int pnum)
auto &golem = Monsters[MyPlayerId];
if (golem.position.tile.x != 1 || golem.position.tile.y != 0) {
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 my = golem.position.tile.y;
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);
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];
int negMon = 0;
@ -849,7 +849,7 @@ void DrawDungeon(const Surface &out, Point tilePosition, Point targetBufferPosit
if (LightTableIndex < LightsMax && bDead != 0) {
do {
DeadStruct *pDeadGuy = &Dead[(bDead & 0x1F) - 1];
Corpse *pDeadGuy = &Corpses[(bDead & 0x1F) - 1];
auto dd = static_cast<Direction>((bDead >> 5) & 7);
int px = targetBufferPosition.x - CalculateWidth2(pDeadGuy->width);
const byte *pCelBuff = pDeadGuy->data[dd];

12
test/dead_test.cpp

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

Loading…
Cancel
Save