1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2025-02-11 08:30:04 +00:00

Cache turtle family within the tile

This means one can call .getFamily() in a thread-safe manner, ensuring
turtle.getFuelLimit() does not cause issues. As we use a specialist
TE class for each family this does not require any specialist caching.
This commit is contained in:
SquidDev 2018-01-16 14:24:31 +00:00
parent c9b0894f26
commit ca7fb8a0b4
3 changed files with 20 additions and 0 deletions

View File

@ -71,14 +71,21 @@ public class TileTurtle extends TileComputerBase
private boolean m_inventoryChanged; private boolean m_inventoryChanged;
private TurtleBrain m_brain; private TurtleBrain m_brain;
private MoveState m_moveState; private MoveState m_moveState;
private ComputerFamily m_family;
public TileTurtle() public TileTurtle()
{
this( ComputerFamily.Normal );
}
public TileTurtle(ComputerFamily family)
{ {
m_inventory = NonNullList.withSize( INVENTORY_SIZE, ItemStack.EMPTY ); m_inventory = NonNullList.withSize( INVENTORY_SIZE, ItemStack.EMPTY );
m_previousInventory = NonNullList.withSize( INVENTORY_SIZE, ItemStack.EMPTY ); m_previousInventory = NonNullList.withSize( INVENTORY_SIZE, ItemStack.EMPTY );
m_inventoryChanged = false; m_inventoryChanged = false;
m_brain = createBrain(); m_brain = createBrain();
m_moveState = MoveState.NOT_MOVED; m_moveState = MoveState.NOT_MOVED;
m_family = family;
} }
public boolean hasMoved() public boolean hasMoved()
@ -454,6 +461,13 @@ public class TileTurtle extends TileComputerBase
return m_brain.getToolRenderAngle( side, f ); return m_brain.getToolRenderAngle( side, f );
} }
// IComputerTile
@Override
public ComputerFamily getFamily()
{
return m_family;
}
// IInventory // IInventory
@Override @Override

View File

@ -6,9 +6,12 @@
package dan200.computercraft.shared.turtle.blocks; package dan200.computercraft.shared.turtle.blocks;
import dan200.computercraft.shared.computer.core.ComputerFamily;
public class TileTurtleAdvanced extends TileTurtle public class TileTurtleAdvanced extends TileTurtle
{ {
public TileTurtleAdvanced() public TileTurtleAdvanced()
{ {
super( ComputerFamily.Advanced);
} }
} }

View File

@ -6,9 +6,12 @@
package dan200.computercraft.shared.turtle.blocks; package dan200.computercraft.shared.turtle.blocks;
import dan200.computercraft.shared.computer.core.ComputerFamily;
public class TileTurtleExpanded extends TileTurtle public class TileTurtleExpanded extends TileTurtle
{ {
public TileTurtleExpanded() public TileTurtleExpanded()
{ {
super( ComputerFamily.Normal);
} }
} }