Add exopack charge slots to all guis
This commit is contained in:
parent
232701b8bb
commit
1a9877a49d
@ -199,40 +199,7 @@ class ExoPackInventoryScreen(menu: ExoPackInventoryMenu) : MatteryScreen<ExoPack
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val chargeWidth = HorizontalPowerGaugePanel.GAUGE_BACKGROUND_TALL.width + AbstractSlotPanel.SIZE + 6f + ProgressGaugePanel.GAUGE_BACKGROUND.width * 2f
|
makeChargePanels(frame)
|
||||||
val chargeStrip = BackgroundPanel.paddedCenter(this, frame, frame.width - chargeWidth - 6f, frame.height + 2f, chargeWidth, AbstractSlotPanel.SIZE)
|
|
||||||
val chargeStrip2 = BackgroundPanel.paddedCenter(this, frame, frame.width + 2f, frame.height - AbstractSlotPanel.SIZE * 3f + 2f, AbstractSlotPanel.SIZE, AbstractSlotPanel.SIZE * 4f)
|
|
||||||
|
|
||||||
chargeStrip.customDock { chargeStrip.setPos(frame.width - chargeWidth - 6f, frame.height + 2f) }
|
|
||||||
chargeStrip2.customDock { chargeStrip2.setPos(frame.width + 2f, frame.height - AbstractSlotPanel.SIZE * 3f + 2f) }
|
|
||||||
|
|
||||||
BatterySlotPanel(this, chargeStrip, menu.exoPackPowerSlot).also {
|
|
||||||
it.dock = Dock.LEFT
|
|
||||||
}
|
|
||||||
|
|
||||||
SpritePanel(this, chargeStrip, ProgressGaugePanel.GAUGE_BACKGROUND).also {
|
|
||||||
it.dock = Dock.LEFT
|
|
||||||
it.dockLeft = 2f
|
|
||||||
it.dockResize = DockResizeMode.NONE
|
|
||||||
}
|
|
||||||
|
|
||||||
TallHorizontalProfiledPowerGaugePanel(this, chargeStrip, menu.exoPackPower).also {
|
|
||||||
it.dock = Dock.LEFT
|
|
||||||
it.dockLeft = 2f
|
|
||||||
}
|
|
||||||
|
|
||||||
SpritePanel(this, chargeStrip, ProgressGaugePanel.GAUGE_BACKGROUND).also {
|
|
||||||
it.dock = Dock.LEFT
|
|
||||||
it.dockLeft = 2f
|
|
||||||
it.dockResize = DockResizeMode.NONE
|
|
||||||
}
|
|
||||||
|
|
||||||
for (slot in menu.exoPackChargeSlots) {
|
|
||||||
SlotPanel(this, chargeStrip2, slot).also {
|
|
||||||
it.dock = Dock.BOTTOM
|
|
||||||
it.slotBackground = Widgets18.CHARGE_SLOT_BACKGROUND
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
scrollPanel.dock = Dock.RIGHT
|
scrollPanel.dock = Dock.RIGHT
|
||||||
scrollPanel.setDockMargin(right = 3f)
|
scrollPanel.setDockMargin(right = 3f)
|
||||||
|
@ -18,13 +18,20 @@ import net.minecraftforge.common.MinecraftForge
|
|||||||
import org.lwjgl.opengl.GL11
|
import org.lwjgl.opengl.GL11
|
||||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||||
import ru.dbotthepony.mc.otm.client.moveMousePosScaled
|
import ru.dbotthepony.mc.otm.client.moveMousePosScaled
|
||||||
|
import ru.dbotthepony.mc.otm.client.render.Widgets18
|
||||||
import ru.dbotthepony.mc.otm.client.render.translation
|
import ru.dbotthepony.mc.otm.client.render.translation
|
||||||
import ru.dbotthepony.mc.otm.client.screen.panels.*
|
import ru.dbotthepony.mc.otm.client.screen.panels.*
|
||||||
import ru.dbotthepony.mc.otm.client.screen.panels.slot.AbstractSlotPanel
|
import ru.dbotthepony.mc.otm.client.screen.panels.slot.AbstractSlotPanel
|
||||||
|
import ru.dbotthepony.mc.otm.client.screen.panels.slot.BatterySlotPanel
|
||||||
import ru.dbotthepony.mc.otm.client.screen.panels.slot.InventorySlotPanel
|
import ru.dbotthepony.mc.otm.client.screen.panels.slot.InventorySlotPanel
|
||||||
|
import ru.dbotthepony.mc.otm.client.screen.panels.slot.SlotPanel
|
||||||
|
import ru.dbotthepony.mc.otm.client.screen.panels.util.BackgroundPanel
|
||||||
import ru.dbotthepony.mc.otm.client.screen.panels.util.DiscreteScrollBarPanel
|
import ru.dbotthepony.mc.otm.client.screen.panels.util.DiscreteScrollBarPanel
|
||||||
import ru.dbotthepony.mc.otm.client.screen.panels.util.HeightControls
|
import ru.dbotthepony.mc.otm.client.screen.panels.util.HeightControls
|
||||||
import ru.dbotthepony.mc.otm.client.screen.panels.util.ScrollBarConstants
|
import ru.dbotthepony.mc.otm.client.screen.panels.util.ScrollBarConstants
|
||||||
|
import ru.dbotthepony.mc.otm.client.screen.widget.HorizontalPowerGaugePanel
|
||||||
|
import ru.dbotthepony.mc.otm.client.screen.widget.ProgressGaugePanel
|
||||||
|
import ru.dbotthepony.mc.otm.client.screen.widget.TallHorizontalProfiledPowerGaugePanel
|
||||||
import ru.dbotthepony.mc.otm.config.ClientConfig
|
import ru.dbotthepony.mc.otm.config.ClientConfig
|
||||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||||
import ru.dbotthepony.mc.otm.core.math.component1
|
import ru.dbotthepony.mc.otm.core.math.component1
|
||||||
@ -149,6 +156,43 @@ abstract class MatteryScreen<T : MatteryMenu>(menu: T, inventory: Inventory, tit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected fun makeChargePanels(frame: EditablePanel<*>) {
|
||||||
|
val chargeWidth = HorizontalPowerGaugePanel.GAUGE_BACKGROUND_TALL.width + AbstractSlotPanel.SIZE + 6f + ProgressGaugePanel.GAUGE_BACKGROUND.width * 2f
|
||||||
|
val chargeStrip = BackgroundPanel.paddedCenter(this, frame, frame.width - chargeWidth - 6f, frame.height + 2f, chargeWidth, AbstractSlotPanel.SIZE)
|
||||||
|
val chargeStrip2 = BackgroundPanel.paddedCenter(this, frame, frame.width + 2f, frame.height - AbstractSlotPanel.SIZE * 3f + 2f, AbstractSlotPanel.SIZE, AbstractSlotPanel.SIZE * 4f)
|
||||||
|
|
||||||
|
chargeStrip.customDock { chargeStrip.setPos(frame.width - chargeWidth - 6f, frame.height + 2f) }
|
||||||
|
chargeStrip2.customDock { chargeStrip2.setPos(frame.width + 2f, frame.height - AbstractSlotPanel.SIZE * 3f + 2f) }
|
||||||
|
|
||||||
|
BatterySlotPanel(this, chargeStrip, menu.exopackChargeSlots[0]).also {
|
||||||
|
it.dock = Dock.LEFT
|
||||||
|
}
|
||||||
|
|
||||||
|
SpritePanel(this, chargeStrip, ProgressGaugePanel.GAUGE_BACKGROUND).also {
|
||||||
|
it.dock = Dock.LEFT
|
||||||
|
it.dockLeft = 2f
|
||||||
|
it.dockResize = DockResizeMode.NONE
|
||||||
|
}
|
||||||
|
|
||||||
|
TallHorizontalProfiledPowerGaugePanel(this, chargeStrip, menu.exopackPowerLevel).also {
|
||||||
|
it.dock = Dock.LEFT
|
||||||
|
it.dockLeft = 2f
|
||||||
|
}
|
||||||
|
|
||||||
|
SpritePanel(this, chargeStrip, ProgressGaugePanel.GAUGE_BACKGROUND).also {
|
||||||
|
it.dock = Dock.LEFT
|
||||||
|
it.dockLeft = 2f
|
||||||
|
it.dockResize = DockResizeMode.NONE
|
||||||
|
}
|
||||||
|
|
||||||
|
for (slot in menu.exopackChargeSlots.listIterator(1)) {
|
||||||
|
SlotPanel(this, chargeStrip2, slot).also {
|
||||||
|
it.dock = Dock.BOTTOM
|
||||||
|
it.slotBackground = Widgets18.CHARGE_SLOT_BACKGROUND
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
if (menu.playerInventorySlots.isNotEmpty() && menu.autoCreateInventoryFrame) {
|
if (menu.playerInventorySlots.isNotEmpty() && menu.autoCreateInventoryFrame) {
|
||||||
if (menu.playerExoSuitSlots.isEmpty()) {
|
if (menu.playerExoSuitSlots.isEmpty()) {
|
||||||
@ -239,6 +283,10 @@ abstract class MatteryScreen<T : MatteryMenu>(menu: T, inventory: Inventory, tit
|
|||||||
moveMousePosScaled(y = movePixels)
|
moveMousePosScaled(y = movePixels)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (menu.exopackChargeSlots.isNotEmpty()) {
|
||||||
|
makeChargePanels(inventoryFrame!!)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -132,21 +132,11 @@ class ExoPackInventoryMenu(val capability: MatteryPlayerCapability) : MatteryMen
|
|||||||
}
|
}
|
||||||
|
|
||||||
val furnaceProgress = capability.smelters.map { ProgressGaugeWidget(mSynchronizer, it) }
|
val furnaceProgress = capability.smelters.map { ProgressGaugeWidget(mSynchronizer, it) }
|
||||||
val exoPackPowerSlot = BatterySlot(capability.exoPackEnergy.parent, 0)
|
|
||||||
val exoPackPower = ProfiledLevelGaugeWidget(mSynchronizer, capability.exoPackEnergy)
|
|
||||||
|
|
||||||
val furnaceMenuOpenState = InstantBooleanInput(this)
|
val furnaceMenuOpenState = InstantBooleanInput(this)
|
||||||
|
|
||||||
val exoPackChargeSlots = makeSlots(capability.exoPackChargeSlots, ::ChargeSlot)
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
addStorageSlot(furnaceInputs, condition = furnaceMenuOpenState)
|
addStorageSlot(furnaceInputs, condition = furnaceMenuOpenState)
|
||||||
addStorageSlot(furnaceOutputs, condition = furnaceMenuOpenState)
|
addStorageSlot(furnaceOutputs, condition = furnaceMenuOpenState)
|
||||||
|
|
||||||
addSlot(exoPackPowerSlot)
|
|
||||||
mapQuickMoveToInventory(exoPackPowerSlot)
|
|
||||||
|
|
||||||
exoPackChargeSlots.forEach { addSlot(it); mapQuickMoveToInventory(it) }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private var isRemoved = false
|
private var isRemoved = false
|
||||||
|
@ -27,6 +27,7 @@ import net.minecraftforge.network.PacketDistributor
|
|||||||
import ru.dbotthepony.mc.otm.capability.IMatteryUpgrade
|
import ru.dbotthepony.mc.otm.capability.IMatteryUpgrade
|
||||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
||||||
import ru.dbotthepony.mc.otm.capability.UpgradeType
|
import ru.dbotthepony.mc.otm.capability.UpgradeType
|
||||||
|
import ru.dbotthepony.mc.otm.capability.energy.ProfiledEnergyStorage
|
||||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||||
import ru.dbotthepony.mc.otm.client.minecraft
|
import ru.dbotthepony.mc.otm.client.minecraft
|
||||||
import ru.dbotthepony.mc.otm.compat.cos.cosmeticArmorSlots
|
import ru.dbotthepony.mc.otm.compat.cos.cosmeticArmorSlots
|
||||||
@ -49,6 +50,7 @@ import ru.dbotthepony.mc.otm.core.util.ItemValueCodec
|
|||||||
import ru.dbotthepony.mc.otm.core.util.NullValueCodec
|
import ru.dbotthepony.mc.otm.core.util.NullValueCodec
|
||||||
import ru.dbotthepony.mc.otm.core.util.VarIntValueCodec
|
import ru.dbotthepony.mc.otm.core.util.VarIntValueCodec
|
||||||
import ru.dbotthepony.mc.otm.menu.input.InstantBooleanInput
|
import ru.dbotthepony.mc.otm.menu.input.InstantBooleanInput
|
||||||
|
import ru.dbotthepony.mc.otm.menu.widget.ProfiledLevelGaugeWidget
|
||||||
import ru.dbotthepony.mc.otm.network.MatteryPacket
|
import ru.dbotthepony.mc.otm.network.MatteryPacket
|
||||||
import ru.dbotthepony.mc.otm.network.MenuFieldPacket
|
import ru.dbotthepony.mc.otm.network.MenuFieldPacket
|
||||||
import ru.dbotthepony.mc.otm.network.MenuNetworkChannel
|
import ru.dbotthepony.mc.otm.network.MenuNetworkChannel
|
||||||
@ -67,6 +69,7 @@ import java.util.function.DoubleSupplier
|
|||||||
import java.util.function.IntSupplier
|
import java.util.function.IntSupplier
|
||||||
import java.util.function.Predicate
|
import java.util.function.Predicate
|
||||||
import java.util.function.Supplier
|
import java.util.function.Supplier
|
||||||
|
import kotlin.collections.ArrayList
|
||||||
|
|
||||||
data class PlayerSlot<A : Slot, B : Slot>(val functional: A, val cosmetic: B? = null)
|
data class PlayerSlot<A : Slot, B : Slot>(val functional: A, val cosmetic: B? = null)
|
||||||
|
|
||||||
@ -104,6 +107,7 @@ abstract class MatteryMenu @JvmOverloads protected constructor(
|
|||||||
private val _playerMainSlots = ArrayList<InventorySlot>()
|
private val _playerMainSlots = ArrayList<InventorySlot>()
|
||||||
private val _playerExoSuitSlots = ArrayList<InventorySlot>()
|
private val _playerExoSuitSlots = ArrayList<InventorySlot>()
|
||||||
private val _playerCombinedInventorySlots = ArrayList<InventorySlot>()
|
private val _playerCombinedInventorySlots = ArrayList<InventorySlot>()
|
||||||
|
private val _exopackChargeSlots = ArrayList<MatterySlot>()
|
||||||
|
|
||||||
private val playerInputs = ArrayList<PlayerInput<*>>()
|
private val playerInputs = ArrayList<PlayerInput<*>>()
|
||||||
|
|
||||||
@ -212,6 +216,10 @@ abstract class MatteryMenu @JvmOverloads protected constructor(
|
|||||||
*/
|
*/
|
||||||
val playerCombinedInventorySlots: List<InventorySlot> = Collections.unmodifiableList(_playerCombinedInventorySlots)
|
val playerCombinedInventorySlots: List<InventorySlot> = Collections.unmodifiableList(_playerCombinedInventorySlots)
|
||||||
|
|
||||||
|
val exopackChargeSlots: List<MatterySlot> = Collections.unmodifiableList(_exopackChargeSlots)
|
||||||
|
|
||||||
|
val exopackPowerLevel = ProfiledLevelGaugeWidget<ProfiledEnergyStorage<*>>(mSynchronizer)
|
||||||
|
|
||||||
var autoCreateInventoryFrame = true
|
var autoCreateInventoryFrame = true
|
||||||
private set
|
private set
|
||||||
|
|
||||||
@ -360,6 +368,13 @@ abstract class MatteryMenu @JvmOverloads protected constructor(
|
|||||||
mapQuickMoveToExternal(slot)
|
mapQuickMoveToExternal(slot)
|
||||||
addSlot(slot)
|
addSlot(slot)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_exopackChargeSlots.add(BatterySlot(mattery.exoPackEnergy.parent, 0).also { mapQuickMoveToExternal(it); mapQuickMoveToInventory(it); addSlot(it) })
|
||||||
|
|
||||||
|
for (i in 0 until mattery.exoPackChargeSlots.containerSize)
|
||||||
|
_exopackChargeSlots.add(ChargeSlot(mattery.exoPackChargeSlots, i).also { mapQuickMoveToExternal(it); mapQuickMoveToInventory(it); addSlot(it) })
|
||||||
|
|
||||||
|
exopackPowerLevel.with(mattery.exoPackEnergy)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i in 0..8) {
|
for (i in 0..8) {
|
||||||
|
Loading…
Reference in New Issue
Block a user