/// <summary>Raised after a player warps to a new location.</summary> /// <param name="sender">The event sender.</param> /// <param name="e">The event arguments.</param> private void OnPlayerWarped(object sender, WarpedEventArgs e) { if (e.IsLocalPlayer) { musicManager.selectMusic(SongSpecifics.getCurrentConditionalString()); } }
/// <summary> /// Choose new music when a menu is closed. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MenuEvents_MenuClosed(object sender, StardewModdingAPI.Events.EventArgsClickableMenuClosed e) { if (menuChangedMusic == true) { musicManager.selectMusic(SongSpecifics.getCurrentConditionalString()); } }
/********* ** Public methods *********/ /// <summary>The mod entry point, called after the mod is first loaded.</summary> /// <param name="helper">Provides simplified APIs for writing mods.</param> public override void Entry(IModHelper helper) { ModHelper = helper; ModMonitor = this.Monitor; Config = helper.ReadConfig <Config>(); helper.Events.GameLoop.SaveLoaded += this.OnSaveLoaded; helper.Events.Player.Warped += this.OnPlayerWarped; helper.Events.GameLoop.UpdateTicked += this.OnUpdateTicked; helper.Events.Input.ButtonPressed += this.OnButtonPressed; helper.Events.GameLoop.Saving += this.OnSaving; helper.Events.Display.MenuChanged += this.OnMenuChanged; helper.Events.GameLoop.GameLaunched += this.OnGameLaunched; musicManager = new MusicManager(); textureManager = new TextureManager(); this.LoadTextures(); menuChangedMusic = false; //Initialize all of the lists upon creation during entry. SongSpecifics.initializeMenuList(); SongSpecifics.initializeFestivalsList(); this.LoadMusicPacks(); }
/// <summary> /// Raised every frame. Mainly used just to initiate the music packs. Probably not needed. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void GameEvents_UpdateTick(object sender, EventArgs e) { if (musicPacksInitialized == false) { initializeMusicPacks(); musicPacksInitialized = true; musicManager.selectMusic(SongSpecifics.getCurrentConditionalString()); } }
/// <summary> /// Entry point for the mod. /// </summary> /// <param name="helper"></param> public override void Entry(IModHelper helper) { DefaultSoundBank = Game1.soundBank; DefaultWaveBank = Game1.waveBank; ModHelper = helper; ModMonitor = Monitor; Manifest = ModManifest; Config = helper.ReadConfig <Config>(); StardewModdingAPI.Events.SaveEvents.AfterLoad += SaveEvents_AfterLoad; // StardewModdingAPI.Events.EventArgsLocationsChanged += LocationEvents_CurrentLocationChanged; StardewModdingAPI.Events.PlayerEvents.Warped += PlayerEvents_Warped; StardewModdingAPI.Events.GameEvents.UpdateTick += GameEvents_UpdateTick; StardewModdingAPI.Events.ControlEvents.KeyPressed += ControlEvents_KeyPressed; StardewModdingAPI.Events.SaveEvents.BeforeSave += SaveEvents_BeforeSave; StardewModdingAPI.Events.MenuEvents.MenuChanged += MenuEvents_MenuChanged; StardewModdingAPI.Events.MenuEvents.MenuClosed += MenuEvents_MenuClosed; StardewModdingAPI.Events.GameEvents.FirstUpdateTick += GameEvents_FirstUpdateTick; StardewModdingAPI.Events.GameEvents.OneSecondTick += GameEvents_OneSecondTick; musicManager = new MusicManager(); MusicPath = Path.Combine(ModHelper.DirectoryPath, "Content", "Music"); WavMusicDirectory = Path.Combine(MusicPath, "Wav"); XACTMusicDirectory = Path.Combine(MusicPath, "XACT"); TemplateMusicDirectory = Path.Combine(MusicPath, "Templates"); textureManager = new TextureManager(); this.createDirectories(); this.createBlankXACTTemplate(); this.createBlankWAVTemplate(); musicPacksInitialized = false; menuChangedMusic = false; //Initialize all of the lists upon creation during entry. SongSpecifics.initializeMenuList(); SongSpecifics.initializeEventsList(); SongSpecifics.initializeFestivalsList(); initializeMusicPacks(); }
/// <summary>Raised after a game menu is opened, closed, or replaced.</summary> /// <param name="sender">The event sender.</param> /// <param name="e">The event arguments.</param> private void OnMenuChanged(object sender, MenuChangedEventArgs e) { // menu closed if (e.NewMenu == null) { if (menuChangedMusic) { musicManager.selectMusic(SongSpecifics.getCurrentConditionalString()); } } // menu changed else { musicManager.SelectMenuMusic(SongSpecifics.getCurrentConditionalString()); } }
/// <summary> /// Events to occur after the game has loaded in. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SaveEvents_AfterLoad(object sender, EventArgs e) { //Locaion initialization MUST occur after load. Anything else can occur before. SongSpecifics.initializeLocationsList(); //Gets all Game locations once the player has loaded the game, and all buildings on the player's farm and adds them to a location list. musicManager.initializeSeasonalMusic(); //Initialize the seasonal music using all locations gathered in the location list. musicManager.initializeMenuMusic(); musicManager.initializeFestivalMusic(); musicManager.initializeEventMusic(); foreach (var musicPack in musicManager.musicPacks) { musicPack.Value.readFromJson(); } SongSpecifics.menus.Sort(); SongSpecifics.locations.Sort(); SongSpecifics.festivals.Sort(); SongSpecifics.events.Sort(); musicManager.selectMusic(SongSpecifics.getCurrentConditionalString()); }
/// <summary> /// Raised when the player changes locations. This should determine the next song to play. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void LocationEvents_CurrentLocationChanged(object sender, StardewModdingAPI.Events.EventArgsCurrentLocationChanged e) { musicManager.selectMusic(SongSpecifics.getCurrentConditionalString()); }
/// <summary> /// Choose new music when a menu is opened. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MenuEvents_MenuChanged(object sender, StardewModdingAPI.Events.EventArgsClickableMenuChanged e) { //var ok = musicManager.currentMusicPack.getNameOfCurrentSong(); musicManager.selectMenuMusic(SongSpecifics.getCurrentConditionalString()); }
/// <summary> /// Raised when the player changes locations. This should determine the next song to play. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void PlayerEvents_Warped(object sender, StardewModdingAPI.Events.EventArgsPlayerWarped e) { musicManager.selectMusic(SongSpecifics.getCurrentConditionalString()); }