using HarmonyLib; using System; namespace CustomCosmeticLoader.Patches { /* * This is called on the LevelSelect screen to show the "My Marble" widget in the top left corner. Hijack the cosmetic * and apply the custom texture here too (if configured) */ [HarmonyPatch(typeof(MarbleWidget), nameof(MarbleWidget.SetCosmetic), new Type[] {})] internal class MarbleWidgetSetCosmeticLevelSelectPatch { static bool Prefix(MarbleWidget __instance) { if (!Config.enabled) return true; if (!Config.inMainMenu) return true; Cosmetic skin = Config.skinNameToHijack == "*" ? (CosmeticManager.MySkin == null ? CosmeticManager.Skins[0] : CosmeticManager.MySkin) : Shared.SkinToHijack; Cosmetic hat = CosmeticManager.MyHat == null ? CosmeticManager.Hats[0] : CosmeticManager.MyHat; __instance.SetCosmetic(skin, hat); Shared.ApplyCustomTexture(__instance.cosmeticDisplay.gameObject); return false; // Skip original method, since we do everything it was supposed to } } }