#pragma once #include "StarTechDatabase.hpp" namespace Star { STAR_EXCEPTION(PlayerTechException, StarException); STAR_CLASS(PlayerTech); // Set of player techs, techs can be either unavailable, available but not // enabled, enabled but not equipped, or equipped. class PlayerTech { public: PlayerTech(); PlayerTech(Json const& json); Json toJson() const; bool isAvailable(String const& techModule) const; void makeAvailable(String const& techModule); void makeUnavailable(String const& techModule); bool isEnabled(String const& techModule) const; void enable(String const& techModule); void disable(String const& techModule); bool isEquipped(String const& techModule) const; void equip(String const& techModule); void unequip(String const& techModule); StringSet const& availableTechs() const; StringSet const& enabledTechs() const; HashMap const& equippedTechs() const; StringList techModules() const; private: StringSet m_availableTechs; StringSet m_enabledTechs; HashMap m_equippedTechs; }; }