MAC Now shows progress.

This commit is contained in:
AlgorithmX2
2014-05-08 23:09:42 -05:00
parent 740a1022a4
commit b0aedc1b01
2 changed files with 82 additions and 7 deletions
+33
View File
@@ -4,6 +4,8 @@ import net.minecraft.entity.player.InventoryPlayer;
import appeng.api.config.RedstoneMode; import appeng.api.config.RedstoneMode;
import appeng.api.config.Settings; import appeng.api.config.Settings;
import appeng.client.gui.widgets.GuiImgButton; import appeng.client.gui.widgets.GuiImgButton;
import appeng.client.gui.widgets.GuiProgressBar;
import appeng.client.gui.widgets.GuiProgressBar.Direction;
import appeng.container.implementations.ContainerMAC; import appeng.container.implementations.ContainerMAC;
import appeng.core.localization.GuiText; import appeng.core.localization.GuiText;
import appeng.tile.crafting.TileMolecularAssembler; import appeng.tile.crafting.TileMolecularAssembler;
@@ -11,6 +13,36 @@ import appeng.tile.crafting.TileMolecularAssembler;
public class GuiMAC extends GuiUpgradeable public class GuiMAC extends GuiUpgradeable
{ {
ContainerMAC cmac;
GuiProgressBar pb;
@Override
public void initGui()
{
super.initGui();
pb = new GuiProgressBar( "guis/mac.png", 139, 36, 148, 201, 6, 18, Direction.VERTICAL );
this.buttonList.add( pb );
}
@Override
public void drawBG(int offsetX, int offsetY, int mouseX, int mouseY)
{
pb.xPosition = 148 + guiLeft;
pb.yPosition = 48 + guiTop;
super.drawBG( offsetX, offsetY, mouseX, mouseY );
}
@Override
public void drawFG(int offsetX, int offsetY, int mouseX, int mouseY)
{
pb.max = 100;
pb.current = cmac.craftProgress;
pb.FullMsg = pb.current + "%";
super.drawFG( offsetX, offsetY, mouseX, mouseY );
}
@Override @Override
protected void addButtons() protected void addButtons()
{ {
@@ -26,6 +58,7 @@ public class GuiMAC extends GuiUpgradeable
public GuiMAC(InventoryPlayer inventoryPlayer, TileMolecularAssembler te) { public GuiMAC(InventoryPlayer inventoryPlayer, TileMolecularAssembler te) {
super( new ContainerMAC( inventoryPlayer, te ) ); super( new ContainerMAC( inventoryPlayer, te ) );
this.ySize = 197; this.ySize = 197;
this.cmac = (ContainerMAC) this.inventorySlots;
} }
protected GuiText getName() protected GuiText getName()
+49 -7
View File
@@ -9,9 +9,12 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import appeng.api.AEApi; import appeng.api.AEApi;
import appeng.api.config.Actionable;
import appeng.api.config.PowerMultiplier;
import appeng.api.config.RedstoneMode; import appeng.api.config.RedstoneMode;
import appeng.api.config.Settings; import appeng.api.config.Settings;
import appeng.api.config.Upgrades; import appeng.api.config.Upgrades;
import appeng.api.crafting.ICraftingMedium;
import appeng.api.crafting.ICraftingPatternDetails; import appeng.api.crafting.ICraftingPatternDetails;
import appeng.api.implementations.IUpgradeableHost; import appeng.api.implementations.IUpgradeableHost;
import appeng.api.networking.IGridNode; import appeng.api.networking.IGridNode;
@@ -37,7 +40,7 @@ import appeng.util.InventoryAdaptor;
import appeng.util.Platform; import appeng.util.Platform;
public class TileMolecularAssembler extends AENetworkInvTile implements IAEAppEngInventory, ISidedInventory, IUpgradeableHost, IConfigManagerHost, public class TileMolecularAssembler extends AENetworkInvTile implements IAEAppEngInventory, ISidedInventory, IUpgradeableHost, IConfigManagerHost,
IGridTickable IGridTickable, ICraftingMedium
{ {
static final int[] sides = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; static final int[] sides = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
@@ -51,10 +54,11 @@ public class TileMolecularAssembler extends AENetworkInvTile implements IAEAppEn
private ForgeDirection pushDirection = ForgeDirection.UNKNOWN; private ForgeDirection pushDirection = ForgeDirection.UNKNOWN;
private ItemStack myPattern = null; private ItemStack myPattern = null;
private ICraftingPatternDetails myPlan = null; private ICraftingPatternDetails myPlan = null;
private int progress = 0; private double progress = 0;
private boolean isAwake = false; private boolean isAwake = false;
public boolean pushPattern(ItemStack pattern, ICraftingPatternDetails patternDetails, InventoryCrafting table, ForgeDirection where) @Override
public boolean pushPattern(ICraftingPatternDetails patternDetails, InventoryCrafting table, ForgeDirection where)
{ {
return false; return false;
} }
@@ -85,7 +89,7 @@ public class TileMolecularAssembler extends AENetworkInvTile implements IAEAppEn
myPattern = null; myPattern = null;
} }
isAwake = myPlan != null && hasMats(); isAwake = myPlan != null && hasMats() || canPush();
if ( wasEnabled != isAwake ) if ( wasEnabled != isAwake )
{ {
try try
@@ -102,6 +106,11 @@ public class TileMolecularAssembler extends AENetworkInvTile implements IAEAppEn
} }
} }
private boolean canPush()
{
return inv.getStackInSlot( 9 ) != null;
}
@Override @Override
public int getInstalledUpgrades(Upgrades u) public int getInstalledUpgrades(Upgrades u)
{ {
@@ -231,13 +240,13 @@ public class TileMolecularAssembler extends AENetworkInvTile implements IAEAppEn
public int getCraftingProgress() public int getCraftingProgress()
{ {
return progress; return (int) progress;
} }
@Override @Override
public TickingRequest getTickingRequest(IGridNode node) public TickingRequest getTickingRequest(IGridNode node)
{ {
return new TickingRequest( 1, 5, isAwake = hasPattern() && hasMats(), false ); return new TickingRequest( 1, 5, isAwake = hasPattern() && hasMats() || canPush(), false );
} }
private boolean hasMats() private boolean hasMats()
@@ -266,13 +275,34 @@ public class TileMolecularAssembler extends AENetworkInvTile implements IAEAppEn
return TickRateModulation.SLEEP; return TickRateModulation.SLEEP;
} }
progress += TicksSinceLastCall; switch (upgrades.getInstalledUpgrades( Upgrades.SPEED ))
{
case 0:
progress += userPower( TicksSinceLastCall );
break;
case 1:
progress += userPower( TicksSinceLastCall * 2 );
break;
case 2:
progress += userPower( TicksSinceLastCall * 6 );
break;
case 3:
progress += userPower( TicksSinceLastCall * 12 );
break;
case 4:
progress += userPower( TicksSinceLastCall * 30 );
break;
case 5:
progress += userPower( TicksSinceLastCall * 120 );
break;
}
if ( progress >= 100 ) if ( progress >= 100 )
{ {
for (int x = 0; x < craftingInv.getSizeInventory(); x++) for (int x = 0; x < craftingInv.getSizeInventory(); x++)
craftingInv.setInventorySlotContents( x, inv.getStackInSlot( x ) ); craftingInv.setInventorySlotContents( x, inv.getStackInSlot( x ) );
progress = 0;
ItemStack output = myPlan.getOutput( craftingInv, getWorldObj() ); ItemStack output = myPlan.getOutput( craftingInv, getWorldObj() );
if ( output != null ) if ( output != null )
{ {
@@ -288,6 +318,18 @@ public class TileMolecularAssembler extends AENetworkInvTile implements IAEAppEn
return TickRateModulation.FASTER; return TickRateModulation.FASTER;
} }
private int userPower(int i)
{
try
{
return (int) gridProxy.getEnergy().extractAEPower( i, Actionable.MODULATE, PowerMultiplier.CONFIG );
}
catch (GridAccessException e)
{
return 0;
}
}
private void pushOut(ItemStack output) private void pushOut(ItemStack output)
{ {
if ( pushDirection == ForgeDirection.UNKNOWN ) if ( pushDirection == ForgeDirection.UNKNOWN )