Various fixes related to number handling
This commit is contained in:
parent
1681a7bf4a
commit
023ad54b33
@ -39,7 +39,7 @@ class BatteryBackedEnergyStorage(
|
|||||||
|
|
||||||
if (ply is ServerPlayer && isAndroid) {
|
if (ply is ServerPlayer && isAndroid) {
|
||||||
AndroidBatteryTrigger.trigger(ply, value)
|
AndroidBatteryTrigger.trigger(ply, value)
|
||||||
} else if (ply is ServerPlayer && !isAndroid) {
|
} else if (ply is ServerPlayer) {
|
||||||
ExopackBatterySlotTrigger.trigger(ply, value)
|
ExopackBatterySlotTrigger.trigger(ply, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ sealed class BlockEnergyStorageImpl(
|
|||||||
return Decimal.ZERO
|
return Decimal.ZERO
|
||||||
|
|
||||||
val newLevel = (batteryLevel - howMuch.coerceAtMost(maxOutput ?: Decimal.POSITIVE_INFINITY)).moreThanZero()
|
val newLevel = (batteryLevel - howMuch.coerceAtMost(maxOutput ?: Decimal.POSITIVE_INFINITY)).moreThanZero()
|
||||||
val diff = (batteryLevel - newLevel)
|
val diff = (batteryLevel - newLevel).coerceIn(Decimal.ZERO, howMuch)
|
||||||
|
|
||||||
if (!simulate && batteryLevel != newLevel) {
|
if (!simulate && batteryLevel != newLevel) {
|
||||||
batteryLevel = newLevel
|
batteryLevel = newLevel
|
||||||
@ -93,7 +93,7 @@ sealed class BlockEnergyStorageImpl(
|
|||||||
return Decimal.ZERO
|
return Decimal.ZERO
|
||||||
|
|
||||||
val newLevel = (batteryLevel + howMuch.coerceAtMost(maxInput ?: Decimal.POSITIVE_INFINITY)).coerceAtMost(maxBatteryLevel)
|
val newLevel = (batteryLevel + howMuch.coerceAtMost(maxInput ?: Decimal.POSITIVE_INFINITY)).coerceAtMost(maxBatteryLevel)
|
||||||
val diff = (newLevel - batteryLevel)
|
val diff = (newLevel - batteryLevel).coerceIn(Decimal.ZERO, howMuch)
|
||||||
|
|
||||||
if (!simulate && batteryLevel != newLevel) {
|
if (!simulate && batteryLevel != newLevel) {
|
||||||
batteryLevel = newLevel
|
batteryLevel = newLevel
|
||||||
|
@ -38,21 +38,13 @@ abstract class ItemEnergyStorageImpl(val itemStack: ItemStack) : IMatteryEnergyS
|
|||||||
if (!howMuch.isPositive || itemStack.count != 1)
|
if (!howMuch.isPositive || itemStack.count != 1)
|
||||||
return Decimal.ZERO
|
return Decimal.ZERO
|
||||||
|
|
||||||
@Suppress("NAME_SHADOWING")
|
|
||||||
var howMuch = howMuch
|
|
||||||
val maxOutput = maxOutput
|
|
||||||
|
|
||||||
if (maxOutput != null) {
|
|
||||||
howMuch = howMuch.coerceAtMost(maxOutput)
|
|
||||||
}
|
|
||||||
|
|
||||||
val batteryLevel = batteryLevel
|
val batteryLevel = batteryLevel
|
||||||
|
|
||||||
if (!batteryLevel.isPositive)
|
if (!batteryLevel.isPositive)
|
||||||
return Decimal.ZERO
|
return Decimal.ZERO
|
||||||
|
|
||||||
val newLevel = (batteryLevel - howMuch).moreThanZero()
|
val newLevel = (batteryLevel - howMuch.coerceAtMost(maxOutput ?: Decimal.POSITIVE_INFINITY)).moreThanZero()
|
||||||
val diff = (batteryLevel - newLevel)
|
val diff = (batteryLevel - newLevel).coerceIn(Decimal.ZERO, howMuch)
|
||||||
|
|
||||||
if (!simulate && batteryLevel != newLevel) {
|
if (!simulate && batteryLevel != newLevel) {
|
||||||
this.batteryLevel = newLevel
|
this.batteryLevel = newLevel
|
||||||
@ -70,7 +62,7 @@ abstract class ItemEnergyStorageImpl(val itemStack: ItemStack) : IMatteryEnergyS
|
|||||||
return Decimal.ZERO
|
return Decimal.ZERO
|
||||||
|
|
||||||
val newLevel = (batteryLevel + howMuch.coerceAtMost(maxInput ?: Decimal.POSITIVE_INFINITY)).coerceAtMost(maxBatteryLevel)
|
val newLevel = (batteryLevel + howMuch.coerceAtMost(maxInput ?: Decimal.POSITIVE_INFINITY)).coerceAtMost(maxBatteryLevel)
|
||||||
val diff = (newLevel - batteryLevel)
|
val diff = (newLevel - batteryLevel).coerceIn(Decimal.ZERO, howMuch)
|
||||||
|
|
||||||
if (!simulate && batteryLevel != newLevel) {
|
if (!simulate && batteryLevel != newLevel) {
|
||||||
this.batteryLevel = newLevel
|
this.batteryLevel = newLevel
|
||||||
|
@ -235,7 +235,7 @@ object MatteryGUI {
|
|||||||
if (mattery.androidEnergy.maxBatteryLevel.isZero) {
|
if (mattery.androidEnergy.maxBatteryLevel.isZero) {
|
||||||
level = 0f
|
level = 0f
|
||||||
} else {
|
} else {
|
||||||
level = mattery.androidEnergy.batteryLevel.div(mattery.androidEnergy.maxBatteryLevel).toFloat()
|
level = mattery.androidEnergy.batteryLevel.percentage(mattery.androidEnergy.maxBatteryLevel)
|
||||||
|
|
||||||
if (level >= 0.98f)
|
if (level >= 0.98f)
|
||||||
level = 1f
|
level = 1f
|
||||||
@ -308,8 +308,8 @@ object MatteryGUI {
|
|||||||
|
|
||||||
if (!gui.shouldDrawSurvivalElements()) return
|
if (!gui.shouldDrawSurvivalElements()) return
|
||||||
|
|
||||||
val level: Float = (ply.health / ply.maxHealth).coerceIn(0.0f .. 1.0f)
|
val level: Float = (ply.health / ply.maxHealth).coerceIn(0.0f, 1.0f)
|
||||||
val levelAbsorb: Float = (ply.absorptionAmount / ply.maxHealth).coerceIn(0.0f .. 1.0f)
|
val levelAbsorb: Float = (ply.absorptionAmount / ply.maxHealth).coerceIn(0.0f, 1.0f)
|
||||||
|
|
||||||
gui.setupOverlayRenderState(true, false)
|
gui.setupOverlayRenderState(true, false)
|
||||||
RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f)
|
RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f)
|
||||||
@ -324,7 +324,7 @@ object MatteryGUI {
|
|||||||
|
|
||||||
if (mattery.hasFeature(AndroidFeatures.NANOBOTS_ARMOR)) {
|
if (mattery.hasFeature(AndroidFeatures.NANOBOTS_ARMOR)) {
|
||||||
val featArmor = mattery.getFeature(AndroidFeatures.NANOBOTS_ARMOR) as NanobotsArmorFeature
|
val featArmor = mattery.getFeature(AndroidFeatures.NANOBOTS_ARMOR) as NanobotsArmorFeature
|
||||||
val levelArmor: Float = (featArmor.layers.toFloat() / (featArmor.strength + 1).toFloat()).coerceIn(0.0f .. 1.0f)
|
val levelArmor: Float = (featArmor.layers.toFloat() / (featArmor.strength + 1).toFloat()).coerceIn(0.0f, 1.0f)
|
||||||
|
|
||||||
HEALTH_BG_NANOBOTS.renderPartial(event.guiGraphics, left.toFloat(), top.toFloat(), width = ceil(levelArmor * 81f))
|
HEALTH_BG_NANOBOTS.renderPartial(event.guiGraphics, left.toFloat(), top.toFloat(), width = ceil(levelArmor * 81f))
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user