Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/priority-button' into dev
Browse files Browse the repository at this point in the history
  • Loading branch information
Dream-Master committed Aug 16, 2022
2 parents 2d5de93 + e42176c commit 35ec5a4
Show file tree
Hide file tree
Showing 13 changed files with 544 additions and 30 deletions.
21 changes: 11 additions & 10 deletions src/main/resources/assets/extracells/lang/en_US.lang
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
//**********//
//EXTRACELLS//
//**********//
############
#EXTRACELLS#
############

//Items
#Items
extracells.item.storage.physical.256k.name=ME 256k Storage
extracells.item.storage.physical.1024k.name=ME 1024k Storage
extracells.item.storage.physical.4096k.name=ME 4096k Storage
Expand Down Expand Up @@ -51,14 +51,14 @@ extracells.item.terminal.universal.wireless.name=Wireless Universal Terminal
extracells.item.fluid.pattern=ME Fluid Pattern [WIP]
extracells.item.oc.upgrade.name=ME Upgrade

//Creative Tab
#Creative Tab
itemGroup.Extra_Cells=Extra Cells 2

//Item Groups
#Item Groups
extracells.fluid.IO=ME Fluid Export/Import Bus
extracells.fluid.plane=ME Fluid Annihilation/Formation Plane

//Parts
#Parts
extracells.part.fluid.export.name=ME Fluid Export Bus
extracells.part.fluid.import.name=ME Fluid Import Bus
extracells.part.fluid.storage.name=ME Fluid Storage Bus
Expand All @@ -79,7 +79,7 @@ extracells.part.gas.levelemitter.name=ME Gas Level Emitter
extracells.part.gas.conversion.monitor.name=ME Gas Conversion Monitor
extracells.part.gas.monitor.name=ME Gas Storage Monitor

//Blocks
#Blocks
extracells.block.certustank=Certus Quartz Tank
extracells.block.walrus.name=Walrus
extracells.block.fluidcrafter.name=ME Fluid Assembler
Expand All @@ -92,7 +92,7 @@ tile.extracells.block.craftingstorage.16384k.name=16384k Crafting Storage
tile.extracells.block.vibrantchamberfluid.name=Fluid Vibration Chamber
tile.extracells.block.hardmedrive.name=Blast resistant ME Drive [WIP]

//Tooltips and Chat-Messages
#Tooltips and Chat-Messages
extracells.tooltip.amount=Amount
extracells.tooltip.fluid=Fluid
extracells.tooltip.storage.physical.types=%s of %s item types used.
Expand Down Expand Up @@ -124,5 +124,6 @@ extracells.tooltip.essentia=Essentia
extracells.tooltip.installed=Installed:
extracells.tooltip.crafting=Crafting

//Buttons
#Buttons
extracells.gui.craft=Craft
extracells.gui.fluid.storage=Fluid Storage Bus
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,12 @@ public ContainerBusFluidStorage(PartFluidStorage part, EntityPlayer player) {
protected void bindPlayerInventory(IInventory inventoryPlayer) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 9; j++) {
addSlotToContainer(new Slot(inventoryPlayer, j + i * 9 + 9, 8 + j * 18, i * 18 + 140));
addSlotToContainer(new Slot(inventoryPlayer, j + i * 9 + 9, 8 + j * 18, i * 18 + 153));
}
}

for (int i = 0; i < 9; i++) {
addSlotToContainer(new Slot(inventoryPlayer, i, 8 + i * 18, 198));
addSlotToContainer(new Slot(inventoryPlayer, i, 8 + i * 18, 211));
}
}

Expand Down
200 changes: 191 additions & 9 deletions src/main/scala/extracells/gui/GuiBusFluidStorage.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,36 +2,51 @@

import appeng.api.AEApi;
import appeng.api.config.AccessRestriction;
import appeng.client.gui.widgets.GuiTabButton;
import appeng.client.gui.widgets.ITooltip;
import appeng.core.localization.GuiText;
import codechicken.nei.VisiblityData;
import codechicken.nei.api.INEIGuiHandler;
import codechicken.nei.api.TaggedInventoryArea;
import cpw.mods.fml.common.Optional;
import extracells.container.ContainerBusFluidStorage;
import extracells.gui.widget.WidgetStorageDirection;
import extracells.gui.widget.fluid.WidgetFluidSlot;
import extracells.integration.Integration;
import extracells.network.packet.other.IFluidSlotGui;
import extracells.network.packet.other.PacketGuiSwitch;
import extracells.network.packet.part.PacketBusFluidStorage;
import extracells.part.PartFluidStorage;
import extracells.part.PartGasStorage;
import extracells.util.FluidUtil;
import extracells.util.GuiUtil;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;

import java.util.Collections;
import java.util.List;

