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();
/**
* Rebuilds the pattern list.
*/
void rebuildPatterns();
/**
* Returns crafting patterns from an item stack.
*

View File

@@ -30,13 +30,6 @@ public interface IWirelessGridHandler {
*/
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
*/

View File

@@ -9,9 +9,11 @@ import refinedstorage.RefinedStorageGui;
import refinedstorage.RefinedStorageItems;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.network.INetworkSlave;
import refinedstorage.api.network.IWirelessGridHandler;
import refinedstorage.api.network.WirelessGridConsumer;
import refinedstorage.item.ItemWirelessGrid;
import refinedstorage.tile.TileWirelessTransmitter;
import java.util.ArrayList;
import java.util.Iterator;
@@ -20,8 +22,6 @@ import java.util.List;
public class WirelessGridHandler implements IWirelessGridHandler {
private INetworkMaster network;
private int range;
private List<WirelessGridConsumer> consumers = 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) {
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;
}
@@ -75,12 +75,15 @@ public class WirelessGridHandler implements IWirelessGridHandler {
@Override
public int getRange() {
return range;
}
int range = 0;
@Override
public void setRange(int range) {
this.range = range;
for (INetworkSlave slave : network.getSlaves()) {
if (slave instanceof TileWirelessTransmitter) {
range += ((TileWirelessTransmitter) slave).getRange();
}
}
return range;
}
@Override

View File

@@ -27,7 +27,16 @@ public class TileCrafter extends TileSlave implements ICraftingPatternContainer
public boolean valid(ItemStack 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));

View File

@@ -43,7 +43,6 @@ import refinedstorage.network.MessageGridItems;
import refinedstorage.tile.ISynchronizedContainer;
import refinedstorage.tile.TileBase;
import refinedstorage.tile.TileCrafter;
import refinedstorage.tile.TileWirelessTransmitter;
import refinedstorage.tile.config.IRedstoneModeConfig;
import refinedstorage.tile.config.RedstoneMode;
@@ -344,12 +343,36 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
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() {
this.storages.clear();
this.patterns.clear();
int range = 0;
for (INetworkSlave slave : slaves) {
if (!slave.canUpdate()) {
continue;
@@ -358,26 +381,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
if (slave instanceof IStorageProvider) {
((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>() {
@Override
public int compare(IStorage left, IStorage right) {