mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-19 04:15:14 -04:00
gui rendere: fix scaling bugs, pause menu: add "minosoft" text
This commit is contained in:
parent
6a5a11d151
commit
11bf04302d
@ -33,7 +33,6 @@ import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
|||||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||||
import glm_.glm
|
import glm_.glm
|
||||||
import glm_.mat4x4.Mat4
|
import glm_.mat4x4.Mat4
|
||||||
import glm_.vec2.Vec2
|
|
||||||
import glm_.vec2.Vec2i
|
import glm_.vec2.Vec2i
|
||||||
|
|
||||||
class GUIRenderer(
|
class GUIRenderer(
|
||||||
@ -75,15 +74,7 @@ class GUIRenderer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun recalculateMatrices(windowSize: Vec2i = renderWindow.window.size, scale: Float = profile.scale) {
|
private fun recalculateMatrices(windowSize: Vec2i = renderWindow.window.size, scale: Float = profile.scale) {
|
||||||
val hudNormalSize = Vec2i(windowSize)
|
scaledSize = windowSize.scale(scale)
|
||||||
// ToDo: This is just a dirty workaround and does not fix the problem at all
|
|
||||||
if (hudNormalSize.x % 2 != 0) {
|
|
||||||
hudNormalSize.x--
|
|
||||||
}
|
|
||||||
if (hudNormalSize.y % 2 != 0) {
|
|
||||||
hudNormalSize.y--
|
|
||||||
}
|
|
||||||
scaledSize = Vec2i(Vec2(hudNormalSize) / scale)
|
|
||||||
matrix = glm.ortho(0.0f, scaledSize.x.toFloat(), scaledSize.y.toFloat(), 0.0f)
|
matrix = glm.ortho(0.0f, scaledSize.x.toFloat(), scaledSize.y.toFloat(), 0.0f)
|
||||||
matrixChange = true
|
matrixChange = true
|
||||||
|
|
||||||
@ -97,7 +88,7 @@ class GUIRenderer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onMouseMove(position: Vec2i) {
|
override fun onMouseMove(position: Vec2i) {
|
||||||
gui.onMouseMove(position / profile.scale)
|
gui.onMouseMove(position.scale())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCharPress(char: Int) {
|
override fun onCharPress(char: Int) {
|
||||||
@ -117,6 +108,24 @@ class GUIRenderer(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun Vec2i.scale(scale: Float = profile.scale): Vec2i {
|
||||||
|
val output = Vec2i(this)
|
||||||
|
// ToDo: This is just a dirty workaround and does not fix the problem at all
|
||||||
|
while (output.x % scale.toInt() != 0) {
|
||||||
|
output.x--
|
||||||
|
if (output.x < 0) {
|
||||||
|
output.x = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while (output.y % scale.toInt() != 0) {
|
||||||
|
output.y--
|
||||||
|
if (output.y < 0) {
|
||||||
|
output.y = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return output / scale
|
||||||
|
}
|
||||||
|
|
||||||
companion object : RendererBuilder<GUIRenderer> {
|
companion object : RendererBuilder<GUIRenderer> {
|
||||||
override val RESOURCE_LOCATION = "minosoft:gui".toResourceLocation()
|
override val RESOURCE_LOCATION = "minosoft:gui".toResourceLocation()
|
||||||
|
|
||||||
|
@ -15,7 +15,6 @@ package de.bixilon.minosoft.gui.rendering.gui.gui.screen.menu
|
|||||||
|
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer
|
import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.elements.Element
|
import de.bixilon.minosoft.gui.rendering.gui.elements.Element
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.elements.input.button.ButtonElement
|
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.gui.screen.Screen
|
import de.bixilon.minosoft.gui.rendering.gui.gui.screen.Screen
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.input.InputSpecialKey
|
import de.bixilon.minosoft.gui.rendering.gui.input.InputSpecialKey
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.input.mouse.MouseActions
|
import de.bixilon.minosoft.gui.rendering.gui.input.mouse.MouseActions
|
||||||
@ -56,12 +55,14 @@ abstract class Menu(
|
|||||||
cacheUpToDate = false
|
cacheUpToDate = false
|
||||||
}
|
}
|
||||||
|
|
||||||
fun addButton(button: ButtonElement) {
|
fun add(element: Element) {
|
||||||
button.parent = this
|
element.parent = this
|
||||||
elements += button
|
elements += element
|
||||||
forceSilentApply()
|
forceSilentApply()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
operator fun plusAssign(element: Element) = add(element)
|
||||||
|
|
||||||
override fun forceRender(offset: Vec2i, z: Int, consumer: GUIVertexConsumer, options: GUIVertexOptions?): Int {
|
override fun forceRender(offset: Vec2i, z: Int, consumer: GUIVertexConsumer, options: GUIVertexOptions?): Int {
|
||||||
val size = size
|
val size = size
|
||||||
var zUsed = super.forceRender(offset, z, consumer, options)
|
var zUsed = super.forceRender(offset, z, consumer, options)
|
||||||
|
@ -15,17 +15,23 @@ package de.bixilon.minosoft.gui.rendering.gui.gui.screen.menu.pause
|
|||||||
|
|
||||||
import de.bixilon.minosoft.data.language.LanguageUtil.i18n
|
import de.bixilon.minosoft.data.language.LanguageUtil.i18n
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer
|
import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer
|
||||||
|
import de.bixilon.minosoft.gui.rendering.gui.elements.HorizontalAlignments
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.elements.input.button.ButtonElement
|
import de.bixilon.minosoft.gui.rendering.gui.elements.input.button.ButtonElement
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.elements.input.button.NeutralizedButtonElement
|
import de.bixilon.minosoft.gui.rendering.gui.elements.input.button.NeutralizedButtonElement
|
||||||
|
import de.bixilon.minosoft.gui.rendering.gui.elements.spacer.SpacerElement
|
||||||
|
import de.bixilon.minosoft.gui.rendering.gui.elements.text.TextElement
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.gui.screen.menu.Menu
|
import de.bixilon.minosoft.gui.rendering.gui.gui.screen.menu.Menu
|
||||||
import de.bixilon.minosoft.util.ShutdownManager
|
import de.bixilon.minosoft.util.ShutdownManager
|
||||||
|
import glm_.vec2.Vec2i
|
||||||
|
|
||||||
class PauseMenu(guiRenderer: GUIRenderer) : Menu(guiRenderer) {
|
class PauseMenu(guiRenderer: GUIRenderer) : Menu(guiRenderer) {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
addButton(ButtonElement(guiRenderer, "menu.pause.back_to_game".i18n()) { guiRenderer.gui.pause(false) })
|
add(TextElement(guiRenderer, "Minosoft", HorizontalAlignments.CENTER, false, scale = 3.0f))
|
||||||
addButton(ButtonElement(guiRenderer, "menu.pause.options.debug".i18n(), disabled = true) { TODO() })
|
add(SpacerElement(guiRenderer, Vec2i(0, 20)))
|
||||||
addButton(NeutralizedButtonElement(guiRenderer, "menu.pause.disconnect".i18n(), "menu.pause.disconnect.confirm".i18n()) { guiRenderer.connection.network.disconnect() })
|
add(ButtonElement(guiRenderer, "menu.pause.back_to_game".i18n()) { guiRenderer.gui.pause(false) })
|
||||||
addButton(NeutralizedButtonElement(guiRenderer, "menu.pause.exit".i18n(), "menu.pause.exit.confirm".i18n()) { guiRenderer.connection.network.disconnect(); ShutdownManager.shutdown() })
|
add(ButtonElement(guiRenderer, "menu.pause.options.debug".i18n(), disabled = true) { TODO() })
|
||||||
|
add(NeutralizedButtonElement(guiRenderer, "menu.pause.disconnect".i18n(), "menu.pause.disconnect.confirm".i18n()) { guiRenderer.connection.network.disconnect() })
|
||||||
|
add(NeutralizedButtonElement(guiRenderer, "menu.pause.exit".i18n(), "menu.pause.exit.confirm".i18n()) { guiRenderer.connection.network.disconnect(); ShutdownManager.shutdown() })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user