diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d950b9..d852e25 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,5 @@ # Changelog -## [1.0.1] - 2022-07-27 -### Fixed -- Don't try to restart the music while on the bus. -- Handle the specific secret woods case; play it's specific song instead of the generic seasonal. - ## [1.0.0] - 2022-07-26 ### Added - Restart in-game "morning" song when it is not playing and player is outside. diff --git a/SoundLoopMod/ModEntry.cs b/SoundLoopMod/ModEntry.cs index 75722ed..eb1f395 100644 --- a/SoundLoopMod/ModEntry.cs +++ b/SoundLoopMod/ModEntry.cs @@ -30,19 +30,13 @@ namespace SoundLoopMod public override void Entry(IModHelper helper) { helper.Events.GameLoop.OneSecondUpdateTicking += this.CheckMusicNeedsRestarting; - helper.Events.Player.Warped += this.ResetMusicSecretWoods; } - - private const string WoodsName = "Woods"; - + private void CheckMusicNeedsRestarting(object? sender, OneSecondUpdateTickingEventArgs e) { - // Don't do anything if we're at the title screen if (!Context.IsWorldReady) return; - // Music won't play again in the mines if this timestamp is lower than 150000. Set to some arbitrary large value. - // The skull cavern is considered an extension of the mines, so this should affect that as well. MineShaft.timeSinceLastMusic = 999999; // Avoid playing morning song in the mines etc. @@ -52,42 +46,12 @@ namespace SoundLoopMod // The game keeps trying to stop the music if it's dark. We won't fight it for now if (Game1.isDarkOut()) return; - - // Don't start music while on the bus - // shouldHideCharacters seems to only be used for the bus, seems to be the nicest way to get this info - if (Game1.currentLocation.shouldHideCharacters()) - return; - - // Be extra-safe about not doing anything during an event (to protect the special cases below) - if (Game1.eventUp) - return; - // Seems to be safe to touch the current song, check if it has finished if (Game1.currentSong == null || Game1.currentSong.IsStopped || Game1.requestedMusicTrack.ToLower().Contains("ambient")) { - if (Game1.currentLocation.Name == WoodsName) - { - // The music for the secret woods is a bit of a special case. - Game1.changeMusicTrack("woodsTheme"); - } - else - { - // General case, let the game figure out what song to play. - Game1.playMorningSong(); - } + Game1.playMorningSong(); this.Monitor.Log("Restarted music"); } } - - private void ResetMusicSecretWoods(object? sender, WarpedEventArgs e) - { - // The game won't touch the music when entering the woods after 1800, causing the previously playing - // music to keep playing. Hence we stop it and let CheckMusicNeedsRestarting play the woods theme. - // However, after dark, let it keep playing the ambient night sound. - if (e.IsLocalPlayer && e.NewLocation.Name == WoodsName && !Game1.isDarkOut()) - { - Game1.changeMusicTrack("none"); - } - } } } diff --git a/SoundLoopMod/manifest.json b/SoundLoopMod/manifest.json index bab1e73..b2b9aa6 100644 --- a/SoundLoopMod/manifest.json +++ b/SoundLoopMod/manifest.json @@ -1,7 +1,7 @@ { "Name": "SoundLoop Mod", "Author": "strelkasaur", - "Version": "1.0.1", + "Version": "1.0.0", "Description": "Loops the in-game music", "UniqueID": "com.strelkasaurus.sm.soundloop", "EntryDll": "SoundLoopMod.dll",