Skip to content

Commit 80da73d

Browse files
Merge pull request #1820 from pavelbraginskiy/custom-armor-kit
Custom armor kit in Record Sheets
2 parents 9193bb4 + 89d4e6e commit 80da73d

File tree

2 files changed

+69
-29
lines changed

2 files changed

+69
-29
lines changed

megameklab/src/megameklab/printing/PrintInfantry.java

+19-14
Original file line numberDiff line numberDiff line change
@@ -403,21 +403,26 @@ protected void drawArmor() {
403403
EquipmentType armor = infantry.getArmorKit();
404404
if (armor != null) {
405405
setTextField(ARMOR_KIT, armor.getName());
406-
} else if (infantry.hasDEST()) {
407-
setTextField(ARMOR_KIT, "DEST");
408406
} else {
409-
StringJoiner sj = new StringJoiner("/");
410-
if (infantry.hasSneakCamo()) {
411-
sj.add("Camo");
412-
}
413-
if (infantry.hasSneakIR()) {
414-
sj.add("IR");
415-
}
416-
if (infantry.hasSneakECM()) {
417-
sj.add("ECM");
418-
}
419-
if (sj.length() > 0) {
420-
setTextField(ARMOR_KIT, "Sneak(" + sj + ")");
407+
408+
if (infantry.hasDEST()) {
409+
setTextField(ARMOR_KIT, "Custom DEST");
410+
} else {
411+
StringJoiner sj = new StringJoiner("/");
412+
if (infantry.hasSneakCamo()) {
413+
sj.add("Camo");
414+
}
415+
if (infantry.hasSneakIR()) {
416+
sj.add("IR");
417+
}
418+
if (infantry.hasSneakECM()) {
419+
sj.add("ECM");
420+
}
421+
if (sj.length() > 0) {
422+
setTextField(ARMOR_KIT, "Custom Sneak(" + sj + ")");
423+
} else if (infantry.getArmorDamageDivisor() != 1.0) {
424+
setTextField(ARMOR_KIT, "Custom");
425+
}
421426
}
422427
}
423428
setTextField(ARMOR_DIVISOR, infantry.calcDamageDivisor()

megameklab/src/megameklab/ui/infantry/CIArmorView.java

+50-15
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,28 @@
1515
*/
1616
package megameklab.ui.infantry;
1717

18+
import java.awt.BorderLayout;
19+
import java.awt.CardLayout;
20+
import java.awt.Color;
21+
import java.awt.Dimension;
22+
import java.awt.GridBagConstraints;
23+
import java.awt.GridBagLayout;
24+
import java.awt.Insets;
25+
import java.awt.event.ActionEvent;
26+
import java.awt.event.ActionListener;
27+
import java.util.ArrayList;
28+
import java.util.Enumeration;
29+
import javax.swing.*;
30+
import javax.swing.JSpinner.DefaultEditor;
31+
import javax.swing.event.ChangeEvent;
32+
import javax.swing.event.ChangeListener;
33+
import javax.swing.event.DocumentEvent;
34+
import javax.swing.event.DocumentListener;
35+
import javax.swing.event.ListSelectionEvent;
36+
import javax.swing.event.ListSelectionListener;
37+
import javax.swing.table.TableColumn;
38+
import javax.swing.table.TableRowSorter;
39+
1840
import megamek.client.ui.models.XTableColumnModel;
1941
import megamek.common.EquipmentType;
2042
import megamek.common.ITechManager;
@@ -26,17 +48,6 @@
2648
import megameklab.ui.util.RefreshListener;
2749
import megameklab.util.CConfig;
2850

29-
import javax.swing.*;
30-
import javax.swing.JSpinner.DefaultEditor;
31-
import javax.swing.event.*;
32-
import javax.swing.table.TableColumn;
33-
import javax.swing.table.TableRowSorter;
34-
import java.awt.*;
35-
import java.awt.event.ActionEvent;
36-
import java.awt.event.ActionListener;
37-
import java.util.ArrayList;
38-
import java.util.Enumeration;
39-
4051
public class CIArmorView extends IView implements ActionListener, ChangeListener {
4152
private RefreshListener refresh = null;
4253

@@ -64,6 +75,10 @@ public class CIArmorView extends IView implements ActionListener, ChangeListener
6475
JCheckBox chSneakIR = new JCheckBox();
6576
JCheckBox chSneakECM = new JCheckBox();
6677
private JSpinner armorValue = new JSpinner(new SpinnerNumberModel(1.0, 0.5, 3.0, 0.5));
78+
79+
private final JLabel lblSneakWarning = new JLabel("Warning: Setting both DEST and Sneak properties on custom armor " +
80+
"may cause issues in the display of the armor kit " +
81+
"information.");
6782

6883
public CIArmorView(EntitySource eSource, ITechManager techManager) {
6984
super(eSource);
@@ -255,11 +270,21 @@ private void setUpPanels() {
255270
chSneakECM.setText("Sneak (ECM)");
256271
gbc.gridx = 1;
257272
gbc.gridy = 3;
258-
gbc.weightx = 1.0;
259-
gbc.weighty = 1.0;
273+
gbc.weightx = 1;
274+
gbc.weighty = 0.01;
260275
customView.add(chSneakECM, gbc);
261276

262-
equipmentView.add(customView, CARD_CUSTOM);
277+
lblSneakWarning.setForeground(Color.RED);
278+
lblSneakWarning.setVisible(false);
279+
gbc.gridx = 0;
280+
gbc.gridy = 4;
281+
gbc.weightx = 0;
282+
gbc.weighty = 1;
283+
gbc.gridwidth = 2;
284+
customView.add(lblSneakWarning, gbc);
285+
286+
equipmentView.add(customView, CARD_CUSTOM);
287+
// equipmentView.add(lblSneakWarning);
263288
}
264289

265290
public JLabel createLabel(String text, Dimension maxSize) {
@@ -300,6 +325,16 @@ public void refresh() {
300325
chSneakIR.setEnabled(true);
301326
chSneakECM.setEnabled(true);
302327
}
328+
329+
if (getInfantry().hasDEST() && (
330+
getInfantry().hasSneakCamo() || getInfantry().hasSneakIR() || getInfantry().hasSneakECM()
331+
)) {
332+
lblSneakWarning.setVisible(true);
333+
} else {
334+
lblSneakWarning.setVisible(false);
335+
}
336+
337+
303338
filterEquipment();
304339
btnRemoveArmor.setEnabled(hasArmor());
305340
rbtnCustom.setEnabled(getInfantry().getArmorKit() == null);
@@ -489,4 +524,4 @@ public void valueChanged(ListSelectionEvent e) {
489524
btnSetArmor.setEnabled((null != etype) && eSource.getTechManager().isLegal(etype));
490525
}
491526
};
492-
}
527+
}

0 commit comments

Comments
 (0)