2025-05-30 13:32:29 +08:00
using Obfuz.Utils ;
2025-05-28 09:25:09 +08:00
using System ;
2025-05-21 09:23:29 +08:00
using System.Collections.Generic ;
using System.Linq ;
using UnityEngine ;
namespace Obfuz.Settings
{
2025-05-23 12:47:57 +08:00
public class SymbolObfuscationSettingsFacade
{
public bool debug ;
public string obfuscatedNamePrefix ;
public bool useConsistentNamespaceObfuscation ;
2025-06-13 21:00:58 +08:00
public bool detectReflectionCompatibility ;
2025-06-06 22:57:28 +08:00
public bool keepUnknownSymbolInSymbolMappingFile ;
2025-05-23 12:47:57 +08:00
public string symbolMappingFile ;
public List < string > ruleFiles ;
2025-05-28 09:25:09 +08:00
public List < Type > customRenamePolicyTypes ;
2025-05-23 12:47:57 +08:00
}
2025-05-21 09:23:29 +08:00
[Serializable]
public class SymbolObfuscationSettings
{
public bool debug ;
[Tooltip("prefix for obfuscated name to avoid name confliction with original name")]
public string obfuscatedNamePrefix = "$" ;
[Tooltip("obfuscate same namespace to one name")]
public bool useConsistentNamespaceObfuscation = true ;
2025-06-13 21:00:58 +08:00
[Tooltip("detect reflection compatibility, if true, will detect if the obfuscated name is compatibility with reflection, such as Type.GetType(), Enum.Parse(), etc.")]
public bool detectReflectionCompatibility = true ;
2025-06-06 22:57:28 +08:00
[Tooltip("keep unknown symbol in symbol mapping file, if false, unknown symbol will be removed from mapping file")]
public bool keepUnknownSymbolInSymbolMappingFile = true ;
2025-05-21 09:23:29 +08:00
[Tooltip("symbol mapping file path")]
public string symbolMappingFile = "Assets/Obfuz/SymbolObfus/symbol-mapping.xml" ;
2025-05-29 11:39:10 +08:00
[Tooltip("debug symbol mapping file path, used for debugging purposes")]
public string debugSymbolMappingFile = "Assets/Obfuz/SymbolObfus/symbol-mapping-debug.xml" ;
2025-05-21 09:23:29 +08:00
[Tooltip("rule files")]
public string [ ] ruleFiles ;
2025-05-23 12:47:57 +08:00
2025-05-28 09:25:09 +08:00
[Tooltip("custom rename policy types")]
public string [ ] customRenamePolicyTypes ;
2025-05-29 11:39:10 +08:00
public string GetSymbolMappingFile ( )
{
return debug ? debugSymbolMappingFile : symbolMappingFile ;
}
2025-05-23 12:47:57 +08:00
public SymbolObfuscationSettingsFacade ToFacade ( )
{
return new SymbolObfuscationSettingsFacade
{
debug = debug ,
obfuscatedNamePrefix = obfuscatedNamePrefix ,
useConsistentNamespaceObfuscation = useConsistentNamespaceObfuscation ,
2025-06-13 21:00:58 +08:00
detectReflectionCompatibility = detectReflectionCompatibility ,
2025-06-06 22:57:28 +08:00
keepUnknownSymbolInSymbolMappingFile = keepUnknownSymbolInSymbolMappingFile ,
2025-05-29 11:39:10 +08:00
symbolMappingFile = GetSymbolMappingFile ( ) ,
2025-05-28 17:23:24 +08:00
ruleFiles = ruleFiles ? . ToList ( ) ? ? new List < string > ( ) ,
customRenamePolicyTypes = customRenamePolicyTypes ? . Select ( typeName = > ReflectionUtil . FindUniqueTypeInCurrentAppDomain ( typeName ) ) . ToList ( ) ? ? new List < Type > ( ) ,
2025-05-23 12:47:57 +08:00
} ;
}
2025-05-21 09:23:29 +08:00
}
}