From 64060833a5bd7ffb5a98e918ac17cfbbc52653a8 Mon Sep 17 00:00:00 2001 From: psikomonkie <189469115+psikomonkie@users.noreply.github.com> Date: Fri, 9 May 2025 13:45:18 -0400 Subject: [PATCH 1/8] Issue #6867: Initial Unit Tests --- .../mekhq/campaign/CampaignTest.java | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/MekHQ/unittests/mekhq/campaign/CampaignTest.java b/MekHQ/unittests/mekhq/campaign/CampaignTest.java index ff1bba2a869..f9938305f2d 100644 --- a/MekHQ/unittests/mekhq/campaign/CampaignTest.java +++ b/MekHQ/unittests/mekhq/campaign/CampaignTest.java @@ -55,12 +55,15 @@ import java.util.stream.Stream; import megamek.common.Dropship; +import megamek.common.Entity; import megamek.common.EquipmentType; import megamek.common.Mek; +import megamek.common.WeaponType; import megamek.common.enums.SkillLevel; import mekhq.campaign.enums.CampaignTransportType; import mekhq.campaign.parts.*; import mekhq.campaign.parts.equipment.AmmoBin; +import mekhq.campaign.parts.equipment.EquipmentPart; import mekhq.campaign.parts.equipment.HeatSink; import mekhq.campaign.parts.equipment.JumpJet; import mekhq.campaign.personnel.Person; @@ -410,6 +413,23 @@ public void testGetSetStockPercentEngines() { assertEquals(SECOND_DESIRED_STOCK, secondStockLevel); } + /* + @Test + public void testGetSetStockPercentWeapons() { + // Act + campaign.getCampaignOptions().setAutoLogisticsWeapons(FIRST_DESIRED_STOCK); + int firstStockLevel = campaign.getCampaignOptions().getAutoLogisticsWeapons(); + + // Let's change the stock level to something else so we can make sure it properly changes + campaign.getCampaignOptions().setAutoLogisticsWeapons(SECOND_DESIRED_STOCK); + int secondStockLevel = campaign.getCampaignOptions().getAutoLogisticsWeapons(); + + // Assert + assertEquals(FIRST_DESIRED_STOCK, firstStockLevel); + assertEquals(SECOND_DESIRED_STOCK, secondStockLevel); + } + */ + @Test public void testGetSetStockPercentOther() { // Act @@ -813,6 +833,37 @@ public void testGetDefaultStockPercentEngines() { assertEquals(1, afterChangeAllPercents.stream().filter(i -> i == DESIRED_STOCK_LEVEL).toArray().length); } + @Test + public void testGetDefaultStockPercentWeapons() { + // Arrange + WeaponType mockWeaponType = mock(WeaponType.class); + part = new EquipmentPart(1, mockWeaponType, Entity.LOC_NONE, 1.0, false, campaign); + + // Act + try { + initialStockPercent = (int) method.invoke(campaign, part); + initialAllPercents = getAllDefaultStockPercents(); + + // Let's change it and make sure that it uses the new value + when(mockCampaignOptions.getAutoLogisticsOther()).thenReturn(DESIRED_STOCK_LEVEL); //TODO + + desiredStockPercent = (int) method.invoke(campaign, part); + afterChangeAllPercents = getAllDefaultStockPercents(); + } catch (IllegalAccessException | InvocationTargetException e) { + throw new RuntimeException(e); + } + + // Assert + assertEquals(INCORRECT_STOCK_LEVEL, initialStockPercent); + assertEquals(DESIRED_STOCK_LEVEL, desiredStockPercent); + + // None of the initial defaults should contain the desired stock percent + assertFalse(initialAllPercents.contains(desiredStockPercent)); + + // Only one of these should be the desired stock percent + assertEquals(1, afterChangeAllPercents.stream().filter(i -> i == DESIRED_STOCK_LEVEL).toArray().length); + } + @ParameterizedTest @MethodSource(value = "otherUnhandledDefaultStockPercentParts") public void testGetDefaultStockPercentOtherUnhandled(Part otherPart) { From d7a3032bda33f839979f305c3da3ef85c4dfd443 Mon Sep 17 00:00:00 2001 From: psikomonkie <189469115+psikomonkie@users.noreply.github.com> Date: Fri, 9 May 2025 13:50:30 -0400 Subject: [PATCH 2/8] Issue #6867: Auto Logistics Weapons Campaign Option & Unit Test --- MekHQ/src/mekhq/campaign/CampaignOptions.java | 13 +++++++++++++ MekHQ/unittests/mekhq/campaign/CampaignTest.java | 3 +-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/MekHQ/src/mekhq/campaign/CampaignOptions.java b/MekHQ/src/mekhq/campaign/CampaignOptions.java index 50bbf5cddef..70b7d7fe226 100644 --- a/MekHQ/src/mekhq/campaign/CampaignOptions.java +++ b/MekHQ/src/mekhq/campaign/CampaignOptions.java @@ -183,6 +183,7 @@ public static String getTechLevelName(final int techLevel) { private int autoLogisticsActuators; private int autoLogisticsJumpJets; private int autoLogisticsEngines; + private int autoLogisticsWeapons; private int autoLogisticsOther; // Delivery @@ -711,6 +712,7 @@ public CampaignOptions() { autoLogisticsActuators = 100; autoLogisticsJumpJets = 50; autoLogisticsEngines = 0; + autoLogisticsWeapons = 50; autoLogisticsOther = 0; // Delivery @@ -4394,6 +4396,14 @@ public void setAutoLogisticsEngines(int autoLogisticsEngines) { this.autoLogisticsEngines = autoLogisticsEngines; } + public int getAutoLogisticsWeapons() { + return autoLogisticsWeapons; + } + + public void setAutoLogisticsWeapons(int autoLogisticsWeapons) { + this.autoLogisticsWeapons = autoLogisticsWeapons; + } + public int getAutoLogisticsOther() { return autoLogisticsOther; } @@ -4950,6 +4960,7 @@ public void writeToXml(final PrintWriter pw, int indent) { MHQXMLUtility.writeSimpleXMLTag(pw, indent, "autoLogisticsActuators", autoLogisticsActuators); MHQXMLUtility.writeSimpleXMLTag(pw, indent, "autoLogisticsJumpJets", autoLogisticsJumpJets); MHQXMLUtility.writeSimpleXMLTag(pw, indent, "autoLogisticsEngines", autoLogisticsEngines); + MHQXMLUtility.writeSimpleXMLTag(pw, indent, "autoLogisticsWeapons", autoLogisticsWeapons); MHQXMLUtility.writeSimpleXMLTag(pw, indent, "autoLogisticsOther", autoLogisticsOther); // region Personnel Tab @@ -5706,6 +5717,8 @@ public static CampaignOptions generateCampaignOptionsFromXml(Node wn, Version ve retVal.autoLogisticsJumpJets = Integer.parseInt(wn2.getTextContent().trim()); } else if (nodeName.equalsIgnoreCase("autoLogisticsEngines")) { retVal.autoLogisticsEngines = Integer.parseInt(wn2.getTextContent().trim()); + } else if (nodeName.equalsIgnoreCase("autoLogisticsWeapons")) { + retVal.autoLogisticsWeapons = Integer.parseInt(wn2.getTextContent().trim()); } else if (nodeName.equalsIgnoreCase("autoLogisticsOther")) { retVal.autoLogisticsOther = Integer.parseInt(wn2.getTextContent().trim()); diff --git a/MekHQ/unittests/mekhq/campaign/CampaignTest.java b/MekHQ/unittests/mekhq/campaign/CampaignTest.java index f9938305f2d..69ced4fc55f 100644 --- a/MekHQ/unittests/mekhq/campaign/CampaignTest.java +++ b/MekHQ/unittests/mekhq/campaign/CampaignTest.java @@ -413,7 +413,6 @@ public void testGetSetStockPercentEngines() { assertEquals(SECOND_DESIRED_STOCK, secondStockLevel); } - /* @Test public void testGetSetStockPercentWeapons() { // Act @@ -428,7 +427,6 @@ public void testGetSetStockPercentWeapons() { assertEquals(FIRST_DESIRED_STOCK, firstStockLevel); assertEquals(SECOND_DESIRED_STOCK, secondStockLevel); } - */ @Test public void testGetSetStockPercentOther() { @@ -499,6 +497,7 @@ void beforeEach() { when(mockCampaignOptions.getAutoLogisticsActuators()).thenReturn(INCORRECT_STOCK_LEVEL); when(mockCampaignOptions.getAutoLogisticsJumpJets()).thenReturn(INCORRECT_STOCK_LEVEL); when(mockCampaignOptions.getAutoLogisticsEngines()).thenReturn(INCORRECT_STOCK_LEVEL); + when(mockCampaignOptions.getAutoLogisticsWeapons()).thenReturn(INCORRECT_STOCK_LEVEL); when(mockCampaignOptions.getAutoLogisticsOther()).thenReturn(INCORRECT_STOCK_LEVEL); } From 0e266b69407c3bb0121c5e37feccce82468b8097 Mon Sep 17 00:00:00 2001 From: psikomonkie <189469115+psikomonkie@users.noreply.github.com> Date: Fri, 9 May 2025 14:09:00 -0400 Subject: [PATCH 3/8] Issue #6867: Added to Campaign Options --- .../CampaignOptionsDialog.properties | 3 + MekHQ/src/mekhq/campaign/Campaign.java | 4 + MekHQ/src/mekhq/gui/CampaignGUI.java | 4 +- .../contents/EquipmentAndSuppliesTab.java | 79 ++++++------------- 4 files changed, 34 insertions(+), 56 deletions(-) diff --git a/MekHQ/resources/mekhq/resources/CampaignOptionsDialog.properties b/MekHQ/resources/mekhq/resources/CampaignOptionsDialog.properties index b6c67a68c2f..473b335c4b3 100644 --- a/MekHQ/resources/mekhq/resources/CampaignOptionsDialog.properties +++ b/MekHQ/resources/mekhq/resources/CampaignOptionsDialog.properties @@ -257,6 +257,9 @@ lblAutoLogisticsJumpJets.tooltip=autoLogistics counts the number of jump jets in lblAutoLogisticsEngines.text=Engine Restock Percent lblAutoLogisticsEngines.tooltip=autoLogistics counts the number of engines in use and then\ \ automatically orders replacement spares equal to the percentage set in this option. +lblAutoLogisticsWeapons.text=Weapon Restock Percent +lblAutoLogisticsWeapons.tooltip=autoLogistics counts the number of weapons in use and then\ + \ automatically orders replacement spares equal to the percentage set in this option. lblAutoLogisticsOther.text=Other Restock Percent lblAutoLogisticsOther.tooltip=autoLogistics counts each part in use, that is not covered by one of\ \ the other options, and automatically orders replacement spares equal to the percentage set in\ diff --git a/MekHQ/src/mekhq/campaign/Campaign.java b/MekHQ/src/mekhq/campaign/Campaign.java index c0994e8b617..c084f7036f8 100644 --- a/MekHQ/src/mekhq/campaign/Campaign.java +++ b/MekHQ/src/mekhq/campaign/Campaign.java @@ -2800,6 +2800,10 @@ private int getDefaultStockPercent(Part part) { return campaignOptions.getAutoLogisticsJumpJets(); } else if (part instanceof EnginePart) { return campaignOptions.getAutoLogisticsEngines(); + } else if (part instanceof EquipmentPart equipmentPart) { + if (equipmentPart.getType() instanceof WeaponType) { + return campaignOptions.getAutoLogisticsWeapons(); + } } return campaignOptions.getAutoLogisticsOther(); diff --git a/MekHQ/src/mekhq/gui/CampaignGUI.java b/MekHQ/src/mekhq/gui/CampaignGUI.java index 7fcb0b94f0c..01f23476399 100644 --- a/MekHQ/src/mekhq/gui/CampaignGUI.java +++ b/MekHQ/src/mekhq/gui/CampaignGUI.java @@ -50,8 +50,8 @@ import java.nio.charset.StandardCharsets; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.*; import java.util.List; +import java.util.*; import java.util.stream.IntStream; import java.util.zip.GZIPOutputStream; import javax.swing.*; @@ -2415,7 +2415,7 @@ public void checkDailyLogNag() { public void refreshAllTabs() { for (int i = 0; i < tabMain.getTabCount(); i++) { - ((CampaignGuiTab) tabMain.getComponentAt(i)).refreshAll(); + ((CampaignGuiTab) tabMain.getComponentAt(i)).refreshAll(); //TODO } } diff --git a/MekHQ/src/mekhq/gui/campaignOptions/contents/EquipmentAndSuppliesTab.java b/MekHQ/src/mekhq/gui/campaignOptions/contents/EquipmentAndSuppliesTab.java index d086fc65d61..607612fb4a5 100644 --- a/MekHQ/src/mekhq/gui/campaignOptions/contents/EquipmentAndSuppliesTab.java +++ b/MekHQ/src/mekhq/gui/campaignOptions/contents/EquipmentAndSuppliesTab.java @@ -106,6 +106,8 @@ public class EquipmentAndSuppliesTab { private JPanel pnlAutoLogistics; private JLabel lblAutoLogisticsHeatSink; private JSpinner spnAutoLogisticsHeatSink; + private JLabel lblAutoLogisticsWeapons; + private JSpinner spnAutoLogisticsWeapons; private JLabel lblAutoLogisticsMekHead; private JSpinner spnAutoLogisticsMekHead; private JLabel lblAutoLogisticsMekLocation; @@ -297,6 +299,8 @@ private void initializeAutoLogisticsTab() { pnlAutoLogistics = new JPanel(); lblAutoLogisticsHeatSink = new JLabel(); spnAutoLogisticsHeatSink = new JSpinner(); + lblAutoLogisticsWeapons = new JLabel(); + spnAutoLogisticsWeapons = new JSpinner(); lblAutoLogisticsMekHead = new JLabel(); spnAutoLogisticsMekHead = new JSpinner(); lblAutoLogisticsMekLocation = new JLabel(); @@ -486,6 +490,9 @@ private JPanel createAutoLogisticsPanel() { lblAutoLogisticsHeatSink = new CampaignOptionsLabel("AutoLogisticsHeatSink"); spnAutoLogisticsHeatSink = new CampaignOptionsSpinner("AutoLogisticsHeatSink", 250, 0, 10000, 1); + lblAutoLogisticsWeapons = new CampaignOptionsLabel("AutoLogisticsWeapons"); + spnAutoLogisticsWeapons = new CampaignOptionsSpinner("AutoLogisticsWeapons", + 50, 0, 10000, 1); lblAutoLogisticsActuators = new CampaignOptionsLabel("AutoLogisticsActuators"); spnAutoLogisticsActuators = new CampaignOptionsSpinner("AutoLogisticsActuators", @@ -511,65 +518,27 @@ private JPanel createAutoLogisticsPanel() { layout.gridy = 0; layout.gridx = 0; layout.gridwidth = 1; - panel.add(lblAutoLogisticsMekHead, layout); - layout.gridx++; - panel.add(spnAutoLogisticsMekHead, layout); - - layout.gridx = 0; - layout.gridy++; - panel.add(lblAutoLogisticsMekLocation, layout); - layout.gridx++; - panel.add(spnAutoLogisticsMekLocation, layout); - - layout.gridx = 0; - layout.gridy++; - panel.add(lblAutoLogisticsNonRepairableLocation, layout); - layout.gridx++; - panel.add(spnAutoLogisticsNonRepairableLocation, layout); - - layout.gridx = 0; - layout.gridy++; - panel.add(lblAutoLogisticsHeatSink, layout); - layout.gridx++; - panel.add(spnAutoLogisticsHeatSink, layout); - - layout.gridx = 0; - layout.gridy++; - panel.add(lblAutoLogisticsArmor, layout); - layout.gridx++; - panel.add(spnAutoLogisticsArmor, layout); - - layout.gridx = 0; - layout.gridy++; - panel.add(lblAutoLogisticsAmmunition, layout); - layout.gridx++; - panel.add(spnAutoLogisticsAmmunition, layout); + addSpinnerToPanel(panel, layout, lblAutoLogisticsMekHead, spnAutoLogisticsMekHead); + addSpinnerToPanel(panel, layout, lblAutoLogisticsMekLocation, spnAutoLogisticsMekLocation); + addSpinnerToPanel(panel, layout, lblAutoLogisticsNonRepairableLocation, spnAutoLogisticsNonRepairableLocation); + addSpinnerToPanel(panel, layout, lblAutoLogisticsHeatSink, spnAutoLogisticsHeatSink); + addSpinnerToPanel(panel, layout, lblAutoLogisticsArmor, spnAutoLogisticsArmor); + addSpinnerToPanel(panel, layout, lblAutoLogisticsAmmunition, spnAutoLogisticsAmmunition); + addSpinnerToPanel(panel, layout, lblAutoLogisticsActuators, spnAutoLogisticsActuators); + addSpinnerToPanel(panel, layout, lblAutoLogisticsJumpJets, spnAutoLogisticsJumpJets); + addSpinnerToPanel(panel, layout, lblAutoLogisticsEngines, spnAutoLogisticsEngines); + addSpinnerToPanel(panel, layout, lblAutoLogisticsWeapons, spnAutoLogisticsWeapons); + addSpinnerToPanel(panel, layout, lblAutoLogisticsOther, spnAutoLogisticsOther); - layout.gridx = 0; - layout.gridy++; - panel.add(lblAutoLogisticsActuators, layout); - layout.gridx++; - panel.add(spnAutoLogisticsActuators, layout); - - layout.gridx = 0; - layout.gridy++; - panel.add(lblAutoLogisticsJumpJets, layout); - layout.gridx++; - panel.add(spnAutoLogisticsJumpJets, layout); + return panel; + } - layout.gridx = 0; + private void addSpinnerToPanel(JPanel panel, GridBagConstraints layout, JLabel label, JSpinner spinner) { layout.gridy++; - panel.add(lblAutoLogisticsEngines, layout); + panel.add(label, layout); layout.gridx++; - panel.add(spnAutoLogisticsEngines, layout); - + panel.add(spinner, layout); layout.gridx = 0; - layout.gridy++; - panel.add(lblAutoLogisticsOther, layout); - layout.gridx++; - panel.add(spnAutoLogisticsOther, layout); - - return panel; } /** @@ -1113,6 +1082,7 @@ public void applyCampaignOptionsToCampaign(@Nullable CampaignOptions presetCampa options.setAutoLogisticsJumpJets((int) spnAutoLogisticsJumpJets.getValue()); options.setAutoLogisticsEngines((int) spnAutoLogisticsEngines.getValue()); options.setAutoLogisticsHeatSink((int) spnAutoLogisticsHeatSink.getValue()); + options.setAutoLogisticsWeapons((int) spnAutoLogisticsWeapons.getValue()); options.setAutoLogisticsOther((int) spnAutoLogisticsOther.getValue()); // Delivery @@ -1189,6 +1159,7 @@ public void loadValuesFromCampaignOptions(@Nullable CampaignOptions presetCampai spnAutoLogisticsJumpJets.setValue(options.getAutoLogisticsJumpJets()); spnAutoLogisticsEngines.setValue(options.getAutoLogisticsEngines()); spnAutoLogisticsHeatSink.setValue(options.getAutoLogisticsHeatSink()); + spnAutoLogisticsWeapons.setValue(options.getAutoLogisticsWeapons()); spnAutoLogisticsOther.setValue(options.getAutoLogisticsOther()); // Delivery From 14828817bddae82a33d064a04f14fcbe72587571 Mon Sep 17 00:00:00 2001 From: psikomonkie <189469115+psikomonkie@users.noreply.github.com> Date: Fri, 9 May 2025 14:10:47 -0400 Subject: [PATCH 4/8] Issue #6867: Fixed Unit Test --- MekHQ/unittests/mekhq/campaign/CampaignTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MekHQ/unittests/mekhq/campaign/CampaignTest.java b/MekHQ/unittests/mekhq/campaign/CampaignTest.java index 69ced4fc55f..cb1156e503c 100644 --- a/MekHQ/unittests/mekhq/campaign/CampaignTest.java +++ b/MekHQ/unittests/mekhq/campaign/CampaignTest.java @@ -844,7 +844,7 @@ public void testGetDefaultStockPercentWeapons() { initialAllPercents = getAllDefaultStockPercents(); // Let's change it and make sure that it uses the new value - when(mockCampaignOptions.getAutoLogisticsOther()).thenReturn(DESIRED_STOCK_LEVEL); //TODO + when(mockCampaignOptions.getAutoLogisticsWeapons()).thenReturn(DESIRED_STOCK_LEVEL); //TODO desiredStockPercent = (int) method.invoke(campaign, part); afterChangeAllPercents = getAllDefaultStockPercents(); From fcc1b4ecba7a00218231e81f8e8a7d0985fb19ea Mon Sep 17 00:00:00 2001 From: psikomonkie <189469115+psikomonkie@users.noreply.github.com> Date: Fri, 9 May 2025 14:12:28 -0400 Subject: [PATCH 5/8] Revert Accidental Commit --- MekHQ/src/mekhq/gui/CampaignGUI.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MekHQ/src/mekhq/gui/CampaignGUI.java b/MekHQ/src/mekhq/gui/CampaignGUI.java index 01f23476399..cbe9ee98ef6 100644 --- a/MekHQ/src/mekhq/gui/CampaignGUI.java +++ b/MekHQ/src/mekhq/gui/CampaignGUI.java @@ -2415,7 +2415,7 @@ public void checkDailyLogNag() { public void refreshAllTabs() { for (int i = 0; i < tabMain.getTabCount(); i++) { - ((CampaignGuiTab) tabMain.getComponentAt(i)).refreshAll(); //TODO + ((CampaignGuiTab) tabMain.getComponentAt(i)).refreshAll(); } } From 6a55a25210d40c947ecb0d50d703ca89b32fb535 Mon Sep 17 00:00:00 2001 From: psikomonkie <189469115+psikomonkie@users.noreply.github.com> Date: Fri, 9 May 2025 14:16:20 -0400 Subject: [PATCH 6/8] Revert Accidental Commit --- MekHQ/src/mekhq/gui/CampaignGUI.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MekHQ/src/mekhq/gui/CampaignGUI.java b/MekHQ/src/mekhq/gui/CampaignGUI.java index cbe9ee98ef6..7fcb0b94f0c 100644 --- a/MekHQ/src/mekhq/gui/CampaignGUI.java +++ b/MekHQ/src/mekhq/gui/CampaignGUI.java @@ -50,8 +50,8 @@ import java.nio.charset.StandardCharsets; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.List; import java.util.*; +import java.util.List; import java.util.stream.IntStream; import java.util.zip.GZIPOutputStream; import javax.swing.*; From 337885d95e295e60b385e7f583ddd53865396a91 Mon Sep 17 00:00:00 2001 From: psikomonkie <189469115+psikomonkie@users.noreply.github.com> Date: Sat, 10 May 2025 13:30:52 -0400 Subject: [PATCH 7/8] Issue #6867: Use `MathUtlity` instead of `Integer` to parse a string into an int --- MekHQ/src/mekhq/campaign/CampaignOptions.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MekHQ/src/mekhq/campaign/CampaignOptions.java b/MekHQ/src/mekhq/campaign/CampaignOptions.java index 70b7d7fe226..48ce4774bf8 100644 --- a/MekHQ/src/mekhq/campaign/CampaignOptions.java +++ b/MekHQ/src/mekhq/campaign/CampaignOptions.java @@ -5718,7 +5718,7 @@ public static CampaignOptions generateCampaignOptionsFromXml(Node wn, Version ve } else if (nodeName.equalsIgnoreCase("autoLogisticsEngines")) { retVal.autoLogisticsEngines = Integer.parseInt(wn2.getTextContent().trim()); } else if (nodeName.equalsIgnoreCase("autoLogisticsWeapons")) { - retVal.autoLogisticsWeapons = Integer.parseInt(wn2.getTextContent().trim()); + retVal.autoLogisticsWeapons = MathUtility.parseInt(wn2.getTextContent().trim()); } else if (nodeName.equalsIgnoreCase("autoLogisticsOther")) { retVal.autoLogisticsOther = Integer.parseInt(wn2.getTextContent().trim()); From e289ca7faccd5cbae02afd241d19013ea0159481 Mon Sep 17 00:00:00 2001 From: psikomonkie <189469115+psikomonkie@users.noreply.github.com> Date: Sat, 10 May 2025 13:34:27 -0400 Subject: [PATCH 8/8] PR #6943: Use `MathUtlity` instead of `Integer` to parse a string into an int for all autologistics options --- MekHQ/src/mekhq/campaign/CampaignOptions.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/MekHQ/src/mekhq/campaign/CampaignOptions.java b/MekHQ/src/mekhq/campaign/CampaignOptions.java index 48ce4774bf8..c7d3826732f 100644 --- a/MekHQ/src/mekhq/campaign/CampaignOptions.java +++ b/MekHQ/src/mekhq/campaign/CampaignOptions.java @@ -5700,27 +5700,27 @@ public static CampaignOptions generateCampaignOptionsFromXml(Node wn, Version ve // autoLogistics } else if (nodeName.equalsIgnoreCase("autoLogisticsHeatSink")) { - retVal.autoLogisticsHeatSink = Integer.parseInt(wn2.getTextContent().trim()); + retVal.autoLogisticsHeatSink = MathUtility.parseInt(wn2.getTextContent().trim()); } else if (nodeName.equalsIgnoreCase("autoLogisticsMekHead")) { - retVal.autoLogisticsMekHead = Integer.parseInt(wn2.getTextContent().trim()); + retVal.autoLogisticsMekHead = MathUtility.parseInt(wn2.getTextContent().trim()); } else if (nodeName.equalsIgnoreCase("autoLogisticsMekLocation")) { - retVal.autoLogisticsMekLocation = Integer.parseInt(wn2.getTextContent().trim()); + retVal.autoLogisticsMekLocation = MathUtility.parseInt(wn2.getTextContent().trim()); } else if (nodeName.equalsIgnoreCase("autoLogisticsNonRepairableLocation")) { - retVal.autoLogisticsNonRepairableLocation = Integer.parseInt(wn2.getTextContent().trim()); + retVal.autoLogisticsNonRepairableLocation = MathUtility.parseInt(wn2.getTextContent().trim()); } else if (nodeName.equalsIgnoreCase("autoLogisticsArmor")) { - retVal.autoLogisticsArmor = Integer.parseInt(wn2.getTextContent().trim()); + retVal.autoLogisticsArmor = MathUtility.parseInt(wn2.getTextContent().trim()); } else if (nodeName.equalsIgnoreCase("autoLogisticsAmmunition")) { - retVal.autoLogisticsAmmunition = Integer.parseInt(wn2.getTextContent().trim()); + retVal.autoLogisticsAmmunition = MathUtility.parseInt(wn2.getTextContent().trim()); } else if (nodeName.equalsIgnoreCase("autoLogisticsActuators")) { - retVal.autoLogisticsActuators = Integer.parseInt(wn2.getTextContent().trim()); + retVal.autoLogisticsActuators = MathUtility.parseInt(wn2.getTextContent().trim()); } else if (nodeName.equalsIgnoreCase("autoLogisticsJumpJets")) { - retVal.autoLogisticsJumpJets = Integer.parseInt(wn2.getTextContent().trim()); + retVal.autoLogisticsJumpJets = MathUtility.parseInt(wn2.getTextContent().trim()); } else if (nodeName.equalsIgnoreCase("autoLogisticsEngines")) { - retVal.autoLogisticsEngines = Integer.parseInt(wn2.getTextContent().trim()); + retVal.autoLogisticsEngines = MathUtility.parseInt(wn2.getTextContent().trim()); } else if (nodeName.equalsIgnoreCase("autoLogisticsWeapons")) { retVal.autoLogisticsWeapons = MathUtility.parseInt(wn2.getTextContent().trim()); } else if (nodeName.equalsIgnoreCase("autoLogisticsOther")) { - retVal.autoLogisticsOther = Integer.parseInt(wn2.getTextContent().trim()); + retVal.autoLogisticsOther = MathUtility.parseInt(wn2.getTextContent().trim()); // region Personnel Tab // region General Personnel