mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-18 11:54:59 -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 glm_.glm
|
||||
import glm_.mat4x4.Mat4
|
||||
import glm_.vec2.Vec2
|
||||
import glm_.vec2.Vec2i
|
||||
|
||||
class GUIRenderer(
|
||||
@ -75,15 +74,7 @@ class GUIRenderer(
|
||||
}
|
||||
|
||||
private fun recalculateMatrices(windowSize: Vec2i = renderWindow.window.size, scale: Float = profile.scale) {
|
||||
val hudNormalSize = Vec2i(windowSize)
|
||||
// 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)
|
||||
scaledSize = windowSize.scale(scale)
|
||||
matrix = glm.ortho(0.0f, scaledSize.x.toFloat(), scaledSize.y.toFloat(), 0.0f)
|
||||
matrixChange = true
|
||||
|
||||
@ -97,7 +88,7 @@ class GUIRenderer(
|
||||
}
|
||||
|
||||
override fun onMouseMove(position: Vec2i) {
|
||||
gui.onMouseMove(position / profile.scale)
|
||||
gui.onMouseMove(position.scale())
|
||||
}
|
||||
|
||||
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> {
|
||||
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.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.input.InputSpecialKey
|
||||
import de.bixilon.minosoft.gui.rendering.gui.input.mouse.MouseActions
|
||||
@ -56,12 +55,14 @@ abstract class Menu(
|
||||
cacheUpToDate = false
|
||||
}
|
||||
|
||||
fun addButton(button: ButtonElement) {
|
||||
button.parent = this
|
||||
elements += button
|
||||
fun add(element: Element) {
|
||||
element.parent = this
|
||||
elements += element
|
||||
forceSilentApply()
|
||||
}
|
||||
|
||||
operator fun plusAssign(element: Element) = add(element)
|
||||
|
||||
override fun forceRender(offset: Vec2i, z: Int, consumer: GUIVertexConsumer, options: GUIVertexOptions?): Int {
|
||||
val size = size
|
||||
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.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.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.util.ShutdownManager
|
||||
import glm_.vec2.Vec2i
|
||||
|
||||
class PauseMenu(guiRenderer: GUIRenderer) : Menu(guiRenderer) {
|
||||
|
||||
init {
|
||||
addButton(ButtonElement(guiRenderer, "menu.pause.back_to_game".i18n()) { guiRenderer.gui.pause(false) })
|
||||
addButton(ButtonElement(guiRenderer, "menu.pause.options.debug".i18n(), disabled = true) { TODO() })
|
||||
addButton(NeutralizedButtonElement(guiRenderer, "menu.pause.disconnect".i18n(), "menu.pause.disconnect.confirm".i18n()) { guiRenderer.connection.network.disconnect() })
|
||||
addButton(NeutralizedButtonElement(guiRenderer, "menu.pause.exit".i18n(), "menu.pause.exit.confirm".i18n()) { guiRenderer.connection.network.disconnect(); ShutdownManager.shutdown() })
|
||||
add(TextElement(guiRenderer, "Minosoft", HorizontalAlignments.CENTER, false, scale = 3.0f))
|
||||
add(SpacerElement(guiRenderer, Vec2i(0, 20)))
|
||||
add(ButtonElement(guiRenderer, "menu.pause.back_to_game".i18n()) { guiRenderer.gui.pause(false) })
|
||||
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