| 324 | } |
| 325 | |
| 326 | BeamMiningTool::BeamMiningTool(Json const& config, String const& directory, Json const& parameters) |
| 327 | : Item(config, directory, parameters), FireableItem(config), BeamItem(config.setAll(parameters.toObject())) { |
| 328 | auto assets = Root::singleton().assets(); |
| 329 | |
| 330 | m_blockRadius = instanceValue("blockRadius").toFloat(); |
| 331 | m_altBlockRadius = instanceValue("altBlockRadius").toFloat(); |
| 332 | m_tileDamage = instanceValue("tileDamage", 1.0f).toFloat(); |
| 333 | m_harvestLevel = instanceValue("harvestLevel", 1).toUInt(); |
| 334 | m_canCollectLiquid = instanceValue("canCollectLiquid", false).toBool(); |
| 335 | m_strikeSounds = jsonToStringList(instanceValue("strikeSounds")); |
| 336 | m_toolVolume = assets->json("/sfx.config:miningToolVolume").toFloat(); |
| 337 | m_blockVolume = assets->json("/sfx.config:miningBlockVolume").toFloat(); |
| 338 | m_endType = EndType::Object; |
| 339 | |
| 340 | if (auto jRate = instanceValue("scaleRate")) { |
| 341 | if (jRate.canConvert(Json::Type::Float)) { |
| 342 | float rate = jRate.toFloat(); |
| 343 | m_tileDamage /= rate; |
| 344 | m_cooldownTime /= rate; |
| 345 | } |
| 346 | } |
| 347 | |
| 348 | m_inhandStatusEffects = instanceValue("inhandStatusEffects", JsonArray()).toArray().transformed(jsonToPersistentStatusEffect); |
| 349 | } |
| 350 | |
| 351 | ItemPtr BeamMiningTool::clone() const { |
| 352 | return make_shared<BeamMiningTool>(*this); |
nothing calls this directly
no test coverage detected