rename LayoutedElement

This commit is contained in:
Bixilon 2023-07-24 19:37:56 +02:00
parent 162d298917
commit eeb44b5552
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
14 changed files with 45 additions and 45 deletions

View File

@ -1,6 +1,6 @@
/* /*
* Minosoft * Minosoft
* Copyright (C) 2020-2022 Moritz Zwerger * Copyright (C) 2020-2023 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 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.
* *
@ -15,6 +15,6 @@ package de.bixilon.minosoft.gui.rendering.gui.elements
import de.bixilon.kotlinglm.vec2.Vec2 import de.bixilon.kotlinglm.vec2.Vec2
interface LayoutedElement { interface ScreenPositionedElement {
val layoutOffset: Vec2 val screenOffset: Vec2
} }

View File

@ -25,8 +25,8 @@ import de.bixilon.minosoft.config.key.KeyCodes
import de.bixilon.minosoft.gui.rendering.gui.GUIElement import de.bixilon.minosoft.gui.rendering.gui.GUIElement
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.LayoutedElement
import de.bixilon.minosoft.gui.rendering.gui.elements.Pollable import de.bixilon.minosoft.gui.rendering.gui.elements.Pollable
import de.bixilon.minosoft.gui.rendering.gui.elements.ScreenPositionedElement
import de.bixilon.minosoft.gui.rendering.gui.gui.dragged.Dragged import de.bixilon.minosoft.gui.rendering.gui.gui.dragged.Dragged
import de.bixilon.minosoft.gui.rendering.gui.gui.screen.CreditsScreen import de.bixilon.minosoft.gui.rendering.gui.gui.screen.CreditsScreen
import de.bixilon.minosoft.gui.rendering.gui.gui.screen.SignEditorScreen import de.bixilon.minosoft.gui.rendering.gui.gui.screen.SignEditorScreen
@ -283,7 +283,7 @@ class GUIManager(
onMouseMove(guiRenderer.currentMousePosition) onMouseMove(guiRenderer.currentMousePosition)
} }
fun push(element: LayoutedElement) { fun push(element: ScreenPositionedElement) {
val layouted = LayoutedGUIElement(element) val layouted = LayoutedGUIElement(element)
layouted.init() layouted.init()
layouted.postInit() layouted.postInit()

View File

@ -1,6 +1,6 @@
/* /*
* Minosoft * Minosoft
* Copyright (C) 2020-2022 Moritz Zwerger * Copyright (C) 2020-2023 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 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.
* *
@ -16,21 +16,21 @@ package de.bixilon.minosoft.gui.rendering.gui.gui
import de.bixilon.kotlinglm.vec2.Vec2 import de.bixilon.kotlinglm.vec2.Vec2
import de.bixilon.kutil.cast.CastUtil.unsafeCast import de.bixilon.kutil.cast.CastUtil.unsafeCast
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.LayoutedElement import de.bixilon.minosoft.gui.rendering.gui.elements.ScreenPositionedElement
import de.bixilon.minosoft.gui.rendering.gui.gui.dragged.Dragged import de.bixilon.minosoft.gui.rendering.gui.gui.dragged.Dragged
import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2Util.isGreater import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2Util.isGreater
import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2Util.isSmaller import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2Util.isSmaller
open class LayoutedGUIElement<T : LayoutedElement>( open class LayoutedGUIElement<T : ScreenPositionedElement>(
val layout: T, val layout: T,
) : GUIMeshElement<Element>(layout.unsafeCast()) { ) : GUIMeshElement<Element>(layout.unsafeCast()) {
override fun prepareAsync() { override fun prepareAsync() {
prepareAsync(layout.layoutOffset) prepareAsync(layout.screenOffset)
} }
protected open fun getOffset(position: Vec2): Vec2? { protected open fun getOffset(position: Vec2): Vec2? {
val layoutOffset = layout.layoutOffset val layoutOffset = layout.screenOffset
val size = element.size val size = element.size
if (position isSmaller layoutOffset) { if (position isSmaller layoutOffset) {
return null return null

View File

@ -18,7 +18,7 @@ import de.bixilon.minosoft.data.text.formatting.color.RGBColor
import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer
import de.bixilon.minosoft.gui.rendering.gui.GuiDelegate import de.bixilon.minosoft.gui.rendering.gui.GuiDelegate
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.LayoutedElement import de.bixilon.minosoft.gui.rendering.gui.elements.ScreenPositionedElement
import de.bixilon.minosoft.gui.rendering.gui.elements.primitive.ColorElement import de.bixilon.minosoft.gui.rendering.gui.elements.primitive.ColorElement
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions
@ -29,10 +29,10 @@ abstract class Popper(
guiRenderer: GUIRenderer, guiRenderer: GUIRenderer,
position: Vec2, position: Vec2,
val background: Boolean = true, val background: Boolean = true,
) : Element(guiRenderer), LayoutedElement { ) : Element(guiRenderer), ScreenPositionedElement {
private val backgroundElement = ColorElement(guiRenderer, Vec2.EMPTY, color = RGBColor(10, 10, 20, 230)) private val backgroundElement = ColorElement(guiRenderer, Vec2.EMPTY, color = RGBColor(10, 10, 20, 230))
open var dead = false open var dead = false
override var layoutOffset: Vec2 = EMPTY override var screenOffset: Vec2 = EMPTY
protected set protected set
var position by GuiDelegate(position) var position by GuiDelegate(position)
@ -65,12 +65,12 @@ abstract class Popper(
layoutOffset = position - Vec2(0, size.y + POSITION_OFFSET) layoutOffset = position - Vec2(0, size.y + POSITION_OFFSET)
if (!(layoutOffset isSmaller EMPTY)) { if (!(layoutOffset isSmaller EMPTY)) {
layoutOffset.x = minOf(maxOf(layoutOffset.x - size.x / 2 - POSITION_OFFSET, 0.0f), windowSize.x - size.x) // try to center element, but clamp on edges (try not to make the popper go out of the window) layoutOffset.x = minOf(maxOf(layoutOffset.x - size.x / 2 - POSITION_OFFSET, 0.0f), windowSize.x - size.x) // try to center element, but clamp on edges (try not to make the popper go out of the window)
this.layoutOffset = layoutOffset this.screenOffset = layoutOffset
return return
} }
// failover // failover
this.layoutOffset = EMPTY this.screenOffset = EMPTY
} }
fun show() { fun show() {

View File

@ -19,7 +19,7 @@ import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer
import de.bixilon.minosoft.gui.rendering.gui.abstractions.children.ChildedElement import de.bixilon.minosoft.gui.rendering.gui.abstractions.children.ChildedElement
import de.bixilon.minosoft.gui.rendering.gui.abstractions.children.manager.collection.SetChildrenManager import de.bixilon.minosoft.gui.rendering.gui.abstractions.children.manager.collection.SetChildrenManager
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.LayoutedElement import de.bixilon.minosoft.gui.rendering.gui.elements.ScreenPositionedElement
import de.bixilon.minosoft.gui.rendering.gui.elements.primitive.AtlasImageElement import de.bixilon.minosoft.gui.rendering.gui.elements.primitive.AtlasImageElement
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions
@ -27,10 +27,10 @@ import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2Util.EMPTY
abstract class Screen( abstract class Screen(
guiRenderer: GUIRenderer, guiRenderer: GUIRenderer,
) : Element(guiRenderer), LayoutedElement, ChildedElement { ) : Element(guiRenderer), ScreenPositionedElement, ChildedElement {
override val children = SetChildrenManager(this) override val children = SetChildrenManager(this)
protected val background = AtlasImageElement(guiRenderer, context.textures.whiteTexture, size = guiRenderer.screen.scaled, tint = RGBColor(0.0f, 0.0f, 0.0f, 0.8f)) protected val background = AtlasImageElement(guiRenderer, context.textures.whiteTexture, size = guiRenderer.screen.scaled, tint = RGBColor(0.0f, 0.0f, 0.0f, 0.8f))
override val layoutOffset: Vec2 = Vec2(0, 0) override val screenOffset: Vec2 = Vec2(0, 0)
override fun update() { override fun update() {

View File

@ -20,18 +20,18 @@ import de.bixilon.minosoft.data.bossbar.Bossbar
import de.bixilon.minosoft.data.registries.identified.ResourceLocation import de.bixilon.minosoft.data.registries.identified.ResourceLocation
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.HorizontalAlignments
import de.bixilon.minosoft.gui.rendering.gui.elements.LayoutedElement import de.bixilon.minosoft.gui.rendering.gui.elements.ScreenPositionedElement
import de.bixilon.minosoft.gui.rendering.gui.elements.layout.RowLayout import de.bixilon.minosoft.gui.rendering.gui.elements.layout.RowLayout
import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.HUDBuilder import de.bixilon.minosoft.gui.rendering.gui.hud.elements.HUDBuilder
import de.bixilon.minosoft.util.Initializable import de.bixilon.minosoft.util.Initializable
import de.bixilon.minosoft.util.KUtil.toResourceLocation import de.bixilon.minosoft.util.KUtil.toResourceLocation
class BossbarLayout(guiRenderer: GUIRenderer) : RowLayout(guiRenderer, HorizontalAlignments.CENTER, 2.0f), LayoutedElement, Initializable { class BossbarLayout(guiRenderer: GUIRenderer) : RowLayout(guiRenderer, HorizontalAlignments.CENTER, 2.0f), ScreenPositionedElement, Initializable {
private val connection = context.connection private val connection = context.connection
private val bossbars: MutableMap<Bossbar, BossbarElement> = synchronizedMapOf() private val bossbars: MutableMap<Bossbar, BossbarElement> = synchronizedMapOf()
override val layoutOffset: Vec2 override val screenOffset: Vec2
get() = Vec2((guiRenderer.screen.scaled.x - super.size.x) / 2, 2) get() = Vec2((guiRenderer.screen.scaled.x - super.size.x) / 2, 2)
val atlasManager = guiRenderer.atlasManager val atlasManager = guiRenderer.atlasManager

View File

@ -26,7 +26,7 @@ import de.bixilon.minosoft.data.registries.identified.ResourceLocation
import de.bixilon.minosoft.gui.rendering.font.renderer.element.TextRenderProperties import de.bixilon.minosoft.gui.rendering.font.renderer.element.TextRenderProperties
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.LayoutedElement import de.bixilon.minosoft.gui.rendering.gui.elements.ScreenPositionedElement
import de.bixilon.minosoft.gui.rendering.gui.gui.GUIBuilder import de.bixilon.minosoft.gui.rendering.gui.gui.GUIBuilder
import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement
import de.bixilon.minosoft.gui.rendering.gui.gui.elements.input.node.NodeTextInputElement import de.bixilon.minosoft.gui.rendering.gui.gui.elements.input.node.NodeTextInputElement
@ -39,7 +39,7 @@ import de.bixilon.minosoft.modding.event.listener.CallbackEventListener.Companio
import de.bixilon.minosoft.util.KUtil.toResourceLocation import de.bixilon.minosoft.util.KUtil.toResourceLocation
import de.bixilon.minosoft.util.delegate.RenderingDelegate.observeRendering import de.bixilon.minosoft.util.delegate.RenderingDelegate.observeRendering
class ChatElement(guiRenderer: GUIRenderer) : AbstractChatElement(guiRenderer), LayoutedElement { class ChatElement(guiRenderer: GUIRenderer) : AbstractChatElement(guiRenderer), ScreenPositionedElement {
private val chatProfile = profile.chat private val chatProfile = profile.chat
private val input = NodeTextInputElement(guiRenderer, ChatNode("", allowCLI = true), maxLength = connection.version.maxChatMessageSize).apply { parent = this@ChatElement } private val input = NodeTextInputElement(guiRenderer, ChatNode("", allowCLI = true), maxLength = connection.version.maxChatMessageSize).apply { parent = this@ChatElement }
private val internal = InternalChatElement(guiRenderer).apply { parent = this@ChatElement } private val internal = InternalChatElement(guiRenderer).apply { parent = this@ChatElement }
@ -61,7 +61,7 @@ class ChatElement(guiRenderer: GUIRenderer) : AbstractChatElement(guiRenderer),
override val activeWhenHidden: Boolean override val activeWhenHidden: Boolean
get() = true get() = true
override val layoutOffset: Vec2 override val screenOffset: Vec2
get() = Vec2(0, guiRenderer.screen.scaled.y - maxOf(messages.size.y, internal.size.y) - (LINES * TEXT_PROPERTIES.lineHeight) - CHAT_INPUT_MARGIN * 2) get() = Vec2(0, guiRenderer.screen.scaled.y - maxOf(messages.size.y, internal.size.y) - (LINES * TEXT_PROPERTIES.lineHeight) - CHAT_INPUT_MARGIN * 2)

View File

@ -28,7 +28,7 @@ import de.bixilon.minosoft.gui.rendering.gui.abstractions.children.manager.colle
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.HorizontalAlignments import de.bixilon.minosoft.gui.rendering.gui.elements.HorizontalAlignments
import de.bixilon.minosoft.gui.rendering.gui.elements.HorizontalAlignments.Companion.getOffset import de.bixilon.minosoft.gui.rendering.gui.elements.HorizontalAlignments.Companion.getOffset
import de.bixilon.minosoft.gui.rendering.gui.elements.LayoutedElement import de.bixilon.minosoft.gui.rendering.gui.elements.ScreenPositionedElement
import de.bixilon.minosoft.gui.rendering.gui.elements.text.fade.FadingTextElement import de.bixilon.minosoft.gui.rendering.gui.elements.text.fade.FadingTextElement
import de.bixilon.minosoft.gui.rendering.gui.elements.text.fade.FadingTimes import de.bixilon.minosoft.gui.rendering.gui.elements.text.fade.FadingTimes
import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement
@ -44,7 +44,7 @@ import de.bixilon.minosoft.util.Initializable
import de.bixilon.minosoft.util.KUtil.toResourceLocation import de.bixilon.minosoft.util.KUtil.toResourceLocation
import de.bixilon.minosoft.util.delegate.RenderingDelegate.observeRendering import de.bixilon.minosoft.util.delegate.RenderingDelegate.observeRendering
class HotbarElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedElement, Initializable, ChildedElement { class HotbarElement(guiRenderer: GUIRenderer) : Element(guiRenderer), ScreenPositionedElement, Initializable, ChildedElement {
override val children = ListChildrenManager(this) override val children = ListChildrenManager(this)
val core = HotbarCoreElement(guiRenderer) val core = HotbarCoreElement(guiRenderer)
@ -60,7 +60,7 @@ class HotbarElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedEl
private var itemTextSize: Vec2? = null private var itemTextSize: Vec2? = null
override val layoutOffset: Vec2 override val screenOffset: Vec2
get() = size.let { Vec2((guiRenderer.screen.scaled.x - it.x) / 2, guiRenderer.screen.scaled.y - it.y) } get() = size.let { Vec2((guiRenderer.screen.scaled.x - it.x) / 2, guiRenderer.screen.scaled.y - it.y) }
private var renderElements = setOf( private var renderElements = setOf(

View File

@ -22,7 +22,7 @@ import de.bixilon.minosoft.gui.rendering.gui.GuiDelegate
import de.bixilon.minosoft.gui.rendering.gui.abstractions.children.ChildedElement import de.bixilon.minosoft.gui.rendering.gui.abstractions.children.ChildedElement
import de.bixilon.minosoft.gui.rendering.gui.abstractions.children.manager.SingleChildrenManager import de.bixilon.minosoft.gui.rendering.gui.abstractions.children.manager.SingleChildrenManager
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.LayoutedElement import de.bixilon.minosoft.gui.rendering.gui.elements.ScreenPositionedElement
import de.bixilon.minosoft.gui.rendering.gui.elements.text.TextElement import de.bixilon.minosoft.gui.rendering.gui.elements.text.TextElement
import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.HUDBuilder import de.bixilon.minosoft.gui.rendering.gui.hud.elements.HUDBuilder
@ -31,10 +31,10 @@ import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions
import de.bixilon.minosoft.util.KUtil.toResourceLocation import de.bixilon.minosoft.util.KUtil.toResourceLocation
class PerformanceHUDElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedElement, ChildedElement { class PerformanceHUDElement(guiRenderer: GUIRenderer) : Element(guiRenderer), ScreenPositionedElement, ChildedElement {
override val children = SingleChildrenManager() override val children = SingleChildrenManager()
private val text = TextElement(guiRenderer, "", parent = this) private val text = TextElement(guiRenderer, "", parent = this)
override val layoutOffset: Vec2 = Vec2(2, 2) override val screenOffset: Vec2 = Vec2(2, 2)
private var fps by GuiDelegate(0.0) private var fps by GuiDelegate(0.0)
private var hide by GuiDelegate(false) private var hide by GuiDelegate(false)

View File

@ -38,7 +38,7 @@ import de.bixilon.minosoft.gui.rendering.font.renderer.element.TextRenderPropert
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.HorizontalAlignments import de.bixilon.minosoft.gui.rendering.gui.elements.HorizontalAlignments
import de.bixilon.minosoft.gui.rendering.gui.elements.LayoutedElement import de.bixilon.minosoft.gui.rendering.gui.elements.ScreenPositionedElement
import de.bixilon.minosoft.gui.rendering.gui.elements.layout.RowLayout import de.bixilon.minosoft.gui.rendering.gui.elements.layout.RowLayout
import de.bixilon.minosoft.gui.rendering.gui.elements.spacer.LineSpacerElement import de.bixilon.minosoft.gui.rendering.gui.elements.spacer.LineSpacerElement
import de.bixilon.minosoft.gui.rendering.gui.elements.text.AutoTextElement import de.bixilon.minosoft.gui.rendering.gui.elements.text.AutoTextElement
@ -60,11 +60,11 @@ import de.bixilon.minosoft.util.KUtil.format
import de.bixilon.minosoft.util.KUtil.toResourceLocation import de.bixilon.minosoft.util.KUtil.toResourceLocation
import de.bixilon.minosoft.util.SystemInformation import de.bixilon.minosoft.util.SystemInformation
class DebugHUDElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedElement, Initializable { class DebugHUDElement(guiRenderer: GUIRenderer) : Element(guiRenderer), ScreenPositionedElement, Initializable {
private val connection = context.connection private val connection = context.connection
private val left = initLeft() private val left = initLeft()
private val right = initRight() private val right = initRight()
override val layoutOffset: Vec2 = Vec2.EMPTY override val screenOffset: Vec2 = Vec2.EMPTY
override val ignoreScreenDimensions: Boolean get() = true override val ignoreScreenDimensions: Boolean get() = true

View File

@ -29,7 +29,7 @@ import de.bixilon.minosoft.gui.rendering.gui.abstractions.children.manager.Singl
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.HorizontalAlignments import de.bixilon.minosoft.gui.rendering.gui.elements.HorizontalAlignments
import de.bixilon.minosoft.gui.rendering.gui.elements.HorizontalAlignments.Companion.getOffset import de.bixilon.minosoft.gui.rendering.gui.elements.HorizontalAlignments.Companion.getOffset
import de.bixilon.minosoft.gui.rendering.gui.elements.LayoutedElement import de.bixilon.minosoft.gui.rendering.gui.elements.ScreenPositionedElement
import de.bixilon.minosoft.gui.rendering.gui.elements.primitive.ColorElement import de.bixilon.minosoft.gui.rendering.gui.elements.primitive.ColorElement
import de.bixilon.minosoft.gui.rendering.gui.elements.text.TextElement import de.bixilon.minosoft.gui.rendering.gui.elements.text.TextElement
import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement
@ -44,14 +44,14 @@ import de.bixilon.minosoft.modding.event.listener.CallbackEventListener.Companio
import de.bixilon.minosoft.util.Initializable import de.bixilon.minosoft.util.Initializable
import de.bixilon.minosoft.util.KUtil.toResourceLocation import de.bixilon.minosoft.util.KUtil.toResourceLocation
class ScoreboardSideElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedElement, Initializable, AsyncDrawable, ChildedElement { class ScoreboardSideElement(guiRenderer: GUIRenderer) : Element(guiRenderer), ScreenPositionedElement, Initializable, AsyncDrawable, ChildedElement {
override val children = SingleChildrenManager() override val children = SingleChildrenManager()
private val backgroundElement = ColorElement(guiRenderer, size = Vec2.EMPTY, color = RenderConstants.TEXT_BACKGROUND_COLOR) private val backgroundElement = ColorElement(guiRenderer, size = Vec2.EMPTY, color = RenderConstants.TEXT_BACKGROUND_COLOR)
private val nameBackgroundElement = ColorElement(guiRenderer, size = Vec2.EMPTY, color = RenderConstants.TEXT_BACKGROUND_COLOR) private val nameBackgroundElement = ColorElement(guiRenderer, size = Vec2.EMPTY, color = RenderConstants.TEXT_BACKGROUND_COLOR)
private val nameElement = TextElement(guiRenderer, "", background = null, parent = this) private val nameElement = TextElement(guiRenderer, "", background = null, parent = this)
private val scores: LockMap<ScoreboardScore, ScoreboardScoreElement> = lockMapOf() private val scores: LockMap<ScoreboardScore, ScoreboardScoreElement> = lockMapOf()
override val layoutOffset: Vec2 override val screenOffset: Vec2
get() = super.size.let { return@let Vec2(guiRenderer.screen.scaled.x - it.x, (guiRenderer.screen.scaled.y - it.y) / 2) } get() = super.size.let { return@let Vec2(guiRenderer.screen.scaled.x - it.x, (guiRenderer.screen.scaled.y - it.y) / 2) }
override val skipDraw: Boolean override val skipDraw: Boolean
get() = objective == null get() = objective == null

View File

@ -32,7 +32,7 @@ import de.bixilon.minosoft.gui.rendering.gui.atlas.AtlasElement
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.HorizontalAlignments import de.bixilon.minosoft.gui.rendering.gui.elements.HorizontalAlignments
import de.bixilon.minosoft.gui.rendering.gui.elements.HorizontalAlignments.Companion.getOffset import de.bixilon.minosoft.gui.rendering.gui.elements.HorizontalAlignments.Companion.getOffset
import de.bixilon.minosoft.gui.rendering.gui.elements.LayoutedElement import de.bixilon.minosoft.gui.rendering.gui.elements.ScreenPositionedElement
import de.bixilon.minosoft.gui.rendering.gui.elements.primitive.ColorElement import de.bixilon.minosoft.gui.rendering.gui.elements.primitive.ColorElement
import de.bixilon.minosoft.gui.rendering.gui.elements.text.TextElement import de.bixilon.minosoft.gui.rendering.gui.elements.text.TextElement
import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement
@ -48,7 +48,7 @@ import de.bixilon.minosoft.util.KUtil.toResourceLocation
import java.util.* import java.util.*
import java.util.concurrent.locks.ReentrantLock import java.util.concurrent.locks.ReentrantLock
class TabListElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedElement, Initializable, AsyncDrawable, ChildedElement { class TabListElement(guiRenderer: GUIRenderer) : Element(guiRenderer), ScreenPositionedElement, Initializable, AsyncDrawable, ChildedElement {
override val children = ListChildrenManager(this) override val children = ListChildrenManager(this)
val header = TextElement(guiRenderer, "", background = null, properties = TextRenderProperties(HorizontalAlignments.CENTER), parent = this) val header = TextElement(guiRenderer, "", background = null, properties = TextRenderProperties(HorizontalAlignments.CENTER), parent = this)
val footer = TextElement(guiRenderer, "", background = null, properties = TextRenderProperties(HorizontalAlignments.CENTER), parent = this) val footer = TextElement(guiRenderer, "", background = null, properties = TextRenderProperties(HorizontalAlignments.CENTER), parent = this)
@ -65,7 +65,7 @@ class TabListElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedE
private set private set
private var columns = 0 private var columns = 0
override val layoutOffset: Vec2 override val screenOffset: Vec2
get() = Vec2((guiRenderer.screen.scaled.x - super.size.x) / 2, 20) get() = Vec2((guiRenderer.screen.scaled.x - super.size.x) / 2, 20)
private val atlasManager = guiRenderer.atlasManager private val atlasManager = guiRenderer.atlasManager

View File

@ -22,7 +22,7 @@ import de.bixilon.minosoft.gui.rendering.gui.abstractions.children.manager.colle
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.HorizontalAlignments import de.bixilon.minosoft.gui.rendering.gui.elements.HorizontalAlignments
import de.bixilon.minosoft.gui.rendering.gui.elements.HorizontalAlignments.Companion.getOffset import de.bixilon.minosoft.gui.rendering.gui.elements.HorizontalAlignments.Companion.getOffset
import de.bixilon.minosoft.gui.rendering.gui.elements.LayoutedElement import de.bixilon.minosoft.gui.rendering.gui.elements.ScreenPositionedElement
import de.bixilon.minosoft.gui.rendering.gui.elements.text.fade.FadingTextElement import de.bixilon.minosoft.gui.rendering.gui.elements.text.fade.FadingTextElement
import de.bixilon.minosoft.gui.rendering.gui.elements.text.fade.FadingTimes import de.bixilon.minosoft.gui.rendering.gui.elements.text.fade.FadingTimes
import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement
@ -37,7 +37,7 @@ import de.bixilon.minosoft.util.Initializable
import de.bixilon.minosoft.util.KUtil.toResourceLocation import de.bixilon.minosoft.util.KUtil.toResourceLocation
// ToDo: Remove subtitle when hidden // ToDo: Remove subtitle when hidden
class TitleElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedElement, Initializable, ChildedElement { class TitleElement(guiRenderer: GUIRenderer) : Element(guiRenderer), ScreenPositionedElement, Initializable, ChildedElement {
override val children = SetChildrenManager(this) override val children = SetChildrenManager(this)
val title = FadingTextElement(guiRenderer, "", background = null, properties = TextRenderProperties(scale = 4.0f), parent = this) val title = FadingTextElement(guiRenderer, "", background = null, properties = TextRenderProperties(scale = 4.0f), parent = this)
val subtitle = FadingTextElement(guiRenderer, "", background = null, properties = TextRenderProperties(scale = 2.0f), parent = this) val subtitle = FadingTextElement(guiRenderer, "", background = null, properties = TextRenderProperties(scale = 2.0f), parent = this)
@ -49,7 +49,7 @@ class TitleElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedEle
subtitle.times = value subtitle.times = value
} }
override val layoutOffset: Vec2 override val screenOffset: Vec2
get() { get() {
val layoutOffset = Vec2.EMPTY val layoutOffset = Vec2.EMPTY

View File

@ -23,7 +23,7 @@ import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer
import de.bixilon.minosoft.gui.rendering.gui.abstractions.children.ChildedElement import de.bixilon.minosoft.gui.rendering.gui.abstractions.children.ChildedElement
import de.bixilon.minosoft.gui.rendering.gui.abstractions.children.manager.collection.SetChildrenManager import de.bixilon.minosoft.gui.rendering.gui.abstractions.children.manager.collection.SetChildrenManager
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.LayoutedElement import de.bixilon.minosoft.gui.rendering.gui.elements.ScreenPositionedElement
import de.bixilon.minosoft.gui.rendering.gui.elements.primitive.ColorElement import de.bixilon.minosoft.gui.rendering.gui.elements.primitive.ColorElement
import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.HUDBuilder import de.bixilon.minosoft.gui.rendering.gui.hud.elements.HUDBuilder
@ -35,13 +35,13 @@ import de.bixilon.minosoft.gui.rendering.renderer.drawable.AsyncDrawable
import de.bixilon.minosoft.input.interaction.AttackHandler import de.bixilon.minosoft.input.interaction.AttackHandler
import de.bixilon.minosoft.util.KUtil.toResourceLocation import de.bixilon.minosoft.util.KUtil.toResourceLocation
class WawlaHUDElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedElement, AsyncDrawable, ChildedElement { class WawlaHUDElement(guiRenderer: GUIRenderer) : Element(guiRenderer), ScreenPositionedElement, AsyncDrawable, ChildedElement {
override val children = SetChildrenManager(this) override val children = SetChildrenManager(this)
private var element: WawlaElement? = null private var element: WawlaElement? = null
val profile = guiRenderer.connection.profiles.gui.hud.wawla val profile = guiRenderer.connection.profiles.gui.hud.wawla
override val layoutOffset: Vec2 override val screenOffset: Vec2
get() = Vec2((guiRenderer.screen.scaled.x - ((element?.size?.x ?: 0.0f) + BACKGROUND_SIZE)) / 2, BACKGROUND_SIZE) get() = Vec2((guiRenderer.screen.scaled.x - ((element?.size?.x ?: 0.0f) + BACKGROUND_SIZE)) / 2, BACKGROUND_SIZE)
override val skipDraw: Boolean override val skipDraw: Boolean
get() = !profile.enabled get() = !profile.enabled