diff options
Diffstat (limited to 'src/Java/binnie/core/triggers')
-rw-r--r-- | src/Java/binnie/core/triggers/ActionProvider.java | 38 | ||||
-rw-r--r-- | src/Java/binnie/core/triggers/BinnieAction.java | 88 | ||||
-rw-r--r-- | src/Java/binnie/core/triggers/BinnieTrigger.java | 116 | ||||
-rw-r--r-- | src/Java/binnie/core/triggers/ModuleTrigger.java | 45 | ||||
-rw-r--r-- | src/Java/binnie/core/triggers/TriggerData.java | 37 | ||||
-rw-r--r-- | src/Java/binnie/core/triggers/TriggerInventory.java | 11 | ||||
-rw-r--r-- | src/Java/binnie/core/triggers/TriggerPower.java | 48 | ||||
-rw-r--r-- | src/Java/binnie/core/triggers/TriggerProvider.java | 57 | ||||
-rw-r--r-- | src/Java/binnie/core/triggers/TriggerWorking.java | 47 |
9 files changed, 487 insertions, 0 deletions
diff --git a/src/Java/binnie/core/triggers/ActionProvider.java b/src/Java/binnie/core/triggers/ActionProvider.java new file mode 100644 index 0000000000..1fa519dc6c --- /dev/null +++ b/src/Java/binnie/core/triggers/ActionProvider.java @@ -0,0 +1,38 @@ +package binnie.core.triggers; + +import binnie.core.machines.component.IBuildcraft.ActionProvider; +import buildcraft.api.statements.IActionExternal; +import buildcraft.api.statements.IActionInternal; +import buildcraft.api.statements.IActionProvider; +import buildcraft.api.statements.IStatementContainer; +import cpw.mods.fml.common.Optional.Method; +import java.util.Collection; +import java.util.LinkedList; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; + +class ActionProvider + implements IActionProvider +{ + @Optional.Method(modid="BuildCraft|Silicon") + public Collection<IActionInternal> getInternalActions(IStatementContainer container) + { + return null; + } + + @Optional.Method(modid="BuildCraft|Silicon") + public Collection<IActionExternal> getExternalActions(ForgeDirection side, TileEntity tile) + { + LinkedList<IActionExternal> list = new LinkedList(); + if ((tile instanceof IBuildcraft.ActionProvider)) { + ((IBuildcraft.ActionProvider)tile).getActions(list); + } + LinkedList<IActionExternal> list2 = new LinkedList(); + for (IActionExternal action : list2) { + if ((action != null) && (action.getUniqueTag() != null)) { + list.add(action); + } + } + return list2; + } +} diff --git a/src/Java/binnie/core/triggers/BinnieAction.java b/src/Java/binnie/core/triggers/BinnieAction.java new file mode 100644 index 0000000000..f9c0d24e78 --- /dev/null +++ b/src/Java/binnie/core/triggers/BinnieAction.java @@ -0,0 +1,88 @@ +package binnie.core.triggers; + +import binnie.Binnie; +import binnie.core.AbstractMod; +import binnie.core.BinnieCore; +import binnie.core.resource.BinnieIcon; +import binnie.core.resource.ManagerResource; +import buildcraft.api.statements.IActionExternal; +import buildcraft.api.statements.IStatement; +import buildcraft.api.statements.IStatementContainer; +import buildcraft.api.statements.IStatementParameter; +import buildcraft.api.statements.StatementManager; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraftforge.common.util.ForgeDirection; + +class BinnieAction + implements IActionExternal +{ + private static int incrementalID = 800; + public static BinnieAction actionPauseProcess; + public static BinnieAction actionCancelTask; + private String desc; + private BinnieIcon icon; + private String tag; + private int id = 0; + + BinnieAction(String desc, String tag, String iconFile) + { + this(desc, tag, BinnieCore.instance, iconFile); + } + + private BinnieAction(String desc, String tag, AbstractMod mod, String iconFile) + { + this.id = (incrementalID++); + this.tag = tag; + StatementManager.registerStatement(this); + this.icon = Binnie.Resource.getItemIcon(mod, iconFile); + this.desc = desc; + } + + public String getDescription() + { + return this.desc; + } + + public String getUniqueTag() + { + return this.tag; + } + + @SideOnly(Side.CLIENT) + public IIcon getIcon() + { + return this.icon.getIcon(); + } + + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) + { + this.icon.registerIcon(iconRegister); + } + + public int maxParameters() + { + return 0; + } + + public int minParameters() + { + return 0; + } + + public IStatementParameter createParameter(int index) + { + return null; + } + + public IStatement rotateLeft() + { + return this; + } + + public void actionActivate(TileEntity target, ForgeDirection side, IStatementContainer source, IStatementParameter[] parameters) {} +} diff --git a/src/Java/binnie/core/triggers/BinnieTrigger.java b/src/Java/binnie/core/triggers/BinnieTrigger.java new file mode 100644 index 0000000000..e5cac34dea --- /dev/null +++ b/src/Java/binnie/core/triggers/BinnieTrigger.java @@ -0,0 +1,116 @@ +package binnie.core.triggers; + +import binnie.Binnie; +import binnie.core.AbstractMod; +import binnie.core.BinnieCore; +import binnie.core.resource.BinnieIcon; +import binnie.core.resource.ManagerResource; +import buildcraft.api.statements.IStatement; +import buildcraft.api.statements.IStatementContainer; +import buildcraft.api.statements.IStatementParameter; +import buildcraft.api.statements.ITriggerExternal; +import buildcraft.api.statements.StatementManager; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import java.util.List; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraftforge.common.util.ForgeDirection; + +final class BinnieTrigger + implements ITriggerExternal +{ + private static int incrementalID = 800; + protected static BinnieTrigger triggerNoBlankTemplate; + protected static BinnieTrigger triggerNoTemplate; + protected static BinnieTrigger triggerIsWorking; + protected static BinnieTrigger triggerIsNotWorking; + protected static BinnieTrigger triggerCanWork; + protected static BinnieTrigger triggerCannotWork; + protected static BinnieTrigger triggerPowerNone; + protected static BinnieTrigger triggerPowerLow; + protected static BinnieTrigger triggerPowerMedium; + protected static BinnieTrigger triggerPowerHigh; + protected static BinnieTrigger triggerPowerFull; + protected static BinnieTrigger triggerSerumFull; + protected static BinnieTrigger triggerSerumPure; + protected static BinnieTrigger triggerSerumEmpty; + protected static BinnieTrigger triggerAcclimatiserNone; + protected static BinnieTrigger triggerAcclimatiserHot; + protected static BinnieTrigger triggerAcclimatiserCold; + protected static BinnieTrigger triggerAcclimatiserWet; + protected static BinnieTrigger triggerAcclimatiserDry; + private String desc; + private String tag; + private BinnieIcon icon; + private int id = 0; + + public BinnieTrigger(String desc, String tag, String iconFile) + { + this(desc, tag, BinnieCore.instance, iconFile); + } + + public BinnieTrigger(String desc, String tag, AbstractMod mod, String iconFile) + { + this.id = (incrementalID++); + this.tag = tag; + StatementManager.registerStatement(this); + TriggerProvider.triggers.add(this); + this.icon = Binnie.Resource.getItemIcon(mod, iconFile); + this.desc = desc; + } + + public String getDescription() + { + return this.desc; + } + + @SideOnly(Side.CLIENT) + public IIcon getIcon(IIconRegister register) + { + return this.icon.getIcon(register); + } + + public String getUniqueTag() + { + return this.tag; + } + + @SideOnly(Side.CLIENT) + public IIcon getIcon() + { + return this.icon.getIcon(); + } + + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) + { + this.icon.registerIcon(iconRegister); + } + + public int maxParameters() + { + return 0; + } + + public int minParameters() + { + return 0; + } + + public IStatementParameter createParameter(int index) + { + return null; + } + + public IStatement rotateLeft() + { + return null; + } + + public boolean isTriggerActive(TileEntity target, ForgeDirection side, IStatementContainer source, IStatementParameter[] parameters) + { + return false; + } +} diff --git a/src/Java/binnie/core/triggers/ModuleTrigger.java b/src/Java/binnie/core/triggers/ModuleTrigger.java new file mode 100644 index 0000000000..1d39e816cb --- /dev/null +++ b/src/Java/binnie/core/triggers/ModuleTrigger.java @@ -0,0 +1,45 @@ +package binnie.core.triggers; + +import binnie.core.IInitializable; +import binnie.extrabees.ExtraBees; +import buildcraft.api.statements.StatementManager; + +public class ModuleTrigger + implements IInitializable +{ + public void preInit() {} + + public void init() + { + BinnieAction.actionPauseProcess = new BinnieAction("Pause Process", "binnie.action.pauseProcess", "actions/PauseProcess"); + BinnieAction.actionCancelTask = new BinnieAction("Cancel Task", "binnie.action.cancelTask", "actions/CancelTask"); + + StatementManager.registerActionProvider(new ActionProvider()); + + BinnieTrigger.triggerNoBlankTemplate = new BinnieTrigger("No Blank Template", "binnie.trigger.noBlankTemplate", ExtraBees.instance, "triggers/NoBlankTemplate"); + + + BinnieTrigger.triggerNoTemplate = new BinnieTrigger("No Template", "binnie.trigger.noTemplate", ExtraBees.instance, "triggers/NoTemplate"); + + + BinnieTrigger.triggerIsWorking = new BinnieTrigger("Is Working", "binnie.trigger.isWorking", "triggers/IsWorking"); + BinnieTrigger.triggerIsNotWorking = new BinnieTrigger("Is Not Working", "binnie.trigger.isNotWorking", "triggers/IsNotWorking"); + BinnieTrigger.triggerCanWork = new BinnieTrigger("Can Work", "binnie.trigger.canWork", "triggers/CanWork"); + BinnieTrigger.triggerCannotWork = new BinnieTrigger("Cannot Work", "binnie.trigger.cannotWork", "triggers/CannotWork"); + + BinnieTrigger.triggerPowerNone = new BinnieTrigger("Power None", "binnie.trigger.powerNone", "triggers/PowerNone"); + BinnieTrigger.triggerPowerLow = new BinnieTrigger("Power Low", "binnie.trigger.powerLow", "triggers/PowerLow"); + BinnieTrigger.triggerPowerMedium = new BinnieTrigger("Power Medium", "binnie.trigger.powerMedium", "triggers/PowerMedium"); + BinnieTrigger.triggerPowerHigh = new BinnieTrigger("Power High", "binnie.trigger.powerHigh", "triggers/PowerHigh"); + BinnieTrigger.triggerPowerFull = new BinnieTrigger("Power Full", "binnie.trigger.powerFull", "triggers/PowerFull"); + + + BinnieTrigger.triggerSerumFull = new BinnieTrigger("Serum Full", "binnie.trigger.serumFull", ExtraBees.instance, "triggers/SerumFull"); + BinnieTrigger.triggerSerumPure = new BinnieTrigger("Serum Pure", "binnie.trigger.serumPure", ExtraBees.instance, "triggers/SerumPure"); + BinnieTrigger.triggerSerumEmpty = new BinnieTrigger("Serum Pure", "binnie.trigger.serumEmpty", ExtraBees.instance, "triggers/SerumEmpty"); + + StatementManager.registerTriggerProvider(new TriggerProvider()); + } + + public void postInit() {} +} diff --git a/src/Java/binnie/core/triggers/TriggerData.java b/src/Java/binnie/core/triggers/TriggerData.java new file mode 100644 index 0000000000..8784e4278a --- /dev/null +++ b/src/Java/binnie/core/triggers/TriggerData.java @@ -0,0 +1,37 @@ +package binnie.core.triggers; + +import buildcraft.api.statements.ITriggerExternal; +import java.util.Map.Entry; + +public class TriggerData + implements Map.Entry<ITriggerExternal, Boolean> +{ + private final ITriggerExternal key; + private Boolean value; + + public TriggerData(ITriggerExternal key, Boolean value) + { + if (key == null) { + throw new NullPointerException(); + } + this.key = key; + this.value = value; + } + + public ITriggerExternal getKey() + { + return this.key; + } + + public Boolean getValue() + { + return this.value; + } + + public Boolean setValue(Boolean value) + { + Boolean old = this.value; + this.value = value; + return old; + } +} diff --git a/src/Java/binnie/core/triggers/TriggerInventory.java b/src/Java/binnie/core/triggers/TriggerInventory.java new file mode 100644 index 0000000000..2892f12c7e --- /dev/null +++ b/src/Java/binnie/core/triggers/TriggerInventory.java @@ -0,0 +1,11 @@ +package binnie.core.triggers; + +import net.minecraft.inventory.IInventory; + +public class TriggerInventory +{ + private static Boolean isSlotEmpty(IInventory inventory, int slot) + { + return Boolean.valueOf(inventory.getStackInSlot(slot) != null); + } +} diff --git a/src/Java/binnie/core/triggers/TriggerPower.java b/src/Java/binnie/core/triggers/TriggerPower.java new file mode 100644 index 0000000000..69c02decd9 --- /dev/null +++ b/src/Java/binnie/core/triggers/TriggerPower.java @@ -0,0 +1,48 @@ +package binnie.core.triggers; + +import binnie.core.machines.Machine; +import binnie.core.machines.power.IPoweredMachine; +import binnie.core.machines.power.PowerInterface; + +public class TriggerPower +{ + public static TriggerData powerNone(Object tile) + { + return new TriggerData(BinnieTrigger.triggerPowerNone, Boolean.valueOf(getPercentage(tile) < 0.0500000007450581D)); + } + + public static TriggerData powerLow(Object tile) + { + return new TriggerData(BinnieTrigger.triggerPowerLow, Boolean.valueOf(getPercentage(tile) < 0.3499999940395355D)); + } + + public static TriggerData powerMedium(Object tile) + { + double p = getPercentage(tile); + return new TriggerData(BinnieTrigger.triggerPowerMedium, Boolean.valueOf((p >= 0.3499999940395355D) && (p <= 0.6499999761581421D))); + } + + public static TriggerData powerHigh(Object tile) + { + double p = getPercentage(tile); + return new TriggerData(BinnieTrigger.triggerPowerHigh, Boolean.valueOf(getPercentage(tile) > 0.6499999761581421D)); + } + + public static TriggerData powerFull(Object tile) + { + double p = getPercentage(tile); + return new TriggerData(BinnieTrigger.triggerPowerFull, Boolean.valueOf(getPercentage(tile) > 0.949999988079071D)); + } + + private static double getPercentage(Object tile) + { + IPoweredMachine process = (IPoweredMachine)Machine.getInterface(IPoweredMachine.class, tile); + if (process != null) + { + double percentage = process.getInterface().getEnergy() / process.getInterface().getCapacity(); + + return percentage; + } + return 0.0D; + } +} diff --git a/src/Java/binnie/core/triggers/TriggerProvider.java b/src/Java/binnie/core/triggers/TriggerProvider.java new file mode 100644 index 0000000000..fc6da191e8 --- /dev/null +++ b/src/Java/binnie/core/triggers/TriggerProvider.java @@ -0,0 +1,57 @@ +package binnie.core.triggers; + +import binnie.core.machines.component.IBuildcraft.TriggerProvider; +import buildcraft.api.statements.IStatementContainer; +import buildcraft.api.statements.ITriggerExternal; +import buildcraft.api.statements.ITriggerInternal; +import buildcraft.api.statements.ITriggerProvider; +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedList; +import java.util.List; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; + +class TriggerProvider + implements ITriggerProvider +{ + static TriggerProvider instance = new TriggerProvider(); + public static List<BinnieTrigger> triggers = new ArrayList(); + + public Collection<ITriggerExternal> getExternalTriggers(ForgeDirection side, TileEntity tile) + { + LinkedList<TriggerData> list = new LinkedList(); + + LinkedList<ITriggerExternal> triggerData = new LinkedList(); + if ((tile instanceof IBuildcraft.TriggerProvider)) { + ((IBuildcraft.TriggerProvider)tile).getTriggers(list); + } + for (TriggerData data : list) { + if ((data.getKey() != null) && (data.getKey().getUniqueTag() != null)) { + triggerData.add(data.getKey()); + } + } + return triggerData; + } + + public static boolean isTriggerActive(ITriggerExternal trigger, TileEntity tile) + { + LinkedList<TriggerData> list = new LinkedList(); + + LinkedList<ITriggerExternal> triggerData = new LinkedList(); + if ((tile instanceof IBuildcraft.TriggerProvider)) { + ((IBuildcraft.TriggerProvider)tile).getTriggers(list); + } + for (TriggerData data : list) { + if (data.getKey() == trigger) { + return data.getValue().booleanValue(); + } + } + return false; + } + + public Collection<ITriggerInternal> getInternalTriggers(IStatementContainer container) + { + return new ArrayList(); + } +} diff --git a/src/Java/binnie/core/triggers/TriggerWorking.java b/src/Java/binnie/core/triggers/TriggerWorking.java new file mode 100644 index 0000000000..06feee0f86 --- /dev/null +++ b/src/Java/binnie/core/triggers/TriggerWorking.java @@ -0,0 +1,47 @@ +package binnie.core.triggers; + +import binnie.core.machines.Machine; +import binnie.core.machines.power.IProcess; + +public class TriggerWorking +{ + public static TriggerData isNotWorking(Object inventory) + { + IProcess process = (IProcess)Machine.getInterface(IProcess.class, inventory); + boolean b = false; + if (process != null) { + b = (process.canWork() != null) && (process.canProgress() != null); + } + return new TriggerData(BinnieTrigger.triggerIsNotWorking, Boolean.valueOf(b)); + } + + public static TriggerData isWorking(Object inventory) + { + IProcess process = (IProcess)Machine.getInterface(IProcess.class, inventory); + boolean b = false; + if (process != null) { + b = (process.canWork() == null) && (process.canProgress() == null); + } + return new TriggerData(BinnieTrigger.triggerIsWorking, Boolean.valueOf(b)); + } + + public static TriggerData canWork(Object inventory) + { + IProcess process = (IProcess)Machine.getInterface(IProcess.class, inventory); + boolean b = false; + if (process != null) { + b = process.canWork() == null; + } + return new TriggerData(BinnieTrigger.triggerCanWork, Boolean.valueOf(b)); + } + + public static TriggerData cannotWork(Object inventory) + { + IProcess process = (IProcess)Machine.getInterface(IProcess.class, inventory); + boolean b = false; + if (process != null) { + b = process.canWork() != null; + } + return new TriggerData(BinnieTrigger.triggerCannotWork, Boolean.valueOf(b)); + } +} |