| 259 | } |
| 260 | |
| 261 | GrassVariant PlantDatabase::buildGrassVariant(String const& name, float hueShift) const { |
| 262 | if (!m_grassConfigs.contains(name)) |
| 263 | throw PlantDatabaseException(strf("grass '{}' not found in plant database", name)); |
| 264 | |
| 265 | GrassVariant grassVariant; |
| 266 | auto config = m_grassConfigs.get(name); |
| 267 | |
| 268 | grassVariant.name = name; |
| 269 | grassVariant.directory = config.directory; |
| 270 | grassVariant.images = jsonToStringList(config.settings.get("images")); |
| 271 | grassVariant.hueShift = hueShift; |
| 272 | grassVariant.ceiling = config.settings.getBool("ceiling", false); |
| 273 | |
| 274 | JsonObject descriptions; |
| 275 | for (auto const& entry : config.settings.iterateObject()) { |
| 276 | if (entry.first.endsWith("Description")) |
| 277 | descriptions[entry.first] = entry.second; |
| 278 | } |
| 279 | descriptions["description"] = config.settings.getString("description", name); |
| 280 | grassVariant.descriptions = descriptions; |
| 281 | |
| 282 | grassVariant.ephemeral = config.settings.getBool("ephemeral", true); |
| 283 | grassVariant.tileDamageParameters = TileDamageParameters( |
| 284 | config.settings.get("damageTable", "/plants/grassDamage.config"), |
| 285 | config.settings.getFloat("health", 1.0f)); |
| 286 | |
| 287 | return grassVariant; |
| 288 | } |
| 289 | |
| 290 | StringList PlantDatabase::bushNames(bool ceiling) const { |
| 291 | StringList names; |
no test coverage detected