osb/source/game/StarDamageDatabase.hpp
2024-02-25 15:46:47 +01:00

44 lines
786 B
C++

#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<HitType, String> damageNumberParticles;
};
struct DamageEffect {
Json sounds;
Json particles;
};
struct DamageKind {
String name;
HashMap<TargetMaterial, HashMap<HitType, DamageEffect>> effects;
String elementalType;
};
class DamageDatabase {
public:
DamageDatabase();
DamageKind const& damageKind(String name) const;
ElementalType const& elementalType(String const& name) const;
private:
StringMap<DamageKind> m_damageKinds;
StringMap<ElementalType> m_elementalTypes;
};
}