MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / DamageDatabase

Method DamageDatabase

source/game/StarDamageDatabase.cpp:8–48  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6namespace Star {
7
8DamageDatabase::DamageDatabase() {
9 auto assets = Root::singleton().assets();
10
11 auto elementalConfig = assets->json("/damage/elementaltypes.config");
12 for (auto p : elementalConfig.iterateObject()) {
13 ElementalType type;
14 type.resistanceStat = p.second.getString("resistanceStat");
15 for (auto particle : p.second.getObject("damageNumberParticles")) {
16 type.damageNumberParticles.set(HitTypeNames.getLeft(particle.first), particle.second.toString());
17 }
18 m_elementalTypes.set(p.first, std::move(type));
19 }
20
21 auto& files = assets->scanExtension("damage");
22 assets->queueJsons(files);
23 for (auto& file : files) {
24 auto config = assets->json(file);
25 String name = config.getString("kind");
26 if (m_damageKinds.contains(name))
27 throw StarException(strf("Duplicate damage kind Name {}. configfile {}", name, file));
28
29 DamageKind kind;
30 kind.name = name;
31 for (auto effect : config.getObject("effects", JsonObject())) {
32 TargetMaterial material = effect.first;
33 kind.effects.set(material, {});
34 for (auto hit : effect.second.toObject()) {
35 DamageEffect effect = DamageEffect {
36 hit.second.get("sounds", JsonArray()),
37 hit.second.get("particles", JsonArray())
38 };
39 kind.effects[material].set(HitTypeNames.getLeft(hit.first), effect);
40 }
41 }
42 kind.elementalType = config.getString("elementalType", "default");
43 if (!m_elementalTypes.contains(kind.elementalType))
44 throw StarException(strf("Undefined elemental type {} in damage kind {}", kind.elementalType, name));
45
46 m_damageKinds.set(name, std::move(kind));
47 }
48}
49
50DamageKind const& DamageDatabase::damageKind(String kind) const {
51 if (kind.empty())

Callers

nothing calls this directly

Calls 14

singletonClass · 0.85
StarExceptionClass · 0.85
strfFunction · 0.85
assetsMethod · 0.80
jsonMethod · 0.80
iterateObjectMethod · 0.80
getStringMethod · 0.80
queueJsonsMethod · 0.80
toObjectMethod · 0.80
getObjectMethod · 0.45
setMethod · 0.45
toStringMethod · 0.45

Tested by

no test coverage detected