package advancedsystemsmanager.flow.menus;
import advancedsystemsmanager.flow.FlowComponent;
import advancedsystemsmanager.flow.elements.TextBoxNumber;
import advancedsystemsmanager.flow.elements.TextBoxNumberList;
import advancedsystemsmanager.client.gui.GuiManager;
import advancedsystemsmanager.helpers.LocalizationHelper;
import advancedsystemsmanager.network.ASMPacket;
import advancedsystemsmanager.reference.Names;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.StatCollector;
import java.util.List;
public class MenuTargetInventory extends MenuTarget
{
public static final String NBT_START = "StartRange";
public static final String NBT_END = "EndRange";
public TextBoxNumberList textBoxes;
public TextBoxNumber startTextBox;
public TextBoxNumber endTextBox;
public int[] startRange = new int[directions.length];
public int[] endRange = new int[directions.length];
public MenuTargetInventory(FlowComponent parent)
{
super(parent);
textBoxes = new TextBoxNumberList();
textBoxes.addTextBox(startTextBox = new TextBoxNumber(getParent(), 39, 49, 2, false)
{
@Override
public boolean writeData(ASMPacket packet)
{
packet.writeByte(selectedDirectionId);
packet.writeByte(number);
return true;
}
@Override
public boolean readData(ASMPacket packet)
{
startRange[packet.readByte()] = packet.readUnsignedByte();
return false;
}
});
textBoxes.addTextBox(endTextBox = new TextBoxNumber(getParent(), 60, 49, 2, false)
{
@Override
public boolean writeData(ASMPacket packet)
{
packet.writeByte(selectedDirectionId);
packet.writeByte(number);
return true;
}
@Override
public boolean readData(ASMPacket packet)
{
endRange[packet.readByte()] = packet.readUnsignedByte();
return false;
}
});
}
@Override
public Button getSecondButton()
{
return new Button(getParent(), 27)
{
@Override
public String getLabel()
{
return useAdvancedSetting(selectedDirectionId) ? Names.ALL_SLOTS : Names.ID_RANGE;
}
@Override
public boolean writeData(ASMPacket packet)
{
packet.writeByte(selectedDirectionId << 1 | (useAdvancedSetting(selectedDirectionId) ? 0 : 1));
advancedDirections[selectedDirectionId] = !advancedDirections[selectedDirectionId];
return true;
}
@Override
public boolean readData(ASMPacket packet)
{
int data = packet.readByte();
advancedDirections[data >> 1] = (data & 1) == 1;
return false;
}
};
}
@SideOnly(Side.CLIENT)
@Override
public void drawAdvancedComponent(GuiManager gui, int mX, int mY)
{
textBoxes.draw(gui, mX, mY);
}
@Override
public void copyAdvancedSetting(Menu menu, int i)
{
MenuTargetInventory menuTarget = (MenuTargetInventory)menu;
startRange[i] = menuTarget.startRange[i];
endRange[i] = menuTarget.endRange[i];
}
@Override
public void loadAdvancedComponent(NBTTagCompound directionTag, int i)
{
startRange[i] = directionTag.getByte(NBT_START);
endRange[i] = directionTag.getByte(NBT_END);
}
@Override
public void saveAdvancedComponent(NBTTagCompound directionTag, int i)
{
directionTag.setByte(NBT_START, (byte)getStart(i));
directionTag.setByte(NBT_END, (byte)getEnd(i));
}
public int getStart(int i)
{
return startRange[i];
}
public int getEnd(int i)
{
return endRange[i];
}
@Override
public void addErrors(List<String> errors)
{
for (int i = 0; i < directions.length; i++)
{
if (isActive(i) && getStart(i) > getEnd(i))
{
errors.add(StatCollector.translateToLocal(LocalizationHelper.getDirectionString(i)) + " " + StatCollector.translateToLocal(Names.INVALID_RANGE));
}
}
super.addErrors(errors);
}
@Override
public void refreshAdvancedComponent()
{
if (selectedDirectionId != -1)
{
startTextBox.setNumber(startRange[selectedDirectionId]);
endTextBox.setNumber(endRange[selectedDirectionId]);
}
}
@Override
public void onAdvancedClick(int mX, int mY, int button)
{
textBoxes.onClick(mX, mY, button);
}
@SideOnly(Side.CLIENT)
@Override
public boolean onKeyStroke(GuiManager gui, char c, int k)
{
return selectedDirectionId != -1 && useAdvancedSetting(selectedDirectionId) && textBoxes.onKeyStroke(gui, c, k);
}
}