EffectDescription refactored out.

This commit is contained in:
2024-08-22 16:21:13 -04:00
parent f89ce2ee15
commit f4fc7fc75b
9 changed files with 116 additions and 126 deletions
+19 -19
View File
@@ -11,7 +11,7 @@ package engine.wpak;
import engine.gameManager.ConfigManager;
import engine.mbEnums;
import engine.wpak.data.ConditionEntry;
import engine.wpak.data.EffectEntry;
import engine.wpak.data.Effect;
import engine.wpak.data.EffectModifier;
import org.pmw.tinylog.Logger;
@@ -25,7 +25,7 @@ import java.util.regex.Pattern;
public class EffectsParser {
public static String effectsPath = ConfigManager.DEFAULT_DATA_DIR + "wpak/Effects.cfg";
public static HashMap<String, EffectEntry> effect_data = new HashMap<>();
public static HashMap<String, Effect> effect_data = new HashMap<>();
private static final Pattern EFFECT_REGEX = Pattern.compile("(?<=EFFECTBEGIN)(.+?)(?=EFFECTEND)", Pattern.DOTALL);
private static final Pattern SOURCE_REGEX = Pattern.compile("(?<=SOURCEBEGIN)(.+?)(?=SOURCEEND)", Pattern.DOTALL);
private static final Pattern MODS_REGEX = Pattern.compile("(?<=MODSBEGIN)(.+?)(?=MODSEND)", Pattern.DOTALL);
@@ -51,21 +51,21 @@ public class EffectsParser {
Matcher matcher = EFFECT_REGEX.matcher(fileContents);
while (matcher.find()) {
EffectEntry effectEntry = parseEffectEntry(matcher.group());
effect_data.put(effectEntry.effect_id, effectEntry);
Effect effect = parseEffectEntry(matcher.group());
effect_data.put(effect.effect_id, effect);
}
}
private static EffectEntry parseEffectEntry(String effectData) {
private static Effect parseEffectEntry(String effectData) {
EffectEntry effectEntry = new EffectEntry();
Effect effect = new Effect();
// Parse fields that lie outside the other tags
effectEntry.isItemEffect = effectData.contains("IsItemEffect");
effectEntry.isSpireEffect = effectData.contains("IsSpireEffect");
effectEntry.ignoreNoMod = effectData.contains("IgnoreNoMod");
effectEntry.dontSave = effectData.contains("DontSave");
effect.isItemEffect = effectData.contains("IsItemEffect");
effect.isSpireEffect = effectData.contains("IsSpireEffect");
effect.ignoreNoMod = effectData.contains("IgnoreNoMod");
effect.dontSave = effectData.contains("DontSave");
// Remove all lines that contain a # and leading/trailing blank lines
@@ -90,24 +90,24 @@ public class EffectsParser {
while (matcher.find())
effectHeader.add(matcher.group().trim());
effectEntry.effect_id = effectHeader.get(0);
effectEntry.effect_name = effectHeader.get(1);
effectEntry.effect_name = effectEntry.effect_name.replaceAll("\"", "");
effect.effect_id = effectHeader.get(0);
effect.effect_name = effectHeader.get(1);
effect.effect_name = effect.effect_name.replaceAll("\"", "");
// Some effect mods have no icon
// (SEEINVIS-SHADE "See Invis")
if (effectHeader.size() == 3)
effectEntry.icon = Integer.parseInt(effectHeader.get(2));
effect.icon = Integer.parseInt(effectHeader.get(2));
else
effectEntry.icon = 0;
effect.icon = 0;
// Parse source entries
matcher = SOURCE_REGEX.matcher(effectData);
while (matcher.find())
effectEntry.sources.add(matcher.group().trim());
effect.sources.add(matcher.group().trim());
// Parse modifier entries
@@ -117,7 +117,7 @@ public class EffectsParser {
while (matcher.find()) {
EffectModifier effectModifier = parseModEntry(matcher.group());
effectEntry.mods.add(effectModifier);
effect.mods.add(effectModifier);
}
// Parse Conditions
@@ -141,11 +141,11 @@ public class EffectsParser {
while (iterator.hasNext())
conditionEntry.damageTypes.add(mbEnums.DamageType.valueOf(iterator.next().toUpperCase()));
effectEntry.conditions.add(conditionEntry);
effect.conditions.add(conditionEntry);
}
}
return effectEntry;
return effect;
}
private static EffectModifier parseModEntry(String modData) {