summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar Thog2016-10-15 17:45:06 +0200
committerGravatar Thog2016-10-15 17:45:06 +0200
commit53a35332e6120ba60b8089e1fa572aa3386227f2 (patch)
tree928f00455326988a9877fece97bbc79e1c216024 /src/main/java
parentFix #41 (diff)
downloadenigma-53a35332e6120ba60b8089e1fa572aa3386227f2.tar.gz
enigma-53a35332e6120ba60b8089e1fa572aa3386227f2.tar.xz
enigma-53a35332e6120ba60b8089e1fa572aa3386227f2.zip
Rewrite translate(ArgumentEntry in) logic (Fix #44)
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/cuchaz/enigma/mapping/Translator.java27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/main/java/cuchaz/enigma/mapping/Translator.java b/src/main/java/cuchaz/enigma/mapping/Translator.java
index bebac4e1..b05714cc 100644
--- a/src/main/java/cuchaz/enigma/mapping/Translator.java
+++ b/src/main/java/cuchaz/enigma/mapping/Translator.java
@@ -212,10 +212,33 @@ public class Translator {
212 } 212 }
213 213
214 // TODO: support not identical behavior (specific to constructor) 214 // TODO: support not identical behavior (specific to constructor)
215 public String translate(ArgumentEntry in) { 215 public String translate(ArgumentEntry in)
216 {
217 String classTranslate = translateArgument(in);
216 218
219 // Not found in this class
220 if (classTranslate == null)
221 {
222 List<ClassEntry> ancestry = this.index.getAncestry(in.getClassEntry());
223
224 // Check in mother class for the arg
225 for (ClassEntry entry : ancestry)
226 {
227 ArgumentEntry motherArg = in.cloneToNewClass(entry);
228 if (this.index.entryExists(motherArg))
229 {
230 String result = translateArgument(motherArg);
231 if (result != null)
232 return result;
233 }
234 }
235 }
236 return classTranslate;
237 }
238
239 public String translateArgument(ArgumentEntry in) {
217 // look for identical behavior in superclasses 240 // look for identical behavior in superclasses
218 ClassEntry entry = this.index.resolveEntryClass(in, true); 241 ClassEntry entry = in.getClassEntry();
219 242
220 if (entry != null) 243 if (entry != null)
221 { 244 {