Esempio n. 1
0
        public static object CreateDerivedProxyIfRequiredAndPossible(this Component ui)
        {
            if (ui.IsKnownTextType())
            {
#if MANAGED
                return(ui);
#else
                var unityType = ui.GetUnityType();
                if (Settings.EnableUGUI && UnityTypes.Text != null && UnityTypes.Text.IsAssignableFrom(unityType))
                {
                    return(Il2CppUtilities.CreateProxyComponentWithDerivedType(ui.Pointer, UnityTypes.Text.ClrType));
                }
                else if (Settings.EnableTextMesh && UnityTypes.TextMesh != null && UnityTypes.TextMesh.IsAssignableFrom(unityType))
                {
                    return(Il2CppUtilities.CreateProxyComponentWithDerivedType(ui.Pointer, UnityTypes.TextMesh.ClrType));
                }
                else if (Settings.EnableTextMeshPro && UnityTypes.TextMeshProUGUI != null && UnityTypes.TextMeshProUGUI.IsAssignableFrom(unityType))
                {
                    return(Il2CppUtilities.CreateProxyComponentWithDerivedType(ui.Pointer, UnityTypes.TextMeshProUGUI.ClrType));
                }
                else if (Settings.EnableTextMeshPro && UnityTypes.TextMeshPro != null && UnityTypes.TextMeshPro.IsAssignableFrom(unityType))
                {
                    return(Il2CppUtilities.CreateProxyComponentWithDerivedType(ui.Pointer, UnityTypes.TextMeshPro.ClrType));
                }
                else if (Settings.EnableTextMeshPro && UnityTypes.TMP_Text != null && UnityTypes.TMP_Text.IsAssignableFrom(unityType))
                {
                    return(Il2CppUtilities.CreateProxyComponentWithDerivedType(ui.Pointer, UnityTypes.TMP_Text.ClrType));
                }
#endif
            }

            return(null);
        }
Esempio n. 2
0
 public static Component CreateNGUIDerivedProxy(this IntPtr ui)
 {
     if (UnityTypes.UILabel != null && ui.IsInstancePointerAssignableFrom(UnityTypes.UILabel.ClassPointer))
     {
         return((Component)Il2CppUtilities.CreateProxyComponentWithDerivedType(ui, UnityTypes.UILabel.ClrType));
     }
     return(null);
 }
Esempio n. 3
0
        static void ML_Detour(IntPtr instance)
        {
            Il2CppUtilities.InvokeMethod(UnityTypes.TextMeshPro_Methods.IL2CPP.OnEnable, instance);

            var __instance = (Component)Il2CppUtilities.CreateProxyComponentWithDerivedType(instance, UnityTypes.TextMeshPro.ClrType);

            _Postfix(__instance);
        }
Esempio n. 4
0
        static void Postfix(Component __instance)
        {
#if IL2CPP
            __instance = (Component)Il2CppUtilities.CreateProxyComponentWithDerivedType(__instance.Pointer, UnityTypes.TextArea2D.ClrType);
#endif

            _Postfix(__instance);
        }
Esempio n. 5
0
        static void ML_Detour(IntPtr instance, IntPtr value)
        {
            Il2CppUtilities.InvokeMethod(UnityTypes.UILabel_Methods.IL2CPP.set_text, instance, value);

            var __instance = (Component)Il2CppUtilities.CreateProxyComponentWithDerivedType(instance, UnityTypes.UILabel.ClrType);

            _Postfix(__instance);
        }
Esempio n. 6
0
        static void Postfix(Component __instance)
        {
#if IL2CPP
            __instance = (Component)Il2CppUtilities.CreateProxyComponentWithDerivedType(__instance.Pointer, UnityTypes.TMP_Text.ClrType);
#endif

            AutoTranslationPlugin.Current.Hook_TextChanged(__instance, false);
        }
        static void Postfix(UnhollowerBaseLib.Il2CppObjectBase __instance)
#endif
        {
#if IL2CPP
            __instance = Il2CppUtilities.CreateProxyComponentWithDerivedType(__instance.Pointer, UnityTypes.TextField.ClrType);
#endif

            AutoTranslationPlugin.Current.Hook_TextChanged(__instance, false);
        }
Esempio n. 8
0
        static void ML_Detour(IntPtr instance)
        {
            Il2CppUtilities.InvokeMethod(UnityTypes.Text_Methods.IL2CPP.OnEnable, instance);

            if (instance.IsInstancePointerAssignableFrom(UnityTypes.Text.ClassPointer))
            {
                var __instance = (Component)Il2CppUtilities.CreateProxyComponentWithDerivedType(instance, UnityTypes.Text.ClrType);
                _Postfix(__instance);
            }
        }
Esempio n. 9
0
        static void Postfix(Component __instance)
        {
            if (UnityTypes.Text.IsAssignableFrom(__instance.GetUnityType()))
            {
#if IL2CPP
                __instance = (Component)Il2CppUtilities.CreateProxyComponentWithDerivedType(__instance.Pointer, UnityTypes.Text.ClrType);
#endif

                _Postfix(__instance);
            }
        }
Esempio n. 10
0
        public static Component GetOrCreateNGUIDerivedProxy(this Component ui)
        {
            var unityType = ui.GetUnityType();

            if (UnityTypes.UILabel != null && UnityTypes.UILabel.IsAssignableFrom(unityType))
            {
#if IL2CPP
                return((Component)Il2CppUtilities.CreateProxyComponentWithDerivedType(ui.Pointer, UnityTypes.UILabel.ClrType));
#else
                return(ui);
#endif
            }
            return(null);
        }
