More sprites!

This commit is contained in:
modmuss50 2023-06-01 15:49:52 +01:00
parent ed63c8908d
commit fafa8d04a0
28 changed files with 165 additions and 221 deletions

View file

@ -389,17 +389,4 @@ public class GuiBase<T extends ScreenHandler> extends HandledScreen<T> {
public static Sprite getSprite(SpriteIdentifier spriteIdentifier) { public static Sprite getSprite(SpriteIdentifier spriteIdentifier) {
return GuiSpriteAtlasHolder.INSTANCE.getSprite(spriteIdentifier.getTextureId()); return GuiSpriteAtlasHolder.INSTANCE.getSprite(spriteIdentifier.getTextureId());
} }
public void drawSprite(DrawContext drawContext, SpriteIdentifier spriteIdentifier, int x, int y) {
final Sprite sprite = getSprite(spriteIdentifier);
drawContext.drawSprite(
x,
y,
0,
sprite.getContents().getWidth(),
sprite.getContents().getHeight(),
sprite
);
}
} }

View file

@ -40,18 +40,19 @@ import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import reborncore.api.IListInfoProvider; import reborncore.api.IListInfoProvider;
import reborncore.client.gui.config.GuiTab; import reborncore.client.gui.config.GuiTab;
import reborncore.client.gui.config.elements.GuiSprites;
import reborncore.common.fluid.FluidUtils; import reborncore.common.fluid.FluidUtils;
import reborncore.common.fluid.FluidValue; import reborncore.common.fluid.FluidValue;
import reborncore.common.fluid.container.FluidInstance; import reborncore.common.fluid.container.FluidInstance;
import reborncore.common.powerSystem.PowerSystem; import reborncore.common.powerSystem.PowerSystem;
import reborncore.common.powerSystem.PowerSystem.EnergySystem;
import reborncore.common.util.StringUtils; import reborncore.common.util.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static reborncore.client.gui.GuiSprites.drawSprite;
/** /**
* Created by Gigabit101 on 08/08/2016. * Created by Gigabit101 on 08/08/2016.
*/ */
@ -67,19 +68,6 @@ public class GuiBuilder {
height / 2); height / 2);
} }
public void drawSprite(DrawContext drawContext, SpriteIdentifier spriteIdentifier, int x, int y) {
final Sprite sprite = GuiBase.getSprite(spriteIdentifier);
drawContext.drawSprite(
x,
y,
0,
sprite.getContents().getWidth(),
sprite.getContents().getHeight(),
sprite
);
}
public void drawPlayerSlots(DrawContext drawContext, Screen gui, int posX, int posY, boolean center) { public void drawPlayerSlots(DrawContext drawContext, Screen gui, int posX, int posY, boolean center) {
if (center) { if (center) {
posX -= 81; posX -= 81;
@ -420,7 +408,7 @@ public class GuiBuilder {
if (gui.hideGuiElements()) return; if (gui.hideGuiElements()) return;
Text text = Text.literal(PowerSystem.getLocalizedPowerNoSuffix(maxOutput)) Text text = Text.literal(PowerSystem.getLocalizedPowerNoSuffix(maxOutput))
.append(SPACE_TEXT) .append(SPACE_TEXT)
.append(PowerSystem.getDisplayPower().abbreviation) .append(PowerSystem.ABBREVIATION)
.append("\t"); .append("\t");
int width = gui.getTextRenderer().getWidth(text); int width = gui.getTextRenderer().getWidth(text);
@ -452,30 +440,20 @@ public class GuiBuilder {
y += gui.getGuiTop(); y += gui.getGuiTop();
} }
drawContext.drawTexture(resourceLocation, x, y, direction.x, direction.y, direction.width, direction.height); drawSprite(drawContext, direction.baseSprite, x, y);
int j = (int) ((double) progress / (double) maxProgress * 16); int j = (int) ((double) progress / (double) maxProgress * 16);
if (j < 0) { if (j < 0) {
j = 0; j = 0;
} }
switch (direction) { switch (direction) {
case RIGHT: case RIGHT, LEFT -> drawSprite(drawContext, direction.overlaySprite, x, y, j, 10, gui);
drawContext.drawTexture(resourceLocation, x, y, direction.xActive, direction.yActive, j, 10); case UP, DOWN -> drawSprite(drawContext, direction.overlaySprite, x, y, 10, j, gui);
break;
case LEFT:
drawContext.drawTexture(resourceLocation, x + 16 - j, y, direction.xActive + 16 - j, direction.yActive, j, 10);
break;
case UP:
drawContext.drawTexture(resourceLocation, x, y + 16 - j, direction.xActive, direction.yActive + 16 - j, 10, j);
break;
case DOWN:
drawContext.drawTexture(resourceLocation, x, y, direction.xActive, direction.yActive, 10, j);
break;
default:
return;
} }
if (gui.isPointInRect(x, y, direction.width, direction.height, mouseX, mouseY)) { final Sprite sprite = GuiBase.getSprite(direction.baseSprite);
if (gui.isPointInRect(x, y, sprite.getContents().getWidth(), sprite.getContents().getHeight(), mouseX, mouseY)) {
int percentage = percentage(maxProgress, progress); int percentage = percentage(maxProgress, progress);
List<Text> list = new ArrayList<>(); List<Text> list = new ArrayList<>();
list.add( list.add(
@ -512,13 +490,15 @@ public class GuiBuilder {
y += gui.getGuiTop(); y += gui.getGuiTop();
} }
EnergySystem displayPower = PowerSystem.getDisplayPower(); drawSprite(drawContext, GuiSprites.POWER_BAR_BASE, x, y);
drawContext.drawTexture(resourceLocation, x, y, displayPower.xBar - 15, displayPower.yBar - 1, 14, 50);
int draw = (int) ((double) energyStored / (double) maxEnergyStored * (48)); int barHeight = 48;
int draw = (int) ((double) energyStored / (double) maxEnergyStored * (barHeight));
if (energyStored > maxEnergyStored) { if (energyStored > maxEnergyStored) {
draw = 48; draw = barHeight;
} }
drawContext.drawTexture(resourceLocation, x + 1, y + 49 - draw, displayPower.xBar, 48 + displayPower.yBar - draw, 12, draw); drawSprite(drawContext, GuiSprites.POWER_BAR_OVERLAY, x + 1, y + 49 - draw, 12, draw, gui);
int percentage = percentage(maxEnergyStored, energyStored); int percentage = percentage(maxEnergyStored, energyStored);
if (gui.isPointInRect(x + 1, y + 1, 11, 48, mouseX, mouseY)) { if (gui.isPointInRect(x + 1, y + 1, 11, 48, mouseX, mouseY)) {
List<Text> list = Lists.newArrayList(); List<Text> list = Lists.newArrayList();
@ -729,24 +709,17 @@ public class GuiBuilder {
} }
public enum ProgressDirection { public enum ProgressDirection {
RIGHT(58, 150, 74, 150, 16, 10), RIGHT,
LEFT(74, 160, 58, 160, 16, 10), LEFT,
DOWN(78, 170, 88, 170, 10, 16), DOWN,
UP(58, 170, 68, 170, 10, 16); UP;
public int x;
public int y;
public int xActive;
public int yActive;
public int width;
public int height;
ProgressDirection(int x, int y, int xActive, int yActive, int width, int height) { public final SpriteIdentifier baseSprite;
this.x = x; public final SpriteIdentifier overlaySprite;
this.y = y;
this.xActive = xActive; ProgressDirection() {
this.yActive = yActive; baseSprite = GuiSprites.create("progress_%s_base".formatted(name().toLowerCase(Locale.ROOT)));
this.width = width; overlaySprite = GuiSprites.create("progress_%s_overlay".formatted(name().toLowerCase(Locale.ROOT)));
this.height = height;
} }
} }
} }

View file

@ -22,10 +22,15 @@
* SOFTWARE. * SOFTWARE.
*/ */
package reborncore.client.gui.config.elements; package reborncore.client.gui;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.texture.Sprite;
import net.minecraft.client.texture.SpriteAtlasHolder;
import net.minecraft.client.util.SpriteIdentifier; import net.minecraft.client.util.SpriteIdentifier;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import reborncore.client.gui.config.elements.GuiSpriteAtlasHolder;
public final class GuiSprites { public final class GuiSprites {
public static final SpriteIdentifier CHARGE_SLOT_ICON = create("charge_slot_icon"); public static final SpriteIdentifier CHARGE_SLOT_ICON = create("charge_slot_icon");
@ -62,6 +67,8 @@ public final class GuiSprites {
public static final SpriteIdentifier SLOT_BAR_RIGHT = create("slot_bar_right"); public static final SpriteIdentifier SLOT_BAR_RIGHT = create("slot_bar_right");
public static final SpriteIdentifier SLOT_BAR_CENTER = create("slot_bar_center"); public static final SpriteIdentifier SLOT_BAR_CENTER = create("slot_bar_center");
public static final SpriteIdentifier SLOT_BAR_LEFT = create("slot_bar_left"); public static final SpriteIdentifier SLOT_BAR_LEFT = create("slot_bar_left");
public static final SpriteIdentifier POWER_BAR_BASE = create("power_bar_base");
public static final SpriteIdentifier POWER_BAR_OVERLAY = create("power_bar_overlay");
public static final SpriteIdentifier EXIT_BUTTON_NORMAL = create("exit_button_normal"); public static final SpriteIdentifier EXIT_BUTTON_NORMAL = create("exit_button_normal");
public static final SpriteIdentifier EXIT_BUTTON_HOVERED = create("exit_button_hovered"); public static final SpriteIdentifier EXIT_BUTTON_HOVERED = create("exit_button_hovered");
@ -75,13 +82,45 @@ public final class GuiSprites {
public static final SpriteIdentifier LIGHT_CHECK_BOX_TICKED = create("light_check_box_ticked"); public static final SpriteIdentifier LIGHT_CHECK_BOX_TICKED = create("light_check_box_ticked");
public static final CheckBox LIGHT_CHECK_BOX = new CheckBox(LIGHT_CHECK_BOX_NORMAL, LIGHT_CHECK_BOX_TICKED); public static final CheckBox LIGHT_CHECK_BOX = new CheckBox(LIGHT_CHECK_BOX_NORMAL, LIGHT_CHECK_BOX_TICKED);
private static SpriteIdentifier create(String name) { public static SpriteIdentifier create(String name) {
return new SpriteIdentifier(GuiSpriteAtlasHolder.ATLAS_ID, new Identifier("reborncore", name)); return new SpriteIdentifier(GuiSpriteAtlasHolder.ATLAS_ID, new Identifier("reborncore", name));
} }
record Button(SpriteIdentifier normal, SpriteIdentifier hovered) { public static void drawSprite(DrawContext drawContext, SpriteIdentifier spriteIdentifier, int x, int y) {
final Sprite sprite = GuiBase.getSprite(spriteIdentifier);
drawContext.drawSprite(
x,
y,
0,
sprite.getContents().getWidth(),
sprite.getContents().getHeight(),
sprite
);
} }
record CheckBox(SpriteIdentifier normal, SpriteIdentifier ticked) { public static void drawSprite(DrawContext drawContext, SpriteIdentifier spriteIdentifier, int x, int y, int width, int height) {
drawSprite(drawContext, spriteIdentifier, x, y, width, height, 0, 0);
}
public static void drawSprite(DrawContext drawContext, SpriteIdentifier spriteIdentifier, int x, int y, int width, int height, GuiBase<?> gui) {
drawSprite(drawContext, spriteIdentifier, x, y, width, height, gui.getGuiLeft(), gui.getGuiTop());
}
public static void drawSprite(DrawContext drawContext, SpriteIdentifier spriteIdentifier, int x, int y, int width, int height, int sx, int sy) {
drawContext.enableScissor(x + sx, y + sy, x + width+ sx, y + height+ sy);
drawSprite(
drawContext,
spriteIdentifier,
x,
y
);
drawContext.disableScissor();
}
public record Button(SpriteIdentifier normal, SpriteIdentifier hovered) {
}
public record CheckBox(SpriteIdentifier normal, SpriteIdentifier ticked) {
} }
} }

View file

@ -26,6 +26,7 @@ package reborncore.client.gui.config.elements;
import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.DrawContext;
import reborncore.client.gui.GuiBase; import reborncore.client.gui.GuiBase;
import reborncore.client.gui.GuiSprites;
public class ButtonElement extends ElementBase { public class ButtonElement extends ElementBase {
private final GuiSprites.Button buttonSprite; private final GuiSprites.Button buttonSprite;

View file

@ -28,6 +28,7 @@ import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.util.SpriteIdentifier; import net.minecraft.client.util.SpriteIdentifier;
import net.minecraft.text.Text; import net.minecraft.text.Text;
import reborncore.client.gui.GuiBase; import reborncore.client.gui.GuiBase;
import reborncore.client.gui.GuiSprites;
import java.util.function.Predicate; import java.util.function.Predicate;

View file

@ -27,6 +27,7 @@ package reborncore.client.gui.config.elements;
import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.DrawContext;
import net.minecraft.text.Text; import net.minecraft.text.Text;
import reborncore.client.gui.GuiBase; import reborncore.client.gui.GuiBase;
import reborncore.client.gui.GuiSprites;
public class ConfigFluidElement extends ParentElement { public class ConfigFluidElement extends ParentElement {
private final SlotType type; private final SlotType type;

View file

@ -29,6 +29,7 @@ import net.minecraft.inventory.Inventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.text.Text; import net.minecraft.text.Text;
import reborncore.client.gui.GuiBase; import reborncore.client.gui.GuiBase;
import reborncore.client.gui.GuiSprites;
import reborncore.common.blockentity.SlotConfiguration; import reborncore.common.blockentity.SlotConfiguration;
import reborncore.common.screen.slot.BaseSlot; import reborncore.common.screen.slot.BaseSlot;

View file

@ -30,6 +30,7 @@ import net.minecraft.client.util.SpriteIdentifier;
import net.minecraft.text.Text; import net.minecraft.text.Text;
import reborncore.client.gui.GuiBase; import reborncore.client.gui.GuiBase;
import reborncore.client.gui.GuiBuilder; import reborncore.client.gui.GuiBuilder;
import reborncore.client.gui.GuiSprites;
public class ElementBase { public class ElementBase {
private final int x; private final int x;
@ -93,7 +94,7 @@ public class ElementBase {
} }
public void drawSprite(DrawContext drawContext, GuiBase<?> gui, SpriteIdentifier spriteIdentifier, int x, int y) { public void drawSprite(DrawContext drawContext, GuiBase<?> gui, SpriteIdentifier spriteIdentifier, int x, int y) {
gui.drawSprite(drawContext, spriteIdentifier, x + gui.getGuiLeft(), y + gui.getGuiTop()); GuiSprites.drawSprite(drawContext, spriteIdentifier, x + gui.getGuiLeft(), y + gui.getGuiTop());
} }
public void drawDefaultBackground(DrawContext drawContext, Screen gui, int x, int y, int width, int height) { public void drawDefaultBackground(DrawContext drawContext, Screen gui, int x, int y, int width, int height) {

View file

@ -29,6 +29,7 @@ import net.minecraft.util.math.Direction;
import reborncore.RebornCore; import reborncore.RebornCore;
import reborncore.client.ClientNetworkManager; import reborncore.client.ClientNetworkManager;
import reborncore.client.gui.GuiBase; import reborncore.client.gui.GuiBase;
import reborncore.client.gui.GuiSprites;
import reborncore.common.blockentity.FluidConfiguration; import reborncore.common.blockentity.FluidConfiguration;
import reborncore.common.network.IdentifiedPacket; import reborncore.common.network.IdentifiedPacket;
import reborncore.common.network.ServerBoundPackets; import reborncore.common.network.ServerBoundPackets;

View file

@ -29,6 +29,7 @@ import net.minecraft.util.math.Direction;
import reborncore.RebornCore; import reborncore.RebornCore;
import reborncore.client.ClientNetworkManager; import reborncore.client.ClientNetworkManager;
import reborncore.client.gui.GuiBase; import reborncore.client.gui.GuiBase;
import reborncore.client.gui.GuiSprites;
import reborncore.common.blockentity.SlotConfiguration; import reborncore.common.blockentity.SlotConfiguration;
import reborncore.common.network.IdentifiedPacket; import reborncore.common.network.IdentifiedPacket;
import reborncore.common.network.ServerBoundPackets; import reborncore.common.network.ServerBoundPackets;

View file

@ -25,6 +25,7 @@
package reborncore.client.gui.config.elements; package reborncore.client.gui.config.elements;
import net.minecraft.client.util.SpriteIdentifier; import net.minecraft.client.util.SpriteIdentifier;
import reborncore.client.gui.GuiSprites;
public enum SlotType { public enum SlotType {
NORMAL(1, 1, GuiSprites.SLOT, GuiSprites.BUTTON_SLOT_NORMAL, GuiSprites.BUTTON_HOVER_OVERLAY_SLOT_NORMAL); NORMAL(1, 1, GuiSprites.SLOT, GuiSprites.BUTTON_SLOT_NORMAL, GuiSprites.BUTTON_HOVER_OVERLAY_SLOT_NORMAL);

View file

@ -29,7 +29,9 @@ import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.util.SpriteIdentifier; import net.minecraft.client.util.SpriteIdentifier;
import net.minecraft.text.Text; import net.minecraft.text.Text;
import reborncore.client.gui.GuiBase; import reborncore.client.gui.GuiBase;
import reborncore.client.gui.config.elements.GuiSprites; import reborncore.client.gui.GuiSprites;
import static reborncore.client.gui.GuiSprites.drawSprite;
/** /**
* @author drcrazy * @author drcrazy
@ -47,7 +49,7 @@ public class GuiButtonUpDown extends GuiButtonExtended {
@Override @Override
public void renderButton(DrawContext drawContext, int mouseX, int mouseY, float partialTicks) { public void renderButton(DrawContext drawContext, int mouseX, int mouseY, float partialTicks) {
if (gui.hideGuiElements()) return; if (gui.hideGuiElements()) return;
gui.drawSprite(drawContext, type.spriteIdentifier, getX(), getY()); drawSprite(drawContext, type.spriteIdentifier, getX(), getY());
} }
public enum UpDownButtonType { public enum UpDownButtonType {

View file

@ -71,7 +71,6 @@ public class RebornCore implements ModInitializer {
@Override @Override
public void onInitialize() { public void onInitialize() {
new Configuration(RebornCoreConfig.class, MOD_ID); new Configuration(RebornCoreConfig.class, MOD_ID);
PowerSystem.init();
CalenderUtils.loadCalender(); // Done early as some features need this CalenderUtils.loadCalender(); // Done early as some features need this
ToolManager.INSTANCE.customToolHandlerList.add(new GenericWrenchHelper(new Identifier("ic2:wrench"), true)); ToolManager.INSTANCE.customToolHandlerList.add(new GenericWrenchHelper(new Identifier("ic2:wrench"), true));

View file

@ -25,20 +25,17 @@
package reborncore.common.powerSystem; package reborncore.common.powerSystem;
import reborncore.RebornCore; import reborncore.RebornCore;
import reborncore.common.RebornCoreConfig;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.function.Supplier;
public class PowerSystem { public class PowerSystem {
private static EnergySystem selectedSystem = EnergySystem.values()[0]; public static final String ABBREVIATION = "E";
private static final char[] magnitude = new char[] { 'k', 'M', 'G', 'T' }; private static final char[] magnitude = new char[] { 'k', 'M', 'G', 'T' };
public static String getLocalizedPower(double power) { public static String getLocalizedPower(double power) {
return getRoundedString(power, selectedSystem.abbreviation, true); return getRoundedString(power, ABBREVIATION, true);
} }
public static String getLocalizedPowerNoSuffix(double power) { public static String getLocalizedPowerNoSuffix(double power) {
@ -46,7 +43,7 @@ public class PowerSystem {
} }
public static String getLocalizedPowerNoFormat(double power){ public static String getLocalizedPowerNoFormat(double power){
return getRoundedString(power, selectedSystem.abbreviation, false); return getRoundedString(power, ABBREVIATION, false);
} }
public static String getLocalizedPowerNoSuffixNoFormat(double power){ public static String getLocalizedPowerNoSuffixNoFormat(double power){
@ -54,7 +51,7 @@ public class PowerSystem {
} }
public static String getLocalizedPowerFull(double power){ public static String getLocalizedPowerFull(double power){
return getFullPower(power, selectedSystem.abbreviation); return getFullPower(power, ABBREVIATION);
} }
public static String getLocalizedPowerFullNoSuffix(double power){ public static String getLocalizedPowerFullNoSuffix(double power){
@ -131,45 +128,4 @@ public class PowerSystem {
return ret; return ret;
} }
public static EnergySystem getDisplayPower() {
if(!selectedSystem.enabled.get()){
bumpPowerConfig();
}
return selectedSystem;
}
public static void bumpPowerConfig() {
int value = selectedSystem.ordinal() + 1;
if (value == EnergySystem.values().length) {
value = 0;
}
selectedSystem = EnergySystem.values()[value];
}
public static void init(){
selectedSystem = Arrays.stream(EnergySystem.values()).filter(energySystem -> energySystem.abbreviation.equalsIgnoreCase(RebornCoreConfig.selectedSystem)).findFirst().orElse(EnergySystem.values()[0]);
if(!selectedSystem.enabled.get()){
bumpPowerConfig();
}
}
public enum EnergySystem {
EU(0xFF800600, "E", 141, 151, 0xFF670000);
public int colour;
public int altColour;
public String abbreviation;
public int xBar;
public int yBar;
public Supplier<Boolean> enabled = () -> true;
EnergySystem(int colour, String abbreviation, int xBar, int yBar, int altColour) {
this.colour = colour;
this.abbreviation = abbreviation;
this.xBar = xBar;
this.yBar = yBar;
this.altColour = altColour;
}
}
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 831 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

View file

@ -24,7 +24,6 @@
package techreborn.client.compat.rei; package techreborn.client.compat.rei;
import com.mojang.blaze3d.systems.RenderSystem;
import dev.architectury.event.CompoundEventResult; import dev.architectury.event.CompoundEventResult;
import dev.architectury.fluid.FluidStack; import dev.architectury.fluid.FluidStack;
import me.shedaniel.math.Rectangle; import me.shedaniel.math.Rectangle;
@ -54,20 +53,19 @@ import net.minecraft.client.texture.Sprite;
import net.minecraft.fluid.Fluid; import net.minecraft.fluid.Fluid;
import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemConvertible;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.screen.PlayerScreenHandler;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import reborncore.api.blockentity.IUpgradeable; import reborncore.api.blockentity.IUpgradeable;
import reborncore.client.gui.GuiBase; import reborncore.client.gui.GuiBase;
import reborncore.client.gui.config.GuiTab;
import reborncore.client.gui.GuiBuilder; import reborncore.client.gui.GuiBuilder;
import reborncore.client.gui.GuiSprites;
import reborncore.client.gui.config.GuiTab;
import reborncore.common.crafting.RebornRecipe; import reborncore.common.crafting.RebornRecipe;
import reborncore.common.crafting.RebornRecipeType; import reborncore.common.crafting.RebornRecipeType;
import reborncore.common.crafting.RecipeManager; import reborncore.common.crafting.RecipeManager;
import reborncore.common.fluid.container.ItemFluidInfo; import reborncore.common.fluid.container.ItemFluidInfo;
import reborncore.common.powerSystem.PowerSystem;
import techreborn.TechReborn; import techreborn.TechReborn;
import techreborn.api.generator.EFluidGenerator; import techreborn.api.generator.EFluidGenerator;
import techreborn.api.generator.GeneratorRecipeHelper; import techreborn.api.generator.GeneratorRecipeHelper;
@ -91,6 +89,8 @@ import java.util.Map;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Stream; import java.util.stream.Stream;
import static reborncore.client.gui.GuiSprites.drawSprite;
public class ReiPlugin implements REIClientPlugin { public class ReiPlugin implements REIClientPlugin {
public static final Map<RebornRecipeType<?>, ItemConvertible> iconMap = new HashMap<>(); public static final Map<RebornRecipeType<?>, ItemConvertible> iconMap = new HashMap<>();
@ -270,17 +270,15 @@ public class ReiPlugin implements REIClientPlugin {
public static Widget createProgressBar(int x, int y, double animationDuration, GuiBuilder.ProgressDirection direction) { public static Widget createProgressBar(int x, int y, double animationDuration, GuiBuilder.ProgressDirection direction) {
return Widgets.createDrawableWidget((drawContext, mouseX, mouseY, delta) -> { return Widgets.createDrawableWidget((drawContext, mouseX, mouseY, delta) -> {
drawContext.drawTexture(GuiBuilder.resourceLocation, x, y, direction.x, direction.y, direction.width, direction.height); drawSprite(drawContext, direction.baseSprite, x, y);
int j = (int) ((System.currentTimeMillis() / animationDuration) % 1.0 * 16.0); int j = (int) ((System.currentTimeMillis() / animationDuration) % 1.0 * 16.0);
if (j < 0) { if (j < 0) {
j = 0; j = 0;
} }
switch (direction) { switch (direction) {
case RIGHT -> drawContext.drawTexture(GuiBuilder.resourceLocation, x, y, direction.xActive, direction.yActive, j, 10); case RIGHT, LEFT -> drawSprite(drawContext, direction.overlaySprite, x, y, j, 10);
case LEFT -> drawContext.drawTexture(GuiBuilder.resourceLocation, x + 16 - j, y, direction.xActive + 16 - j, direction.yActive, j, 10); case UP, DOWN -> drawSprite(drawContext, direction.overlaySprite, x, y, 10, j);
case UP -> drawContext.drawTexture(GuiBuilder.resourceLocation, x, y + 16 - j, direction.xActive, direction.yActive + 16 - j, 10, j);
case DOWN -> drawContext.drawTexture(GuiBuilder.resourceLocation, x, y, direction.xActive, direction.yActive, 10, j);
} }
}); });
} }
@ -297,30 +295,21 @@ public class ReiPlugin implements REIClientPlugin {
return Widgets.createSlot(bounds).entry(copy); return Widgets.createSlot(bounds).entry(copy);
} }
private static class EnergyEntryRenderer implements Renderer { private record EnergyEntryRenderer(EntryAnimation animation, Function<TooltipContext, Tooltip> tooltipBuilder) implements Renderer {
private final EntryAnimation animation;
private final Function<TooltipContext, Tooltip> tooltipBuilder;
protected EnergyEntryRenderer(EntryAnimation animation, Function<TooltipContext, Tooltip> tooltipBuilder) {
this.animation = animation;
this.tooltipBuilder = tooltipBuilder;
}
@Override @Override
public void render(DrawContext drawContext, Rectangle bounds, int mouseX, int mouseY, float delta) { public void render(DrawContext drawContext, Rectangle bounds, int mouseX, int mouseY, float delta) {
int width = bounds.width + 2; int width = bounds.width + 2;
int height = bounds.height + 2; int height = bounds.height + 2;
int innerHeight = height - 2; int innerHeight = height - 2;
PowerSystem.EnergySystem displayPower = PowerSystem.getDisplayPower(); drawSprite(drawContext, GuiSprites.POWER_BAR_BASE, bounds.x - 1, bounds.y - 1);
drawContext.drawTexture(GuiBuilder.resourceLocation, bounds.x - 1, bounds.y - 1, displayPower.xBar - 15, displayPower.yBar - 1, width, height);
int innerDisplayHeight; int innerDisplayHeight;
if (animation.animationType != EntryAnimationType.NONE) { if (animation.animationType != EntryAnimationType.NONE) {
innerDisplayHeight = MathHelper.ceil((System.currentTimeMillis() / (animation.duration / (float) innerHeight) % innerHeight)); innerDisplayHeight = MathHelper.ceil((System.currentTimeMillis() / (animation.duration / (float) innerHeight) % innerHeight));
if (animation.animationType == EntryAnimationType.DOWNWARDS) if (animation.animationType == EntryAnimationType.DOWNWARDS)
innerDisplayHeight = innerHeight - innerDisplayHeight; innerDisplayHeight = innerHeight - innerDisplayHeight;
} else innerDisplayHeight = innerHeight; } else innerDisplayHeight = innerHeight;
drawContext.drawTexture(GuiBuilder.resourceLocation, bounds.x, bounds.y + innerHeight - innerDisplayHeight, displayPower.xBar, innerHeight + displayPower.yBar - innerDisplayHeight, width - 2, innerDisplayHeight); drawSprite(drawContext, GuiSprites.POWER_BAR_OVERLAY, bounds.x, bounds.y + innerHeight - innerDisplayHeight, width - 2, innerDisplayHeight);
} }
@Override @Override
@ -330,22 +319,13 @@ public class ReiPlugin implements REIClientPlugin {
} }
} }
private static class FluidStackRenderer implements EntryRenderer<FluidStack> { private record FluidStackRenderer(EntryAnimation animation, EntryRenderer<FluidStack> parent) implements EntryRenderer<FluidStack> {
private final EntryAnimation animation;
private final EntryRenderer<FluidStack> parent;
public FluidStackRenderer(EntryAnimation animation, EntryRenderer<FluidStack> parent) {
this.animation = animation;
this.parent = parent;
}
@Override @Override
public void render(EntryStack<FluidStack> entry, DrawContext drawContext, Rectangle bounds, int mouseX, int mouseY, float delta) { public void render(EntryStack<FluidStack> entry, DrawContext drawContext, Rectangle bounds, int mouseX, int mouseY, float delta) {
int width = bounds.width; int width = bounds.width;
int height = bounds.height; int height = bounds.height;
drawContext.drawTexture(GuiBuilder.resourceLocation, bounds.x - 4, bounds.y - 4, 194, 26, width + 8, height + 8); drawSprite(drawContext, GuiSprites.TANK_BACKGROUND, bounds.x - 4, bounds.y - 4);
drawContext.drawTexture(GuiBuilder.resourceLocation, bounds.x - 1, bounds.y - 1, 194, 82, width + 2, height + 2);
int innerDisplayHeight; int innerDisplayHeight;
if (animation.animationType != EntryAnimationType.NONE) { if (animation.animationType != EntryAnimationType.NONE) {
innerDisplayHeight = MathHelper.ceil((System.currentTimeMillis() / (animation.duration / (float) height) % height)); innerDisplayHeight = MathHelper.ceil((System.currentTimeMillis() / (animation.duration / (float) height) % height));
@ -353,10 +333,10 @@ public class ReiPlugin implements REIClientPlugin {
innerDisplayHeight = height - innerDisplayHeight; innerDisplayHeight = height - innerDisplayHeight;
} else innerDisplayHeight = height; } else innerDisplayHeight = height;
drawFluid(drawContext, entry.getValue().getFluid(), innerDisplayHeight, bounds.x, bounds.y, width, height); drawFluid(drawContext, entry.getValue().getFluid(), innerDisplayHeight, bounds.x, bounds.y, width, height);
drawSprite(drawContext, GuiSprites.TANK_FOREGROUND, bounds.x - 1, bounds.y - 1);
} }
public void drawFluid(DrawContext drawContext, Fluid fluid, int drawHeight, int x, int y, int width, int height) { public void drawFluid(DrawContext drawContext, Fluid fluid, int drawHeight, int x, int y, int width, int height) {
RenderSystem.setShaderTexture(0, PlayerScreenHandler.BLOCK_ATLAS_TEXTURE);
y += height; y += height;
FluidRenderHandler handler = FluidRenderHandlerRegistry.INSTANCE.get(fluid); FluidRenderHandler handler = FluidRenderHandlerRegistry.INSTANCE.get(fluid);
@ -372,7 +352,7 @@ public class ReiPlugin implements REIClientPlugin {
final int iconHeight = sprite.getContents().getHeight(); final int iconHeight = sprite.getContents().getHeight();
int offsetHeight = drawHeight; int offsetHeight = drawHeight;
RenderSystem.setShaderColor((color >> 16 & 255) / 255.0F, (float) (color >> 8 & 255) / 255.0F, (float) (color & 255) / 255.0F, 1F); drawContext.setShaderColor((color >> 16 & 255) / 255.0F, (float) (color >> 8 & 255) / 255.0F, (float) (color & 255) / 255.0F, 1F);
int iteration = 0; int iteration = 0;
while (offsetHeight != 0) { while (offsetHeight != 0) {
@ -385,6 +365,7 @@ public class ReiPlugin implements REIClientPlugin {
break; break;
} }
} }
drawContext.setShaderColor(1, 1, 1, 1);
} }
@Override @Override
@ -395,7 +376,6 @@ public class ReiPlugin implements REIClientPlugin {
} }
public record EntryAnimation(EntryAnimationType animationType, long duration) { public record EntryAnimation(EntryAnimationType animationType, long duration) {
public static EntryAnimation upwards(long duration) { public static EntryAnimation upwards(long duration) {
return new EntryAnimation(EntryAnimationType.UPWARDS, duration); return new EntryAnimation(EntryAnimationType.UPWARDS, duration);
} }

View file

@ -79,7 +79,7 @@ public class GuiAESU extends GuiBase<BuiltScreenHandler> {
.append("/") .append("/")
.append(PowerSystem.getLocalizedPowerNoSuffix(blockEntity.getMaxStoredPower())) .append(PowerSystem.getLocalizedPowerNoSuffix(blockEntity.getMaxStoredPower()))
.append(" ") .append(" ")
.append(PowerSystem.getDisplayPower().abbreviation); .append(PowerSystem.ABBREVIATION);
drawCentredText(drawContext, text, 35, 0, 58, layer); drawCentredText(drawContext, text, 35, 0, 58, layer);
matrices.pop(); matrices.pop();

View file

@ -66,7 +66,7 @@ public class GuiIDSU extends GuiBase<BuiltScreenHandler> {
.append("/") .append("/")
.append(PowerSystem.getLocalizedPowerNoSuffix(idsu.getMaxStoredPower())) .append(PowerSystem.getLocalizedPowerNoSuffix(idsu.getMaxStoredPower()))
.append(" ") .append(" ")
.append(PowerSystem.getDisplayPower().abbreviation); .append(PowerSystem.ABBREVIATION);
drawCentredText(drawContext, text, 35, 0, 58, layer); drawCentredText(drawContext, text, 35, 0, 58, layer);

View file

@ -63,7 +63,7 @@ public class GuiLESU extends GuiBase<BuiltScreenHandler> {
.append("/") .append("/")
.append(PowerSystem.getLocalizedPowerNoSuffix(blockEntity.getMaxStoredPower())) .append(PowerSystem.getLocalizedPowerNoSuffix(blockEntity.getMaxStoredPower()))
.append(" ") .append(" ")
.append(PowerSystem.getDisplayPower().abbreviation), .append(PowerSystem.ABBREVIATION),
35, 0, 58, layer); 35, 0, 58, layer);
matrices.pop(); matrices.pop();