2: Move crafter patterns away + 3: Move wireless grid range out

This commit is contained in:
Raoul Van den Berge
2016-07-02 19:29:17 +02:00
parent 505c500ccd
commit f0be81f1bc
5 changed files with 52 additions and 37 deletions

View File

@@ -109,6 +109,11 @@ public interface INetworkMaster {
*/ */
List<ICraftingPattern> getPatterns(); List<ICraftingPattern> getPatterns();
/**
* Rebuilds the pattern list.
*/
void rebuildPatterns();
/** /**
* Returns crafting patterns from an item stack. * Returns crafting patterns from an item stack.
* *

View File

@@ -30,13 +30,6 @@ public interface IWirelessGridHandler {
*/ */
void onClose(EntityPlayer player); void onClose(EntityPlayer player);
/**
* Sets the range of the wireless grid handler.
*
* @param range The range
*/
void setRange(int range);
/** /**
* @return The range wireless grids in this network can reach * @return The range wireless grids in this network can reach
*/ */

View File

@@ -9,9 +9,11 @@ import refinedstorage.RefinedStorageGui;
import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageItems;
import refinedstorage.RefinedStorageUtils; import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.network.INetworkMaster; import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.network.INetworkSlave;
import refinedstorage.api.network.IWirelessGridHandler; import refinedstorage.api.network.IWirelessGridHandler;
import refinedstorage.api.network.WirelessGridConsumer; import refinedstorage.api.network.WirelessGridConsumer;
import refinedstorage.item.ItemWirelessGrid; import refinedstorage.item.ItemWirelessGrid;
import refinedstorage.tile.TileWirelessTransmitter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
@@ -20,8 +22,6 @@ import java.util.List;
public class WirelessGridHandler implements IWirelessGridHandler { public class WirelessGridHandler implements IWirelessGridHandler {
private INetworkMaster network; private INetworkMaster network;
private int range;
private List<WirelessGridConsumer> consumers = new ArrayList<WirelessGridConsumer>(); private List<WirelessGridConsumer> consumers = new ArrayList<WirelessGridConsumer>();
private List<WirelessGridConsumer> consumersToRemove = new ArrayList<WirelessGridConsumer>(); private List<WirelessGridConsumer> consumersToRemove = new ArrayList<WirelessGridConsumer>();
@@ -49,7 +49,7 @@ public class WirelessGridHandler implements IWirelessGridHandler {
public boolean onOpen(EntityPlayer player, EnumHand hand) { public boolean onOpen(EntityPlayer player, EnumHand hand) {
int distance = (int) Math.sqrt(Math.pow(network.getPosition().getX() - player.posX, 2) + Math.pow(network.getPosition().getY() - player.posY, 2) + Math.pow(network.getPosition().getZ() - player.posZ, 2)); int distance = (int) Math.sqrt(Math.pow(network.getPosition().getX() - player.posX, 2) + Math.pow(network.getPosition().getY() - player.posY, 2) + Math.pow(network.getPosition().getZ() - player.posZ, 2));
if (distance > range) { if (distance > getRange()) {
return false; return false;
} }
@@ -75,12 +75,15 @@ public class WirelessGridHandler implements IWirelessGridHandler {
@Override @Override
public int getRange() { public int getRange() {
return range; int range = 0;
}
@Override for (INetworkSlave slave : network.getSlaves()) {
public void setRange(int range) { if (slave instanceof TileWirelessTransmitter) {
this.range = range; range += ((TileWirelessTransmitter) slave).getRange();
}
}
return range;
} }
@Override @Override

View File

@@ -27,7 +27,16 @@ public class TileCrafter extends TileSlave implements ICraftingPatternContainer
public boolean valid(ItemStack stack) { public boolean valid(ItemStack stack) {
return stack.getItem() == RefinedStorageItems.PATTERN && ItemPattern.isValid(stack); return stack.getItem() == RefinedStorageItems.PATTERN && ItemPattern.isValid(stack);
} }
}); }) {
@Override
protected void onContentsChanged(int slot) {
super.onContentsChanged(slot);
if (network != null) {
network.rebuildPatterns();
}
}
};
private BasicItemHandler upgrades = new BasicItemHandler(4, this, new BasicItemValidator(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_SPEED)); private BasicItemHandler upgrades = new BasicItemHandler(4, this, new BasicItemValidator(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_SPEED));

View File

@@ -43,7 +43,6 @@ import refinedstorage.network.MessageGridItems;
import refinedstorage.tile.ISynchronizedContainer; import refinedstorage.tile.ISynchronizedContainer;
import refinedstorage.tile.TileBase; import refinedstorage.tile.TileBase;
import refinedstorage.tile.TileCrafter; import refinedstorage.tile.TileCrafter;
import refinedstorage.tile.TileWirelessTransmitter;
import refinedstorage.tile.config.IRedstoneModeConfig; import refinedstorage.tile.config.IRedstoneModeConfig;
import refinedstorage.tile.config.RedstoneMode; import refinedstorage.tile.config.RedstoneMode;
@@ -344,12 +343,36 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
return patterns.get(highestPattern); return patterns.get(highestPattern);
} }
public void rebuildPatterns() {
patterns.clear();
for (INetworkSlave slave : slaves) {
if (slave instanceof TileCrafter && slave.canUpdate()) {
TileCrafter crafter = (TileCrafter) slave;
for (int i = 0; i < crafter.getPatterns().getSlots(); ++i) {
ItemStack pattern = crafter.getPatterns().getStackInSlot(i);
if (pattern != null && ItemPattern.isValid(pattern)) {
patterns.add(new CraftingPattern(
crafter.getPos().getX(),
crafter.getPos().getY(),
crafter.getPos().getZ(),
ItemPattern.isProcessing(pattern),
ItemPattern.getInputs(pattern),
ItemPattern.getOutputs(pattern),
ItemPattern.getByproducts(pattern)
));
}
}
}
}
}
private void updateSlaves() { private void updateSlaves() {
this.storages.clear(); this.storages.clear();
this.patterns.clear(); this.patterns.clear();
int range = 0;
for (INetworkSlave slave : slaves) { for (INetworkSlave slave : slaves) {
if (!slave.canUpdate()) { if (!slave.canUpdate()) {
continue; continue;
@@ -358,26 +381,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
if (slave instanceof IStorageProvider) { if (slave instanceof IStorageProvider) {
((IStorageProvider) slave).addStorages(storages); ((IStorageProvider) slave).addStorages(storages);
} }
if (slave instanceof TileWirelessTransmitter) {
range += ((TileWirelessTransmitter) slave).getRange();
}
if (slave instanceof TileCrafter) {
TileCrafter crafter = (TileCrafter) slave;
for (int i = 0; i < crafter.getPatterns().getSlots(); ++i) {
ItemStack pattern = crafter.getPatterns().getStackInSlot(i);
if (pattern != null && ItemPattern.isValid(pattern)) {
patterns.add(new CraftingPattern(crafter.getPos().getX(), crafter.getPos().getY(), crafter.getPos().getZ(), ItemPattern.isProcessing(pattern), ItemPattern.getInputs(pattern), ItemPattern.getOutputs(pattern), ItemPattern.getByproducts(pattern)));
}
}
}
} }
wirelessGridHandler.setRange(range);
Collections.sort(storages, new Comparator<IStorage>() { Collections.sort(storages, new Comparator<IStorage>() {
@Override @Override
public int compare(IStorage left, IStorage right) { public int compare(IStorage left, IStorage right) {