// This file is part of libZelda.
//
// libZelda is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// libZelda is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with libZelda. If not, see
#ifndef __ALTTP_QUEST_HPP__
#define __ALTTP_QUEST_HPP__
#include "Types.hpp"
#include
#include
#include "ALTTPStructs.hpp"
#include "ALTTPEnums.hpp"
/*! \class ALTTPQuest
* \brief A Link to the Past Quest container class
*
* Contains all relevant data for an A Link to the Past
* Quest entry.
*/
class ALTTPQuest
{
public:
ALTTPQuest();
~ALTTPQuest();
void setRoomFlags(std::vector flags);
void setRoomFlags(ALTTPRoomFlags* rf, Uint32 id);
std::vector roomFlags();
ALTTPRoomFlags* roomFlags(Uint32 id);
void setOverworldEvents(std::vector events);
void setOverworldEvents(ALTTPOverworldEvent* ow, Uint32 id);
std::vector overworldEvents() const;
ALTTPOverworldEvent* overworldEvent(Uint32 id) const;
void setInventory(ALTTPInventory* inv);
ALTTPInventory* inventory() const;
void setRupeeMax(Uint16 val);
Uint16 rupeeMax() const;
void setRupeeCurrent(Uint16 val);
Uint16 rupeeCurrent() const;
void setCompasses(ALTTPDungeonItemFlags flags);
ALTTPDungeonItemFlags compasses() const;
void setBigKeys(ALTTPDungeonItemFlags flags);
ALTTPDungeonItemFlags bigKeys() const;
void setDungeonMaps(ALTTPDungeonItemFlags flags);
ALTTPDungeonItemFlags dungeonMaps() const;
void setWishingPond(Uint16 val);
Uint16 wishingPond() const;
void setHealthMax(Uint8 val);
Uint8 healthMax() const;
void setHealth(Uint8 val);
Uint8 health() const;
void setMagicPower(Uint8 val);
Uint8 magicPower() const;
void setKeys(Uint8 val);
Uint8 keys() const;
void setBombUpgrades(Uint8 val);
Uint8 bombUpgrades() const;
void setArrowUpgrades(Uint8 val);
Uint8 arrowUpgrades() const;
void setHealthFiller(Uint8 val);
Uint8 healthFiller() const;
void setMagicFiller(Uint8 val);
Uint8 magicFiller() const;
void setPendants(ALTTPPendants val);
ALTTPPendants pendants() const;
void setBombFiller(Uint8 val);
Uint8 bombFiller() const;
void setArrowFiller(Uint8 val);
Uint8 arrowFiller() const;
void setArrows(Uint8 val);
Uint8 arrows() const;
void setAbilityFlags(ALTTPAbilities val);
ALTTPAbilities abilityFlags() const;
void setCrystals(ALTTPCrystals val);
ALTTPCrystals crystals() const;
void setMagicUsage(ALTTPMagicUsage val);
ALTTPMagicUsage magicUsage() const;
void setDungeonKeys(std::vector val);
void setDungeonKeys(Uint32 id, Uint8 val);
Uint8 dungeonKeys(Uint32 id) const;
Uint32 dungeonCount() const;
void setProgressIndicator(ALTTPProgressIndicator val);
ALTTPProgressIndicator progressIndicator() const;
void setProgressFlags1(ALTTPProgressFlags1 val);
ALTTPProgressFlags1 progressFlags1() const;
void setMapIcon(ALTTPMapIcon val);
ALTTPMapIcon mapIcon() const;
void setStartLocation(ALTTPStartLocation val);
ALTTPStartLocation startLocation() const;
void setProgressFlags2(ALTTPProgressFlags2 val);
ALTTPProgressFlags2 progressFlags2() const;
void setLightDarkWorldIndicator(ALTTPLightDarkWorldIndicator val);
ALTTPLightDarkWorldIndicator lightDarkWorldIndicator() const;
void setTagAlong(ALTTPTagAlong val);
ALTTPTagAlong tagAlong() const;
void setOldManFlags(std::vector flags);
void setOldManFlag(Uint32 id, Uint8 val);
Uint8 oldManFlag(Uint32 id);
Uint32 oldManFlagCount() const;
void setBombFlag(Uint8 flag);
Uint8 bombFlag() const;
void setUnknown1(std::vector flags);
void setUnknown1(Uint32 id, Uint8 val);
Uint8 unknown1(Uint32 id);
Uint32 unknown1Count() const;
void setPlayerName(std::vector playerName);
void setPlayerName(const std::string& playerName);
std::vector playerName() const;
std::string playerNameToString() const;
void setValid(bool val);
bool valid();
void setDungeonDeathTotals(std::vector val);
void setDungeonDeathTotal(Uint32 id, Uint16 val);
Uint16 dungeonDeathTotal(Uint32 id) const;
Uint16 dungeonDeathTotalCount() const;
void setUnknown2(Uint16 val);
Uint16 unknown2() const;
void setDeathSaveCount(Uint16 val);
Uint16 deathSaveCount() const;
void setPostGameDeathCounter(Int16 val);
Int16 postGameDeathCounter() const;
void setChecksum(Uint16 checksum);
Uint16 checksum() const;
private:
std::vector m_roomFlags;
std::vector m_overworldEvents;
ALTTPInventory* m_inventory;
Uint16 m_rupeeMax;
Uint16 m_rupeeCurrent;
ALTTPDungeonItemFlags m_compasses;
ALTTPDungeonItemFlags m_bigKeys;
ALTTPDungeonItemFlags m_dungeonMaps;
Uint16 m_wishingPond;
Uint8 m_healthMax;
Uint8 m_health;
Uint8 m_magicPower;
Uint8 m_keys;
Uint8 m_bombUpgrades;
Uint8 m_arrowUpgrades;
Uint8 m_heartFiller;
Uint8 m_magicFiller;
ALTTPPendants m_pendants;
Uint8 m_bombFiller;
Uint8 m_arrowFiller;
Uint8 m_arrows;
ALTTPAbilities m_abilityFlags;
ALTTPCrystals m_crystals;
ALTTPMagicUsage m_magicUsage;
std::vector m_dungeonKeys;
ALTTPProgressIndicator m_progressIndicator;
ALTTPProgressFlags1 m_progressFlags1;
ALTTPMapIcon m_mapIcon;
ALTTPStartLocation m_startLocation;
ALTTPProgressFlags2 m_progressFlags2;
ALTTPLightDarkWorldIndicator m_lightDarkWorldIndicator;
ALTTPTagAlong m_tagAlong;
std::vector m_oldManFlags;
Uint8 m_bombFlag;
std::vector m_unknown1;
std::vector m_playerName;
Uint16 m_valid;
std::vector m_dungeonDeathTotals;
Uint16 m_unknown2;
Uint16 m_deathSaveCount;
Int16 m_postGameDeathCounter;
Uint16 m_checksum;
};
#endif // __ALTTP_QUEST_HPP__