|
|
@@ -16,10 +16,12 @@ import lombok.AccessLevel;
|
|
|
import lombok.experimental.FieldDefaults;
|
|
|
|
|
|
import java.awt.Color;
|
|
|
+import java.awt.Component;
|
|
|
import java.awt.Font;
|
|
|
import java.awt.GridBagConstraints;
|
|
|
import java.awt.GridBagLayout;
|
|
|
import java.awt.Insets;
|
|
|
+import java.util.function.Consumer;
|
|
|
|
|
|
@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
|
public class EquipmentPanel extends JPanel {
|
|
|
@@ -68,20 +70,30 @@ public class EquipmentPanel extends JPanel {
|
|
|
|
|
|
final DDItem armor = inv.getEquipment().get(EquipmentSlot.BODY);
|
|
|
if ( armor != null ) {
|
|
|
- equipment.add(new ArmorPanel(armor));
|
|
|
+ equipment.add(new ArmorPanel(armor, makeUnequipAction(inv, EquipmentSlot.BODY)));
|
|
|
}
|
|
|
|
|
|
final DDItem main = inv.getEquipment().get(EquipmentSlot.MAIN_HAND);
|
|
|
final DDItem off = inv.getEquipment().get(EquipmentSlot.OFF_HAND);
|
|
|
if ( off != null && off.isArmor() ) {
|
|
|
- equipment.add(new ShieldPanel(off));
|
|
|
+ equipment.add(new ShieldPanel(off, makeUnequipAction(inv, EquipmentSlot.MAIN_HAND)));
|
|
|
}
|
|
|
if ( main != null ) {
|
|
|
- equipment.add(new WeaponPanel(main));
|
|
|
+ equipment.add(new WeaponPanel(main, makeUnequipAction(inv, EquipmentSlot.OFF_HAND)));
|
|
|
}
|
|
|
- if ( off != null && ( off != main || ( off.getSlot() == EquipmentSlot.ONE_HAND && off.getCount().value() > 1 ) ) ) {
|
|
|
- equipment.add(new WeaponPanel(off));
|
|
|
+ if ( off != null && ( off != main || couldDualWieldThis(off) ) ) {
|
|
|
+ equipment.add(new WeaponPanel(off, makeUnequipAction(inv, EquipmentSlot.OFF_HAND)));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private boolean couldDualWieldThis(final DDItem item) {
|
|
|
+ return item.getSlot() == EquipmentSlot.ONE_HAND && item.getCount().value() > 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Consumer<Component> makeUnequipAction(final DDInventory inv, final EquipmentSlot slot) {
|
|
|
+ return (comp) -> {
|
|
|
+ comp.getParent().remove(comp);
|
|
|
+ inv.unequip(slot);
|
|
|
+ };
|
|
|
+ }
|
|
|
}
|