From 8ec1ffe8b78463fc56b01b6dec13614130878feb Mon Sep 17 00:00:00 2001 From: Thog Date: Sun, 14 Aug 2016 21:41:07 +0200 Subject: Propagate arguments remapping to children classes TODO: support support not identical behavior (constructors) --- .../java/cuchaz/enigma/mapping/Translator.java | 31 +++++++++++++--------- 1 file changed, 19 insertions(+), 12 deletions(-) (limited to 'src/main/java/cuchaz/enigma/mapping') diff --git a/src/main/java/cuchaz/enigma/mapping/Translator.java b/src/main/java/cuchaz/enigma/mapping/Translator.java index de48c9a..125e03f 100644 --- a/src/main/java/cuchaz/enigma/mapping/Translator.java +++ b/src/main/java/cuchaz/enigma/mapping/Translator.java @@ -203,22 +203,29 @@ public class Translator { throw new Error("Wrong entry type!"); } + // TODO: support not identical behavior (specific to constructor) public String translate(ArgumentEntry in) { - // look for the class - ClassMapping classMapping = findClassMapping(in.getClassEntry()); - if (classMapping != null) { + // look for identical behavior in superclasses + ClassEntry entry = this.index.resolveEntryClass(in, true); - // look for the method - MethodMapping methodMapping = this.direction.choose( - classMapping.getMethodByObf(in.getMethodName(), in.getMethodSignature()), - classMapping.getMethodByDeobf(in.getMethodName(), translateSignature(in.getMethodSignature())) - ); - if (methodMapping != null) { - return this.direction.choose( - methodMapping.getDeobfArgumentName(in.getIndex()), - methodMapping.getObfArgumentName(in.getIndex()) + if (entry != null) + { + // look for the class + ClassMapping classMapping = findClassMapping(entry); + if (classMapping != null) { + + // look for the method + MethodMapping methodMapping = this.direction.choose( + classMapping.getMethodByObf(in.getMethodName(), in.getMethodSignature()), + classMapping.getMethodByDeobf(in.getMethodName(), translateSignature(in.getMethodSignature())) ); + if (methodMapping != null) { + return this.direction.choose( + methodMapping.getDeobfArgumentName(in.getIndex()), + methodMapping.getObfArgumentName(in.getIndex()) + ); + } } } return null; -- cgit v1.2.3