Esempio n. 11
0
 public static Component CreateTextMeshProDerivedProxy(this IntPtr ui)
 {
     if (UnityTypes.TextMeshProUGUI != null && ui.IsInstancePointerAssignableFrom(UnityTypes.TextMeshProUGUI.ClassPointer))
     {
         return((Component)Il2CppUtilities.CreateProxyComponentWithDerivedType(ui, UnityTypes.TextMeshProUGUI.ClrType));
     }
     else if (UnityTypes.TextMeshPro != null && ui.IsInstancePointerAssignableFrom(UnityTypes.TextMeshPro.ClassPointer))
     {
         return((Component)Il2CppUtilities.CreateProxyComponentWithDerivedType(ui, UnityTypes.TextMeshPro.ClrType));
     }
     else if (UnityTypes.TMP_Text != null && ui.IsInstancePointerAssignableFrom(UnityTypes.TMP_Text.ClassPointer))
     {
         return((Component)Il2CppUtilities.CreateProxyComponentWithDerivedType(ui, UnityTypes.TMP_Text.ClrType));
     }
     return(null);
 }
        static void _Postfix(GameObject __instance, bool value)
        {
            if (value)
            {
                var tms = __instance.GetComponentsInChildren(UnityTypes.TextMesh.UnityType);
                foreach (var tm in tms)
                {
#if IL2CPP
                    var comp = Il2CppUtilities.CreateProxyComponentWithDerivedType(tm.Pointer, UnityTypes.TextMesh.ClrType);
                    AutoTranslationPlugin.Current.Hook_TextChanged(comp, true);
#else
                    AutoTranslationPlugin.Current.Hook_TextChanged(tm, true);
#endif
                }
            }
        }
Esempio n. 13
0
        public static Component CreateTextMeshProDerivedProxy(this Component ui)
        {
            var unityType = ui.GetUnityType();

            if (UnityTypes.TextMeshProUGUI != null && UnityTypes.TextMeshProUGUI.IsAssignableFrom(unityType))
            {
                return((Component)Il2CppUtilities.CreateProxyComponentWithDerivedType(ui.Pointer, UnityTypes.TextMeshProUGUI.ClrType));
            }
            else if (UnityTypes.TextMeshPro != null && UnityTypes.TextMeshPro.IsAssignableFrom(unityType))
            {
                return((Component)Il2CppUtilities.CreateProxyComponentWithDerivedType(ui.Pointer, UnityTypes.TextMeshPro.ClrType));
            }
            else if (UnityTypes.TMP_Text != null && UnityTypes.TMP_Text.IsAssignableFrom(unityType))
            {
                return((Component)Il2CppUtilities.CreateProxyComponentWithDerivedType(ui.Pointer, UnityTypes.TMP_Text.ClrType));
            }
            return(null);
        }
Esempio n. 14
0
        public static void FixLabel(ref string label)
        {
            var empty = new object[0];

            if (AdvManager == null && UnityTypes.AdvDataManager != null)
            {
                try
                {
                    AdvManager = GameObject.FindObjectOfType(UnityTypes.AdvDataManager.UnityType);
#if IL2CPP
                    AdvManager = Il2CppUtilities.CreateProxyComponentWithDerivedType(((UnhollowerBaseLib.Il2CppObjectBase)AdvManager).Pointer, UnityTypes.AdvDataManager.ClrType);
#endif

                    var ScenarioDataTblProperty = UnityTypes.AdvDataManager.ClrType.GetProperty("ScenarioDataTbl");
                    var ScenarioDataTbl         = ScenarioDataTblProperty.GetValue(AdvManager, empty);

#if IL2CPP
                    var iterable1 = new ManagedDictionaryEnumerable(ScenarioDataTbl);
#else
                    ScenarioDataTbl.TryCastTo <IEnumerable>(out var iterable1);
#endif

                    foreach (object labelToAdvScenarioDataKeyValuePair in iterable1)
                    {
                        var labelToAdvScenarioDataKeyValuePairType = labelToAdvScenarioDataKeyValuePair.GetType();

                        var AdvScenarioDataKey = (string)labelToAdvScenarioDataKeyValuePairType.GetProperty("Key")
                                                 .GetValue(labelToAdvScenarioDataKeyValuePair, empty);

                        Labels.Add(AdvScenarioDataKey);

                        var AdvScenarioData = labelToAdvScenarioDataKeyValuePairType.GetProperty("Value")
                                              .GetValue(labelToAdvScenarioDataKeyValuePair, empty);

                        if (AdvScenarioData != null)
                        {
                            var ScenarioLabelsProperty = AdvScenarioData.GetType().GetProperty("ScenarioLabels");

                            var labelToAdvScenarioLabelData = ScenarioLabelsProperty.GetValue(AdvScenarioData, empty);

#if IL2CPP
                            var iterable2 = new ManagedDictionaryEnumerable(labelToAdvScenarioLabelData);
#else
                            labelToAdvScenarioLabelData.TryCastTo <IEnumerable>(out var iterable2);
#endif

                            foreach (object labelToAdvScenarioLabelDataKeyValuePair in iterable2)
                            {
                                var labelToAdvScenarioLabelDataKeyValuePairType = labelToAdvScenarioLabelDataKeyValuePair.GetType();

                                var AdvScenarioLabelDataKey = (string)labelToAdvScenarioLabelDataKeyValuePairType.GetProperty("Key")
                                                              .GetValue(labelToAdvScenarioLabelDataKeyValuePair, empty);

                                Labels.Add(AdvScenarioLabelDataKey);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    XuaLogger.AutoTranslator.Warn(e, "An error occurred while setting up scenario set.");
                }
            }

            if (!Labels.Contains(label))
            {
                var scope = TranslationScopeHelper.GetScope(null);
                if (AutoTranslationPlugin.Current.TextCache.TryGetReverseTranslation(label, scope, out string key))
                {
                    label = key;
                }
            }
        }