From 07d59d7f0b45c167df5652bbd30e7086653cd98c Mon Sep 17 00:00:00 2001 From: Sollace Date: Tue, 5 May 2020 16:42:54 +0200 Subject: [PATCH] Wip new hud --- .../client/gui/FlightExperienceBar.java | 74 ----------- .../unicopia/client/gui/HudElement.java | 12 -- .../unicopia/client/gui/HudHooks.java | 24 ---- .../unicopia/client/gui/UHud.java | 120 ++++++++++-------- .../unicopia/mixin/client/MixinInGameHud.java | 18 +++ .../assets/unicopia/textures/gui/hud.png | Bin 0 -> 21202 bytes src/main/resources/unicopia.mixin.json | 1 + 7 files changed, 85 insertions(+), 164 deletions(-) delete mode 100644 src/main/java/com/minelittlepony/unicopia/client/gui/FlightExperienceBar.java delete mode 100644 src/main/java/com/minelittlepony/unicopia/client/gui/HudElement.java delete mode 100644 src/main/java/com/minelittlepony/unicopia/client/gui/HudHooks.java create mode 100644 src/main/java/com/minelittlepony/unicopia/mixin/client/MixinInGameHud.java create mode 100644 src/main/resources/assets/unicopia/textures/gui/hud.png diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/FlightExperienceBar.java b/src/main/java/com/minelittlepony/unicopia/client/gui/FlightExperienceBar.java deleted file mode 100644 index 41b0ca0c..00000000 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/FlightExperienceBar.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.minelittlepony.unicopia.client.gui; - -import com.minelittlepony.unicopia.entity.player.Pony; -import com.mojang.blaze3d.platform.GlStateManager; - -import net.minecraft.client.gui.DrawableHelper; -import net.minecraft.util.Identifier; - -class FlightExperienceBar extends DrawableHelper implements HudElement { - - static final Identifier TEXTURE = new Identifier("textures/gui/bars.png"); - - @Override - public boolean shouldRender(Pony player) { - return player.getSpecies().canFly() - && !player.getOwner().abilities.creativeMode; - } - - @Override - public void renderHud(UHud context) { - float xp = context.player.getFlight().getFlightExperience(); - float length = context.player.getFlight().getFlightDuration(); - - context.mc.getTextureManager().bindTexture(TEXTURE); - int x = (context.width - 182) / 2; - int y = context.height - 29; - - int xpFill = (int)Math.floor(xp * 182); - int xpBuff = (int)Math.floor((183 - xpFill) * length); - - int baseV = 0; - - if (context.player.getFlight().isExperienceCritical()) { - - int tickCount = (int)(context.mc.getTickDelta() * 10); - - baseV += (tickCount % 3) * 10; - } - - blit(x, y, 0, baseV, 256, 5, 256, 256); - blit(x, y, 0, baseV + 5, xpFill, 5, 256, 256); - - blit(x + xpFill, y, xpFill, baseV + 10, xpBuff, 5, 256, 256); - } - - @Override - public void repositionHud(UHud context) { - int offset = 6; - - GlStateManager.translatef(0, context.begin ? -offset : offset, 0); - } -} - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/HudElement.java b/src/main/java/com/minelittlepony/unicopia/client/gui/HudElement.java deleted file mode 100644 index 8d165908..00000000 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/HudElement.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.minelittlepony.unicopia.client.gui; - -import com.minelittlepony.unicopia.entity.player.Pony; - -public interface HudElement { - - void repositionHud(UHud context); - - void renderHud(UHud context); - - boolean shouldRender(Pony player); -} diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/HudHooks.java b/src/main/java/com/minelittlepony/unicopia/client/gui/HudHooks.java deleted file mode 100644 index 6f1f8848..00000000 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/HudHooks.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.minelittlepony.unicopia.client.gui; - -import com.minelittlepony.unicopia.entity.player.Pony; -import net.minecraft.client.MinecraftClient; - -@Deprecated -// XXX: hud render events -class HudHooks { - public static void beforePreRenderHud() { - MinecraftClient client = MinecraftClient.getInstance(); - - if (client.player != null && client.world != null) { - UHud.instance.repositionElements(Pony.of(client.player), client.getWindow(), true); - } - } - - public static void postRenderHud() { - MinecraftClient client = MinecraftClient.getInstance(); - - if (client.player != null && client.world != null) { - UHud.instance.renderHud(Pony.of(client.player), client.getWindow()); - } - } -} diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java b/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java index 8fa0f3f1..fea1859f 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java @@ -1,82 +1,94 @@ package com.minelittlepony.unicopia.client.gui; -import java.util.ArrayList; -import java.util.List; - -import org.lwjgl.opengl.GL11; - -import com.minelittlepony.unicopia.entity.player.Pony; -import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.util.Window; +import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.gui.hud.InGameHud; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.MathHelper; -public class UHud { +public class UHud extends DrawableHelper { public static final UHud instance = new UHud(); - private List elements = new ArrayList<>(); + public static final Identifier HUD_TEXTURE = new Identifier("unicopia", "textures/gui/hud.png"); - MinecraftClient mc = MinecraftClient.getInstance(); + private Slot secondarySlot = new Slot(26, 0); + private Slot tertiarySlot = new Slot(36, 24); - TextRenderer fonts = mc.textRenderer; + public void render(InGameHud hud, float tickDelta) { + MinecraftClient client = MinecraftClient.getInstance(); - Pony player; + int scaledWidth = client.getWindow().getScaledWidth(); + int scaledHeight = client.getWindow().getScaledHeight(); - int width; + int x = 104 + (scaledWidth - 50) / 2; + int y = 20 + scaledHeight - 70; - int height; + RenderSystem.enableAlphaTest(); + RenderSystem.enableBlend(); - boolean begin; + client.getTextureManager().bindTexture(HUD_TEXTURE); - private UHud() { - elements.add(new FlightExperienceBar()); + int frameHeight = 54; + int frameWidth = 54; + + blit(x, y, 0, 0, frameWidth, frameHeight, 128, 128); // background + + float progressPercent = 0.25F; + int progressHeight = (int)(frameHeight * progressPercent); + + blit(x, y + (frameHeight - progressHeight), + 61, frameHeight - progressHeight, + frameWidth, progressHeight, 128, 128); // progress + + blit(x, y, 0, 54, frameWidth, frameHeight, 128, 128); // frame + + + + secondarySlot.render(x, y, 50, 100, tickDelta); + tertiarySlot.render(x, y, 5, 10, tickDelta); + + RenderSystem.disableBlend(); + RenderSystem.disableAlphaTest(); } - public void renderHud(Pony player, Window resolution) { - this.width = resolution.getScaledWidth(); - this.height = resolution.getScaledHeight(); - this.player = player; - this.begin = true; - elements.forEach(this::renderElement); - } + static class Slot { - public void repositionElements(Pony player, Window window, boolean begin) { - this.width = window.getScaledWidth(); - this.height = window.getScaledHeight(); - this.player = player; - this.begin = begin; + private int x; + private int y; - elements.forEach(this::positionElement); - } + private float lastCooldown; - private void positionElement(HudElement element) { - if (!element.shouldRender(player)) { - return; + public Slot(int x, int y) { + this.x = x; + this.y = y; } - element.repositionHud(this); - } + void render(int x, int y, float cooldown, float maxCooldown, float tickDelta) { + x += this.x; + y += this.y; - private void renderElement(HudElement element) { - if (!element.shouldRender(player)) { - return; + if (cooldown > 0 && maxCooldown > 0 && cooldown < maxCooldown) { + float lerpCooldown = MathHelper.lerp(tickDelta, cooldown, lastCooldown); + + lastCooldown = lerpCooldown; + + float cooldownPercent = 1 - lerpCooldown / maxCooldown; + + int slotPadding = 4; + int slotSize = 15; + + int progressBottom = y + slotPadding + slotSize; + int progressTop = progressBottom - (int)(15F * cooldownPercent); + + fill(x + slotPadding, progressTop, x + slotPadding + slotSize, progressBottom, 0xAAFFFFFF); + } + + blit(x, y, 105, 105, 30, 30, 128, 128); } - GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); - - GlStateManager.pushMatrix(); - GlStateManager.disableLighting(); - GlStateManager.color4f(1, 1, 1, 1); - - element.renderHud(this); - - GlStateManager.popMatrix(); - - GL11.glPopAttrib(); - } - } diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/client/MixinInGameHud.java b/src/main/java/com/minelittlepony/unicopia/mixin/client/MixinInGameHud.java new file mode 100644 index 00000000..2b1e56e0 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/mixin/client/MixinInGameHud.java @@ -0,0 +1,18 @@ +package com.minelittlepony.unicopia.mixin.client; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import com.minelittlepony.unicopia.client.gui.UHud; + +import net.minecraft.client.gui.hud.InGameHud; + +@Mixin(InGameHud.class) +public class MixinInGameHud { + @Inject(method = "render(F)V", at = @At("HEAD")) + private void onRender(float tickDelta, CallbackInfo info) { + UHud.instance.render((InGameHud)(Object)this, tickDelta); + } +} diff --git a/src/main/resources/assets/unicopia/textures/gui/hud.png b/src/main/resources/assets/unicopia/textures/gui/hud.png new file mode 100644 index 0000000000000000000000000000000000000000..2db083ca2b034285c3196de1bd81983176d31537 GIT binary patch literal 21202 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/unicopia.mixin.json b/src/main/resources/unicopia.mixin.json index a3e5073a..91159bd5 100644 --- a/src/main/resources/unicopia.mixin.json +++ b/src/main/resources/unicopia.mixin.json @@ -23,6 +23,7 @@ "client.DefaultTexturesRegistry", "client.MixinCamera", "client.MixinEntityRenderDispatcher", + "client.MixinInGameHud", "client.MixinGameRenderer", "client.MixinItemModels", "client.MixinKeyboardInput",