Use scoped enums for DungeonFlags/BFLAG (#3135)

This commit is contained in:
Andrew James 2021-11-07 13:11:16 +11:00 committed by GitHub
commit 796e2813cf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 179 additions and 141 deletions

View file

@ -439,7 +439,7 @@ void DrawMonster(const Surface &out, Point tilePosition, Point targetBufferPosit
const auto &cel = *monster.AnimInfo.pCelSprite;
if ((dFlags[tilePosition.x][tilePosition.y] & BFLAG_LIT) == 0) {
if (!IsTileLit(tilePosition)) {
Cl2DrawLightTbl(out, targetBufferPosition.x, targetBufferPosition.y, cel, nCel, 1);
return;
}
@ -509,7 +509,7 @@ void DrawPlayerIcons(const Surface &out, int pnum, Point position, bool lighting
*/
void DrawPlayer(const Surface &out, int pnum, Point tilePosition, Point targetBufferPosition)
{
if ((dFlags[tilePosition.x][tilePosition.y] & BFLAG_LIT) == 0 && !Players[MyPlayerId]._pInfraFlag && leveltype != DTYPE_TOWN) {
if (!IsTileLit(tilePosition) && !Players[MyPlayerId]._pInfraFlag && leveltype != DTYPE_TOWN) {
return;
}
@ -548,7 +548,7 @@ void DrawPlayer(const Surface &out, int pnum, Point tilePosition, Point targetBu
return;
}
if ((dFlags[tilePosition.x][tilePosition.y] & BFLAG_LIT) == 0 || (Players[MyPlayerId]._pInfraFlag && LightTableIndex > 8)) {
if (!IsTileLit(tilePosition) || (Players[MyPlayerId]._pInfraFlag && LightTableIndex > 8)) {
Cl2DrawLightTbl(out, targetBufferPosition.x, targetBufferPosition.y, *pCelSprite, nCel, 1);
DrawPlayerIcons(out, pnum, targetBufferPosition, true);
return;
@ -574,12 +574,12 @@ void DrawPlayer(const Surface &out, int pnum, Point tilePosition, Point targetBu
*/
void DrawDeadPlayer(const Surface &out, Point tilePosition, Point targetBufferPosition)
{
dFlags[tilePosition.x][tilePosition.y] &= ~BFLAG_DEAD_PLAYER;
dFlags[tilePosition.x][tilePosition.y] &= ~DungeonFlag::DeadPlayer;
for (int i = 0; i < MAX_PLRS; i++) {
auto &player = Players[i];
if (player.plractive && player._pHitPoints == 0 && player.plrlevel == (BYTE)currlevel && player.position.tile == tilePosition) {
dFlags[tilePosition.x][tilePosition.y] |= BFLAG_DEAD_PLAYER;
dFlags[tilePosition.x][tilePosition.y] |= DungeonFlag::DeadPlayer;
const Displacement center { CalculateWidth2(player.AnimInfo.pCelSprite == nullptr ? 96 : player.AnimInfo.pCelSprite->Width()), 0 };
const Point playerRenderPosition { targetBufferPosition + player.position.offset - center };
DrawPlayer(out, i, tilePosition, playerRenderPosition);
@ -758,7 +758,7 @@ void DrawMonsterHelper(const Surface &out, Point tilePosition, Point targetBuffe
return;
}
if ((dFlags[tilePosition.x][tilePosition.y] & BFLAG_LIT) == 0 && !Players[MyPlayerId]._pInfraFlag)
if (!IsTileLit(tilePosition) && !Players[MyPlayerId]._pInfraFlag)
return;
if (mi < 0 || mi >= MAXMONSTERS) {
@ -836,12 +836,11 @@ void DrawDungeon(const Surface &out, Point tilePosition, Point targetBufferPosit
DrawCell(out, tilePosition, targetBufferPosition);
int8_t bFlag = dFlags[tilePosition.x][tilePosition.y];
int8_t bDead = dCorpse[tilePosition.x][tilePosition.y];
int8_t bMap = dTransVal[tilePosition.x][tilePosition.y];
#ifdef _DEBUG
if (DebugVision && (bFlag & BFLAG_LIT) != 0) {
if (DebugVision && IsTileLit(tilePosition)) {
CelClippedDrawTo(out, targetBufferPosition, *pSquareCel, 1);
}
DebugCoordsMap[tilePosition.x + tilePosition.y * MAXDUNX] = targetBufferPosition;
@ -874,7 +873,7 @@ void DrawDungeon(const Surface &out, Point tilePosition, Point targetBufferPosit
DrawObject(out, tilePosition, targetBufferPosition, true);
DrawItem(out, tilePosition, targetBufferPosition, true);
if ((bFlag & BFLAG_DEAD_PLAYER) != 0) {
if (TileContainsDeadPlayer(tilePosition)) {
DrawDeadPlayer(out, tilePosition, targetBufferPosition);
}
if (dPlayer[tilePosition.x][tilePosition.y] > 0) {