|
52 | 52 | import megamek.common.util.sorter.NaturalOrderComparator; |
53 | 53 | import mekhq.MekHQ; |
54 | 54 | import mekhq.campaign.Campaign; |
| 55 | +import mekhq.campaign.CampaignOptions; |
55 | 56 | import mekhq.campaign.force.Force; |
56 | 57 | import mekhq.campaign.market.PersonnelMarket; |
57 | 58 | import mekhq.campaign.personnel.Person; |
@@ -116,6 +117,8 @@ public enum PersonnelTableModelColumn { |
116 | 117 | TECH_BA("PersonnelTableModelColumn.TECH_BA.text"), |
117 | 118 | TECH_VESSEL("PersonnelTableModelColumn.TECH_VESSEL.text"), |
118 | 119 | MEDICAL("PersonnelTableModelColumn.MEDICAL.text"), |
| 120 | + TECH_MINUTES("PersonnelTableModelColumn.TECH_MINUTES.text"), |
| 121 | + MEDICAL_CAPACITY("PersonnelTableModelColumn.MEDICAL_CAPACITY.text"), |
119 | 122 | ADMINISTRATION("PersonnelTableModelColumn.ADMINISTRATION.text"), |
120 | 123 | NEGOTIATION("PersonnelTableModelColumn.NEGOTIATION.text"), |
121 | 124 | INJURIES("PersonnelTableModelColumn.INJURIES.text"), |
@@ -333,6 +336,14 @@ public boolean isMedical() { |
333 | 336 | return this == MEDICAL; |
334 | 337 | } |
335 | 338 |
|
| 339 | + public boolean isTechMinutes() { |
| 340 | + return this == TECH_MINUTES; |
| 341 | + } |
| 342 | + |
| 343 | + public boolean isMedicalCapacity() { |
| 344 | + return this == MEDICAL_CAPACITY; |
| 345 | + } |
| 346 | + |
336 | 347 | public boolean isAdministration() { |
337 | 348 | return this == ADMINISTRATION; |
338 | 349 | } |
@@ -544,9 +555,13 @@ public String getCellValue(final Campaign campaign, final PersonnelMarket person |
544 | 555 |
|
545 | 556 | String sign; |
546 | 557 |
|
547 | | - boolean isUseAgeEffects = campaign.getCampaignOptions().isUseAgeEffects(); |
548 | | - boolean isClanCampaign = campaign.isClanCampaign(); |
549 | | - LocalDate today = campaign.getLocalDate(); |
| 558 | + final boolean isClanCampaign = campaign.isClanCampaign(); |
| 559 | + final LocalDate today = campaign.getLocalDate(); |
| 560 | + final CampaignOptions campaignOptions = campaign.getCampaignOptions(); |
| 561 | + final boolean isUseAgeEffects = campaignOptions.isUseAgeEffects(); |
| 562 | + final boolean isUseTechAdmin = campaignOptions.isTechsUseAdministration(); |
| 563 | + final int baseBedCapacity = campaignOptions.getMaximumPatients(); |
| 564 | + final boolean isUseMedicalAdmin = campaignOptions.isDoctorsUseAdministration(); |
550 | 565 |
|
551 | 566 | switch (this) { |
552 | 567 | case PERSON: |
@@ -828,11 +843,23 @@ public String getCellValue(final Campaign campaign, final PersonnelMarket person |
828 | 843 | Integer.toString(person.getSkill(SkillType.S_TECH_VESSEL) |
829 | 844 | .getFinalSkillValue(options, attributes)) : |
830 | 845 | "-"; |
| 846 | + case TECH_MINUTES: |
| 847 | + if (person.isTechExpanded()) { |
| 848 | + return String.valueOf(person.getDailyAvailableTechTime(isUseTechAdmin)); |
| 849 | + } else { |
| 850 | + return "0"; |
| 851 | + } |
831 | 852 | case MEDICAL: |
832 | 853 | return person.hasSkill(SkillType.S_SURGERY) ? |
833 | 854 | Integer.toString(person.getSkill(SkillType.S_SURGERY) |
834 | 855 | .getFinalSkillValue(options, attributes)) : |
835 | 856 | "-"; |
| 857 | + case MEDICAL_CAPACITY: |
| 858 | + if (person.isDoctor()) { |
| 859 | + return String.valueOf(person.getDoctorMedicalCapacity(isUseMedicalAdmin, baseBedCapacity)); |
| 860 | + } else { |
| 861 | + return "0"; |
| 862 | + } |
836 | 863 | case ADMINISTRATION: |
837 | 864 | return person.hasSkill(SkillType.S_ADMIN) ? |
838 | 865 | Integer.toString(person.getSkill(SkillType.S_ADMIN) |
@@ -1103,7 +1130,9 @@ yield switch (this) { |
1103 | 1130 | TECH_MECHANIC, |
1104 | 1131 | TECH_BA, |
1105 | 1132 | TECH_VESSEL, |
1106 | | - MEDICAL -> true; |
| 1133 | + TECH_MINUTES, |
| 1134 | + MEDICAL, |
| 1135 | + MEDICAL_CAPACITY -> true; |
1107 | 1136 | default -> false; |
1108 | 1137 | }; |
1109 | 1138 | case ADMINISTRATIVE_SKILLS -> switch (this) { |
|
0 commit comments