diff --git a/Source/loadsave.cpp b/Source/loadsave.cpp index d75e094de..06b1886d3 100644 --- a/Source/loadsave.cpp +++ b/Source/loadsave.cpp @@ -639,7 +639,7 @@ void LoadMissile(LoadHelper *file, int i) { MissileStruct *pMissile = &Missiles[i]; - pMissile->_mitype = file->NextLE(); + pMissile->_mitype = static_cast(file->NextLE()); pMissile->position.tile.x = file->NextLE(); pMissile->position.tile.y = file->NextLE(); pMissile->position.offset.deltaX = file->NextLE(); diff --git a/Source/missiles.cpp b/Source/missiles.cpp index 977570ad9..b74844371 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -211,7 +211,7 @@ void MoveMissilePos(MissileStruct &missile) } } -bool MonsterMHit(int pnum, int m, int mindam, int maxdam, int dist, int t, bool shift) +bool MonsterMHit(int pnum, int m, int mindam, int maxdam, int dist, missile_id t, bool shift) { auto &monster = Monsters[m]; @@ -334,7 +334,7 @@ bool MonsterMHit(int pnum, int m, int mindam, int maxdam, int dist, int t, bool return true; } -bool Plr2PlrMHit(int pnum, int p, int mindam, int maxdam, int dist, int mtype, bool shift, bool *blocked) +bool Plr2PlrMHit(int pnum, int p, int mindam, int maxdam, int dist, missile_id mtype, bool shift, bool *blocked) { if (sgGameInitInfo.bFriendlyFire == 0 && gbFriendlyMode) return false; @@ -963,7 +963,7 @@ void DeleteMissile(int mi, int i) ActiveMissiles[i] = ActiveMissiles[ActiveMissileCount]; } -bool MonsterTrapHit(int m, int mindam, int maxdam, int dist, int t, bool shift) +bool MonsterTrapHit(int m, int mindam, int maxdam, int dist, missile_id t, bool shift) { auto &monster = Monsters[m]; @@ -1040,7 +1040,7 @@ bool MonsterTrapHit(int m, int mindam, int maxdam, int dist, int t, bool shift) return true; } -bool PlayerMHit(int pnum, MonsterStruct *monster, int dist, int mind, int maxd, int mtype, bool shift, int earflag, bool *blocked) +bool PlayerMHit(int pnum, MonsterStruct *monster, int dist, int mind, int maxd, missile_id mtype, bool shift, int earflag, bool *blocked) { *blocked = false; @@ -1256,7 +1256,7 @@ void InitMissiles() numchains = 0; for (auto &link : chain) { link.idx = -1; - link._mitype = 0; + link._mitype = MIS_ARROW; link._mirange = 0; } for (int j = 0; j < MAXDUNY; j++) { @@ -1425,7 +1425,7 @@ void AddHorkSpawn(int mi, Point src, Point dst, int midir, int8_t /*mienemy*/, i void AddJester(int mi, Point src, Point dst, int midir, int8_t /*mienemy*/, int id, int /*dam*/) { auto &missile = Missiles[mi]; - int spell = MIS_FIREBOLT; + missile_id spell = MIS_FIREBOLT; switch (GenerateRnd(10)) { case 0: case 1: @@ -1784,7 +1784,7 @@ void AddSearch(int mi, Point /*src*/, Point /*dst*/, int /*midir*/, int8_t miene int mx = ActiveMissiles[i]; if (mx != mi) { MissileStruct *mis = &Missiles[mx]; - if (mis->_miVar1 == id && mis->_mitype == 85) { + if (mis->_miVar1 == id && mis->_mitype == MIS_SEARCH) { int r1 = missile._mirange; int r2 = mis->_mirange; if (r2 < INT_MAX - r1) @@ -2934,7 +2934,7 @@ void AddDiabApoca(int mi, Point src, Point /*dst*/, int /*midir*/, int8_t mienem namespace { -bool CanAddEffect(int playerId, int type) +bool CanAddEffect(int playerId, missile_id type) { if (currlevel != Players[playerId].plrlevel) return false; @@ -2951,7 +2951,7 @@ bool CanAddEffect(int playerId, int type) } // namespace -int AddMissile(Point src, Point dst, int midir, int mitype, int8_t micaster, int id, int midam, int spllvl) +int AddMissile(Point src, Point dst, int midir, missile_id mitype, int8_t micaster, int id, int midam, int spllvl) { if (ActiveMissileCount >= MAXMISSILES - 1) return -1; @@ -3180,6 +3180,8 @@ void MI_Firebolt(int i) case MIS_BONESPIRIT: d = 0; break; + default: + break; } } else { auto &monster = Monsters[p]; @@ -3228,6 +3230,8 @@ void MI_Firebolt(int i) case MIS_BONEDEMON: AddMissile(missile.position.tile, { i, 0 }, missile._mimfnum, MIS_EXBL3, missile._micaster, missile._misource, 0, 0); break; + default: + break; } if (missile._mlid != NO_LIGHT) AddUnLight(missile._mlid); @@ -3382,7 +3386,7 @@ void MI_Rune(int i) } missile._miDelFlag = true; AddUnLight(missile._mlid); - AddMissile({ mx, my }, { mx, my }, dir, missile._miVar1, TARGET_BOTH, missile._misource, missile._midam, missile._mispllvl); + AddMissile({ mx, my }, { mx, my }, dir, static_cast(missile._miVar1), TARGET_BOTH, missile._misource, missile._midam, missile._mispllvl); } PutMissile(i); } @@ -3612,7 +3616,7 @@ void MI_SpecArrow(int i) Point src = missile.position.tile; Point dst = { missile._miVar1, missile._miVar2 }; int spllvl = missile._miVar3; - int mitype = 0; + missile_id mitype = MIS_ARROW; Direction dir = DIR_S; mienemy_type micaster = TARGET_PLAYERS; if (id != -1) { diff --git a/Source/missiles.h b/Source/missiles.h index 174ab3988..243d1fb6a 100644 --- a/Source/missiles.h +++ b/Source/missiles.h @@ -22,7 +22,7 @@ constexpr Point GolemHoldingCell = Point { 1, 0 }; struct ChainStruct { int idx; - int _mitype; + missile_id _mitype; int _mirange; }; @@ -88,7 +88,8 @@ enum Direction16 { }; struct MissileStruct { - int _mitype; // Type of projectile (missile_id) + /** Type of projectile */ + missile_id _mitype; MissilePosition position; int _mimfnum; // The direction of the missile (direction enum) int _mispllvl; @@ -136,8 +137,8 @@ void GetDamageAmt(int i, int *mind, int *maxd); int GetSpellLevel(int playerId, spell_id sn); Direction16 GetDirection16(Point p1, Point p2); void DeleteMissile(int mi, int i); -bool MonsterTrapHit(int m, int mindam, int maxdam, int dist, int t, bool shift); -bool PlayerMHit(int pnum, MonsterStruct *monster, int dist, int mind, int maxd, int mtype, bool shift, int earflag, bool *blocked); +bool MonsterTrapHit(int m, int mindam, int maxdam, int dist, missile_id t, bool shift); +bool PlayerMHit(int pnum, MonsterStruct *monster, int dist, int mind, int maxd, missile_id mtype, bool shift, int earflag, bool *blocked); void SetMissDir(MissileStruct &missile, int dir); void InitMissileGFX(); void FreeMissiles(); @@ -216,7 +217,7 @@ void AddTelekinesis(int mi, Point src, Point dst, int midir, int8_t mienemy, int void AddBoneSpirit(int mi, Point src, Point dst, int midir, int8_t mienemy, int id, int dam); void AddRportal(int mi, Point src, Point dst, int midir, int8_t mienemy, int id, int dam); void AddDiabApoca(int mi, Point src, Point dst, int midir, int8_t mienemy, int id, int dam); -int AddMissile(Point src, Point dst, int midir, int mitype, int8_t micaster, int id, int midam, int spllvl); +int AddMissile(Point src, Point dst, int midir, missile_id mitype, int8_t micaster, int id, int midam, int spllvl); void MI_Golem(int mi); void MI_Manashield(int i); void MI_LArrow(int i); diff --git a/Source/monster.cpp b/Source/monster.cpp index 2875b5017..0ee230b77 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -1612,7 +1612,7 @@ bool MonaterRangedAttack(int i) sourcePosition, monster.enemyPosition, monster._mdir, - monster._mVar1, + static_cast(monster._mVar1), TARGET_PLAYERS, i, monster._mVar2, @@ -1647,7 +1647,7 @@ bool MonsterRangedSpecialAttack(int i) sourcePosition, monster.enemyPosition, monster._mdir, - monster._mVar1, + static_cast(monster._mVar1), TARGET_PLAYERS, i, monster._mVar3, diff --git a/Source/objects.cpp b/Source/objects.cpp index 43fcb8189..4e65d41fe 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -2362,7 +2362,7 @@ void OperateChest(int pnum, int i, bool sendmsg) if (Objects[i]._oTrapFlag && Objects[i]._otype >= OBJ_TCHEST1 && Objects[i]._otype <= OBJ_TCHEST3) { auto &player = Players[pnum]; Direction mdir = GetDirection(Objects[i].position, player.position.tile); - int mtype; + missile_id mtype; switch (Objects[i]._oVar4) { case 0: mtype = MIS_ARROW; @@ -4879,7 +4879,7 @@ void Obj_Trap(int i) } if (!deltaload) { Direction dir = GetDirection(Objects[i].position, target); - AddMissile(Objects[i].position, target, dir, Objects[i]._oVar3, TARGET_PLAYERS, -1, 0, 0); + AddMissile(Objects[i].position, target, dir, static_cast(Objects[i]._oVar3), TARGET_PLAYERS, -1, 0, 0); PlaySfxLoc(IS_TRAP, Objects[oti].position); } Objects[oti]._oTrapFlag = false;