Fix depth of tooltips in inventory uis.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package li.cil.oc2.client.gui;
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import li.cil.oc2.api.bus.device.DeviceTypes;
|
||||
import li.cil.oc2.client.gui.util.GuiUtils;
|
||||
@@ -9,6 +10,7 @@ import li.cil.oc2.common.Constants;
|
||||
import li.cil.oc2.common.container.AbstractMachineTerminalContainer;
|
||||
import li.cil.oc2.common.util.TooltipUtils;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.client.renderer.GameRenderer;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.FormattedText;
|
||||
import net.minecraft.network.chat.TranslatableComponent;
|
||||
@@ -73,22 +75,53 @@ public abstract class AbstractMachineInventoryScreen<T extends AbstractMachineTe
|
||||
}.withTooltip(new TranslatableComponent(Constants.MACHINE_OPEN_TERMINAL_CAPTION)));
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
@Override
|
||||
public void render(final PoseStack stack, final int mouseX, final int mouseY, final float partialTicks) {
|
||||
renderBackground(stack);
|
||||
super.render(stack, mouseX, mouseY, partialTicks);
|
||||
protected void renderBg(final PoseStack stack, final float partialTicks, final int mouseX, final int mouseY) {
|
||||
RenderSystem.setShader(GameRenderer::getPositionTexShader);
|
||||
RenderSystem.setShaderColor(1, 1, 1, 1);
|
||||
|
||||
final int energyCapacity = menu.getEnergyCapacity();
|
||||
if (energyCapacity > 0) {
|
||||
final int energyStored = menu.getEnergy();
|
||||
final int energyConsumption = menu.getEnergyConsumption();
|
||||
Sprites.SIDEBAR_2.draw(stack, leftPos - Sprites.SIDEBAR_2.width, topPos + CONTROLS_TOP);
|
||||
|
||||
Sprites.ENERGY_BAR.drawFillY(stack, leftPos - Sprites.SIDEBAR_2.width + 4, topPos + ENERGY_TOP + 4, energyStored / (float) energyCapacity);
|
||||
if (shouldRenderEnergyBar()) {
|
||||
final int x = leftPos - Sprites.SIDEBAR_2.width;
|
||||
final int y = topPos + ENERGY_TOP;
|
||||
Sprites.SIDEBAR_2.draw(stack, x, y);
|
||||
Sprites.ENERGY_BASE.draw(stack, x + 4, y + 4);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void renderFg(final PoseStack stack, final float partialTicks, final int mouseX, final int mouseY) {
|
||||
super.renderFg(stack, partialTicks, mouseX, mouseY);
|
||||
|
||||
GuiUtils.renderMissingDeviceInfoIcon(stack, this, DeviceTypes.FLASH_MEMORY, Sprites.WARN_ICON);
|
||||
GuiUtils.renderMissingDeviceInfoIcon(stack, this, DeviceTypes.MEMORY, Sprites.WARN_ICON);
|
||||
GuiUtils.renderMissingDeviceInfoIcon(stack, this, DeviceTypes.HARD_DRIVE, Sprites.INFO_ICON);
|
||||
|
||||
if (shouldRenderEnergyBar()) {
|
||||
final int x = leftPos - Sprites.SIDEBAR_2.width + 4;
|
||||
final int y = topPos + ENERGY_TOP + 4;
|
||||
Sprites.ENERGY_BAR.drawFillY(stack, x, y, menu.getEnergy() / (float) menu.getEnergyCapacity());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void renderTooltip(final PoseStack stack, final int mouseX, final int mouseY) {
|
||||
super.renderTooltip(stack, mouseX, mouseY);
|
||||
|
||||
GuiUtils.renderMissingDeviceInfoTooltip(stack, this, mouseX, mouseY, DeviceTypes.FLASH_MEMORY);
|
||||
GuiUtils.renderMissingDeviceInfoTooltip(stack, this, mouseX, mouseY, DeviceTypes.MEMORY);
|
||||
GuiUtils.renderMissingDeviceInfoTooltip(stack, this, mouseX, mouseY, DeviceTypes.HARD_DRIVE);
|
||||
|
||||
if (shouldRenderEnergyBar()) {
|
||||
if (isMouseOver(mouseX, mouseY, -Sprites.SIDEBAR_2.width + 4, ENERGY_TOP + 4, Sprites.ENERGY_BAR.width, Sprites.ENERGY_BAR.height)) {
|
||||
final List<? extends FormattedText> tooltip = asList(
|
||||
new TranslatableComponent(Constants.TOOLTIP_ENERGY, withFormat(energyStored + "/" + energyCapacity, ChatFormatting.GREEN)),
|
||||
new TranslatableComponent(Constants.TOOLTIP_ENERGY_CONSUMPTION, withFormat(String.valueOf(energyConsumption), ChatFormatting.GREEN))
|
||||
new TranslatableComponent(Constants.TOOLTIP_ENERGY,
|
||||
withFormat(menu.getEnergy() + "/" + menu.getEnergyCapacity(), ChatFormatting.GREEN)),
|
||||
new TranslatableComponent(Constants.TOOLTIP_ENERGY_CONSUMPTION,
|
||||
withFormat(String.valueOf(menu.getEnergyConsumption()), ChatFormatting.GREEN))
|
||||
);
|
||||
TooltipUtils.drawTooltip(stack, tooltip, mouseX, mouseY, 200);
|
||||
}
|
||||
@@ -97,25 +130,7 @@ public abstract class AbstractMachineInventoryScreen<T extends AbstractMachineTe
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
@Override
|
||||
protected void renderBg(final PoseStack stack, final float partialTicks, final int mouseX, final int mouseY) {
|
||||
Sprites.SIDEBAR_2.draw(stack, leftPos - Sprites.SIDEBAR_2.width, topPos + CONTROLS_TOP);
|
||||
|
||||
if (menu.getEnergyCapacity() > 0) {
|
||||
final int x = leftPos - Sprites.SIDEBAR_2.width;
|
||||
final int y = topPos + ENERGY_TOP;
|
||||
Sprites.SIDEBAR_2.draw(stack, x, y);
|
||||
Sprites.ENERGY_BASE.draw(stack, x + 4, y + 4);
|
||||
}
|
||||
}
|
||||
|
||||
protected void renderMissingDeviceInfo(final PoseStack stack, final int mouseX, final int mouseY) {
|
||||
GuiUtils.renderMissingDeviceInfoIcon(stack, this, DeviceTypes.FLASH_MEMORY, Sprites.WARN_ICON);
|
||||
GuiUtils.renderMissingDeviceInfoIcon(stack, this, DeviceTypes.MEMORY, Sprites.WARN_ICON);
|
||||
GuiUtils.renderMissingDeviceInfoIcon(stack, this, DeviceTypes.HARD_DRIVE, Sprites.INFO_ICON);
|
||||
|
||||
GuiUtils.renderMissingDeviceInfoTooltip(stack, this, mouseX, mouseY, DeviceTypes.FLASH_MEMORY);
|
||||
GuiUtils.renderMissingDeviceInfoTooltip(stack, this, mouseX, mouseY, DeviceTypes.MEMORY);
|
||||
GuiUtils.renderMissingDeviceInfoTooltip(stack, this, mouseX, mouseY, DeviceTypes.HARD_DRIVE);
|
||||
private boolean shouldRenderEnergyBar() {
|
||||
return menu.getEnergyCapacity() > 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,29 +48,6 @@ public abstract class AbstractMachineTerminalScreen<T extends AbstractMachineTer
|
||||
return isInputCaptureEnabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(final PoseStack stack, final int mouseX, final int mouseY, final float partialTicks) {
|
||||
renderBackground(stack);
|
||||
super.render(stack, mouseX, mouseY, partialTicks);
|
||||
terminalWidget.render(stack, mouseX, mouseY, menu.getVirtualMachine().getBootError());
|
||||
|
||||
final int energyCapacity = menu.getEnergyCapacity();
|
||||
if (energyCapacity > 0) {
|
||||
final int energyStored = menu.getEnergy();
|
||||
final int energyConsumption = menu.getEnergyConsumption();
|
||||
|
||||
Sprites.ENERGY_BAR.drawFillY(stack, leftPos - Sprites.SIDEBAR_2.width + 4, topPos + ENERGY_TOP + 4, energyStored / (float) energyCapacity);
|
||||
|
||||
if (isMouseOver(mouseX, mouseY, -Sprites.SIDEBAR_2.width + 4, ENERGY_TOP + 4, Sprites.ENERGY_BAR.width, Sprites.ENERGY_BAR.height)) {
|
||||
final List<? extends FormattedText> tooltip = asList(
|
||||
new TranslatableComponent(Constants.TOOLTIP_ENERGY, withFormat(energyStored + "/" + energyCapacity, ChatFormatting.GREEN)),
|
||||
new TranslatableComponent(Constants.TOOLTIP_ENERGY_CONSUMPTION, withFormat(String.valueOf(energyConsumption), ChatFormatting.GREEN))
|
||||
);
|
||||
TooltipUtils.drawTooltip(stack, tooltip, mouseX, mouseY, 200);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void containerTick() {
|
||||
super.containerTick();
|
||||
@@ -180,13 +157,23 @@ public abstract class AbstractMachineTerminalScreen<T extends AbstractMachineTer
|
||||
protected abstract void setFocusIndicatorEditBox(final EditBox editBox);
|
||||
|
||||
@Override
|
||||
protected void renderBg(final PoseStack stack, final float partialTicks, final int mouseX, final int mouseY) {
|
||||
RenderSystem.setShader(GameRenderer::getPositionTexShader);
|
||||
RenderSystem.setShaderColor(1, 1, 1, 1);
|
||||
protected void renderFg(final PoseStack stack, final float partialTicks, final int mouseX, final int mouseY) {
|
||||
super.renderFg(stack, partialTicks, mouseX, mouseY);
|
||||
|
||||
if (shouldRenderEnergyBar()) {
|
||||
final int x = leftPos - Sprites.SIDEBAR_2.width + 4;
|
||||
final int y = topPos + ENERGY_TOP + 4;
|
||||
Sprites.ENERGY_BAR.drawFillY(stack, x, y, menu.getEnergy() / (float) menu.getEnergyCapacity());
|
||||
}
|
||||
|
||||
terminalWidget.render(stack, mouseX, mouseY, menu.getVirtualMachine().getBootError());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void renderBg(final PoseStack stack, final float partialTicks, final int mouseX, final int mouseY) {
|
||||
Sprites.SIDEBAR_3.draw(stack, leftPos - Sprites.SIDEBAR_2.width, topPos + CONTROLS_TOP);
|
||||
|
||||
if (menu.getEnergyCapacity() > 0) {
|
||||
if (shouldRenderEnergyBar()) {
|
||||
final int x = leftPos - Sprites.SIDEBAR_2.width;
|
||||
final int y = topPos + ENERGY_TOP;
|
||||
Sprites.SIDEBAR_2.draw(stack, x, y);
|
||||
@@ -196,8 +183,32 @@ public abstract class AbstractMachineTerminalScreen<T extends AbstractMachineTer
|
||||
terminalWidget.renderBackground(stack, mouseX, mouseY);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void renderTooltip(final PoseStack stack, final int mouseX, final int mouseY) {
|
||||
super.renderTooltip(stack, mouseX, mouseY);
|
||||
|
||||
if (shouldRenderEnergyBar()) {
|
||||
|
||||
if (isMouseOver(mouseX, mouseY, -Sprites.SIDEBAR_2.width + 4, ENERGY_TOP + 4, Sprites.ENERGY_BAR.width, Sprites.ENERGY_BAR.height)) {
|
||||
final List<? extends FormattedText> tooltip = asList(
|
||||
new TranslatableComponent(Constants.TOOLTIP_ENERGY,
|
||||
withFormat(menu.getEnergy() + "/" + menu.getEnergyCapacity(), ChatFormatting.GREEN)),
|
||||
new TranslatableComponent(Constants.TOOLTIP_ENERGY_CONSUMPTION,
|
||||
withFormat(String.valueOf(menu.getEnergyConsumption()), ChatFormatting.GREEN))
|
||||
);
|
||||
TooltipUtils.drawTooltip(stack, tooltip, mouseX, mouseY, 200);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void renderLabels(final PoseStack stack, final int mouseX, final int mouseY) {
|
||||
// This is required to prevent the labels from being rendered
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
private boolean shouldRenderEnergyBar() {
|
||||
return menu.getEnergyCapacity() > 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
package li.cil.oc2.client.gui;
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import net.minecraft.client.gui.components.AbstractWidget;
|
||||
import net.minecraft.client.gui.components.Widget;
|
||||
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
|
||||
import net.minecraft.client.renderer.GameRenderer;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.entity.player.Inventory;
|
||||
import net.minecraft.world.inventory.AbstractContainerMenu;
|
||||
@@ -23,4 +28,34 @@ public abstract class AbstractModContainerScreen<T extends AbstractContainerMenu
|
||||
localMouseY >= y &&
|
||||
localMouseY < y + height;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(final PoseStack stack, final int mouseX, final int mouseY, final float partialTicks) {
|
||||
renderBackground(stack);
|
||||
|
||||
RenderSystem.setShader(GameRenderer::getPositionTexShader);
|
||||
RenderSystem.setShaderColor(1, 1, 1, 1);
|
||||
|
||||
super.render(stack, mouseX, mouseY, partialTicks);
|
||||
|
||||
renderFg(stack, partialTicks, mouseX, mouseY);
|
||||
|
||||
renderTooltip(stack, mouseX, mouseY);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
@Override
|
||||
protected void renderTooltip(final PoseStack stack, final int mouseX, final int mouseY) {
|
||||
super.renderTooltip(stack, mouseX, mouseY);
|
||||
|
||||
for (final Widget widget : renderables) {
|
||||
if (widget instanceof AbstractWidget abstractWidget) {
|
||||
abstractWidget.renderToolTip(stack, mouseX, mouseY);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void renderFg(final PoseStack stack, final float partialTicks, final int mouseX, final int mouseY) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
package li.cil.oc2.client.gui;
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import li.cil.oc2.common.container.ComputerInventoryContainer;
|
||||
import net.minecraft.client.renderer.GameRenderer;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.entity.player.Inventory;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
@@ -20,23 +18,9 @@ public final class ComputerContainerScreen extends AbstractMachineInventoryScree
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
@Override
|
||||
public void render(final PoseStack stack, final int mouseX, final int mouseY, final float partialTicks) {
|
||||
super.render(stack, mouseX, mouseY, partialTicks);
|
||||
|
||||
renderMissingDeviceInfo(stack, mouseX, mouseY);
|
||||
|
||||
renderTooltip(stack, mouseX, mouseY);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
@Override
|
||||
protected void renderBg(final PoseStack stack, final float partialTicks, final int mouseX, final int mouseY) {
|
||||
RenderSystem.setShader(GameRenderer::getPositionTexShader);
|
||||
RenderSystem.setShaderColor(1, 1, 1, 1);
|
||||
|
||||
Sprites.COMPUTER_CONTAINER.draw(stack, leftPos, topPos);
|
||||
super.renderBg(stack, partialTicks, mouseX, mouseY);
|
||||
Sprites.COMPUTER_CONTAINER.draw(stack, leftPos, topPos);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,31 +34,13 @@ public final class RobotContainerScreen extends AbstractMachineInventoryScreen<R
|
||||
inventoryLabelY = imageHeight - 94;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(final PoseStack stack, final int mouseX, final int mouseY, final float partialTicks) {
|
||||
super.render(stack, mouseX, mouseY, partialTicks);
|
||||
|
||||
renderSelection(stack);
|
||||
|
||||
renderMissingDeviceInfo(stack, mouseX, mouseY);
|
||||
|
||||
renderTooltip(stack, mouseX, mouseY);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
@Override
|
||||
protected void renderBg(final PoseStack stack, final float partialTicks, final int mouseX, final int mouseY) {
|
||||
RenderSystem.setShader(GameRenderer::getPositionTexShader);
|
||||
RenderSystem.setShaderColor(1, 1, 1, 1);
|
||||
super.renderBg(stack, partialTicks, mouseX, mouseY);
|
||||
|
||||
Sprites.ROBOT_CONTAINER.draw(stack, leftPos, topPos);
|
||||
super.renderBg(stack, partialTicks, mouseX, mouseY);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
private void renderSelection(final PoseStack stack) {
|
||||
renderSelection(stack, menu.getRobot().getSelectedSlot(), leftPos + 115, topPos + 23, 2);
|
||||
renderSelection(stack, menu.getRobot().getSelectedSlot(), leftPos + 115, topPos + 23, 3);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
package li.cil.oc2.client.gui;
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import li.cil.oc2.common.container.RobotTerminalContainer;
|
||||
import net.minecraft.client.gui.components.EditBox;
|
||||
import net.minecraft.client.renderer.GameRenderer;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.entity.player.Inventory;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
@@ -25,25 +23,16 @@ public final class RobotTerminalScreen extends AbstractMachineTerminalScreen<Rob
|
||||
super(container, inventory, title);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
@Override
|
||||
protected void renderBg(final PoseStack stack, final float partialTicks, final int mouseX, final int mouseY) {
|
||||
RenderSystem.setShader(GameRenderer::getPositionTexShader);
|
||||
RenderSystem.setShaderColor(1, 1, 1, 1);
|
||||
|
||||
Sprites.HOTBAR.draw(stack, leftPos + SLOTS_X, topPos + SLOTS_Y);
|
||||
RobotContainerScreen.renderSelection(stack, menu.getRobot().getSelectedSlot(), leftPos + SLOTS_X + 4, topPos + SLOTS_Y + 4, 12);
|
||||
|
||||
super.renderBg(stack, partialTicks, mouseX, mouseY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(final PoseStack stack, final int mouseX, final int mouseY, final float partialTicks) {
|
||||
super.render(stack, mouseX, mouseY, partialTicks);
|
||||
RobotContainerScreen.renderSelection(stack, menu.getRobot().getSelectedSlot(), leftPos + SLOTS_X + 4, topPos + SLOTS_Y + 4, 12);
|
||||
renderTooltip(stack, mouseX, mouseY);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
@Override
|
||||
protected void setFocusIndicatorEditBox(final EditBox editBox) {
|
||||
focusIndicatorEditBox = editBox;
|
||||
|
||||
Reference in New Issue
Block a user