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

Method LiquidsDatabase

source/game/StarLiquidsDatabase.cpp:12–91  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10LiquidSettings::LiquidSettings() : id(EmptyLiquidId) {}
11
12LiquidsDatabase::LiquidsDatabase() {
13 auto assets = Root::singleton().assets();
14 auto materialDatabase = Root::singleton().materialDatabase();
15
16 auto config = assets->json("/liquids.config");
17
18 auto liquidEngineParameters = config.get("liquidEngineParameters");
19 m_liquidEngineParameters.lateralMoveFactor = liquidEngineParameters.getFloat("lateralMoveFactor");
20 m_liquidEngineParameters.spreadOverfillUpFactor = liquidEngineParameters.getFloat("spreadOverfillUpFactor");
21 m_liquidEngineParameters.spreadOverfillLateralFactor = liquidEngineParameters.getFloat("spreadOverfillLateralFactor");
22 m_liquidEngineParameters.spreadOverfillDownFactor = liquidEngineParameters.getFloat("spreadOverfillDownFactor");
23 m_liquidEngineParameters.pressureEqualizeFactor = liquidEngineParameters.getFloat("pressureEqualizeFactor");
24 m_liquidEngineParameters.pressureMoveFactor = liquidEngineParameters.getFloat("pressureMoveFactor");
25 m_liquidEngineParameters.maximumPressureLevelImbalance = liquidEngineParameters.getFloat("maximumPressureLevelImbalance");
26 m_liquidEngineParameters.minimumLivenPressureChange = liquidEngineParameters.getFloat("minimumLivenPressureChange");
27 m_liquidEngineParameters.minimumLivenLevelChange = liquidEngineParameters.getFloat("minimumLivenLevelChange");
28 m_liquidEngineParameters.minimumLiquidLevel = liquidEngineParameters.getFloat("minimumLiquidLevel");
29 m_liquidEngineParameters.interactTransformationLevel = liquidEngineParameters.getFloat("interactTransformationLevel");
30
31 m_backgroundDrain = config.getFloat("backgroundDrain");
32
33 m_liquidNames["empty"] = EmptyLiquidId;
34
35 auto& liquids = assets->scanExtension("liquid");
36 assets->queueJsons(liquids);
37
38 for (auto& file : liquids) {
39 try {
40 auto liquidConfig = assets->json(file);
41
42 unsigned id = liquidConfig.getUInt("liquidId");
43 if (id != (LiquidId)id)
44 throw LiquidException(strf("Liquid id {} does not fall in the valid range, wrapped to {}\n", id, (LiquidId)id));
45
46 auto entry = make_shared<LiquidSettings>();
47 entry->id = (LiquidId)id;
48 entry->name = liquidConfig.getString("name");
49 entry->path = file;
50 entry->config = liquidConfig;
51
52 JsonObject descriptions;
53 for (auto pair : liquidConfig.iterateObject())
54 if (pair.first.endsWith("Description"))
55 descriptions[pair.first] = pair.second;
56 descriptions["description"] = liquidConfig.getString("description", "");
57 entry->descriptions = descriptions;
58
59 entry->tickDelta = liquidConfig.getUInt("tickDelta");
60 entry->liquidColor = jsonToVec4B(liquidConfig.get("color"));
61
62 if (liquidConfig.contains("radiantLight")) {
63 auto lightLevel = jsonToVec3B(liquidConfig.get("radiantLight"));
64 entry->radiantLightLevel = Color::rgb(lightLevel).toRgbF();
65 }
66
67 entry->itemDrop = ItemDescriptor(liquidConfig.get("itemDrop", {}));
68
69 entry->statusEffects = liquidConfig.getArray("statusEffects", {});

Callers

nothing calls this directly

Calls 15

singletonClass · 0.85
strfFunction · 0.85
jsonToVec4BFunction · 0.85
jsonToVec3BFunction · 0.85
ItemDescriptorClass · 0.85
assetsMethod · 0.80
materialDatabaseMethod · 0.80
jsonMethod · 0.80
getFloatMethod · 0.80
queueJsonsMethod · 0.80
getUIntMethod · 0.80
getStringMethod · 0.80

Tested by

no test coverage detected