diff --git a/Patches/GhostRaceMarbleControllerPatches.cs b/Patches/GhostRaceMarbleControllerPatches.cs new file mode 100644 index 0000000..4d84b15 --- /dev/null +++ b/Patches/GhostRaceMarbleControllerPatches.cs @@ -0,0 +1,35 @@ +using HarmonyLib; +using MIU; +using System; +using System.Collections.Generic; + +namespace CustomCosmeticLoader.Patches +{ + [HarmonyPatch(typeof(GhostRaceMarbleController), nameof(GhostRaceMarbleController.ApplyCosmetics))] + internal class GhostRaceMarbleControllerApplyCosmeticsPatch + { + static void Postfix(GhostRaceMarbleController __instance) + { + if (!Config.enabled) + return; + + string replayName = null; + GamePlayManager.Get().GetCurrentReplays(delegate (List replays) + { + if (replays.Count > 0) + replayName = replays[0].Player; + }); + Shared.Log("GhostRaceMarbleControllerApplyCosmeticsPatch Replay name: " + replayName); + + if (Config.otherPlayers.ContainsKey(replayName) || replayName == Player.Current.Name) + { + MarbleHolder mHolder = __instance.GetComponentInChildren(); + + if (Config.skinNameToHijack != "*") + mHolder.SetMarble(Shared.SkinToHijack); + + Shared.ApplyCustomTexture(mHolder.currentMarble, Config.skins[Config.otherPlayers[replayName]]); + } + } + } +}