Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of RoomInfoOverlay v1.0.0
RoomInfoOverlay.dll
Decompiled 2 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using BepInEx; using BepInEx.Configuration; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("")] [assembly: AssemblyCompany("zabu")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("zabumod")] [assembly: AssemblyTitle("zabumod")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } [BepInPlugin("REPOJP.RoomInfoOverlay", "RoomInfoOverlay", "1.0.0")] public sealed class RoomInfoOverlayPlugin : BaseUnityPlugin { private enum OverlayAnchor { TopLeft, TopRight, BottomLeft, BottomRight, Center, CenterTop } private enum SectionKind { Module, Room, Player, Inventory, EconomyRun, GameDirector, ShopManager, ExtractionCart, Photon, Environment, Map, Details, Debug, Deep_PlayerDump, Deep_InventoryDump, Deep_GameDirectorDump, Deep_ShopManagerDump, Deep_ExtractionCartDump, Deep_PhotonDump, Deep_EconomyScan, Deep_EconomyDump } private struct PhotonSnapshot { public bool Available; public bool InRoom; public bool IsMasterClient; public string RoomName; public int PlayerCount; public int LocalActorNumber; public object CurrentRoomObj; public object LocalPlayerObj; } private sealed class ReferenceEqualityComparer : IEqualityComparer<object> { public static readonly ReferenceEqualityComparer Instance = new ReferenceEqualityComparer(); public new bool Equals(object x, object y) { return x == y; } public int GetHashCode(object obj) { return RuntimeHelpers.GetHashCode(obj); } } public const string PluginGuid = "REPOJP.RoomInfoOverlay"; public const string PluginName = "RoomInfoOverlay"; public const string PluginVersion = "1.0.0"; private ConfigEntry<bool> CfgEnableMod; private ConfigEntry<float> CfgUpdateIntervalSeconds; private ConfigEntry<bool> CfgShowSectionHeaders; private ConfigEntry<int> CfgSectionsPerTick; private ConfigEntry<OverlayAnchor> CfgAnchor; private ConfigEntry<int> CfgOffsetX; private ConfigEntry<int> CfgOffsetY; private ConfigEntry<int> CfgFontSize; private ConfigEntry<int> CfgLineSpacing; private ConfigEntry<int> CfgPaddingX; private ConfigEntry<int> CfgPaddingY; private ConfigEntry<float> CfgBackgroundAlpha; private ConfigEntry<float> CfgTextColorR; private ConfigEntry<float> CfgTextColorG; private ConfigEntry<float> CfgTextColorB; private ConfigEntry<float> CfgTextColorA; private ConfigEntry<float> CfgBackgroundColorR; private ConfigEntry<float> CfgBackgroundColorG; private ConfigEntry<float> CfgBackgroundColorB; private ConfigEntry<int> CfgMaxListEntries; private ConfigEntry<bool> CfgSortDictionaries; private ConfigEntry<bool> CfgShowModuleName; private ConfigEntry<bool> CfgShowModuleType; private ConfigEntry<bool> CfgShowModuleGrid; private ConfigEntry<bool> CfgShowModuleConnections; private ConfigEntry<bool> CfgShowModuleStateFlags; private ConfigEntry<bool> CfgShowRoomName; private ConfigEntry<bool> CfgShowRoomFlags; private ConfigEntry<bool> CfgShowCurrentRoomsCount; private ConfigEntry<bool> CfgShowOverlappedRoomsList; private ConfigEntry<bool> CfgShowPlayerName; private ConfigEntry<bool> CfgShowPlayerSteamId; private ConfigEntry<bool> CfgShowPlayerPosition; private ConfigEntry<bool> CfgShowPlayerRotation; private ConfigEntry<bool> CfgShowPlayerForward; private ConfigEntry<bool> CfgShowPlayerVelocity; private ConfigEntry<bool> CfgShowPlayerStateFlags; private ConfigEntry<bool> CfgShowPlayerDeepInternals; private ConfigEntry<bool> CfgShowPlayerHealthSummary; private ConfigEntry<bool> CfgShowPlayerHealthDeepInternals; private ConfigEntry<bool> CfgShowPlayerViewInfo; private ConfigEntry<bool> CfgShowPlayerDeepDump; private ConfigEntry<bool> CfgShowInventory; private ConfigEntry<bool> CfgShowInventoryDeepDump; private ConfigEntry<bool> CfgShowInventoryHeader; private ConfigEntry<bool> CfgShowInventorySpotsCount; private ConfigEntry<bool> CfgShowInventorySpotEntries; private ConfigEntry<bool> CfgShowInventorySpotIndex; private ConfigEntry<bool> CfgShowInventorySpotCurrentItem; private ConfigEntry<bool> CfgShowRunStatsCurrency; private ConfigEntry<bool> CfgShowRunStatsCore; private ConfigEntry<bool> CfgShowRunStatsAll; private ConfigEntry<bool> CfgShowItemsPurchasedAll; private ConfigEntry<bool> CfgShowItemsUpgradesPurchasedAll; private ConfigEntry<bool> CfgShowRunManagerCore; private ConfigEntry<bool> CfgShowRunManagerDeepInternals; private ConfigEntry<bool> CfgShowRunManagerLevelCurrent; private ConfigEntry<bool> CfgShowRunManagerLevelsCompleted; private ConfigEntry<bool> CfgShowRunManagerLoadLevel; private ConfigEntry<bool> CfgShowRunManagerSaveLevel; private ConfigEntry<bool> CfgShowRunManagerRunStarted; private ConfigEntry<bool> CfgShowRunManagerRunLives; private ConfigEntry<bool> CfgShowRunManagerLevelFailed; private ConfigEntry<bool> CfgShowRunManagerRestarting; private ConfigEntry<bool> CfgShowRunManagerRestartingDone; private ConfigEntry<bool> CfgShowRunManagerLevelsMax; private ConfigEntry<bool> CfgShowGameDirector; private ConfigEntry<bool> CfgShowGameDirectorDeepDump; private ConfigEntry<bool> CfgShowGameDirectorHeader; private ConfigEntry<bool> CfgShowGameDirectorState; private ConfigEntry<bool> CfgShowGameDirectorTimeScale; private ConfigEntry<bool> CfgShowGameDirectorSeed; private ConfigEntry<bool> CfgShowShopManager; private ConfigEntry<bool> CfgShowShopManagerDeepDump; private ConfigEntry<bool> CfgShowShopManagerHeader; private ConfigEntry<bool> CfgShowShopManagerTotalCost; private ConfigEntry<bool> CfgShowShopManagerTotalCurrency; private ConfigEntry<bool> CfgShowShopManagerIsThief; private ConfigEntry<bool> CfgShowShopManagerShoppingListCount; private ConfigEntry<bool> CfgShowExtractionNearest; private ConfigEntry<bool> CfgShowCartNearest; private ConfigEntry<bool> CfgShowExtractionCartDeepDump; private ConfigEntry<bool> CfgShowExtractionHeader; private ConfigEntry<bool> CfgShowExtractionPosDist; private ConfigEntry<bool> CfgShowExtractionHaulGoal; private ConfigEntry<bool> CfgShowExtractionState; private ConfigEntry<bool> CfgShowCartHeader; private ConfigEntry<bool> CfgShowCartPosDist; private ConfigEntry<bool> CfgShowCartState; private ConfigEntry<bool> CfgShowCartHaulCurrent; private ConfigEntry<bool> CfgShowCartItemsInCartCount; private ConfigEntry<bool> CfgShowPhotonNetwork; private ConfigEntry<bool> CfgShowPhotonDeepDump; private ConfigEntry<bool> CfgShowPhotonHeader; private ConfigEntry<bool> CfgShowPhotonInRoom; private ConfigEntry<bool> CfgShowPhotonIsMasterClient; private ConfigEntry<bool> CfgShowPhotonRoomName; private ConfigEntry<bool> CfgShowPhotonPlayerCount; private ConfigEntry<bool> CfgShowPhotonLocalActorNumber; private ConfigEntry<bool> CfgShowRoomColor; private ConfigEntry<bool> CfgShowReverbPresetName; private ConfigEntry<bool> CfgShowRoomAmbienceVolume; private ConfigEntry<bool> CfgShowRoomAmbienceOverrideSummary; private ConfigEntry<bool> CfgShowMapModuleName; private ConfigEntry<bool> CfgShowMapModuleLinkedModuleName; private ConfigEntry<bool> CfgShowTransformPosition; private ConfigEntry<bool> CfgShowTransformRotationY; private ConfigEntry<bool> CfgShowColliderCounts; private ConfigEntry<bool> CfgShowRoomVolumeCheckFlags; private ConfigEntry<bool> CfgShowRoomVolumeCheckBox; private ConfigEntry<bool> CfgShowEconomyScan; private ConfigEntry<bool> CfgShowEconomyDeepDump; private ConfigEntry<int> CfgDeepDumpMaxDepth; private ConfigEntry<int> CfgDeepDumpMaxMembersPerObject; private ConfigEntry<bool> CfgDeepDumpIncludePrivate; private ConfigEntry<bool> CfgDeepDumpIncludeFields; private ConfigEntry<bool> CfgDeepDumpIncludeProperties; private ConfigEntry<int> CfgDeepDumpMaxStringLength; private ConfigEntry<string> CfgEconomyKeywords; private ConfigEntry<int> CfgEconomyMaxTypes; private static FieldInfo FiModuleConnectingTop; private static FieldInfo FiModuleConnectingRight; private static FieldInfo FiModuleConnectingBottom; private static FieldInfo FiModuleConnectingLeft; private static FieldInfo FiModuleSetupDone; private static FieldInfo FiModuleFirst; private static FieldInfo FiModuleGridX; private static FieldInfo FiModuleGridY; private static FieldInfo FiModuleStartRoom; private static FieldInfo FiRvcInTruck; private static FieldInfo FiRvcInExtractionPoint; private static FieldInfo FiPaRb; private static FieldInfo FiPaIsLocal; private static FieldInfo FiPaIsDisabled; private static FieldInfo FiPaSpawned; private static FieldInfo FiPaIsCrouching; private static FieldInfo FiPaIsSprinting; private static FieldInfo FiPaIsCrawling; private static FieldInfo FiPaIsSliding; private static FieldInfo FiPaIsMoving; private static FieldInfo FiPaIsGrounded; private static FieldInfo FiPaIsTumbling; private static FieldInfo FiPaSpectating; private static FieldInfo FiPaClientPositionDelta; private static FieldInfo FiPaEnemyVisionFreezeTimer; private static FieldInfo FiPhHealth; private static FieldInfo FiPhMaxHealth; private static FieldInfo FiPhGodMode; private static FieldInfo FiPhInvincibleTimer; private static FieldInfo FiRmLoadLevel; private static FieldInfo FiRmSaveLevel; private static FieldInfo FiRmRunStarted; private static FieldInfo FiRmRunLives; private static FieldInfo FiRmLevelFailed; private static FieldInfo FiRmRestarting; private static FieldInfo FiRmRestartingDone; private static FieldInfo FiRmLevelsMax; private GUIStyle _labelStyle; private GUIStyle _boxStyle; private int _lastStyleKey; private readonly Dictionary<SectionKind, string> _sectionCache = new Dictionary<SectionKind, string>(); private readonly List<SectionKind> _activeOrder = new List<SectionKind>(64); private int _activeHash; private int _rrIndex; private string _snapshotText = "Loading..."; private float _nextUpdateTime; private int _measureKey; private float _cachedPanelWidth; private float _cachedPanelHeight; private void Awake() { BindConfig(); CacheReflection(); _nextUpdateTime = 0f; } private void Update() { if (!CfgEnableMod.Value || Time.unscaledTime < _nextUpdateTime) { return; } float num = Mathf.Max(0.05f, CfgUpdateIntervalSeconds.Value); _nextUpdateTime = Time.unscaledTime + num; RebuildActiveOrderIfNeeded(); int num2 = Mathf.Clamp(CfgSectionsPerTick.Value, 1, 64); for (int i = 0; i < num2; i++) { if (_activeOrder.Count == 0) { break; } if (_rrIndex >= _activeOrder.Count) { _rrIndex = 0; } SectionKind kind = _activeOrder[_rrIndex]; _rrIndex++; UpdateOneSection(kind); } RebuildSnapshotText(); InvalidateMeasureCache(); } private void OnGUI() { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) if (CfgEnableMod.Value) { EnsureGuiStyles(); string text = _snapshotText ?? string.Empty; MeasurePanel(text, out var width, out var height); Rect anchoredRect = GetAnchoredRect(width, height); Color color = default(Color); ((Color)(ref color))..ctor(Mathf.Clamp01(CfgBackgroundColorR.Value), Mathf.Clamp01(CfgBackgroundColorG.Value), Mathf.Clamp01(CfgBackgroundColorB.Value), Mathf.Clamp01(CfgBackgroundAlpha.Value)); Color color2 = GUI.color; GUI.color = color; GUI.Box(anchoredRect, GUIContent.none, _boxStyle); GUI.color = color2; Rect val = default(Rect); ((Rect)(ref val))..ctor(((Rect)(ref anchoredRect)).x + (float)CfgPaddingX.Value, ((Rect)(ref anchoredRect)).y + (float)CfgPaddingY.Value, ((Rect)(ref anchoredRect)).width - (float)(CfgPaddingX.Value * 2), ((Rect)(ref anchoredRect)).height - (float)(CfgPaddingY.Value * 2)); GUI.Label(val, text, _labelStyle); } } private void BindConfig() { CfgEnableMod = ((BaseUnityPlugin)this).Config.Bind<bool>("A General", "EnableMod", true, "Enable or disable this mod.このMODの有効無効"); CfgUpdateIntervalSeconds = ((BaseUnityPlugin)this).Config.Bind<float>("A General", "UpdateIntervalSeconds", 0.5f, "Update interval seconds for rebuilding text.表示文字列再生成の更新間隔秒"); CfgShowSectionHeaders = ((BaseUnityPlugin)this).Config.Bind<bool>("A General", "ShowSectionHeaders", true, "Show section headers like Module/Room.セクション見出し表示"); CfgSectionsPerTick = ((BaseUnityPlugin)this).Config.Bind<int>("A General", "SectionsPerTick", 2, "How many sections to refresh per update tick.1回の更新で更新するセクション数"); CfgAnchor = ((BaseUnityPlugin)this).Config.Bind<OverlayAnchor>("B Appearance", "Anchor", OverlayAnchor.CenterTop, "Anchor position for overlay.表示の基準位置"); CfgOffsetX = ((BaseUnityPlugin)this).Config.Bind<int>("B Appearance", "OffsetX", 0, "X offset from anchor in pixels.アンカーからのXオフセットpx"); CfgOffsetY = ((BaseUnityPlugin)this).Config.Bind<int>("B Appearance", "OffsetY", 20, "Y offset from anchor in pixels.アンカーからのYオフセットpx"); CfgFontSize = ((BaseUnityPlugin)this).Config.Bind<int>("B Appearance", "FontSize", 16, "Font size of overlay text.文字サイズ"); CfgLineSpacing = ((BaseUnityPlugin)this).Config.Bind<int>("B Appearance", "LineSpacing", 2, "Extra spacing between lines in pixels.行間追加px"); CfgPaddingX = ((BaseUnityPlugin)this).Config.Bind<int>("B Appearance", "PaddingX", 8, "Horizontal padding inside background in pixels.背景内余白Xpx"); CfgPaddingY = ((BaseUnityPlugin)this).Config.Bind<int>("B Appearance", "PaddingY", 6, "Vertical padding inside background in pixels.背景内余白Ypx"); CfgBackgroundAlpha = ((BaseUnityPlugin)this).Config.Bind<float>("B Appearance", "BackgroundAlpha", 0.35f, "Background alpha 0-1.背景透明度0-1"); CfgTextColorR = ((BaseUnityPlugin)this).Config.Bind<float>("B Appearance", "TextColorR", 1f, "Text color R 0-1.文字色R0-1"); CfgTextColorG = ((BaseUnityPlugin)this).Config.Bind<float>("B Appearance", "TextColorG", 1f, "Text color G 0-1.文字色G0-1"); CfgTextColorB = ((BaseUnityPlugin)this).Config.Bind<float>("B Appearance", "TextColorB", 1f, "Text color B 0-1.文字色B0-1"); CfgTextColorA = ((BaseUnityPlugin)this).Config.Bind<float>("B Appearance", "TextColorA", 1f, "Text color A 0-1.文字色A0-1"); CfgBackgroundColorR = ((BaseUnityPlugin)this).Config.Bind<float>("B Appearance", "BackgroundColorR", 0f, "Background color R 0-1.背景色R0-1"); CfgBackgroundColorG = ((BaseUnityPlugin)this).Config.Bind<float>("B Appearance", "BackgroundColorG", 0f, "Background color G 0-1.背景色G0-1"); CfgBackgroundColorB = ((BaseUnityPlugin)this).Config.Bind<float>("B Appearance", "BackgroundColorB", 0f, "Background color B 0-1.背景色B0-1"); CfgMaxListEntries = ((BaseUnityPlugin)this).Config.Bind<int>("B2 Deep", "MaxListEntries", 60, "Max entries for dictionaries/lists.辞書/リスト表示の最大件数"); CfgSortDictionaries = ((BaseUnityPlugin)this).Config.Bind<bool>("B2 Deep", "SortDictionaries", true, "Sort dictionary keys before printing.辞書キーソート有無"); CfgShowModuleName = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowModuleName", true, "Show Module name.所属Module名表示"); CfgShowModuleType = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowModuleType", false, "Show Module type if available.所属Module種別表示"); CfgShowModuleGrid = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowModuleGrid", false, "Show Module grid X/Y.所属Moduleグリッド座標表示"); CfgShowModuleConnections = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowModuleConnections", false, "Show Module connections T/R/B/L.所属Module接続方向表示"); CfgShowModuleStateFlags = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowModuleStateFlags", false, "Show Module state flags.所属Module状態フラグ表示"); CfgShowRoomName = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRoomName", true, "Show room object name.部屋オブジェクト名表示"); CfgShowRoomFlags = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRoomFlags", false, "Show room flags Truck/Extraction.部屋フラグ表示"); CfgShowCurrentRoomsCount = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowCurrentRoomsCount", false, "Show overlapped room count.重なり部屋数表示"); CfgShowOverlappedRoomsList = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowOverlappedRoomsList", false, "Show overlapped room names list.重なり部屋名一覧表示"); CfgShowPlayerName = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowPlayerName", false, "Show local player name.ローカルプレイヤー名表示"); CfgShowPlayerSteamId = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowPlayerSteamId", false, "Show local player SteamID.ローカルSteamID表示"); CfgShowPlayerPosition = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowPlayerPosition", false, "Show local player position.ローカル座標表示"); CfgShowPlayerRotation = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowPlayerRotation", false, "Show local player rotation.ローカル回転表示"); CfgShowPlayerForward = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowPlayerForward", false, "Show local player forward vector.前方ベクトル表示"); CfgShowPlayerVelocity = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowPlayerVelocity", false, "Show local player rigidbody velocity.速度表示"); CfgShowPlayerStateFlags = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowPlayerStateFlags", false, "Show local player movement state flags.移動状態フラグ表示"); CfgShowPlayerDeepInternals = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowPlayerDeepInternals", false, "Show extra internal fields from PlayerAvatar.追加内部値表示"); CfgShowPlayerHealthSummary = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowPlayerHealthSummary", false, "Show local player health summary.体力概要表示"); CfgShowPlayerHealthDeepInternals = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowPlayerHealthDeepInternals", false, "Show extra internal fields from PlayerHealth.体力内部値表示"); CfgShowPlayerViewInfo = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowPlayerViewInfo", false, "Show player view/camera info.視点/カメラ情報表示"); CfgShowPlayerDeepDump = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowPlayerDeepDump", false, "Deep dump PlayerAvatar object graph.プレイヤーのディープダンプ表示"); CfgShowInventory = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowInventory", false, "Show Inventory/InventorySpot info.インベントリ/スロット情報表示"); CfgShowInventoryDeepDump = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowInventoryDeepDump", false, "Deep dump Inventory and spots.インベントリのディープダンプ表示"); CfgShowInventoryHeader = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowInventoryHeader", false, "Show Inventory header line.インベントリ見出し行表示"); CfgShowInventorySpotsCount = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowInventorySpotsCount", false, "Show inventory spots count.スロット数表示"); CfgShowInventorySpotEntries = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowInventorySpotEntries", false, "Show per-spot lines.スロット行表示"); CfgShowInventorySpotIndex = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowInventorySpotIndex", false, "Show inventory spot index.スロット番号表示"); CfgShowInventorySpotCurrentItem = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowInventorySpotCurrentItem", false, "Show current item per spot.スロット内アイテム表示"); CfgShowRunStatsCurrency = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRunStatsCurrency", false, "Show run currency.貯金額表示"); CfgShowRunStatsCore = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRunStatsCore", false, "Show core runStats keys.主要ラン統計表示"); CfgShowRunStatsAll = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRunStatsAll", false, "Show all runStats dictionary.全ラン統計表示"); CfgShowItemsPurchasedAll = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowItemsPurchasedAll", false, "Show all itemsPurchased dictionary.購入アイテム辞書表示"); CfgShowItemsUpgradesPurchasedAll = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowItemsUpgradesPurchasedAll", false, "Show all itemsUpgradesPurchased dictionary.購入アップグレ辞書表示"); CfgShowRunManagerCore = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRunManagerCore", false, "Show RunManager core values.ラン管理主要値表示"); CfgShowRunManagerDeepInternals = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRunManagerDeepInternals", false, "Show RunManager internal values.ラン管理内部値表示"); CfgShowRunManagerLevelCurrent = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRunManagerLevelCurrent", false, "Show RunManager levelCurrent.現在レベル表示"); CfgShowRunManagerLevelsCompleted = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRunManagerLevelsCompleted", false, "Show RunManager levelsCompleted.クリア済み階層数表示"); CfgShowRunManagerLoadLevel = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRunManagerLoadLevel", false, "Show RunManager loadLevel internal.内部loadLevel表示"); CfgShowRunManagerSaveLevel = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRunManagerSaveLevel", false, "Show RunManager saveLevel internal.内部saveLevel表示"); CfgShowRunManagerRunStarted = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRunManagerRunStarted", false, "Show RunManager runStarted internal.内部runStarted表示"); CfgShowRunManagerRunLives = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRunManagerRunLives", false, "Show RunManager runLives internal.内部runLives表示"); CfgShowRunManagerLevelFailed = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRunManagerLevelFailed", false, "Show RunManager levelFailed internal.内部levelFailed表示"); CfgShowRunManagerRestarting = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRunManagerRestarting", false, "Show RunManager restarting internal.内部restarting表示"); CfgShowRunManagerRestartingDone = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRunManagerRestartingDone", false, "Show RunManager restartingDone internal.内部restartingDone表示"); CfgShowRunManagerLevelsMax = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRunManagerLevelsMax", false, "Show RunManager levelsMax internal.内部levelsMax表示"); CfgShowGameDirector = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowGameDirector", false, "Show GameDirector info.ゲームディレクター情報表示"); CfgShowGameDirectorDeepDump = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowGameDirectorDeepDump", false, "Deep dump GameDirector.ゲームディレクターのディープダンプ表示"); CfgShowGameDirectorHeader = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowGameDirectorHeader", false, "Show GameDirector header line.ディレクター見出し行表示"); CfgShowGameDirectorState = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowGameDirectorState", false, "Show GameDirector state.ディレクター状態表示"); CfgShowGameDirectorTimeScale = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowGameDirectorTimeScale", false, "Show GameDirector time scale.タイムスケール表示"); CfgShowGameDirectorSeed = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowGameDirectorSeed", false, "Show GameDirector seed.シード表示"); CfgShowShopManager = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowShopManager", false, "Show ShopManager info.ショップ情報表示"); CfgShowShopManagerDeepDump = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowShopManagerDeepDump", false, "Deep dump ShopManager.ショップのディープダンプ表示"); CfgShowShopManagerHeader = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowShopManagerHeader", false, "Show ShopManager header line.ショップ見出し行表示"); CfgShowShopManagerTotalCost = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowShopManagerTotalCost", false, "Show ShopManager totalCost.合計金額表示"); CfgShowShopManagerTotalCurrency = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowShopManagerTotalCurrency", false, "Show ShopManager totalCurrency.所持金表示"); CfgShowShopManagerIsThief = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowShopManagerIsThief", false, "Show ShopManager isThief.盗賊フラグ表示"); CfgShowShopManagerShoppingListCount = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowShopManagerShoppingListCount", false, "Show shopping list count.購入リスト数表示"); CfgShowExtractionNearest = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowExtractionNearest", false, "Show nearest ExtractionPoint info.最寄り納品所情報表示"); CfgShowCartNearest = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowCartNearest", false, "Show nearest cart info.最寄りカート情報表示"); CfgShowExtractionCartDeepDump = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowExtractionCartDeepDump", false, "Deep dump nearest ExtractionPoint/Cart.最寄り納品所/カートのディープダンプ表示"); CfgShowExtractionHeader = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowExtractionHeader", false, "Show ExtractionPoint header line.納品所見出し行表示"); CfgShowExtractionPosDist = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowExtractionPosDist", false, "Show ExtractionPoint position and distance.納品所座標と距離表示"); CfgShowExtractionHaulGoal = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowExtractionHaulGoal", false, "Show ExtractionPoint haul goal.納品目標表示"); CfgShowExtractionState = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowExtractionState", false, "Show ExtractionPoint state.納品所状態表示"); CfgShowCartHeader = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowCartHeader", false, "Show Cart header line.カート見出し行表示"); CfgShowCartPosDist = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowCartPosDist", false, "Show Cart position and distance.カート座標と距離表示"); CfgShowCartState = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowCartState", false, "Show Cart state.カート状態表示"); CfgShowCartHaulCurrent = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowCartHaulCurrent", false, "Show Cart haulCurrent.カート現在金額表示"); CfgShowCartItemsInCartCount = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowCartItemsInCartCount", false, "Show Cart itemsInCartCount.カート中身数表示"); CfgShowPhotonNetwork = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowPhotonNetwork", false, "Show Photon network info.Photonネットワーク情報表示"); CfgShowPhotonDeepDump = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowPhotonDeepDump", false, "Deep dump Photon room/player objects.Photonルーム/プレイヤーのディープダンプ表示"); CfgShowPhotonHeader = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowPhotonHeader", false, "Show Photon header line.Photon見出し行表示"); CfgShowPhotonInRoom = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowPhotonInRoom", false, "Show Photon InRoom.ルーム参加中表示"); CfgShowPhotonIsMasterClient = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowPhotonIsMasterClient", false, "Show Photon IsMasterClient.マスター判定表示"); CfgShowPhotonRoomName = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowPhotonRoomName", false, "Show Photon room name.ルーム名表示"); CfgShowPhotonPlayerCount = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowPhotonPlayerCount", false, "Show Photon player count.人数表示"); CfgShowPhotonLocalActorNumber = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowPhotonLocalActorNumber", false, "Show Photon local actor number.ローカルActor番号表示"); CfgShowRoomColor = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRoomColor", false, "Show RoomVolume.Color.部屋色表示"); CfgShowReverbPresetName = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowReverbPresetName", false, "Show ReverbPreset name.リバーブプリセット名表示"); CfgShowRoomAmbienceVolume = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRoomAmbienceVolume", false, "Show RoomAmbience volume.環境音音量表示"); CfgShowRoomAmbienceOverrideSummary = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRoomAmbienceOverrideSummary", false, "Show LevelAmbience override summary.環境音上書き概要表示"); CfgShowMapModuleName = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowMapModuleName", false, "Show MapModule name.マップ表示オブジェクト名表示"); CfgShowMapModuleLinkedModuleName = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowMapModuleLinkedModuleName", false, "Show MapModule.module name.マップ側紐づきModule名表示"); CfgShowTransformPosition = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowTransformPosition", false, "Show RoomVolume world position.部屋座標表示"); CfgShowTransformRotationY = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowTransformRotationY", false, "Show RoomVolume Y rotation.部屋向きY表示"); CfgShowColliderCounts = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowColliderCounts", false, "Show collider counts under RoomVolume.コライダー数表示"); CfgShowRoomVolumeCheckFlags = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRoomVolumeCheckFlags", false, "Show RoomVolumeCheck flags.判定側フラグ表示"); CfgShowRoomVolumeCheckBox = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowRoomVolumeCheckBox", false, "Show RoomVolumeCheck box params.判定OverlapBox値表示"); CfgShowEconomyScan = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowEconomyScan", false, "Scan for economy-related values by keywords.経済系キーワードスキャン表示"); CfgShowEconomyDeepDump = ((BaseUnityPlugin)this).Config.Bind<bool>("C Contents", "ShowEconomyDeepDump", false, "Deep dump economy-related singletons.経済系シングルトンのディープダンプ表示"); CfgDeepDumpMaxDepth = ((BaseUnityPlugin)this).Config.Bind<int>("D DeepDump", "MaxDepth", 2, "Max recursion depth.最大再帰深度"); CfgDeepDumpMaxMembersPerObject = ((BaseUnityPlugin)this).Config.Bind<int>("D DeepDump", "MaxMembersPerObject", 40, "Max members per object.オブジェクト毎の最大メンバー数"); CfgDeepDumpIncludePrivate = ((BaseUnityPlugin)this).Config.Bind<bool>("D DeepDump", "IncludePrivate", true, "Include private members.プライベート含む"); CfgDeepDumpIncludeFields = ((BaseUnityPlugin)this).Config.Bind<bool>("D DeepDump", "IncludeFields", true, "Include fields.フィールド含む"); CfgDeepDumpIncludeProperties = ((BaseUnityPlugin)this).Config.Bind<bool>("D DeepDump", "IncludeProperties", true, "Include properties.プロパティ含む"); CfgDeepDumpMaxStringLength = ((BaseUnityPlugin)this).Config.Bind<int>("D DeepDump", "MaxStringLength", 160, "Max string length in dump.文字列最大長"); CfgEconomyKeywords = ((BaseUnityPlugin)this).Config.Bind<string>("D DeepDump", "EconomyKeywords", "money,cash,coin,credit,bank,saving,deposit,wealth,gold,meta", "Comma-separated keywords for scan.カンマ区切りキーワード"); CfgEconomyMaxTypes = ((BaseUnityPlugin)this).Config.Bind<int>("D DeepDump", "EconomyMaxTypes", 20, "Max scanned root types.スキャン対象ルート型の最大数"); } private void CacheReflection() { Type typeFromHandle = typeof(Module); FiModuleConnectingTop = GetFieldOrNull(typeFromHandle, "ConnectingTop"); FiModuleConnectingRight = GetFieldOrNull(typeFromHandle, "ConnectingRight"); FiModuleConnectingBottom = GetFieldOrNull(typeFromHandle, "ConnectingBottom"); FiModuleConnectingLeft = GetFieldOrNull(typeFromHandle, "ConnectingLeft"); FiModuleSetupDone = GetFieldOrNull(typeFromHandle, "SetupDone"); FiModuleFirst = GetFieldOrNull(typeFromHandle, "First"); FiModuleGridX = GetFieldOrNull(typeFromHandle, "GridX"); FiModuleGridY = GetFieldOrNull(typeFromHandle, "GridY"); FiModuleStartRoom = GetFieldOrNull(typeFromHandle, "StartRoom"); Type typeFromHandle2 = typeof(RoomVolumeCheck); FiRvcInTruck = GetFieldOrNull(typeFromHandle2, "inTruck"); FiRvcInExtractionPoint = GetFieldOrNull(typeFromHandle2, "inExtractionPoint"); Type typeFromHandle3 = typeof(PlayerAvatar); FiPaRb = GetFieldOrNull(typeFromHandle3, "rb"); FiPaIsLocal = GetFieldOrNull(typeFromHandle3, "isLocal"); FiPaIsDisabled = GetFieldOrNull(typeFromHandle3, "isDisabled"); FiPaSpawned = GetFieldOrNull(typeFromHandle3, "spawned"); FiPaIsCrouching = GetFieldOrNull(typeFromHandle3, "isCrouching"); FiPaIsSprinting = GetFieldOrNull(typeFromHandle3, "isSprinting"); FiPaIsCrawling = GetFieldOrNull(typeFromHandle3, "isCrawling"); FiPaIsSliding = GetFieldOrNull(typeFromHandle3, "isSliding"); FiPaIsMoving = GetFieldOrNull(typeFromHandle3, "isMoving"); FiPaIsGrounded = GetFieldOrNull(typeFromHandle3, "isGrounded"); FiPaIsTumbling = GetFieldOrNull(typeFromHandle3, "isTumbling"); FiPaSpectating = GetFieldOrNull(typeFromHandle3, "spectating"); FiPaClientPositionDelta = GetFieldOrNull(typeFromHandle3, "clientPositionDelta"); FiPaEnemyVisionFreezeTimer = GetFieldOrNull(typeFromHandle3, "enemyVisionFreezeTimer"); Type typeFromHandle4 = typeof(PlayerHealth); FiPhHealth = GetFieldOrNull(typeFromHandle4, "health"); FiPhMaxHealth = GetFieldOrNull(typeFromHandle4, "maxHealth"); FiPhGodMode = GetFieldOrNull(typeFromHandle4, "godMode"); FiPhInvincibleTimer = GetFieldOrNull(typeFromHandle4, "invincibleTimer"); Type type = FindTypeByName("RunManager"); if (type != null) { FiRmLoadLevel = GetFieldOrNull(type, "loadLevel"); FiRmSaveLevel = GetFieldOrNull(type, "saveLevel"); FiRmRunStarted = GetFieldOrNull(type, "runStarted"); FiRmRunLives = GetFieldOrNull(type, "runLives"); FiRmLevelFailed = GetFieldOrNull(type, "levelFailed"); FiRmRestarting = GetFieldOrNull(type, "restarting"); FiRmRestartingDone = GetFieldOrNull(type, "restartingDone"); FiRmLevelsMax = GetFieldOrNull(type, "levelsMax"); } } private void EnsureGuiStyles() { //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Expected O, but got Unknown //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Expected O, but got Unknown int num = 17; num = num * 31 + Mathf.Max(8, CfgFontSize.Value); num = num * 31 + Mathf.Max(0, CfgLineSpacing.Value); num = num * 31 + Mathf.RoundToInt(Mathf.Clamp01(CfgTextColorR.Value) * 1000f); num = num * 31 + Mathf.RoundToInt(Mathf.Clamp01(CfgTextColorG.Value) * 1000f); num = num * 31 + Mathf.RoundToInt(Mathf.Clamp01(CfgTextColorB.Value) * 1000f); num = num * 31 + Mathf.RoundToInt(Mathf.Clamp01(CfgTextColorA.Value) * 1000f); if (_labelStyle == null || _boxStyle == null || _lastStyleKey != num) { _labelStyle = new GUIStyle(GUI.skin.label); _labelStyle.richText = false; _labelStyle.wordWrap = false; _labelStyle.fontSize = Mathf.Max(8, CfgFontSize.Value); _labelStyle.normal.textColor = new Color(Mathf.Clamp01(CfgTextColorR.Value), Mathf.Clamp01(CfgTextColorG.Value), Mathf.Clamp01(CfgTextColorB.Value), Mathf.Clamp01(CfgTextColorA.Value)); _boxStyle = new GUIStyle(GUI.skin.box); _lastStyleKey = num; InvalidateMeasureCache(); } } private void RebuildActiveOrderIfNeeded() { int num = 23; num = num * 31 + BoolHash(AnyModuleEnabled()); num = num * 31 + BoolHash(AnyRoomEnabled()); num = num * 31 + BoolHash(AnyPlayerEnabled()); num = num * 31 + BoolHash(CfgShowPlayerDeepDump.Value); num = num * 31 + BoolHash(AnyInventoryEnabled()); num = num * 31 + BoolHash(CfgShowInventoryDeepDump.Value); num = num * 31 + BoolHash(AnyEconomyRunEnabled()); num = num * 31 + BoolHash(CfgShowEconomyScan.Value); num = num * 31 + BoolHash(CfgShowEconomyDeepDump.Value); num = num * 31 + BoolHash(AnyGameDirectorEnabled()); num = num * 31 + BoolHash(CfgShowGameDirectorDeepDump.Value); num = num * 31 + BoolHash(AnyShopManagerEnabled()); num = num * 31 + BoolHash(CfgShowShopManagerDeepDump.Value); num = num * 31 + BoolHash(AnyExtractionCartEnabled()); num = num * 31 + BoolHash(CfgShowExtractionCartDeepDump.Value); num = num * 31 + BoolHash(AnyPhotonEnabled()); num = num * 31 + BoolHash(CfgShowPhotonDeepDump.Value); num = num * 31 + BoolHash(AnyEnvironmentEnabled()); num = num * 31 + BoolHash(AnyMapEnabled()); num = num * 31 + BoolHash(AnyDetailsEnabled()); num = num * 31 + BoolHash(AnyDebugEnabled()); if (_activeHash == num && _activeOrder.Count > 0) { return; } _activeHash = num; _activeOrder.Clear(); if (AnyModuleEnabled()) { _activeOrder.Add(SectionKind.Module); } if (AnyRoomEnabled()) { _activeOrder.Add(SectionKind.Room); } if (AnyPlayerEnabled()) { _activeOrder.Add(SectionKind.Player); } if (CfgShowPlayerDeepDump.Value) { _activeOrder.Add(SectionKind.Deep_PlayerDump); } if (AnyInventoryEnabled()) { _activeOrder.Add(SectionKind.Inventory); } if (CfgShowInventoryDeepDump.Value) { _activeOrder.Add(SectionKind.Deep_InventoryDump); } if (AnyEconomyRunEnabled()) { _activeOrder.Add(SectionKind.EconomyRun); } if (CfgShowEconomyScan.Value) { _activeOrder.Add(SectionKind.Deep_EconomyScan); } if (CfgShowEconomyDeepDump.Value) { _activeOrder.Add(SectionKind.Deep_EconomyDump); } if (AnyGameDirectorEnabled()) { _activeOrder.Add(SectionKind.GameDirector); } if (CfgShowGameDirectorDeepDump.Value) { _activeOrder.Add(SectionKind.Deep_GameDirectorDump); } if (AnyShopManagerEnabled()) { _activeOrder.Add(SectionKind.ShopManager); } if (CfgShowShopManagerDeepDump.Value) { _activeOrder.Add(SectionKind.Deep_ShopManagerDump); } if (AnyExtractionCartEnabled()) { _activeOrder.Add(SectionKind.ExtractionCart); } if (CfgShowExtractionCartDeepDump.Value) { _activeOrder.Add(SectionKind.Deep_ExtractionCartDump); } if (AnyPhotonEnabled()) { _activeOrder.Add(SectionKind.Photon); } if (CfgShowPhotonDeepDump.Value) { _activeOrder.Add(SectionKind.Deep_PhotonDump); } if (AnyEnvironmentEnabled()) { _activeOrder.Add(SectionKind.Environment); } if (AnyMapEnabled()) { _activeOrder.Add(SectionKind.Map); } if (AnyDetailsEnabled()) { _activeOrder.Add(SectionKind.Details); } if (AnyDebugEnabled()) { _activeOrder.Add(SectionKind.Debug); } HashSet<SectionKind> hashSet = new HashSet<SectionKind>(_activeOrder); List<SectionKind> list = _sectionCache.Keys.ToList(); for (int i = 0; i < list.Count; i++) { if (!hashSet.Contains(list[i])) { _sectionCache.Remove(list[i]); } } _rrIndex = 0; } private int BoolHash(bool b) { return b ? 1 : 0; } private void UpdateOneSection(SectionKind kind) { string value = null; switch (kind) { case SectionKind.Module: if (AnyModuleEnabled()) { value = BuildModuleSectionText(); } break; case SectionKind.Room: if (AnyRoomEnabled()) { value = BuildRoomSectionText(); } break; case SectionKind.Player: if (AnyPlayerEnabled()) { value = BuildPlayerSectionText(); } break; case SectionKind.Inventory: if (AnyInventoryEnabled()) { value = BuildInventorySectionText(); } break; case SectionKind.EconomyRun: if (AnyEconomyRunEnabled()) { value = BuildEconomyRunSectionText(); } break; case SectionKind.GameDirector: if (AnyGameDirectorEnabled()) { value = BuildGameDirectorSectionText(); } break; case SectionKind.ShopManager: if (AnyShopManagerEnabled()) { value = BuildShopManagerSectionText(); } break; case SectionKind.ExtractionCart: if (AnyExtractionCartEnabled()) { value = BuildExtractionCartSectionText(); } break; case SectionKind.Photon: if (AnyPhotonEnabled()) { value = BuildPhotonSectionText(); } break; case SectionKind.Environment: if (AnyEnvironmentEnabled()) { value = BuildEnvironmentSectionText(); } break; case SectionKind.Map: if (AnyMapEnabled()) { value = BuildMapSectionText(); } break; case SectionKind.Details: if (AnyDetailsEnabled()) { value = BuildDetailsSectionText(); } break; case SectionKind.Debug: if (AnyDebugEnabled()) { value = BuildDebugSectionText(); } break; case SectionKind.Deep_PlayerDump: if (CfgShowPlayerDeepDump.Value) { value = BuildPlayerDeepDumpText(); } break; case SectionKind.Deep_InventoryDump: if (CfgShowInventoryDeepDump.Value) { value = BuildInventoryDeepDumpText(); } break; case SectionKind.Deep_GameDirectorDump: if (CfgShowGameDirectorDeepDump.Value) { value = BuildGameDirectorDeepDumpText(); } break; case SectionKind.Deep_ShopManagerDump: if (CfgShowShopManagerDeepDump.Value) { value = BuildShopManagerDeepDumpText(); } break; case SectionKind.Deep_ExtractionCartDump: if (CfgShowExtractionCartDeepDump.Value) { value = BuildExtractionCartDeepDumpText(); } break; case SectionKind.Deep_PhotonDump: if (CfgShowPhotonDeepDump.Value) { value = BuildPhotonDeepDumpText(); } break; case SectionKind.Deep_EconomyScan: if (CfgShowEconomyScan.Value) { value = BuildEconomyScanText(); } break; case SectionKind.Deep_EconomyDump: if (CfgShowEconomyDeepDump.Value) { value = BuildEconomyDeepDumpText(); } break; } if (string.IsNullOrEmpty(value)) { _sectionCache.Remove(kind); } else { _sectionCache[kind] = value; } } private void RebuildSnapshotText() { StringBuilder stringBuilder = new StringBuilder(65536); for (int i = 0; i < _activeOrder.Count; i++) { SectionKind key = _activeOrder[i]; if (_sectionCache.TryGetValue(key, out string value) && !string.IsNullOrEmpty(value)) { if (stringBuilder.Length > 0) { stringBuilder.Append('\n').Append('\n'); } stringBuilder.Append(value); } } string text = stringBuilder.ToString(); if (text.EndsWith("\n", StringComparison.Ordinal)) { text = text.TrimEnd('\n'); } _snapshotText = ((text.Length > 0) ? text : "No lines enabled"); } private bool AnyModuleEnabled() { return CfgShowModuleName.Value || CfgShowModuleType.Value || CfgShowModuleGrid.Value || CfgShowModuleConnections.Value || CfgShowModuleStateFlags.Value; } private bool AnyRoomEnabled() { return CfgShowRoomName.Value || CfgShowRoomFlags.Value || CfgShowCurrentRoomsCount.Value || CfgShowOverlappedRoomsList.Value; } private bool AnyPlayerEnabled() { return CfgShowPlayerName.Value || CfgShowPlayerSteamId.Value || CfgShowPlayerPosition.Value || CfgShowPlayerRotation.Value || CfgShowPlayerForward.Value || CfgShowPlayerVelocity.Value || CfgShowPlayerStateFlags.Value || CfgShowPlayerDeepInternals.Value || CfgShowPlayerHealthSummary.Value || CfgShowPlayerHealthDeepInternals.Value || CfgShowPlayerViewInfo.Value; } private bool AnyInventoryEnabled() { if (!CfgShowInventory.Value) { return false; } return CfgShowInventoryHeader.Value || CfgShowInventorySpotsCount.Value || CfgShowInventorySpotEntries.Value || CfgShowInventorySpotIndex.Value || CfgShowInventorySpotCurrentItem.Value; } private bool AnyEconomyRunEnabled() { return CfgShowRunStatsCurrency.Value || CfgShowRunStatsCore.Value || CfgShowRunStatsAll.Value || CfgShowItemsPurchasedAll.Value || CfgShowItemsUpgradesPurchasedAll.Value || CfgShowRunManagerCore.Value || CfgShowRunManagerDeepInternals.Value; } private bool AnyGameDirectorEnabled() { if (!CfgShowGameDirector.Value) { return false; } return CfgShowGameDirectorHeader.Value || CfgShowGameDirectorState.Value || CfgShowGameDirectorTimeScale.Value || CfgShowGameDirectorSeed.Value; } private bool AnyShopManagerEnabled() { if (!CfgShowShopManager.Value) { return false; } return CfgShowShopManagerHeader.Value || CfgShowShopManagerTotalCost.Value || CfgShowShopManagerTotalCurrency.Value || CfgShowShopManagerIsThief.Value || CfgShowShopManagerShoppingListCount.Value; } private bool AnyExtractionCartEnabled() { bool flag = CfgShowExtractionNearest.Value && (CfgShowExtractionHeader.Value || CfgShowExtractionPosDist.Value || CfgShowExtractionHaulGoal.Value || CfgShowExtractionState.Value); bool flag2 = CfgShowCartNearest.Value && (CfgShowCartHeader.Value || CfgShowCartPosDist.Value || CfgShowCartState.Value || CfgShowCartHaulCurrent.Value || CfgShowCartItemsInCartCount.Value); return flag || flag2; } private bool AnyPhotonEnabled() { if (!CfgShowPhotonNetwork.Value) { return false; } return CfgShowPhotonHeader.Value || CfgShowPhotonInRoom.Value || CfgShowPhotonIsMasterClient.Value || CfgShowPhotonRoomName.Value || CfgShowPhotonPlayerCount.Value || CfgShowPhotonLocalActorNumber.Value; } private bool AnyEnvironmentEnabled() { return CfgShowRoomColor.Value || CfgShowReverbPresetName.Value || CfgShowRoomAmbienceVolume.Value || CfgShowRoomAmbienceOverrideSummary.Value; } private bool AnyMapEnabled() { return CfgShowMapModuleName.Value || CfgShowMapModuleLinkedModuleName.Value; } private bool AnyDetailsEnabled() { return CfgShowTransformPosition.Value || CfgShowTransformRotationY.Value || CfgShowColliderCounts.Value; } private bool AnyDebugEnabled() { return CfgShowRoomVolumeCheckFlags.Value || CfgShowRoomVolumeCheckBox.Value; } private string WrapSection(string title, string body) { if (!CfgShowSectionHeaders.Value) { return (body ?? string.Empty).TrimEnd('\n'); } StringBuilder stringBuilder = new StringBuilder((body?.Length ?? 0) + 64); stringBuilder.Append(title).Append('\n'); stringBuilder.Append(body ?? string.Empty); return stringBuilder.ToString().TrimEnd('\n'); } private string BuildModuleSectionText() { PlayerAvatar instance = PlayerAvatar.instance; if ((Object)(object)instance == (Object)null) { return null; } RoomVolumeCheck roomVolumeCheck = instance.RoomVolumeCheck; if ((Object)(object)roomVolumeCheck == (Object)null) { return null; } RoomVolume val = null; try { List<RoomVolume> currentRooms = roomVolumeCheck.CurrentRooms; if (currentRooms != null && currentRooms.Count > 0) { val = currentRooms[0]; } } catch { } Module val2 = null; try { val2 = (((Object)(object)val != (Object)null) ? val.Module : null); } catch { } StringBuilder stringBuilder = new StringBuilder(2048); bool flag = false; if (CfgShowModuleName.Value) { flag = true; stringBuilder.Append("Name: ").Append(((Object)(object)val2 != (Object)null) ? ((Object)val2).name : "None").Append('\n'); } if (CfgShowModuleType.Value) { flag = true; stringBuilder.Append("Type: ").Append(((Object)(object)val2 != (Object)null) ? "Unknown" : "None").Append('\n'); } if (CfgShowModuleGrid.Value) { flag = true; stringBuilder.Append("Grid: "); if ((Object)(object)val2 != (Object)null) { int intField = GetIntField(val2, FiModuleGridX, int.MinValue); int intField2 = GetIntField(val2, FiModuleGridY, int.MinValue); stringBuilder.Append((intField != int.MinValue && intField2 != int.MinValue) ? (intField + "," + intField2) : "Unknown"); } else { stringBuilder.Append("None"); } stringBuilder.Append('\n'); } if (CfgShowModuleConnections.Value) { flag = true; stringBuilder.Append("Connect: "); if ((Object)(object)val2 != (Object)null) { bool ok; bool boolField = GetBoolField(val2, FiModuleConnectingTop, fallback: false, out ok); bool ok2; bool boolField2 = GetBoolField(val2, FiModuleConnectingRight, fallback: false, out ok2); bool ok3; bool boolField3 = GetBoolField(val2, FiModuleConnectingBottom, fallback: false, out ok3); bool ok4; bool boolField4 = GetBoolField(val2, FiModuleConnectingLeft, fallback: false, out ok4); stringBuilder.Append((ok && ok2 && ok3 && ok4) ? $"T={boolField} R={boolField2} B={boolField3} L={boolField4}" : "Unknown"); } else { stringBuilder.Append("None"); } stringBuilder.Append('\n'); } if (CfgShowModuleStateFlags.Value) { flag = true; stringBuilder.Append("State: "); if ((Object)(object)val2 != (Object)null) { bool ok5; bool boolField5 = GetBoolField(val2, FiModuleSetupDone, fallback: false, out ok5); bool explored = val2.Explored; bool ok6; bool boolField6 = GetBoolField(val2, FiModuleStartRoom, fallback: false, out ok6); bool ok7; bool boolField7 = GetBoolField(val2, FiModuleFirst, fallback: false, out ok7); stringBuilder.Append("SetupDone=").Append(ok5 ? boolField5.ToString() : "Unknown"); stringBuilder.Append(" Explored=").Append(explored); stringBuilder.Append(" StartRoom=").Append(ok6 ? boolField6.ToString() : "Unknown"); stringBuilder.Append(" First=").Append(ok7 ? boolField7.ToString() : "Unknown"); } else { stringBuilder.Append("None"); } stringBuilder.Append('\n'); } if (!flag) { return null; } return WrapSection("Module", stringBuilder.ToString()); } private string BuildRoomSectionText() { PlayerAvatar instance = PlayerAvatar.instance; if ((Object)(object)instance == (Object)null) { return null; } RoomVolumeCheck roomVolumeCheck = instance.RoomVolumeCheck; if ((Object)(object)roomVolumeCheck == (Object)null) { return null; } IList list = null; RoomVolume val = null; int num = 0; try { list = roomVolumeCheck.CurrentRooms; if (list != null) { num = list.Count; if (num > 0) { object? obj = list[0]; val = (RoomVolume)((obj is RoomVolume) ? obj : null); } } } catch { } StringBuilder stringBuilder = new StringBuilder(2048); bool flag = false; if (CfgShowRoomName.Value) { flag = true; stringBuilder.Append("Name: ").Append(((Object)(object)val != (Object)null) ? ((Object)((Component)val).gameObject).name : "None").Append('\n'); } if (CfgShowRoomFlags.Value) { flag = true; bool value = false; bool value2 = false; try { value = (Object)(object)val != (Object)null && val.Truck; value2 = (Object)(object)val != (Object)null && val.Extraction; } catch { } stringBuilder.Append("Flags: Truck=").Append(value).Append(" Extraction=") .Append(value2) .Append('\n'); } if (CfgShowCurrentRoomsCount.Value) { flag = true; stringBuilder.Append("Overlaps: ").Append(num).Append('\n'); } if (CfgShowOverlappedRoomsList.Value) { flag = true; stringBuilder.Append("Rooms: "); if (list == null || num == 0) { stringBuilder.Append("None"); } else { int num2 = Mathf.Max(1, CfgMaxListEntries.Value); int num3 = Mathf.Min(num, num2); for (int i = 0; i < num3; i++) { if (i > 0) { stringBuilder.Append(", "); } object? obj4 = list[i]; RoomVolume val2 = (RoomVolume)((obj4 is RoomVolume) ? obj4 : null); stringBuilder.Append(((Object)(object)val2 != (Object)null) ? ((Object)((Component)val2).gameObject).name : "Null"); } if (num > num3) { stringBuilder.Append(" ...(+").Append(num - num3).Append(')'); } } stringBuilder.Append('\n'); } if (!flag) { return null; } return WrapSection("Room", stringBuilder.ToString()); } private string BuildPlayerSectionText() { //IL_0785: Unknown result type (might be due to invalid IL or missing references) //IL_078a: Unknown result type (might be due to invalid IL or missing references) //IL_0793: Unknown result type (might be due to invalid IL or missing references) //IL_0798: Unknown result type (might be due to invalid IL or missing references) //IL_07a1: Unknown result type (might be due to invalid IL or missing references) //IL_07a6: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Unknown result type (might be due to invalid IL or missing references) //IL_02b0: Unknown result type (might be due to invalid IL or missing references) //IL_02b5: Unknown result type (might be due to invalid IL or missing references) PlayerAvatar instance = PlayerAvatar.instance; if ((Object)(object)instance == (Object)null) { return null; } StringBuilder stringBuilder = new StringBuilder(8192); bool flag = false; Transform val = null; try { val = (((Object)(object)instance.playerTransform != (Object)null) ? instance.playerTransform : ((Component)instance).transform); } catch { val = ((Component)instance).transform; } if (CfgShowPlayerName.Value) { flag = true; string value = "Unknown"; try { value = SemiFunc.PlayerGetName(instance); } catch { } stringBuilder.Append("Name: ").Append(value).Append('\n'); } if (CfgShowPlayerSteamId.Value) { flag = true; string value2 = "Unknown"; try { value2 = SemiFunc.PlayerGetSteamID(instance); } catch { } stringBuilder.Append("SteamID: ").Append(value2).Append('\n'); } if (CfgShowPlayerPosition.Value) { flag = true; Vector3 position = val.position; stringBuilder.Append("Pos: ").Append(position.x.ToString("0.###")).Append(",") .Append(position.y.ToString("0.###")) .Append(",") .Append(position.z.ToString("0.###")) .Append('\n'); } if (CfgShowPlayerRotation.Value) { flag = true; Vector3 eulerAngles = val.eulerAngles; stringBuilder.Append("Rot: ").Append(eulerAngles.x.ToString("0.###")).Append(",") .Append(eulerAngles.y.ToString("0.###")) .Append(",") .Append(eulerAngles.z.ToString("0.###")) .Append('\n'); } if (CfgShowPlayerForward.Value) { flag = true; Vector3 forward = val.forward; stringBuilder.Append("Fwd: ").Append(forward.x.ToString("0.###")).Append(",") .Append(forward.y.ToString("0.###")) .Append(",") .Append(forward.z.ToString("0.###")) .Append('\n'); } if (CfgShowPlayerVelocity.Value) { flag = true; Rigidbody objectField = GetObjectField<Rigidbody>(instance, FiPaRb); if ((Object)(object)objectField != (Object)null) { Vector3 velocity = objectField.velocity; stringBuilder.Append("Vel: ").Append(velocity.x.ToString("0.###")).Append(",") .Append(velocity.y.ToString("0.###")) .Append(",") .Append(velocity.z.ToString("0.###")); stringBuilder.Append(" |Speed=").Append(((Vector3)(ref velocity)).magnitude.ToString("0.###")); } else { stringBuilder.Append("Vel: None"); } stringBuilder.Append('\n'); } bool ok; if (CfgShowPlayerStateFlags.Value) { flag = true; bool boolField = GetBoolField(instance, FiPaIsLocal, fallback: false, out ok); bool boolField2 = GetBoolField(instance, FiPaIsDisabled, fallback: false, out ok); bool boolField3 = GetBoolField(instance, FiPaSpawned, fallback: false, out ok); bool boolField4 = GetBoolField(instance, FiPaIsCrouching, fallback: false, out ok); bool boolField5 = GetBoolField(instance, FiPaIsSprinting, fallback: false, out ok); bool boolField6 = GetBoolField(instance, FiPaIsCrawling, fallback: false, out ok); bool boolField7 = GetBoolField(instance, FiPaIsSliding, fallback: false, out ok); bool boolField8 = GetBoolField(instance, FiPaIsMoving, fallback: false, out ok); bool boolField9 = GetBoolField(instance, FiPaIsGrounded, fallback: false, out ok); bool boolField10 = GetBoolField(instance, FiPaIsTumbling, fallback: false, out ok); bool boolField11 = GetBoolField(instance, FiPaSpectating, fallback: false, out ok); stringBuilder.Append("State: "); stringBuilder.Append("isLocal=").Append(boolField); stringBuilder.Append(" isDisabled=").Append(boolField2); stringBuilder.Append(" spawned=").Append(boolField3); stringBuilder.Append(" grounded=").Append(boolField9); stringBuilder.Append(" moving=").Append(boolField8); stringBuilder.Append(" sprinting=").Append(boolField5); stringBuilder.Append(" crouching=").Append(boolField4); stringBuilder.Append(" crawling=").Append(boolField6); stringBuilder.Append(" sliding=").Append(boolField7); stringBuilder.Append(" tumbling=").Append(boolField10); stringBuilder.Append(" spectating=").Append(boolField11); stringBuilder.Append('\n'); } if (CfgShowPlayerDeepInternals.Value) { flag = true; float floatField = GetFloatField(instance, FiPaClientPositionDelta, float.NaN); float floatField2 = GetFloatField(instance, FiPaEnemyVisionFreezeTimer, float.NaN); stringBuilder.Append("Internals: "); stringBuilder.Append("clientPositionDelta=").Append(float.IsNaN(floatField) ? "Unknown" : floatField.ToString("0.###")); stringBuilder.Append(" enemyVisionFreezeTimer=").Append(float.IsNaN(floatField2) ? "Unknown" : floatField2.ToString("0.###")); stringBuilder.Append('\n'); } if (CfgShowPlayerHealthSummary.Value || CfgShowPlayerHealthDeepInternals.Value) { flag = true; int num = int.MinValue; int num2 = int.MinValue; bool value3 = false; float f = float.NaN; try { if ((Object)(object)instance.playerHealth != (Object)null) { num = GetIntField(instance.playerHealth, FiPhHealth, int.MinValue); num2 = GetIntField(instance.playerHealth, FiPhMaxHealth, int.MinValue); value3 = GetBoolField(instance.playerHealth, FiPhGodMode, fallback: false, out ok); f = GetFloatField(instance.playerHealth, FiPhInvincibleTimer, float.NaN); } } catch { } if (CfgShowPlayerHealthSummary.Value) { stringBuilder.Append("HP: "); stringBuilder.Append((num != int.MinValue) ? num.ToString() : "Unknown"); stringBuilder.Append("/"); stringBuilder.Append((num2 != int.MinValue) ? num2.ToString() : "Unknown"); stringBuilder.Append('\n'); } if (CfgShowPlayerHealthDeepInternals.Value) { stringBuilder.Append("HP Internals: "); stringBuilder.Append("godMode=").Append(value3); stringBuilder.Append(" invincibleTimer=").Append(float.IsNaN(f) ? "Unknown" : f.ToString("0.###")); stringBuilder.Append('\n'); } } if (CfgShowPlayerViewInfo.Value) { flag = true; Camera val2 = null; try { val2 = Camera.main; } catch { } if ((Object)(object)val2 != (Object)null) { Vector3 position2 = ((Component)val2).transform.position; Vector3 eulerAngles2 = ((Component)val2).transform.eulerAngles; Vector3 forward2 = ((Component)val2).transform.forward; stringBuilder.Append("View: "); stringBuilder.Append("Cam=").Append(((Object)val2).name); stringBuilder.Append(" Pos=").Append(position2.x.ToString("0.###")).Append(",") .Append(position2.y.ToString("0.###")) .Append(",") .Append(position2.z.ToString("0.###")); stringBuilder.Append(" Rot=").Append(eulerAngles2.x.ToString("0.###")).Append(",") .Append(eulerAngles2.y.ToString("0.###")) .Append(",") .Append(eulerAngles2.z.ToString("0.###")); stringBuilder.Append('\n'); stringBuilder.Append("ViewFwd: ").Append(forward2.x.ToString("0.###")).Append(",") .Append(forward2.y.ToString("0.###")) .Append(",") .Append(forward2.z.ToString("0.###")) .Append('\n'); stringBuilder.Append("FOV: ").Append(val2.fieldOfView.ToString("0.###")).Append(" Near=") .Append(val2.nearClipPlane.ToString("0.###")) .Append(" Far=") .Append(val2.farClipPlane.ToString("0.###")) .Append('\n'); } else { stringBuilder.Append("View: Camera.main=None").Append('\n'); } } if (!flag) { return null; } return WrapSection("Player", stringBuilder.ToString()); } private string BuildInventorySectionText() { if (!CfgShowInventory.Value) { return null; } object singletonByTypeName = GetSingletonByTypeName("Inventory"); StringBuilder stringBuilder = new StringBuilder(8192); bool flag = false; if (CfgShowInventoryHeader.Value) { flag = true; stringBuilder.Append("Inventory: ").Append((singletonByTypeName != null) ? FormatObjectShort(singletonByTypeName) : "None").Append('\n'); } if (singletonByTypeName == null) { if (CfgShowInventorySpotsCount.Value || CfgShowInventorySpotEntries.Value) { flag = true; stringBuilder.Append("Spots: None").Append('\n'); } } else if (CfgShowInventorySpotsCount.Value || CfgShowInventorySpotEntries.Value) { IEnumerable enumerable = GetMemberValue(singletonByTypeName, "inventorySpots") as IEnumerable; if (enumerable == null) { enumerable = GetMemberValue(singletonByTypeName, "InventorySpots") as IEnumerable; } if (enumerable == null) { flag = true; stringBuilder.Append("Spots: None").Append('\n'); } else { List<object> list = new List<object>(32); foreach (object item in enumerable) { if (item != null) { list.Add(item); } } if (CfgShowInventorySpotsCount.Value) { flag = true; stringBuilder.Append("SpotsCount: ").Append(list.Count).Append('\n'); } if (CfgShowInventorySpotEntries.Value) { flag = true; int num = Mathf.Clamp(CfgMaxListEntries.Value, 1, 500); int num2 = Mathf.Min(list.Count, num); for (int i = 0; i < num2; i++) { object instance = list[i]; stringBuilder.Append(" [").Append(i).Append("] "); if (CfgShowInventorySpotIndex.Value) { int intMember = GetIntMember(instance, "inventorySpotIndex", int.MinValue); if (intMember == int.MinValue) { intMember = GetIntMember(instance, "Index", int.MinValue); } stringBuilder.Append("idx=").Append((intMember != int.MinValue) ? intMember.ToString() : "Unknown").Append(' '); } if (CfgShowInventorySpotCurrentItem.Value) { object obj = GetMemberValue(instance, "CurrentItem") ?? GetMemberValue(instance, "currentItem"); stringBuilder.Append("item=").Append((obj != null) ? FormatObjectShort(obj) : "None").Append(' '); } stringBuilder.Append('\n'); } if (list.Count > num2) { stringBuilder.Append(" ...(+").Append(list.Count - num2).Append(')') .Append('\n'); } } } } if (!flag) { return null; } return WrapSection("Inventory", stringBuilder.ToString()); } private string BuildEconomyRunSectionText() { StringBuilder stringBuilder = new StringBuilder(16384); bool flag = false; StatsManager val = null; if (CfgShowRunStatsCurrency.Value || CfgShowRunStatsCore.Value || CfgShowRunStatsAll.Value || CfgShowItemsPurchasedAll.Value || CfgShowItemsUpgradesPurchasedAll.Value) { val = StatsManager.instance; if ((Object)(object)val == (Object)null) { flag = true; stringBuilder.Append("StatsManager: None").Append('\n'); } } if ((Object)(object)val != (Object)null) { if (CfgShowRunStatsCurrency.Value) { flag = true; int dictInt = GetDictInt(val.runStats, "currency", int.MinValue); stringBuilder.Append("Currency: ").Append((dictInt != int.MinValue) ? dictInt.ToString() : "Unknown").Append('\n'); } if (CfgShowRunStatsCore.Value) { flag = true; int dictInt2 = GetDictInt(val.runStats, "level", int.MinValue); int dictInt3 = GetDictInt(val.runStats, "lives", int.MinValue); int dictInt4 = GetDictInt(val.runStats, "totalHaul", int.MinValue); int dictInt5 = GetDictInt(val.runStats, "chargingStationCharge", int.MinValue); int dictInt6 = GetDictInt(val.runStats, "chargingStationChargeTotal", int.MinValue); stringBuilder.Append("RunStatsCore: "); stringBuilder.Append("level=").Append((dictInt2 != int.MinValue) ? dictInt2.ToString() : "Unknown"); stringBuilder.Append(" lives=").Append((dictInt3 != int.MinValue) ? dictInt3.ToString() : "Unknown"); stringBuilder.Append(" totalHaul=").Append((dictInt4 != int.MinValue) ? dictInt4.ToString() : "Unknown"); stringBuilder.Append(" charge=").Append((dictInt5 != int.MinValue) ? dictInt5.ToString() : "Unknown"); stringBuilder.Append("/").Append((dictInt6 != int.MinValue) ? dictInt6.ToString() : "Unknown"); stringBuilder.Append('\n'); } if (CfgShowRunStatsAll.Value) { flag = true; AppendDictionarySection(stringBuilder, "runStats", val.runStats); } if (CfgShowItemsPurchasedAll.Value) { flag = true; AppendDictionarySection(stringBuilder, "itemsPurchased", val.itemsPurchased); } if (CfgShowItemsUpgradesPurchasedAll.Value) { flag = true; AppendDictionarySection(stringBuilder, "itemsUpgradesPurchased", val.itemsUpgradesPurchased); } } if (CfgShowRunManagerCore.Value || CfgShowRunManagerDeepInternals.Value) { object singletonByTypeName = GetSingletonByTypeName("RunManager"); flag = true; if (singletonByTypeName == null) { stringBuilder.Append("RunManager: None").Append('\n'); } else { if (CfgShowRunManagerCore.Value) { if (CfgShowRunManagerLevelCurrent.Value) { string value = "Unknown"; object memberValue = GetMemberValue(singletonByTypeName, "levelCurrent"); Object val2 = (Object)((memberValue is Object) ? memberValue : null); if (val2 != null && val2 != (Object)null) { value = val2.name; } else if (memberValue != null) { value = memberValue.ToString(); } stringBuilder.Append("Run.levelCurrent: ").Append(value).Append('\n'); } if (CfgShowRunManagerLevelsCompleted.Value) { int intMember = GetIntMember(singletonByTypeName, "levelsCompleted", int.MinValue); stringBuilder.Append("Run.levelsCompleted: ").Append((intMember != int.MinValue) ? intMember.ToString() : "Unknown").Append('\n'); } } if (CfgShowRunManagerDeepInternals.Value) { if (CfgShowRunManagerLoadLevel.Value) { int intMemberByField = GetIntMemberByField(singletonByTypeName, FiRmLoadLevel, int.MinValue); stringBuilder.Append("Run.loadLevel: ").Append((intMemberByField != int.MinValue) ? intMemberByField.ToString() : "Unknown").Append('\n'); } if (CfgShowRunManagerSaveLevel.Value) { int intMemberByField2 = GetIntMemberByField(singletonByTypeName, FiRmSaveLevel, int.MinValue); stringBuilder.Append("Run.saveLevel: ").Append((intMemberByField2 != int.MinValue) ? intMemberByField2.ToString() : "Unknown").Append('\n'); } if (CfgShowRunManagerRunStarted.Value) { bool boolMemberByField = GetBoolMemberByField(singletonByTypeName, FiRmRunStarted, fallback: false); stringBuilder.Append("Run.runStarted: ").Append(boolMemberByField).Append('\n'); } if (CfgShowRunManagerRunLives.Value) { int intMemberByField3 = GetIntMemberByField(singletonByTypeName, FiRmRunLives, int.MinValue); stringBuilder.Append("Run.runLives: ").Append((intMemberByField3 != int.MinValue) ? intMemberByField3.ToString() : "Unknown").Append('\n'); } if (CfgShowRunManagerLevelFailed.Value) { bool boolMemberByField2 = GetBoolMemberByField(singletonByTypeName, FiRmLevelFailed, fallback: false); stringBuilder.Append("Run.levelFailed: ").Append(boolMemberByField2).Append('\n'); } if (CfgShowRunManagerRestarting.Value) { bool boolMemberByField3 = GetBoolMemberByField(singletonByTypeName, FiRmRestarting, fallback: false); stringBuilder.Append("Run.restarting: ").Append(boolMemberByField3).Append('\n'); } if (CfgShowRunManagerRestartingDone.Value) { bool boolMemberByField4 = GetBoolMemberByField(singletonByTypeName, FiRmRestartingDone, fallback: false); stringBuilder.Append("Run.restartingDone: ").Append(boolMemberByField4).Append('\n'); } if (CfgShowRunManagerLevelsMax.Value) { int intMemberByField4 = GetIntMemberByField(singletonByTypeName, FiRmLevelsMax, int.MinValue); stringBuilder.Append("Run.levelsMax: ").Append((intMemberByField4 != int.MinValue) ? intMemberByField4.ToString() : "Unknown").Append('\n'); } } } } if (!flag) { return null; } return WrapSection("Economy/Run", stringBuilder.ToString()); } private string BuildGameDirectorSectionText() { if (!CfgShowGameDirector.Value) { return null; } object singletonByTypeName = GetSingletonByTypeName("GameDirector"); StringBuilder stringBuilder = new StringBuilder(4096); bool flag = false; if (CfgShowGameDirectorHeader.Value) { flag = true; stringBuilder.Append("GameDirector: ").Append((singletonByTypeName != null) ? FormatObjectShort(singletonByTypeName) : "None").Append('\n'); } if (singletonByTypeName != null) { if (CfgShowGameDirectorState.Value) { flag = true; object obj = GetMemberValue(singletonByTypeName, "currentState") ?? GetMemberValue(singletonByTypeName, "CurrentState"); stringBuilder.Append("State: ").Append((obj != null) ? ValueToString(obj, CfgDeepDumpMaxStringLength.Value) : "Unknown").Append('\n'); } if (CfgShowGameDirectorTimeScale.Value) { flag = true; object obj2 = GetMemberValue(singletonByTypeName, "TimeScale") ?? GetMemberValue(singletonByTypeName, "timeScale"); stringBuilder.Append("TimeScale: ").Append((obj2 != null) ? ValueToString(obj2, CfgDeepDumpMaxStringLength.Value) : "Unknown").Append('\n'); } if (CfgShowGameDirectorSeed.Value) { flag = true; object obj3 = GetMemberValue(singletonByTypeName, "RandomSeed") ?? GetMemberValue(singletonByTypeName, "Seed"); stringBuilder.Append("Seed: ").Append((obj3 != null) ? ValueToString(obj3, CfgDeepDumpMaxStringLength.Value) : "Unknown").Append('\n'); } } if (!flag) { return null; } return WrapSection("GameDirector", stringBuilder.ToString()); } private string BuildShopManagerSectionText() { if (!CfgShowShopManager.Value) { return null; } object singletonByTypeName = GetSingletonByTypeName("ShopManager"); StringBuilder stringBuilder = new StringBuilder(4096); bool flag = false; if (CfgShowShopManagerHeader.Value) { flag = true; stringBuilder.Append("ShopManager: ").Append((singletonByTypeName != null) ? FormatObjectShort(singletonByTypeName) : "None").Append('\n'); } if (singletonByTypeName != null) { if (CfgShowShopManagerTotalCost.Value) { flag = true; object obj = GetMemberValue(singletonByTypeName, "totalCost") ?? GetMemberValue(singletonByTypeName, "TotalCost"); stringBuilder.Append("TotalCost: ").Append((obj != null) ? ValueToString(obj, CfgDeepDumpMaxStringLength.Value) : "Unknown").Append('\n'); } if (CfgShowShopManagerTotalCurrency.Value) { flag = true; object obj2 = GetMemberValue(singletonByTypeName, "totalCurrency") ?? GetMemberValue(singletonByTypeName, "TotalCurrency"); stringBuilder.Append("TotalCurrency: ").Append((obj2 != null) ? ValueToString(obj2, CfgDeepDumpMaxStringLength.Value) : "Unknown").Append('\n'); } if (CfgShowShopManagerIsThief.Value) { flag = true; object obj3 = GetMemberValue(singletonByTypeName, "isThief") ?? GetMemberValue(singletonByTypeName, "IsThief"); stringBuilder.Append("IsThief: ").Append((obj3 != null) ? ValueToString(obj3, CfgDeepDumpMaxStringLength.Value) : "Unknown").Append('\n'); } if (CfgShowShopManagerShoppingListCount.Value) { flag = true; object memberValue = GetMemberValue(singletonByTypeName, "shoppingList"); if (memberValue is IEnumerable e && !(memberValue is string)) { int value = CountEnumerable(e, 2000); stringBuilder.Append("ShoppingListCount: ").Append(value).Append('\n'); } else { stringBuilder.Append("ShoppingListCount: Unknown").Append('\n'); } } } if (!flag) { return null; } return WrapSection("ShopManager", stringBuilder.ToString()); } private string BuildExtractionCartSectionText() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_033f: Unknown result type (might be due to invalid IL or missing references) //IL_0344: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_035e: Unknown result type (might be due to invalid IL or missing references) //IL_035f: Unknown result type (might be due to invalid IL or missing references) PlayerAvatar instance = PlayerAvatar.instance; if ((Object)(object)instance == (Object)null) { return null; } Vector3 playerPositionSafe = GetPlayerPositionSafe(instance); object obj = null; object obj2 = null; bool flag = CfgShowExtractionNearest.Value && (CfgShowExtractionHeader.Value || CfgShowExtractionPosDist.Value || CfgShowExtractionHaulGoal.Value || CfgShowExtractionState.Value); bool flag2 = CfgShowCartNearest.Value && (CfgShowCartHeader.Value || CfgShowCartPosDist.Value || CfgShowCartState.Value || CfgShowCartHaulCurrent.Value || CfgShowCartItemsInCartCount.Value); if (flag) { obj = FindNearestObjectByTypeName("ExtractionPoint", playerPositionSafe); } if (flag2) { obj2 = FindNearestObjectByTypeName("PhysGrabCart", playerPositionSafe); } StringBuilder stringBuilder = new StringBuilder(8192); bool flag3 = false; if (flag) { if (CfgShowExtractionHeader.Value) { flag3 = true; stringBuilder.Append("NearestExtraction: ").Append((obj != null) ? FormatObjectShort(obj) : "None").Append('\n'); } if (obj != null) { Vector3 transformPosition = GetTransformPosition(obj); if (CfgShowExtractionPosDist.Value) { flag3 = true; float num = Vector3.Distance(playerPositionSafe, transformPosition); stringBuilder.Append("PosDist: ").Append(transformPosition.x.ToString("0.###")).Append(",") .Append(transformPosition.y.ToString("0.###")) .Append(",") .Append(transformPosition.z.ToString("0.###")) .Append(" Dist=") .Append(num.ToString("0.###")) .Append('\n'); } if (CfgShowExtractionHaulGoal.Value) { flag3 = true; object obj3 = GetMemberValue(obj, "haulGoal") ?? GetMemberValue(obj, "HaulGoal"); stringBuilder.Append("HaulGoal: ").Append((obj3 != null) ? ValueToString(obj3, CfgDeepDumpMaxStringLength.Value) : "Unknown").Append('\n'); } if (CfgShowExtractionState.Value) { flag3 = true; object obj4 = GetMemberValue(obj, "currentState") ?? GetMemberValue(obj, "CurrentState"); stringBuilder.Append("State: ").Append((obj4 != null) ? ValueToString(obj4, CfgDeepDumpMaxStringLength.Value) : "Unknown").Append('\n'); } } } if (flag2) { if (CfgShowCartHeader.Value) { flag3 = true; stringBuilder.Append("NearestCart: ").Append((obj2 != null) ? FormatObjectShort(obj2) : "None").Append('\n'); } if (obj2 != null) { Vector3 transformPosition2 = GetTransformPosition(obj2); if (CfgShowCartPosDist.Value) { flag3 = true; float num2 = Vector3.Distance(playerPositionSafe, transformPosition2); stringBuilder.Append("PosDist: ").Append(transformPosition2.x.ToString("0.###")).Append(",") .Append(transformPosition2.y.ToString("0.###")) .Append(",") .Append(transformPosition2.z.ToString("0.###")) .Append(" Dist=") .Append(num2.ToString("0.###")) .Append('\n'); } if (CfgShowCartState.Value) { flag3 = true; object obj5 = GetMemberValue(obj2, "currentState") ?? GetMemberValue(obj2, "CurrentState"); stringBuilder.Append("State: ").Append((obj5 != null) ? ValueToString(obj5, CfgDeepDumpMaxStringLength.Value) : "Unknown").Append('\n'); } if (CfgShowCartHaulCurrent.Value) { flag3 = true; object obj6 = GetMemberValue(obj2, "haulCurrent") ?? GetMemberValue(obj2, "HaulCurrent"); stringBuilder.Append("HaulCurrent: ").Append((obj6 != null) ? ValueToString(obj6, CfgDeepDumpMaxStringLength.Value) : "Unknown").Append('\n'); } if (CfgShowCartItemsInCartCount.Value) { flag3 = true; object obj7 = GetMemberValue(obj2, "itemsInCartCount") ?? GetMemberValue(obj2, "ItemsInCartCount"); stringBuilder.Append("ItemsInCartCount: ").Append((obj7 != null) ? ValueToString(obj7, CfgDeepDumpMaxStringLength.Value) : "Unknown").Append('\n'); } } } if (!flag3) { return null; } return WrapSection("Extraction/Cart", stringBuilder.ToString()); } private string BuildPhotonSectionText() { PhotonSnapshot photonSnapshot = GetPhotonSnapshot(); StringBuilder stringBuilder = new StringBuilder(4096); bool flag = false; if (CfgShowPhotonHeader.Value) { flag = true; stringBuilder.Append("Photon: ").Append(photonSnapshot.Available ? "Available" : "NotAvailable").Append('\n'); } if (!photonSnapshot.Available) { if (CfgShowPhotonInRoom.Value || CfgShowPhotonIsMasterClient.Value || CfgShowPhotonRoomName.Value || CfgShowPhotonPlayerCount.Value || CfgShowPhotonLocalActorNumber.Value) { flag = true; stringBuilder.Append("Photon: NotAvailable").Append('\n'); } } else { if (CfgShowPhotonInRoom.Value) { flag = true; stringBuilder.Append("InRoom: ").Append(photonSnapshot.InRoom).Append('\n'); } if (CfgShowPhotonIsMasterClient.Value) { flag = true; stringBuilder.Append("IsMasterClient: ").Append(photonSnapshot.IsMasterClient).Append('\n'); } if (CfgShowPhotonRoomName.Value) { flag = true; stringBuilder.Append("RoomName: ").Append(string.IsNullOrEmpty(photonSnapshot.RoomName) ? "None" : photonSnapshot.RoomName).Append('\n'); } if (CfgShowPhotonPlayerCount.Value) { flag = true; stringBuilder.Append("PlayerCount: ").Append((photonSnapshot.PlayerCount >= 0) ? photonSnapshot.PlayerCount.ToString() : "Unknown").Append('\n'); } if (CfgShowPhotonLocalActorNumber.Value) { flag = true; stringBuilder.Append("LocalActor: ").Append((photonSnapshot.LocalActorNumber >= 0) ? photonSnapshot.LocalActorNumber.ToString() : "Unknown").Append('\n'); } } if (!flag) { return null; } return WrapSection("Photon", stringBuilder.ToString()); } private string BuildEnvironmentSectionText() { //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) PlayerAvatar instance = PlayerAvatar.instance; if ((Object)(object)instance == (Object)null) { return null; } RoomVolumeCheck roomVolumeCheck = instance.RoomVolumeCheck; if ((Object)(object)roomVolumeCheck == (Object)null) { return null; } RoomVolume val = null; try { List<RoomVolume> currentRooms = roomVolumeCheck.CurrentRooms; if (currentRooms != null && currentRooms.Count > 0) { val = currentRooms[0]; } } catch { } StringBuilder stringBuilder = new StringBuilder(4096); bool flag = false; if (CfgShowRoomColor.Value) { flag = true; stringBuilder.Append("Color: "); if ((Object)(object)val != (Object)null) { Color color = val.Color; stringBuilder.Append(color.r.ToString("0.###")).Append(",").Append(color.g.ToString("0.###")) .Append(",") .Append(color.b.ToString("0.###")) .Append(",") .Append(color.a.ToString("0.###")); } else { stringBuilder.Append("None"); } stringBuilder.Append('\n'); } if (CfgShowReverbPresetName.Value) { flag = true; stringBuilder.Append("Reverb: ").Append(((Object)(object)val != (Object)null && (Object)(object)val.ReverbPreset != (Object)null) ? ((Object)val.ReverbPreset).name : "None").Append('\n'); } if (CfgShowRoomAmbienceVolume.Value) { flag = true; stringBuilder.Append("AmbienceVol: ").Append(((Object)(object)val != (Object)null && (Object)(object)val.RoomAmbience != (Object)null) ? val.RoomAmbience.volume.ToString("0.###") : "None").Append('\n'); } if (CfgShowRoomAmbienceOverrideSummary.Value) { flag = true; stringBuilder.Append("Override: "); if ((Object)(object)val != (Object)null && (Object)(object)val.RoomAmbienceOverride != (Object)null) { LevelAmbience roomAmbienceOverride = val.RoomAmbienceOverride; string value = (((Object)(object)roomAmbienceOverride.loopClip != (Object)null) ? ((Object)roomAmbienceOverride.loopClip).name : "None"); int value2 = ((roomAmbienceOverride.breakers != null) ? roomAmbienceOverride.breakers.Count : 0); stringBuilder.Append("Clip=").Append(value); stringBuilder.Append(" Vol=").Append(roomAmbienceOverride.loopVolume.ToString("0.###")); stringBuilder.Append(" Breakers=").Append(value2); } else { stringBuilder.Append("None"); } stringBuilder.Append('\n'); } if (!flag) { return null; } return WrapSection("Environment", stringBuilder.ToString()); } private string BuildMapSectionText() { PlayerAvatar instance = PlayerAvatar.instance; if ((Object)(object)instance == (Object)null) { return null; } RoomVolumeCheck roomVolumeCheck = instance.RoomVolumeCheck; if ((Object)(object)roomVolumeCheck == (Object)null) { return null; } RoomVolume val = null; try { List<RoomVolume> currentRooms = roomVolumeCheck.CurrentRooms; if (currentRooms != null && currentRooms.Count > 0) { val = currentRooms[0]; } } catch { } MapModule val2 = null; try { val2 = (((Object)(object)val != (Object)null) ? val.MapModule : null); } catch { } StringBuilder stringBuilder = new StringBuilder(2048); bool flag = false; if (CfgShowMapModuleName.Value) { flag = true; stringBuilder.Append("MapModule: ").Append(((Object)(object)val2 != (Object)null) ? ((Object)val2).name : "None").Append('\n'); } if (CfgShowMapModuleLinkedModuleName.Value) { flag = true; stringBuilder.Append("LinkedModule: ").Append(((Object)(object)val2 != (Object)null && (Object)(object)val2.module != (Object)null) ? ((Object)val2.module).name : "None").Append('\n'); } if (!flag) { return null; } return WrapSection("Map", stringBuilder.ToString()); } private string BuildDetailsSectionText() { //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) PlayerAvatar instance = PlayerAvatar.instance; if ((Object)(object)instance == (Object)null) { return null; } RoomVolumeCheck roomVolumeCheck = instance.RoomVolumeCheck; if ((Object)(object)roomVolumeCheck == (Object)null) { return null; } RoomVolume val = null; try { List<RoomVolume> currentRooms = roomVolumeCheck.CurrentRooms; if (currentRooms != null && currentRooms.Count > 0) { val = currentRooms[0]; } } catch { } StringBuilder stringBuilder = new StringBuilder(2048); bool flag = false; if (CfgShowTransformPosition.Value) { flag = true; stringBuilder.Append("Room Pos: "); if ((Object)(object)val != (Object)null) { Vector3 position = ((Component)val).transform.position; stringBuilder.Append(position.x.ToString("0.###")).Append(",").Append(position.y.ToString("0.###")) .Append(",") .Append(position.z.ToString("0.###")); } else { stringBuilder.Append("None"); } stringBuilder.Append('\n'); } if (CfgShowTransformRotationY.Value) { flag = true; stringBuilder.Append("Room RotY: ").Append(((Object)(object)val != (Object)null) ? ((Component)val).transform.eulerAngles.y.ToString("0.###") : "None").Append('\n'); } if (CfgShowColliderCounts.Value) { flag = true; stringBuilder.Append("Colliders: "); if ((Object)(object)val != (Object)null) { int value = ((Component)val).GetComponentsInChildren<BoxCollider>(true).Length; int value2 = ((Component)val).GetComponentsInChildren<MeshCollider>(true).Length; stringBuilder.Append("Box=").Append(value).Append(" Mesh=") .Append(value2); } else { stringBuilder.Append("None"); } stringBuilder.Append('\n'); } if (!flag) { return null; } return WrapSection("Details", stringBuilder.ToString()); } private string BuildDebugSectionText() { PlayerAvatar instance = PlayerAvatar.instance; if ((Object)(object)instance == (Object)null) { return null; } RoomVolumeCheck roomVolumeCheck = instance.RoomVolumeCheck; if ((Object)(object)roomVolumeCheck == (Object)null) { return null; } StringBuilder stringBuilder = new StringBuilder(2048); bool flag = false; if (CfgShowRoomVolumeCheckFlags.Value) { flag = true; stringBuilder.Append("RVC Flags: "); bool ok; bool boolField = GetBoolField(roomVolumeCheck, FiRvcInTruck, fallback: false, out ok); bool ok2; bool boolField2 = GetBoolField(roomVolumeCheck, FiRvcInExtractionPoint, fallback: false, out ok2); stringBuilder.Append("inTruck=").Append(ok ? boolField.ToString() : "Unknown"); stringBuilder.Append(" inExtraction=").Append(ok2 ? boolField2.ToString() : "Unknown"); stringBuilder.Append('\n'); } if (CfgShowRoomVolumeCheckBox.Value) { flag = true; stringBuilder.Append("RVC Box: "); stringBuilder.Append("pos=").Append(roomVolumeCheck.CheckPosition.x.ToString("0.###")).Append(",") .Append(roomVolumeCheck.CheckPosition.y.ToString("0.###")) .Append(",") .Append(roomVolumeCheck.CheckPosition.z.ToString("0.###")); stringBuilder.Append(" size=").Append(roomVolumeCheck.currentSize.x.ToString("0.###")).Append(",") .Append(roomVolumeCheck.currentSize.y.ToString("0.###")) .Append(",") .Append(roomVolumeCheck.currentSize.z.ToString("0.###")); stringBuilder.Append('\n'); } if (!flag) { return null; } return WrapSection("Debug", stringBuilder.ToString()); } private string BuildPlayerDeepDumpText() { PlayerAvatar instance = PlayerAvatar.instance; if ((Object)(object)instance == (Object)null) { return null; } StringBuilder stringBuilder = new StringBuilder(16384); stringBuilder.Append("PlayerDeepDump:").Append('\n'); AppendDeepDump(stringBuilder, instance, "PlayerAvatar"); return WrapSection("DeepDump.Player", stringBuilder.ToString()); } private string BuildInventoryDeepDumpText() { object singletonByTypeName = GetSingletonByTypeName("Inventory"); StringBuilder stringBuilder = new StringBuilder(16384); stringBuilder.Append("InventoryDeepDump:").Append('\n'); if (singletonByTypeName != null) { AppendDeepDump(stringBuilder, singletonByTypeName, "Inventory"); IEnumerable enumerable = (GetMemberValue(singletonByTypeName, "inventorySpots") as IEnumerable) ?? (GetMemberValue(singletonByTypeName, "InventorySpots") as IEnumerable); if (enumerable != null) { int num = Mathf.Clamp(CfgMaxListEntries.Value, 1, 200); int num2 = 0; foreach (object item in enumerable) { num2++; if (num2 > num) { stringBuilder.Append(" ...(+more spots)").Append('\n'); break; } if (item != null) { stringBuilder.Append(" Spot[").Append(num2 - 1).Append("]: ") .Append(FormatObjectShort(item)) .Append('\n'); AppendDeepDump(stringBuilder, item, "InventorySpot"); } } } } else { stringBuilder.Append(" Inventory=None").Append('\n'); } return WrapSection("DeepDump.Inventory", stringBuilder.ToString()); } private string BuildGameDirectorDeepDumpText() { object singletonByTypeName = GetSingletonByTypeName("GameDirector"); StringBuilder stringBuilder = new StringBuilder(16384); stringBuilder.Append("GameDirectorDeepDump:").Append('\n'); if (singletonByTypeName != null) { AppendDeepDump(stringBuilder, singletonByTypeName, "GameDirector"); } else { stringBuilder.Append(" GameDirector=None").Append('\n'); } return WrapSection("DeepDump.GameDirector", stringBuilder.ToString()); } private string BuildShopManagerDeepDumpText() { object singletonByTypeName = GetSingletonByTypeName("ShopManager"); StringBuilder stringBuilder = new StringBuilder(16384); stringBuilder.Append("ShopManagerDeepDump:").Append('\n'); if (singletonByTypeName != null) { AppendDeepDump(stringBuilder, singletonByTypeName, "ShopManager"); } else { stringBuilder.Append(" ShopManager=None").Append('\n'); } return WrapSection("DeepDump.ShopManager", stringBuilder.ToString()); } private string BuildExtractionCartDeepDumpText() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) PlayerAvatar instance = PlayerAvatar.instance; if ((Object)(object)instance == (Object)null) { return null; } Vector3 playerPositionSafe = GetPlayerPositionSafe(instance); object obj = FindNearestObjectByTypeName("ExtractionPoint", playerPositionSafe); object obj2 = FindNearestObjectByTypeName("PhysGrabCart", playerPositionSafe); StringBuilder stringBuilder = new StringBuilder(16384); stringBuilder.Append("ExtractionCartDeepDump:").Append('\n'); if (obj != null) { stringBuilder.Append(" Extraction: ").Append(FormatObjectShort(obj)).Append('\n'); AppendDeepDump(stringBuilder, obj, "ExtractionPoint"); } else { stringBuilder.Append(" Extraction=None").Append('\n'); } if (obj2 != null) { stringBuilder.Append(" Cart: ").Append(FormatObjectShort(obj2)).Append('\n'); AppendDeepDump(stringBuilder, obj2, "PhysGrabCart"); } else { stringBuilder.Append(" Cart=None").Append('\n'); } return WrapSection("DeepDump.ExtractionCart", stringBuilder.ToString()); } private string BuildPhotonDeepDumpText() { PhotonSnapshot photonSnapshot = GetPhotonSnapshot(); StringBuilder stringBuilder = new StringBuilder(16384); stringBuilder.Append("PhotonDeepDump:").Append('\n'); if (!photonSnapshot.Available) { stringBuilder.Append(" PhotonNetwork=None").Append('\n'); return WrapSection("DeepDump.Photon", stringBuilder.ToString()); } if (photonSnapshot.CurrentRoomObj != null) { stringBuilder.Append(" CurrentRoom: ").Append(FormatObjectShort(photonSnapshot.CurrentRoomObj)).Append('\n'); AppendDeepDump(stringBuilder, photonSnapshot.CurrentRoomObj, "CurrentRoom"); } else { stringBuilder.Append(" CurrentRoom=None").Append('\n'); } if (photonSnapshot.LocalPlayerObj != null) { stringBuilder.Append(" LocalPlayer: ").Append(FormatObjectShort(photonSnapshot.LocalPlayerObj)).Append('\n'); AppendDeepDump(stringBuilder, photonSnapshot.LocalPlayerObj, "LocalPlayer"); } else { stringBuilder.Append(" LocalPlayer=None").Append('\n'); } return WrapSection("DeepDump.Photon", stringBuilder.ToString()); } private string BuildEconomyScanText() { StringBuilder stringBuilder = new StringBuilder(16384); stringBuilder.Append("EconomyScan:").Append('\n'); AppendEconomyScan(stringBuilder); return WrapSection("DeepScan.Economy", stringBuilder.ToString()); } private string BuildEconomyDeepDumpText() { StringBuilder stringBuilder = new StringBuilder(16384); stringBuilder.Append("EconomyDeepDump:").Append('\n'); StatsManager instance = StatsManager.instance; object singletonByTypeName = GetSingletonByTypeName("RunManager"); object singletonByTypeName2 = GetSingletonByTypeName("ShopManager"); object singletonByTypeName3 = GetSingletonByTypeName("GameDirector"); object singletonByTypeName4 = GetSingletonByTypeName("Inventory"); if ((Object)(object)instance != (Object)null) { stringBuilder.Append(" StatsManager:").Append('\n'); AppendDeepDump(stringBuilder, instance, "StatsManager"); } else { stringBuilder.Append(" StatsManager=None").Append('\n'); } if (singletonByTypeName != null) { stringBuilder.Append(" RunManager:").Append('\n'); AppendDeepDump(stringBuilder, singletonByTypeName, "RunManager"); } else { stringBuilder.Append(" RunManager=None").Append('\n'); } if (singletonByTypeName2 != null) { stringBuilder.Append(" ShopManager:").Append('\n'); AppendDeepDump(stringBuilder, singletonByTypeName2, "ShopManager"); } if (singletonByTypeName3 != null) { stringBuilder.Append(" GameDirector:").Append('\n'); AppendDeepDump(stringBuilder, singletonByTypeName3, "GameDirector"); } if (singletonByTypeName4 != null) { stringBuilder.Append(" Inventory:").Append('\n'); AppendDeepDump(stringBuilder, singletonByTypeName4, "Inventory"); } return WrapSection("DeepDump.Economy", stringBuilder.ToString()); } private void MeasurePanel(string text, out float width, out float height) { //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Expected O, but got Unknown //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) int num = 23; num = num * 31 + (text?.GetHashCode() ?? 0); num = num * 31 + Mathf.Max(8, CfgFontSize.Value); num = num * 31 + Mathf.Max(0, CfgLineSpacing.Value); num = num * 31 + CfgPaddingX.Value; num = num * 31 + CfgPaddingY.Value; if (_measureKey == num && _cachedPanelWidth > 0f && _cachedPanelHeight > 0f) { width = _cachedPanelWidth; height = _cachedPanelHeight; return; } string[] array = (text ?? string.Empty).Split('\n'); int num2 = Mathf.Max(1, array.Length); float num3 = 0f; for (int i = 0; i < array.Length; i++) { Vector2 val = _labelStyle.CalcSize(new GUIContent(array[i] ?? string.Empty)); if (val.x > num3) { num3 = val.x; } } float num4 = Mathf.Max(1f, _labelStyle.lineHeight); float num5 = (float)num2 * num4 + (float)((num2 - 1) * Mathf.Max(0, CfgLineSpacing.Value)); width = num3 + (float)(CfgPaddingX.Value * 2); height = num5 + (float)(CfgPaddingY.Value * 2); _measureKey = num; _cachedPanelWidth = width; _cachedPanelHeight = height; } private void InvalidateMeasureCache() { _measureKey = 0; _cachedPanelWidth = 0f; _cachedPanelHeight = 0f; } private Rect GetAnchoredRect(float width, float height) { //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) float num = 0f; float num2 = 0f; int value = CfgOffsetX.Value; int value2 = CfgOffsetY.Value; switch (CfgAnchor.Value) { case OverlayAnchor.TopLeft: num = value; num2 = value2; break; case OverlayAnchor.TopRight: num = (float)Screen.width - width - (float)value; num2 = value2; break; case OverlayAnchor.BottomLeft: num = value; num2 = (float)Screen.height - height - (float)value2; break; case OverlayAnchor.BottomRight: num = (float)Screen.width - width - (float)value; num2 = (float)Screen.height - height - (float)value2; break; case OverlayAnchor.Center: num = ((float)Screen.width - width) * 0.5f + (float)value; num2 = ((float)Screen.height - height) * 0.5f + (float)value2; break; case OverlayAnchor.CenterTop: num = ((float)Screen.width - width) * 0.5f + (float)value; num2 = value2; break; } return new Rect(num, num2, width, height); } private PhotonSnapshot GetPhotonSnapshot() { PhotonSnapshot photonSnapshot = default(PhotonSnapshot); photonSnapshot.Available = false; photonSnapshot.InRoom = false; photonSnapshot.IsMasterClient = false; photonSnapshot.RoomName = null; photonSnapshot.PlayerCount = -1; photonSnapshot.LocalActorNumber = -1; photonSnapshot.CurrentRoomObj = null; photonSnapshot.LocalPlayerObj = null; PhotonSnapshot result = photonSnapshot; Type type = Type.GetType("Photon.Pun.PhotonNetwork, PhotonUnityNetworking"); if (type == null) { type = FindTypeByFullName("Photon.Pun.PhotonNetwork"); } if (type == null) { return result; } result.Available = true; try { result.InRoom = GetStaticBool(type, "InRoom", fallback: false); result.IsMasterClient = GetStaticBool(type, "IsMasterClient", fallback: false); object obj = (result.CurrentRoomObj = GetStaticValue(type, "CurrentRoom")); if (obj != null) { string text = GetMemberValue(obj, "Name") as string; if (string.IsNullOrEmpty(text)) { text = GetMemberValue(obj, "name") as strin