From 1f6137d24153b62c42da129ce5d6373bbf78ee34 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Mon, 14 Dec 2020 00:10:26 +0800 Subject: The big refactor Signed-off-by: shedaniel --- .../me/shedaniel/rei/impl/AbstractEntryStack.java | 60 +++++++++------------- 1 file changed, 23 insertions(+), 37 deletions(-) (limited to 'RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java') diff --git a/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java b/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java index fcc256adc..4b8d0ca83 100644 --- a/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java +++ b/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java @@ -23,20 +23,27 @@ package me.shedaniel.rei.impl; +import com.mojang.blaze3d.vertex.PoseStack; import it.unimi.dsi.fastutil.shorts.Short2ObjectMap; import it.unimi.dsi.fastutil.shorts.Short2ObjectMaps; import it.unimi.dsi.fastutil.shorts.Short2ObjectOpenHashMap; +import me.shedaniel.math.Point; +import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.EntryStack; -import net.minecraft.client.gui.GuiComponent; +import me.shedaniel.rei.api.entry.AbstractRenderer; +import me.shedaniel.rei.api.entry.ComparisonContext; +import me.shedaniel.rei.api.entry.EntryStacks; +import me.shedaniel.rei.api.widgets.Tooltip; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.Nullable; @ApiStatus.Internal -public abstract class AbstractEntryStack extends GuiComponent implements EntryStack { +public abstract class AbstractEntryStack extends AbstractRenderer implements EntryStack { private static final Short2ObjectMap EMPTY_SETTINGS = Short2ObjectMaps.emptyMap(); private Short2ObjectMap settings = null; @Override - public EntryStack setting(Settings settings, T value) { + public EntryStack setting(Settings settings, T value) { short settingsId = settings.getId(); if (this.settings == null) this.settings = Short2ObjectMaps.singleton(settingsId, value); @@ -57,7 +64,7 @@ public abstract class AbstractEntryStack extends GuiComponent implements EntrySt } @Override - public EntryStack removeSetting(Settings settings) { + public EntryStack removeSetting(Settings settings) { if (this.settings != null) { short settingsId = settings.getId(); if (this.settings.size() == 1) { @@ -72,7 +79,7 @@ public abstract class AbstractEntryStack extends GuiComponent implements EntrySt } @Override - public EntryStack clearSettings() { + public EntryStack clearSettings() { this.settings = null; return this; } @@ -90,46 +97,25 @@ public abstract class AbstractEntryStack extends GuiComponent implements EntrySt } @Override - public boolean equals(EntryStack stack, boolean ignoreTags, boolean ignoreAmount) { - if (ignoreTags && ignoreAmount) - return equalsIgnoreTagsAndAmount(stack); - if (ignoreAmount) - return equalsIgnoreAmount(stack); - if (ignoreTags) - return equalsIgnoreTags(stack); - return equalsAll(stack); + public void render(PoseStack matrices, Rectangle bounds, int mouseX, int mouseY, float delta) { + this.getDefinition().getRenderer().render(this, matrices, bounds, mouseX, mouseY, delta); } @Override - public boolean equals(Object obj) { - if (!(obj instanceof EntryStack)) - return false; - EntryStack stack = (EntryStack) obj; - boolean checkTags = get(Settings.CHECK_TAGS).get() || stack.get(Settings.CHECK_TAGS).get(); - boolean checkAmount = get(Settings.CHECK_AMOUNT).get() || stack.get(Settings.CHECK_AMOUNT).get(); - return equals(stack, !checkTags, !checkAmount); + public @Nullable Tooltip getTooltip(Point mouse) { + return this.getDefinition().getRenderer().getTooltip(this, mouse); } @Override - public int hashCode() { - boolean checkTags = get(Settings.CHECK_TAGS).get(); - boolean checkAmount = get(Settings.CHECK_AMOUNT).get(); - if (!checkAmount && !checkTags) - return hashIgnoreAmountAndTags(); - if (!checkAmount) - return hashIgnoreAmount(); - if (!checkTags) - return hashIgnoreTags(); - return hashOfAll(); + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof AbstractEntryStack)) return false; + AbstractEntryStack that = (AbstractEntryStack) o; + return EntryStacks.equalsExact(this, that); } @Override - public int getZ() { - return getBlitOffset(); - } - - @Override - public void setZ(int z) { - setBlitOffset(z); + public int hashCode() { + return hash(ComparisonContext.EXACT); } } -- cgit