package mods.eln.sixnode.wirelesssignal;
import mods.eln.generic.GenericItemUsingDamageDescriptor;
import mods.eln.misc.Coordonate;
import mods.eln.misc.Direction;
import mods.eln.misc.Utils;
import mods.eln.sixnode.wirelesssignal.WirelessUtils.WirelessSignalSpot;
import mods.eln.sixnode.wirelesssignal.aggregator.BiggerAggregator;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map.Entry;
public class WirelessSignalAnalyserItemDescriptor extends GenericItemUsingDamageDescriptor {
public WirelessSignalAnalyserItemDescriptor(String name) {
super(name);
}
@Override
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float vx, float vy, float vz) {
if (world.isRemote) return true;
Utils.addChatMessage(player, "-------------------");
Direction dir = Direction.fromIntMinecraftSide(side);
Coordonate c = new Coordonate(x, y, z, world);
c.move(dir);
WirelessSignalSpot spot = WirelessUtils.buildSpot(c, null, 0);
HashMap<String, HashSet<IWirelessSignalTx>> txSet = new HashMap<String, HashSet<IWirelessSignalTx>>();
HashMap<IWirelessSignalTx, Double> txStrength = new HashMap<IWirelessSignalTx, Double>();
WirelessUtils.getTx(spot, txSet, txStrength);
BiggerAggregator aggregator = new BiggerAggregator();
for (Entry<String, HashSet<IWirelessSignalTx>> entrySet : txSet.entrySet()) {
HashSet<IWirelessSignalTx> set = entrySet.getValue();
double strength = 100000;
for (IWirelessSignalTx oneTx : set) {
double temp = txStrength.get(oneTx);
if (temp < strength) strength = temp;
}
Utils.addChatMessage(player, entrySet.getKey() + " Strength=" + String.format("%2.1f", strength) + " Value=" + String.format("%3.0f", aggregator.aggregate(set) * 100) + "%");
}
if (txSet.isEmpty()) {
Utils.addChatMessage(player, "No wireless signal in area!");
}
/*ArrayList<WirelessSignalInfo> list = WirelessSignalRxProcess.getTxList(c);
int idx = 0;
for (WirelessSignalInfo e : list) {
Utils.addChatMessage(player, e.tx.getChannel() + " Strength=" + String.format("%2.1f", e.power) + " Value=" + String.format("%2.1fV", e.tx.getValue() * Eln.instance.SVU));
idx++;
}
if (list.size() == 0) {
Utils.addChatMessage(player, "No wireless signal in area!");
}*/
return true;
}
}