aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2019-12-15 21:25:49 +0800
committershedaniel <daniel@shedaniel.me>2019-12-15 21:25:49 +0800
commitc961a0c3995d58137ff9dece986bd092a358f3b6 (patch)
tree52204d92ccc74e9dbfb084ae366d9cb6de04af0a /src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
parentfca848e6b4e5e78bd2bec39f5fa91be18d6316b3 (diff)
downloadRoughlyEnoughItems-c961a0c3995d58137ff9dece986bd092a358f3b6.tar.gz
RoughlyEnoughItems-c961a0c3995d58137ff9dece986bd092a358f3b6.tar.bz2
RoughlyEnoughItems-c961a0c3995d58137ff9dece986bd092a358f3b6.zip
3.2.22 Favorites
Close #127
Diffstat (limited to 'src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java')
-rw-r--r--src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java62
1 files changed, 39 insertions, 23 deletions
diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
index 61ccee599..ae9151f63 100644
--- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
+++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
@@ -47,6 +47,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds {
private static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png");
private static final List<QueuedTooltip> QUEUED_TOOLTIPS = Lists.newArrayList();
private static final EntryListWidget ENTRY_LIST_WIDGET = new EntryListWidget();
+ private static FavoritesListWidget favoritesListWidget = null;
private final List<Widget> widgets = Lists.newLinkedList();
public boolean shouldReInit = false;
private int tooltipWidth;
@@ -70,7 +71,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds {
VertexConsumerProvider.Immediate immediate = VertexConsumerProvider.immediate(Tessellator.getInstance().getBuffer());
matrixStack_1.translate(0.0D, 0.0D, getBlitOffset());
Matrix4f matrix4f_1 = matrixStack_1.peek().getModel();
- for (int lineIndex = 0; lineIndex < tooltipLines.size(); lineIndex++) {
+ for(int lineIndex = 0; lineIndex < tooltipLines.size(); lineIndex++) {
font.draw(tooltipLines.get(lineIndex), x, currentY, -1, true, matrix4f_1, immediate, false, 0, 15728880);
currentY += lineIndex == 0 ? 12 : 10;
}
@@ -88,6 +89,11 @@ public class ContainerScreenOverlay extends WidgetWithBounds {
return ENTRY_LIST_WIDGET;
}
+ @Nullable
+ public static FavoritesListWidget getFavoritesListWidget() {
+ return favoritesListWidget;
+ }
+
public void init(boolean useless) {
init();
}
@@ -102,6 +108,11 @@ public class ContainerScreenOverlay extends WidgetWithBounds {
DisplayHelper.DisplayBoundsHandler boundsHandler = DisplayHelper.getInstance().getResponsibleBoundsHandler(MinecraftClient.getInstance().currentScreen.getClass());
this.rectangle = ConfigObject.getInstance().isLeftHandSidePanel() ? boundsHandler.getLeftBounds(MinecraftClient.getInstance().currentScreen) : boundsHandler.getRightBounds(MinecraftClient.getInstance().currentScreen);
widgets.add(ENTRY_LIST_WIDGET);
+ if (ConfigObject.getInstance().doDisplayFavoritesOnTheLeft() && ConfigObject.getInstance().isFavoritesEnabled()) {
+ if (favoritesListWidget == null)
+ favoritesListWidget = new FavoritesListWidget();
+ widgets.add(favoritesListWidget);
+ }
ENTRY_LIST_WIDGET.updateArea(boundsHandler, ScreenHelper.getSearchField() == null ? "" : null);
if (ScreenHelper.getSearchField() == null) {
ScreenHelper.setSearchField(new OverlaySearchField(0, 0, 0, 0));
@@ -242,7 +253,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds {
}
});
int xxx = ConfigObject.getInstance().isLeftHandSidePanel() ? window.getScaledWidth() - 30 : 10;
- for (Weather weather : Weather.values()) {
+ for(Weather weather : Weather.values()) {
widgets.add(new ButtonWidget(new Rectangle(xxx, 35, 20, 20), "") {
@Override
public void onPressed() {
@@ -416,16 +427,13 @@ public class ContainerScreenOverlay extends WidgetWithBounds {
if (shouldReInit)
init();
else {
- for (DisplayHelper.DisplayBoundsHandler<?> handler : DisplayHelper.getInstance().getSortedBoundsHandlers(minecraft.currentScreen.getClass())) {
+ for(DisplayHelper.DisplayBoundsHandler<?> handler : DisplayHelper.getInstance().getSortedBoundsHandlers(minecraft.currentScreen.getClass())) {
if (handler != null && handler.shouldRecalculateArea(!ConfigObject.getInstance().isLeftHandSidePanel(), rectangle)) {
init();
break;
}
}
}
- // if (DisplayHelper.getInstance().getBaseBoundsHandler() != null && DisplayHelper.getInstance().getBaseBoundsHandler().shouldRecalculateArea(!ConfigObject.getInstance().isLeftHandSidePanel(), rectangle))
- // entryListWidget.updateArea(DisplayHelper.getInstance().getResponsibleBoundsHandler());
- // else
if (ConfigManager.getInstance().isCraftableOnlyEnabled() && ((currentStacks.size() != ScreenHelper.inventoryStacks.size()) || !hasSameListContent(new LinkedList<>(ScreenHelper.inventoryStacks), currentStacks))) {
ScreenHelper.inventoryStacks = currentStacks;
ENTRY_LIST_WIDGET.updateSearch(ScreenHelper.getSearchField().getText());
@@ -436,7 +444,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds {
if (MinecraftClient.getInstance().currentScreen instanceof AbstractContainerScreen) {
ContainerScreenHooks hooks = (ContainerScreenHooks) MinecraftClient.getInstance().currentScreen;
int left = hooks.rei_getContainerLeft(), top = hooks.rei_getContainerTop();
- for (Slot slot : ((AbstractContainerScreen<?>) MinecraftClient.getInstance().currentScreen).getContainer().slotList)
+ for(Slot slot : ((AbstractContainerScreen<?>) MinecraftClient.getInstance().currentScreen).getContainer().slotList)
if (!slot.hasStack() || !ENTRY_LIST_WIDGET.canLastSearchTermsBeAppliedTo(EntryStack.create(slot.getStack())))
fillGradient(left + slot.xPosition, top + slot.yPosition, left + slot.xPosition + 16, top + slot.yPosition + 16, -601874400, -601874400);
}
@@ -447,7 +455,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds {
this.renderWidgets(mouseX, mouseY, delta);
if (MinecraftClient.getInstance().currentScreen instanceof AbstractContainerScreen && ConfigObject.getInstance().areClickableRecipeArrowsEnabled()) {
ContainerScreenHooks hooks = (ContainerScreenHooks) MinecraftClient.getInstance().currentScreen;
- for (RecipeHelper.ScreenClickArea area : RecipeHelper.getInstance().getScreenClickAreas())
+ for(RecipeHelper.ScreenClickArea area : RecipeHelper.getInstance().getScreenClickAreas())
if (area.getScreenClass().equals(MinecraftClient.getInstance().currentScreen.getClass()))
if (area.getRectangle().contains(mouseX - hooks.rei_getContainerLeft(), mouseY - hooks.rei_getContainerTop())) {
String collect = CollectionUtils.mapAndJoinToString(area.getCategories(), identifier -> RecipeHelper.getInstance().getCategory(identifier).getCategoryName(), ", ");
@@ -465,7 +473,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds {
}
Screen currentScreen = MinecraftClient.getInstance().currentScreen;
if (!(currentScreen instanceof RecipeViewingScreen) || !((RecipeViewingScreen) currentScreen).choosePageActivated)
- for (QueuedTooltip queuedTooltip : QUEUED_TOOLTIPS) {
+ for(QueuedTooltip queuedTooltip : QUEUED_TOOLTIPS) {
if (queuedTooltip != null)
renderTooltip(queuedTooltip);
}
@@ -525,22 +533,28 @@ public class ContainerScreenOverlay extends WidgetWithBounds {
else
return false;
return true;
- } else {
- return ENTRY_LIST_WIDGET.mouseScrolled(i, j, amount);
- }
+ } else if (ENTRY_LIST_WIDGET.mouseScrolled(i, j, amount))
+ return true;
}
- for (Widget widget : widgets)
- if (widget != ENTRY_LIST_WIDGET && widget.mouseScrolled(i, j, amount))
+ if (isNotInExclusionZones(PointHelper.getMouseX(), PointHelper.getMouseY())) {
+ if (favoritesListWidget != null && favoritesListWidget.mouseScrolled(i, j, amount))
+ return true;
+ }
+ for(Widget widget : widgets)
+ if (widget != ENTRY_LIST_WIDGET && (favoritesListWidget == null || widget != favoritesListWidget) && widget.mouseScrolled(i, j, amount))
return true;
return false;
}
@Override
public boolean keyPressed(int int_1, int int_2, int int_3) {
- if (ScreenHelper.isOverlayVisible())
- for (Element listener : widgets)
- if (listener.keyPressed(int_1, int_2, int_3))
+ if (ScreenHelper.isOverlayVisible()) {
+ if (ScreenHelper.getSearchField().keyPressed(int_1, int_2, int_3))
+ return true;
+ for(Element listener : widgets)
+ if (listener != ScreenHelper.getSearchField() && listener.keyPressed(int_1, int_2, int_3))
return true;
+ }
if (ClientHelper.getInstance().getHideKeyBinding().matchesKey(int_1, int_2)) {
ScreenHelper.toggleOverlayVisible();
return true;
@@ -571,8 +585,10 @@ public class ContainerScreenOverlay extends WidgetWithBounds {
public boolean charTyped(char char_1, int int_1) {
if (!ScreenHelper.isOverlayVisible())
return false;
- for (Element listener : widgets)
- if (listener.charTyped(char_1, int_1))
+ if (ScreenHelper.getSearchField().charTyped(char_1, int_1))
+ return true;
+ for(Element listener : widgets)
+ if (listener != ScreenHelper.getSearchField() && listener.charTyped(char_1, int_1))
return true;
return false;
}
@@ -588,7 +604,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds {
return false;
if (MinecraftClient.getInstance().currentScreen instanceof AbstractContainerScreen && ConfigObject.getInstance().areClickableRecipeArrowsEnabled()) {
ContainerScreenHooks hooks = (ContainerScreenHooks) MinecraftClient.getInstance().currentScreen;
- for (RecipeHelper.ScreenClickArea area : RecipeHelper.getInstance().getScreenClickAreas())
+ for(RecipeHelper.ScreenClickArea area : RecipeHelper.getInstance().getScreenClickAreas())
if (area.getScreenClass().equals(MinecraftClient.getInstance().currentScreen.getClass()))
if (area.getRectangle().contains(double_1 - hooks.rei_getContainerLeft(), double_2 - hooks.rei_getContainerTop())) {
ClientHelper.getInstance().executeViewAllRecipesFromCategories(Arrays.asList(area.getCategories()));
@@ -596,7 +612,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds {
return true;
}
}
- for (Element element : widgets)
+ for(Element element : widgets)
if (element.mouseClicked(double_1, double_2, int_1)) {
this.setFocused(element);
if (int_1 == 0)
@@ -616,7 +632,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds {
public boolean isInside(double mouseX, double mouseY) {
if (!rectangle.contains(mouseX, mouseY))
return false;
- for (DisplayHelper.DisplayBoundsHandler<?> handler : DisplayHelper.getInstance().getSortedBoundsHandlers(MinecraftClient.getInstance().currentScreen.getClass())) {
+ for(DisplayHelper.DisplayBoundsHandler<?> handler : DisplayHelper.getInstance().getSortedBoundsHandlers(MinecraftClient.getInstance().currentScreen.getClass())) {
ActionResult in = handler.isInZone(!ConfigObject.getInstance().isLeftHandSidePanel(), mouseX, mouseY);
if (in != ActionResult.PASS)
return in == ActionResult.SUCCESS;
@@ -625,7 +641,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds {
}
public boolean isNotInExclusionZones(double mouseX, double mouseY) {
- for (DisplayHelper.DisplayBoundsHandler<?> handler : DisplayHelper.getInstance().getSortedBoundsHandlers(MinecraftClient.getInstance().currentScreen.getClass())) {
+ for(DisplayHelper.DisplayBoundsHandler<?> handler : DisplayHelper.getInstance().getSortedBoundsHandlers(MinecraftClient.getInstance().currentScreen.getClass())) {
ActionResult in = handler.isInZone(true, mouseX, mouseY);
if (in != ActionResult.PASS)
return in == ActionResult.SUCCESS;