#pragma once #include "StarJson.hpp" #include "StarThread.hpp" #include "StarDamageTypes.hpp" namespace Star { STAR_STRUCT(DamageKind); STAR_CLASS(DamageDatabase); STAR_STRUCT(ElementalType); typedef String TargetMaterial; struct ElementalType { String resistanceStat; HashMap damageNumberParticles; }; struct DamageEffect { Json sounds; Json particles; }; struct DamageKind { String name; HashMap> effects; String elementalType; }; class DamageDatabase { public: DamageDatabase(); DamageKind const& damageKind(String name) const; ElementalType const& elementalType(String const& name) const; private: StringMap m_damageKinds; StringMap m_elementalTypes; }; }