Refactors monster helper methods into a separate class.

This commit is contained in:
Tom Hicks
2021-06-29 14:09:09 -07:00
parent 826fcd6d1f
commit 42bad77c2e

View File

@@ -14,6 +14,8 @@ import com.majinnaibu.monstercards.data.enums.ChallengeRating;
import com.majinnaibu.monstercards.data.enums.ProficiencyType; import com.majinnaibu.monstercards.data.enums.ProficiencyType;
import com.majinnaibu.monstercards.helpers.StringHelper; import com.majinnaibu.monstercards.helpers.StringHelper;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
@@ -266,28 +268,6 @@ public class Monster {
regionalActions = new ArrayList<>(); regionalActions = new ArrayList<>();
} }
public static int getAbilityModifierForScore(int score) {
return (int) Math.floor((score - 10) / 2.0);
}
private static int getHitDieForSize(String size) {
if ("tiny".equals(size)) {
return 4;
} else if ("small".equals(size)) {
return 6;
} else if ("medium".equals(size)) {
return 8;
} else if ("large".equals(size)) {
return 10;
} else if ("huge".equals(size)) {
return 12;
} else if ("gargantuan".equals(size)) {
return 20;
} else {
return 8;
}
}
public String getMeta() { public String getMeta() {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
boolean isFirstOutput = true; boolean isFirstOutput = true;
@@ -324,7 +304,7 @@ public class Monster {
return sb.toString(); return sb.toString();
} }
public int getAbilityScore(AbilityScore abilityScore) { public int getAbilityScore(@NotNull AbilityScore abilityScore) {
switch (abilityScore) { switch (abilityScore) {
case STRENGTH: case STRENGTH:
return strengthScore; return strengthScore;
@@ -343,7 +323,7 @@ public class Monster {
} }
} }
public int getAbilityModifier(AbilityScore abilityScore) { public int getAbilityModifier(@NotNull AbilityScore abilityScore) {
switch (abilityScore) { switch (abilityScore) {
case STRENGTH: case STRENGTH:
return getStrengthModifier(); return getStrengthModifier();
@@ -362,7 +342,7 @@ public class Monster {
} }
} }
public AdvantageType getSavingThrowAdvantageType(AbilityScore abilityScore) { public AdvantageType getSavingThrowAdvantageType(@NotNull AbilityScore abilityScore) {
switch (abilityScore) { switch (abilityScore) {
case STRENGTH: case STRENGTH:
return strengthSavingThrowAdvantage; return strengthSavingThrowAdvantage;
@@ -381,7 +361,7 @@ public class Monster {
} }
} }
public ProficiencyType getSavingThrowProficiencyType(AbilityScore abilityScore) { public ProficiencyType getSavingThrowProficiencyType(@NotNull AbilityScore abilityScore) {
switch (abilityScore) { switch (abilityScore) {
case STRENGTH: case STRENGTH:
return strengthSavingThrowProficiency; return strengthSavingThrowProficiency;
@@ -401,27 +381,27 @@ public class Monster {
} }
public int getStrengthModifier() { public int getStrengthModifier() {
return getAbilityModifierForScore(strengthScore); return Helpers.getAbilityModifierForScore(strengthScore);
} }
public int getDexterityModifier() { public int getDexterityModifier() {
return getAbilityModifierForScore(dexterityScore); return Helpers.getAbilityModifierForScore(dexterityScore);
} }
public int getConstitutionModifier() { public int getConstitutionModifier() {
return getAbilityModifierForScore(constitutionScore); return Helpers.getAbilityModifierForScore(constitutionScore);
} }
public int getIntelligenceModifier() { public int getIntelligenceModifier() {
return getAbilityModifierForScore(intelligenceScore); return Helpers.getAbilityModifierForScore(intelligenceScore);
} }
public int getWisdomModifier() { public int getWisdomModifier() {
return getAbilityModifierForScore(wisdomScore); return Helpers.getAbilityModifierForScore(wisdomScore);
} }
public int getCharismaModifier() { public int getCharismaModifier() {
return getAbilityModifierForScore(charismaScore); return Helpers.getAbilityModifierForScore(charismaScore);
} }
public String getArmorClass() { public String getArmorClass() {
@@ -485,7 +465,7 @@ public class Monster {
if (hasCustomHP) { if (hasCustomHP) {
return customHPDescription; return customHPDescription;
} else { } else {
int dieSize = getHitDieForSize(size); int dieSize = Helpers.getHitDieForSize(size);
int conMod = getConstitutionModifier(); int conMod = getConstitutionModifier();
// For PC style calculations use this // For PC style calculations use this
//int hpTotal = (int) Math.max(1, Math.ceil(dieSize + conMod + (hitDice - 1) * ((dieSize + 1) / 2.0 + conMod))); //int hpTotal = (int) Math.max(1, Math.ceil(dieSize + conMod + (hitDice - 1) * ((dieSize + 1) / 2.0 + conMod)));
@@ -566,7 +546,7 @@ public class Monster {
} }
} }
public int getProficiencyBonus(ProficiencyType proficiencyType) { public int getProficiencyBonus(@NotNull ProficiencyType proficiencyType) {
switch (proficiencyType) { switch (proficiencyType) {
case PROFICIENT: case PROFICIENT:
return getProficiencyBonus(); return getProficiencyBonus();
@@ -710,7 +690,7 @@ public class Monster {
return abilityDescriptions; return abilityDescriptions;
} }
public String getPlaceholderReplacedText(String rawText) { public String getPlaceholderReplacedText(@NotNull String rawText) {
return rawText return rawText
.replaceAll("\\[STR SAVE]", String.format("%+d", getSpellSaveDC(AbilityScore.STRENGTH))) .replaceAll("\\[STR SAVE]", String.format("%+d", getSpellSaveDC(AbilityScore.STRENGTH)))
.replaceAll("\\[STR ATK]", String.format("%+d", getAttackBonus(AbilityScore.STRENGTH))) .replaceAll("\\[STR ATK]", String.format("%+d", getAttackBonus(AbilityScore.STRENGTH)))
@@ -773,4 +753,28 @@ public class Monster {
} }
return actionDescriptions; return actionDescriptions;
} }
public static class Helpers {
public static int getAbilityModifierForScore(int score) {
return (int) Math.floor((score - 10) / 2.0);
}
public static int getHitDieForSize(String size) {
if ("tiny".equals(size)) {
return 4;
} else if ("small".equals(size)) {
return 6;
} else if ("medium".equals(size)) {
return 8;
} else if ("large".equals(size)) {
return 10;
} else if ("huge".equals(size)) {
return 12;
} else if ("gargantuan".equals(size)) {
return 20;
} else {
return 8;
}
}
}
} }