From 502dda0b3b6b028225ee242e62a865874555d714 Mon Sep 17 00:00:00 2001 From: MagicBot Date: Tue, 20 Aug 2024 15:01:28 -0400 Subject: [PATCH] Debug code added --- src/engine/wpak/PowerActionParser.java | 173 +++++++++++---------- src/engine/wpak/data/PowerActionEntry.java | 2 + 2 files changed, 96 insertions(+), 79 deletions(-) diff --git a/src/engine/wpak/PowerActionParser.java b/src/engine/wpak/PowerActionParser.java index 16a922d2..f04b3f44 100644 --- a/src/engine/wpak/PowerActionParser.java +++ b/src/engine/wpak/PowerActionParser.java @@ -35,8 +35,7 @@ public class PowerActionParser { try { fileData = Files.readAllBytes(Paths.get(powerActionPath)); - } catch ( - IOException e) { + } catch (IOException e) { throw new RuntimeException(e); } @@ -59,98 +58,114 @@ public class PowerActionParser { EffectDescription effectDescription; 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 entryIterator = Arrays.stream(lineData).iterator(); + Iterator entryIterator = Arrays.stream(lineData).iterator(); - String headerLine = entryIterator.next(); - ArrayList headerData = new ArrayList<>(); + String headerLine = entryIterator.next(); + ArrayList headerData = new ArrayList<>(); - Matcher matcher = STRSPLIT_REGEX.matcher(headerLine.trim()); + Matcher matcher = STRSPLIT_REGEX.matcher(headerLine.trim()); - while (matcher.find()) - headerData.add(matcher.group().trim()); + while (matcher.find()) + headerData.add(matcher.group().trim()); - Iterator headerIterator = headerData.iterator(); + Iterator headerIterator = headerData.iterator(); + powerActionEntry.action_id = headerIterator.next(); + powerActionEntry.action_type = headerIterator.next(); - powerActionEntry.action_id = headerIterator.next(); - powerActionEntry.action_type = headerIterator.next(); - - while (headerIterator.hasNext()) { - effectDescription = new EffectDescription(); - effectDescription.effect_id = headerIterator.next(); - effectDescription.level = 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)); + switch (powerActionEntry.action_type) { + case "RemoveEffect": + effectDescription = new EffectDescription(); + effectDescription.effect_id = headerIterator.next(); + powerActionEntry.effects.add(effectDescription); + case "CreateMob": + powerActionEntry.arg1 = Integer.parseInt(headerIterator.next()); + powerActionEntry.arg2 = Integer.parseInt(headerIterator.next()); break; - case "FEMALEBODYPARTS": - arguments = lineValues[1].trim().split("\\s+"); - - for (String bodyPart : arguments) - powerActionEntry.femaleBodyParts.add(Integer.parseInt(bodyPart)); + case "ApplyEffect": + case "DeferredPower ": + while (headerIterator.hasNext()) { + effectDescription = new EffectDescription(); + effectDescription.effect_id = headerIterator.next(); + effectDescription.level = Integer.parseInt(headerIterator.next()); + powerActionEntry.effects.add(effectDescription); + } 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); + 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) { Logger.error(powerActionEntry.action_id + " " + e); } diff --git a/src/engine/wpak/data/PowerActionEntry.java b/src/engine/wpak/data/PowerActionEntry.java index f79921ff..d2332103 100644 --- a/src/engine/wpak/data/PowerActionEntry.java +++ b/src/engine/wpak/data/PowerActionEntry.java @@ -33,5 +33,7 @@ public class PowerActionEntry { public mbEnums.DamageType damageType; public boolean applyEffectBlank = false; public boolean wearOffEffectBlank = false; + public int arg1; + public int arg2; }