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
|
||||
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
|
||||
}
|
||||
}
|
||||
makeChargePanels(frame)
|
||||
|
||||
scrollPanel.dock = Dock.RIGHT
|
||||
scrollPanel.setDockMargin(right = 3f)
|
||||
|
@ -18,13 +18,20 @@ import net.minecraftforge.common.MinecraftForge
|
||||
import org.lwjgl.opengl.GL11
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
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.screen.panels.*
|
||||
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.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.HeightControls
|
||||
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.core.TranslatableComponent
|
||||
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 {
|
||||
if (menu.playerInventorySlots.isNotEmpty() && menu.autoCreateInventoryFrame) {
|
||||
if (menu.playerExoSuitSlots.isEmpty()) {
|
||||
@ -239,6 +283,10 @@ abstract class MatteryScreen<T : MatteryMenu>(menu: T, inventory: Inventory, tit
|
||||
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 exoPackPowerSlot = BatterySlot(capability.exoPackEnergy.parent, 0)
|
||||
val exoPackPower = ProfiledLevelGaugeWidget(mSynchronizer, capability.exoPackEnergy)
|
||||
|
||||
val furnaceMenuOpenState = InstantBooleanInput(this)
|
||||
|
||||
val exoPackChargeSlots = makeSlots(capability.exoPackChargeSlots, ::ChargeSlot)
|
||||
|
||||
init {
|
||||
addStorageSlot(furnaceInputs, condition = furnaceMenuOpenState)
|
||||
addStorageSlot(furnaceOutputs, condition = furnaceMenuOpenState)
|
||||
|
||||
addSlot(exoPackPowerSlot)
|
||||
mapQuickMoveToInventory(exoPackPowerSlot)
|
||||
|
||||
exoPackChargeSlots.forEach { addSlot(it); mapQuickMoveToInventory(it) }
|
||||
}
|
||||
|
||||
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.MatteryCapability
|
||||
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.client.minecraft
|
||||
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.VarIntValueCodec
|
||||
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.MenuFieldPacket
|
||||
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.Predicate
|
||||
import java.util.function.Supplier
|
||||
import kotlin.collections.ArrayList
|
||||
|
||||
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 _playerExoSuitSlots = ArrayList<InventorySlot>()
|
||||
private val _playerCombinedInventorySlots = ArrayList<InventorySlot>()
|
||||
private val _exopackChargeSlots = ArrayList<MatterySlot>()
|
||||
|
||||
private val playerInputs = ArrayList<PlayerInput<*>>()
|
||||
|
||||
@ -212,6 +216,10 @@ abstract class MatteryMenu @JvmOverloads protected constructor(
|
||||
*/
|
||||
val playerCombinedInventorySlots: List<InventorySlot> = Collections.unmodifiableList(_playerCombinedInventorySlots)
|
||||
|
||||
val exopackChargeSlots: List<MatterySlot> = Collections.unmodifiableList(_exopackChargeSlots)
|
||||
|
||||
val exopackPowerLevel = ProfiledLevelGaugeWidget<ProfiledEnergyStorage<*>>(mSynchronizer)
|
||||
|
||||
var autoCreateInventoryFrame = true
|
||||
private set
|
||||
|
||||
@ -360,6 +368,13 @@ abstract class MatteryMenu @JvmOverloads protected constructor(
|
||||
mapQuickMoveToExternal(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) {
|
||||
|
Loading…
Reference in New Issue
Block a user