@Optional.Interface(modid = "NotEnoughItems", iface = "codechicken.nei.api.INEIGuiHandler")
public class GuiBusFluidStorage extends ECGuiContainer implements
WidgetFluidSlot.IConfigurable, IFluidSlotGui {
WidgetFluidSlot.IConfigurable, IFluidSlotGui, INEIGuiHandler {

private static final ResourceLocation guiTexture = new ResourceLocation("extracells", "textures/gui/storagebusfluid.png");
private EntityPlayer player;
private final EntityPlayer player;
private byte filterSize;
private boolean hasNetworkTool;
private final boolean hasNetworkTool;
private final PartFluidStorage part;
private GuiTabButton priority;

public GuiBusFluidStorage(PartFluidStorage _part, EntityPlayer _player) {
super(new ContainerBusFluidStorage(_part, _player));
Expand All @@ -41,15 +56,14 @@ public GuiBusFluidStorage(PartFluidStorage _part, EntityPlayer _player) {

for (int i = 0; i < 9; i++) {
for (int j = 0; j < 6; j++) {
this.fluidSlotList.add(new WidgetFluidSlot(this.player, part, i * 6 + j, 18 * i + 7, 18 * j + 17));
this.fluidSlotList.add(new WidgetFluidSlot(this.player, part, i * 6 + j, 18 * i + 7, 18 * j + 30));
}
}

new PacketBusFluidStorage(this.player, part).sendPacketToServer();
this.hasNetworkTool = this.inventorySlots.getInventory().size() > 40;
this.xSize = this.hasNetworkTool ? 246 : 211;
this.ySize = 222;

this.ySize = 235;
}

@Override
Expand All @@ -73,6 +87,9 @@ public void actionPerformed(GuiButton button) {
break;
}
}
else if (button == this.priority) {
new PacketGuiSwitch(100 + part.getSide().ordinal(), part.getHostTile()).sendPacketToServer();
}
}

public void changeConfig(byte _filterSize) {
Expand All @@ -83,8 +100,9 @@ public void changeConfig(byte _filterSize) {
protected void drawGuiContainerBackgroundLayer(float alpha, int mouseX, int mouseY) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
Minecraft.getMinecraft().renderEngine.bindTexture(guiTexture);
drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, 176, 222);
drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, 176, 235);
drawTexturedModalRect(this.guiLeft + 179, this.guiTop, 179, 0, 32, 86);
fontRendererObj.drawString(StatCollector.translateToLocal("extracells.gui.fluid.storage"), 8 + this.guiLeft, 6 + this.guiTop, 4210752);
if (this.hasNetworkTool)
drawTexturedModalRect(this.guiLeft + 179, this.guiTop + 93, 178, 93, 68, 68);
for (Object s : this.inventorySlots.inventorySlots) {
Expand All @@ -101,14 +119,138 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
if (!overlayRendered && this.fluidSlotList.get(i).canRender())
overlayRendered = GuiUtil.renderOverlay(this.zLevel, this.guiLeft, this.guiTop, this.fluidSlotList.get(i), mouseX, mouseY);
}

for (Object button : this.buttonList) {
if (button instanceof WidgetStorageDirection)
{
((WidgetStorageDirection) button).drawTooltip(mouseX, mouseY, (this.width - this.xSize) / 2, (this.height - this.ySize) / 2);
}
}
showTooltipList(mouseX, mouseY);
}

@Override
public void drawScreen( final int mouseX, final int mouseY, final float btn )
{
super.drawScreen( mouseX, mouseY, btn );
for( final Object c : this.buttonList )
{
if( c instanceof ITooltip )
{
handleTooltip(mouseX, mouseY, (ITooltip) c);
}
}
}

protected void handleTooltip(int mouseX, int mouseY, ITooltip c) {
final int x = c.xPos(); // ((GuiImgButton) c).xPosition;
int y = c.yPos(); // ((GuiImgButton) c).yPosition;

if( x < mouseX && x + c.getWidth() > mouseX && c.isVisible() )
{
if( y < mouseY && y + c.getHeight() > mouseY)
{
if( y < 15 )
{
y = 15;
}

final String msg = c.getMessage();
if( msg != null )
{
this.drawTooltip( x + 11, y + 4, 0, msg );
}
}
}
}

