diff --git a/.gitignore b/.gitignore
index 2a2b1d90..faafeb70 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@
## files generated by popular Visual Studio add-ons.
PrePatcher/Output
+PostPatcher/Output
# User-specific files
*.suo
diff --git a/Assembly-CSharp/Assembly-CSharp.csproj b/Assembly-CSharp/Assembly-CSharp.csproj
index 337c16c9..0add8292 100644
--- a/Assembly-CSharp/Assembly-CSharp.csproj
+++ b/Assembly-CSharp/Assembly-CSharp.csproj
@@ -10,14 +10,14 @@
true
packages
latest
+ true
-
-
+
@@ -30,8 +30,8 @@
C:/Program Files (x86)/Steam/steamapps/common/Hollow Knight
$(HOME)/.local/share/Steam/steamapps/common/Hollow Knight
- $(GamePath)/hollow_knight_Data/Managed
-
+ $(GamePath)/hollow_knight_Data/Managed
+
mono
@@ -41,12 +41,23 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -58,13 +69,13 @@
-
+
-
+
-
+
@@ -72,16 +83,14 @@
-
+
-
-
-
+
-
+
-
+
.dll
@@ -95,14 +104,14 @@
-
+
-
+
full
bin\$(Configuration)\Assembly-CSharp.mm.xml
@@ -120,20 +129,23 @@
all
-
+
all
-
+
-
+
false
+
+ false
+
-
+
@@ -141,64 +153,16 @@
-
- ../Vanilla/Assembly-CSharp.dll
- False
-
-
- ..\override\mscorlib.dll
-
-
- ../Vanilla/netstandard.dll
-
-
- ../JsonNet/Newtonsoft.Json.dll
-
-
- ../Vanilla/PlayMaker.dll
- False
-
-
- ../Vanilla/UnityEngine.dll
-
-
- ../Vanilla/UnityEngine.AnimationModule.dll
-
-
- ../Vanilla/UnityEngine.AssetBundleModule.dll
-
-
- ../Vanilla/UnityEngine.AudioModule.dll
-
-
- ../Vanilla/UnityEngine.CoreModule.dll
-
-
- ../Vanilla/UnityEngine.ImageConversionModule.dll
-
-
- ../Vanilla/UnityEngine.IMGUIModule.dll
-
-
- ../Vanilla/UnityEngine.InputLegacyModule.dll
-
-
- ../Vanilla/UnityEngine.JSONSerializeModule.dll
-
-
- ../Vanilla/UnityEngine.ParticleSystemModule.dll
-
-
- ../Vanilla/UnityEngine.Physics2DModule.dll
-
-
- ../Vanilla/UnityEngine.TextRenderingModule.dll
-
-
- ../Vanilla/UnityEngine.UI.dll
-
-
- ../Vanilla/UnityEngine.UIModule.dll
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Assembly-CSharp/Console.cs b/Assembly-CSharp/Console.cs
index d9fb51a4..a29911f8 100644
--- a/Assembly-CSharp/Console.cs
+++ b/Assembly-CSharp/Console.cs
@@ -76,7 +76,8 @@ public void Start()
string.Join(string.Empty, _messages.ToArray()),
_fontSize,
TextAnchor.LowerLeft,
- new CanvasUtil.RectData(new Vector2(-5, -5), Vector2.zero, Vector2.zero, Vector2.one),
+ //new CanvasUtil.RectData(new Vector2(-5, -5), Vector2.zero, Vector2.zero, Vector2.one),
+ new CanvasUtil.RectData(Vector2.zero, Vector2.zero, Vector2.zero, Vector2.one),
_font
);
diff --git a/Assembly-CSharp/Language/Language.cs b/Assembly-CSharp/Language/Language.cs
new file mode 100644
index 00000000..91c55d10
--- /dev/null
+++ b/Assembly-CSharp/Language/Language.cs
@@ -0,0 +1,91 @@
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using UObject = UnityEngine.Object;
+using USystemLanguage = UnityEngine.SystemLanguage;
+
+namespace Language;
+
+[Obsolete("Use `TeamCherry.Localization.Language` instead.")]
+public static class Language
+{
+ public static void LoadLanguage() => COMPAT_LoadLanguage();
+ public static void LoadAvailableLanguages() => COMPAT_LoadAvailableLanguages();
+ public static string[] GetLanguages() => COMPAT_GetLanguages();
+ public static bool SwitchLanguage(string langCode) => COMPAT_SwitchLanguage(langCode);
+ public static bool SwitchLanguage(LanguageCode code) => COMPAT_SwitchLanguage((TeamCherry.Localization.LanguageCode) code);
+ public static UObject GetAsset(string name) => COMPAT_GetAsset(name);
+ public static LanguageCode CurrentLanguage() => (LanguageCode) COMPAT_CurrentLanguage();
+ public static string Get(string key) => COMPAT_Get(key);
+ public static IEnumerable GetSheets() => COMPAT_GetSheets();
+ public static IEnumerable GetKeys(string sheetTitle) => COMPAT_GetKeys(sheetTitle);
+ public static bool Has(string key) => COMPAT_Has(key);
+ public static bool Has(string key, string sheet) => COMPAT_Has(key, sheet);
+ public static bool HasSheet(string sheet) => COMPAT_HasSheet(sheet);
+ public static LanguageCode LanguageNameToCode(USystemLanguage name) => (LanguageCode) COMPAT_LanguageNameToCode(name);
+ public static string GetInternal(string key, string sheetTitle) => COMPAT_Get(key, sheetTitle);
+ [MonoMod.MonoModLinkFrom("System.String TeamCherry.Localization.Language::Get(System.String,System.String)")]
+ public static string Get(string key, string sheetTitle) => Modding.ModHooks.LanguageGet(key, sheetTitle);
+
+ private static void DoSwitch(LanguageCode newLang) => COMPAT_DoSwitch((TeamCherry.Localization.LanguageCode) newLang);
+ private static bool HasLanguageFile(string lang, string sheetTitle) => COMPAT_HasLanguageFile(lang, sheetTitle);
+ private static string GetLanguageFileContents(string sheetTitle) => COMPAT_GetLanguageFileContents(sheetTitle);
+
+ // Keep these below the `[MonoMod.MonoModLinkFrom("TeamCherry.Localization.Language")]`, as the reverse order would cause a cyclic loop of methods calling themselves
+ // thanks to MonoMod resolving these links top-down
+ // which would make a `LinkTo(TCLL)->LinkFrom(TCLL)` into a fully recursive function ⟳
+ [MonoMod.MonoModLinkTo("TeamCherry.Localization.Language", "System.Void LoadLanguage()")]
+ [MonoMod.MonoModRemove]
+ private static extern void COMPAT_LoadLanguage();
+ [MonoMod.MonoModLinkTo("TeamCherry.Localization.Language", "System.Void LoadAvailableLanguages()")]
+ [MonoMod.MonoModRemove]
+ private static extern void COMPAT_LoadAvailableLanguages();
+ [MonoMod.MonoModLinkTo("TeamCherry.Localization.Language", "System.String[] GetLanguages()")]
+ [MonoMod.MonoModRemove]
+ private static extern string[] COMPAT_GetLanguages();
+ [MonoMod.MonoModLinkTo("TeamCherry.Localization.Language", "System.Boolean SwitchLanguage(System.String)")]
+ [MonoMod.MonoModRemove]
+ private static extern bool COMPAT_SwitchLanguage(string langCode);
+ [MonoMod.MonoModLinkTo("TeamCherry.Localization.Language", "System.Boolean SwitchLanguage(TeamCherry.Localization.LanguageCode)")]
+ [MonoMod.MonoModRemove]
+ private static extern bool COMPAT_SwitchLanguage(TeamCherry.Localization.LanguageCode code);
+ [MonoMod.MonoModLinkTo("TeamCherry.Localization.Language", "UnityEngine.Object GetAsset(System.String)")]
+ [MonoMod.MonoModRemove]
+ private static extern UObject COMPAT_GetAsset(string name);
+ [MonoMod.MonoModLinkTo("TeamCherry.Localization.Language", "TeamCherry.Localization.LanguageCode CurrentLanguage()")]
+ [MonoMod.MonoModRemove]
+ private static extern TeamCherry.Localization.LanguageCode COMPAT_CurrentLanguage();
+ [MonoMod.MonoModLinkTo("TeamCherry.Localization.Language", "System.String Get(System.String)")]
+ [MonoMod.MonoModRemove]
+ private static extern string COMPAT_Get(string key);
+ [MonoMod.MonoModLinkTo("TeamCherry.Localization.Language", "System.String Get(System.String,System.String)")]
+ [MonoMod.MonoModRemove]
+ private static extern string COMPAT_Get(string key, string sheetTitle);
+ [MonoMod.MonoModLinkTo("TeamCherry.Localization.Language", "System.Collections.Generic.IEnumerable`1 GetSheets()")]
+ [MonoMod.MonoModRemove]
+ private static extern IEnumerable COMPAT_GetSheets();
+ [MonoMod.MonoModLinkTo("TeamCherry.Localization.Language", "System.Collections.Generic.IEnumerable`1 GetKeys(System.String)")]
+ [MonoMod.MonoModRemove]
+ private static extern IEnumerable COMPAT_GetKeys(string sheetTitle);
+ [MonoMod.MonoModLinkTo("TeamCherry.Localization.Language", "System.Boolean Has(System.String)")]
+ [MonoMod.MonoModRemove]
+ private static extern bool COMPAT_Has(string key);
+ [MonoMod.MonoModLinkTo("TeamCherry.Localization.Language", "System.Boolean Has(System.String,System.String)")]
+ [MonoMod.MonoModRemove]
+ private static extern bool COMPAT_Has(string key, string sheet);
+ [MonoMod.MonoModLinkTo("TeamCherry.Localization.Language", "System.Boolean HasSheet(System.String)")]
+ [MonoMod.MonoModRemove]
+ private static extern bool COMPAT_HasSheet(string sheet);
+ [MonoMod.MonoModLinkTo("TeamCherry.Localization.Language", "TeamCherry.Localization.LanguageCode LanguageNameToCode(UnityEngine.SystemLanguage)")]
+ [MonoMod.MonoModRemove]
+ private static extern TeamCherry.Localization.LanguageCode COMPAT_LanguageNameToCode(USystemLanguage name);
+ [MonoMod.MonoModLinkTo("TeamCherry.Localization.Language", "System.Void DoSwitch(TeamCherry.Localization.LanguageCode)")]
+ [MonoMod.MonoModRemove]
+ private static extern TeamCherry.Localization.LanguageCode COMPAT_DoSwitch(TeamCherry.Localization.LanguageCode name);
+ [MonoMod.MonoModLinkTo("TeamCherry.Localization.Language", "System.Boolean HasLanguageFile(System.String,System.String)")]
+ [MonoMod.MonoModRemove]
+ private static extern bool COMPAT_HasLanguageFile(string lang, string sheetTitle);
+ [MonoMod.MonoModLinkTo("TeamCherry.Localization.Language", "System.String GetLanguageFileContents(System.String)")]
+ [MonoMod.MonoModRemove]
+ private static extern string COMPAT_GetLanguageFileContents(string sheetTitle);
+}
\ No newline at end of file
diff --git a/Assembly-CSharp/Language/LanguageCode.cs b/Assembly-CSharp/Language/LanguageCode.cs
new file mode 100644
index 00000000..5f3fce38
--- /dev/null
+++ b/Assembly-CSharp/Language/LanguageCode.cs
@@ -0,0 +1,211 @@
+namespace Language;
+
+// for backwards compatibility
+public enum LanguageCode
+{
+ N = TeamCherry.Localization.LanguageCode.N,
+ AA = TeamCherry.Localization.LanguageCode.AA,
+ AB = TeamCherry.Localization.LanguageCode.AB,
+ AF = TeamCherry.Localization.LanguageCode.AF,
+ AM = TeamCherry.Localization.LanguageCode.AM,
+ AR = TeamCherry.Localization.LanguageCode.AR,
+ AR_SA = TeamCherry.Localization.LanguageCode.AR_SA,
+ AR_EG = TeamCherry.Localization.LanguageCode.AR_EG,
+ AR_DZ = TeamCherry.Localization.LanguageCode.AR_DZ,
+ AR_YE = TeamCherry.Localization.LanguageCode.AR_YE,
+ AR_JO = TeamCherry.Localization.LanguageCode.AR_JO,
+ AR_KW = TeamCherry.Localization.LanguageCode.AR_KW,
+ AR_BH = TeamCherry.Localization.LanguageCode.AR_BH,
+ AR_IQ = TeamCherry.Localization.LanguageCode.AR_IQ,
+ AR_MA = TeamCherry.Localization.LanguageCode.AR_MA,
+ AR_LY = TeamCherry.Localization.LanguageCode.AR_LY,
+ AR_OM = TeamCherry.Localization.LanguageCode.AR_OM,
+ AR_SY = TeamCherry.Localization.LanguageCode.AR_SY,
+ AR_LB = TeamCherry.Localization.LanguageCode.AR_LB,
+ AR_AE = TeamCherry.Localization.LanguageCode.AR_AE,
+ AR_QA = TeamCherry.Localization.LanguageCode.AR_QA,
+ AS = TeamCherry.Localization.LanguageCode.AS,
+ AY = TeamCherry.Localization.LanguageCode.AY,
+ AZ = TeamCherry.Localization.LanguageCode.AZ,
+ BA = TeamCherry.Localization.LanguageCode.BA,
+ BE = TeamCherry.Localization.LanguageCode.BE,
+ BG = TeamCherry.Localization.LanguageCode.BG,
+ BH = TeamCherry.Localization.LanguageCode.BH,
+ BI = TeamCherry.Localization.LanguageCode.BI,
+ BN = TeamCherry.Localization.LanguageCode.BN,
+ BO = TeamCherry.Localization.LanguageCode.BO,
+ BR = TeamCherry.Localization.LanguageCode.BR,
+ CA = TeamCherry.Localization.LanguageCode.CA,
+ CO = TeamCherry.Localization.LanguageCode.CO,
+ CS = TeamCherry.Localization.LanguageCode.CS,
+ CY = TeamCherry.Localization.LanguageCode.CY,
+ DA = TeamCherry.Localization.LanguageCode.DA,
+ DE = TeamCherry.Localization.LanguageCode.DE,
+ DE_AT = TeamCherry.Localization.LanguageCode.DE_AT,
+ DE_LI = TeamCherry.Localization.LanguageCode.DE_LI,
+ DE_CH = TeamCherry.Localization.LanguageCode.DE_CH,
+ DE_LU = TeamCherry.Localization.LanguageCode.DE_LU,
+ DZ = TeamCherry.Localization.LanguageCode.DZ,
+ EL = TeamCherry.Localization.LanguageCode.EL,
+ EN = TeamCherry.Localization.LanguageCode.EN,
+ EN_US = TeamCherry.Localization.LanguageCode.EN_US,
+ EN_AU = TeamCherry.Localization.LanguageCode.EN_AU,
+ EN_NZ = TeamCherry.Localization.LanguageCode.EN_NZ,
+ EN_ZA = TeamCherry.Localization.LanguageCode.EN_ZA,
+ EN_CB = TeamCherry.Localization.LanguageCode.EN_CB,
+ EN_TT = TeamCherry.Localization.LanguageCode.EN_TT,
+ EN_GB = TeamCherry.Localization.LanguageCode.EN_GB,
+ EN_CA = TeamCherry.Localization.LanguageCode.EN_CA,
+ EN_IE = TeamCherry.Localization.LanguageCode.EN_IE,
+ EN_JM = TeamCherry.Localization.LanguageCode.EN_JM,
+ EN_BZ = TeamCherry.Localization.LanguageCode.EN_BZ,
+ EO = TeamCherry.Localization.LanguageCode.EO,
+ ES = TeamCherry.Localization.LanguageCode.ES,
+ ES_MX = TeamCherry.Localization.LanguageCode.ES_MX,
+ ES_CR = TeamCherry.Localization.LanguageCode.ES_CR,
+ ES_DO = TeamCherry.Localization.LanguageCode.ES_DO,
+ ES_CO = TeamCherry.Localization.LanguageCode.ES_CO,
+ ES_AR = TeamCherry.Localization.LanguageCode.ES_AR,
+ ES_CL = TeamCherry.Localization.LanguageCode.ES_CL,
+ ES_PY = TeamCherry.Localization.LanguageCode.ES_PY,
+ ES_SV = TeamCherry.Localization.LanguageCode.ES_SV,
+ ES_NI = TeamCherry.Localization.LanguageCode.ES_NI,
+ ES_GT = TeamCherry.Localization.LanguageCode.ES_GT,
+ ES_PA = TeamCherry.Localization.LanguageCode.ES_PA,
+ ES_VE = TeamCherry.Localization.LanguageCode.ES_VE,
+ ES_PE = TeamCherry.Localization.LanguageCode.ES_PE,
+ ES_EC = TeamCherry.Localization.LanguageCode.ES_EC,
+ ES_UY = TeamCherry.Localization.LanguageCode.ES_UY,
+ ES_BO = TeamCherry.Localization.LanguageCode.ES_BO,
+ ES_HN = TeamCherry.Localization.LanguageCode.ES_HN,
+ ES_PR = TeamCherry.Localization.LanguageCode.ES_PR,
+ ET = TeamCherry.Localization.LanguageCode.ET,
+ EU = TeamCherry.Localization.LanguageCode.EU,
+ FA = TeamCherry.Localization.LanguageCode.FA,
+ FI = TeamCherry.Localization.LanguageCode.FI,
+ FJ = TeamCherry.Localization.LanguageCode.FJ,
+ FO = TeamCherry.Localization.LanguageCode.FO,
+ FR = TeamCherry.Localization.LanguageCode.FR,
+ FR_BE = TeamCherry.Localization.LanguageCode.FR_BE,
+ FR_CH = TeamCherry.Localization.LanguageCode.FR_CH,
+ FR_CA = TeamCherry.Localization.LanguageCode.FR_CA,
+ FR_LU = TeamCherry.Localization.LanguageCode.FR_LU,
+ FY = TeamCherry.Localization.LanguageCode.FY,
+ GA = TeamCherry.Localization.LanguageCode.GA,
+ GD = TeamCherry.Localization.LanguageCode.GD,
+ GL = TeamCherry.Localization.LanguageCode.GL,
+ GN = TeamCherry.Localization.LanguageCode.GN,
+ GU = TeamCherry.Localization.LanguageCode.GU,
+ HA = TeamCherry.Localization.LanguageCode.HA,
+ HI = TeamCherry.Localization.LanguageCode.HI,
+ HE = TeamCherry.Localization.LanguageCode.HE,
+ HR = TeamCherry.Localization.LanguageCode.HR,
+ HU = TeamCherry.Localization.LanguageCode.HU,
+ HY = TeamCherry.Localization.LanguageCode.HY,
+ IA = TeamCherry.Localization.LanguageCode.IA,
+ ID = TeamCherry.Localization.LanguageCode.ID,
+ IE = TeamCherry.Localization.LanguageCode.IE,
+ IK = TeamCherry.Localization.LanguageCode.IK,
+ IN = TeamCherry.Localization.LanguageCode.IN,
+ IS = TeamCherry.Localization.LanguageCode.IS,
+ IT = TeamCherry.Localization.LanguageCode.IT,
+ IT_CH = TeamCherry.Localization.LanguageCode.IT_CH,
+ IU = TeamCherry.Localization.LanguageCode.IU,
+ IW = TeamCherry.Localization.LanguageCode.IW,
+ JA = TeamCherry.Localization.LanguageCode.JA,
+ JI = TeamCherry.Localization.LanguageCode.JI,
+ JW = TeamCherry.Localization.LanguageCode.JW,
+ KA = TeamCherry.Localization.LanguageCode.KA,
+ KK = TeamCherry.Localization.LanguageCode.KK,
+ KL = TeamCherry.Localization.LanguageCode.KL,
+ KM = TeamCherry.Localization.LanguageCode.KM,
+ KN = TeamCherry.Localization.LanguageCode.KN,
+ KO = TeamCherry.Localization.LanguageCode.KO,
+ KS = TeamCherry.Localization.LanguageCode.KS,
+ KU = TeamCherry.Localization.LanguageCode.KU,
+ KY = TeamCherry.Localization.LanguageCode.KY,
+ LA = TeamCherry.Localization.LanguageCode.LA,
+ LN = TeamCherry.Localization.LanguageCode.LN,
+ LO = TeamCherry.Localization.LanguageCode.LO,
+ LT = TeamCherry.Localization.LanguageCode.LT,
+ LV = TeamCherry.Localization.LanguageCode.LV,
+ MG = TeamCherry.Localization.LanguageCode.MG,
+ MI = TeamCherry.Localization.LanguageCode.MI,
+ MK = TeamCherry.Localization.LanguageCode.MK,
+ ML = TeamCherry.Localization.LanguageCode.ML,
+ MN = TeamCherry.Localization.LanguageCode.MN,
+ MO = TeamCherry.Localization.LanguageCode.MO,
+ MR = TeamCherry.Localization.LanguageCode.MR,
+ MS = TeamCherry.Localization.LanguageCode.MS,
+ MT = TeamCherry.Localization.LanguageCode.MT,
+ MY = TeamCherry.Localization.LanguageCode.MY,
+ NA = TeamCherry.Localization.LanguageCode.NA,
+ NE = TeamCherry.Localization.LanguageCode.NE,
+ NL = TeamCherry.Localization.LanguageCode.NL,
+ NL_BE = TeamCherry.Localization.LanguageCode.NL_BE,
+ NO = TeamCherry.Localization.LanguageCode.NO,
+ OC = TeamCherry.Localization.LanguageCode.OC,
+ OM = TeamCherry.Localization.LanguageCode.OM,
+ OR = TeamCherry.Localization.LanguageCode.OR,
+ PA = TeamCherry.Localization.LanguageCode.PA,
+ PL = TeamCherry.Localization.LanguageCode.PL,
+ PS = TeamCherry.Localization.LanguageCode.PS,
+ PT = TeamCherry.Localization.LanguageCode.PT,
+ PT_BR = TeamCherry.Localization.LanguageCode.PT_BR,
+ QU = TeamCherry.Localization.LanguageCode.QU,
+ RM = TeamCherry.Localization.LanguageCode.RM,
+ RN = TeamCherry.Localization.LanguageCode.RN,
+ RO = TeamCherry.Localization.LanguageCode.RO,
+ RO_MO = TeamCherry.Localization.LanguageCode.RO_MO,
+ RU = TeamCherry.Localization.LanguageCode.RU,
+ RU_MO = TeamCherry.Localization.LanguageCode.RU_MO,
+ RW = TeamCherry.Localization.LanguageCode.RW,
+ SA = TeamCherry.Localization.LanguageCode.SA,
+ SD = TeamCherry.Localization.LanguageCode.SD,
+ SG = TeamCherry.Localization.LanguageCode.SG,
+ SH = TeamCherry.Localization.LanguageCode.SH,
+ SI = TeamCherry.Localization.LanguageCode.SI,
+ SK = TeamCherry.Localization.LanguageCode.SK,
+ SL = TeamCherry.Localization.LanguageCode.SL,
+ SM = TeamCherry.Localization.LanguageCode.SM,
+ SN = TeamCherry.Localization.LanguageCode.SN,
+ SO = TeamCherry.Localization.LanguageCode.SO,
+ SQ = TeamCherry.Localization.LanguageCode.SQ,
+ SR = TeamCherry.Localization.LanguageCode.SR,
+ SS = TeamCherry.Localization.LanguageCode.SS,
+ ST = TeamCherry.Localization.LanguageCode.ST,
+ SU = TeamCherry.Localization.LanguageCode.SU,
+ SV = TeamCherry.Localization.LanguageCode.SV,
+ SV_FI = TeamCherry.Localization.LanguageCode.SV_FI,
+ SW = TeamCherry.Localization.LanguageCode.SW,
+ TA = TeamCherry.Localization.LanguageCode.TA,
+ TE = TeamCherry.Localization.LanguageCode.TE,
+ TG = TeamCherry.Localization.LanguageCode.TG,
+ TH = TeamCherry.Localization.LanguageCode.TH,
+ TI = TeamCherry.Localization.LanguageCode.TI,
+ TK = TeamCherry.Localization.LanguageCode.TK,
+ TL = TeamCherry.Localization.LanguageCode.TL,
+ TN = TeamCherry.Localization.LanguageCode.TN,
+ TO = TeamCherry.Localization.LanguageCode.TO,
+ TR = TeamCherry.Localization.LanguageCode.TR,
+ TS = TeamCherry.Localization.LanguageCode.TS,
+ TT = TeamCherry.Localization.LanguageCode.TT,
+ TW = TeamCherry.Localization.LanguageCode.TW,
+ UG = TeamCherry.Localization.LanguageCode.UG,
+ UK = TeamCherry.Localization.LanguageCode.UK,
+ UR = TeamCherry.Localization.LanguageCode.UR,
+ UZ = TeamCherry.Localization.LanguageCode.UZ,
+ VI = TeamCherry.Localization.LanguageCode.VI,
+ VO = TeamCherry.Localization.LanguageCode.VO,
+ WO = TeamCherry.Localization.LanguageCode.WO,
+ XH = TeamCherry.Localization.LanguageCode.XH,
+ YI = TeamCherry.Localization.LanguageCode.YI,
+ YO = TeamCherry.Localization.LanguageCode.YO,
+ ZA = TeamCherry.Localization.LanguageCode.ZA,
+ ZH = TeamCherry.Localization.LanguageCode.ZH,
+ ZH_TW = TeamCherry.Localization.LanguageCode.ZH_TW,
+ ZH_HK = TeamCherry.Localization.LanguageCode.ZH_HK,
+ ZH_CN = TeamCherry.Localization.LanguageCode.ZH_CN,
+ ZH_SG = TeamCherry.Localization.LanguageCode.ZH_SG,
+ ZU = TeamCherry.Localization.LanguageCode.ZU,
+}
\ No newline at end of file
diff --git a/Assembly-CSharp/ModHooks.cs b/Assembly-CSharp/ModHooks.cs
index 1ba7815f..0ea986d3 100644
--- a/Assembly-CSharp/ModHooks.cs
+++ b/Assembly-CSharp/ModHooks.cs
@@ -61,10 +61,10 @@ static ModHooks()
{
string[] versionNums = Constants.GAME_VERSION.Split('.');
- gameVersion.major = Convert.ToInt32(versionNums[0]);
- gameVersion.minor = Convert.ToInt32(versionNums[1]);
- gameVersion.revision = Convert.ToInt32(versionNums[2]);
- gameVersion.package = Convert.ToInt32(versionNums[3]);
+ gameVersion.major = versionNums.Length > 0 ? Convert.ToInt32(versionNums[0]) : 0;
+ gameVersion.minor = versionNums.Length > 1 ? Convert.ToInt32(versionNums[1]) : 0;
+ gameVersion.revision = versionNums.Length > 2 ? Convert.ToInt32(versionNums[2]) : 0;
+ gameVersion.package = versionNums.Length > 3 ? Convert.ToInt32(versionNums[3]) : 0;
}
catch (Exception e)
{
@@ -225,7 +225,7 @@ internal static void LogConsole(string message, LogLevel level)
/// N/A
internal static string LanguageGet(string key, string sheet)
{
- string res = Patches.Language.GetInternal(key, sheet);
+ string res = Language.Language.GetInternal(key, sheet);
if (LanguageGetHook == null)
return res;
diff --git a/Assembly-CSharp/Patches/GameManager.cs b/Assembly-CSharp/Patches/GameManager.cs
index 9510c2d5..99526b73 100644
--- a/Assembly-CSharp/Patches/GameManager.cs
+++ b/Assembly-CSharp/Patches/GameManager.cs
@@ -8,6 +8,7 @@
using Newtonsoft.Json;
using UnityEngine;
using UnityEngine.SceneManagement;
+using Encryption = TeamCherry.SharedUtils.Encryption;
// ReSharper disable all
#pragma warning disable 1591, 649, 414, 169, CS0108, CS0626
@@ -196,9 +197,7 @@ public void SaveGame(int saveSlot, Action callback)
text = JsonUtility.ToJson(obj);
}
- bool flag = this.gameConfig.useSaveEncryption && !Platform.Current.IsFileSystemProtected;
-
- if (flag)
+ if (this.gameConfig.useSaveEncryption && !Platform.Current.IsFileSystemProtected)
{
string graph = Encryption.Encrypt(text);
BinaryFormatter binaryFormatter = new BinaryFormatter();
@@ -578,12 +577,12 @@ public IEnumerator LoadSceneAdditive(string destScene)
AsyncOperation loadop = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(destScene, LoadSceneMode.Additive);
loadop.allowSceneActivation = true;
yield return loadop;
- yield return UnityEngine.SceneManagement.SceneManager.UnloadSceneAsync(exitingScene);
+ UnityEngine.SceneManagement.SceneManager.UnloadScene(exitingScene);
ModHooks.OnSceneChanged(destScene);
this.RefreshTilemapInfo(destScene);
if (this.IsUnloadAssetsRequired(exitingScene, destScene))
{
- Debug.LogFormat(this, "Unloading assets due to zone transition", new object[0]);
+ Debug.LogFormat(this, "Unloading assets due to zone transition", Array.Empty