diff --git a/.idea/artifacts/TerrarumBuild.xml b/.idea/artifacts/TerrarumBuild.xml index d217a6054..7b7728061 100644 --- a/.idea/artifacts/TerrarumBuild.xml +++ b/.idea/artifacts/TerrarumBuild.xml @@ -86,6 +86,7 @@ + \ No newline at end of file diff --git a/.idea/libraries/GetBatteryStatus.xml b/.idea/libraries/GetBatteryStatus.xml new file mode 100644 index 000000000..003a66c30 --- /dev/null +++ b/.idea/libraries/GetBatteryStatus.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/TerrarumBuild.iml b/TerrarumBuild.iml index 0d7053020..aa1ac5a82 100644 --- a/TerrarumBuild.iml +++ b/TerrarumBuild.iml @@ -27,5 +27,6 @@ + \ No newline at end of file diff --git a/assets/graphics/gui/fullscreen_bat_ind.tga b/assets/graphics/gui/fullscreen_bat_ind.tga new file mode 100644 index 000000000..1334805a9 --- /dev/null +++ b/assets/graphics/gui/fullscreen_bat_ind.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f1df316f8b3135af57abbecec2ff3ae326cdf36464af28eec895f5d8793141f +size 2594 diff --git a/lib/GetBatteryStatus.jar b/lib/GetBatteryStatus.jar new file mode 100644 index 000000000..f5ec19827 --- /dev/null +++ b/lib/GetBatteryStatus.jar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c839dd7ace9d33de32449b12b2b2d86956f8c529fbffb584e57496913ba8706 +size 3670 diff --git a/src/net/torvald/terrarum/TerrarumPostProcessor.kt b/src/net/torvald/terrarum/TerrarumPostProcessor.kt index 63568818c..9ce8f2fc6 100644 --- a/src/net/torvald/terrarum/TerrarumPostProcessor.kt +++ b/src/net/torvald/terrarum/TerrarumPostProcessor.kt @@ -8,12 +8,14 @@ import com.badlogic.gdx.graphics.glutils.ShapeRenderer import com.badlogic.gdx.math.Matrix4 import com.badlogic.gdx.utils.Disposable import com.jme3.math.FastMath +import net.torvald.getbatterystatus.GetBatteryStatus import net.torvald.random.HQRNG import net.torvald.terrarum.App.IS_DEVELOPMENT_BUILD import net.torvald.terrarum.gamecontroller.KeyToggler import net.torvald.terrarum.savegame.toHex import net.torvald.terrarum.ui.BasicDebugInfoWindow import net.torvald.terrarum.ui.Toolkit +import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.unsafe.UnsafeHelper import java.time.ZonedDateTime @@ -48,6 +50,7 @@ object TerrarumPostProcessor : Disposable { private val functionRowHelper = Texture(Gdx.files.internal("assets/graphics/function_row_help.png")) + private val batteryTex = TextureRegionPack(Gdx.files.internal("assets/graphics/gui/fullscreen_bat_ind.tga"), 23, 14) private val shaderPostDither = App.loadShaderFromClasspath("shaders/default.vert", "shaders/postproc_dither.frag") private val shaderPostNoDither = App.loadShaderFromClasspath("shaders/default.vert", "shaders/postproc_nodither.frag") @@ -384,31 +387,59 @@ object TerrarumPostProcessor : Disposable { val time = ZonedDateTime.now() clockH = time.hour.toString().padStart(2,'0') clockM = time.minute.toString().padStart(2,'0') - clockS = time.second.toString().padStart(2,'0') - clockN = time.nano.toString() + + val battStatus = GetBatteryStatus.get() + + hasBattery = battStatus.hasBattery + isCharging = battStatus.isCharging + batteryPercentage = battStatus.percentage } private var clockH = "00" private var clockM = "00" - private var clockS = "00" - private var clockN = "0" private var hasBattery = false private var isCharging = false - private var batteryPercentage = "0%" + private var batteryPercentage = 0 private fun drawFullscreenComplications() { val tvSafeArea2H = App.scr.tvSafeActionHeight.toFloat() val dockHeight = tvSafeArea2H - val watchWidth = App.fontSmallNumbers.W * 15 + val watchWidth = App.fontSmallNumbers.W * 5 val watchHeight = 14 val marginEach = (dockHeight - watchHeight) / 2f val wx = (App.scr.width - marginEach * 1.5f - watchWidth).floorToFloat() val wy = marginEach.ceilToFloat() - val watchStr = "$clockH:$clockM:$clockS.$clockN" + val watchStr = "$clockH:$clockM" + val batteryPercentageStr = "$batteryPercentage%" batch.inUse { batch.color = Color.WHITE App.fontSmallNumbers.draw(batch, watchStr, wx, wy) + + if (hasBattery) { + val batCell = batteryTex.get(0, isCharging.toInt()) + batch.draw(batCell, wx - watchHeight - batCell.regionWidth, wy) + + App.fontSmallNumbers.draw( + batch, batteryPercentageStr, + wx - watchHeight - batCell.regionWidth - App.fontSmallNumbers.getWidth(batteryPercentageStr) - 4, + wy + ) + } + } + + val magn = App.scr.magn + + shapeRenderer.inUse(ShapeRenderer.ShapeType.Filled) { + if (hasBattery && !isCharging) { + val w = magn * (16f * batteryPercentage / 100f) + val h = magn * 6f + val x = magn * (wx - watchHeight - batteryTex.tileW + 2) + val y = magn * (wy + 3) + + shapeRenderer.color = Color(1f, 1f, 1f, 1f) + shapeRenderer.rect(x, y, w, h) + } } }