summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/cuchaz')
-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 bebac4e..b05714c 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 {