Rename INetworkNeighborhoodAware to INetworkNodeVisitor

This commit is contained in:
raoulvdberge
2017-06-05 23:47:31 +02:00
parent 436587c9ee
commit 13d66821c6
5 changed files with 20 additions and 21 deletions

View File

@@ -7,8 +7,8 @@ import net.minecraft.world.World;
/** /**
* Allows the network nodes to implement more optimal or non-regular discovery of neighbor nodes. * Allows the network nodes to implement more optimal or non-regular discovery of neighbor nodes.
*/ */
public interface INetworkNeighborhoodAware { public interface INetworkNodeVisitor {
void walkNeighborhood(Operator operator); void visit(Operator operator);
@FunctionalInterface @FunctionalInterface
interface Operator { interface Operator {

View File

@@ -1,8 +1,8 @@
package com.raoulvdberge.refinedstorage.apiimpl.network; package com.raoulvdberge.refinedstorage.apiimpl.network;
import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.api.network.INetworkNeighborhoodAware;
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeGraph; import com.raoulvdberge.refinedstorage.api.network.INetworkNodeGraph;
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeVisitor;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy; import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy;
import com.raoulvdberge.refinedstorage.item.ItemBlockController; import com.raoulvdberge.refinedstorage.item.ItemBlockController;
@@ -21,7 +21,6 @@ import static com.raoulvdberge.refinedstorage.proxy.CapabilityNetworkNodeProxy.N
public class NetworkNodeGraph implements INetworkNodeGraph { public class NetworkNodeGraph implements INetworkNodeGraph {
private TileController controller; private TileController controller;
private Set<INetworkNode> nodes = new HashSet<>(); private Set<INetworkNode> nodes = new HashSet<>();
public NetworkNodeGraph(TileController controller) { public NetworkNodeGraph(TileController controller) {
@@ -48,9 +47,9 @@ public class NetworkNodeGraph implements INetworkNodeGraph {
operator.apply(controllerWorld, pos, facing.getOpposite()); operator.apply(controllerWorld, pos, facing.getOpposite());
} }
NodeToCheck currentNodeToCheck; Visitor currentVisitor;
while ((currentNodeToCheck = operator.toCheck.poll()) != null) { while ((currentVisitor = operator.toCheck.poll()) != null) {
currentNodeToCheck.walkNeighborhood(operator); currentVisitor.visit(operator);
} }
this.nodes = operator.newNodes; this.nodes = operator.newNodes;
@@ -101,13 +100,13 @@ public class NetworkNodeGraph implements INetworkNodeGraph {
} }
} }
private class Operator implements INetworkNeighborhoodAware.Operator { private class Operator implements INetworkNodeVisitor.Operator {
private Set<INetworkNode> newNodes = new HashSet<>(); private Set<INetworkNode> newNodes = new HashSet<>();
private Set<INetworkNode> previousNodes = new HashSet<>(nodes); private Set<INetworkNode> previousNodes = new HashSet<>(nodes);
private boolean changed; private boolean changed;
private Queue<NodeToCheck> toCheck = new ArrayDeque<>(); private Queue<Visitor> toCheck = new ArrayDeque<>();
@Override @Override
public void apply(World world, BlockPos pos, EnumFacing side) { public void apply(World world, BlockPos pos, EnumFacing side) {
@@ -129,21 +128,21 @@ public class NetworkNodeGraph implements INetworkNodeGraph {
previousNodes.remove(otherNode); previousNodes.remove(otherNode);
toCheck.add(new NodeToCheck(otherNode, world, pos, side, tile)); toCheck.add(new Visitor(otherNode, world, pos, side, tile));
} }
} }
} }
} }
} }
private class NodeToCheck implements INetworkNeighborhoodAware { private class Visitor implements INetworkNodeVisitor {
private final INetworkNode node; private final INetworkNode node;
private final World world; private final World world;
private final BlockPos pos; private final BlockPos pos;
private final EnumFacing side; private final EnumFacing side;
private final TileEntity tile; private final TileEntity tile;
NodeToCheck(INetworkNode node, World world, BlockPos pos, EnumFacing side, TileEntity tile) { Visitor(INetworkNode node, World world, BlockPos pos, EnumFacing side, TileEntity tile) {
this.node = node; this.node = node;
this.world = world; this.world = world;
this.pos = pos; this.pos = pos;
@@ -152,9 +151,9 @@ public class NetworkNodeGraph implements INetworkNodeGraph {
} }
@Override @Override
public void walkNeighborhood(Operator operator) { public void visit(Operator operator) {
if (node instanceof INetworkNeighborhoodAware) { if (node instanceof INetworkNodeVisitor) {
((INetworkNeighborhoodAware) node).walkNeighborhood(operator); ((INetworkNodeVisitor) node).visit(operator);
} else { } else {
for (EnumFacing checkSide : EnumFacing.VALUES) { for (EnumFacing checkSide : EnumFacing.VALUES) {
if (checkSide != side) { // Avoid going backward if (checkSide != side) { // Avoid going backward

View File

@@ -2,7 +2,7 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.node;
import com.raoulvdberge.refinedstorage.RSUtils; import com.raoulvdberge.refinedstorage.RSUtils;
import com.raoulvdberge.refinedstorage.api.network.INetwork; import com.raoulvdberge.refinedstorage.api.network.INetwork;
import com.raoulvdberge.refinedstorage.api.network.INetworkNeighborhoodAware; import com.raoulvdberge.refinedstorage.api.network.INetworkNodeVisitor;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
import com.raoulvdberge.refinedstorage.api.util.IWrenchable; import com.raoulvdberge.refinedstorage.api.util.IWrenchable;
import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.API;
@@ -21,7 +21,7 @@ import net.minecraftforge.items.IItemHandler;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
public abstract class NetworkNode implements INetworkNode, INetworkNeighborhoodAware, IWrenchable { public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor, IWrenchable {
@Nullable @Nullable
protected INetwork network; protected INetwork network;
protected World world; protected World world;
@@ -154,7 +154,7 @@ public abstract class NetworkNode implements INetworkNode, INetworkNeighborhoodA
} }
@Override @Override
public void walkNeighborhood(Operator operator) { public void visit(Operator operator) {
for (EnumFacing facing : EnumFacing.VALUES) { for (EnumFacing facing : EnumFacing.VALUES) {
if (canConduct(facing)) { if (canConduct(facing)) {
operator.apply(world, pos.offset(facing), facing.getOpposite()); operator.apply(world, pos.offset(facing), facing.getOpposite());

View File

@@ -144,8 +144,8 @@ public class NetworkNodeNetworkTransmitter extends NetworkNode {
} }
@Override @Override
public void walkNeighborhood(Operator operator) { public void visit(Operator operator) {
super.walkNeighborhood(operator); super.visit(operator);
if (canTransmit()) { if (canTransmit()) {
if (!isSameDimension()) { if (!isSameDimension()) {

View File

@@ -85,7 +85,7 @@ public class NetworkNodeWirelessTransmitter extends NetworkNode implements IWire
} }
@Override @Override
public void walkNeighborhood(Operator operator) { public void visit(Operator operator) {
operator.apply(world, pos.offset(EnumFacing.DOWN), EnumFacing.UP); operator.apply(world, pos.offset(EnumFacing.DOWN), EnumFacing.UP);
} }
} }