aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java/me
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-10-29 19:35:05 +0800
committershedaniel <daniel@shedaniel.me>2022-10-29 19:36:10 +0800
commitd87a94e4614708de005a7431680ec0a51308f6ec (patch)
treeccd24a7476343362417a4e365794f5cea4d2e483 /runtime/src/main/java/me
parent85ab4c61276f249f27b42a794167f2831ca7656a (diff)
downloadRoughlyEnoughItems-d87a94e4614708de005a7431680ec0a51308f6ec.tar.gz
RoughlyEnoughItems-d87a94e4614708de005a7431680ec0a51308f6ec.tar.bz2
RoughlyEnoughItems-d87a94e4614708de005a7431680ec0a51308f6ec.zip
Make backspacing categories less granular
Diffstat (limited to 'runtime/src/main/java/me')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java29
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java3
3 files changed, 24 insertions, 13 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java
index 73e9d24ca..b2173b0c6 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java
@@ -48,7 +48,6 @@ import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.entry.type.EntryType;
import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes;
import me.shedaniel.rei.api.common.util.CollectionUtils;
-import me.shedaniel.rei.impl.client.ClientHelperImpl;
import me.shedaniel.rei.impl.client.REIRuntimeImpl;
import me.shedaniel.rei.impl.client.gui.widget.EntryWidget;
import me.shedaniel.rei.impl.client.gui.widget.entrylist.EntryListWidget;
@@ -89,13 +88,27 @@ public abstract class AbstractDisplayViewingScreen extends Screen implements Dis
this.categories = Lists.newArrayList(categoryMap.keySet());
this.tabsPerPage = tabsPerPage;
if (category != null) {
- for (int i = 0; i < categories.size(); i++) {
- if (categories.get(i).getCategoryIdentifier().equals(category)) {
- this.selectedCategoryIndex = i;
- break;
- }
+ selectCategory(category, false);
+ }
+ }
+
+ protected void selectCategory(CategoryIdentifier<?> category) {
+ selectCategory(category, true);
+ }
+
+ protected void selectCategory(CategoryIdentifier<?> category, boolean init) {
+ for (int i = 0; i < categories.size(); i++) {
+ if (categories.get(i).getCategoryIdentifier().equals(category)) {
+ this.selectedCategoryIndex = i;
+ break;
}
}
+
+ recalculateCategoryPage();
+
+ if (init) {
+ init();
+ }
}
@Override
@@ -153,7 +166,7 @@ public abstract class AbstractDisplayViewingScreen extends Screen implements Dis
currentCategoryIndex--;
if (currentCategoryIndex < 0)
currentCategoryIndex = categories.size() - 1;
- ClientHelperImpl.getInstance().openDisplayViewingScreen(categoryMap, categories.get(currentCategoryIndex).getCategoryIdentifier(), ingredientStackToNotice, resultStackToNotice);
+ selectCategory(categories.get(currentCategoryIndex).getCategoryIdentifier());
}
@Override
@@ -162,7 +175,7 @@ public abstract class AbstractDisplayViewingScreen extends Screen implements Dis
currentCategoryIndex++;
if (currentCategoryIndex >= categories.size())
currentCategoryIndex = 0;
- ClientHelperImpl.getInstance().openDisplayViewingScreen(categoryMap, categories.get(currentCategoryIndex).getCategoryIdentifier(), ingredientStackToNotice, resultStackToNotice);
+ selectCategory(categories.get(currentCategoryIndex).getCategoryIdentifier());
}
protected void transformIngredientNotice(List<Widget> setupDisplay, List<EntryStack<?>> noticeStacks) {
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java
index c272e7f7f..5c0368496 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java
@@ -43,7 +43,6 @@ import me.shedaniel.rei.api.client.view.ViewSearchBuilder;
import me.shedaniel.rei.api.common.category.CategoryIdentifier;
import me.shedaniel.rei.api.common.display.Display;
import me.shedaniel.rei.api.common.entry.EntryIngredient;
-import me.shedaniel.rei.impl.client.ClientHelperImpl;
import me.shedaniel.rei.impl.client.REIRuntimeImpl;
import me.shedaniel.rei.impl.client.gui.InternalTextures;
import me.shedaniel.rei.impl.client.gui.widget.EntryWidget;
@@ -200,7 +199,7 @@ public class CompositeDisplayViewingScreen extends AbstractDisplayViewingScreen
Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0F));
if (widget.selected)
return false;
- ClientHelperImpl.getInstance().openDisplayViewingScreen(categoryMap, tabCategory.getCategoryIdentifier(), ingredientStackToNotice, resultStackToNotice);
+ selectCategory(tabCategory.getCategoryIdentifier());
return true;
}));
tab.setRenderer(tabCategory, tabCategory.getIcon(), tabCategory.getTitle(), j == selectedCategoryIndex);
@@ -322,7 +321,7 @@ public class CompositeDisplayViewingScreen extends AbstractDisplayViewingScreen
else if (amount > 0) selectedCategoryIndex--;
if (selectedCategoryIndex < 0) selectedCategoryIndex = categories.size() - 1;
else if (selectedCategoryIndex >= categories.size()) selectedCategoryIndex = 0;
- ClientHelperImpl.getInstance().openDisplayViewingScreen(categoryMap, categories.get(selectedCategoryIndex).getCategoryIdentifier(), ingredientStackToNotice, resultStackToNotice);
+ selectCategory(categories.get(selectedCategoryIndex).getCategoryIdentifier());
return true;
}
if (bounds.contains(PointHelper.ofMouse())) {
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java
index 92e2afb5d..5817338c3 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java
@@ -51,7 +51,6 @@ import me.shedaniel.rei.api.common.category.CategoryIdentifier;
import me.shedaniel.rei.api.common.display.Display;
import me.shedaniel.rei.api.common.entry.EntryIngredient;
import me.shedaniel.rei.api.common.util.CollectionUtils;
-import me.shedaniel.rei.impl.client.ClientHelperImpl;
import me.shedaniel.rei.impl.client.REIRuntimeImpl;
import me.shedaniel.rei.impl.client.gui.InternalTextures;
import me.shedaniel.rei.impl.client.gui.RecipeDisplayExporter;
@@ -251,7 +250,7 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen {
Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0F));
if (widget.getId() + categoryPages * tabsPerPage == selectedCategoryIndex)
return false;
- ClientHelperImpl.getInstance().openDisplayViewingScreen(categoryMap, categories.get(widget.getId() + categoryPages * tabsPerPage).getCategoryIdentifier(), ingredientStackToNotice, resultStackToNotice);
+ selectCategory(categories.get(widget.getId() + categoryPages * tabsPerPage).getCategoryIdentifier());
return true;
}));
tab.setRenderer(categories.get(tabIndex), categories.get(tabIndex).getIcon(), categories.get(tabIndex).getTitle(), tab.getId() + categoryPages * tabsPerPage == selectedCategoryIndex);