Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/game/StarStatusEffectDatabase.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/game/StarStatusEffectDatabase.hpp')
-rw-r--r--source/game/StarStatusEffectDatabase.hpp44
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