1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2024-06-26 07:03:22 +00:00

Allow turtle upgrades to act as tools and peripherals

This may be useful when you want your tool to also provide additional
methods. For instance, a pickaxe could provide methods to check whether
it can break the block in front.
This commit is contained in:
SquidDev 2017-05-03 17:28:54 +01:00
parent 58e6e9ea46
commit a021a072b5
5 changed files with 22 additions and 4 deletions

View File

@ -24,4 +24,22 @@ public enum TurtleUpgradeType
* and can be interacted with the peripheral API (Such as the modem on Wireless Turtles).
*/
Peripheral,
/**
* An upgrade which provides both a tool and a peripheral. This can be used when you wish
* your upgrade to also provide methods. For example, a pickaxe could provide methods
* determining whether it can break the given block or not.
*/
Both,
;
public boolean isTool()
{
return this == Tool || this == Both;
}
public boolean isPeripheral()
{
return this == Peripheral || this == Both;
}
}

View File

@ -126,7 +126,7 @@ public static boolean isUpgradeSuitableForFamily( ComputerFamily family, ITurtle
{
if( family == ComputerFamily.Beginners )
{
return upgrade.getType() == TurtleUpgradeType.Tool;
return upgrade.getType().isTool();
}
else
{

View File

@ -649,7 +649,7 @@ private boolean hasPeripheralUpgradeOnSide( int side )
case 5: upgrade = getUpgrade( TurtleSide.Left ); break;
default: return false;
}
if( upgrade != null && upgrade.getType() == TurtleUpgradeType.Peripheral )
if( upgrade != null && upgrade.getType().isPeripheral() )
{
return true;
}

View File

@ -950,7 +950,7 @@ public void updatePeripherals( ServerComputer serverComputer )
{
ITurtleUpgrade upgrade = getUpgrade( side );
IPeripheral peripheral = null;
if( upgrade != null && upgrade.getType() == TurtleUpgradeType.Peripheral )
if( upgrade != null && upgrade.getType().isPeripheral() )
{
peripheral = upgrade.createPeripheral( this, side );
}

View File

@ -31,7 +31,7 @@ public TurtleCommandResult execute( ITurtleAccess turtle )
if( !m_side.isPresent() || m_side.get() == side )
{
ITurtleUpgrade upgrade = turtle.getUpgrade( side );
if( upgrade != null && upgrade.getType() == TurtleUpgradeType.Tool )
if( upgrade != null && upgrade.getType().isTool() )
{
TurtleCommandResult result = upgrade.useTool( turtle, side, m_verb, m_direction.toWorldDir( turtle ) );
if( result.isSuccess() )