forked from zombieb/undead-universal-patch-il2cpp
58 lines
2.1 KiB
C#
58 lines
2.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using HarmonyLib;
|
|
using Il2CppInterop.Runtime.InteropTypes.Arrays;
|
|
using RecRoom.Core.GameManagement;
|
|
using undead_universal_patch_il2cpp.Core;
|
|
using undead_universal_patch_il2cpp.Core.UndeadGameManager;
|
|
|
|
namespace undead_universal_patch_il2cpp.Patches.UndeadGameManager;
|
|
|
|
[HarmonyPatch]
|
|
public class TeamConfiguratorPatch
|
|
{
|
|
static List<GameConfiguration> gameConfig = TeamConfigurator.config.Get();
|
|
|
|
static string TargetTypeName = "GameConfigurationTool";
|
|
static string TargetMethodName = "SetGameConfiguration";
|
|
static string Description = "TeamConfigurator event patch";
|
|
|
|
static Type targetType = AccessTools.TypeByName(TargetTypeName);
|
|
static MethodInfo targetMethod = AccessTools.Method(targetType, TargetMethodName);
|
|
|
|
public static bool Prepare()
|
|
{
|
|
if (!GameManagerConfig.StaticGameTeamConfig.Value) return false;
|
|
if (targetMethod == null)
|
|
{
|
|
Plugin.Log.LogWarning($"'{Description}' disabled. The method for this patch was not found.");
|
|
return false;
|
|
}
|
|
|
|
Plugin.Log.LogInfo($"'{Description}' succeeded validation.");
|
|
return true;
|
|
}
|
|
|
|
public static MethodBase TargetMethod() => targetMethod;
|
|
|
|
public static void Prefix(ref GameConfigurationAsset config, ref bool showNotification)
|
|
{
|
|
var conf = config;
|
|
showNotification = GenericConfig.PatchDebug.Value;
|
|
|
|
var teamConf = gameConfig.Find(match => match.GameName == conf.Name);
|
|
if (teamConf == null)
|
|
{
|
|
if (GenericConfig.PatchDebug.Value) Plugin.Log.LogDebug($"'{config.Name}' does not have explicit team configurations");
|
|
return;
|
|
}
|
|
|
|
var arr = new Il2CppStructArray<TeamConfiguration>(teamConf.TeamConfigurations.Count);
|
|
for (int i = 0; i < arr.Length; i++) arr[i] = new TeamConfiguration { MaxTeamSize = teamConf.TeamConfigurations[i].Size };
|
|
config.TeamConfigurations = arr;
|
|
|
|
if (GenericConfig.PatchDebug.Value) Plugin.Log.LogDebug($"New team configuration length for '{config.Name}': {arr.Length}");
|
|
}
|
|
} |