From 58aac2ce0b64a3066365079b96f292b4bc90778f Mon Sep 17 00:00:00 2001 From: drcrazy Date: Tue, 10 Oct 2017 00:11:34 +0300 Subject: [PATCH] Updated AESU GUI --- src/main/java/techreborn/client/EGui.java | 77 +++++---- .../java/techreborn/client/GuiHandler.java | 3 - .../client/container/ContainerAESU.java | 102 ------------ .../java/techreborn/client/gui/GuiAESU.java | 154 ++++++++++-------- .../java/techreborn/client/gui/TRBuilder.java | 26 +++ .../client/gui/widget/GuiButtonUpDown.java | 44 +++++ .../tiles/storage/TileAdjustableSU.java | 91 +++++------ .../techreborn/textures/gui/gui_sheet.png | Bin 16922 -> 17575 bytes 8 files changed, 238 insertions(+), 259 deletions(-) delete mode 100644 src/main/java/techreborn/client/container/ContainerAESU.java create mode 100644 src/main/java/techreborn/client/gui/widget/GuiButtonUpDown.java diff --git a/src/main/java/techreborn/client/EGui.java b/src/main/java/techreborn/client/EGui.java index 3ecdc35b6..545a5e195 100644 --- a/src/main/java/techreborn/client/EGui.java +++ b/src/main/java/techreborn/client/EGui.java @@ -32,46 +32,46 @@ import techreborn.Core; public enum EGui implements IMachineGuiHandler { - THERMAL_GENERATOR(true), - QUANTUM_TANK(true), - QUANTUM_CHEST(true), - CENTRIFUGE(true), - ROLLING_MACHINE(true), - BLAST_FURNACE(true), - ALLOY_SMELTER(true), - INDUSTRIAL_GRINDER(true), - IMPLOSION_COMPRESSOR(true), - MATTER_FABRICATOR(true), - MANUAL(false), - CHUNK_LOADER(true), - ASSEMBLING_MACHINE(true), - DIESEL_GENERATOR(true), - INDUSTRIAL_ELECTROLYZER(true), - AESU(false), + AESU(true), ALLOY_FURNACE(true), - SAWMILL(true), - CHEMICAL_REACTOR(true), - SEMIFLUID_GENERATOR(true), - GAS_TURBINE(true), - DIGITAL_CHEST(true), - DESTRUCTOPACK(false), - LESU(false), - IDSU(true), + ALLOY_SMELTER(true), + ASSEMBLING_MACHINE(true), + AUTO_CRAFTING_TABLE(true), + BLAST_FURNACE(true), + CENTRIFUGE(true), CHARGEBENCH(true), - FUSION_CONTROLLER(true), - VACUUM_FREEZER(true), - GRINDER(true), - GENERATOR(true), - EXTRACTOR(true), + CHEMICAL_REACTOR(true), + CHUNK_LOADER(true), COMPRESSOR(true), + DESTRUCTOPACK(false), + DIESEL_GENERATOR(true), + DIGITAL_CHEST(true), ELECTRIC_FURNACE(true), - IRON_FURNACE(true), - RECYCLER(true), - SCRAPBOXINATOR(true), - LOW_VOLTAGE_SU(true), + EXTRACTOR(true), + FUSION_CONTROLLER(true), + GAS_TURBINE(true), + GENERATOR(true), + GRINDER(true), HIGH_VOLTAGE_SU(true), + IDSU(true), + IMPLOSION_COMPRESSOR(true), + INDUSTRIAL_ELECTROLYZER(true), + INDUSTRIAL_GRINDER(true), + IRON_FURNACE(true), + LESU(false), + LOW_VOLTAGE_SU(true), + MANUAL(false), + MATTER_FABRICATOR(true), MEDIUM_VOLTAGE_SU(true), - AUTO_CRAFTING_TABLE(true); + QUANTUM_CHEST(true), + QUANTUM_TANK(true), + RECYCLER(true), + ROLLING_MACHINE(true), + SAWMILL(true), + SCRAPBOXINATOR(true), + SEMIFLUID_GENERATOR(true), + THERMAL_GENERATOR(true), + VACUUM_FREEZER(true); private final boolean containerBuilder; @@ -79,15 +79,14 @@ public enum EGui implements IMachineGuiHandler { this.containerBuilder = containerBuilder; } - public boolean useContainerBuilder() { - return this.containerBuilder; - } - - @Override public void open(EntityPlayer player, BlockPos pos, World world) { if(!world.isRemote){ player.openGui(Core.INSTANCE, this.ordinal(), world, pos.getX(), pos.getY(), pos.getZ()); } } + + public boolean useContainerBuilder() { + return this.containerBuilder; + } } diff --git a/src/main/java/techreborn/client/GuiHandler.java b/src/main/java/techreborn/client/GuiHandler.java index 342eca508..e9f901630 100644 --- a/src/main/java/techreborn/client/GuiHandler.java +++ b/src/main/java/techreborn/client/GuiHandler.java @@ -29,7 +29,6 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.common.network.IGuiHandler; -import techreborn.client.container.ContainerAESU; import techreborn.client.container.ContainerDestructoPack; import techreborn.client.container.ContainerLESU; import techreborn.client.container.IContainerProvider; @@ -60,8 +59,6 @@ public class GuiHandler implements IGuiHandler { return ((IContainerProvider) tile).createContainer(player); switch (gui) { - case AESU: - return new ContainerAESU((TileAdjustableSU) tile, player); case DESTRUCTOPACK: return new ContainerDestructoPack(player); case LESU: diff --git a/src/main/java/techreborn/client/container/ContainerAESU.java b/src/main/java/techreborn/client/container/ContainerAESU.java deleted file mode 100644 index d001a9bf0..000000000 --- a/src/main/java/techreborn/client/container/ContainerAESU.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of TechReborn, licensed under the MIT License (MIT). - * - * Copyright (c) 2017 TechReborn - * - * 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 techreborn.client.container; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IContainerListener; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -import reborncore.client.gui.slots.BaseSlot; -import reborncore.common.container.RebornContainer; -import techreborn.tiles.storage.TileAdjustableSU; - -public class ContainerAESU extends RebornContainer { - - public int euOut; - public int storedEu; - public int euChange; - EntityPlayer player; - TileAdjustableSU tile; - - public ContainerAESU(TileAdjustableSU tileaesu, EntityPlayer player) { - tile = tileaesu; - this.player = player; - - int i; - - for (i = 0; i < 3; ++i) { - for (int j = 0; j < 9; ++j) { - this.addSlotToContainer(new BaseSlot(player.inventory, j + i * 9 + 9, 8 + j * 18, 115 + i * 18)); - } - } - - for (i = 0; i < 9; ++i) { - this.addSlotToContainer(new BaseSlot(player.inventory, i, 8 + i * 18, 173)); - } - } - - @Override - public boolean canInteractWith(EntityPlayer player) { - return true; - } - - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - for (int i = 0; i < this.listeners.size(); i++) { - IContainerListener IContainerListener = this.listeners.get(i); - if (this.euOut != tile.getMaxOutput()) { - IContainerListener.sendWindowProperty(this, 0, (int) tile.getMaxOutput()); - } - if (this.storedEu != tile.getEnergy()) { - IContainerListener.sendWindowProperty(this, 1, (int) tile.getEnergy()); - } - if (this.euChange != tile.getEuChange() && tile.getEuChange() != -1) { - IContainerListener.sendWindowProperty(this, 2, (int) tile.getEuChange()); - } - } - } - - @Override - public void addListener(IContainerListener crafting) { - super.addListener(crafting); - crafting.sendWindowProperty(this, 0, (int) tile.getMaxOutput()); - crafting.sendWindowProperty(this, 1, (int) tile.getEnergy()); - crafting.sendWindowProperty(this, 2, (int) tile.getEuChange()); - } - - @SideOnly(Side.CLIENT) - @Override - public void updateProgressBar(int id, int value) { - if (id == 0) { - this.euOut = value; - } else if (id == 1) { - this.storedEu = value; - } else if (id == 2) { - this.euChange = value; - } - } - -} diff --git a/src/main/java/techreborn/client/gui/GuiAESU.java b/src/main/java/techreborn/client/gui/GuiAESU.java index aeca0cd3f..25c1e0f8c 100644 --- a/src/main/java/techreborn/client/gui/GuiAESU.java +++ b/src/main/java/techreborn/client/gui/GuiAESU.java @@ -24,79 +24,105 @@ package techreborn.client.gui; -import net.minecraft.client.gui.GuiButton; -import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.ResourceLocation; -import net.minecraft.client.resources.I18n; -import reborncore.common.network.NetworkManager; import reborncore.common.powerSystem.PowerSystem; -import techreborn.client.container.ContainerAESU; -import techreborn.packets.PacketAesu; import techreborn.tiles.storage.TileAdjustableSU; -import java.awt.*; -import java.io.IOException; +public class GuiAESU extends GuiBase { -public class GuiAESU extends GuiContainer { + TileAdjustableSU tile; - private static final ResourceLocation texture = new ResourceLocation("techreborn", "textures/gui/aesu.png"); + public GuiAESU(final EntityPlayer player, final TileAdjustableSU aesu) { + super(player, aesu, aesu.createContainer(player)); + this.tile = aesu; + } + + @Override + protected void drawGuiContainerBackgroundLayer(final float f, final int mouseX, final int mouseY) { + super.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); + final Layer layer = Layer.BACKGROUND; - TileAdjustableSU aesu; - - ContainerAESU containerAesu; - - public GuiAESU(EntityPlayer player, TileAdjustableSU tileaesu) { - super(new ContainerAESU(tileaesu, player)); - this.xSize = 176; - this.ySize = 197; - aesu = tileaesu; - this.containerAesu = (ContainerAESU) this.inventorySlots; + this.drawSlot(62, 45, layer); + this.drawSlot(98, 45, layer); + this.drawArmourSlots(8, 18, layer); + this.builder.drawEnergyOutput(this, 169, 61, (int) this.tile.getBaseMaxOutput(), layer); + this.builder.drawUpDownButtons(this, 121, 79, layer); } @Override - public void initGui() { - super.initGui(); - this.buttonList.clear(); - int k = (this.width - this.xSize) / 2; - int l = (this.height - this.ySize) / 2; - this.buttonList.add(new GuiButton(0, k + 115, l + 5, 15, 20, "++")); - this.buttonList.add(new GuiButton(1, k + 115, l + 5 + 20, 15, 20, "+")); - this.buttonList.add(new GuiButton(2, k + 115, l + 5 + (20 * 2), 15, 20, "-")); - this.buttonList.add(new GuiButton(3, k + 115, l + 5 + (20 * 3), 15, 20, "--")); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { - this.drawDefaultBackground(); - GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); - this.mc.getTextureManager().bindTexture(texture); - int k = (this.width - this.xSize) / 2; - int l = (this.height - this.ySize) / 2; - this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize); - } - - protected void drawGuiContainerForegroundLayer(int p_146979_1_, int p_146979_2_) { - this.fontRenderer.drawString(I18n.format("tile.techreborn:adjustable_su.name"), 40, 10, - Color.WHITE.getRGB()); - this.fontRenderer.drawString(PowerSystem.getLocaliszedPower(containerAesu.euOut) + " /tick", 10, 20, - Color.WHITE.getRGB()); - this.fontRenderer.drawString(PowerSystem.getLocaliszedPower(containerAesu.storedEu) + " ", 10, 30, - Color.WHITE.getRGB()); - this.fontRenderer.drawString(PowerSystem.getLocaliszedPower(containerAesu.euChange) + " change", 10, 40, - Color.WHITE.getRGB()); - } - - @Override - protected void actionPerformed(GuiButton button) throws IOException { - super.actionPerformed(button); - NetworkManager.sendToServer(new PacketAesu(button.id, aesu)); - } - - @Override - public void drawScreen(int mouseX, int mouseY, float partialTicks) { - super.drawScreen(mouseX, mouseY, partialTicks); - this.renderHoveredToolTip(mouseX, mouseY); - } + protected void drawGuiContainerForegroundLayer(final int mouseX, final int mouseY) { + super.drawGuiContainerForegroundLayer(mouseX, mouseY); + final Layer layer = Layer.FOREGROUND; + + GlStateManager.pushMatrix(); + GlStateManager.scale(0.6, 0.6, 1); + this.drawCentredString(PowerSystem.getLocaliszedPowerFormattedNoSuffix((int) this.tile.getEnergy()) + "/" + + PowerSystem.getLocaliszedPowerFormattedNoSuffix((int) this.tile.getMaxPower()) + " " + + PowerSystem.getDisplayPower().abbreviation, 35, 0, 58, layer); + GlStateManager.popMatrix(); + + this.builder.drawMultiEnergyBar(this, 81, 28, (int) this.tile.getEnergy(), (int) this.tile.getMaxPower(), mouseX, mouseY, 0, layer); + } + } + +// private static final ResourceLocation texture = new ResourceLocation("techreborn", "textures/gui/aesu.png"); +// +// TileAdjustableSU aesu; +// +// ContainerAESU containerAesu; +// +// public GuiAESU(EntityPlayer player, TileAdjustableSU tileaesu) { +// super(new ContainerAESU(tileaesu, player)); +// this.xSize = 176; +// this.ySize = 197; +// aesu = tileaesu; +// this.containerAesu = (ContainerAESU) this.inventorySlots; +// } +// +// @Override +// public void initGui() { +// super.initGui(); +// this.buttonList.clear(); +// int k = (this.width - this.xSize) / 2; +// int l = (this.height - this.ySize) / 2; +// this.buttonList.add(new GuiButton(0, k + 115, l + 5, 15, 20, "++")); +// this.buttonList.add(new GuiButton(1, k + 115, l + 5 + 20, 15, 20, "+")); +// this.buttonList.add(new GuiButton(2, k + 115, l + 5 + (20 * 2), 15, 20, "-")); +// this.buttonList.add(new GuiButton(3, k + 115, l + 5 + (20 * 3), 15, 20, "--")); +// } +// +// @Override +// protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { +// this.drawDefaultBackground(); +// GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); +// this.mc.getTextureManager().bindTexture(texture); +// int k = (this.width - this.xSize) / 2; +// int l = (this.height - this.ySize) / 2; +// this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize); +// } +// +// protected void drawGuiContainerForegroundLayer(int p_146979_1_, int p_146979_2_) { +// this.fontRenderer.drawString(I18n.format("tile.techreborn:adjustable_su.name"), 40, 10, +// Color.WHITE.getRGB()); +// this.fontRenderer.drawString(PowerSystem.getLocaliszedPower(containerAesu.euOut) + " /tick", 10, 20, +// Color.WHITE.getRGB()); +// this.fontRenderer.drawString(PowerSystem.getLocaliszedPower(containerAesu.storedEu) + " ", 10, 30, +// Color.WHITE.getRGB()); +// this.fontRenderer.drawString(PowerSystem.getLocaliszedPower(containerAesu.euChange) + " change", 10, 40, +// Color.WHITE.getRGB()); +// } +// +// @Override +// protected void actionPerformed(GuiButton button) throws IOException { +// super.actionPerformed(button); +// NetworkManager.sendToServer(new PacketAesu(button.id, aesu)); +// } +// +// @Override +// public void drawScreen(int mouseX, int mouseY, float partialTicks) { +// super.drawScreen(mouseX, mouseY, partialTicks); +// this.renderHoveredToolTip(mouseX, mouseY); +// } +//} diff --git a/src/main/java/techreborn/client/gui/TRBuilder.java b/src/main/java/techreborn/client/gui/TRBuilder.java index 4e9bd2eaa..5c9817f4b 100644 --- a/src/main/java/techreborn/client/gui/TRBuilder.java +++ b/src/main/java/techreborn/client/gui/TRBuilder.java @@ -222,6 +222,32 @@ public class TRBuilder extends GuiBuilder { GlStateManager.popMatrix(); } } + + public void drawUpDownButtons(GuiBase gui, int x, int y, GuiBase.Layer layer){ + if (layer == GuiBase.Layer.BACKGROUND) { + x += gui.getGuiLeft(); + y += gui.getGuiTop(); + } + gui.mc.getTextureManager().bindTexture(GUI_SHEET); + gui.drawTexturedModalRect(x, y, 150, 70, 12, 12); + gui.drawTexturedModalRect(x + 12, y, 150, 82, 12, 12); + gui.drawTexturedModalRect(x + 24, y, 150, 94, 12, 12); + gui.drawTexturedModalRect(x + 36, y, 150, 106, 12, 12); + } + + public void drawEnergyOutput(GuiBase gui, int right, int top, int maxOutput, GuiBase.Layer layer){ + String text = PowerSystem.getLocaliszedPowerFormattedNoSuffix(maxOutput) + " " + + PowerSystem.getDisplayPower().abbreviation + "/t"; + int width = gui.mc.fontRenderer.getStringWidth(text); + gui.drawString(text, right - 17 - width, top + 5, 0, layer); + + if (layer == GuiBase.Layer.BACKGROUND) { + right += gui.getGuiLeft(); + top += gui.getGuiTop(); + } + gui.mc.getTextureManager().bindTexture(GUI_SHEET); + gui.drawTexturedModalRect(right - 16, top, 162, 101, 16, 17); + } public void drawBigBlueBar(GuiBase gui, int x, int y, int value, int max, int mouseX, int mouseY, String suffix, GuiBase.Layer layer) { if (layer == GuiBase.Layer.BACKGROUND) { diff --git a/src/main/java/techreborn/client/gui/widget/GuiButtonUpDown.java b/src/main/java/techreborn/client/gui/widget/GuiButtonUpDown.java new file mode 100644 index 000000000..77c1fad0f --- /dev/null +++ b/src/main/java/techreborn/client/gui/widget/GuiButtonUpDown.java @@ -0,0 +1,44 @@ +/* + * This file is part of TechReborn, licensed under the MIT License (MIT). + * + * Copyright (c) 2017 TechReborn + * + * 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 techreborn.client.gui.widget; + +import net.minecraft.client.gui.GuiButton; +import techreborn.client.gui.GuiBase; + +/** + * @author drcrazy + * + */ +public class GuiButtonUpDown extends GuiButton { + + GuiBase.Layer layer; + GuiBase gui; + + public GuiButtonUpDown(int buttonId, int x, int y, GuiBase gui, GuiBase.Layer layer) { + super(buttonId, x, y, 12, 12, ""); + this.layer = layer; + this.gui = gui; + } + +} diff --git a/src/main/java/techreborn/tiles/storage/TileAdjustableSU.java b/src/main/java/techreborn/tiles/storage/TileAdjustableSU.java index a4432cb2f..da6857d14 100644 --- a/src/main/java/techreborn/tiles/storage/TileAdjustableSU.java +++ b/src/main/java/techreborn/tiles/storage/TileAdjustableSU.java @@ -27,17 +27,18 @@ package techreborn.tiles.storage; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.EnumFacing; -import reborncore.api.IToolDrop; -import reborncore.common.powerSystem.TilePowerAcceptor; +import reborncore.api.power.EnumPowerTier; import reborncore.common.registration.RebornRegistry; import reborncore.common.registration.impl.ConfigRegistry; import reborncore.common.util.Inventory; +import techreborn.client.container.IContainerProvider; +import techreborn.client.container.builder.BuiltContainer; +import techreborn.client.container.builder.ContainerBuilder; import techreborn.init.ModBlocks; import techreborn.lib.ModInfo; @RebornRegistry(modID = ModInfo.MOD_ID) -public class TileAdjustableSU extends TilePowerAcceptor implements IToolDrop { +public class TileAdjustableSU extends TileEnergyStorage implements IContainerProvider { @ConfigRegistry(config = "machines", category = "aesu", key = "AesuMaxInput", comment = "AESU Max Input (Value in EU)") public static int maxInput = 8192; @@ -48,31 +49,31 @@ public class TileAdjustableSU extends TilePowerAcceptor implements IToolDrop { public Inventory inventory = new Inventory(4, "TileAdjustableSU", 64, this); private int OUTPUT = 64; // The current output - private double euLastTick = 0; - private double euChange; - private int ticks; + //private double euLastTick = 0; + //private double euChange; + //private int ticks; public TileAdjustableSU() { - super(); + super("ADJUSTABLE_SU", 4, ModBlocks.ADJUSTABLE_SU, EnumPowerTier.INSANE, maxInput, maxOutput, maxEnergy); } - @Override - public void update() { - super.update(); - if (ticks == 100) { - euChange = -1; - ticks = 0; - - } else { - ticks++; - euChange += getEnergy() - euLastTick; - if (euLastTick == getEnergy()) { - euChange = 0; - } - } - - euLastTick = getEnergy(); - } +// @Override +// public void update() { +// super.update(); +// if (ticks == 100) { +// euChange = -1; +// ticks = 0; +// +// } else { +// ticks++; +// euChange += getEnergy() - euLastTick; +// if (euLastTick == getEnergy()) { +// euChange = 0; +// } +// } +// +// euLastTick = getEnergy(); +// } @Override public ItemStack getToolDrop(EntityPlayer entityPlayer) { @@ -104,12 +105,12 @@ public class TileAdjustableSU extends TilePowerAcceptor implements IToolDrop { } } - public double getEuChange() { - if (euChange == -1) { - return -1; - } - return (euChange / ticks); - } +// public double getEuChange() { +// if (euChange == -1) { +// return -1; +// } +// return (euChange / ticks); +// } public ItemStack getDropWithNBT() { NBTTagCompound tileEntity = new NBTTagCompound(); @@ -122,8 +123,8 @@ public class TileAdjustableSU extends TilePowerAcceptor implements IToolDrop { public NBTTagCompound writeToNBT(NBTTagCompound tagCompound) { super.writeToNBT(tagCompound); - tagCompound.setDouble("euChange", euChange); - tagCompound.setDouble("euLastTick", euLastTick); + //tagCompound.setDouble("euChange", euChange); + //tagCompound.setDouble("euLastTick", euLastTick); tagCompound.setInteger("output", OUTPUT); inventory.writeToNBT(tagCompound); return tagCompound; @@ -131,26 +132,12 @@ public class TileAdjustableSU extends TilePowerAcceptor implements IToolDrop { public void readFromNBT(NBTTagCompound nbttagcompound) { super.readFromNBT(nbttagcompound); - this.euChange = nbttagcompound.getDouble("euChange"); - this.euLastTick = nbttagcompound.getDouble("euLastTick"); + //this.euChange = nbttagcompound.getDouble("euChange"); + //this.euLastTick = nbttagcompound.getDouble("euLastTick"); this.OUTPUT = nbttagcompound.getInteger("output"); inventory.readFromNBT(nbttagcompound); } - @Override - public double getBaseMaxPower() { - return maxEnergy; - } - - @Override - public boolean canAcceptEnergy(EnumFacing direction) { - return getFacingEnum() != direction; - } - - @Override - public boolean canProvideEnergy(EnumFacing direction) { - return getFacingEnum() == direction; - } @Override public double getBaseMaxOutput() { @@ -158,7 +145,9 @@ public class TileAdjustableSU extends TilePowerAcceptor implements IToolDrop { } @Override - public double getBaseMaxInput() { - return maxInput; + public BuiltContainer createContainer(EntityPlayer player) { + return new ContainerBuilder("aesu").player(player.inventory).inventory().hotbar().armor() + .complete(8, 18).addArmor().addInventory().tile(this).energySlot(0, 62, 45).energySlot(1, 98, 45) + .syncEnergyValue().addInventory().create(this); } } diff --git a/src/main/resources/assets/techreborn/textures/gui/gui_sheet.png b/src/main/resources/assets/techreborn/textures/gui/gui_sheet.png index d2d25b2f34ace7dfd70273a0e6953a95f6f0f660..c265022ca6799625b065d549e6235f556c6591af 100644 GIT binary patch literal 17575 zcmd74c{r5q`#*l&GsBQ&NLg!4Dq56%NrNfTMzlO7g$W@EiR|V^SwghgV@m5&St_M$ zQwfEvA?uW^Sq5Wg=66j!&+~bDzdzsO_#MCRKfmLsV>Ir$?(;g&*ZDeM=Xu>zl*PWC zB1>eK002aG@7i$y00jPs00DmZa@_NQBYYv*?>b-xfd5(m&@cdIx$t!W0B=^Die%1E93A|R&W7pAh0Ej;4{Y7%M{gvUHGG4}(UI*PBy?jo1o&+8zPPut)c01`s z(%h`NSxtM#sq9Grb_nd=vF(tr&2W%l{@Ophy(=3#*fTaIe#8P>bJGqAR()%T3167H zkS1Myz5VJXY=)_kMy9Yr$}R`(vpX1SvRapSuZhBzCOMDqWj7}cD0OkBTfNUuK0IgM zab&t9V8Ca7WHRVS$DjUM>3PK$E%gkcXRAZ|+>{SW-Tthz zyxwW#h_MJ)xevfsZoZ`%h{?M@O-}~bPw3<5OFeQ^fb?l|3DoX!BA%(J5xJ?)P76_O zN>>E$EmaVKSp65m%wO+xVx8bRdCS12a~Z0Gg*`y(ksz8o#U^S>pz4~4s$1f(A0OWZ zk$f84SL5v}!REsfzo~|M_`MWSxlw=sv$2n)CY` zwt$5;VO$uW4~XPj?Rz;PE|ev9{IMb^Yt>+bL9<94Nwf;-B^u!99Tp|PBtWyiF#W5^3Qox~|&_<&M99=IQgQ`Cc z=LAcyEhF&UVj_VKN=pE)f8`hhOQ=$9CuEk+Y=c)07%jEDH=y<5_XH{4&!y4aTc_ZH)mT++O*8OkCUoo1 zH(;zp%%BajKr4SPnk$Rcz9@MQV%lPOw;=z0{a?TS=bm|DAR3W=DHDV+ z!lpebBF{SyVV~$AT^`=A4}{O3xGrr7_wX40no@n-{q4+tjpkHUj{jSk$Fe8O{<`Ll z$!G)5ap4%IVf-Y?#ZlUMh?eJIsnMJg65^OJ|KpFh9)>ZE{Xu_u@L_HOhN=d-we6n? z0O3C++0*3~nN`Zo1AAmfBCg05ne+VFVv1pMX&Z$9x8Ffur+wu}yIfE1(X(FvZc+6> z=JY9^m1f|QM!URGtopO#_oM6WK-n1>uy6n0*VuS6U*5!pZ2;Y_l_^L$8$NIUV83I+ z54J<&KfZl0GZJ^pB>8Ao!wvOz!fGx53>e0gIvid1-J)9KI*rO-j{Mt65a>?%hT*a& z9bfG`^6@vn{EwlxAp*{({@<l3`vUskRVV#n%fk2Y|-DpvvjG%F4AUE2|4QgC5JgGNy)dcMk@h1&ioVb?p(Egp$W@ax>Hf4N>~u%*zP zOEa!{c9<>V3o$K~nQ(=4{$Om`?L+o;PD@NAWDDwTZ9cr4vo+ir&6$_#yHl2h))nkd zFAnAOy`MOl4sCzo-pC28@aVYRcXZ?6*f=x$ksu{lL2UK2eKBr^f_6Heot5|Sw$#YD z?q_Gwm=o+h9Ks&8)e8^iR(Go(9viJGj4BE>8+gj)%pPUSchR;kwhc#&JH`$pOdSH} zwKyiXN9Oh7n#hhrnYrseTe6eKMRxO?V=VGRhd|s@5-?c3R&uP18z{P1lYLFrc5FVo zI5v1bYPFw+1nTKEzx%%&)0ksZ=%V9)cH++%LX3UW?-xKeL|ah``kw%WsGC6?)j=7rSMO9{$0opaspR z#N1f;rk}~4c*gG_<1VG&d#FVK!xWF)R8u>wv~B2~Y^?Es5GrfBUwsepQ#_+f{)-8{ zN|nTKxb?}_?&W0Kas1-U1BaV?YV6g+`wp4^jD*}Ov194C+RQ^+%(P^q)!E<@#^hrK zIY}+pE9Yi$u`3cpD`{%nkiOORion}A4qgA*(6N9`ca*03V`aw<9c7bG8?TTk@nbc| ziv8OTnI%B@p1|a`jF^KVvTmFD#q?kLdu;eco!t^t;Ghfj+S%6vXvw}InrPj*M|fTtG3NPbyZy%>OCRq5 zz_nYEucy}xd~EpJ3lGa~*Iaks<+7kAp0pVw2D4_BzuP49(7!y~$k?7q=-Vg`I!qkN zGnEV88^i(aW(#-4?Y_f=ea3+NUyur|yHJ+JPD}-*kgr|W@sen{>_KAm60{_i{7Uqz zI!%8$=wbwAUap>JbNhHZhPmBh!Ap}3n)k?uH-Pa*|Hw_vCpQ3kdWNi*>noU8N#`Te zkLg=R0q3@^-@@;LV|2wGTT^?o7#!Lg(f{gm*bM>71&XU*_&+IQ3#h8TX!O_w}KSH!jpfk5^N+i$xFcBzCaO$7B_A6n9_0iiNCMkZZ_PE9eC&R@*VL9rZ zS&j??nYDd?sPL-qB`7gg?JK)Y1oXBF;dju0LkfVS_c^EEuj$f3@n0nRV-w(LkAGKJ zJjOpWVK5mu(QBj~3Vd;Pl^Xw(Nyvc4a*f;4(Xvg47;VOJg5mt~pCTa5%2ry4?8;a# zZT3VWWCNf35l`2X&aAJ2yCgtnuJC7+oqXV(pfM?}s|kkf#b$`_pVc-~Hs0W1@z{g9 zh%$oPX`~{R@Z~>||B(Mq%^_!sS~o<gm#M{09BF50;+Wz3&iJ{)>`~2=sN-JL78-Lb(MuZpa#n$$Ds& z`Z?}<@TpX7EEP}d5C~}*7w!mN`b*^A0u1UUF~Vzd)KM1kh3AGc!h^3(p`u?T9<7Fm zJu`nyn2}#CErAwh8PaAQFsgra<39?b>F%9@yCR+_9do8BZT`U&yvXwnR2C#_c9ML=>vZ^nb9gMS?8Zy+4x> zD=*APx?i24t{IFHr0)K&=F*h_`zzsoczOhk(~QS{?NngNbK&0*VDm9@SKR)=`g&Vg z3EZe(<)6kQtN&zHAk0tj*#GgGCEv_gY`sRi74JH+p3tuUN;EbfNt5OI_>i*Af zWe4{5zOlvk9q{_^FvnjKOLF_6u_xwkLRDDFr@t7g>;sOZA|OzB924&&%JGa?YX5NU z1T$M>Il}rap`o=d)Z$y~LlXA_25ZGzzrU}v=P^{TAVoYZTE;6sz24T)eI@NxN$?Df zrhnHcD!1_}WNbBFlGtO!G;%z)SUe1w`w{Wu!o=6Pj~;(tBGB|m@+)Ug|K;Rg{82Rl zuJ;IMS%o!uzxCcmTWsOJ>k<9Ay;U#V^auXF>>sQ4h-kLc@-NqTEP51qblxhpbooFo zZF-{Ap(gPQ=YANAQl=gM&2p>9*?nT^Lj4wY%6Se%yB|&0Mv{K%f{#g{R9N}AXkj}B z^xjPUWqah4W9F~z6@Qic2{QUY!1U!`j{eOO7*~xu+y8N}k!y#4{Ys6$D<} z_1n7;V`+ZBEzi^Cgk0|*yM3zus!C8y_x^Sp*y(-xePgiSOpa)IJ$YxVk3K z*s+)CUgf60v<6Sa{WyL{#VB`029nS~=Lh-w17a=h*)7r$2h;?QhhJhAVIxw;K^+2?QKD*QzuU}F5g8j1oUh!eQQ%%ZW_{)zm+9s=S z?tK^7F5dg?qR^?^cP}PrjBWi?E}gCu$DjP9Fza26QGQ_Oiw0r68-7!tH2M{KZ)iBx z`uFOk8^rm^PU!ZYIFK;ndvmz4z)nykyEQg^`b$`u?JFI#6@}pmM9!Ysl^yQOMaH=N zQ3Gftd8&V~50Bedd>ljB+>0T26GVKNELa!|m8ljIHNaPmFa%Mcf_g6s+1i z_f;0WcJ`6Hpzj}W%GgK8%*(4*S4F;;TVpOPlXP~CdB&CiZEIC0QR}k8%OX>voT5~b z8Gmh7rBBC=&D7$sWI-AyGlo+>m&K%?B?F1ZgZB3oCxo!6LxYd+6;}6pB|fjfA4qBJpU>{|^96k)SGy6f zyn|hCdrx`PEZ2PPsPb^^GuG0xwpg>6JD87W^~c!h-SoXXeBoD^D{zUTg2%s*Os$8X<>dT z#DNU5hCgFlo@JY-@cR)N;)N?+rYC&A%)crN$9qUc3+5+_ECdxU1ln*m+w=)&`@4p9 zpCkiL$tXfUrJ9Uqne?_LJ(%1-A9nxMNfx;5kYxuWRWl9r%EJ#3=o!Wc940c-jHa%) z265K!tbKcKDS_Vor^bcoP9ODZ!})bq`BRh6nWfFOLq=0c^$k`}1eCY1w^(_$#657T zjuUc^JB`(^;A<8iP}_L-)>OrH6=56^mB;G(y2jX4YjMT*Cf1+m?*4{Qw~#N`)L?Zl z$Igw9T=e=uk<-_0-Ay?6gvmPnpjEKWMDU>1nE0U8teE%kl(hFSXN~vp*s0#W zhfbf5II|g}^)1^B@1zH1WWLZZ+4)Qo#)jES!M|$JTdnVSSF@3rJbp3c`+HEUZ26`^ z;^xh7h;VMmrwQTlJlBf*=Y}s^aTZ-4>*UmRehLrL;o4MAu$FB8#(lR}SN+Sr%ZXB0 z$}>hBLcMu39iJnWF@HMgLCvR{2A5KJ!J5$VOcA46 zFufsVtH-8u8r3TcZ}f_G>^>JUdiPZ(L6sXht6IG>Ak->B-`HrL79DOgdqk5q`_j4Z zib{j1QP*QD@K(6QD*g)b*#TLXIMdm;ltyez0F`0~@aJN=8>FzhjeZ~!8G3Jq>B8!U zh_FAVUu^&6o;e@h+P{Aaq|5%eb3f6m!G87d5aLz4>G-_+H}8FRVP)F7>Hfed@OUYZ z)JSv@X7CoFhy@Zr5g0_$-WOi*TU!XGz~-+#OR>zZ?j$t=)j9jdQmph=s+QS`ry1~b z^7-bn*#54dqh;8n@;v{(+50(okIj=^zJekh&q7QL&aVzYbQ(zJgr`SP8}w7Oc_!aZ zdGg)+pLK#?K2Y!)nU&H!%|4n^H{J8Lt(zBDOOj(@9_e4PeSk-`4an%pPgrn7J@F}C zwW;awH-yAbB7)}DQ74;sh1a5NP`MT~n>iqqJnC>O(hoRyzr*(TdNUEU$d%opEV;6f z%mx;Z-eG+uB*bZrbFD%i8(_iNZ(0iMh@f@m8=@?;e4E&2TT|=koezQ>=%v_rX%GN5 zo$jJM=_|fyrLx6fn9n(2G^)|FQ@;MKMhjN=>*t4f3&B6NI0?&bZ*S?&xVv)hDA)k9 zM7-jo`5LMF9X~H^hRuThmG!pm%D$j~+(?)zBB2H*!E-6V6$(K1QCAyZkoN;DP%Ffm zec!=;f47J|{FKo9XSIrT=F zJ2?975@3MOa?2_;^j48iqBQCcP6?Chg;X>2!H$_LcoLC;Z))f-*KYW>)BT1G8j{)^ zg|7`7kkK67bi)sPmgO!))#Q%RuAY~kaee<+6d2IPg?rm+v>0~Mje3g!hmTS^TVG01 z>_L_kAX4s0p&~MVU@4XwR-AsCwbggdExq_k?6hZk3CgAMyJLUSj9(GRl}5XS(2C+- zgkBV9B~Ju)pq~#t0tocu!i-VAT4{6&!@#lv5V0>i=ZR`y3~bg9vC>I1IdkOZzB7q8 zcWl~Bpmv^(kSOFkQhe>L&N7Iaq1x&D&nK8l`Muo6>o3alLPR}tQ9;T%(!t{VFU5G) z$1CD`*Y(k6<)aFXHfR#wgDlq{o-X-1xowsp{IWr!+nTNXlA9qr>Oi1hBd!>UUlH;s zS;-&641oBjca+5N3Bb>h2~5kZ4)Y!>&Wc{W@4%ygyXT%SF!jZkPq<5CEeKTCl0WK4 zGIWQ)i7n8?RGZz_Qt5k&DzN#p2V`H3ZjcS|6^hM~QVksC|A3`jrcA$XI5o0=w+bb4 zc5g{V+1#4y{@}np=Fi*@x$XbV_nQ;CZjx1zPbIuq`Olm z9|0AaS;EoJFvj?SZ2Qb|ZQV|XB4C-&EX3?X=uI^IL3@xQXt|j{8sdvLrA#fcD+13% z+hcn@hYd!rH}4l32l-9zVfdT@FPFZ7rU_1bZvh##CTy<8Iv*YLPSKchdT!KZf6)JG zP?%@53+A|7KS@d`325Tgd!kc2s>_yy?Ytvj1d8$KsURs3wJn(pv}?axqlcpqvO&}O zWYj#)yEb$6Fnj+LW{rec5h&dJ;?0;O9fD@%6;3TS-Uir&bKmS0m;h{RPzq|NRgzJ% z2!Yu_-js|k&HKTf;P!1kAo4rZetaQRH-rYH{9A}G_b1B2iif3K~}su#7n*kEK486 zA{U61y)<*Ug($?ASDll*StHMx7mhT%ZLl#Hsxi1E`DE+1anPErw|an2cY0H!XRqAa zeM~2e=n57&mbmb;v7~qFLI2PoBWUN6-|c*&2CA`)HuS+_o)oBz7mQTgwp*C46NR*E z=|`_RV7{GU%;!&)oXLsRo_v1Y0rR${feiW(XBCie%LkZ+@~SW^5-F_wJaZLbgMfB0skE&p^bz9T}}&|!X4Nvf5J`|X;BF8#PN9ha|NyKS?iD&j24(aBF(2DkG=X=+#te|hwKKoTI`%T=z%GQC%pVtqGB_^KACjU50ZDpRp8SFvL72#nE`Bc}S_+bi@$rd*kphNxpkl7U z1|pw{(4D|2<^qrS^3NY3fZ^amA;?2@Fm1u>SLa8IzbVVMkJ}9JNeA^S%FfPIYsQQL zH!G!49&6eI?0gBs3@ypz1U(U?VpJF7VX+xX!pE0^LL1<)#8Dmj5?@yyCk@EJ0n_>M z%=Fe451nVo>dojF=zLGUTEqv1ZOyx;JbTtRzBs!nuVmCAN{E4te~E;dGQMJiO)EvYtG?c_ zhIBns_FeL`@b6GKrVrSY5o*8}I|vnrIuS&_3GX~S1+4DA*eT3BH3h`*zOMNh9SLeZ*mnx?qP-03P(zb?z*XC&FGuARBOv(x9Mb zTCIctA0{C{mF(*Zy*)V$fp$MEN>O1-8GicjZz7dPFsjt25p5&a;az zsbJ=4iq`nM^U8qUA$krkmiFllG8U_rM3fIwD}=5<3z8vF$1q**$qGwhDF%54G1mI1XA!L5%rlf~ zEQLTx5=?3nQXS%zI`aVJxbRQO72olaIkScUGmhT0QL&Y|r$F-isC@ z>=md0>Gk{lrY}_Z_?N%Q$GB-@f9GXbHDEPr<)#QeP(y363||n*%Dfpj##L3Ql}enf zOKidVx<1yB5s&2h{NcXwre+i#oq~Sq;U$dvYRuVT6?g17*#!5Nd%4ehfegB^wQyG) za}6XbaY<&9XRGzR0v-4_zG zZH>q(cVHdSuTKGWiv>8pdBKo&jF-ymFT($Ukeq+V9h6)X$sLkepaM^{$CvQaayhQebBg@s^YkoPm!pG!ee%sj8(I{lzWi(kwi zT*WhNAPjaXlA1@<6~z3Jrj;3mc#pgZ@M(*ljD)H*f#fJ=(BU$k1?n$eQH#8@>bnU2 zhgcCFI{34?!1NXT8tGN#jA}>pGaj~H3$xpq68p&$UyRfsS1$m zH<8Upf;$*M)n}2w{fn9GRvihX^BuK zQ`C`Jodm(izt-E%dn1Sdl2NIfdxGR@Zj54tX&zyaKy)x)d3ibk?Cddf6JNQk1d`3N zdLO=cp4q0EzpS?Fj3_Dbq$I3b8r$y5|BKHo!rpUEL(>PMcwL#rqs*YuX-p{$^-{dj6@i6`Bz1x)liKuGxptxDP#!kTxsAk+nvk;3!@lVshZYD zAs+LcqkNI?!5t~a1n?q5b?;lFc0mnMQ&5FV^ILTV#gu}DF|Zw5om#%}E$3M1E-8~T zdg{#(c(O;#|FY~WXB<6b?;!UN4(R;R>W>n1cmA^Uo8u`MRW?M0@ zt#Dsh^^IHMtWIQVL>Kf6LK>FJzX5SflUrqjp7AKuz_pDSW21-3me$Ef4!O`0UMCc_gI*k@ikTBZb&*x{3bc zSQZ(qKN*qq=3}6$0q9&#d7YEGy!5rG{d_bsDo5&R`3E7kfUSG*Zi%6Zf0cq}qg3+K zvg)Y-M0GB13PY01aTP}It0^)Il8<<9l^^D8JxYoff>n;WoWzg1zG?C0k#Ao%EMfd< z%KRv=9=^raiig09PAMNGfFHd1%_twE->_8(J&t;+p0j@tZRmLa3&c7}@VmJkxk}cx@3-CW&3NQ~`5y zHD9d^ViDDzGZaT<2@5iig2V?qC`t|R7a%PO7N&~Yf%f8ZUjUbJ76x7X%iy4FuY)P0 z(3CN(9!V_kBWy*kU`!Ql>~e4k4TCvRyX;fAJ|WTt>F+t;u=nZgqU7` zFn)&7ZDago)c0B-mfjttq(lVIdcJk5+hfYcfB7w%oT%Tf{lc)SJM5O*VT-KYA^&BU z1IF`7T&ui0&h7$r66!#x*L5YsVvC-9Ljs+1V$-EZ@71UbT*<};1?HP2tdbDR~i(w4^>K0jJ4s_D_Z{HdurqN2MNs(p(vk7utcgjz4Q^;LJ<-=ZHQV{Jv> zmK(J{j!}pS*`XHuyZve(2?`4kOzy}7JiQxXn!TyT`s%yix5b;BpUH@YGq4%x!tBxqIuMG> zl%tRpy+JFblTlf0Oa9?9EMp#-vDH%qb-i#Bt}cRY{zeb^{aTNqmG zHNJ?N-^&#EHE&_y=v(5~pKf=J8P8M$A8=ko5Sa#i`QVIj3_z(jZ$n0JY5NNof#?F* z%ynZ8RIdk0F$ar{We6a1Va5*xtDvLE1s*6WA270B?CdImlqwClc890~d{jp=n*K?X zU+nUd7~Znun<=`G34YWSo0Cy*&A{vcDM-lEZhK0EYM+h74CX&fci>-ZiKpnK3OPi%fDTbWI}kWtxI(AF8q<<4+=$HXs`%NGpZQaT2l(w z8u%hCu#Y+zNjU-Ahq?QHpt9`lRE;n2l|uDV>+?6RpQIEEUofS}hzn$53Ve_Q1m?oa zkBK3$OREbzKI=&5|LS;d|7LF~R&3?{d7mYL8;%!C7LJ}9ucicQD=&D8{Z0>%#F)s6 z5ff}ERNqjk$4Fjq43WoDR6r-Yz&poU9U0?iHgw-)UyLI9UoS$SlCR0BOWBoVPhk&hSFmuJ&QdsMOYkuNMw?`^6~`=*xBp)4y9owolUaHG`m(M!zFN zc?VMXV1X|Jz75&5ZojL7kvd>!{-PnLVpIKU*ayZU&WcolpBxt>7gp&AHX7$UiN??m296De>E zw@OeSRO7DuATviyaF|z9B}qlFk?Z_axz`_ob#D|iQlj?*$(Lp@(>Fo|^8r_=>L*2~ zO{^W)XNXU4W>o0IK7M}u*@I|(;473BcwhhDQccTE+aJcVRvOqW?A8Z1mu*m%HQGF( z>EaWGsAk)Lt7Oc1Q+>hcSFZgbsv%GPr17eY!1moLV6l1(6NtE zRel(gNdRq=qCu2+vN0EUN&_teR{2fki6N6e7%U)}cHUv!o0(?H7!dfE;5`|eIy{Y; zA%fsVp2A|RGyEZr?YCWHk1^QNxv3io_P=wJ=tN+?soNKYFxwC~@q<$#+Y%`f8;&`t zn+}e{R*h;S>W!@Z+k-8C9c9#&;kkUQ);dz@vA&&+<*&^DtLLpW5mD8ub zcbaK>Ri0dmjW=baNi)1~zo$#n81RIik*vh(UX7IqT8L!tB?7su7=hA~nFFf+{7i@@ zx~U?)5?e6|eEnYW0K?NOOPD;8(j!vR@gy~L7cYZYKx|+qky3tAX|D=QyukI+HVDi= z+3SgT)s_EIj-W18;r@w-bk4xSjDlA$7f=Jj%Vf(yR&Ogeq4=<$92|AkD39E$f#a`k zduy*Q64#v`t3A$rX9EIfb%Lbeggr$tvW4e}b(%3q8Y6Gv)bZ}_Gn7dHwbVj@q{=lP zBnnqV;Xk&k*)H{JpLpCj?@&!S(wtrSK)wp?SqW-aLS0J%t!)% z!15;f@vh;Tck)-sEceyJH1q3KyvHbl>JZbT-HxmIQCX;Ib?pWY_}`cS@p32`LN-wz zOT`u?oStcWHAO>D&+jzRTO-68SgXI3FvIc)_=doVVe@;))OO&(R|vr6%9Opc%}}wD zlv%hw4+9_A1YjwpTsuWikoDcqP(ti%C`3E&PL`a(Fz0Xai=|kK8=U@>V*A?%k*a{o zH;wb18V_j=1rNJo@u)H*H^S|zFM}Z&Bj}qIBa@^59yFqlE($W(JMKL`L5hR~NWaW$ z{|^uta7qF@qWKCOIYVT57swBZox)ZX-RR4*GB>N8H&w4 zdkic;vEWxKK6rDx>d&=1N^w+wg@aA`M{nUhT4sEA3zJkNSR1lB)D&tX@?X##^3Cjk zt!3-ZxLh4{h!Us)USUoUDP>q{0vtU-P`P-=%tTw+l)-@&L(8xb1j-0h-jSj%C6FYs z6_vQ5Vq7LhsR&@D#rwN;>aOl|yLBs|Y43Sbu?!>-m`(Lv^6*?nTy`*;7t%*~ILN#$ z1-2Q&emjP4$O4@VEzR)-6$c|@Vfeib9}khsXOSy{zA_SB!i*#&yT?i%ju-|J`jc!T z%EqW_!M>e#nu(AIj2dVXtT#bY%qMWbF0DaTQG{JYBNif!A0A4HKc6~(l8nBJ$iCWI z^!YuA=a#@jZ5b)CWOS30{HCAFYYX?jOh2N5=YGK-C|Q1 zC06CV1XVQ2m<{=waUpx3+gqVp}&WfZI9CV)vPVeUF z*>mT;+_9d+1Qn)&&E@@}n*8xl;}9tR2$?{E=W*G$_PcRUD^edzQHq6f#*PoZD*)4O zSL;xg36@B>77ZN&%nHFs+*37zQqfNR(W-agG(ayHQCOt`?pcmjstZgbbGVn{cx zZDLH8@6GJEL+F44$X)znJHtA46=u`v^@wHjo^YU_-1HtElx`WO~_kzO_1^3D{`dEDU+mYn{LXR z*3~{uuv15p(nRYP=UtcK`YNvp^5mga(*aXOaIIn0Yg)$tY=}~6b?F0+>Z!M5di2?T zu{0HPMc#&nz~fYkxogB`_=XZ+*1NoPXJuDcK^1}o~N^RVZ2Pf_36pz+>oe< z){eIAyWE2@WX!Lae!hwpOx?QxAyv_>-<-`o(YVKKQnC6&~ z*3_ji62j|*x!dYbb+a9PyV{F3;W{;6%?di$GQ5_dW~thrFK`SHpJ6jW=x_dI;at+d z^RxaMh3-F1OW~QO@;6w}w=DTJH?{YvA{KxJK@eApGY1%5GQknn$Y!C!~ty$HYUdFxzg)$)!TC zZ}*=l8W`AqJlg%Sntl3`#UPC5nAs9&TKLM=Y&!hwkad6MR_!%I?Yp*mA2;6W9eSi; zpLKKXC+lYQY>0lyr9d<|-jP6yr;TP>M~q}{c{kmV^-lhqZEpou)93p(&Z0o| z%9EFauJ^`r#Lc;C)pGOFHHM`nwCxk+$cdsf8y;KES=`_~G}c#@y}vx&wy&#%{z*SMASg_4YEIF6 zcrx+rr$4&xWqt0t_33k0rki8);ON2T&aV3-MKs33>A}vv?1xSnCAT_*f_Lf98|*Ba z=WLpMJbP@=dcvnlet%br{K3&+!+V^?-~-q2O(kOuHx$8S1kAB80ZRGu=a~W^U+qM* zqBy#;Aj>hcB>eoKBO>-xfPK8igofpI?%F#26tFvXXau}mBg{w7;G@JCilaxBLBUf{ z<%qO+3lu7eqpJiMi%~#W38U(BearZM&Phbt{^y?v0rHNCRls#YP~Pz=P!7Is%v943 zj$}wYrz&g&LW#Ko$`?T(e01Nj^3o2R)sYzxRNO{lh!!W{i$s26Y=%BE3BnCc&qbVA5DSU(7_L!Z zV1PJ^Ct=W5TDuHaH-;;owfJR5X(?ioyN&Sp;G!mywM>Poqy)B}e=3k8m18d@ z6q3))n%XHraiKY8Hw%j)yHbG07i`k!L|^dij-Us=dMX7xi)h5|!cj#7!0zFi6(D^lzh>T#A!keTZOfQ-WAI7whW zgAc@nf*gG926)y<^XA^LwG*dkKxdo6@@adG9D;y#Xb4!I<1Tl0q^wS+d zFmhWBWG$XpD99PB*`Yxx1ldzk2vw8$P}o>S!NL#PN(YB^SNSx zbxINuKu=>H?-(x8;wN2K1OnY$y}V~*FQ35^8(N>u5GU+W{#4h-DC7ZHGfWf1KyZ)D z>+HiF7p9QW(na$WVEFK;1ohY(8dK4J9hf9B_dQw9zS^)n z`COw75D(cm%tsl{m;_gKDc_Kx`k*ig@SK}mFM+~&^K{n_K5BQyFd04i5I9Q!8%EJL zz9GHRGQw*&%5wD1Mll-znFAY-L;6msfKU`3_losvAyx_biqOdln5Z!&hwh!ily9J) z-_#DA8RCn?Ghc&iij<`|*K=xsjoBq;5ySn__-bdpP&_i;(nFf${@w)q@(uj9as+QbrlD}MwaX4{jRdL2%j?V! zpF_A`C!sL-ronVV1mNzoFR=C5VS5IeSC*IpSW@0W!LvEch!>O&{tQ3C;ArVKQCves%VrvPYa%SznuNUDX}3t z<9wit%wn5UVqLc3yOIpY;7hYkdy^ODzaQ`)6YTA-+L>6NO-!as$*0q87X>Hm_x2y5 zRh7`5U*Od2Od_bu@0!V;R=GzjO7tU4V50|YM~L@nMH|1Cv?s6&ah1um?W}4a z@_n~%@ta<6UM72QuS%Aqo9r!GC!?@_Z1El2JaLQ7pzjB<#RY}li&a8NeHvZ*ySTn1 zq{W359R1YUEM%_SN3^!)6BHmd`<$|d?`Pc9qi{X;7%sm1P<3r-u}7f%;=8j!?6+-6 z)T~eq72JzjvgCT+HY}G@2ZH!4fL9nN@PS>NMcPG<0X;~F%_D3P( z0dbJCl)#h_3?h&=f>|OeKqGbPUpLt1THkS%gQj3M|f*r34C&1RrHS{Rl*k z1z;?`A!!x-8LPqD-DEVQuuKZQz%kR%=D)vDy)Wq$Ca`TRRUEMp_rS2^B!Oxd*3v{} zJ8Xs-GszxYNO>#_Y&8i9OVE6-3<6Iln{kowI0%dZGOuz;ilG@rt4|Cf=oSnqMvK?H z3y7m*JNX!7)TGDDxOasS6dFK<(oV}3gwsL_xJ?8xU4B3TJ{jw42Glq%WOOThAeJ5p z?wFwrtOY_@!H_9gssJaAr-lh-c0d`XO(fn!S;Lk0s7?wzAp>RZYG`;bZ}sRh;2DN~ z!p=W6hymltU^>%K!E4PTk`OMGxS3WcnIUvr->{; zp6&`o+weSRNNdA7Ufi>TJ@ z@yv37L3X7A>N)^T_|m42tdqbk^B*ah#JHCHjNM~Fv1sIi8M+h!_GY}@s{u*$xfH1! zTM>;!j?J5)79dUF&?a!r7sw#cv-?2fqDli!49QWXygT<=;oM~zUctNSMp2c-H9CR- za6$#16{1iV01bE)xJww4^K(J8wdA-CRT|5}k%p0VO3-DvZIlv0(l&}V=P8krtVof? zRh`0=^2$-{hk;8~TTJYM8iJ0MrvMu<(2q#6E*?6rpF$7-%PF3{pm-iuFszjhJ+$01<1@xC2d I+o_@d4|cZ&3IG5A literal 16922 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 k5y^q2@y}ZLe>H%ehI@CUZ)XPlFUFRg)&Kwi