Fixed wireless signal starting from Controller instead of per Wireless Transmitter individually, fixes #161

This commit is contained in:
Raoul Van den Berge
2016-07-06 12:01:03 +02:00
parent 683bdf02e2
commit 6feb3f2fec
9 changed files with 53 additions and 30 deletions

View File

@@ -30,11 +30,6 @@ public interface IWirelessGridHandler {
*/
void onClose(EntityPlayer player);
/**
* @return The range wireless grids in this network can reach
*/
int getRange();
/**
* Drains energy from the wireless grid of a player.
*

View File

@@ -0,0 +1,18 @@
package refinedstorage.api.network;
import net.minecraft.util.math.BlockPos;
/**
* Represents a node that can send a wireless signal.
*/
public interface IWirelessTransmitter {
/**
* @return The range in blocks of this transmitter, starting from {@link IWirelessTransmitter#getOrigin()}
*/
int getRange();
/**
* @return The position where the wireless signal starts
*/
BlockPos getOrigin();
}

View File

@@ -8,12 +8,8 @@ import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageGui;
import refinedstorage.RefinedStorageItems;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.network.INetworkNode;
import refinedstorage.api.network.IWirelessGridHandler;
import refinedstorage.api.network.WirelessGridConsumer;
import refinedstorage.api.network.*;
import refinedstorage.item.ItemWirelessGrid;
import refinedstorage.tile.TileWirelessTransmitter;
import java.util.ArrayList;
import java.util.Iterator;
@@ -54,9 +50,27 @@ public class WirelessGridHandler implements IWirelessGridHandler {
@Override
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));
boolean inRange = false;
if (distance > getRange()) {
for (INetworkNode node : network.getNodes()) {
if (node instanceof IWirelessTransmitter) {
IWirelessTransmitter transmitter = (IWirelessTransmitter) node;
int distance = (int) Math.sqrt(
Math.pow(transmitter.getOrigin().getX() - player.posX, 2) +
Math.pow(transmitter.getOrigin().getY() - player.posY, 2) +
Math.pow(transmitter.getOrigin().getZ() - player.posZ, 2)
);
if (distance < transmitter.getRange()) {
inRange = true;
break;
}
}
}
if (!inRange) {
return false;
}
@@ -80,19 +94,6 @@ public class WirelessGridHandler implements IWirelessGridHandler {
}
}
@Override
public int getRange() {
int range = 0;
for (INetworkNode node : network.getNodes()) {
if (node instanceof TileWirelessTransmitter) {
range += ((TileWirelessTransmitter) node).getRange();
}
}
return range;
}
@Override
public void drainEnergy(EntityPlayer player, int energy) {
WirelessGridConsumer consumer = getConsumer(player);

View File

@@ -3,18 +3,20 @@ package refinedstorage.tile;
import net.minecraft.inventory.Container;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler;
import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageItems;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.network.IWirelessTransmitter;
import refinedstorage.container.ContainerWirelessTransmitter;
import refinedstorage.inventory.BasicItemHandler;
import refinedstorage.inventory.BasicItemValidator;
import refinedstorage.item.ItemUpgrade;
public class TileWirelessTransmitter extends TileNode {
public class TileWirelessTransmitter extends TileNode implements IWirelessTransmitter {
private BasicItemHandler upgrades = new BasicItemHandler(4, this, new BasicItemValidator(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_RANGE));
@Override
@@ -42,10 +44,16 @@ public class TileWirelessTransmitter extends TileNode {
return tag;
}
@Override
public int getRange() {
return RefinedStorage.INSTANCE.wirelessTransmitterBaseRange + (RefinedStorageUtils.getUpgradeCount(upgrades, ItemUpgrade.TYPE_RANGE) * RefinedStorage.INSTANCE.wirelessTransmitterRangePerUpgrade);
}
@Override
public BlockPos getOrigin() {
return pos;
}
public BasicItemHandler getUpgrades() {
return upgrades;
}