public void drawTooltip( final int par2, final int par3, final int forceWidth, final String message )
{
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
GL11.glDisable( GL12.GL_RESCALE_NORMAL );
RenderHelper.disableStandardItemLighting();
GL11.glDisable( GL11.GL_LIGHTING );
GL11.glDisable( GL11.GL_DEPTH_TEST );
final String[] var4 = message.split( "\n" );

if( var4.length > 0 )
{
int var5 = 0;
int var6;
int var7;

for( var6 = 0; var6 < var4.length; ++var6 )
{
var7 = this.fontRendererObj.getStringWidth( var4[var6] );

if( var7 > var5 )
{
var5 = var7;
}
}

var6 = par2 + 12;
var7 = par3 - 12;
int var9 = 8;

if( var4.length > 1 )
{
var9 += 2 + ( var4.length - 1 ) * 10;
}

if( this.guiTop + var7 + var9 + 6 > this.height )
{
var7 = this.height - var9 - this.guiTop - 6;
}

if( forceWidth > 0 )
{
var5 = forceWidth;
}

this.zLevel = 300.0F;
itemRender.zLevel = 300.0F;
final int var10 = -267386864;
this.drawGradientRect( var6 - 3, var7 - 4, var6 + var5 + 3, var7 - 3, var10, var10 );
this.drawGradientRect( var6 - 3, var7 + var9 + 3, var6 + var5 + 3, var7 + var9 + 4, var10, var10 );
this.drawGradientRect( var6 - 3, var7 - 3, var6 + var5 + 3, var7 + var9 + 3, var10, var10 );
this.drawGradientRect( var6 - 4, var7 - 3, var6 - 3, var7 + var9 + 3, var10, var10 );
this.drawGradientRect( var6 + var5 + 3, var7 - 3, var6 + var5 + 4, var7 + var9 + 3, var10, var10 );
final int var11 = 1347420415;
final int var12 = ( var11 & 16711422 ) >> 1 | var11 & -16777216;
this.drawGradientRect( var6 - 3, var7 - 3 + 1, var6 - 3 + 1, var7 + var9 + 3 - 1, var11, var12 );
this.drawGradientRect( var6 + var5 + 2, var7 - 3 + 1, var6 + var5 + 3, var7 + var9 + 3 - 1, var11, var12 );
this.drawGradientRect( var6 - 3, var7 - 3, var6 + var5 + 3, var7 - 3 + 1, var11, var11 );
this.drawGradientRect( var6 - 3, var7 + var9 + 2, var6 + var5 + 3, var7 + var9 + 3, var12, var12 );

for( int var13 = 0; var13 < var4.length; ++var13 )
{
String var14 = var4[var13];

if( var13 == 0 )
{
var14 = '\u00a7' + Integer.toHexString( 15 ) + var14;
}
else
{
var14 = "\u00a77" + var14;
}

this.fontRendererObj.drawStringWithShadow( var14, var6, var7, -1 );

if( var13 == 0 )
{
var7 += 2;
}

var7 += 10;
}

this.zLevel = 0.0F;
itemRender.zLevel = 0.0F;
}
GL11.glPopAttrib();
}

@Override
public byte getConfigState() {
return this.filterSize;
Expand All @@ -127,9 +269,12 @@ protected Slot getSlotAtPosition(int p_146975_1_, int p_146975_2_) {
}

@Override
@SuppressWarnings("unchecked")
public void initGui() {
super.initGui();
this.buttonList.add(new WidgetStorageDirection(0, this.guiLeft - 18, this.guiTop, 16, 16, AccessRestriction.READ_WRITE));
this.priority = new GuiTabButton(this.guiLeft + 154, this.guiTop, 2 + 4 * 16, GuiText.Priority.getLocal(), itemRender);
this.buttonList.add(priority);
}

private boolean isMouseOverSlot(Slot p_146981_1_, int p_146981_2_, int p_146981_3_) {
Expand Down Expand Up @@ -163,7 +308,6 @@ private void renderBackground(Slot slot) {
this.drawTexturedModalRect(this.guiLeft + slot.xDisplayPosition, this.guiTop + slot.yDisplayPosition, 240, 208, 16, 16);
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_LIGHTING);

}
}

Expand Down Expand Up @@ -192,4 +336,42 @@ public void updateFluids(List<Fluid> fluidList) {
this.fluidSlotList.get(i).setFluid(fluidList.get(i));
}
}

@Override
public VisiblityData modifyVisiblity(GuiContainer guiContainer, VisiblityData visiblityData) {
return visiblityData;
}

@Override
public Iterable<Integer> getItemSpawnSlots(GuiContainer guiContainer, ItemStack itemStack) {
return Collections.emptyList();
}

@Override
public List<TaggedInventoryArea> getInventoryAreas(GuiContainer guiContainer) {
return null;
}

@Override
public boolean handleDragNDrop(GuiContainer gui, int mouseX, int mouseY, ItemStack draggedStack, int button) {
if (!(gui instanceof GuiBusFluidStorage) || draggedStack == null) {
return false;
}
for (WidgetFluidSlot fluidSlot : this.fluidSlotList) {
if (GuiUtil.isPointInRegion(this.guiLeft, this.guiTop, fluidSlot.getPosX(), fluidSlot.getPosY(), 18, 18, mouseX, mouseY)) {
if(part instanceof PartGasStorage && Integration.Mods.MEKANISMGAS.isEnabled())
fluidSlot.mouseNEIClickedGas(draggedStack);
else
fluidSlot.mouseNEIClicked(draggedStack);
break;
}
}
draggedStack.stackSize = 0;
return true;
}

@Override
public boolean hideItemPanelSlot(GuiContainer gui, int x, int y, int w, int h) {
return false;
}
}
Loading

0 comments on commit 35ec5a4

Please sign in to comment.