Browse Source

Apply missile_id to _mitype

pull/2661/head
Anders Jenbo 5 years ago
parent
commit
3df8af0e9d
  1. 2
      Source/loadsave.cpp
  2. 26
      Source/missiles.cpp
  3. 11
      Source/missiles.h
  4. 4
      Source/monster.cpp
  5. 4
      Source/objects.cpp

2
Source/loadsave.cpp

@ -639,7 +639,7 @@ void LoadMissile(LoadHelper *file, int i)
{
MissileStruct *pMissile = &Missiles[i];
pMissile->_mitype = file->NextLE<int32_t>();
pMissile->_mitype = static_cast<missile_id>(file->NextLE<int32_t>());
pMissile->position.tile.x = file->NextLE<int32_t>();
pMissile->position.tile.y = file->NextLE<int32_t>();
pMissile->position.offset.deltaX = file->NextLE<int32_t>();

26
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_id>(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) {

11
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);

4
Source/monster.cpp

@ -1612,7 +1612,7 @@ bool MonaterRangedAttack(int i)
sourcePosition,
monster.enemyPosition,
monster._mdir,
monster._mVar1,
static_cast<missile_id>(monster._mVar1),
TARGET_PLAYERS,
i,
monster._mVar2,
@ -1647,7 +1647,7 @@ bool MonsterRangedSpecialAttack(int i)
sourcePosition,
monster.enemyPosition,
monster._mdir,
monster._mVar1,
static_cast<missile_id>(monster._mVar1),
TARGET_PLAYERS,
i,
monster._mVar3,

4
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<missile_id>(Objects[i]._oVar3), TARGET_PLAYERS, -1, 0, 0);
PlaySfxLoc(IS_TRAP, Objects[oti].position);
}
Objects[oti]._oTrapFlag = false;

Loading…
Cancel
Save