Skip to content

Commit 7c140e1

Browse files
authored
Merge pull request #4153 from IllianiCBT/fontColor_ReplaceRed
Added Font Color Options to MHQ Options for Negative, Positive, and Warning Events
2 parents e6d9ae8 + 287555f commit 7c140e1

21 files changed

+153
-65
lines changed

MekHQ/resources/mekhq/resources/GUI.properties

+4
Original file line numberDiff line numberDiff line change
@@ -646,6 +646,10 @@ optionPregnantBackground.text=Pregnant Background
646646
optionPaidRetirementForeground.text=Paid Retirement Foreground
647647
optionPaidRetirementBackground.text=Paid Retirement Background
648648
optionStratConHexCoordForeground.text=StratCon Hex Coordinate Foreground
649+
optionFontColorNegative.text=Font Color Negative Event
650+
optionFontColorWarning.text=Font Color Warning
651+
optionFontColorPositive.text=Font Color Positive Event
652+
649653
## Fonts Tab
650654
fontsTab.title=Fonts
651655
lblMedicalViewDialogHandwritingFont.text=Medical Dialog Handwriting Font

MekHQ/src/mekhq/MHQConstants.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,9 @@ public final class MHQConstants extends SuiteConstants {
114114
public static final String PAID_RETIREMENT_FOREGROUND = "paidRetirementForeground";
115115
public static final String PAID_RETIREMENT_BACKGROUND = "paidRetirementBackground";
116116
public static final String STRATCON_HEX_COORD_FOREGROUND = "stratconHexCoordForeground";
117-
public static final String AUTO_AWARDS_FOREGROUND = "paidRetirementForeground";
118-
public static final String AUTO_AWARDS_BACKGROUND = "paidRetirementBackground";
117+
public static final String FONT_COLOR_NEGATIVE = "fontColorNegative";
118+
public static final String FONT_COLOR_POSITIVE = "fontColorPositive";
119+
public static final String FONT_COLOR_WARNING = "fontColorWarning";
119120
//endregion Colours
120121

121122
//region Fonts

MekHQ/src/mekhq/MHQOptions.java

+60-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2020-2022 - The MegaMek Team. All Rights Reserved.
2+
* Copyright (c) 2020-2024 - The MegaMek Team. All Rights Reserved.
33
*
44
* This file is part of MekHQ.
55
*
@@ -442,6 +442,65 @@ public Color getStratConHexCoordForeground() {
442442
public void setStratConHexCoordForeground(Color value) {
443443
userPreferences.node(MHQConstants.DISPLAY_NODE).putInt(MHQConstants.STRATCON_HEX_COORD_FOREGROUND, value.getRGB());
444444
}
445+
446+
public Color getFontColorNegative() {
447+
return new Color(userPreferences.node(MHQConstants.DISPLAY_NODE).getInt(MHQConstants.FONT_COLOR_NEGATIVE, Color.RED.getRGB()));
448+
}
449+
450+
/**
451+
* @return the hexadecimal color code for the negative event font color.
452+
*/
453+
public String getFontColorNegativeHexColor() {
454+
return convertFontColorToHexColor(getFontColorNegative());
455+
}
456+
457+
public void setFontColorNegative(Color value) {
458+
userPreferences.node(MHQConstants.DISPLAY_NODE).putInt(MHQConstants.FONT_COLOR_NEGATIVE, value.getRGB());
459+
}
460+
461+
public Color getFontColorPositive() {
462+
return new Color(userPreferences.node(MHQConstants.DISPLAY_NODE).getInt(MHQConstants.FONT_COLOR_POSITIVE, Color.GREEN.getRGB()));
463+
}
464+
465+
/**
466+
* @return the hexadecimal color code for the positive event font color.
467+
*/
468+
public String getFontColorPositiveHexColor() {
469+
return convertFontColorToHexColor(getFontColorPositive());
470+
}
471+
472+
public void setFontColorPositive(Color value) {
473+
userPreferences.node(MHQConstants.DISPLAY_NODE).putInt(MHQConstants.FONT_COLOR_POSITIVE, value.getRGB());
474+
}
475+
476+
public Color getFontColorWarning() {
477+
return new Color(userPreferences.node(MHQConstants.DISPLAY_NODE).getInt(MHQConstants.FONT_COLOR_WARNING, Color.ORANGE.getRGB()));
478+
}
479+
480+
/**
481+
* @return the hexadecimal color code for the warning event font color.
482+
*/
483+
public String getFontColorWarningHexColor() {
484+
return convertFontColorToHexColor(getFontColorWarning());
485+
}
486+
487+
public void setFontColorWarning(Color value) {
488+
userPreferences.node(MHQConstants.DISPLAY_NODE).putInt(MHQConstants.FONT_COLOR_WARNING, value.getRGB());
489+
}
490+
491+
/**
492+
* Converts the font color to a hexadecimal color representation.
493+
*
494+
* @param color the font color to convert
495+
* @return the hexadecimal color representation of the font color
496+
*/
497+
public String convertFontColorToHexColor(Color color) {
498+
int red = color.getRed();
499+
int green = color.getGreen();
500+
int blue = color.getBlue();
501+
502+
return String.format("#%02x%02x%02x", red, green, blue);
503+
}
445504
//endregion Colours
446505

447506
//region Fonts

MekHQ/src/mekhq/campaign/CurrentLocation.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,13 @@
2222

2323
import megamek.common.Compute;
2424
import mekhq.MekHQ;
25-
import mekhq.utilities.MHQXMLUtility;
2625
import mekhq.campaign.event.LocationChangedEvent;
27-
import mekhq.campaign.event.NewDayEvent;
2826
import mekhq.campaign.event.TransitCompleteEvent;
2927
import mekhq.campaign.finances.enums.TransactionType;
3028
import mekhq.campaign.universe.Planet;
3129
import mekhq.campaign.universe.PlanetarySystem;
3230
import mekhq.campaign.universe.Systems;
31+
import mekhq.utilities.MHQXMLUtility;
3332
import org.apache.logging.log4j.LogManager;
3433
import org.w3c.dom.Node;
3534
import org.w3c.dom.NodeList;

MekHQ/src/mekhq/campaign/force/UnitStub.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323
import megamek.codeUtilities.StringUtility;
2424
import megamek.common.icons.AbstractIcon;
2525
import megamek.common.icons.Portrait;
26-
import mekhq.utilities.MHQXMLUtility;
2726
import mekhq.campaign.personnel.Person;
2827
import mekhq.campaign.unit.Unit;
28+
import mekhq.utilities.MHQXMLUtility;
2929
import org.apache.logging.log4j.LogManager;
3030
import org.w3c.dom.Node;
3131
import org.w3c.dom.NodeList;

MekHQ/src/mekhq/campaign/market/ShoppingList.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@
2424
import megamek.common.Entity;
2525
import megamek.common.annotations.Nullable;
2626
import mekhq.MekHQ;
27-
import mekhq.utilities.MHQXMLUtility;
2827
import mekhq.campaign.Campaign;
2928
import mekhq.campaign.event.ProcurementEvent;
3029
import mekhq.campaign.parts.Part;
3130
import mekhq.campaign.parts.Refit;
3231
import mekhq.campaign.parts.equipment.MissingEquipmentPart;
3332
import mekhq.campaign.unit.UnitOrder;
3433
import mekhq.campaign.work.IAcquisitionWork;
34+
import mekhq.utilities.MHQXMLUtility;
3535
import org.apache.logging.log4j.LogManager;
3636
import org.w3c.dom.Node;
3737
import org.w3c.dom.NodeList;

MekHQ/src/mekhq/campaign/parts/AmmoStorage.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@
2525
import megamek.common.TargetRoll;
2626
import megamek.common.TechAdvancement;
2727
import megamek.common.annotations.Nullable;
28-
import mekhq.utilities.MHQXMLUtility;
2928
import mekhq.campaign.Campaign;
3029
import mekhq.campaign.finances.Money;
3130
import mekhq.campaign.parts.equipment.EquipmentPart;
3231
import mekhq.campaign.parts.equipment.MissingEquipmentPart;
3332
import mekhq.campaign.personnel.Person;
3433
import mekhq.campaign.work.IAcquisitionWork;
34+
import mekhq.utilities.MHQXMLUtility;
3535
import org.apache.logging.log4j.LogManager;
3636
import org.w3c.dom.Node;
3737
import org.w3c.dom.NodeList;

MekHQ/src/mekhq/campaign/parts/Armor.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@
2323
import megamek.common.*;
2424
import megamek.common.annotations.Nullable;
2525
import megamek.common.equipment.ArmorType;
26-
import mekhq.utilities.MHQXMLUtility;
2726
import mekhq.campaign.Campaign;
2827
import mekhq.campaign.finances.Money;
2928
import mekhq.campaign.parts.enums.PartRepairType;
3029
import mekhq.campaign.personnel.SkillType;
3130
import mekhq.campaign.work.IAcquisitionWork;
3231
import mekhq.campaign.work.WorkTime;
32+
import mekhq.utilities.MHQXMLUtility;
3333
import org.apache.logging.log4j.LogManager;
3434
import org.w3c.dom.Node;
3535
import org.w3c.dom.NodeList;

MekHQ/src/mekhq/campaign/parts/MekLocation.java

+9-10
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import megamek.common.annotations.Nullable;
2626
import megamek.common.verifier.Structure;
2727
import megamek.common.verifier.TestEntity.Ceil;
28-
import mekhq.utilities.MHQXMLUtility;
2928
import mekhq.campaign.Campaign;
3029
import mekhq.campaign.finances.Money;
3130
import mekhq.campaign.parts.enums.PartRepairType;
@@ -34,7 +33,7 @@
3433
import mekhq.campaign.personnel.SkillType;
3534
import mekhq.campaign.unit.Unit;
3635
import mekhq.campaign.work.WorkTime;
37-
36+
import mekhq.utilities.MHQXMLUtility;
3837
import org.apache.logging.log4j.LogManager;
3938
import org.w3c.dom.Node;
4039
import org.w3c.dom.NodeList;
@@ -155,14 +154,14 @@ public double getTonnage() {
155154
// use MegaMek's implementation of internal structure weight calculation
156155
// assume rounding to nearest half-ton
157156
// superheavy flag is set if weight is more than 100
158-
// assume movement mode is biped or tripod (technically mechs can have other movement modes but
159-
// that doesn't affect structure weight); currently impossible to tell whether a "loose" left leg is for a biped or tripod.
160-
EntityMovementMode movementMode = (getLoc() == Mech.LOC_CLEG) ? EntityMovementMode.TRIPOD : EntityMovementMode.BIPED;
161-
162-
double tonnage = Structure.getWeightStructure(structureType, getUnitTonnage(), Ceil.HALFTON,
157+
// assume movement mode is biped or tripod (technically mechs can have other movement modes but
158+
// that doesn't affect structure weight); currently impossible to tell whether a "loose" left leg is for a biped or tripod.
159+
EntityMovementMode movementMode = (getLoc() == Mech.LOC_CLEG) ? EntityMovementMode.TRIPOD : EntityMovementMode.BIPED;
160+
161+
double tonnage = Structure.getWeightStructure(structureType, getUnitTonnage(), Ceil.HALFTON,
163162
(getUnitTonnage() > 100), movementMode);
164-
165-
// determine the weight of the location;
163+
164+
// determine the weight of the location;
166165
// if it's a "strange" location, then the rest of this is pointless.
167166
switch (loc) {
168167
case Mech.LOC_HEAD:
@@ -185,7 +184,7 @@ public double getTonnage() {
185184
default:
186185
return 0;
187186
}
188-
187+
189188
return tonnage;
190189
}
191190

MekHQ/src/mekhq/campaign/parts/MissingPart.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
*/
2121
package mekhq.campaign.parts;
2222

23-
import java.io.PrintWriter;
24-
2523
import megamek.common.ITechnology;
2624
import megamek.common.TargetRoll;
2725
import megamek.common.annotations.Nullable;
@@ -32,6 +30,8 @@
3230
import mekhq.campaign.work.IAcquisitionWork;
3331
import mekhq.campaign.work.WorkTime;
3432

33+
import java.io.PrintWriter;
34+
3535
/**
3636
* A missing part is a placeholder on a unit to indicate that a replacement
3737
* task needs to be performed

MekHQ/src/mekhq/campaign/parts/OmniPod.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@
2020

2121
import megamek.common.*;
2222
import megamek.common.annotations.Nullable;
23-
import mekhq.utilities.MHQXMLUtility;
2423
import mekhq.campaign.Campaign;
2524
import mekhq.campaign.finances.Money;
2625
import mekhq.campaign.parts.equipment.EquipmentPart;
2726
import mekhq.campaign.parts.equipment.HeatSink;
2827
import mekhq.campaign.parts.equipment.JumpJet;
2928
import mekhq.campaign.parts.equipment.MASC;
3029
import mekhq.campaign.personnel.SkillType;
30+
import mekhq.utilities.MHQXMLUtility;
3131
import org.apache.logging.log4j.LogManager;
3232
import org.w3c.dom.Node;
3333
import org.w3c.dom.NodeList;

MekHQ/src/mekhq/campaign/parts/Part.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import megamek.common.annotations.Nullable;
2727
import megamek.common.options.OptionsConstants;
2828
import mekhq.MekHQ;
29-
import mekhq.utilities.MHQXMLUtility;
3029
import mekhq.campaign.Campaign;
3130
import mekhq.campaign.finances.Money;
3231
import mekhq.campaign.parts.enums.PartRepairType;
@@ -39,6 +38,7 @@
3938
import mekhq.campaign.work.IAcquisitionWork;
4039
import mekhq.campaign.work.IPartWork;
4140
import mekhq.campaign.work.WorkTime;
41+
import mekhq.utilities.MHQXMLUtility;
4242
import org.apache.commons.lang3.StringUtils;
4343
import org.apache.logging.log4j.LogManager;
4444
import org.w3c.dom.NamedNodeMap;

MekHQ/src/mekhq/campaign/parts/ProtomekLocation.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@
2222

2323
import megamek.common.*;
2424
import megamek.common.annotations.Nullable;
25-
import mekhq.utilities.MHQXMLUtility;
2625
import mekhq.campaign.Campaign;
2726
import mekhq.campaign.finances.Money;
2827
import mekhq.campaign.parts.enums.PartRepairType;
2928
import mekhq.campaign.personnel.Person;
3029
import mekhq.campaign.personnel.SkillType;
3130
import mekhq.campaign.work.WorkTime;
31+
import mekhq.utilities.MHQXMLUtility;
3232
import org.apache.logging.log4j.LogManager;
3333
import org.w3c.dom.Node;
3434
import org.w3c.dom.NodeList;

MekHQ/src/mekhq/campaign/parts/equipment/AmmoBin.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import megamek.common.*;
2424
import megamek.common.annotations.Nullable;
2525
import megamek.common.equipment.AmmoMounted;
26-
import mekhq.utilities.MHQXMLUtility;
2726
import mekhq.campaign.Campaign;
2827
import mekhq.campaign.finances.Money;
2928
import mekhq.campaign.parts.AmmoStorage;
@@ -34,6 +33,7 @@
3433
import mekhq.campaign.personnel.Person;
3534
import mekhq.campaign.unit.Unit;
3635
import mekhq.campaign.work.IAcquisitionWork;
36+
import mekhq.utilities.MHQXMLUtility;
3737
import org.apache.logging.log4j.LogManager;
3838
import org.w3c.dom.Node;
3939
import org.w3c.dom.NodeList;

MekHQ/src/mekhq/campaign/parts/equipment/LargeCraftAmmoBin.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@
2424
import megamek.common.annotations.Nullable;
2525
import megamek.common.equipment.AmmoMounted;
2626
import megamek.common.equipment.WeaponMounted;
27-
import mekhq.utilities.MHQXMLUtility;
2827
import mekhq.campaign.Campaign;
2928
import mekhq.campaign.finances.Money;
3029
import mekhq.campaign.parts.Part;
3130
import mekhq.campaign.parts.PartInventory;
31+
import mekhq.utilities.MHQXMLUtility;
3232
import org.apache.logging.log4j.LogManager;
3333
import org.w3c.dom.Node;
3434
import org.w3c.dom.NodeList;

MekHQ/src/mekhq/campaign/unit/UnitOrder.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@
2222

2323
import megamek.common.*;
2424
import megamek.common.loaders.EntityLoadingException;
25-
import mekhq.utilities.MHQXMLUtility;
2625
import mekhq.campaign.Campaign;
2726
import mekhq.campaign.parts.Availability;
2827
import mekhq.campaign.parts.Part;
2928
import mekhq.campaign.personnel.Person;
3029
import mekhq.campaign.work.IAcquisitionWork;
30+
import mekhq.utilities.MHQXMLUtility;
3131
import org.apache.logging.log4j.LogManager;
3232
import org.w3c.dom.Element;
3333
import org.w3c.dom.Node;

MekHQ/src/mekhq/gui/MekLabTab.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@
3232
import megameklab.ui.combatVehicle.CVBuildTab;
3333
import megameklab.ui.combatVehicle.CVEquipmentTab;
3434
import megameklab.ui.combatVehicle.CVStructureTab;
35-
import megameklab.ui.infantry.CIStructureTab;
3635
import megameklab.ui.fighterAero.ASBuildTab;
3736
import megameklab.ui.fighterAero.ASEquipmentTab;
3837
import megameklab.ui.fighterAero.ASStructureTab;
3938
import megameklab.ui.generalUnit.FluffTab;
4039
import megameklab.ui.generalUnit.PreviewTab;
4140
import megameklab.ui.generalUnit.TransportTab;
41+
import megameklab.ui.infantry.CIStructureTab;
4242
import megameklab.ui.largeAero.DSStructureTab;
4343
import megameklab.ui.largeAero.LABuildTab;
4444
import megameklab.ui.largeAero.LAEquipmentTab;

MekHQ/src/mekhq/gui/dialog/AcquisitionsDialog.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@
3030
import mekhq.campaign.unit.Unit;
3131
import mekhq.campaign.work.IAcquisitionWork;
3232
import mekhq.gui.CampaignGUI;
33-
import mekhq.gui.enums.MHQTabType;
3433
import mekhq.gui.RepairTab;
34+
import mekhq.gui.enums.MHQTabType;
3535
import mekhq.service.PartsAcquisitionService;
3636
import mekhq.service.PartsAcquisitionService.PartCountInfo;
3737
import org.apache.logging.log4j.LogManager;

0 commit comments

Comments
 (0)