diff options
| author | 2014-09-01 22:52:07 -0400 | |
|---|---|---|
| committer | 2014-09-01 22:52:07 -0400 | |
| commit | 360bbd1c2fca8cbd575907b7d930a8072fccb0c2 (patch) | |
| tree | 93d0f3c4a0901411427df580c5ddb75cf27440f1 /src/cuchaz/enigma/mapping/Mappings.java | |
| parent | added copyright notice (diff) | |
| download | enigma-fork-360bbd1c2fca8cbd575907b7d930a8072fccb0c2.tar.gz enigma-fork-360bbd1c2fca8cbd575907b7d930a8072fccb0c2.tar.xz enigma-fork-360bbd1c2fca8cbd575907b7d930a8072fccb0c2.zip | |
refactored jar,translation index. fixed bug with field renaming when fields are shadowed by subclasses
Diffstat (limited to 'src/cuchaz/enigma/mapping/Mappings.java')
| -rw-r--r-- | src/cuchaz/enigma/mapping/Mappings.java | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/cuchaz/enigma/mapping/Mappings.java b/src/cuchaz/enigma/mapping/Mappings.java index 378d4c0..f52094f 100644 --- a/src/cuchaz/enigma/mapping/Mappings.java +++ b/src/cuchaz/enigma/mapping/Mappings.java | |||
| @@ -24,8 +24,7 @@ import com.beust.jcommander.internal.Sets; | |||
| 24 | import com.google.common.collect.Maps; | 24 | import com.google.common.collect.Maps; |
| 25 | 25 | ||
| 26 | import cuchaz.enigma.Util; | 26 | import cuchaz.enigma.Util; |
| 27 | import cuchaz.enigma.analysis.Ancestries; | 27 | import cuchaz.enigma.analysis.TranslationIndex; |
| 28 | import cuchaz.enigma.analysis.DeobfuscatedAncestries; | ||
| 29 | import cuchaz.enigma.mapping.SignatureUpdater.ClassNameUpdater; | 28 | import cuchaz.enigma.mapping.SignatureUpdater.ClassNameUpdater; |
| 30 | 29 | ||
| 31 | public class Mappings implements Serializable | 30 | public class Mappings implements Serializable |
| @@ -108,12 +107,27 @@ public class Mappings implements Serializable | |||
| 108 | return m_classesByDeobf.get( deobfName ); | 107 | return m_classesByDeobf.get( deobfName ); |
| 109 | } | 108 | } |
| 110 | 109 | ||
| 111 | public Translator getTranslator( Ancestries ancestries, TranslationDirection direction ) | 110 | public Translator getTranslator( TranslationIndex index, TranslationDirection direction ) |
| 112 | { | 111 | { |
| 112 | if( direction == TranslationDirection.Obfuscating ) | ||
| 113 | { | ||
| 114 | // deobfuscate the index | ||
| 115 | index = new TranslationIndex( index ); | ||
| 116 | Map<String,String> renames = Maps.newHashMap(); | ||
| 117 | for( ClassMapping classMapping : classes() ) | ||
| 118 | { | ||
| 119 | renames.put( classMapping.getObfName(), classMapping.getDeobfName() ); | ||
| 120 | for( ClassMapping innerClassMapping : classMapping.innerClasses() ) | ||
| 121 | { | ||
| 122 | renames.put( innerClassMapping.getObfName(), innerClassMapping.getDeobfName() ); | ||
| 123 | } | ||
| 124 | } | ||
| 125 | index.renameClasses( renames ); | ||
| 126 | } | ||
| 113 | return new Translator( | 127 | return new Translator( |
| 114 | direction, | 128 | direction, |
| 115 | direction.choose( m_classesByObf, m_classesByDeobf ), | 129 | direction.choose( m_classesByObf, m_classesByDeobf ), |
| 116 | direction.choose( ancestries, new DeobfuscatedAncestries( ancestries, m_classesByObf, m_classesByDeobf ) ) | 130 | index |
| 117 | ); | 131 | ); |
| 118 | } | 132 | } |
| 119 | 133 | ||