Skip to content
This repository has been archived by the owner on Dec 18, 2022. It is now read-only.

Commit

Permalink
Merge pull request #35 from GTMEGA/improve-energy-cover
Browse files Browse the repository at this point in the history
  • Loading branch information
basdxz authored Jun 14, 2022
2 parents b6f33bf + 175c3df commit 930fa41
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 28 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package gregtech.api.interfaces.tileentity;

public interface IBatteryContainer {
long getBatteryCapacity();
long getBatteryEnergyStored();
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import gregtech.api.gui.*;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IBatteryContainer;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.items.GT_MetaBase_Item;
import gregtech.api.util.GT_ModHandler;
Expand All @@ -23,7 +24,7 @@
* This is the main construct for my Basic Machines such as the Automatic Extractor
* Extend this class to make a simple Machine
*/
public class GT_MetaTileEntity_BasicBatteryBuffer extends GT_MetaTileEntity_TieredMachineBlock {
public class GT_MetaTileEntity_BasicBatteryBuffer extends GT_MetaTileEntity_TieredMachineBlock implements IBatteryContainer {
public boolean mCharge = false, mDecharge = false;
public int mBatteryCount = 0, mChargeableCount = 0;
private long count = 0;
Expand Down Expand Up @@ -328,6 +329,49 @@ public String[] getInfoData() {
GT_Utility.formatNumbers(getBaseMetaTileEntity().getAverageElectricOutput())+" EU/t"};
}

@Override
public long getBatteryCapacity() {
long capacity = 0;
if (mInventory != null) {
for (ItemStack aStack : mInventory) {
if (GT_ModHandler.isElectricItem(aStack)) {

if (aStack.getItem() instanceof GT_MetaBase_Item) {
Long[] stats = ((GT_MetaBase_Item) aStack.getItem()).getElectricStats(aStack);
if (stats != null) {
capacity = capacity + stats[0];
//tStored = tStored + ((GT_MetaBase_Item) aStack.getItem()).getRealCharge(aStack);
}
} else if (aStack.getItem() instanceof IElectricItem) {
//tStored = tStored + (long) ic2.api.item.ElectricItem.manager.getCharge(aStack);
capacity = capacity + (long) ((IElectricItem) aStack.getItem()).getMaxCharge(aStack);
}
}
}
}
return capacity;
}

@Override
public long getBatteryEnergyStored() {
long stored = 0;
if (mInventory != null) {
for (ItemStack aStack : mInventory) {
if (GT_ModHandler.isElectricItem(aStack)) {
if (aStack.getItem() instanceof GT_MetaBase_Item) {
Long[] stats = ((GT_MetaBase_Item) aStack.getItem()).getElectricStats(aStack);
if (stats != null) {
stored = stored + ((GT_MetaBase_Item) aStack.getItem()).getRealCharge(aStack);
}
} else if (aStack.getItem() instanceof IElectricItem) {
stored = stored + (long) ic2.api.item.ElectricItem.manager.getCharge(aStack);
}
}
}
}
return stored;
}

@Override
public boolean isGivingInformation() {
return true;
Expand Down
60 changes: 33 additions & 27 deletions src/main/java/gregtech/common/covers/GT_Cover_EUMeter.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import gregtech.api.gui.widgets.GT_GuiIcon;
import gregtech.api.gui.widgets.GT_GuiIconCheckButton;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IBatteryContainer;
import gregtech.api.interfaces.tileentity.ICoverable;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.items.GT_MetaBase_Item;
Expand Down Expand Up @@ -69,26 +70,25 @@ public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCov
if (aTileEntity instanceof IGregTechTileEntity) {
IGregTechTileEntity tTileEntity = (IGregTechTileEntity) aTileEntity;
IMetaTileEntity mTileEntity = tTileEntity.getMetaTileEntity();
if (mTileEntity instanceof GT_MetaTileEntity_BasicBatteryBuffer) {
GT_MetaTileEntity_BasicBatteryBuffer buffer = (GT_MetaTileEntity_BasicBatteryBuffer) mTileEntity;
if (buffer.mInventory != null) {
for (ItemStack aStack : buffer.mInventory) {
if (GT_ModHandler.isElectricItem(aStack)) {

if (aStack.getItem() instanceof GT_MetaBase_Item) {
Long[] stats = ((GT_MetaBase_Item) aStack.getItem()).getElectricStats(aStack);
if (stats != null) {
tScale = tScale + stats[0];
tStored = tStored + ((GT_MetaBase_Item) aStack.getItem()).getRealCharge(aStack);
}
} else if (aStack.getItem() instanceof IElectricItem) {
tStored = tStored + (long) ic2.api.item.ElectricItem.manager.getCharge(aStack);
tScale = tScale + (long) ((IElectricItem) aStack.getItem()).getMaxCharge(aStack);
}
}
}

}
if (mTileEntity instanceof IBatteryContainer) {
tScale += ((IBatteryContainer) mTileEntity).getBatteryCapacity();
tStored += ((IBatteryContainer) mTileEntity).getBatteryEnergyStored();
}
}
tScale = tScale / 15L;
if (tScale > 0L) {
aTileEntity.setOutputRedstoneSignal(aSide, aCoverVariable % 2 == 0 ? (byte) (int) (tStored / tScale) : (byte) (int) (15L - tStored / tScale));
} else {
aTileEntity.setOutputRedstoneSignal(aSide, (byte) (aCoverVariable % 2 == 0 ? 0 : 15));
}
} else if (aCoverVariable < 14) {
long tStored = aTileEntity.getStoredEU();
if (aTileEntity instanceof IGregTechTileEntity) {
IGregTechTileEntity tTileEntity = (IGregTechTileEntity) aTileEntity;
IMetaTileEntity mTileEntity = tTileEntity.getMetaTileEntity();
if (mTileEntity instanceof IBatteryContainer) {
tScale = ((IBatteryContainer) mTileEntity).getBatteryCapacity();
tStored = ((IBatteryContainer) mTileEntity).getBatteryEnergyStored();
}
}
tScale = tScale / 15L;
Expand All @@ -103,8 +103,8 @@ public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCov

@Override
public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
aCoverVariable = (aCoverVariable + (aPlayer.isSneaking()? -1 : 1)) % 12;
if(aCoverVariable <0){aCoverVariable = 11;}
aCoverVariable = (aCoverVariable + (aPlayer.isSneaking()? -1 : 1)) % 14;
if(aCoverVariable <0){aCoverVariable = 13;}
switch(aCoverVariable) {
case 0: GT_Utility.sendChatToPlayer(aPlayer, trans("031", "Normal Universal Storage")); break;
case 1: GT_Utility.sendChatToPlayer(aPlayer, trans("032", "Inverted Universal Storage")); break;
Expand All @@ -118,6 +118,8 @@ public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable,
case 9: GT_Utility.sendChatToPlayer(aPlayer, trans("040", "Inverted Average Electric Output")); break;
case 10: GT_Utility.sendChatToPlayer(aPlayer, trans("041", "Normal Electricity Storage(Including Batteries)")); break;
case 11: GT_Utility.sendChatToPlayer(aPlayer, trans("042", "Inverted Electricity Storage(Including Batteries)")); break;
case 12: GT_Utility.sendChatToPlayer(aPlayer, trans("043", "Normal Electricity Storage(Only Batteries)")); break;
case 13: GT_Utility.sendChatToPlayer(aPlayer, trans("044", "Inverted Electricity Storage(Only Batteries)")); break;
}
return aCoverVariable;
}
Expand Down Expand Up @@ -205,7 +207,9 @@ public GUI(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity)
.setTooltipText(trans("260", "Average Electric Output"));
b = new GT_GuiIconCheckButton(this, 5, startX + spaceX*4, startY+spaceY*0, GT_GuiIcon.CHECKMARK, null)
.setTooltipText(trans("261", "Electricity Storage(Including Batteries)"));
b = new GT_GuiIconCheckButton(this, 6, startX + spaceX*0, startY+spaceY*3+4, GT_GuiIcon.REDSTONE_ON, GT_GuiIcon.REDSTONE_OFF);
b = new GT_GuiIconCheckButton(this, 6, startX + spaceX*0, startY+spaceY*3, GT_GuiIcon.CHECKMARK, null)
.setTooltipText(trans("262", "Electricity Storage(Only Batteries)"));
b = new GT_GuiIconCheckButton(this, 7, startX + spaceX*4, startY+spaceY*3+4, GT_GuiIcon.REDSTONE_ON, GT_GuiIcon.REDSTONE_OFF);
}

@Override
Expand All @@ -216,7 +220,7 @@ public void drawExtras(int mouseX, int mouseY, float parTicks) {
s2 = trans("INVERTED","Inverted");
else
s2 = trans("NORMAL","Normal");
this.fontRendererObj.drawString(s2, startX + spaceX*1, 8+startY+spaceY*3, 0xFF555555);
this.fontRendererObj.drawString(s2, startX + spaceX*5, 8+startY+spaceY*3, 0xFF555555);

this.fontRendererObj.drawString("Universal",
startX + spaceX*1, 4+startY+spaceY*1, 0xFF555555);
Expand All @@ -230,6 +234,8 @@ public void drawExtras(int mouseX, int mouseY, float parTicks) {
startX + spaceX*5, 4+startY+spaceY*2, 0xFF555555);
this.fontRendererObj.drawString("EU stored",
startX + spaceX*5, 4+startY+spaceY*0, 0xFF555555);
this.fontRendererObj.drawString("Bat stored",
startX + spaceX*1, 4+startY+spaceY*3, 0xFF555555);
}

@Override
Expand All @@ -239,7 +245,7 @@ protected void onInitGui(int guiLeft, int guiTop, int gui_width, int gui_height)

@Override
public void buttonClicked(GuiButton btn){
if (btn.id == 6 || !isEnabled(btn.id)){
if (btn.id == 7 || !isEnabled(btn.id)){
coverVariable = getNewCoverVariable(btn.id, ((GT_GuiIconCheckButton) btn).isChecked());
GT_Values.NW.sendToServer(new GT_Packet_TileEntityCover(side, coverID, coverVariable, tile));
}
Expand All @@ -252,7 +258,7 @@ private void updateButtons(){
}

private int getNewCoverVariable(int id, boolean checked) {
if (id == 6) {
if (id == 7) {
if (checked)
return coverVariable & ~0x1;
else
Expand All @@ -262,7 +268,7 @@ private int getNewCoverVariable(int id, boolean checked) {
}

private boolean isEnabled(int id) {
if (id == 6)
if (id == 7)
return (coverVariable & 0x1) > 0;
return (coverVariable >> 1) == id;
}
Expand Down

0 comments on commit 930fa41

Please sign in to comment.