aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java/me/shedaniel/rei/gui/AbstractRecipeViewingScreen.java
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/src/main/java/me/shedaniel/rei/gui/AbstractRecipeViewingScreen.java')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/gui/AbstractRecipeViewingScreen.java141
1 files changed, 0 insertions, 141 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/AbstractRecipeViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/gui/AbstractRecipeViewingScreen.java
deleted file mode 100644
index c7fdcfc54..000000000
--- a/runtime/src/main/java/me/shedaniel/rei/gui/AbstractRecipeViewingScreen.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * This file is licensed under the MIT License, part of Roughly Enough Items.
- * Copyright (c) 2018, 2019, 2020 shedaniel
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package me.shedaniel.rei.gui;
-
-import com.google.common.collect.Lists;
-import me.shedaniel.math.Rectangle;
-import me.shedaniel.rei.api.gui.widgets.Slot;
-import me.shedaniel.rei.api.gui.widgets.Widget;
-import me.shedaniel.rei.api.ingredient.EntryStack;
-import me.shedaniel.rei.api.registry.display.Display;
-import me.shedaniel.rei.api.registry.display.DisplayCategory;
-import me.shedaniel.rei.api.util.CollectionUtils;
-import me.shedaniel.rei.gui.widget.EntryWidget;
-import me.shedaniel.rei.impl.ClientHelperImpl;
-import net.minecraft.client.gui.chat.NarratorChatListener;
-import net.minecraft.client.gui.components.events.ContainerEventHandler;
-import net.minecraft.client.gui.components.events.GuiEventListener;
-import net.minecraft.client.gui.screens.Screen;
-import net.minecraft.resources.ResourceLocation;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.List;
-import java.util.Map;
-
-public abstract class AbstractRecipeViewingScreen extends Screen implements RecipeScreen {
- protected final Map<DisplayCategory<?>, List<Display>> categoryMap;
- protected final List<DisplayCategory<?>> categories;
- protected EntryStack<?> ingredientStackToNotice = EntryStack.empty();
- protected EntryStack<?> resultStackToNotice = EntryStack.empty();
- protected int selectedCategoryIndex = 0;
- protected int tabsPerPage;
- protected Rectangle bounds;
-
- protected AbstractRecipeViewingScreen(Map<DisplayCategory<?>, List<Display>> categoryMap, @Nullable ResourceLocation category, int tabsPerPage) {
- super(NarratorChatListener.NO_TITLE);
- this.categoryMap = categoryMap;
- this.categories = Lists.newArrayList(categoryMap.keySet());
- this.tabsPerPage = tabsPerPage;
- if (category != null) {
- for (int i = 0; i < categories.size(); i++) {
- if (categories.get(i).getIdentifier().equals(category)) {
- this.selectedCategoryIndex = i;
- break;
- }
- }
- }
- }
-
- @Override
- public Rectangle getBounds() {
- return bounds;
- }
-
- @Override
- public void addIngredientStackToNotice(EntryStack<?> stack) {
- this.ingredientStackToNotice = stack;
- }
-
- @Override
- public void addResultStackToNotice(EntryStack<?> stack) {
- this.resultStackToNotice = stack;
- }
-
- @Override
- public boolean isPauseScreen() {
- return false;
- }
-
- @Override
- public ResourceLocation getCurrentCategory() {
- return getSelectedCategory().getIdentifier();
- }
-
- public DisplayCategory<Display> getSelectedCategory() {
- return (DisplayCategory<Display>) categories.get(selectedCategoryIndex);
- }
-
- protected void previousCategory() {
- int currentCategoryIndex = selectedCategoryIndex;
- currentCategoryIndex--;
- if (currentCategoryIndex < 0)
- currentCategoryIndex = categories.size() - 1;
- ClientHelperImpl.getInstance().openRecipeViewingScreen(categoryMap, categories.get(currentCategoryIndex).getIdentifier(), ingredientStackToNotice, resultStackToNotice);
- }
-
- protected void nextCategory() {
- int currentCategoryIndex = selectedCategoryIndex;
- currentCategoryIndex++;
- if (currentCategoryIndex >= categories.size())
- currentCategoryIndex = 0;
- ClientHelperImpl.getInstance().openRecipeViewingScreen(categoryMap, categories.get(currentCategoryIndex).getIdentifier(), ingredientStackToNotice, resultStackToNotice);
- }
-
- protected void transformIngredientNotice(List<Widget> setupDisplay, EntryStack<?> noticeStack) {
- transformNotice(Slot.INPUT, setupDisplay, noticeStack);
- }
-
- protected void transformResultNotice(List<Widget> setupDisplay, EntryStack<?> noticeStack) {
- transformNotice(Slot.OUTPUT, setupDisplay, noticeStack);
- }
-
- private static void transformNotice(int marker, List<? extends GuiEventListener> setupDisplay, EntryStack<?> noticeStack) {
- if (noticeStack.isEmpty())
- return;
- for (GuiEventListener widget : setupDisplay) {
- if (widget instanceof EntryWidget) {
- EntryWidget entry = (EntryWidget) widget;
- if (entry.getNoticeMark() == marker && entry.getEntries().size() > 1) {
- EntryStack<?> stack = CollectionUtils.findFirstOrNullEqualsExact(entry.getEntries(), noticeStack);
- if (stack != null) {
- entry.clearStacks();
- entry.entry(stack);
- }
- }
- } else if (widget instanceof ContainerEventHandler) {
- transformNotice(marker, ((ContainerEventHandler) widget).children(), noticeStack);
- }
- }
- }
-}