|
|
@@ -86,56 +86,55 @@ public class EquipmentPanel extends JPanel {
|
|
|
private void updateModel(final DDEquipment equip) {
|
|
|
final Set<EquipmentSlot> manual = EnumSet.noneOf(EquipmentSlot.class);
|
|
|
equipment.removeAll();
|
|
|
- final DDItem armor = equip.get(BODY);
|
|
|
- if (armor != null && armor.getArmor().isPresent()) {
|
|
|
+ final Optional<DDItem> armor = equip.get(BODY);
|
|
|
+ armor.flatMap(DDItem::getArmor).ifPresent(a -> {
|
|
|
manual.add(BODY);
|
|
|
- createWithRightClickMenu(ArmorPanel::new, equip, BODY, BODY);
|
|
|
- }
|
|
|
+ createWithRightClickMenu(ArmorPanel::new, equip, armor.get(), BODY);
|
|
|
+ });
|
|
|
|
|
|
- final DDItem main = equip.get(MAIN_HAND);
|
|
|
- final DDItem off = equip.get(OFF_HAND);
|
|
|
+ final Optional<DDItem> main = equip.get(MAIN_HAND);
|
|
|
+ final Optional<DDItem> off = equip.get(OFF_HAND);
|
|
|
|
|
|
final Optional<Function<DDItem, JPanel>> makeMain = getEquipmentRightClickPanelFactory(main);
|
|
|
final Optional<Function<DDItem, JPanel>> makeOff = getEquipmentRightClickPanelFactory(off);
|
|
|
|
|
|
- if (main == off && !couldDualWieldThis(main)) {
|
|
|
+ if (main.equals(off) && !couldDualWieldThis(main)) {
|
|
|
makeMain.ifPresent(f -> {
|
|
|
manual.add(MAIN_HAND);
|
|
|
manual.add(OFF_HAND);
|
|
|
- createWithRightClickMenu(f, equip, TWO_HANDS, MAIN_HAND);
|
|
|
+ createWithRightClickMenu(f, equip, main.get(), TWO_HANDS);
|
|
|
});
|
|
|
} else {
|
|
|
makeMain.ifPresent(f -> {
|
|
|
manual.add(MAIN_HAND);
|
|
|
- createWithRightClickMenu(f, equip, MAIN_HAND, MAIN_HAND);
|
|
|
+ createWithRightClickMenu(f, equip, main.get(), MAIN_HAND);
|
|
|
});
|
|
|
makeOff.ifPresent(f -> {
|
|
|
manual.add(OFF_HAND);
|
|
|
- createWithRightClickMenu(f, equip, OFF_HAND, OFF_HAND);
|
|
|
+ createWithRightClickMenu(f, equip, off.get(), OFF_HAND);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- equip.keySet().stream().filter( slot -> equip.get(slot) != null && !manual.contains(slot) )
|
|
|
+ equip.keySet().stream().filter( slot -> !manual.contains(slot) )
|
|
|
.forEach( slot -> {
|
|
|
- createWithRightClickMenu(null, equip, slot, slot);
|
|
|
+ createWithRightClickMenu(null, equip, equip.get(slot).get(), slot);
|
|
|
});
|
|
|
repaint();
|
|
|
}
|
|
|
|
|
|
- private Optional<Function<DDItem, JPanel>> getEquipmentRightClickPanelFactory(final DDItem item) {
|
|
|
- if (item == null) { return Optional.empty(); }
|
|
|
- else if (item.getWeapon().isPresent()) { return Optional.of(WeaponPanel::new); }
|
|
|
- else if (item.getArmor().isPresent()) { return Optional.of(ShieldPanel::new); }
|
|
|
+ private Optional<Function<DDItem, JPanel>> getEquipmentRightClickPanelFactory(final Optional<DDItem> item) {
|
|
|
+ if (!item.isPresent()) { return Optional.empty(); }
|
|
|
+ else if (item.get().getWeapon().isPresent()) { return Optional.of(WeaponPanel::new); }
|
|
|
+ else if (item.get().getArmor().isPresent()) { return Optional.of(ShieldPanel::new); }
|
|
|
else { return Optional.empty(); }
|
|
|
}
|
|
|
|
|
|
- private boolean couldDualWieldThis(final DDItem item) {
|
|
|
- return item != null && item.getSlot() == EquipmentSlot.ONE_HAND && item.getCount().value() > 1;
|
|
|
+ private boolean couldDualWieldThis(final Optional<DDItem> item) {
|
|
|
+ return item.map(i -> i.getSlot() == EquipmentSlot.ONE_HAND && i.getCount().value() > 1).orElse(false);
|
|
|
}
|
|
|
|
|
|
private void createWithRightClickMenu(final Function<DDItem, JPanel> make,
|
|
|
- final DDEquipment equip, final EquipmentSlot slot, EquipmentSlot get) {
|
|
|
- final DDItem item = equip.get(get);
|
|
|
+ final DDEquipment equip, final DDItem item, final EquipmentSlot slot) {
|
|
|
final JPanel panel = make.apply(item);
|
|
|
equipment.add(panel);
|
|
|
panel.addMouseListener(new PopClickListener(
|