package part_readers; import javax.swing.*; import com.jds.jn.parser.datatree.ValuePart; import com.jds.jn.parser.datatree.VisualValuePart; import com.jds.jn.parser.valuereader.ValueReader; /** * Author: VISTALL * Company: J Develop Station * Date: 19.10.2009 * Time: 18:18:42 */ public class AionItemSlotReader implements ValueReader { public String read(ValuePart part) { if(!(part instanceof VisualValuePart)) return ""; int result = ((VisualValuePart)part).getValueAsInt(); return "Slot: " + ItemSlots.getById(getMask(result)); } public JComponent readToComponent(ValuePart part) { return new JLabel(read(part)); } public int getMask(int num) { for (int i = 0; i < 32; i++) { if ((num & (1 << i))== (1 << i)) { return i; } } return -1; } public static enum ItemSlots { NONE(-1), MAIN_HAND(0), OFF_HAND(1), HELMET(2), CHEST(3), GLOVES(4), BOOTS(5), EARRING_LEFT(6), EARRING_RIGHT(7), RING_LEFT(8), RING_RIGHT(9), NECKLACE(10), SHOULDER(11), //плече LEGS(12), POWER_SHARD_RIGHT(13), POWER_SHARD_LEFT(14), WINGS(15), BELT(16), //0x00010000 SECONDARY_MAIN_HAND(17), SECONDARY_OFF_HAND(18); private final int _slotId; private final byte _id; ItemSlots(int st) { _slotId = 1 << st; _id = (byte) st; } public int getMask() { return _slotId; } public byte getId() { return _id; } public static ItemSlots getById(int id) { for (ItemSlots e : ItemSlots.values()) { if (e.getId() == id) { return e; } } return NONE; } } }