Browse Source

Address warnings/dead code

pull/3987/head
ephphatha 4 years ago committed by Anders Jenbo
parent
commit
d3c42544a6
  1. 45
      Source/loadsave.cpp
  2. 10
      Source/missiles.cpp

45
Source/loadsave.cpp

@ -1350,7 +1350,7 @@ void SaveMonster(SaveHelper *file, Monster &monster)
// Omit pointer MData;
}
void SaveMissile(SaveHelper *file, Missile &missile)
void SaveMissile(SaveHelper *file, const Missile &missile)
{
file->WriteLE<int32_t>(missile._mitype);
file->WriteLE<int32_t>(missile.position.tile.x);
@ -1538,16 +1538,17 @@ void SaveAdditionalMissiles()
{
constexpr size_t BytesWrittenBySaveMissile = 180;
size_t missileCountAdditional = (Missiles.size() > MaxMissilesForSaveGame) ? Missiles.size() - MaxMissilesForSaveGame : 0;
SaveHelper file("additionalMissiles", sizeof(uint32_t) + sizeof(int32_t) + (missileCountAdditional * BytesWrittenBySaveMissile));
SaveHelper file("additionalMissiles", sizeof(uint32_t) + sizeof(uint32_t) + (missileCountAdditional * BytesWrittenBySaveMissile));
file.WriteLE<uint32_t>(VersionAdditionalMissiles);
file.WriteLE<uint32_t>(missileCountAdditional);
size_t wroteMissiles = 0;
for (auto &missile : Missiles) {
wroteMissiles += 1;
if (wroteMissiles >= MaxMissilesForSaveGame) {
SaveMissile(&file, missile);
if (missileCountAdditional > 0) {
auto it = Missiles.cbegin();
// std::list::const_iterator doesn't provide operator+() :/ using std::advance to get past the missiles we've already saved
std::advance(it, MaxMissilesForSaveGame);
for (; it != Missiles.cend(); it++) {
SaveMissile(&file, *it);
}
}
}
@ -1566,8 +1567,8 @@ void LoadAdditionalMissiles()
// unknown version
return;
}
uint32_t missileCountAdditional = file.NextLE<uint32_t>();
for (int i = 0; i < missileCountAdditional; i++) {
auto missileCountAdditional = file.NextLE<uint32_t>();
for (uint32_t i = 0U; i < missileCountAdditional; i++) {
LoadMissile(&file);
}
}
@ -1860,8 +1861,6 @@ void LoadGame(bool firstflag)
monstkill = file.NextBE<int32_t>();
if (leveltype != DTYPE_TOWN) {
int8_t tmpActiveMissiles[MaxMissilesForSaveGame];
for (int &monsterId : ActiveMonsters)
monsterId = file.NextBE<int32_t>();
for (int i = 0; i < ActiveMonsterCount; i++)
@ -1968,7 +1967,7 @@ void LoadGame(bool firstflag)
ProcessVisionList();
// convert stray manashield missiles into pManaShield flag
for (auto &missile : Missiles) {
if (missile._mitype == MIS_MANASHIELD && missile._miDelFlag == false) {
if (missile._mitype == MIS_MANASHIELD && !missile._miDelFlag) {
Players[missile._misource].pManaShield = true;
missile._miDelFlag = true;
}
@ -2037,7 +2036,10 @@ void SaveGameData()
file.WriteLE<uint8_t>(chrflag ? 1 : 0);
file.WriteBE<int32_t>(ActiveMonsterCount);
file.WriteBE<int32_t>(ActiveItemCount);
file.WriteBE<int32_t>(std::min(Missiles.size(), MaxMissilesForSaveGame));
// ActiveMissileCount will be a value from 0-125 (for vanilla compatibility). Writing an unsigned value here to avoid
// warnings about casting from unsigned to signed, but there's no sign extension issues when reading this as a signed
// value later so it doesn't have to match in LoadGameData().
file.WriteBE<uint32_t>(static_cast<uint32_t>(std::min(Missiles.size(), MaxMissilesForSaveGame)));
file.WriteBE<int32_t>(ActiveObjectCount);
for (uint8_t i = 0; i < giNumberOfLevels; i++) {
@ -2066,15 +2068,16 @@ void SaveGameData()
file.WriteLE<int8_t>(activeMissile);
// Write AvailableMissiles
for (size_t avaiableMissile = Missiles.size(); avaiableMissile < MaxMissilesForSaveGame; avaiableMissile++)
file.WriteLE<int8_t>(avaiableMissile);
file.Skip<int8_t>(std::min(Missiles.size(), MaxMissilesForSaveGame));
file.WriteLE<int8_t>(static_cast<int8_t>(avaiableMissile));
const size_t savedMissiles = std::min(Missiles.size(), MaxMissilesForSaveGame);
file.Skip<int8_t>(savedMissiles);
// Write Missile Data
size_t wroteMissiles = 0;
for (auto &missile : Missiles) {
SaveMissile(&file, missile);
wroteMissiles += 1;
if (wroteMissiles == MaxMissilesForSaveGame)
break;
{
auto missilesEnd = Missiles.cbegin();
std::advance(missilesEnd, savedMissiles);
for (auto it = Missiles.cbegin(); it != missilesEnd; it++) {
SaveMissile(&file, *it);
}
}
for (int objectId : ActiveObjects)
file.WriteLE<int8_t>(objectId);

10
Source/missiles.cpp

@ -2699,9 +2699,7 @@ Missile &AddMissile(Point src, Point dst, Direction midir, missile_id mitype, mi
Missiles.emplace_back(Missile {});
auto &missile = Missiles.back();
memset(&missile, 0, sizeof(missile));
auto &missileData = MissilesData[mitype];
const auto &missileData = MissilesData[mitype];
missile._mitype = mitype;
missile._micaster = micaster;
@ -4128,9 +4126,11 @@ void ProcessMissiles()
{
for (auto &missile : Missiles) {
const auto &position = missile.position.tile;
dFlags[position.x][position.y] &= ~DungeonFlag::Missile;
if (!InDungeonBounds(position))
if (InDungeonBounds(position)) {
dFlags[position.x][position.y] &= ~DungeonFlag::Missile;
} else {
missile._miDelFlag = true;
}
}
DeleteMissiles();

Loading…
Cancel
Save