From 6290dbfbc55be7b35262fbec017dd68d4cbd7df1 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Fri, 22 Oct 2021 14:41:43 +0200 Subject: [PATCH] hud: WorldInfoHUDElement --- .../gui/rendering/gui/hud/HUDRenderer.kt | 1 + .../gui/hud/elements/WorldInfoHUDElement.kt | 46 +++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/WorldInfoHUDElement.kt diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/HUDRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/HUDRenderer.kt index 13dbe98b2..ff69dfa88 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/HUDRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/HUDRenderer.kt @@ -84,6 +84,7 @@ class HUDRenderer( registerElement(TabListHUDElement) registerElement(BreakProgressHUDElement) registerElement(HotbarHUDElement) + registerElement(WorldInfoHUDElement) } override fun init() { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/WorldInfoHUDElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/WorldInfoHUDElement.kt new file mode 100644 index 000000000..f5197bb81 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/WorldInfoHUDElement.kt @@ -0,0 +1,46 @@ +/* + * Minosoft + * Copyright (C) 2021 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.gui.rendering.gui.hud.elements + +import de.bixilon.minosoft.data.registries.ResourceLocation +import de.bixilon.minosoft.gui.rendering.gui.elements.text.TextElement +import de.bixilon.minosoft.gui.rendering.gui.hud.HUDRenderer +import de.bixilon.minosoft.util.KUtil.toResourceLocation +import de.bixilon.minosoft.util.MMath.round10 +import glm_.vec2.Vec2i + +class WorldInfoHUDElement(hudRenderer: HUDRenderer) : HUDElement(hudRenderer) { + override val layout: TextElement = TextElement(hudRenderer, "") + + override val layoutOffset: Vec2i = Vec2i(2, 2) + + private var fps = -1.0 + + override fun apply() { + val fps = hudRenderer.renderWindow.renderStats.smoothAvgFPS.round10 + if (this.fps == fps) { + return + } + layout.text = "FPS $fps" + this.fps = fps + } + + companion object : HUDBuilder { + override val RESOURCE_LOCATION: ResourceLocation = "minosoft:world_info".toResourceLocation() + + override fun build(hudRenderer: HUDRenderer): WorldInfoHUDElement { + return WorldInfoHUDElement(hudRenderer) + } + } +}