Browse Source

♻️ Replace 'ReturnLvlX' and 'ReturnLvlY' globals with single 'ReturnLvlPosition'

pull/2804/head
Juliano Leal Goncalves 5 years ago committed by Anders Jenbo
parent
commit
1f7cfcf945
  1. 8
      Source/loadsave.cpp
  2. 17
      Source/quests.cpp
  3. 3
      Source/quests.h

8
Source/loadsave.cpp

@ -757,8 +757,8 @@ void LoadQuest(LoadHelper *file, int i)
file->Skip(1); // Alignment
quest._qlog = file->NextBool32();
ReturnLvlX = file->NextBE<int32_t>();
ReturnLvlY = file->NextBE<int32_t>();
ReturnLvlPosition.x = file->NextBE<int32_t>();
ReturnLvlPosition.y = file->NextBE<int32_t>();
ReturnLevel = file->NextBE<int32_t>();
ReturnLevelType = static_cast<dungeon_type>(file->NextBE<int32_t>());
file->Skip(sizeof(int32_t)); // Skip DoomQuestState
@ -1397,8 +1397,8 @@ void SaveQuest(SaveHelper *file, int i)
file->Skip(1); // Alignment
file->WriteLE<uint32_t>(quest._qlog ? 1 : 0);
file->WriteBE<int32_t>(ReturnLvlX);
file->WriteBE<int32_t>(ReturnLvlY);
file->WriteBE<int32_t>(ReturnLvlPosition.x);
file->WriteBE<int32_t>(ReturnLvlPosition.y);
file->WriteBE<int32_t>(ReturnLevel);
file->WriteBE<int32_t>(ReturnLevelType);
file->Skip(sizeof(int32_t)); // Skip DoomQuestState

17
Source/quests.cpp

@ -30,8 +30,7 @@ bool QuestLogIsOpen;
std::optional<CelSprite> pQLogCel;
/** Contains the quests of the current game. */
Quest Quests[MAXQUESTS];
int ReturnLvlX;
int ReturnLvlY;
Point ReturnLvlPosition;
dungeon_type ReturnLevelType;
int ReturnLevel;
@ -553,28 +552,24 @@ void SetReturnLvlPos()
{
switch (setlvlnum) {
case SL_SKELKING:
ReturnLvlX = Quests[Q_SKELKING].position.x + 1;
ReturnLvlY = Quests[Q_SKELKING].position.y;
ReturnLvlPosition = Quests[Q_SKELKING].position + DIR_SE;
ReturnLevel = Quests[Q_SKELKING]._qlevel;
ReturnLevelType = DTYPE_CATHEDRAL;
break;
case SL_BONECHAMB:
ReturnLvlX = Quests[Q_SCHAMB].position.x + 1;
ReturnLvlY = Quests[Q_SCHAMB].position.y;
ReturnLvlPosition = Quests[Q_SCHAMB].position + DIR_SE;
ReturnLevel = Quests[Q_SCHAMB]._qlevel;
ReturnLevelType = DTYPE_CATACOMBS;
break;
case SL_MAZE:
break;
case SL_POISONWATER:
ReturnLvlX = Quests[Q_PWATER].position.x;
ReturnLvlY = Quests[Q_PWATER].position.y + 1;
ReturnLvlPosition = Quests[Q_PWATER].position + DIR_SW;
ReturnLevel = Quests[Q_PWATER]._qlevel;
ReturnLevelType = DTYPE_CATHEDRAL;
break;
case SL_VILEBETRAYER:
ReturnLvlX = Quests[Q_BETRAYER].position.x + 1;
ReturnLvlY = Quests[Q_BETRAYER].position.y - 1;
ReturnLvlPosition = Quests[Q_BETRAYER].position + DIR_E;
ReturnLevel = Quests[Q_BETRAYER]._qlevel;
ReturnLevelType = DTYPE_HELL;
break;
@ -587,7 +582,7 @@ void GetReturnLvlPos()
{
if (Quests[Q_BETRAYER]._qactive == QUEST_DONE)
Quests[Q_BETRAYER]._qvar2 = 2;
ViewPosition = { ReturnLvlX, ReturnLvlY };
ViewPosition = ReturnLvlPosition;
currlevel = ReturnLevel;
leveltype = ReturnLevelType;
}

3
Source/quests.h

@ -74,8 +74,7 @@ struct QuestDataStruct {
extern bool QuestLogIsOpen;
extern std::optional<CelSprite> pQLogCel;
extern Quest Quests[MAXQUESTS];
extern int ReturnLvlX;
extern int ReturnLvlY;
extern Point ReturnLvlPosition;
extern dungeon_type ReturnLevelType;
extern int ReturnLevel;

Loading…
Cancel
Save