using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using ExitGames.Client.Photon;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using PatchSteamLobbys;
using PeakLobbies.Component;
using PeakLobbies.Menu;
using PeakLobbies.Other;
using PeakLobbies.Patchs;
using Photon.Pun;
using Photon.Realtime;
using Steamworks;
using TMPro;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using Zorro.Core;
[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: AssemblyCompany("PeakLobbies")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("PeakLobbies")]
[assembly: AssemblyTitle("PeakLobbies")]
[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.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace PeakLobbies
{
[BepInPlugin("KoderTech.PeakLobbies", "PeakLobbies", "1.0.4")]
internal class Plugin : BaseUnityPlugin
{
internal static ManualLogSource Logger;
private void Awake()
{
Logger = ((BaseUnityPlugin)this).Logger;
Logger.LogInfo((object)"Plugin KoderTech.PeakLobbies is loaded!");
Init();
if (!File.Exists("./BepInEx/patchers/PatchSteamLobbys.dll"))
{
Logger.LogError((object)"There is no patch on the steam lobby. Therefore, the mod is disabled.");
return;
}
Variables.InitHarmony();
Variables.v_harmony.PatchAll(typeof(HookMenu));
Variables.v_harmony.PatchAll(typeof(MainMenuPatch));
Variables.v_harmony.PatchAll(typeof(NetworkConnectorPatch));
Variables.v_harmony.PatchAll(typeof(PauseMenuPatch));
Variables.v_harmony.PatchAll(typeof(AirportCheckInKioskPatch));
}
public void Init()
{
Variables.InitAssetBundle();
if ((Object)(object)Variables.v_assetBundle == (Object)null)
{
Logger.LogInfo((object)("Error path: " + Application.dataPath.Substring(0, Application.dataPath.LastIndexOf('/'))));
}
Variables.InitCacheRoom();
Variables.InitCacheRoomSteam();
Variables.InitRooms();
}
}
public static class MyPluginInfo
{
public const string PLUGIN_GUID = "PeakLobbies";
public const string PLUGIN_NAME = "PeakLobbies";
public const string PLUGIN_VERSION = "1.0.0";
}
}
namespace PeakLobbies.Patchs
{
public class AirportCheckInKioskPatch : MonoBehaviourPun
{
[HarmonyPatch(typeof(AirportCheckInKiosk), "LoadIslandMaster")]
[HarmonyPrefix]
public static void AirportCheckInKiosk_LoadIslandMaster(AirportCheckInKiosk __instance)
{
if (PhotonNetwork.IsMasterClient)
{
Plugin.Logger.LogMessage((object)"Close Lobby Active");
PhotonNetwork.CurrentRoom.IsVisible = false;
}
}
}
public class MainMenuPatch
{
[HarmonyPatch(typeof(MainMenu), "Update")]
[HarmonyPostfix]
public static void MainMenu_Update(MainMenu __instance)
{
//IL_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0072: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
//IL_0116: Unknown result type (might be due to invalid IL or missing references)
//IL_012a: Unknown result type (might be due to invalid IL or missing references)
//IL_0134: Unknown result type (might be due to invalid IL or missing references)
//IL_0158: Unknown result type (might be due to invalid IL or missing references)
//IL_0172: Unknown result type (might be due to invalid IL or missing references)
//IL_018c: Unknown result type (might be due to invalid IL or missing references)
//IL_0196: Unknown result type (might be due to invalid IL or missing references)
//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
//IL_01f8: Unknown result type (might be due to invalid IL or missing references)
//IL_021c: Unknown result type (might be due to invalid IL or missing references)
//IL_023b: Unknown result type (might be due to invalid IL or missing references)
//IL_0254: Unknown result type (might be due to invalid IL or missing references)
//IL_025e: Unknown result type (might be due to invalid IL or missing references)
//IL_06db: Unknown result type (might be due to invalid IL or missing references)
//IL_06e0: Unknown result type (might be due to invalid IL or missing references)
//IL_05ba: Unknown result type (might be due to invalid IL or missing references)
//IL_05c0: Unknown result type (might be due to invalid IL or missing references)
//IL_0605: Unknown result type (might be due to invalid IL or missing references)
//IL_060a: Unknown result type (might be due to invalid IL or missing references)
//IL_065b: Unknown result type (might be due to invalid IL or missing references)
//IL_0660: Unknown result type (might be due to invalid IL or missing references)
//IL_02cf: Unknown result type (might be due to invalid IL or missing references)
//IL_02d5: Unknown result type (might be due to invalid IL or missing references)
//IL_070b: Unknown result type (might be due to invalid IL or missing references)
//IL_0710: Unknown result type (might be due to invalid IL or missing references)
//IL_0739: Unknown result type (might be due to invalid IL or missing references)
//IL_073e: Unknown result type (might be due to invalid IL or missing references)
//IL_068f: Unknown result type (might be due to invalid IL or missing references)
//IL_0694: Unknown result type (might be due to invalid IL or missing references)
//IL_0695: Unknown result type (might be due to invalid IL or missing references)
//IL_069d: Unknown result type (might be due to invalid IL or missing references)
//IL_069f: Unknown result type (might be due to invalid IL or missing references)
//IL_06b5: Unknown result type (might be due to invalid IL or missing references)
//IL_06bf: Expected O, but got Unknown
//IL_03b3: Unknown result type (might be due to invalid IL or missing references)
//IL_03b8: Unknown result type (might be due to invalid IL or missing references)
//IL_03b9: Unknown result type (might be due to invalid IL or missing references)
//IL_03c1: Unknown result type (might be due to invalid IL or missing references)
//IL_03c3: Unknown result type (might be due to invalid IL or missing references)
//IL_03d8: Unknown result type (might be due to invalid IL or missing references)
//IL_03e2: Expected O, but got Unknown
//IL_07f4: Unknown result type (might be due to invalid IL or missing references)
//IL_0813: Unknown result type (might be due to invalid IL or missing references)
//IL_082c: Unknown result type (might be due to invalid IL or missing references)
//IL_0836: Unknown result type (might be due to invalid IL or missing references)
//IL_0516: Unknown result type (might be due to invalid IL or missing references)
//IL_0535: Unknown result type (might be due to invalid IL or missing references)
//IL_054e: Unknown result type (might be due to invalid IL or missing references)
//IL_0558: Unknown result type (might be due to invalid IL or missing references)
try
{
if (!((Object)(object)Variables.v_MenuFindLobby != (Object)null))
{
return;
}
Variables.v_MenuFindLobby.transform.GetChild(0).position = new Vector3(Variables.v_instanceMainMenu.credits.transform.position.x - 190f, Variables.v_instanceMainMenu.credits.transform.position.y - 75f, Variables.v_instanceMainMenu.credits.transform.position.z);
Variables.v_MenuPanel.transform.position = new Vector3(Variables.v_instanceMainMenu.credits.transform.position.x - 190f, Variables.v_MenuPanel.transform.position.y, Variables.v_MenuPanel.transform.position.z);
Variables.v_MenuLogoText.transform.position = new Vector3(Variables.v_instanceMainMenu.credits.transform.position.x - 170f, Variables.v_MenuPanel.transform.position.y, Variables.v_MenuPanel.transform.position.z);
Variables.v_MenuSwitchPhoton.transform.position = new Vector3(Variables.v_instanceMainMenu.credits.transform.position.x - 300f, Variables.v_MenuPanel.transform.position.y - 50f, Variables.v_MenuPanel.transform.position.z);
Variables.v_MenuSwitchSteam.transform.position = new Vector3(Variables.v_instanceMainMenu.credits.transform.position.x - 90f, Variables.v_MenuPanel.transform.position.y - 50f, Variables.v_MenuPanel.transform.position.z);
Variables.v_ButtonRefresh.transform.position = new Vector3(Variables.v_instanceMainMenu.credits.transform.position.x - 400f, Variables.v_instanceMainMenu.credits.transform.position.y, Variables.v_instanceMainMenu.credits.transform.position.z);
Variables.v_MenuText.SetActive(false);
if (!Variables.v_isSteam)
{
foreach (KeyValuePair<string, RoomInfo> room2 in Variables.v_cachedRoomList)
{
if (!Variables.v_Rooms.Any((GameObject e) => ((Object)e).name == room2.Key))
{
GameObject val = DefaultControls.CreateButton(default(Resources));
val.transform.parent = Variables.v_MenuFindLobby.transform.GetChild(0).GetChild(0).GetChild(0);
val.GetComponentInChildren<Text>().text = string.Format("{0}\n{1} / {2}\nLicense: {3}", room2.Key, room2.Value.PlayerCount, room2.Value.MaxPlayers - 1, room2.Value.CustomProperties[(object)"License"].ToString());
((Object)val).name = room2.Key ?? "";
Vector2 val3 = (val.GetComponent<RectTransform>().sizeDelta = new Vector2(160f, 60f));
Vector2 val4 = val3;
((UnityEvent)val.GetComponent<Button>().onClick).AddListener((UnityAction)delegate
{
PhotonNetwork.LeaveLobby();
GameObject.Find("Conn").GetComponent<PhotonConnect>().StartScene(room2.Value.Name);
});
Variables.v_Rooms.Add(val);
}
else if ((Object)(object)GameObject.Find(room2.Key) != (Object)null)
{
GameObject val5 = GameObject.Find(room2.Key);
val5.GetComponentInChildren<Text>().text = string.Format("{0}\n {1} / {2}\nLicense: {3}", room2.Key, room2.Value.PlayerCount, room2.Value.MaxPlayers - 1, room2.Value.CustomProperties[(object)"License"].ToString());
}
}
if (Variables.v_cachedRoomList.Count == 0 && (Object)(object)Variables.v_MenuText != (Object)null)
{
Variables.v_MenuText.SetActive(true);
Variables.v_MenuText.transform.position = new Vector3(Variables.v_instanceMainMenu.credits.transform.position.x - 170f, Variables.v_instanceMainMenu.credits.transform.position.y, Variables.v_instanceMainMenu.credits.transform.position.z);
}
return;
}
foreach (KeyValuePair<CSteamID, Variables.RoomSteam> room in Variables.v_cachedRoomListSteam)
{
CSteamID key;
if (!Variables.v_Rooms.Any(delegate(GameObject e)
{
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
string name = ((Object)e).name;
CSteamID key2 = room.Key;
return name == ((object)(CSteamID)(ref key2)).ToString();
}))
{
GameObject val6 = DefaultControls.CreateButton(default(Resources));
val6.transform.parent = Variables.v_MenuFindLobby.transform.GetChild(0).GetChild(0).GetChild(0);
Text componentInChildren = val6.GetComponentInChildren<Text>();
key = room.Key;
componentInChildren.text = $"{((object)(CSteamID)(ref key)).ToString()}\n{room.Value.Player} / {room.Value.MaxPlayer - 1}";
key = room.Key;
((Object)val6).name = ((object)(CSteamID)(ref key)).ToString() ?? "";
Vector2 val3 = (val6.GetComponent<RectTransform>().sizeDelta = new Vector2(160f, 60f));
Vector2 val8 = val3;
((UnityEvent)val6.GetComponent<Button>().onClick).AddListener((UnityAction)delegate
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
PhotonNetwork.LeaveLobby();
SteamMatchmaking.JoinLobby(room.Key);
});
Variables.v_Rooms.Add(val6);
}
else
{
key = room.Key;
if ((Object)(object)GameObject.Find(((object)(CSteamID)(ref key)).ToString()) != (Object)null)
{
key = room.Key;
GameObject val9 = GameObject.Find(((object)(CSteamID)(ref key)).ToString());
Text componentInChildren2 = val9.GetComponentInChildren<Text>();
key = room.Key;
componentInChildren2.text = $"{((object)(CSteamID)(ref key)).ToString()}\n {room.Value.Player} / {room.Value.MaxPlayer - 1}";
}
}
}
if (Variables.v_cachedRoomListSteam.Count == 0 && (Object)(object)Variables.v_MenuText != (Object)null)
{
Variables.v_MenuText.SetActive(true);
Variables.v_MenuText.transform.position = new Vector3(Variables.v_instanceMainMenu.credits.transform.position.x - 170f, Variables.v_instanceMainMenu.credits.transform.position.y, Variables.v_instanceMainMenu.credits.transform.position.z);
}
}
catch (Exception ex)
{
Plugin.Logger.LogInfo((object)ex.Message);
Plugin.Logger.LogInfo((object)ex.Source);
Plugin.Logger.LogInfo((object)ex.StackTrace);
}
}
[HarmonyPatch(typeof(LobbyUpdate), "OnLobbyList")]
[HarmonyPrefix]
public static bool LobbyUpdate_OnLobbyList(LobbyMatchList_t list)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_007a: Unknown result type (might be due to invalid IL or missing references)
//IL_009e: Unknown result type (might be due to invalid IL or missing references)
//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
//IL_00c5: 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)
uint nLobbiesMatching = list.m_nLobbiesMatching;
Plugin.Logger.LogInfo((object)(nLobbiesMatching + " Active Lobby Seacrh Patch"));
if (nLobbiesMatching >= 0)
{
for (int i = 0; i < nLobbiesMatching; i++)
{
Variables.RoomSteam roomSteam = new Variables.RoomSteam();
CSteamID lobbyByIndex = SteamMatchmaking.GetLobbyByIndex(i);
string lobbyData = SteamMatchmaking.GetLobbyData(lobbyByIndex, "PeakVersion");
BuildVersion val = new BuildVersion(Application.version);
if (!(lobbyData != ((BuildVersion)(ref val)).ToMatchmaking()))
{
string lobbyData2 = SteamMatchmaking.GetLobbyData(lobbyByIndex, "CurrentScene");
if (!(lobbyData2 != "Airport"))
{
roomSteam.Player = SteamMatchmaking.GetNumLobbyMembers(lobbyByIndex);
roomSteam.MaxPlayer = SteamMatchmaking.GetLobbyMemberLimit(lobbyByIndex);
ManualLogSource logger = Plugin.Logger;
CSteamID val2 = lobbyByIndex;
logger.LogInfo((object)("Lobby " + ((object)(CSteamID)(ref val2)).ToString()));
Variables.v_cachedRoomListSteam[lobbyByIndex] = roomSteam;
}
}
}
}
else
{
Plugin.Logger.LogInfo((object)"No Lobby!");
}
return false;
}
[HarmonyPatch(typeof(MainMenuMainPage), "PlayClicked")]
[HarmonyPrefix]
public static bool MainMenuMainPage_PlayClicked(MainMenuMainPage __instance)
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
PhotonNetwork.LeaveLobby();
SteamMatchmaking.CreateLobby((ELobbyType)2, NetworkConnector.MAX_PLAYERS);
return false;
}
[HarmonyPatch(typeof(MainMenuPageHandler), "GetPrettyStateName")]
[HarmonyPrefix]
public static bool MainMenuPageHandler_GetPrettyStateName(ref string __result)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Invalid comparison between Unknown and I4
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0013: Invalid comparison between Unknown and I4
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Expected I4, but got Unknown
ClientState networkClientState = PhotonNetwork.NetworkClientState;
ClientState val = networkClientState;
ClientState val2 = val;
if ((int)val2 != 1)
{
if ((int)val2 != 4)
{
switch (val2 - 12)
{
case 0:
case 4:
case 5:
__result = "Connecting...";
break;
case 3:
__result = "";
break;
default:
__result = ((object)(ClientState)(ref networkClientState)).ToString();
break;
}
}
else
{
__result = "";
}
}
else
{
__result = "Authenticating...";
}
return false;
}
}
public class NetworkConnectorPatch
{
[HarmonyPatch(typeof(NetworkConnector), "HostRoomOptions")]
[HarmonyPrefix]
public static bool NetworkConnector_HostRoomOptions(NetworkConnector __instance, ref RoomOptions __result)
{
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Expected O, but got Unknown
//IL_002c: Expected O, but got Unknown
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0032: Unknown result type (might be due to invalid IL or missing references)
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: Expected O, but got Unknown
string[] customRoomPropertiesForLobby = new string[1] { "License" };
Hashtable val = new Hashtable();
((Dictionary<object, object>)val).Add((object)"License", (object)CheckLicense.Test());
Hashtable customRoomProperties = val;
__result = new RoomOptions
{
IsVisible = true,
IsOpen = true,
MaxPlayers = NetworkConnector.MAX_PLAYERS + 1,
PublishUserId = true,
CustomRoomProperties = customRoomProperties,
CustomRoomPropertiesForLobby = customRoomPropertiesForLobby
};
return false;
}
[HarmonyPatch(typeof(NetworkConnector), "HandleConnectionState")]
[HarmonyPrefix]
public static bool NetworkConnector_HandleConnectionState(NetworkConnector __instance, ref ConnectionState state)
{
//IL_0115: Unknown result type (might be due to invalid IL or missing references)
//IL_011b: Expected O, but got Unknown
ConnectionState obj = state;
HostState val = (HostState)(object)((obj is HostState) ? obj : null);
if (val != null)
{
RoomOptions val2 = NetworkConnector.HostRoomOptions();
PhotonNetwork.CreateRoom(SteamFriends.GetPersonaName(), val2, (TypedLobby)null, (string[])null);
}
JoinSpecificRoomState joinState = default(JoinSpecificRoomState);
ref JoinSpecificRoomState reference = ref joinState;
ConnectionState obj2 = state;
reference = (JoinSpecificRoomState)(object)((obj2 is JoinSpecificRoomState) ? obj2 : null);
if (joinState != null)
{
Debug.Log((object)("$Connecting to specific region: " + joinState.RegionToJoin + " with app ID " + PhotonNetwork.PhotonServerSettings.AppSettings.AppIdRealtime + ". Is currently connected to: " + PhotonNetwork.CloudRegion));
if (PhotonNetwork.CloudRegion != joinState.RegionToJoin && !string.IsNullOrEmpty(joinState.RegionToJoin))
{
Debug.Log((object)("Disconnecting and reconnecting to specfic region: " + joinState.RegionToJoin));
PhotonNetwork.Disconnect();
((object)__instance).GetType().GetMethod("PrepareSteamAuthTicket", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).Invoke(__instance, new object[1] { (object)(UnityAction)delegate
{
PhotonNetwork.ConnectToRegion(joinState.RegionToJoin);
} });
}
else
{
Debug.Log((object)("Joining specific room: " + joinState.RoomName));
PhotonNetwork.JoinRoom(joinState.RoomName, (string[])null);
}
}
return false;
}
}
public class PauseMenuPatch
{
[HarmonyPatch(typeof(PauseMenuMainPage), "OnQuitClicked")]
[HarmonyPostfix]
public static void PauseMenuMainPage_QuitClicked()
{
PhotonNetwork.LeaveLobby();
Variables.v_cachedRoomList.Clear();
Variables.v_Rooms.Clear();
Variables.v_isLobby = false;
}
}
}
namespace PeakLobbies.Other
{
internal class CheckLicense
{
public static bool Test()
{
if (File.Exists("./OnlineFix64.dll") | File.Exists("./SteamFix64.dll"))
{
return false;
}
return true;
}
}
internal class Variables
{
internal class RoomSteam
{
public int Player { get; set; }
public int MaxPlayer { get; set; }
}
internal const string Version = "1.0.4";
internal static bool v_isLobby { get; set; }
internal static Harmony v_harmony { get; set; }
internal static AssetBundle v_assetBundle { get; set; }
internal static MainMenu v_instanceMainMenu { get; set; }
internal static GameObject v_ButtonPlayLobbys { get; set; }
internal static GameObject v_ButtonRefresh { get; set; }
internal static GameObject v_MenuFindLobby { get; set; }
internal static GameObject v_MenuText { get; set; }
internal static GameObject v_MenuPanel { get; set; }
internal static GameObject v_MenuLogoText { get; set; }
internal static GameObject v_MenuSwitchPhoton { get; set; }
internal static GameObject v_MenuSwitchSteam { get; set; }
internal static Dictionary<string, RoomInfo> v_cachedRoomList { get; set; }
internal static Dictionary<CSteamID, RoomSteam> v_cachedRoomListSteam { get; set; }
internal static List<GameObject> v_Rooms { get; set; }
internal static bool v_isSteam { get; set; }
internal static void InitHarmony()
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0010: Expected O, but got Unknown
v_harmony = new Harmony("KoderTech.PeakLobbys");
}
internal static void InitAssetBundle()
{
v_assetBundle = AssetBundle.LoadFromFile(Application.dataPath.Substring(0, Application.dataPath.LastIndexOf('/')) + "/BepInEx/plugins/PeakLobbies/menulobby");
}
internal static void InitCacheRoom()
{
v_cachedRoomList = new Dictionary<string, RoomInfo>();
}
internal static void InitCacheRoomSteam()
{
v_cachedRoomListSteam = new Dictionary<CSteamID, RoomSteam>();
}
internal static void InitRooms()
{
v_Rooms = new List<GameObject>();
}
internal static void InitMenuMain(MainMenu main)
{
v_instanceMainMenu = main;
}
internal static void InitButtonPlayLobby(GameObject button)
{
v_ButtonPlayLobbys = button;
}
internal static void InitMenuFindLobby(GameObject menu)
{
v_MenuFindLobby = menu;
}
}
}
namespace PeakLobbies.Menu
{
public class HookMenu : MonoBehaviour
{
[CompilerGenerated]
private static class <>O
{
public static UnityAction <0>__OnClickLobbyButton;
public static UnityAction <1>__OnClickSwitchPhoton;
public static UnityAction <2>__OnClickSwitchSteam;
}
[Serializable]
[CompilerGenerated]
private sealed class <>c
{
public static readonly <>c <>9 = new <>c();
public static UnityAction <>9__0_0;
internal void <MainMenu_Initialize>b__0_0()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
SteamMatchmaking.RequestLobbyList();
Plugin.Logger.LogMessage((object)"Refresh");
}
}
[HarmonyPatch(typeof(MainMenu), "Initialize")]
[HarmonyPostfix]
public static void MainMenu_Initialize(MainMenu __instance)
{
//IL_0064: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
//IL_0130: Unknown result type (might be due to invalid IL or missing references)
//IL_0137: Expected O, but got Unknown
//IL_0144: Unknown result type (might be due to invalid IL or missing references)
//IL_014b: Expected O, but got Unknown
//IL_017e: Unknown result type (might be due to invalid IL or missing references)
//IL_01c2: Unknown result type (might be due to invalid IL or missing references)
//IL_01da: Unknown result type (might be due to invalid IL or missing references)
//IL_01e1: Expected O, but got Unknown
//IL_0228: Unknown result type (might be due to invalid IL or missing references)
//IL_023d: Unknown result type (might be due to invalid IL or missing references)
//IL_0243: Unknown result type (might be due to invalid IL or missing references)
//IL_0279: Unknown result type (might be due to invalid IL or missing references)
//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Expected O, but got Unknown
//IL_02bb: Unknown result type (might be due to invalid IL or missing references)
//IL_02c1: Unknown result type (might be due to invalid IL or missing references)
//IL_02f7: Unknown result type (might be due to invalid IL or missing references)
//IL_02a0: Unknown result type (might be due to invalid IL or missing references)
//IL_02a5: Unknown result type (might be due to invalid IL or missing references)
//IL_02ab: Expected O, but got Unknown
//IL_0339: 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_0375: Unknown result type (might be due to invalid IL or missing references)
//IL_031e: Unknown result type (might be due to invalid IL or missing references)
//IL_0323: Unknown result type (might be due to invalid IL or missing references)
//IL_0329: Expected O, but got Unknown
//IL_03a0: Unknown result type (might be due to invalid IL or missing references)
//IL_03a5: Unknown result type (might be due to invalid IL or missing references)
//IL_03ab: Expected O, but got Unknown
Variables.InitMenuMain(__instance);
GameObject val = GameObject.Find("Button_PlayWithFriends");
GameObject val2 = Object.Instantiate<GameObject>(val);
val2.transform.parent = GameObject.Find("Buttons").transform;
((Object)val2).name = "Button_PlayLobbys";
Variables.InitButtonPlayLobby(val2);
Button component = val2.GetComponent<Button>();
val2.transform.position = new Vector3(867.6552f, 566.6418f, 0f);
val2.transform.localPosition = new Vector3(68.4034f, 179.1612f, 0f);
val2.transform.localScale = new Vector3(1f, 1f, 1f);
((UnityEventBase)component.onClick).RemoveAllListeners();
ButtonClickedEvent onClick = component.onClick;
object obj = <>O.<0>__OnClickLobbyButton;
if (obj == null)
{
UnityAction val3 = OnClickLobbyButton;
<>O.<0>__OnClickLobbyButton = val3;
obj = (object)val3;
}
((UnityEvent)onClick).AddListener((UnityAction)obj);
GameObject val4 = Variables.v_assetBundle.LoadAsset<GameObject>("Assets/Canvas.prefab");
GameObject val5 = Object.Instantiate<GameObject>(val4);
Variables.InitMenuFindLobby(val5);
((HorizontalOrVerticalLayoutGroup)((Component)val5.transform.GetChild(0).GetChild(0).GetChild(0)).GetComponent<VerticalLayoutGroup>()).spacing = 10f;
GameObject val6 = new GameObject("Conn");
val6.AddComponent<PhotonConnect>();
GameObject val7 = new GameObject("TextEmpty");
val7.AddComponent<CanvasRenderer>();
((TMP_Text)val7.AddComponent<TextMeshProUGUI>()).text = "There are no active rooms";
((TMP_Text)val7.GetComponent<TextMeshProUGUI>()).fontSize = 26f;
((Graphic)val7.GetComponent<TextMeshProUGUI>()).color = Color.grey;
val7.transform.parent = val5.transform;
Variables.v_MenuText = val7;
GameObject val8 = GameObject.Find("PanelMain");
val8.GetComponent<RectTransform>().sizeDelta = new Vector2(400f, 150f);
Variables.v_MenuPanel = val8;
GameObject val9 = new GameObject("TextLogo");
val9.transform.parent = val8.transform;
val9.AddComponent<CanvasRenderer>();
((TMP_Text)val9.AddComponent<TextMeshProUGUI>()).text = "PeakLobbies";
((TMP_Text)val9.GetComponent<TextMeshProUGUI>()).fontSize = 26f;
((Graphic)val9.GetComponent<TextMeshProUGUI>()).color = Color.white;
Variables.v_MenuLogoText = val9;
GameObject val10 = DefaultControls.CreateButton(default(Resources));
val10.transform.parent = val8.transform;
val10.GetComponentInChildren<Text>().text = "Photon";
((Graphic)val10.GetComponentInChildren<Text>()).color = Color.gray;
ButtonClickedEvent onClick2 = val10.GetComponent<Button>().onClick;
object obj2 = <>O.<1>__OnClickSwitchPhoton;
if (obj2 == null)
{
UnityAction val11 = OnClickSwitchPhoton;
<>O.<1>__OnClickSwitchPhoton = val11;
obj2 = (object)val11;
}
((UnityEvent)onClick2).AddListener((UnityAction)obj2);
Variables.v_MenuSwitchPhoton = val10;
GameObject val12 = DefaultControls.CreateButton(default(Resources));
val12.transform.parent = val8.transform;
val12.GetComponentInChildren<Text>().text = "Steam";
((Graphic)val12.GetComponentInChildren<Text>()).color = Color.gray;
ButtonClickedEvent onClick3 = val12.GetComponent<Button>().onClick;
object obj3 = <>O.<2>__OnClickSwitchSteam;
if (obj3 == null)
{
UnityAction val13 = OnClickSwitchSteam;
<>O.<2>__OnClickSwitchSteam = val13;
obj3 = (object)val13;
}
((UnityEvent)onClick3).AddListener((UnityAction)obj3);
Variables.v_MenuSwitchSteam = val12;
GameObject val14 = DefaultControls.CreateButton(default(Resources));
val14.transform.parent = val8.transform;
val14.GetComponentInChildren<Text>().text = "Refresh";
((Graphic)val14.GetComponentInChildren<Text>()).color = Color.gray;
ButtonClickedEvent onClick4 = val14.GetComponent<Button>().onClick;
object obj4 = <>c.<>9__0_0;
if (obj4 == null)
{
UnityAction val15 = delegate
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
SteamMatchmaking.RequestLobbyList();
Plugin.Logger.LogMessage((object)"Refresh");
};
<>c.<>9__0_0 = val15;
obj4 = (object)val15;
}
((UnityEvent)onClick4).AddListener((UnityAction)obj4);
Variables.v_ButtonRefresh = val14;
Variables.v_MenuFindLobby.SetActive(false);
Variables.v_isSteam = false;
Variables.v_ButtonRefresh.SetActive(false);
Plugin.Logger.LogMessage((object)"Init Menu Lobby!");
}
[HarmonyPatch(typeof(MainMenu), "Update")]
[HarmonyPostfix]
public static void MainMenu_Update()
{
TextMeshProUGUI componentInChildren = Variables.v_ButtonPlayLobbys.GetComponentInChildren<TextMeshProUGUI>();
if (((TMP_Text)componentInChildren).text != "Find Rooms")
{
((TMP_Text)componentInChildren).text = "Find Rooms";
}
}
public static void OnClickLobbyButton()
{
Variables.v_MenuFindLobby.SetActive(!Variables.v_MenuFindLobby.activeSelf);
}
public static void ClearChildsContent()
{
for (int i = 0; i < Variables.v_MenuFindLobby.transform.GetChild(0).GetChild(0).GetChild(0)
.childCount; i++)
{
Object.Destroy((Object)(object)((Component)Variables.v_MenuFindLobby.transform.GetChild(0).GetChild(0).GetChild(0)
.GetChild(i)).gameObject);
}
}
public static void OnClickSwitchPhoton()
{
Variables.v_ButtonRefresh.SetActive(false);
ClearChildsContent();
Variables.v_Rooms.Clear();
Variables.v_isSteam = false;
}
public static void OnClickSwitchSteam()
{
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
Variables.v_ButtonRefresh.SetActive(true);
ClearChildsContent();
Variables.v_Rooms.Clear();
SteamMatchmaking.RequestLobbyList();
Variables.v_isSteam = true;
}
}
}
namespace PeakLobbies.Component
{
public class PhotonConnect : MonoBehaviourPunCallbacks
{
public override void OnRoomListUpdate(List<RoomInfo> roomList)
{
Plugin.Logger.LogInfo((object)("Active Rooms: " + roomList.Count));
for (int i = 0; i < roomList.Count; i++)
{
RoomInfo val = roomList[i];
if (val.RemovedFromList)
{
if ((Object)(object)GameObject.Find(val.Name) != (Object)null)
{
Variables.v_cachedRoomList.Remove(val.Name);
Variables.v_Rooms.Remove(GameObject.Find(val.Name));
Object.Destroy((Object)(object)GameObject.Find(val.Name));
}
}
else
{
Variables.v_cachedRoomList[val.Name] = val;
}
}
}
private void Start()
{
BuildVersion val = default(BuildVersion);
((BuildVersion)(ref val))..ctor(Application.version);
PhotonNetwork.AutomaticallySyncScene = true;
PhotonNetwork.GameVersion = ((object)(BuildVersion)(ref val)).ToString();
PhotonNetwork.PhotonServerSettings.AppSettings.AppVersion = ((BuildVersion)(ref val)).ToMatchmaking();
PhotonNetwork.ConnectUsingSettings();
Plugin.Logger.LogInfo((object)"PhotonConnect Start Work!");
}
private void LateUpdate()
{
if ((Object)(object)GameObject.Find("WhiteFade") == (Object)null && !Variables.v_isLobby)
{
PhotonNetwork.JoinLobby();
Variables.v_isLobby = true;
}
}
public async void StartScene(string name)
{
JoinSpecificRoomState joinSpecificRoomState = ((StateMachine<ConnectionState>)(object)GameHandler.GetService<ConnectionService>().StateMachine).SwitchState<JoinSpecificRoomState>(false);
joinSpecificRoomState.RoomName = name;
joinSpecificRoomState.RegionToJoin = "eu";
Variables.v_cachedRoomList.Clear();
Variables.v_Rooms.Clear();
Awaiter val = AsyncOperationAwaitableExtensions.GetAwaiter(SceneManager.LoadSceneAsync("Airport"));
if (!((Awaiter)(ref val)).IsCompleted)
{
await val;
Awaiter val2 = default(Awaiter);
val = val2;
}
((Awaiter)(ref val)).GetResult();
}
public override void OnConnectedToMaster()
{
((MonoBehaviourPunCallbacks)this).OnConnectedToMaster();
}
}
}