From add5eb6a4a1c8228e789f90ca100fc92f12baaea Mon Sep 17 00:00:00 2001 From: nea Date: Fri, 2 Jun 2023 02:42:42 +0200 Subject: Improve floating point number formatting --- src/main/kotlin/moe/nea/firmament/commands/rome.kt | 22 +++++++++------------- .../nea/firmament/gui/profileviewer/SkillPage.kt | 3 ++- .../moe/nea/firmament/util/FirmFormatters.kt | 15 +++++++++++++++ 3 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 src/main/kotlin/moe/nea/firmament/util/FirmFormatters.kt (limited to 'src/main/kotlin') diff --git a/src/main/kotlin/moe/nea/firmament/commands/rome.kt b/src/main/kotlin/moe/nea/firmament/commands/rome.kt index 2d70df0..9c47fd2 100644 --- a/src/main/kotlin/moe/nea/firmament/commands/rome.kt +++ b/src/main/kotlin/moe/nea/firmament/commands/rome.kt @@ -21,25 +21,16 @@ package moe.nea.firmament.commands import com.mojang.brigadier.CommandDispatcher import com.mojang.brigadier.arguments.StringArgumentType.getString import com.mojang.brigadier.arguments.StringArgumentType.string -import io.github.cottonmc.cotton.gui.client.CottonClientScreen -import io.ktor.client.call.body -import io.ktor.client.request.get -import io.ktor.client.request.parameter -import io.ktor.http.URLProtocol -import io.ktor.http.path import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource -import kotlinx.coroutines.launch import net.minecraft.text.Text -import moe.nea.firmament.Firmament -import moe.nea.firmament.apis.Profiles import moe.nea.firmament.features.world.FairySouls import moe.nea.firmament.gui.config.AllConfigsGui import moe.nea.firmament.gui.profileviewer.ProfileViewer import moe.nea.firmament.repo.ItemCostData import moe.nea.firmament.repo.RepoManager +import moe.nea.firmament.util.FirmFormatters import moe.nea.firmament.util.MC import moe.nea.firmament.util.SBData -import moe.nea.firmament.util.ScreenUtil import moe.nea.firmament.util.SkyblockId import moe.nea.firmament.util.unformattedString @@ -87,7 +78,7 @@ fun firmamentCommand() = literal("firmament") { source.sendFeedback( Text.translatable( "firmament.price.bazaar.buy.price", - bazaarData.quickStatus.buyPrice + FirmFormatters.toString(bazaarData.quickStatus.buyPrice, 1) ) ) source.sendFeedback( @@ -99,7 +90,7 @@ fun firmamentCommand() = literal("firmament") { source.sendFeedback( Text.translatable( "firmament.price.bazaar.sell.price", - bazaarData.quickStatus.sellPrice + FirmFormatters.toString(bazaarData.quickStatus.sellPrice, 1) ) ) source.sendFeedback( @@ -111,7 +102,12 @@ fun firmamentCommand() = literal("firmament") { } val lowestBin = ItemCostData.lowestBin[itemName] if (lowestBin != null) { - source.sendFeedback(Text.translatable("firmament.price.lowestbin", lowestBin)) + source.sendFeedback( + Text.translatable( + "firmament.price.lowestbin", + FirmFormatters.toString(lowestBin, 1) + ) + ) } } } diff --git a/src/main/kotlin/moe/nea/firmament/gui/profileviewer/SkillPage.kt b/src/main/kotlin/moe/nea/firmament/gui/profileviewer/SkillPage.kt index d189b5b..88e477c 100644 --- a/src/main/kotlin/moe/nea/firmament/gui/profileviewer/SkillPage.kt +++ b/src/main/kotlin/moe/nea/firmament/gui/profileviewer/SkillPage.kt @@ -14,6 +14,7 @@ import net.minecraft.util.Formatting import moe.nea.firmament.apis.Skill import moe.nea.firmament.gui.WBar import moe.nea.firmament.repo.RepoManager +import moe.nea.firmament.util.FirmFormatters import moe.nea.firmament.util.toShedaniel object SkillPage : ProfilePage { @@ -45,7 +46,7 @@ object SkillPage : ProfilePage { ) { override fun addTooltip(tooltip: TooltipBuilder) { tooltip.add(Text.literal("$level/$maxLevel")) - tooltip.add(Text.translatable("firmament.pv.skills.total", exp)) + tooltip.add(Text.translatable("firmament.pv.skills.total", FirmFormatters.toString(exp, 1))) } }, 4, i + 1, 4, 1) } diff --git a/src/main/kotlin/moe/nea/firmament/util/FirmFormatters.kt b/src/main/kotlin/moe/nea/firmament/util/FirmFormatters.kt new file mode 100644 index 0000000..73ef121 --- /dev/null +++ b/src/main/kotlin/moe/nea/firmament/util/FirmFormatters.kt @@ -0,0 +1,15 @@ +package moe.nea.firmament.util + +import com.google.common.math.IntMath.pow +import kotlin.math.absoluteValue + +object FirmFormatters { + fun toString(double: Double, fractionalDigits: Int): String { + val long = double.toLong() + val δ = (double - long).absoluteValue + val μ = pow(10, fractionalDigits) + val digits = (μ * δ).toInt().toString().padStart(fractionalDigits, '0').trimEnd('0') + return long.toString() + (if (digits.isEmpty()) "" else ".$digits") + } + +} -- cgit