Added sound cues when the bobber is above or below the bar
The pitch of the sound cues also increase with the increase in distance of bobber from bar Also added a progress sound effect Added config options to fix the maximum difficulty and motion typemaster
parent
b89a8f205d
commit
d17974e3f5
|
@ -22,6 +22,9 @@ namespace stardew_access
|
|||
|
||||
soundEffects.Add("drop_item", TYPE.Sound);
|
||||
soundEffects.Add("colliding", TYPE.Sound);
|
||||
|
||||
soundEffects.Add("bobber_target_up", TYPE.Sound);
|
||||
soundEffects.Add("bobber_target_down", TYPE.Sound);
|
||||
|
||||
soundEffects.Add("npc_top", TYPE.Footstep);
|
||||
soundEffects.Add("npc_right", TYPE.Footstep);
|
||||
|
|
|
@ -87,7 +87,10 @@ namespace stardew_access
|
|||
public Boolean TrackDroppedItems {get; set;} = true; // Toggles detecting the dropped items.
|
||||
#endregion
|
||||
|
||||
public int MaximumFishingDifficulty { get; set; } = 999; // TODO Add doc
|
||||
public int FixFishingMotionType { get; set; } = 999;
|
||||
|
||||
// TODO Add the exclusion and focus list too
|
||||
// public String ExclusionList { get; set; } = "test";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,18 +4,57 @@ using StardewValley.Menus;
|
|||
namespace stardew_access.Patches {
|
||||
internal class FishingMiniGamePatch {
|
||||
private static ICue? progressSound = null;
|
||||
private static long previousBobberTargetUpPlayedTime = 0;
|
||||
private static long previousBobberTargetDownPlayedTime = 0;
|
||||
|
||||
internal static void BobberBarPatch(BobberBar __instance, float ___distanceFromCatching, float ___bobberPosition, float ___bobberBarPos, bool ___bobberInBar, bool ___fadeOut, bool ___fadeIn) {
|
||||
internal static void BobberBarPatch(BobberBar __instance, ref float ___difficulty, ref int ___motionType, float ___distanceFromCatching, float ___bobberPosition, float ___bobberBarPos, bool ___bobberInBar, int ___bobberBarHeight, bool ___fadeOut, bool ___fadeIn) {
|
||||
try {
|
||||
if (___difficulty > MainClass.Config.MaximumFishingDifficulty) {
|
||||
MainClass.DebugLog($"Fish difficulty set to {MainClass.Config.MaximumFishingDifficulty} from {___difficulty}");
|
||||
___difficulty = MainClass.Config.MaximumFishingDifficulty;
|
||||
}
|
||||
|
||||
if (___motionType != MainClass.Config.FixFishingMotionType &&
|
||||
(MainClass.Config.FixFishingMotionType >= 0 && MainClass.Config.FixFishingMotionType <= 4)) {
|
||||
MainClass.DebugLog($"Motion type set to {MainClass.Config.FixFishingMotionType} from {___motionType}");
|
||||
___motionType = MainClass.Config.FixFishingMotionType;
|
||||
}
|
||||
|
||||
handleProgressBarSound(___distanceFromCatching, ___fadeOut, ___fadeIn);
|
||||
// MainClass.DebugLog($"dist: {___distanceFromCatching}\tbobPos: {___bobberPosition}\tbobbarpos{___bobberBarPos}");
|
||||
|
||||
handleBobberTargetSound(___bobberPosition, ___bobberBarPos, ___bobberInBar, ___bobberBarHeight, ___fadeOut, ___fadeIn);
|
||||
} catch (System.Exception e) {
|
||||
MainClass.ErrorLog($"An error occured while patching bobber bar:\n{e.Message}\n{e.StackTrace}");
|
||||
}
|
||||
}
|
||||
|
||||
private static void handleBobberTargetSound(float bobberPosition, float bobberBarPos, bool bobberInBar, int ___bobberBarHeight, bool ___fadeOut, bool ___fadeIn) {
|
||||
if (bobberInBar) return;
|
||||
if (___fadeIn) return;
|
||||
if (___fadeOut) return;
|
||||
|
||||
DateTimeOffset now = (DateTimeOffset)DateTime.UtcNow;
|
||||
long currentTimeInMilliseconds = now.ToUnixTimeMilliseconds();
|
||||
|
||||
if(bobberPosition < bobberBarPos && (currentTimeInMilliseconds - previousBobberTargetUpPlayedTime) >= 250) {
|
||||
previousBobberTargetUpPlayedTime = currentTimeInMilliseconds;
|
||||
int distanceFromBobber = (int)(bobberBarPos - bobberPosition + (___bobberBarHeight / 2));
|
||||
int calculatedPitch = distanceFromBobber * 4;
|
||||
MainClass.DebugLog(calculatedPitch.ToString());
|
||||
Game1.playSoundPitched("bobber_target_up", calculatedPitch);
|
||||
}
|
||||
|
||||
if(bobberPosition > bobberBarPos && (currentTimeInMilliseconds - previousBobberTargetDownPlayedTime) >= 250) {
|
||||
previousBobberTargetDownPlayedTime = currentTimeInMilliseconds;
|
||||
int distanceFromBobber = (int)(bobberPosition - bobberBarPos - (___bobberBarHeight / 2));
|
||||
int calculatedPitch = distanceFromBobber * 4;
|
||||
MainClass.DebugLog(calculatedPitch.ToString());
|
||||
Game1.playSoundPitched("bobber_target_down", calculatedPitch);
|
||||
}
|
||||
}
|
||||
|
||||
private static void handleProgressBarSound(float ___distanceFromCatching, bool ___fadeOut, bool ___fadeIn) {
|
||||
if(Game1.soundBank == null) return;
|
||||
if (Game1.soundBank == null) return;
|
||||
|
||||
if (progressSound == null) {
|
||||
progressSound = Game1.soundBank.GetCue("SinWave");
|
||||
|
@ -29,7 +68,7 @@ namespace stardew_access.Patches {
|
|||
progressSound.Play();
|
||||
}
|
||||
|
||||
if(___fadeOut && progressSound.IsPlaying) {
|
||||
if (___fadeOut && progressSound.IsPlaying) {
|
||||
// Stop playing the sound on menu close
|
||||
progressSound.Stop(Microsoft.Xna.Framework.Audio.AudioStopOptions.Immediate);
|
||||
}
|
||||
|
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue