diff options
Diffstat (limited to 'src/main/java/cuchaz')
| -rw-r--r-- | src/main/java/cuchaz/enigma/mapping/Translator.java | 27 |
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 | { |