using System; using System.Collections.Generic; using System.IO; using Cpp2IlInjected; using MarsSDK; using Newtonsoft.Json; using Steamworks; using UnityEngine; // Token: 0x02000158 RID: 344 [Token(Token = "0x2000158")] public class SteamPlatform : IGamePlatform { // Token: 0x1700008E RID: 142 // (get) Token: 0x0600115F RID: 4447 RVA: 0x00028124 File Offset: 0x00026324 [Token(Token = "0x1700008E")] public SystemLanguage DefaultLanguage { [Token(Token = "0x600115F")] [Address(RVA = "0xB1CC70", Offset = "0xB1B470", VA = "0x180B1CC70")] get { return Application.systemLanguage; } } // Token: 0x1700008F RID: 143 // (get) Token: 0x06001160 RID: 4448 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x1700008F")] public ControllerDevice DefaultController { [Token(Token = "0x6001160")] [Address(RVA = "0x2E8FA0", Offset = "0x2E77A0", VA = "0x1802E8FA0", Slot = "4")] get { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } } // Token: 0x17000090 RID: 144 // (get) Token: 0x06001161 RID: 4449 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x17000090")] public IFileSystem FileSystem { [Token(Token = "0x6001161")] [Address(RVA = "0x345100", Offset = "0x343900", VA = "0x180345100", Slot = "5")] get { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } } // Token: 0x17000091 RID: 145 // (get) Token: 0x06001162 RID: 4450 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x17000091")] public bool IsConsolePlatform { [Token(Token = "0x6001162")] [Address(RVA = "0x29A960", Offset = "0x299160", VA = "0x18029A960", Slot = "6")] get { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } } // Token: 0x17000092 RID: 146 // (get) Token: 0x06001163 RID: 4451 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x17000092")] public bool UseAsiaController { [Token(Token = "0x6001163")] [Address(RVA = "0x29A960", Offset = "0x299160", VA = "0x18029A960", Slot = "7")] get { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } } // Token: 0x17000093 RID: 147 // (get) Token: 0x06001164 RID: 4452 RVA: 0x00028138 File Offset: 0x00026338 [Token(Token = "0x17000093")] public bool UseAchievement { [Token(Token = "0x6001164")] [Address(RVA = "0x497D00", Offset = "0x496500", VA = "0x180497D00", Slot = "8")] get { return true; } } // Token: 0x17000094 RID: 148 // (get) Token: 0x06001165 RID: 4453 RVA: 0x00028148 File Offset: 0x00026348 [Token(Token = "0x17000094")] public bool ShowQuitButton { [Token(Token = "0x6001165")] [Address(RVA = "0x497D00", Offset = "0x496500", VA = "0x180497D00", Slot = "9")] get { return true; } } // Token: 0x17000095 RID: 149 // (get) Token: 0x06001166 RID: 4454 RVA: 0x00028158 File Offset: 0x00026358 [Token(Token = "0x17000095")] public bool ShowDepthOfFieldSetting { [Token(Token = "0x6001166")] [Address(RVA = "0x497D00", Offset = "0x496500", VA = "0x180497D00", Slot = "10")] get { return true; } } // Token: 0x17000096 RID: 150 // (get) Token: 0x06001167 RID: 4455 RVA: 0x00028168 File Offset: 0x00026368 [Token(Token = "0x17000096")] public bool IncludeChineseVideos { [Token(Token = "0x6001167")] [Address(RVA = "0x497D00", Offset = "0x496500", VA = "0x180497D00", Slot = "11")] get { return true; } } // Token: 0x06001168 RID: 4456 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x6001168")] [Address(RVA = "0xB1B3D0", Offset = "0xB19BD0", VA = "0x180B1B3D0")] public SteamPlatform() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06001169 RID: 4457 RVA: 0x00028178 File Offset: 0x00026378 [Token(Token = "0x6001169")] [Address(RVA = "0xB1AC40", Offset = "0xB19440", VA = "0x180B1AC40", Slot = "12")] public void Setup(Action nextAction) { this.UpgradeOldGameSaveFiles(); this.VerifyCollectionData(); if (nextAction != 0) { nextAction(); } } // Token: 0x0600116A RID: 4458 RVA: 0x0002819C File Offset: 0x0002639C [Token(Token = "0x600116A")] [Address(RVA = "0xB1A8F0", Offset = "0xB190F0", VA = "0x180B1A8F0", Slot = "13")] public void InitDlc() { int num = 0; int dlccount = SteamApps.GetDLCCount(); List list = new List(); if (dlccount > 0) { ulong num2; if (SteamApps.BGetDLCDataByIndex(num, num, num, num, (int)num2) && (num != 2152390 || SteamApps.BIsSubscribedApp(num)) && num == 2242530 && SteamApps.BIsSubscribedApp(num)) { list.Add((uint)1002); } num++; } Game.DLC.SetupDlc(list); } // Token: 0x0600116B RID: 4459 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x600116B")] [Address(RVA = "0xB1A690", Offset = "0xB18E90", VA = "0x180B1A690", Slot = "14")] public GameConfig GetConfig() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x0600116C RID: 4460 RVA: 0x00028214 File Offset: 0x00026414 [Token(Token = "0x600116C")] [Address(RVA = "0xB1ABD0", Offset = "0xB193D0", VA = "0x180B1ABD0", Slot = "15")] public void SaveConfig(GameConfig config) { string text = JsonConvert.SerializeObject(config); PlayerPrefs.SetString("Config", text); } // Token: 0x0600116D RID: 4461 RVA: 0x00028234 File Offset: 0x00026434 [Token(Token = "0x600116D")] [Address(RVA = "0xB1A5D0", Offset = "0xB18DD0", VA = "0x180B1A5D0")] private GameConfig CreateConfig() { GameConfig gameConfig = new GameConfig(); gameConfig.configVersion = (int)((ulong)21L); string text = JsonConvert.SerializeObject(gameConfig); PlayerPrefs.SetString("Config", text); return gameConfig; } // Token: 0x0600116E RID: 4462 RVA: 0x0002826C File Offset: 0x0002646C [Token(Token = "0x600116E")] [Address(RVA = "0xB1AC80", Offset = "0xB19480", VA = "0x180B1AC80", Slot = "16")] public void ShowNoSpaceDialogue(Action nextAction) { /* An exception occurred when decompiling this method (0600116E) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void SteamPlatform::ShowNoSpaceDialogue(System.Action) ---> System.Exception: Basic block has to end with unconditional control flow. {; Block_0:; stloc:Exception(var_0_0A, newobj:Exception(Exception::.ctor, ldstr:string("This is ps4 only feature, if see the log, check save file flow."))); }; at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1810 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 344 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88 --- End of inner exception stack trace --- at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1618 */; } // Token: 0x0600116F RID: 4463 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x600116F")] [Address(RVA = "0xB1A7B0", Offset = "0xB18FB0", VA = "0x180B1A7B0", Slot = "17")] public GameSkin[] GetPlatformSkins() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06001170 RID: 4464 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x6001170")] [Address(RVA = "0xB1A890", Offset = "0xB19090", VA = "0x180B1A890", Slot = "18")] public bool HasAchievementUnlocked(int index) { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06001171 RID: 4465 RVA: 0x00028284 File Offset: 0x00026484 [Token(Token = "0x6001171")] [Address(RVA = "0xB1ACD0", Offset = "0xB194D0", VA = "0x180B1ACD0", Slot = "19")] public void UnlockAchievement(int index) { bool flag = SteamUserStats.SetAchievement(this.achievementSystem.achievementKeys[index]); bool flag2 = SteamUserStats.StoreStats(); } // Token: 0x06001172 RID: 4466 RVA: 0x000282B8 File Offset: 0x000264B8 [Token(Token = "0x6001172")] [Address(RVA = "0xB1AA50", Offset = "0xB19250", VA = "0x180B1AA50", Slot = "20")] public void ResetAllAchievements(Action onCompleted) { SteamAchievementSystem steamAchievementSystem = this.achievementSystem; string[] achievementKeys = steamAchievementSystem.achievementKeys; int num = 0; if (num < achievementKeys.Length) { string text = steamAchievementSystem.achievementKeys[num]; if (!SteamUserStats.ClearAchievement(text)) { Debug.LogError("Clear steam achievement failed: " + text); } string[] achievementKeys2 = steamAchievementSystem.achievementKeys; num++; } if (!SteamUserStats.StoreStats()) { Debug.LogError("Store all steam achievements failed."); } if (onCompleted != 0) { onCompleted(); } } // Token: 0x06001173 RID: 4467 RVA: 0x00028338 File Offset: 0x00026538 [Token(Token = "0x6001173")] [Address(RVA = "0xB1AD20", Offset = "0xB19520", VA = "0x180B1AD20", Slot = "21")] public void UpdateStatsData(GameCollection collectionData) { string[] array = this.statsKeys; int speedSpellcasting = collectionData.speedSpellcasting; bool flag = SteamUserStats.SetStat(array[0], speedSpellcasting); string[] array2 = this.statsKeys; int meleeSpellcasting = collectionData.meleeSpellcasting; bool flag2 = SteamUserStats.SetStat(array2[1], meleeSpellcasting); string[] array3 = this.statsKeys; int manaAbsorbed = collectionData.manaAbsorbed; bool flag3 = SteamUserStats.SetStat(array3[2], manaAbsorbed); string[] array4 = this.statsKeys; int soulAcquired = collectionData.soulAcquired; bool flag4 = SteamUserStats.SetStat(array4[3], soulAcquired); string[] array5 = this.statsKeys; int enemiesDefeated = collectionData.enemiesDefeated; bool flag5 = SteamUserStats.SetStat(array5[4], enemiesDefeated); if (!SteamUserStats.StoreStats()) { Debug.LogError("Update steam stats failed."); } } // Token: 0x06001174 RID: 4468 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x6001174")] [Address(RVA = "0x29E8B0", Offset = "0x29D0B0", VA = "0x18029E8B0", Slot = "23")] public void MountDLCPoint(GameSkin skin) { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06001175 RID: 4469 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x6001175")] [Address(RVA = "0x29E8B0", Offset = "0x29D0B0", VA = "0x18029E8B0", Slot = "24")] public void UnmountDLCPoints() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06001176 RID: 4470 RVA: 0x00028400 File Offset: 0x00026600 [Token(Token = "0x6001176")] [Address(RVA = "0x9516A0", Offset = "0x94FEA0", VA = "0x1809516A0", Slot = "22")] public void Quit() { Application.Quit(); } // Token: 0x06001177 RID: 4471 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x6001177")] [Address(RVA = "0xB1B100", Offset = "0xB19900", VA = "0x180B1B100")] private void VerifyCollectionData(string statsKey, ref int data, ref bool flag) { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06001178 RID: 4472 RVA: 0x00028414 File Offset: 0x00026614 [Token(Token = "0x6001178")] [Address(RVA = "0xB1AEB0", Offset = "0xB196B0", VA = "0x180B1AEB0")] private void UpdateStatsData(string statsKey, int value) { bool flag = SteamUserStats.SetStat(statsKey, value); } // Token: 0x06001179 RID: 4473 RVA: 0x0002842C File Offset: 0x0002662C [Token(Token = "0x6001179")] [Address(RVA = "0xB1AEC0", Offset = "0xB196C0", VA = "0x180B1AEC0")] private void UpgradeOldGameSaveFiles() { FileInfo[] files = new DirectoryInfo(Path.Combine(Application.dataPath, "Save")).GetFiles(); int num = 0; int length = files.Length; if (num < length) { FileInfo fileInfo = files[num]; string name = fileInfo.Name; if (name.StartsWith("Save") && string.Equals(Path.GetExtension(name), ".dat")) { GameSaveLegacy gameSaveLegacy = new GameSaveLegacy(); string fullName = fileInfo.FullName; WriteFileResult writeFileResult = Game.WriteGameSave(gameSaveLegacy.Convert(fullName)); fileInfo.Delete(); } num++; } } // Token: 0x0600117A RID: 4474 RVA: 0x000284C8 File Offset: 0x000266C8 [Token(Token = "0x600117A")] [Address(RVA = "0xB1B140", Offset = "0xB19940", VA = "0x180B1B140")] private void VerifyCollectionData() { string text = this.statsKeys[0]; GameCollection collection = Game.Collection; int num = 0; bool stat = SteamUserStats.GetStat(text, num); if (collection.speedSpellcasting < num) { collection.speedSpellcasting = num; } string text2 = this.statsKeys[1]; GameCollection collection2 = Game.Collection; bool stat2 = SteamUserStats.GetStat(text2, num); if (collection2.meleeSpellcasting < num) { collection2.meleeSpellcasting = num; } string text3 = this.statsKeys[2]; GameCollection collection3 = Game.Collection; bool stat3 = SteamUserStats.GetStat(text3, num); if (collection3.manaAbsorbed < num) { collection3.manaAbsorbed = num; } string text4 = this.statsKeys[3]; GameCollection collection4 = Game.Collection; bool stat4 = SteamUserStats.GetStat(text4, num); if (collection4.soulAcquired < num) { collection4.soulAcquired = num; } string text5 = this.statsKeys[4]; GameCollection collection5 = Game.Collection; bool stat5 = SteamUserStats.GetStat(text5, num); if (collection5.enemiesDefeated < num) { collection5.enemiesDefeated = num; } if ((ulong)1L != 0UL) { WriteFileResult writeFileResult = Game.WriteSystemData(); } } // Token: 0x0600117B RID: 4475 RVA: 0x000285EC File Offset: 0x000267EC [Token(Token = "0x600117B")] [Address(RVA = "0xB1A8F0", Offset = "0xB190F0", VA = "0x180B1A8F0")] private void UpdateDlcData() { int num = 0; int dlccount = SteamApps.GetDLCCount(); List list = new List(); if (dlccount > 0) { ulong num2; if (SteamApps.BGetDLCDataByIndex(num, num, num, num, (int)num2) && (num != 2152390 || SteamApps.BIsSubscribedApp(num)) && num == 2242530 && SteamApps.BIsSubscribedApp(num)) { list.Add((uint)1002); } num++; } Game.DLC.SetupDlc(list); } // Token: 0x04001B79 RID: 7033 [FieldOffset(Offset = "0x10")] [Token(Token = "0x4001B79")] private StandaloneFileSystem fileSystem; // Token: 0x04001B7A RID: 7034 [FieldOffset(Offset = "0x18")] [Token(Token = "0x4001B7A")] private SteamAchievementSystem achievementSystem; // Token: 0x04001B7B RID: 7035 [FieldOffset(Offset = "0x20")] [Token(Token = "0x4001B7B")] private string[] statsKeys; }