diff options
| author | Unknown <shekwancheung0528@gmail.com> | 2019-01-30 21:12:10 +0800 |
|---|---|---|
| committer | Unknown <shekwancheung0528@gmail.com> | 2019-01-30 21:12:10 +0800 |
| commit | 30493491181cec7a32c2bce360e623504fb896d8 (patch) | |
| tree | cd93b7767a119e9ce2ac4235cd837854c362367b /src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java | |
| parent | 973868ece23dd75080cfe6ef7b48f8284070ce4e (diff) | |
| download | RoughlyEnoughItems-30493491181cec7a32c2bce360e623504fb896d8.tar.gz RoughlyEnoughItems-30493491181cec7a32c2bce360e623504fb896d8.tar.bz2 RoughlyEnoughItems-30493491181cec7a32c2bce360e623504fb896d8.zip | |
Close #17
Diffstat (limited to 'src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java')
| -rw-r--r-- | src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java | 290 |
1 files changed, 0 insertions, 290 deletions
diff --git a/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java deleted file mode 100644 index 2004f38c5..000000000 --- a/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java +++ /dev/null @@ -1,290 +0,0 @@ -package me.shedaniel.rei.gui.widget; - -import com.google.common.collect.Lists; -import com.mojang.blaze3d.platform.GlStateManager; -import me.shedaniel.rei.api.IRecipeCategory; -import me.shedaniel.rei.api.IRecipeDisplay; -import me.shedaniel.rei.api.SpeedCraftAreaSupplier; -import me.shedaniel.rei.api.SpeedCraftFunctional; -import me.shedaniel.rei.client.ClientHelper; -import me.shedaniel.rei.client.GuiHelper; -import me.shedaniel.rei.client.RecipeHelper; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.audio.PositionedSoundInstance; -import net.minecraft.client.gui.ContainerGui; -import net.minecraft.client.gui.Gui; -import net.minecraft.client.gui.GuiEventListener; -import net.minecraft.client.render.GuiLighting; -import net.minecraft.client.util.Window; -import net.minecraft.sound.SoundEvents; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.MathHelper; - -import java.awt.*; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -public class RecipeViewingWidget extends Gui { - - public static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png"); - private static final Identifier CREATIVE_INVENTORY_TABS = new Identifier("textures/gui/container/creative_inventory/tabs.png"); - public final int guiWidth = 176; - public final int guiHeight = 186; - - private List<IWidget> widgets; - private List<TabWidget> tabs; - private Window window; - private Rectangle bounds; - private Map<IRecipeCategory, List<IRecipeDisplay>> categoriesMap; - private List<IRecipeCategory> categories; - private IRecipeCategory selectedCategory; - private int page, categoryPages; - private ButtonWidget recipeBack, recipeNext, categoryBack, categoryNext; - - public RecipeViewingWidget(Window window, Map<IRecipeCategory, List<IRecipeDisplay>> categoriesMap) { - this.categoryPages = 0; - this.window = window; - this.widgets = Lists.newArrayList(); - this.bounds = new Rectangle(window.getScaledWidth() / 2 - guiWidth / 2, window.getScaledHeight() / 2 - guiHeight / 2, guiWidth, guiHeight); - this.categoriesMap = categoriesMap; - this.categories = Lists.newArrayList(); - RecipeHelper.getInstance().getCategories().forEach(category -> { - if (categoriesMap.containsKey(category)) - categories.add(category); - }); - this.selectedCategory = categories.get(0); - this.tabs = new ArrayList<>(); - } - - public static SpeedCraftFunctional getSpeedCraftFunctionalByCategory(ContainerGui containerGui, IRecipeCategory category) { - for(SpeedCraftFunctional functional : RecipeHelper.getInstance().getSpeedCraftFunctional(category)) - for(Class aClass : functional.getFunctioningFor()) - if (containerGui.getClass().isAssignableFrom(aClass)) - return functional; - return null; - } - - @Override - public boolean keyPressed(int int_1, int int_2, int int_3) { - if ((int_1 == 256 || this.client.options.keyInventory.matchesKey(int_1, int_2)) && this.doesEscapeKeyClose()) { - MinecraftClient.getInstance().openGui(GuiHelper.getLastContainerGui()); - return true; - } - for(GuiEventListener listener : listeners) - if (listener.keyPressed(int_1, int_2, int_3)) - return true; - return super.keyPressed(int_1, int_2, int_3); - } - - @Override - public boolean isPauseScreen() { - return false; - } - - @Override - protected void onInitialized() { - super.onInitialized(); - this.tabs.clear(); - this.widgets.clear(); - this.bounds = new Rectangle(window.getScaledWidth() / 2 - guiWidth / 2, window.getScaledHeight() / 2 - guiHeight / 2, guiWidth, guiHeight); - - widgets.add(categoryBack = new ButtonWidget((int) bounds.getX() + 5, (int) bounds.getY() + 5, 12, 12, "<") { - @Override - public void onPressed(int button, double mouseX, double mouseY) { - int currentCategoryIndex = categories.indexOf(selectedCategory); - currentCategoryIndex--; - if (currentCategoryIndex < 0) - currentCategoryIndex = categories.size() - 1; - selectedCategory = categories.get(currentCategoryIndex); - categoryPages = MathHelper.floor(currentCategoryIndex / 6d); - RecipeViewingWidget.this.onInitialized(); - } - }); - widgets.add(categoryNext = new ButtonWidget((int) bounds.getX() + 159, (int) bounds.getY() + 5, 12, 12, ">") { - @Override - public void onPressed(int button, double mouseX, double mouseY) { - int currentCategoryIndex = categories.indexOf(selectedCategory); - currentCategoryIndex++; - if (currentCategoryIndex >= categories.size()) - currentCategoryIndex = 0; - selectedCategory = categories.get(currentCategoryIndex); - categoryPages = MathHelper.floor(currentCategoryIndex / 6d); - RecipeViewingWidget.this.onInitialized(); - } - }); - categoryBack.enabled = categories.size() > 1; - categoryNext.enabled = categories.size() > 1; - - widgets.add(recipeBack = new ButtonWidget((int) bounds.getX() + 5, (int) bounds.getY() + 21, 12, 12, "<") { - @Override - public void onPressed(int button, double mouseX, double mouseY) { - page--; - if (page < 0) - page = getTotalPages(selectedCategory) - 1; - RecipeViewingWidget.this.onInitialized(); - } - }); - widgets.add(recipeNext = new ButtonWidget((int) bounds.getX() + 159, (int) bounds.getY() + 21, 12, 12, ">") { - @Override - public void onPressed(int button, double mouseX, double mouseY) { - page++; - if (page >= getTotalPages(selectedCategory)) - page = 0; - RecipeViewingWidget.this.onInitialized(); - } - }); - recipeBack.enabled = categoriesMap.get(selectedCategory).size() > getRecipesPerPage(); - recipeNext.enabled = categoriesMap.get(selectedCategory).size() > getRecipesPerPage(); - - widgets.add(new LabelWidget((int) bounds.getCenterX(), (int) bounds.getY() + 7, "") { - @Override - public void draw(int mouseX, int mouseY, float partialTicks) { - this.text = selectedCategory.getCategoryName(); - super.draw(mouseX, mouseY, partialTicks); - } - }); - widgets.add(new LabelWidget((int) bounds.getCenterX(), (int) bounds.getY() + 23, "") { - @Override - public void draw(int mouseX, int mouseY, float partialTicks) { - this.text = String.format("%d/%d", page + 1, getTotalPages(selectedCategory)); - super.draw(mouseX, mouseY, partialTicks); - } - }); - for(int i = 0; i < 6; i++) { - int j = i + categoryPages * 6; - if (categories.size() > j) { - TabWidget tab; - tabs.add(tab = new TabWidget(i, this, new Rectangle(bounds.x + 4 + 28 * i, bounds.y - 28, 28, 28)) { - @Override - public boolean onMouseClick(int button, double mouseX, double mouseY) { - if (getBounds().contains(mouseX, mouseY)) { - MinecraftClient.getInstance().getSoundLoader().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); - if (getId() + categoryPages * 6 == categories.indexOf(selectedCategory)) - return false; - selectedCategory = categories.get(getId() + categoryPages * 6); - page = 0; - RecipeViewingWidget.this.onInitialized(); - return true; - } - return false; - } - }); - tab.setItem(categories.get(j).getCategoryIcon(), categories.get(j).getCategoryName(), tab.getId() + categoryPages * 6 == categories.indexOf(selectedCategory)); - } - } - SpeedCraftAreaSupplier supplier = RecipeHelper.getInstance().getSpeedCraftButtonArea(selectedCategory); - final SpeedCraftFunctional functional = getSpeedCraftFunctionalByCategory(GuiHelper.getLastContainerGui(), selectedCategory); - if (page * getRecipesPerPage() < categoriesMap.get(selectedCategory).size()) { - final IRecipeDisplay topDisplay = categoriesMap.get(selectedCategory).get(page * getRecipesPerPage()); - widgets.addAll(selectedCategory.setupDisplay(topDisplay, new Rectangle((int) getBounds().getCenterX() - 75, getBounds().y + 40, 150, selectedCategory.usesFullPage() ? 140 : 66))); - if (supplier != null) - widgets.add(new SpeedCraftingButtonWidget(supplier.get(new Rectangle((int) getBounds().getCenterX() - 75, getBounds().y + 40, 150, selectedCategory.usesFullPage() ? 140 : 66)), supplier.getButtonText(), functional, topDisplay)); - if (!selectedCategory.usesFullPage() && page * getRecipesPerPage() + 1 < categoriesMap.get(selectedCategory).size()) { - final IRecipeDisplay middleDisplay = categoriesMap.get(selectedCategory).get(page * getRecipesPerPage() + 1); - widgets.addAll(selectedCategory.setupDisplay(middleDisplay, new Rectangle((int) getBounds().getCenterX() - 75, getBounds().y + 113, 150, 66))); - if (supplier != null) - widgets.add(new SpeedCraftingButtonWidget(supplier.get(new Rectangle((int) getBounds().getCenterX() - 75, getBounds().y + 113, 150, 66)), supplier.getButtonText(), functional, middleDisplay)); - } - } - - GuiHelper.getLastOverlay().onInitialized(); - listeners.addAll(tabs); - listeners.add(GuiHelper.getLastOverlay()); - listeners.addAll(widgets); - } - - public int getPage() { - return page; - } - - public int getCategoryPage() { - return categoryPages; - } - - private int getRecipesPerPage() { - if (selectedCategory.usesFullPage()) - return 1; - return 2; - } - - @Override - public void draw(int mouseX, int mouseY, float partialTicks) { - drawBackground(); - tabs.stream().filter(tabWidget -> { - return !tabWidget.isSelected(); - }).forEach(tabWidget -> tabWidget.draw(mouseX, mouseY, partialTicks)); - GuiLighting.disable(); - super.draw(mouseX, mouseY, partialTicks); - widgets.forEach(widget -> { - GuiLighting.disable(); - widget.draw(mouseX, mouseY, partialTicks); - }); - GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); - GuiLighting.disable(); - tabs.stream().filter(TabWidget::isSelected).forEach(tabWidget -> tabWidget.draw(mouseX, mouseY, partialTicks)); - GuiHelper.getLastOverlay().render(mouseX, mouseY, partialTicks); - } - - @Override - public void drawBackground() { - drawBackground(0); - if (selectedCategory != null) - selectedCategory.drawCategoryBackground(bounds); - else { - GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); - GuiLighting.disable(); - this.client.getTextureManager().bindTexture(CHEST_GUI_TEXTURE); - this.drawTexturedRect((int) bounds.getX(), (int) bounds.getY(), 0, 0, (int) bounds.getWidth(), (int) bounds.getHeight()); - } - } - - public int getTotalPages(IRecipeCategory category) { - return MathHelper.ceil(categoriesMap.get(category).size() / (double) getRecipesPerPage()); - } - - public Rectangle getBounds() { - return bounds; - } - - @Override - public boolean charTyped(char char_1, int int_1) { - for(GuiEventListener listener : listeners) - if (listener.charTyped(char_1, int_1)) - return true; - return super.charTyped(char_1, int_1); - } - - @Override - public boolean mouseScrolled(double amount) { - for(GuiEventListener listener : listeners) - if (listener.mouseScrolled(amount)) - return true; - if (getBounds().contains(ClientHelper.getMouseLocation())) { - if (amount > 0 && recipeBack.enabled) - recipeBack.onPressed(0, 0, 0); - else if (amount < 0 && recipeNext.enabled) - recipeNext.onPressed(0, 0, 0); - } - if ((new Rectangle(bounds.x, bounds.y - 28, bounds.width, 28)).contains(ClientHelper.getMouseLocation())) { - if (amount > 0 && categoryBack.enabled) - categoryBack.onPressed(0, 0, 0); - else if (amount < 0 && categoryNext.enabled) - categoryNext.onPressed(0, 0, 0); - } - return super.mouseScrolled(amount); - } - - @Override - public boolean mouseClicked(double double_1, double double_2, int int_1) { - for(GuiEventListener entry : getEntries()) - if (entry.mouseClicked(double_1, double_2, int_1)) { - focusOn(entry); - if (int_1 == 0) - setActive(true); - return true; - } - return false; - } - -} |
