diff options
Diffstat (limited to 'source/game/StarStatusEffectDatabase.hpp')
-rw-r--r-- | source/game/StarStatusEffectDatabase.hpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/source/game/StarStatusEffectDatabase.hpp b/source/game/StarStatusEffectDatabase.hpp new file mode 100644 index 0000000..2b67ff8 --- /dev/null +++ b/source/game/StarStatusEffectDatabase.hpp @@ -0,0 +1,44 @@ +#ifndef STAR_STAT_EFFECT_DATABASE_HPP +#define STAR_STAT_EFFECT_DATABASE_HPP + +#include "StarThread.hpp" +#include "StarStatusTypes.hpp" + +namespace Star { + +STAR_EXCEPTION(StatusEffectDatabaseException, StarException); + +STAR_CLASS(StatusEffectDatabase); + +// Named, unique, unstackable scripted effects. +struct UniqueStatusEffectConfig { + String name; + Maybe<String> blockingStat; + Json effectConfig; + float defaultDuration; + StringList scripts; + unsigned scriptDelta; + Maybe<String> animationConfig; + + String label; + String description; + Maybe<String> icon; +}; + +class StatusEffectDatabase { +public: + StatusEffectDatabase(); + + bool isUniqueEffect(UniqueStatusEffect const& effect) const; + + UniqueStatusEffectConfig uniqueEffectConfig(UniqueStatusEffect const& effect) const; + +private: + UniqueStatusEffectConfig parseUniqueEffect(Json const& config, String const& path) const; + + HashMap<UniqueStatusEffect, UniqueStatusEffectConfig> m_uniqueEffects; +}; + +} + +#endif |