Button to go back to vanilla inventory screen
This commit is contained in:
parent
3797265107
commit
fcbe68297c
@ -49,6 +49,7 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
gui("recipe.ticks", "%s Ticks")
|
||||
|
||||
gui("exosuit", "Exosuit Inventory")
|
||||
gui("exosuit.go_back", "Open vanilla inventory")
|
||||
|
||||
gui("exosuit.probe1", "This little device feels unnatural to touch, it is almost certainly resilient to any possible attempt to break it open.")
|
||||
gui("exosuit.probe2", "There is fingerprint reader built into one of sides which gently glow when touched.")
|
||||
|
@ -39,8 +39,10 @@ object ClientEventHandler {
|
||||
}
|
||||
}
|
||||
|
||||
var ignoreInventoryOpen = false
|
||||
|
||||
fun screenOpen(event: ScreenEvent.Opening) {
|
||||
if (minecraft.player?.isCreative == true) {
|
||||
if (ignoreInventoryOpen || minecraft.player?.isCreative == true) {
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -17,4 +17,5 @@ object Widgets18 {
|
||||
val PATTERN_SLOT_BACKGROUND = GRID.next()
|
||||
val EQUIPMENT_BATTERY_SLOT_BACKGROUND = GRID.next()
|
||||
val MATTER_CAPACITOR_SLOT_BACKGROUND = GRID.next()
|
||||
val RETURN_ARROW_LEFT = GRID.next()
|
||||
}
|
||||
|
@ -1,9 +1,10 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen
|
||||
|
||||
import com.mojang.blaze3d.platform.InputConstants
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectFunction
|
||||
import net.minecraft.world.inventory.Slot
|
||||
import net.minecraft.client.gui.screens.inventory.InventoryScreen
|
||||
import ru.dbotthepony.mc.otm.client.ClientEventHandler
|
||||
import ru.dbotthepony.mc.otm.client.render.Widgets18
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.client.render.element
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.*
|
||||
@ -127,6 +128,23 @@ class ExoSuitInventoryScreen(menu: ExoSuitInventoryMenu) : MatteryScreen<ExoSuit
|
||||
scrollPanel.dock = Dock.RIGHT
|
||||
scrollPanel.setDockMargin(right = 3f)
|
||||
|
||||
LargeSquareButtonPanel(this, frame, x = frame.width + 2f, skinElement = Widgets18.RETURN_ARROW_LEFT, onPress = {
|
||||
try {
|
||||
ClientEventHandler.ignoreInventoryOpen = true
|
||||
val minecraft = minecraft!!
|
||||
|
||||
val mouseX = minecraft.mouseHandler.xpos()
|
||||
val mouseY = minecraft.mouseHandler.ypos()
|
||||
|
||||
onClose()
|
||||
minecraft.setScreen(InventoryScreen(minecraft.player!!))
|
||||
|
||||
InputConstants.grabOrReleaseMouse(minecraft.window.window, 212993, mouseX, mouseY)
|
||||
} finally {
|
||||
ClientEventHandler.ignoreInventoryOpen = false
|
||||
}
|
||||
}).also { it.tooltip = TranslatableComponent("otm.gui.exosuit.go_back") }
|
||||
|
||||
return frame
|
||||
}
|
||||
|
||||
|
@ -80,12 +80,12 @@ abstract class SquareButtonPanel(
|
||||
width: Float,
|
||||
height: Float,
|
||||
val skinElement: (() -> SkinElement)? = null,
|
||||
val lambdaOnPress: ((clickButton: Int) -> Unit)? = null,
|
||||
val onPress: ((clickButton: Int) -> Unit)? = null,
|
||||
) : EditablePanel(screen, parent, x, y, width, height) {
|
||||
protected var pressed = false
|
||||
|
||||
protected open fun click(clickButton: Int) {
|
||||
lambdaOnPress?.invoke(clickButton)
|
||||
onPress?.invoke(clickButton)
|
||||
}
|
||||
|
||||
abstract val PRESSED: SkinElement
|
||||
@ -154,7 +154,7 @@ abstract class EnumSquareButtonPanel<T : Enum<T>>(
|
||||
val enum: Class<T>,
|
||||
val prop: KMutableProperty0<T>,
|
||||
val defaultValue: T,
|
||||
val lambdaOnChange: ((newValue: T) -> Unit)? = null,
|
||||
val onChange: ((newValue: T) -> Unit)? = null,
|
||||
) : SquareButtonPanel(screen, parent, x, y, width, height, null, null) {
|
||||
private var building = true
|
||||
|
||||
@ -256,18 +256,18 @@ abstract class EnumSquareButtonPanel<T : Enum<T>>(
|
||||
when (clickButton) {
|
||||
InputConstants.MOUSE_BUTTON_LEFT -> {
|
||||
prop.set(prop.get().next(enum.enumConstants))
|
||||
lambdaOnChange?.invoke(prop.get())
|
||||
onChange?.invoke(prop.get())
|
||||
}
|
||||
|
||||
InputConstants.MOUSE_BUTTON_RIGHT -> {
|
||||
prop.set(prop.get().prev(enum.enumConstants))
|
||||
lambdaOnChange?.invoke(prop.get())
|
||||
onChange?.invoke(prop.get())
|
||||
}
|
||||
|
||||
InputConstants.MOUSE_BUTTON_MIDDLE -> {
|
||||
if (prop.get() != defaultValue) {
|
||||
prop.set(defaultValue)
|
||||
lambdaOnChange?.invoke(prop.get())
|
||||
onChange?.invoke(prop.get())
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -321,8 +321,19 @@ open class LargeSquareButtonPanel(
|
||||
width: Float = SIZE,
|
||||
height: Float = SIZE,
|
||||
skinElement: (() -> SkinElement)? = null,
|
||||
lambdaOnPress: ((clickButton: Int) -> Unit)? = null,
|
||||
) : SquareButtonPanel(screen, parent, x, y, width, height, skinElement, lambdaOnPress) {
|
||||
onPress: ((clickButton: Int) -> Unit)? = null,
|
||||
) : SquareButtonPanel(screen, parent, x, y, width, height, skinElement, onPress) {
|
||||
constructor(
|
||||
screen: MatteryScreen<*>,
|
||||
parent: EditablePanel?,
|
||||
x: Float = 0f,
|
||||
y: Float = 0f,
|
||||
width: Float = SIZE,
|
||||
height: Float = SIZE,
|
||||
skinElement: SkinElement,
|
||||
onPress: ((clickButton: Int) -> Unit)? = null,
|
||||
) : this(screen, parent, x, y, width, height, { skinElement }, onPress)
|
||||
|
||||
final override val IDLE = Widgets18.BUTTON_IDLE
|
||||
final override val HOVERED = Widgets18.BUTTON_HOVERED
|
||||
final override val PRESSED = Widgets18.BUTTON_PRESSED
|
||||
@ -341,8 +352,8 @@ open class LargeEnumSquareButtonPanel<T : Enum<T>>(
|
||||
enum: Class<T>,
|
||||
prop: KMutableProperty0<T>,
|
||||
defaultValue: T,
|
||||
lambdaOnChange: ((newValue: T) -> Unit)? = null,
|
||||
) : EnumSquareButtonPanel<T>(screen, parent, x, y, width, height, enum, prop, defaultValue, lambdaOnChange) {
|
||||
onChange: ((newValue: T) -> Unit)? = null,
|
||||
) : EnumSquareButtonPanel<T>(screen, parent, x, y, width, height, enum, prop, defaultValue, onChange) {
|
||||
final override val IDLE = Widgets18.BUTTON_IDLE
|
||||
final override val HOVERED = Widgets18.BUTTON_HOVERED
|
||||
final override val PRESSED = Widgets18.BUTTON_PRESSED
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.7 KiB |
BIN
src/main/resources/assets/overdrive_that_matters/textures/gui/widgets_18.xcf
(Stored with Git LFS)
BIN
src/main/resources/assets/overdrive_that_matters/textures/gui/widgets_18.xcf
(Stored with Git LFS)
Binary file not shown.
Loading…
Reference in New Issue
Block a user