Files
MMOKitchen/Patches/SteamPlatformPatch.cs
T

43 lines
1.4 KiB
C#
Raw Normal View History

2024-04-01 08:12:01 +11:00
using HarmonyLib;
using Kitchen.NetworkSupport;
using Steamworks;
using Steamworks.Data;
using System;
using System.Reflection;
using System.Threading.Tasks;
namespace MMOKitchen.Patches
{
/*
* This patch is used to change how many players can join the lobby using Steam.
*/
[HarmonyPatch(typeof(SteamPlatform), "CreateNewLobby")]
public class SteamPlatformPatch
{
public static bool Prefix(SteamPlatform __instance, Action<bool, Lobby> callback)
{
if (__instance.IsReady)
{
SteamMatchmaking.CreateLobbyAsync(Mod.MaxPlayers).ContinueWith(delegate (Task<Lobby?> task)
{
if (task.IsCompleted && task.Result != null)
{
Lobby valueOrDefault = task.Result.GetValueOrDefault();
__instance.CurrentInviteLobby = valueOrDefault;
MethodInfo performSetPermissions = AccessTools.Method(typeof(SteamPlatform), "PerformSetPermissions");
performSetPermissions.Invoke(__instance, new object[] { __instance.Permissions });
callback(true, valueOrDefault);
}
else
{
callback(false, default(Lobby));
}
});
}
return false;
}
}
}