Skip to content

Commit

Permalink
feat: lamb aaaAHHH options
Browse files Browse the repository at this point in the history
  • Loading branch information
InfernoDragon0 committed Aug 29, 2024
1 parent 9f606d8 commit 5714489
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 0 deletions.
15 changes: 15 additions & 0 deletions COTL_API/CustomSkins/CustomSkinManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@ public enum PlayerType
GOAT
}

public enum PlayerBleat
{
DEFAULT,
LAMB,
GOAT,
COWBOY
}

[HarmonyPatch]
public static partial class CustomSkinManager
{
Expand Down Expand Up @@ -527,6 +535,7 @@ public static partial class CustomSkinManager
};

internal static Dictionary<PlayerType, List<Skin?>?> PlayerSkinOverride { get; set; } = [];
internal static Dictionary<PlayerType, PlayerBleat?> PlayerBleatOverride { get; set; } = [];

public static void AddFollowerSkin(CustomFollowerSkin followerSkin)
{
Expand Down Expand Up @@ -804,6 +813,12 @@ public static void SetPlayerSkinOverride(PlayerType who, CustomPlayerSkin skin)
skin.Apply(who);
}

public static void SetPlayerBleatOverride(PlayerType who, PlayerBleat? bleat)
{
if (bleat == PlayerBleat.DEFAULT) PlayerBleatOverride[who] = null;
else PlayerBleatOverride[who] = bleat;
}

public static void ResetPlayerSkin()
{
PlayerSkinOverride = [];
Expand Down
48 changes: 48 additions & 0 deletions COTL_API/CustomSkins/CustomSkinPatches.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System.Collections;
using HarmonyLib;
using Lamb.UI;
using LeTai.Asset.TranslucentImage;
Expand Down Expand Up @@ -175,4 +176,51 @@ private static bool PlayerFarming_SetSkin(ref Skin __result, PlayerFarming __ins
__result = __instance.PlayerSkin;
return false;
}

[HarmonyPatch(typeof(PlayerFarming), nameof(PlayerFarming.BleatRoutine), MethodType.Enumerator)]
[HarmonyPrefix]
private static bool PlayerFarming_BleatRoutine(PlayerFarming __instance)
{
var playerType = !__instance.isLamb || __instance.IsGoat ? PlayerType.GOAT : PlayerType.LAMB;
var playerInstance = !__instance.isLamb || __instance.IsGoat ? PlayerFarming.players[1] : PlayerFarming.players[0];

if (!PlayerBleatOverride.ContainsKey(playerType)) return true;

var bleatOverride = PlayerBleatOverride[playerType];
if (bleatOverride == null) return true;

PlayerFarming.Instance.StartCoroutine(BleatOverrideRoutine(playerInstance, bleatOverride));
return false;

}

private static IEnumerator BleatOverrideRoutine(PlayerFarming instance, PlayerBleat? bleatOverride) {
instance.state.CURRENT_STATE = StateMachine.State.CustomAnimation;

var anim = bleatOverride switch
{
PlayerBleat.LAMB => "bleat",
PlayerBleat.GOAT => "bleat-goat3",
PlayerBleat.COWBOY => "Cowboy/yeehaw-bleat",
_ => "bleat"
};

var audio = bleatOverride switch
{
PlayerBleat.LAMB => "event:/player/speak_to_follower_noBookPage",
PlayerBleat.GOAT => "event:/player/goat_player/goat_bleat",
PlayerBleat.COWBOY => "event:/player/yeehaa",
_ => "event:/player/speak_to_follower_noBookPage"
};

instance.simpleSpineAnimator.Animate(anim, 0, false);
AudioManager.Instance.PlayOneShot(audio, instance.gameObject);
yield return new WaitForSeconds(bleatOverride == PlayerBleat.LAMB ? 0.4f : 1.25f);

if (instance.state.CURRENT_STATE == StateMachine.State.CustomAnimation)
instance.state.CURRENT_STATE = StateMachine.State.Idle;
yield return null;

}

}
7 changes: 7 additions & 0 deletions COTL_API/Patches/SettingsPatches.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,12 @@ private static void LoadMenu_OnTryLoadSaveSlot()
else
Plugin.GoatFleeceSkinSettings.Value = "Goat";
}

if (Plugin.LambBleatSettings?.Value is not null && Plugin.LambBleatSettings.Value != "Default")
CustomSkinManager.SetPlayerBleatOverride(PlayerType.LAMB, (PlayerBleat)Enum.Parse(typeof(PlayerBleat), Plugin.LambBleatSettings.Value));

if (Plugin.GoatBleatSettings?.Value is not null && Plugin.GoatBleatSettings.Value != "Default")
CustomSkinManager.SetPlayerBleatOverride(PlayerType.GOAT, (PlayerBleat)Enum.Parse(typeof(PlayerBleat), Plugin.GoatBleatSettings.Value));

}
}
19 changes: 19 additions & 0 deletions COTL_API/Plugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ public class Plugin : BaseUnityPlugin
{
internal static Dropdown? LambFleeceSkinSettings;
internal static Dropdown? GoatFleeceSkinSettings;
internal static Dropdown? LambBleatSettings;
internal static Dropdown? GoatBleatSettings;

private readonly Harmony _harmony = new(MyPluginInfo.PLUGIN_GUID);

Expand Down Expand Up @@ -142,6 +144,23 @@ private void Awake()
CustomSkinManager.CustomPlayerSkins.Values.ElementAt(i));
});

LambBleatSettings = CustomSettingsManager.AddSavedDropdown("API", MyPluginInfo.PLUGIN_GUID,
"Lamb Bleat",
"Lamb",
Enum.GetNames(typeof(PlayerBleat)), i =>
{
CustomSkinManager.SetPlayerBleatOverride(PlayerType.LAMB, (PlayerBleat) i);
});

GoatBleatSettings = CustomSettingsManager.AddSavedDropdown("API", MyPluginInfo.PLUGIN_GUID,
"Goat Bleat",
"Goat",
Enum.GetNames(typeof(PlayerBleat)), i =>
{
CustomSkinManager.SetPlayerBleatOverride(PlayerType.GOAT, (PlayerBleat) i);
});


CustomSettingsManager.AddBepInExConfig("API", "Skip Splash Screen", _skipSplashScreen);
CustomSettingsManager.AddBepInExConfig("API", "Disable Achievement", _disableAchievement,
delegate(bool isActivated)
Expand Down

0 comments on commit 5714489

Please sign in to comment.