From 7b62ae10945f76f871cc972182d02b416929eb97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Wed, 14 Jul 2021 22:22:14 +0200 Subject: [PATCH] Unify warning tooltips. --- .../client/gui/ComputerInventoryScreen.java | 8 +++----- .../oc2/client/gui/RobotContainerScreen.java | 8 +++----- .../li/cil/oc2/client/gui/util/GuiUtils.java | 20 +++++++++++++++++++ .../java/li/cil/oc2/common/Constants.java | 3 --- 4 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/main/java/li/cil/oc2/client/gui/ComputerInventoryScreen.java b/src/main/java/li/cil/oc2/client/gui/ComputerInventoryScreen.java index 024a7061..13ec1331 100644 --- a/src/main/java/li/cil/oc2/client/gui/ComputerInventoryScreen.java +++ b/src/main/java/li/cil/oc2/client/gui/ComputerInventoryScreen.java @@ -5,13 +5,11 @@ import com.mojang.blaze3d.systems.RenderSystem; import li.cil.oc2.api.API; import li.cil.oc2.api.bus.device.DeviceTypes; import li.cil.oc2.client.gui.util.GuiUtils; -import li.cil.oc2.common.Constants; import li.cil.oc2.common.container.ComputerInventoryContainer; import net.minecraft.client.gui.screen.inventory.ContainerScreen; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TranslationTextComponent; import static java.util.Objects.requireNonNull; @@ -37,9 +35,9 @@ public final class ComputerInventoryScreen extends ContainerScreen { private static final ResourceLocation BACKGROUND = new ResourceLocation(API.MOD_ID, "textures/gui/container/robot.png"); @@ -53,9 +51,9 @@ public final class RobotContainerScreen extends ContainerScreen GuiUtils.renderMissingDeviceInfoIcon(matrixStack, this, DeviceTypes.MEMORY, GuiUtils.WARN_ICON); GuiUtils.renderMissingDeviceInfoIcon(matrixStack, this, DeviceTypes.HARD_DRIVE, GuiUtils.INFO_ICON); - GuiUtils.renderMissingDeviceInfoTooltip(matrixStack, this, mouseX, mouseY, DeviceTypes.FLASH_MEMORY, new TranslationTextComponent(Constants.TOOLTIP_FLASH_MEMORY_MISSING)); - GuiUtils.renderMissingDeviceInfoTooltip(matrixStack, this, mouseX, mouseY, DeviceTypes.MEMORY, new TranslationTextComponent(Constants.TOOLTIP_MEMORY_MISSING)); - GuiUtils.renderMissingDeviceInfoTooltip(matrixStack, this, mouseX, mouseY, DeviceTypes.HARD_DRIVE, new TranslationTextComponent(Constants.TOOLTIP_HARD_DRIVE_MISSING)); + GuiUtils.renderMissingDeviceInfoTooltip(matrixStack, this, mouseX, mouseY, DeviceTypes.FLASH_MEMORY); + GuiUtils.renderMissingDeviceInfoTooltip(matrixStack, this, mouseX, mouseY, DeviceTypes.MEMORY); + GuiUtils.renderMissingDeviceInfoTooltip(matrixStack, this, mouseX, mouseY, DeviceTypes.HARD_DRIVE); renderTooltip(matrixStack, mouseX, mouseY); } diff --git a/src/main/java/li/cil/oc2/client/gui/util/GuiUtils.java b/src/main/java/li/cil/oc2/client/gui/util/GuiUtils.java index 5f6b601b..65d443d2 100644 --- a/src/main/java/li/cil/oc2/client/gui/util/GuiUtils.java +++ b/src/main/java/li/cil/oc2/client/gui/util/GuiUtils.java @@ -3,20 +3,36 @@ package li.cil.oc2.client.gui.util; import com.mojang.blaze3d.matrix.MatrixStack; import li.cil.oc2.api.API; import li.cil.oc2.api.bus.device.DeviceType; +import li.cil.oc2.api.bus.device.DeviceTypes; import li.cil.oc2.common.container.TypedSlotItemHandler; import net.minecraft.client.gui.AbstractGui; import net.minecraft.client.gui.screen.inventory.ContainerScreen; import net.minecraft.inventory.container.Container; import net.minecraft.inventory.container.Slot; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Util; import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TranslationTextComponent; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; import java.util.Optional; public final class GuiUtils { public static final ResourceLocation WARN_ICON = new ResourceLocation(API.MOD_ID, "textures/gui/overlay/slot_warn.png"); public static final ResourceLocation INFO_ICON = new ResourceLocation(API.MOD_ID, "textures/gui/overlay/slot_info.png"); + private static final Map WARNING_BY_DEVICE_TYPE = Util.make(() -> { + final HashMap map = new HashMap<>(); + + map.put(DeviceTypes.FLASH_MEMORY, new TranslationTextComponent("tooltip.oc2.flash_memory_missing")); + map.put(DeviceTypes.MEMORY, new TranslationTextComponent("tooltip.oc2.memory_missing")); + map.put(DeviceTypes.HARD_DRIVE, new TranslationTextComponent("tooltip.oc2.hard_drive_missing")); + + return map; + }); + private static final int SLOT_SIZE = 18; private static final int DEVICE_INFO_ICON_SIZE = 28; private static final int RELATIVE_ICON_POSITION = (SLOT_SIZE - DEVICE_INFO_ICON_SIZE) / 2; @@ -39,6 +55,10 @@ public final class GuiUtils { }); } + public static void renderMissingDeviceInfoTooltip(final MatrixStack matrixStack, final ContainerScreen screen, final int mouseX, final int mouseY, final DeviceType type) { + renderMissingDeviceInfoTooltip(matrixStack, screen, mouseX, mouseY, type, Objects.requireNonNull(WARNING_BY_DEVICE_TYPE.get(type))); + } + public static void renderMissingDeviceInfoTooltip(final MatrixStack matrixStack, final ContainerScreen screen, final int mouseX, final int mouseY, final DeviceType type, final ITextComponent tooltip) { final boolean isCursorHoldingStack = !screen.getMinecraft().player.inventory.items.isEmpty(); if (isCursorHoldingStack) { diff --git a/src/main/java/li/cil/oc2/common/Constants.java b/src/main/java/li/cil/oc2/common/Constants.java index 519dea61..ae43655c 100644 --- a/src/main/java/li/cil/oc2/common/Constants.java +++ b/src/main/java/li/cil/oc2/common/Constants.java @@ -27,9 +27,6 @@ public final class Constants { public static final String TOOLTIP_DESCRIPTION_SUFFIX = ".desc"; public static final String TOOLTIP_DEVICE_NEEDS_REBOOT = "tooltip.oc2.device_needs_reboot"; - public static final String TOOLTIP_FLASH_MEMORY_MISSING = "tooltip.oc2.flash_memory_missing"; - public static final String TOOLTIP_MEMORY_MISSING = "tooltip.oc2.memory_missing"; - public static final String TOOLTIP_HARD_DRIVE_MISSING = "tooltip.oc2.hard_drive_missing"; public static final String TOOLTIP_ENERGY = "tooltip.oc2.energy"; public static final String TOOLTIP_ENERGY_CONSUMPTION = "tooltip.oc2.energyConsumption"; public static final String TOOLTIP_CONFIRM = "tooltip.oc2.confirm";