#pragma once #include "StarItem.hpp" #include "StarWorld.hpp" #include "StarSwingableItem.hpp" #include "StarPreviewableItem.hpp" namespace Star { STAR_CLASS(UnlockItem); class UnlockItem : public Item, public SwingableItem, public PreviewableItem { public: UnlockItem(Json const& config, String const& directory, Json const& itemParameters = JsonObject()); ItemPtr clone() const override; List drawables() const override; List preview(PlayerPtr const& viewer = {}) const override; protected: void fireTriggered() override; private: Maybe m_sectorUnlock; Maybe m_tierRecipesUnlock; Maybe m_shipUpgrade; String m_unlockMessage; List m_drawables; }; }