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 type
This commit is contained in:
@@ -22,6 +22,9 @@ namespace stardew_access
|
|||||||
|
|
||||||
soundEffects.Add("drop_item", TYPE.Sound);
|
soundEffects.Add("drop_item", TYPE.Sound);
|
||||||
soundEffects.Add("colliding", 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_top", TYPE.Footstep);
|
||||||
soundEffects.Add("npc_right", 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.
|
public Boolean TrackDroppedItems {get; set;} = true; // Toggles detecting the dropped items.
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
public int MaximumFishingDifficulty { get; set; } = 999; // TODO Add doc
|
||||||
|
public int FixFishingMotionType { get; set; } = 999;
|
||||||
|
|
||||||
// TODO Add the exclusion and focus list too
|
// TODO Add the exclusion and focus list too
|
||||||
// public String ExclusionList { get; set; } = "test";
|
// public String ExclusionList { get; set; } = "test";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -4,18 +4,57 @@ using StardewValley.Menus;
|
|||||||
namespace stardew_access.Patches {
|
namespace stardew_access.Patches {
|
||||||
internal class FishingMiniGamePatch {
|
internal class FishingMiniGamePatch {
|
||||||
private static ICue? progressSound = null;
|
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 {
|
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);
|
handleProgressBarSound(___distanceFromCatching, ___fadeOut, ___fadeIn);
|
||||||
// MainClass.DebugLog($"dist: {___distanceFromCatching}\tbobPos: {___bobberPosition}\tbobbarpos{___bobberBarPos}");
|
|
||||||
|
handleBobberTargetSound(___bobberPosition, ___bobberBarPos, ___bobberInBar, ___bobberBarHeight, ___fadeOut, ___fadeIn);
|
||||||
} catch (System.Exception e) {
|
} catch (System.Exception e) {
|
||||||
MainClass.ErrorLog($"An error occured while patching bobber bar:\n{e.Message}\n{e.StackTrace}");
|
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) {
|
private static void handleProgressBarSound(float ___distanceFromCatching, bool ___fadeOut, bool ___fadeIn) {
|
||||||
if(Game1.soundBank == null) return;
|
if (Game1.soundBank == null) return;
|
||||||
|
|
||||||
if (progressSound == null) {
|
if (progressSound == null) {
|
||||||
progressSound = Game1.soundBank.GetCue("SinWave");
|
progressSound = Game1.soundBank.GetCue("SinWave");
|
||||||
@@ -29,7 +68,7 @@ namespace stardew_access.Patches {
|
|||||||
progressSound.Play();
|
progressSound.Play();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(___fadeOut && progressSound.IsPlaying) {
|
if (___fadeOut && progressSound.IsPlaying) {
|
||||||
// Stop playing the sound on menu close
|
// Stop playing the sound on menu close
|
||||||
progressSound.Stop(Microsoft.Xna.Framework.Audio.AudioStopOptions.Immediate);
|
progressSound.Stop(Microsoft.Xna.Framework.Audio.AudioStopOptions.Immediate);
|
||||||
}
|
}
|
||||||
|
BIN
stardew-access/assets/sounds/bobber_target_down.wav
Normal file
BIN
stardew-access/assets/sounds/bobber_target_down.wav
Normal file
Binary file not shown.
BIN
stardew-access/assets/sounds/bobber_target_up.wav
Normal file
BIN
stardew-access/assets/sounds/bobber_target_up.wav
Normal file
Binary file not shown.
Reference in New Issue
Block a user