diff options
Diffstat (limited to 'Thronefall_1_57/Decompile/I2.Loc/I2Utils.cs')
| -rw-r--r-- | Thronefall_1_57/Decompile/I2.Loc/I2Utils.cs | 301 |
1 files changed, 301 insertions, 0 deletions
diff --git a/Thronefall_1_57/Decompile/I2.Loc/I2Utils.cs b/Thronefall_1_57/Decompile/I2.Loc/I2Utils.cs new file mode 100644 index 0000000..a60bb8e --- /dev/null +++ b/Thronefall_1_57/Decompile/I2.Loc/I2Utils.cs @@ -0,0 +1,301 @@ +using System; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; +using UnityEngine; +using UnityEngine.Networking; +using UnityEngine.SceneManagement; + +namespace I2.Loc; + +public static class I2Utils +{ + public const string ValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"; + + public const string NumberChars = "0123456789"; + + public const string ValidNameSymbols = ".-_$#@*()[]{}+:?!&',^=<>~`"; + + public static string ReverseText(string source) + { + int length = source.Length; + char[] output = new char[length]; + char[] anyOf = new char[2] { '\r', '\n' }; + int i = 0; + while (i < length) + { + int num = source.IndexOfAny(anyOf, i); + if (num < 0) + { + num = length; + } + Reverse(i, num - 1); + for (i = num; i < length && (source[i] == '\r' || source[i] == '\n'); i++) + { + output[i] = source[i]; + } + } + return new string(output); + void Reverse(int start, int end) + { + for (int j = 0; j <= end - start; j++) + { + output[end - j] = source[start + j]; + } + } + } + + public static string RemoveNonASCII(string text, bool allowCategory = false) + { + if (string.IsNullOrEmpty(text)) + { + return text; + } + int num = 0; + char[] array = new char[text.Length]; + bool flag = false; + string text2 = text.Trim(); + foreach (char c in text2) + { + char c2 = ' '; + if ((allowCategory && (c == '\\' || c == '"' || c == '/')) || char.IsLetterOrDigit(c) || ".-_$#@*()[]{}+:?!&',^=<>~`".IndexOf(c) >= 0) + { + c2 = c; + } + if (char.IsWhiteSpace(c2)) + { + if (!flag) + { + if (num > 0) + { + array[num++] = ' '; + } + flag = true; + } + } + else + { + flag = false; + array[num++] = c2; + } + } + return new string(array, 0, num); + } + + public static string GetValidTermName(string text, bool allowCategory = false) + { + if (text == null) + { + return null; + } + text = RemoveTags(text); + return RemoveNonASCII(text, allowCategory); + } + + public static string SplitLine(string line, int maxCharacters) + { + if (maxCharacters <= 0 || line.Length < maxCharacters) + { + return line; + } + char[] array = line.ToCharArray(); + bool flag = true; + bool flag2 = false; + int i = 0; + int num = 0; + for (; i < array.Length; i++) + { + if (flag) + { + num++; + if (array[i] == '\n') + { + num = 0; + } + if (num >= maxCharacters && char.IsWhiteSpace(array[i])) + { + array[i] = '\n'; + flag = false; + flag2 = false; + } + } + else if (!char.IsWhiteSpace(array[i])) + { + flag = true; + num = 0; + } + else if (array[i] != '\n') + { + array[i] = '\0'; + } + else + { + if (!flag2) + { + array[i] = '\0'; + } + flag2 = true; + } + } + return new string(array.Where((char c) => c != '\0').ToArray()); + } + + public static bool FindNextTag(string line, int iStart, out int tagStart, out int tagEnd) + { + tagStart = -1; + tagEnd = -1; + int length = line.Length; + tagStart = iStart; + while (tagStart < length && line[tagStart] != '[' && line[tagStart] != '(' && line[tagStart] != '{' && line[tagStart] != '<') + { + tagStart++; + } + if (tagStart == length) + { + return false; + } + bool flag = false; + for (tagEnd = tagStart + 1; tagEnd < length; tagEnd++) + { + char c = line[tagEnd]; + if (c == ']' || c == ')' || c == '}' || c == '>') + { + if (flag) + { + return FindNextTag(line, tagEnd + 1, out tagStart, out tagEnd); + } + return true; + } + if (c > 'ΓΏ') + { + flag = true; + } + } + return false; + } + + public static string RemoveTags(string text) + { + return Regex.Replace(text, "\\{\\[(.*?)]}|\\[(.*?)]|\\<(.*?)>", ""); + } + + public static bool RemoveResourcesPath(ref string sPath) + { + int num = sPath.IndexOf("\\Resources\\", StringComparison.Ordinal); + int num2 = sPath.IndexOf("\\Resources/", StringComparison.Ordinal); + int num3 = sPath.IndexOf("/Resources\\", StringComparison.Ordinal); + int num4 = sPath.IndexOf("/Resources/", StringComparison.Ordinal); + int num5 = Mathf.Max(num, num2, num3, num4); + bool result = false; + if (num5 >= 0) + { + sPath = sPath.Substring(num5 + 11); + result = true; + } + else + { + num5 = sPath.LastIndexOfAny(LanguageSourceData.CategorySeparators); + if (num5 > 0) + { + sPath = sPath.Substring(num5 + 1); + } + } + string extension = Path.GetExtension(sPath); + if (!string.IsNullOrEmpty(extension)) + { + sPath = sPath.Substring(0, sPath.Length - extension.Length); + } + return result; + } + + public static bool IsPlaying() + { + if (Application.isPlaying) + { + return true; + } + return false; + } + + public static string GetPath(this Transform tr) + { + Transform parent = tr.parent; + if (tr == null) + { + return tr.name; + } + return parent.GetPath() + "/" + tr.name; + } + + public static Transform FindObject(string objectPath) + { + return FindObject(SceneManager.GetActiveScene(), objectPath); + } + + public static Transform FindObject(Scene scene, string objectPath) + { + GameObject[] rootGameObjects = scene.GetRootGameObjects(); + for (int i = 0; i < rootGameObjects.Length; i++) + { + Transform transform = rootGameObjects[i].transform; + if (transform.name == objectPath) + { + return transform; + } + if (objectPath.StartsWith(transform.name + "/", StringComparison.Ordinal)) + { + return FindObject(transform, objectPath.Substring(transform.name.Length + 1)); + } + } + return null; + } + + public static Transform FindObject(Transform root, string objectPath) + { + for (int i = 0; i < root.childCount; i++) + { + Transform child = root.GetChild(i); + if (child.name == objectPath) + { + return child; + } + if (objectPath.StartsWith(child.name + "/", StringComparison.Ordinal)) + { + return FindObject(child, objectPath.Substring(child.name.Length + 1)); + } + } + return null; + } + + public static H FindInParents<H>(Transform tr) where H : Component + { + if (!tr) + { + return null; + } + H component = tr.GetComponent<H>(); + while (!(UnityEngine.Object)component && (bool)tr) + { + component = tr.GetComponent<H>(); + tr = tr.parent; + } + return component; + } + + public static string GetCaptureMatch(Match match) + { + for (int num = match.Groups.Count - 1; num >= 0; num--) + { + if (match.Groups[num].Success) + { + return match.Groups[num].ToString(); + } + } + return match.ToString(); + } + + public static void SendWebRequest(UnityWebRequest www) + { + www.SendWebRequest(); + } +} |
