Browse Source

Debug code added

feature-config-parsing2
MagicBot 3 months ago
parent
commit
502dda0b3b
  1. 173
      src/engine/wpak/PowerActionParser.java
  2. 2
      src/engine/wpak/data/PowerActionEntry.java

173
src/engine/wpak/PowerActionParser.java

@ -35,8 +35,7 @@ public class PowerActionParser {
try { try {
fileData = Files.readAllBytes(Paths.get(powerActionPath)); fileData = Files.readAllBytes(Paths.get(powerActionPath));
} catch ( } catch (IOException e) {
IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -59,98 +58,114 @@ public class PowerActionParser {
EffectDescription effectDescription; EffectDescription effectDescription;
try { try {
// Remove all lines that contain a # and leading/trailing blank lines // Remove all lines that contain a # and leading/trailing blank lines
powerActionData = powerActionData.replaceAll("(?m)^(\\s*#.*|\\s*)\r?\n?", "").trim(); powerActionData = powerActionData.replaceAll("(?m)^(\\s*#.*|\\s*)\r?\n?", "").trim();
String[] lineData = powerActionData.split("\n"); String[] lineData = powerActionData.split("\n");
// Parse effect entry header // Parse effect entry header
Iterator<String> entryIterator = Arrays.stream(lineData).iterator(); Iterator<String> entryIterator = Arrays.stream(lineData).iterator();
String headerLine = entryIterator.next(); String headerLine = entryIterator.next();
ArrayList<String> headerData = new ArrayList<>(); ArrayList<String> headerData = new ArrayList<>();
Matcher matcher = STRSPLIT_REGEX.matcher(headerLine.trim()); Matcher matcher = STRSPLIT_REGEX.matcher(headerLine.trim());
while (matcher.find()) while (matcher.find())
headerData.add(matcher.group().trim()); headerData.add(matcher.group().trim());
Iterator<String> headerIterator = headerData.iterator(); Iterator<String> headerIterator = headerData.iterator();
powerActionEntry.action_id = headerIterator.next();
powerActionEntry.action_type = headerIterator.next();
powerActionEntry.action_id = headerIterator.next(); switch (powerActionEntry.action_type) {
powerActionEntry.action_type = headerIterator.next(); case "RemoveEffect":
effectDescription = new EffectDescription();
while (headerIterator.hasNext()) { effectDescription.effect_id = headerIterator.next();
effectDescription = new EffectDescription(); powerActionEntry.effects.add(effectDescription);
effectDescription.effect_id = headerIterator.next(); case "CreateMob":
effectDescription.level = Integer.parseInt(headerIterator.next()); powerActionEntry.arg1 = Integer.parseInt(headerIterator.next());
} powerActionEntry.arg2 = Integer.parseInt(headerIterator.next());
// Process key value pairs after header
while (entryIterator.hasNext()) {
String lineValue = entryIterator.next();
String[] lineValues = lineValue.split("=");
String key = lineValues[0].trim();
String[] arguments;
switch (key) {
case "BODYPARTS":
arguments = lineValues[1].trim().split("\\s+");
for (String bodyPart : arguments)
powerActionEntry.bodyparts.add(Integer.parseInt(bodyPart));
break; break;
case "FEMALEBODYPARTS": case "ApplyEffect":
arguments = lineValues[1].trim().split("\\s+"); case "DeferredPower ":
while (headerIterator.hasNext()) {
for (String bodyPart : arguments) effectDescription = new EffectDescription();
powerActionEntry.femaleBodyParts.add(Integer.parseInt(bodyPart)); effectDescription.effect_id = headerIterator.next();
effectDescription.level = Integer.parseInt(headerIterator.next());
powerActionEntry.effects.add(effectDescription);
}
break; break;
case "SCALEFACTOR":
arguments = lineValues[1].trim().split("\\s+");
for (String bodyPart : arguments)
powerActionEntry.scaleFactor.add(Float.parseFloat(bodyPart));
break;
case "ISRESISTABLE":
powerActionEntry.isResistable = Boolean.parseBoolean(lineValues[1].trim());
break;
case "ISAGGRESSIVE":
powerActionEntry.isAggressive = Boolean.parseBoolean(lineValues[1].trim());
break;
case "BLADETRAILS":
powerActionEntry.bladeTrails = Boolean.parseBoolean(lineValues[1].trim());
break;
case "SHOULDSHOWWEAPONS":
powerActionEntry.shouldShowWeapons = Boolean.parseBoolean(lineValues[1].trim());
break;
case "SHOULDSHOWARMOR":
powerActionEntry.shouldShowArmor = Boolean.parseBoolean(lineValues[1].trim());
break;
case "APPLYEFFECTBLANK":
powerActionEntry.applyEffectBlank = Boolean.parseBoolean(lineValues[1].trim());
break;
case "WEAROFFEFFECTBLANK":
powerActionEntry.wearOffEffectBlank = Boolean.parseBoolean(lineValues[1].trim());
break;
case "ATTACKANIMS":
arguments = lineValues[1].trim().split("\\s+");
for (String bodyPart : arguments)
powerActionEntry.attackAnimations.add(Integer.parseInt(bodyPart));
break;
case "WEAROFFEFFECTOTHER": // Keys not parsed go here.
case "WEAROFFEFFECTSELF":
break;
default: default:
Logger.error("Unhandled variable type:" + key + " for powerAction: " + powerActionEntry.action_id); Logger.error("Unhandled type " + powerActionEntry.action_type + " for Pow4erAction: " + powerActionEntry.action_id);
break;
} }
} // Process key value pairs after header
while (entryIterator.hasNext()) {
String lineValue = entryIterator.next();
String[] lineValues = lineValue.split("=");
String key = lineValues[0].trim();
String[] arguments;
switch (key) {
case "BODYPARTS":
arguments = lineValues[1].trim().split("\\s+");
for (String bodyPart : arguments)
powerActionEntry.bodyparts.add(Integer.parseInt(bodyPart));
break;
case "FEMALEBODYPARTS":
arguments = lineValues[1].trim().split("\\s+");
for (String bodyPart : arguments)
powerActionEntry.femaleBodyParts.add(Integer.parseInt(bodyPart));
break;
case "SCALEFACTOR":
arguments = lineValues[1].trim().split("\\s+");
for (String bodyPart : arguments)
powerActionEntry.scaleFactor.add(Float.parseFloat(bodyPart));
break;
case "ISRESISTABLE":
powerActionEntry.isResistable = Boolean.parseBoolean(lineValues[1].trim());
break;
case "ISAGGRESSIVE":
powerActionEntry.isAggressive = Boolean.parseBoolean(lineValues[1].trim());
break;
case "BLADETRAILS":
powerActionEntry.bladeTrails = Boolean.parseBoolean(lineValues[1].trim());
break;
case "SHOULDSHOWWEAPONS":
powerActionEntry.shouldShowWeapons = Boolean.parseBoolean(lineValues[1].trim());
break;
case "SHOULDSHOWARMOR":
powerActionEntry.shouldShowArmor = Boolean.parseBoolean(lineValues[1].trim());
break;
case "APPLYEFFECTBLANK":
powerActionEntry.applyEffectBlank = Boolean.parseBoolean(lineValues[1].trim());
break;
case "WEAROFFEFFECTBLANK":
powerActionEntry.wearOffEffectBlank = Boolean.parseBoolean(lineValues[1].trim());
break;
case "ATTACKANIMS":
arguments = lineValues[1].trim().split("\\s+");
for (String bodyPart : arguments)
powerActionEntry.attackAnimations.add(Integer.parseInt(bodyPart));
break;
case "WEAROFFEFFECTOTHER": // Keys not parsed go here.
case "WEAROFFEFFECTSELF":
break;
default:
Logger.error("Unhandled variable type:" + key + " for powerAction: " + powerActionEntry.action_id);
}
}
} catch (Exception e) { } catch (Exception e) {
Logger.error(powerActionEntry.action_id + " " + e); Logger.error(powerActionEntry.action_id + " " + e);
} }

2
src/engine/wpak/data/PowerActionEntry.java

@ -33,5 +33,7 @@ public class PowerActionEntry {
public mbEnums.DamageType damageType; public mbEnums.DamageType damageType;
public boolean applyEffectBlank = false; public boolean applyEffectBlank = false;
public boolean wearOffEffectBlank = false; public boolean wearOffEffectBlank = false;
public int arg1;
public int arg2;
} }

Loading…
Cancel
Save