diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Music_Expansion_Config.txt b/Stardew_Valley_Music_Expansion_API_Mod/Music_Expansion_Config.txt new file mode 100644 index 00000000..e43d9522 --- /dev/null +++ b/Stardew_Valley_Music_Expansion_API_Mod/Music_Expansion_Config.txt @@ -0,0 +1,20 @@ +Player: Stardew Valley Music Expansion Config. Feel free to edit. +==================================================================================== +Minimum delay time: This is the minimal amout of time(in miliseconds!!!) that will pass before another song will play. 0 means a song will play immediately, 1000 means a second will pass, etc. Used in RNG to determine a random delay between songs. +10000 +Maximum delay time: This is the maximum amout of time(in miliseconds!!!) that will pass before another song will play. 0 means a song will play immediately, 1000 means a second will pass, etc. Used in RNG to determine a random delay between songs. +30000 +Silent rain? Setting this value to false plays the default ambient rain music along side whatever songs are set in rain music. Setting this to true will disable the ambient rain music. It's up to the soundpack creators wither or not they want to mix their music with rain prior to loading it in here. +False +Seasonal_Music? Setting this value to true will play the seasonal music from the music packs instead of defaulting to the Stardew Valley Soundtrack. +True + + + + + + + + + + diff --git a/Stardew_Valley_Music_Expansion_API_Mod/ReadMe.txt b/Stardew_Valley_Music_Expansion_API_Mod/ReadMe.txt new file mode 100644 index 00000000..c615bcc6 --- /dev/null +++ b/Stardew_Valley_Music_Expansion_API_Mod/ReadMe.txt @@ -0,0 +1,11 @@ +This is Stardew Symphony + +What this is is a music expansion API that allows users to add in music packs into Stardew Valley and play them without editing the game's default soundtrack. Music can be player per location and season, with additional options to play specific music depending on the time of day and the weather. More options such as muting the default rain soundtrack exist within the config file. This will not mute the music for in-game events or festivals. + +Installing music packs is simple as dragging and dropping a music pack into Stardew Valley/Mods/Stardew_Symphony/Music_Files/ + +Only music names included into the files located at +Stardew Valley/Mods/Stardew_Symphony/Music_Files/(music_pack_name)/Locations +and +Stardew Valley/Mods/Stardew_Symphony/Music_Files/(music_pack_name)/Seasons +will play according to the name of the file.txt \ No newline at end of file diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API.sln b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API.sln new file mode 100644 index 00000000..3ce6e049 --- /dev/null +++ b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Express 14 for Windows Desktop +VisualStudioVersion = 14.0.24720.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Stardew_Music_Expansion_API", "Stardew_Music_Expansion_API\Stardew_Music_Expansion_API.csproj", "{697F7EC8-02C6-4F39-A917-EE45955CFFF9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {697F7EC8-02C6-4F39-A917-EE45955CFFF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {697F7EC8-02C6-4F39-A917-EE45955CFFF9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {697F7EC8-02C6-4F39-A917-EE45955CFFF9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {697F7EC8-02C6-4F39-A917-EE45955CFFF9}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/Class1.cs b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/Class1.cs new file mode 100644 index 00000000..bedf859d --- /dev/null +++ b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/Class1.cs @@ -0,0 +1,3110 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using StardewModdingAPI; +using StardewValley; +using System.IO; +using System.Timers; +using Microsoft.Xna.Framework.Audio; +/* +TODO: +0. Add in event handling so that I don;t mute a heart event or wedding music. +6. add in Stardew songs again to music selection +7. add in more tracks. +11. Tutorial for adding more music into the game? +15.add in blank templates for users to make their own wave/sound banks + +*/ +namespace Stardew_Music_Expansion_API +{ + //also known as the music_pack + public class Info_Class + { + public string wave_bank_name; + public string sound_bank_name; + + public List spring_song_list; + public int num_of_spring_songs; + public List summer_song_list; + public int num_of_summer_songs; + public List fall_song_list; + public int num_of_fall_songs; + public List winter_song_list; + public int num_of_winter_songs; + + + public List spring_night_song_list; + public int num_of_spring_night_songs; + public List summer_night_song_list; + public int num_of_summer_night_songs; + public List fall_night_song_list; + public int num_of_fall_night_songs; + public List winter_night_song_list; + public int num_of_winter_night_songs; + + + public List spring_rain_song_list; + public int num_of_spring_rain_songs; + public List summer_rain_song_list; + public int num_of_summer_rain_songs; + public List fall_rain_song_list; + public int num_of_fall_rain_songs; + public List winter_snow_song_list; + public int num_of_winter_snow_songs; + + + public List spring_rain_night_song_list; + public int num_of_spring_rain_night_songs; + public List summer_rain_night_song_list; + public int num_of_summer_rain_night_songs; + public List fall_rain_night_song_list; + public int num_of_fall_rain_night_songs; + public List winter_snow_night_song_list; + public int num_of_winter_snow_night_songs; + + public List locational_cues; + public Dictionary> locational_songs; + + + public Dictionary> locational_rain_songs; + public Dictionary> locational_night_songs; + public Dictionary> locational_rain_night_songs; + + + public WaveBank newwave; + public SoundBank new_sound_bank; + public string path_loc; + + public Info_Class(string wb, string sb, string directory) + { + wave_bank_name = wb; + sound_bank_name = sb; + wave_bank_name += ".xwb"; + sound_bank_name += ".xsb"; + path_loc = directory; + + Log.Info(Path.Combine(path_loc, wave_bank_name)); + Log.Info(Path.Combine(path_loc, sound_bank_name)); + + + if (File.Exists(Path.Combine(path_loc, wave_bank_name))){ + newwave = new WaveBank(Game1.audioEngine, Path.Combine(path_loc, wave_bank_name)); //look for wave bank in sound_pack root directory. + } + if (File.Exists(Path.Combine(path_loc, sound_bank_name))) + { + new_sound_bank = new SoundBank(Game1.audioEngine, Path.Combine(path_loc, sound_bank_name)); //look for sound bank in sound_pack root directory. + } + + Game1.audioEngine.Update(); + + spring_song_list = new List(); + num_of_spring_songs = 0; + summer_song_list = new List(); + num_of_summer_songs = 0; + fall_song_list = new List(); + num_of_fall_songs = 0; + winter_song_list = new List(); + num_of_winter_songs = 0; + + spring_night_song_list = new List(); + num_of_spring_night_songs = 0; + summer_night_song_list = new List(); + num_of_summer_night_songs = 0; + fall_night_song_list = new List(); + num_of_fall_night_songs = 0; + winter_night_song_list = new List(); + num_of_winter_night_songs = 0; + + + //rainy initialization + spring_rain_song_list = new List(); + num_of_spring_rain_songs = 0; + summer_rain_song_list = new List(); + num_of_summer_rain_songs = 0; + fall_rain_song_list = new List(); + num_of_fall_rain_songs = 0; + winter_snow_song_list = new List(); + num_of_winter_snow_songs = 0; + + spring_rain_night_song_list = new List(); + num_of_spring_rain_night_songs = 0; + summer_rain_night_song_list = new List(); + num_of_summer_rain_night_songs = 0; + fall_rain_night_song_list = new List(); + num_of_fall_rain_night_songs = 0; + winter_snow_night_song_list = new List(); + num_of_winter_snow_night_songs = 0; + + locational_songs = new Dictionary>(); + locational_rain_songs = new Dictionary>(); + locational_night_songs = new Dictionary>(); + locational_rain_night_songs = new Dictionary>(); + } + + public void Music_Loader_Seasons(string conditional_name, Dictionary reference_dic) //reads in cue names from a text file and adds them to a specific list. Morphs with specific conditional name. Conditionals are hardcoded. + { + //loads the data to the variables upon loading the game. + var music_path = path_loc; + string mylocation = Path.Combine(music_path,"Music_Files","Seasons", conditional_name); + string mylocation2 = mylocation; + string mylocation3 = mylocation2 + ".txt"; + + + if (!File.Exists(mylocation3)) //check to make sure the file actually exists + { + + string error_message = "The specified music file could not be found. That music file is " + conditional_name + " which should be located at " + mylocation3 +" but don't worry I'll create it for you right now. It's going to be blank though"; + Log.Error(error_message); + + string[] mystring3 = new string[3];//seems legit. + mystring3[0] = conditional_name + " music file. This file holds all of the music that will play when there is no music for this game location, or simply put this is default music. Simply type the name of the song below the wall of equal signs."; + mystring3[1] = "========================================================================================"; + + File.WriteAllLines(mylocation3, mystring3); + } + + else + { + Log.Info("The music pack located at: " + path_loc + " is processing the song info for the game location: " + conditional_name); + //System.Threading.Thread.Sleep(1000); + // add in data here + + string[] readtext = File.ReadAllLines(mylocation3); + string cue_name; + int i = 2; + var lineCount = File.ReadLines(mylocation3).Count(); + + while (i < lineCount) //the ordering seems bad, but it works. + { + if (Convert.ToString(readtext[i]) == "") + { + // Log.Info("Blank space detected."); + break; + + } + if (Convert.ToString(readtext[i]) == "\n") + { + break; + + } + + + if (conditional_name == "spring") + { + cue_name = Convert.ToString(readtext[i]); + i++; + + + if (!reference_dic.Keys.Contains(cue_name)) + { + spring_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_spring_songs++; + reference_dic.Add(cue_name, this); + + } + else { + spring_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_spring_songs++; + } + // Log.Info(cue_name); + } + if (conditional_name == "summer") + { + cue_name = Convert.ToString(readtext[i]); + i++; + + if (!reference_dic.Keys.Contains(cue_name)) + { + summer_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_summer_songs++; + reference_dic.Add(cue_name, this); + + } + else { + summer_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_summer_songs++; + } + } + if (conditional_name == "fall") + { + cue_name = Convert.ToString(readtext[i]); + i++; + + if (!reference_dic.Keys.Contains(cue_name)) + { + fall_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_fall_songs++; + reference_dic.Add(cue_name, this); + + } + else { + fall_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_fall_songs++; + } + } + if (conditional_name == "winter") + { + cue_name = Convert.ToString(readtext[i]); + i++; + + if (!reference_dic.Keys.Contains(cue_name)) + { + winter_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_winter_songs++; + reference_dic.Add(cue_name, this); + + } + else { + winter_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_winter_songs++; + } + } + //add in other stuff here + //======================================================================================================================================================================================== + //NIGHTLY SEASONAL LOADERS + if (conditional_name == "spring_night") + { + cue_name = Convert.ToString(readtext[i]); + i++; + + + if (!reference_dic.Keys.Contains(cue_name)) + { + spring_night_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_spring_night_songs++; + reference_dic.Add(cue_name, this); + + } + else { + spring_night_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_spring_night_songs++; + } + // Log.Info(cue_name); + } + if (conditional_name == "summer_night") + { + cue_name = Convert.ToString(readtext[i]); + i++; + + if (!reference_dic.Keys.Contains(cue_name)) + { + summer_night_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_summer_night_songs++; + reference_dic.Add(cue_name, this); + + } + else { + summer_night_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_summer_night_songs++; + } + } + if (conditional_name == "fall_night") + { + cue_name = Convert.ToString(readtext[i]); + i++; + + if (!reference_dic.Keys.Contains(cue_name)) + { + fall_night_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_fall_night_songs++; + reference_dic.Add(cue_name, this); + + } + else { + fall_night_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_fall_night_songs++; + } + } + if (conditional_name == "winter_night") + { + cue_name = Convert.ToString(readtext[i]); + i++; + + if (!reference_dic.Keys.Contains(cue_name)) + { + winter_night_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_winter_night_songs++; + reference_dic.Add(cue_name, this); + + } + else { + winter_night_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_winter_night_songs++; + } + } + ////////NOW I"M ADDING THE PART THAT WILL READ IN RAINY SEASONAL SONGS FOR DAY AND NIGHT + if (conditional_name == "spring_rain") + { + cue_name = Convert.ToString(readtext[i]); + i++; + + + if (!reference_dic.Keys.Contains(cue_name)) + { + spring_rain_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_spring_rain_songs++; + reference_dic.Add(cue_name, this); + + } + else { + spring_rain_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_spring_rain_songs++; + } + // Log.Info(cue_name); + } + if (conditional_name == "summer_rain") + { + cue_name = Convert.ToString(readtext[i]); + i++; + + if (!reference_dic.Keys.Contains(cue_name)) + { + summer_rain_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_summer_rain_songs++; + reference_dic.Add(cue_name, this); + + } + else { + summer_rain_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_summer_rain_songs++; + } + } + if (conditional_name == "fall_rain") + { + cue_name = Convert.ToString(readtext[i]); + i++; + + if (!reference_dic.Keys.Contains(cue_name)) + { + fall_rain_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_fall_rain_songs++; + reference_dic.Add(cue_name, this); + + } + else { + fall_rain_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_fall_rain_songs++; + } + } + if (conditional_name == "winter_snow") + { + cue_name = Convert.ToString(readtext[i]); + i++; + + if (!reference_dic.Keys.Contains(cue_name)) + { + winter_snow_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_winter_snow_songs++; + reference_dic.Add(cue_name, this); + + } + else { + winter_snow_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_winter_snow_songs++; + } + } + //add in other stuff here + //======================================================================================================================================================================================== + //NIGHTLY SEASONAL RAIN LOADERS + if (conditional_name == "spring_rain_night") + { + cue_name = Convert.ToString(readtext[i]); + i++; + + + if (!reference_dic.Keys.Contains(cue_name)) + { + spring_rain_night_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_spring_rain_night_songs++; + reference_dic.Add(cue_name, this); + + } + else { + spring_rain_night_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_spring_rain_night_songs++; + } + // Log.Info(cue_name); + } + if (conditional_name == "summer_rain_night") + { + cue_name = Convert.ToString(readtext[i]); + i++; + + if (!reference_dic.Keys.Contains(cue_name)) + { + summer_rain_night_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_summer_rain_night_songs++; + reference_dic.Add(cue_name, this); + + } + else { + summer_rain_night_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_summer_rain_night_songs++; + } + } + if (conditional_name == "fall_rain_night") + { + cue_name = Convert.ToString(readtext[i]); + i++; + + if (!reference_dic.Keys.Contains(cue_name)) + { + fall_rain_night_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_fall_rain_night_songs++; + reference_dic.Add(cue_name, this); + + } + else { + fall_rain_night_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_fall_rain_night_songs++; + } + } + if (conditional_name == "winter_snow_night") + { + cue_name = Convert.ToString(readtext[i]); + i++; + + if (!reference_dic.Keys.Contains(cue_name)) + { + winter_snow_night_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_winter_snow_night_songs++; + reference_dic.Add(cue_name, this); + + } + else { + winter_snow_night_song_list.Add(new_sound_bank.GetCue(cue_name)); + + num_of_winter_snow_night_songs++; + } + } + } + if (i ==2) + { + // Log.Error("Just thought that I'd let you know that there are no songs associated with the music file located at " + mylocation3 +" this may be intentional, but just incase you were wanted music, now you knew which ones were blank."); + // System.Threading.Thread.Sleep(10); + return; + } + Log.Success("The music pack located at: " + path_loc + " has successfully processed the song info for the game location: " + conditional_name); + } + } + public void Music_Loader_Locations(string conditional_name, Dictionary reference_dic) //reads in cue names from a text file and adds them to a specific list. Morphs with specific conditional name. Conditionals are hardcoded. + { + locational_cues = new List(); + //loads the data to the variables upon loading the game. + var music_path = path_loc; + string mylocation = Path.Combine(music_path, "Music_Files", "Locations", conditional_name); + string mylocation2 = mylocation; + string mylocation3 = mylocation2 + ".txt"; + if (!File.Exists(mylocation3)) //check to make sure the file actually exists + { + Log.Error("A music list for the location " + conditional_name + " does not exist for the music pack located at " + mylocation3 + " which isn't a problem, I just thought I'd let you know since this may have been intentional. Also I'm creating it for you just incase. Cheers."); + + //Console.WriteLine("Creating the Config file"); + string[] mystring3 = new string[3];//seems legit. + mystring3[0] = conditional_name + " music file. This file holds all of the music that will play when at this game location. Simply type the name of the song below the wall of equal signs."; + mystring3[1] = "========================================================================================"; + + File.WriteAllLines(mylocation3, mystring3); + return; + } + + else + { + Log.Info("The music pack located at: " + path_loc + " is processing the song info for the game location: " + conditional_name); + //System.Threading.Thread.Sleep(1000); + string[] readtext = File.ReadAllLines(mylocation3); + string cue_name; + int i = 2; + var lineCount = File.ReadLines(mylocation3).Count(); + while (i < lineCount) //the ordering seems bad, but it works. + { + if (Convert.ToString(readtext[i]) == "") + { + break; + } + if (Convert.ToString(readtext[i]) == "\n") + { + break; + } + cue_name = Convert.ToString(readtext[i]); + i++; + if (!reference_dic.Keys.Contains(cue_name)) + { + locational_cues.Add(new_sound_bank.GetCue(cue_name)); + reference_dic.Add(cue_name, this); + } + else { + locational_cues.Add(new_sound_bank.GetCue(cue_name)); + } + } + if (i == 2) + { + // Log.Error("Just thought that I'd let you know that there are no songs associated with the music file located at " + mylocation3 + " this may be intentional, but just incase you were wanted music, now you knew which ones were blank."); + return; + } + if (locational_cues.Count > 0) { + locational_songs.Add(conditional_name, locational_cues); + Log.Success("The music pack located at: " + path_loc + " has successfully processed the song info for the game location: " + conditional_name); + + return; + } + else + { + // Log.Error("Just thought that I'd let you know that there are no songs associated with the music file located at " + mylocation3 + " this may be intentional, but just incase you were wanted music, now you knew which ones were blank."); + return; + } + } + } + + public void Music_Loader_Locations_Rain(string conditional_name, Dictionary reference_dic) //reads in cue names from a text file and adds them to a specific list. Morphs with specific conditional name. Conditionals are hardcoded. + { + locational_cues = new List(); + var music_path = path_loc; + string mylocation = Path.Combine(music_path, "Music_Files", "Locations", conditional_name); + string mylocation2 = mylocation; + string mylocation3 = mylocation2 + ".txt"; + if (!File.Exists(mylocation3)) //check to make sure the file actually exists + { + Log.Error("A music list for the location " + conditional_name + " does not exist for the music pack located at " + mylocation3 + " which isn't a problem, I just thought I'd let you know since this may have been intentional. Also I'm creating it for you just incase. Cheers."); + string[] mystring3 = new string[3];//seems legit. + mystring3[0] = conditional_name + " music file. This file holds all of the music that will play when at this game location. Simply type the name of the song below the wall of equal signs."; + mystring3[1] = "========================================================================================"; + File.WriteAllLines(mylocation3, mystring3); + return; + } + + else + { + // add in data here + string[] readtext = File.ReadAllLines(mylocation3); + string cue_name; + int i = 2; + var lineCount = File.ReadLines(mylocation3).Count(); + while (i < lineCount) //the ordering seems bad, but it works. + { + if (Convert.ToString(readtext[i]) == "") + { + // Log.Info("Blank space detected."); + break; + } + if (Convert.ToString(readtext[i]) == "\n") + { + Log.Info("end line reached"); + break; + } + cue_name = Convert.ToString(readtext[i]); + i++; + if (!reference_dic.Keys.Contains(cue_name)) + { + locational_cues.Add(new_sound_bank.GetCue(cue_name)); + reference_dic.Add(cue_name, this); + } + else { + locational_cues.Add(new_sound_bank.GetCue(cue_name)); + } + } + if (i == 2) + { + // Log.Error("Just thought that I'd let you know that there are no songs associated with the music file located at " + mylocation3 + " this may be intentional, but just incase you were wanted music, now you knew which ones were blank."); + return; + } + if (locational_cues.Count > 0) + { + locational_rain_songs.Add(conditional_name, locational_cues); + Log.Success("The music pack located at: " + path_loc + " has successfully processed the song info for the game location: " + conditional_name); + return; + } + else + { + // Log.Error("Just thought that I'd let you know that there are no songs associated with the music file located at " + mylocation3 + " this may be intentional, but just incase you were wanted music, now you knew which ones were blank."); + return; + } + } + } + public void Music_Loader_Locations_Night(string conditional_name, Dictionary reference_dic) //reads in cue names from a text file and adds them to a specific list. Morphs with specific conditional name. Conditionals are hardcoded. + { + locational_cues = new List(); + //loads the data to the variables upon loading the game. + var music_path = path_loc; + string mylocation = Path.Combine(music_path, "Music_Files", "Locations", conditional_name); + string mylocation2 = mylocation; + string mylocation3 = mylocation2 + ".txt"; + if (!File.Exists(mylocation3)) //check to make sure the file actually exists + { + Log.Error("A music list for the location " + conditional_name + " does not exist for the music pack located at " + mylocation3 + " which isn't a problem, I just thought I'd let you know since this may have been intentional. Also I'm creating it for you just incase. Cheers."); + //Console.WriteLine("Creating the Config file"); + string[] mystring3 = new string[3];//seems legit. + mystring3[0] = conditional_name + " music file. This file holds all of the music that will play when at this game location. Simply type the name of the song below the wall of equal signs."; + mystring3[1] = "========================================================================================"; + File.WriteAllLines(mylocation3, mystring3); + return; + } + + else + { + // add in data here + string[] readtext = File.ReadAllLines(mylocation3); + string cue_name; + int i = 2; + var lineCount = File.ReadLines(mylocation3).Count(); + + while (i < lineCount) //the ordering seems bad, but it works. + { + if (Convert.ToString(readtext[i]) == "") + { + // Log.Info("Blank space detected."); + break; + + } + if (Convert.ToString(readtext[i]) == "\n") + { + Log.Info("end line reached"); + break; + + } + cue_name = Convert.ToString(readtext[i]); + i++; + if (!reference_dic.Keys.Contains(cue_name)) + { + locational_cues.Add(new_sound_bank.GetCue(cue_name)); + reference_dic.Add(cue_name, this); + } + else { + locational_cues.Add(new_sound_bank.GetCue(cue_name)); + } + + } + if (i == 2) + { + // Log.Error("Just thought that I'd let you know that there are no songs associated with the music file located at " + mylocation3 + " this may be intentional, but just incase you were wanted music, now you knew which ones were blank."); + return; + } + if (locational_cues.Count > 0) + { + locational_night_songs.Add(conditional_name, locational_cues); + Log.Success("The music pack located at: " + path_loc + " has successfully processed the song info for the game location: " + conditional_name); + return; + } + else + { + // Log.Error("Just thought that I'd let you know that there are no songs associated with the music file located at " + mylocation3 + " this may be intentional, but just incase you were wanted music, now you knew which ones were blank."); + return; + } + } + } + public void Music_Loader_Locations_Rain_Night(string conditional_name, Dictionary reference_dic) //reads in cue names from a text file and adds them to a specific list. Morphs with specific conditional name. Conditionals are hardcoded. + { + locational_cues = new List(); + var music_path = path_loc; + + string mylocation = Path.Combine(music_path, "Music_Files", "Locations", conditional_name); + string mylocation2 = mylocation; + string mylocation3 = mylocation2 + ".txt"; + if (!File.Exists(mylocation3)) //check to make sure the file actually exists + { + Log.Error("A music list for the location " + conditional_name + " does not exist for the music pack located at " + mylocation3 + " which isn't a problem, I just thought I'd let you know since this may have been intentional. Also I'm creating it for you just incase. Cheers."); + string[] mystring3 = new string[3];//seems legit. + mystring3[0] = conditional_name + " music file. This file holds all of the music that will play when at this game location. Simply type the name of the song below the wall of equal signs."; + mystring3[1] = "========================================================================================"; + + File.WriteAllLines(mylocation3, mystring3); + + + return; + } + + else + { + //load in music stuff from the text files using the code below. + string[] readtext = File.ReadAllLines(mylocation3); + string cue_name; + int i = 2; + var lineCount = File.ReadLines(mylocation3).Count(); + + while (i < lineCount) //the ordering seems bad, but it works. + { + if (Convert.ToString(readtext[i]) == "") //if there is ever an empty line, stop processing the music file + { + break; + } + if (Convert.ToString(readtext[i]) == "\n") + { + break; + } + cue_name = Convert.ToString(readtext[i]); + i++; + if (!reference_dic.Keys.Contains(cue_name)) + { + locational_cues.Add(new_sound_bank.GetCue(cue_name)); + reference_dic.Add(cue_name, this); + } + else { + locational_cues.Add(new_sound_bank.GetCue(cue_name)); + } + } + if (i == 2) + { + // Log.Error("Just thought that I'd let you know that there are no songs associated with the music file located at " + mylocation3 + " this may be intentional, but just incase you were wanted music, now you knew which ones were blank."); + + return; + } + + if (locational_cues.Count > 0) + { + locational_rain_night_songs.Add(conditional_name, locational_cues); + + Log.Success("The music pack located at: " + path_loc + " has successfully processed the song info for the game location: " + conditional_name); + return; + } + else + { + // Log.Error("Just thought that I'd let you know that there are no songs associated with the music file located at " + mylocation3 + " this may be intentional, but just incase you were wanted music, now you knew which ones were blank."); + return; + } + + } + } + + }; + + + public class Class1 : Mod + { + public static string[] subdirectoryEntries = new string[9999999]; + public static string[] fileEntries = new string[9999999]; + + public static List master_list; //holds all of my WAVE banks and sound banks and their locations. + public static Dictionary song_wave_reference; //holds a list of all of the cue names that I ever add in. + public static List location_list; //holds all of the locations in SDV + public static List temp_cue; //temporary list of songs from music pack + + public static Dictionary music_packs; + + public static string master_path; //path to this mod + + static int delay_time; + static int delay_time_min; //min time to pass before next song + static int delay_time_max; //max time to pass before next song + static bool game_loaded; //make sure the game is loaded + bool silent_rain; //auto mix in SDV rain sound with music? + int night_time; //not really used, but keeping it for now. + public static bool seasonal_music; //will I play the seasonal music or not? + public static Random random; + + + static bool no_music; //will trigger if a music pack can't be loaded for that location. + + public static SoundBank old_sound_bank; //game's default sound bank + public static SoundBank new_sound_bank; + public static Cue cueball; //the actual song that is playing. Why do you call songs cues microsoft? Probably something I'm oblivious to. + + public static WaveBank oldwave; + public static WaveBank newwave; + + public bool once; + + public static Info_Class current_info_class; + + public override void Entry(params object[] objects) + { + StardewModdingAPI.Events.PlayerEvents.LoadedGame += PlayerEvents_LoadedGame; + StardewModdingAPI.Events.TimeEvents.DayOfMonthChanged += TimeEvents_DayOfMonthChanged; + StardewModdingAPI.Events.GameEvents.UpdateTick += GameEvents_UpdateTick; + StardewModdingAPI.Events.LocationEvents.CurrentLocationChanged += LocationEvents_CurrentLocationChanged; + once = true; + } + + public void GameEvents_UpdateTick(object sender, EventArgs e) + { + if (game_loaded == false) return; + if (master_list != null) + { + if (master_list.Count == 0) return; //basically if absolutly no music is loaded into the game for locations/festivals/seasons, don't override the game's default music player. + + } + if (cueball == null) + { + no_music = true; + return; //if there wasn't any music at loaded at all for the area, just play the default stardew soundtrack. + } + if (no_music == true && cueball.IsPlaying == false) + { + cueball = null; //if there was no music loaded for the area and the last song has finished playing, default to the Stardew Soundtrack. + } + if (cueball != null) + { + no_music = false; + if (cueball.IsPlaying == false) //if a song isn't playing + { + //cueball = null; + if (aTimer.Enabled == false) //if my timer isn't enabled, set it. + { + SetTimer(); + } + else + { + //do nothing + } + } + } + + if (StardewValley.Game1.isFestival() == true) + { + return; //replace with festival + } + if (StardewValley.Game1.eventUp == true) + { + return; //replace with event music + } + + if (StardewValley.Game1.isRaining == true) + { + if (silent_rain == false) return;// If silent_rain = false. AKA, play the rain ambience soundtrack. If it is true, turn off the rain ambience sound track. + } + + Game1.currentSong.Stop(AudioStopOptions.Immediate); //stop the normal songs from playing over the new songs + Game1.nextMusicTrack = ""; //same as above line + + } + public void TimeEvents_DayOfMonthChanged(object sender, StardewModdingAPI.Events.EventArgsIntChanged e) + { + if (game_loaded == false) return; + random.Next(); + stop_sound(); //if my music player is called and I forget to clean up sound before hand, kill the old sound. + DataLoader(); + MyWritter(); + + if (game_loaded == false) return; + night_time = Game1.getModeratelyDarkTime(); //not sure I even really use this... + music_selector(); + } + public void PlayerEvents_LoadedGame(object sender, StardewModdingAPI.Events.EventArgsLoadedGameChanged e) + { + DataLoader(); + MyWritter(); + + music_packs = new Dictionary(); + random = new Random(); + master_list = new List(); + song_wave_reference = new Dictionary(); + location_list = new List(); + temp_cue = new List(); + no_music = true; + + master_creator(); //creates the directory and files necessary to run the mod. + Location_Grabber(); //grab all of the locations in the game and add them to a list; + ProcessDirectory(master_path); + //master_list.Add(new Info_Class("Wave Bank2", "Sound Bank2", PathOnDisk)); Old static way that only alowed one external wave bank. Good thing I found a way around that. + aTimer.Enabled = false; + night_time = Game1.getModeratelyDarkTime(); + process_music_packs(); + Log.Info("READY TO GO"); + game_loaded = true; + music_selector(); + + } + public void LocationEvents_CurrentLocationChanged(object sender, StardewModdingAPI.Events.EventArgsCurrentLocationChanged e) + { + if (game_loaded == false) return; + // Log.Info("NEW LOCATION"); + music_selector(); + + } + + public static Timer aTimer = new Timer(); + public static void SetTimer() + { + //set up a new timer + Random random2 = new Random(); + delay_time = random2.Next(delay_time_min, delay_time_max); //random number between 0 and n. 0 not included + + // Create a timer with a two second interval. + aTimer = new System.Timers.Timer(delay_time); + // Hook up the Elapsed event for the timer. + aTimer.Elapsed += OnTimedEvent; + aTimer.Enabled = true; + } + public static void OnTimedEvent(System.Object source, ElapsedEventArgs e) + { + //when my timer runs out play some music + music_selector(); + aTimer.Enabled = false; + } + + + public void master_creator() + { + //loads the data to the variables upon loading the game. + var music_path = PathOnDisk; + if (!Directory.Exists(Path.Combine(music_path, "Music_Packs"))) + { + Log.Info("Creating Music Directory"); + Directory.CreateDirectory(Path.Combine(music_path, "Music_Packs")); //create the Music_Packs directory. Because organization is nice. + } + + /* + + Old chunk of code that was suppose to automatically populate the music packs with a blank music pack for people to use as a template. Sadly this doesn't work all the way. + + if (!Directory.Exists(Path.Combine(music_path, "Music_Packs", "Blank_Music_Pack"))) + { + Log.Info("Creating Music Directory"); + Directory.CreateDirectory(Path.Combine(music_path, "Music_Packs", "Blank_Music_Pack")); //create the Music_Packs directory. Because organization is nice. + Setup_Creator(Path.Combine(music_path, "Music_Packs", "Blank_Music_Pack", "Config.txt")); + Setup_Creator(Path.Combine(music_path, "Music_Packs", "Blank_Music_Pack", "master_reference_sheet.txt")); + File.Create(Path.Combine(music_path, "Music_Packs", "Blank_Music_Pack", "your_sound_bank_here.xsb")); + File.Create(Path.Combine(music_path, "Music_Packs", "Blank_Music_Pack", "your_wave_bank_here.xwb")); + } + + + if (!Directory.Exists(Path.Combine(music_path, "Music_Packs","Blank_Music_Pack","Music_Files", "Seasons"))) + { + Log.Info("Creating Music Directory"); + Directory.CreateDirectory(Path.Combine(music_path, "Music_Packs", "Blank_Music_Pack","Music_Files", "Seasons")); //create the Music_Packs directory. Because organization is nice. + } + if (!Directory.Exists(Path.Combine(music_path, "Music_Packs", "Blank_Music_Pack","Music_Files", "Locations"))) + { + Log.Info("Creating Music Directory"); + Directory.CreateDirectory(Path.Combine(music_path, "Music_Packs", "Blank_Music_Pack","Music_Files", "Locations")); //create the Music_Packs directory. Because organization is nice. + } + */ + + music_path = Path.Combine(music_path, "Music_Packs"); + master_path = music_path; + old_sound_bank = Game1.soundBank; + + oldwave = Game1.waveBank; + + } //works + + /* + public static void Setup_Creator(string this_path) + { + + //write all of my info to a text file. + + string[] mystring3 = new string[10];//seems legit. + if (!File.Exists(this_path)) + { + Console.WriteLine("Creating the Config file"); + + mystring3[0] = "Config file. This file holds the wavebank info and soundbank info for your music pack."; + mystring3[1] = "========================================================================================"; + mystring3[2] = "Name of Wave Bank: This is the name of the Wave Bank where the songs are stored. EX) Wave Bank2.xwb"; + mystring3[3] = "your_wave_bank_here"; + mystring3[4] = "Name of Sound Bank: This is the name of the Wave Bank where the songs are stored. EX) Sound Bank2.xsb"; + mystring3[5] = "your_sound_bank_here"; + + + + File.WriteAllLines(this_path, mystring3); + + } + + else + { + + return; + } + } //works but not used + public static void Reference_Creator(string this_path) + { + + //Create the reference file incase it doesn't exist. + + string[] mystring3 = new string[10];//seems legit. + if (!File.Exists(this_path)) + { + Console.WriteLine("Creating the Config file"); + + mystring3[0] = "Reference Sheet: This holds the names of all of the songs in your music pack"; + mystring3[1] = "========================================================================================"; + + + + File.WriteAllLines(this_path, mystring3); + + } + + else + { + + return; + } + } //works but not used + */ + + public static void Info_Loader(string root_dir, string config_path) //reads in cue names from a text file and adds them to a specific list. Morphs with specific conditional name. + { + + if (!File.Exists(config_path)) //check to make sure the file actually exists. It should. + { + Log.Error("This music pack lacks a Config.txt. Without one, I can't load in the music."); + //Setup_Creator(config_path); + } + + else + { + // Load in all of the text files from the Music Packs + string[] readtext = File.ReadAllLines(config_path); + string wave = Convert.ToString(readtext[3]); + string sound = Convert.ToString(readtext[5]); + Info_Class lol = new Info_Class(wave,sound, root_dir); + lol.Music_Loader_Seasons("spring", song_wave_reference); //load all of the info files here. This is some deep magic I worked at 4 AM. I almost forgot how the heck this worked when I woke up. + lol.Music_Loader_Seasons("summer", song_wave_reference); //load all of the info files here. This is some deep magic I worked at 4 AM. I almost forgot how the heck this worked when I woke up. + lol.Music_Loader_Seasons("fall", song_wave_reference); //load all of the info files here. This is some deep magic I worked at 4 AM. I almost forgot how the heck this worked when I woke up. + lol.Music_Loader_Seasons("winter", song_wave_reference); //load all of the info files here. This is some deep magic I worked at 4 AM. I almost forgot how the heck this worked when I woke up. + lol.Music_Loader_Seasons("spring_night", song_wave_reference); //load all of the info files here. This is some deep magic I worked at 4 AM. I almost forgot how the heck this worked when I woke up. + lol.Music_Loader_Seasons("summer_night", song_wave_reference); //load all of the info files here. This is some deep magic I worked at 4 AM. I almost forgot how the heck this worked when I woke up. + lol.Music_Loader_Seasons("fall_night", song_wave_reference); //load all of the info files here. This is some deep magic I worked at 4 AM. I almost forgot how the heck this worked when I woke up. + lol.Music_Loader_Seasons("winter_night", song_wave_reference); //load all of the info files here. This is some deep magic I worked at 4 AM. I almost forgot how the heck this worked when I woke up. + lol.Music_Loader_Seasons("spring_rain", song_wave_reference); //load all of the info files here. This is some deep magic I worked at 4 AM. I almost forgot how the heck this worked when I woke up. + lol.Music_Loader_Seasons("summer_rain", song_wave_reference); //load all of the info files here. This is some deep magic I worked at 4 AM. I almost forgot how the heck this worked when I woke up. + lol.Music_Loader_Seasons("fall_rain", song_wave_reference); //load all of the info files here. This is some deep magic I worked at 4 AM. I almost forgot how the heck this worked when I woke up. + lol.Music_Loader_Seasons("winter_snow", song_wave_reference); //load all of the info files here. This is some deep magic I worked at 4 AM. I almost forgot how the heck this worked when I woke up. + lol.Music_Loader_Seasons("spring_rain_night", song_wave_reference); //load all of the info files here. This is some deep magic I worked at 4 AM. I almost forgot how the heck this worked when I woke up. + lol.Music_Loader_Seasons("summer_rain_night", song_wave_reference); //load all of the info files here. This is some deep magic I worked at 4 AM. I almost forgot how the heck this worked when I woke up. + lol.Music_Loader_Seasons("fall_rain_night", song_wave_reference); //load all of the info files here. This is some deep magic I worked at 4 AM. I almost forgot how the heck this worked when I woke up. + lol.Music_Loader_Seasons("winter_snow_night", song_wave_reference); //load all of the info files here. This is some deep magic I worked at 4 AM. I almost forgot how the heck this worked when I woke up. + foreach (var loc in location_list) + { + lol.Music_Loader_Locations(loc.name, song_wave_reference); //name of location, and the song_wave_reference list + lol.Music_Loader_Locations_Night(loc.name+"_night", song_wave_reference); //name of location, and the song_wave_reference list + lol.Music_Loader_Locations_Rain(loc.name+"_rain", song_wave_reference); //name of location, and the song_wave_reference list + lol.Music_Loader_Locations_Rain_Night(loc.name+"_rain_night", song_wave_reference); //name of location, and the song_wave_reference list + } + if (lol != null) + { + master_list.Add(lol); //add everything to my master list of songs! + } + } + } + + public static void ProcessDirectory(string targetDirectory) + { + // System.Threading.Thread.Sleep(1); + // Process the list of files found in the directory. + fileEntries = Directory.GetFiles(targetDirectory); + + if (File.Exists(Path.Combine(targetDirectory, "Config.txt"))){ + string temp = Path.Combine(targetDirectory, "Config.txt"); + //Log.Success("YAY"); + music_packs.Add(targetDirectory, temp); + + } + //do checking for spring, summer, night, etc. + + // Recurse into subdirectories of this directory. + subdirectoryEntries = Directory.GetDirectories(targetDirectory); + foreach (string subdirectory in subdirectoryEntries) + { + + ProcessDirectory(subdirectory); + } + } + + public static void process_music_packs() + { + foreach(var hello in music_packs) + { + Info_Loader(hello.Key, hello.Value); + // Log.Info("HORRAY"); + } + + + } + public void Location_Grabber() + { + //grab each location in SDV so that the mod will update itself accordingly incase new areas are added + foreach (var loc in StardewValley.Game1.locations) + { + Log.Info(loc.name); + location_list.Add(loc); + + } + } + public static void music_selector() + { + if (game_loaded == false) + { + return; + } + // no_music = false; + //if at any time the music for an area can't be played for some unknown reason, the game should default to playing the Stardew Valley Soundtrack. + bool night_time=false; + bool rainy = Game1.isRaining; + + if (StardewValley.Game1.isFestival() == true) + { + return; //replace with festival music if I decide to support it. + } + if (StardewValley.Game1.eventUp == true) + { + return; //replace with event music if I decide to support it/people request it. + } + + + if (Game1.timeOfDay < 600 || Game1.timeOfDay > Game1.getModeratelyDarkTime()) + { + night_time = true; + } + else + { + night_time = false; + } + + if (rainy == true && night_time == true) + { + music_player_rain_night(); //some really awful heirarchy type thing I made up to help ensure that music plays all the time + if (no_music==true) + { + music_player_rain(); + if (no_music==true) + { + music_player_night(); + if (no_music == true) + { + music_player_location(); + + } + } + } + + } + if (rainy == true && night_time == false) + { + music_player_rain(); + if (no_music == true) + { + music_player_night(); + if (no_music == true) + { + music_player_location(); + + } + } + + } + if (rainy == false && night_time == true) + { + music_player_night(); + if (no_music == true) + { + music_player_location(); + + } + + } + if (rainy == false && night_time == false) + { + music_player_location(); + } + + if (no_music==false) //if there is valid music playing + { + // Log.Info("RETURN"); + return; + } + else + { + if (seasonal_music == false) + { + return; + } + + if (cueball != null) + { + if (cueball.IsPlaying == true) + { + return; + } + } + + Log.Info("Loading Default Seasonal Music"); + + if (master_list.Count == 0) + { + Log.Error("The Wave Bank list is empty. Something went wrong, or you don't have any music packs installed, or you didn't have any songs in the list files."); + reset(); + return; + + } + + //add in seasonal stuff here + if (Game1.IsSpring == true && no_music==true) + { + if (rainy==true) + { + spring_rain_songs(); + } + else + { + spring_songs(); + } + } + if (Game1.IsSummer == true && no_music == true) + { + if (rainy == true) + { + summer_rain_songs(); + } + else + { + summer_songs(); + } + } + if (Game1.IsFall == true && no_music == true) + { + if (rainy == true) + { + fall_rain_songs(); + } + else + { + fall_songs(); + } + } + if (Game1.IsWinter == true && no_music == true) + { + if (Game1.isSnowing==true) + { + winter_snow_songs(); + } + else + { + winter_songs(); + } + } + + } + + + //end of function. Natural return; + return; + } + public static void music_player_location() + { + if (game_loaded == false) + { + SetTimer(); + return; + } + random.Next(); + int randomNumber = random.Next(0, master_list.Count); //random number between 0 and n. 0 not included + + if (master_list.Count == 0) + { + Log.Error("The Wave Bank list is empty. Something went wrong, or you don't have any music packs installed, or you didn't have any songs in the list files."); + reset(); + return; + + } + + current_info_class = master_list.ElementAt(randomNumber); //grab a random wave bank/song bank/music pack/ from all available music packs. + if (Game1.player.currentLocation != null) + { + int helper1 = 0; + int master_helper = 0; + bool found = false; + + int chedar = 0; + //this mess of a while loop iterates across all of my music packs looking for a valid music pack to play music from. + while (true) + { + if (current_info_class.locational_songs.Keys.Contains(Game1.player.currentLocation.name)) + { + + foreach (var happy in current_info_class.locational_songs) + { + if (happy.Key == Game1.player.currentLocation.name) + { + if (happy.Value.Count > 0) + { + //Log.Info("FOUND THE RIGHT POSITIONING OF THE CLASS"); + found = true; + break; + } + else + { + //this section tells me if it is valid and is less than or equal to 0 + //Log.Info("Count is less than for this class zero. Switching music packs"); + found = false; + master_helper++; //iterate across the classes + break; + } + + } + else + {//this section iterates through the keys + Log.Info("Not there"); + found = false; + helper1++; + continue; + } + + } //itterate through all of the valid locations that were stored in this class + + } + else + { + Log.Info("No data could be loaded on this area. Swaping music packs"); + found = false; + } + if (found == false) //if I didnt find the music. + { + master_helper++; + + if (master_helper > master_list.Count) + { + Log.Info("I've gone though every music pack with no success. There is no music to load for this area so it will be silent once this song finishes playing. Sorry!"); + no_music = true; + return; + + } + chedar = (master_helper + randomNumber) % master_list.Count; //circular arrays FTW + + current_info_class = master_list.ElementAt(chedar); //grab a random wave bank/song bank/music pack/ from all available music packs. + continue; + } + else + { + break; + } + + } + temp_cue = current_info_class.locational_songs.Values.ElementAt(helper1); //set a list of songs to a "random" list of songs from a music pack + int pointer = 0; + int motzy = 0; //why do I name my variables pointless names? + while (temp_cue.Count == 0) //yet another circular array + { + pointer++; + motzy = (pointer + randomNumber) % master_list.Count; + + current_info_class = master_list.ElementAt(motzy); + if (pointer > master_list.Count) + { + Log.Info("No music packs have any valid music for this area. AKA all music packs are empty;"); + no_music = true; + return; + } + + } + + Log.Success("loading music for this area"); + if (temp_cue == null) + { + Log.Info("temp cue list is null????"); + return; + } + stop_sound(); + int random3 = random.Next(0, temp_cue.Count); + Game1.soundBank = current_info_class.new_sound_bank; //change the game's soundbank temporarily + Game1.waveBank = current_info_class.newwave;//dito but wave bank + + cueball = temp_cue.ElementAt(random3); //grab a random song from the winter song list + cueball = Game1.soundBank.GetCue(cueball.Name); + if (cueball != null) + { + Log.Info("Now listening to: " + cueball.Name + " from the music pack located at: " + current_info_class.path_loc + "for the location " + Game1.player.currentLocation); + no_music = false; + cueball.Play(); //play some music + reset(); + return; + } + } + else + { + Log.Info("Location is null"); + no_music = true; + } + }//end music player + public static void music_player_rain() + { + if (game_loaded == false) + { + SetTimer(); + return; + } + random.Next(); + int randomNumber = random.Next(0, master_list.Count); //random number between 0 and n. 0 not included + + if (master_list.Count == 0) + { + Log.Error("The Wave Bank list is empty. Something went wrong, or you don't have any music packs installed, or you didn't have any songs in the list files."); + reset(); + return; + + } + + current_info_class = master_list.ElementAt(randomNumber); //grab a random wave bank/song bank/music pack/ from all available music packs. + + if (Game1.player.currentLocation != null) + { + int helper1 = 0; + int master_helper = 0; + bool found = false; + + int chedar = 0; + + while (true) + { + if (current_info_class.locational_rain_songs.Keys.Contains(Game1.player.currentLocation.name+"_rain")) + { + + foreach (var happy in current_info_class.locational_rain_songs) + { + if (happy.Key == Game1.player.currentLocation.name+"_rain") + { + if (happy.Value.Count > 0) + { + //Log.Info("FOUND THE RIGHT POSITIONING OF THE CLASS"); + found = true; + break; + } + else + { + //this section tells me if it is valid and is less than or equal to 0 + //Log.Info("Count is less than for this class zero. Switching music packs"); + found = false; + master_helper++; //iterate across the classes + break; + } + + } + else + {//this section iterates through the keys + Log.Info("Not there"); + found = false; + helper1++; + continue; + } + + } //itterate through all of the svalid locations that were stored in this class + + } + else + { + Log.Info("No data could be loaded on this area. Swaping music packs"); + found = false; + } + if (found == false) //if I didnt find the music. + { + master_helper++; + + if (master_helper > master_list.Count) + { + Log.Info("I've gone though every music pack with no success. There is no music to load for this area so it will be silent once this song finishes playing. Sorry!"); + no_music = true; + return; + + } + chedar = (master_helper + randomNumber) % master_list.Count; //circular arrays FTW + + current_info_class = master_list.ElementAt(chedar); //grab a random wave bank/song bank/music pack/ from all available music packs. + continue; + } + else + { + break; + } + } + temp_cue = current_info_class.locational_rain_songs.Values.ElementAt(helper1); + + + int pointer = 0; + int motzy = 0; + while (temp_cue.Count == 0) + { + pointer++; + motzy = (pointer + randomNumber) % master_list.Count; + + current_info_class = master_list.ElementAt(motzy); + if (pointer > master_list.Count) + { + Log.Info("No music packs have any valid music for this area. AKA all music packs are empty;"); + no_music = true; + return; + } + + } + + + + Log.Success("loading music for this area"); + if (temp_cue == null) + { + Log.Info("temp cue list is null????"); + return; + } + stop_sound(); + int random3 = random.Next(0, temp_cue.Count); + Game1.soundBank = current_info_class.new_sound_bank; + Game1.waveBank = current_info_class.newwave; + + cueball = temp_cue.ElementAt(random3); //grab a random song from the winter song list + cueball = Game1.soundBank.GetCue(cueball.Name); + if (cueball != null) + { + no_music = false; + Log.Info("Now listening to: " + cueball.Name + " from the music pack located at: " + current_info_class.path_loc + "for the location " + Game1.player.currentLocation + " while it is raining"); + cueball.Play(); + reset(); + return; + } + + + + } + else + { + Log.Info("Location is null"); + } + }//end music player + public static void music_player_night() + { + if (game_loaded == false) + { + SetTimer(); + return; + } + random.Next(); + int randomNumber = random.Next(0, master_list.Count); //random number between 0 and n. 0 not included + + if (master_list.Count == 0) + { + Log.Error("The Wave Bank list is empty. Something went wrong, or you don't have any music packs installed, or you didn't have any songs in the list files."); + reset(); + return; + + } + + current_info_class = master_list.ElementAt(randomNumber); //grab a random wave bank/song bank/music pack/ from all available music packs. + + if (Game1.player.currentLocation != null) + { + int helper1 = 0; + int master_helper = 0; + bool found = false; + + int chedar = 0; + + while (true) + { + if (current_info_class.locational_night_songs.Keys.Contains(Game1.player.currentLocation.name+"_night")) + { + + foreach (var happy in current_info_class.locational_night_songs) + { + if (happy.Key == Game1.player.currentLocation.name+"_night") + { + if (happy.Value.Count > 0) + { + //Log.Info("FOUND THE RIGHT POSITIONING OF THE CLASS"); + found = true; + break; + } + else + { + //this section tells me if it is valid and is less than or equal to 0 + //Log.Info("Count is less than for this class zero. Switching music packs"); + found = false; + master_helper++; //iterate across the classes + break; + } + + } + else + {//this section iterates through the keys + Log.Info("Not there"); + found = false; + helper1++; + continue; + } + + } //itterate through all of the svalid locations that were stored in this class + + } + else + { + Log.Info("No data could be loaded on this area. Swaping music packs"); + found = false; + } + if (found == false) //if I didnt find the music. + { + master_helper++; + + if (master_helper > master_list.Count) + { + Log.Info("I've gone though every music pack with no success. There is no music to load for this area so it will be silent once this song finishes playing. Sorry!"); + no_music = true; + return; + + } + chedar = (master_helper + randomNumber) % master_list.Count; //circular arrays FTW + + current_info_class = master_list.ElementAt(chedar); //grab a random wave bank/song bank/music pack/ from all available music packs. + continue; + } + else + { + break; + } + } + temp_cue = current_info_class.locational_night_songs.Values.ElementAt(helper1); + int pointer = 0; + int motzy = 0; + while (temp_cue.Count == 0) + { + pointer++; + motzy = (pointer + randomNumber) % master_list.Count; + + current_info_class = master_list.ElementAt(motzy); + if (pointer > master_list.Count) + { + Log.Info("No music packs have any valid music for this area. AKA all music packs are empty;"); + no_music = true; + return; + } + + } + + + Log.Success("loading music for this area"); + if (temp_cue == null) + { + Log.Info("temp cue list is null????"); + return; + } + stop_sound(); + int random3 = random.Next(0, temp_cue.Count); + Game1.soundBank = current_info_class.new_sound_bank; + Game1.waveBank = current_info_class.newwave; + + cueball = temp_cue.ElementAt(random3); //grab a random song from the winter song list + cueball = Game1.soundBank.GetCue(cueball.Name); + if (cueball != null) + { + no_music = false; + Log.Info("Now listening to: " + cueball.Name + " from the music pack located at: " + current_info_class.path_loc + "for the location " + Game1.player.currentLocation + " while it is night time."); + cueball.Play(); + reset(); + return; + } + + + + } + else + { + Log.Info("Location is null"); + } + }//end music player + public static void music_player_rain_night() + { + if (game_loaded == false) + { + SetTimer(); + return; + } + random.Next(); + int randomNumber = random.Next(0, master_list.Count); //random number between 0 and n. 0 not included + + if (master_list.Count == 0) + { + Log.Error("The Wave Bank list is empty. Something went wrong, or you don't have any music packs installed, or you didn't have any songs in the list files."); + reset(); + return; + + } + + current_info_class = master_list.ElementAt(randomNumber); //grab a random wave bank/song bank/music pack/ from all available music packs. + + if (Game1.player.currentLocation != null) + { + + int helper1 = 0; + int master_helper = 0; + bool found = false; + + int chedar = 0; //this is why I shouldn't program before a date. I name my variables after really random crap. + + while (true) + { + if (current_info_class.locational_rain_night_songs.Keys.Contains(Game1.player.currentLocation.name+"_rain_night")) + { + + foreach (var happy in current_info_class.locational_rain_night_songs) + { + if (happy.Key == Game1.player.currentLocation.name+"_rain_night") + { + if (happy.Value.Count > 0) + { + //Log.Info("FOUND THE RIGHT POSITIONING OF THE CLASS"); + found = true; + break; + } + else + { + //this section tells me if it is valid and is less than or equal to 0 + //Log.Info("Count is less than for this class zero. Switching music packs"); + found = false; + master_helper++; //iterate across the classes + break; + } + + } + else + {//this section iterates through the keys + Log.Info("Not there"); + found = false; + helper1++; + continue; + } + + } //itterate through all of the svalid locations that were stored in this class + + } + else + { + Log.Info("No data could be loaded on this area. Swaping music packs"); + found = false; + } + if (found == false) //if I didnt find the music. + { + master_helper++; + + if (master_helper > master_list.Count) + { + Log.Info("I've gone though every music pack with no success. There is no music to load for this area so it will be silent once this song finishes playing. Sorry!"); + no_music = true; + return; + + } + chedar = (master_helper + randomNumber) % master_list.Count; //circular arrays FTW + + current_info_class = master_list.ElementAt(chedar); //grab a random wave bank/song bank/music pack/ from all available music packs. + continue; + } + else + { + break; + } + } + temp_cue = current_info_class.locational_rain_night_songs.Values.ElementAt(helper1); + + int pointer = 0; + int motzy = 0; + while (temp_cue.Count == 0) + { + pointer++; + motzy = (pointer + randomNumber) % master_list.Count; + + current_info_class = master_list.ElementAt(motzy); + if (pointer > master_list.Count) + { + Log.Info("No music packs have any valid music for this area. AKA all music packs are empty;"); + no_music = true; + return; + } + + } + Log.Success("loading music for this area"); + if (temp_cue == null) + { + Log.Info("temp cue list is null????"); + return; + } + stop_sound(); + int random3 = random.Next(0, temp_cue.Count); + Game1.soundBank = current_info_class.new_sound_bank; + Game1.waveBank = current_info_class.newwave; + + cueball = temp_cue.ElementAt(random3); //grab a random song from the winter song list + cueball = Game1.soundBank.GetCue(cueball.Name); + if (cueball != null) + { + no_music = false; + Log.Info("Now listening to: " + cueball.Name + " from the music pack located at: " + current_info_class.path_loc + "for the location " + Game1.player.currentLocation + " while it is raining at night."); + cueball.Play(); + reset(); + return; + } + + + + } + else + { + Log.Info("Location is null"); + } + }//end music player + public static void spring_songs() + { + + if (game_loaded == false) + { + SetTimer(); + return; + } + random.Next(); + int randomNumber = random.Next(0, master_list.Count); //random number between 0 and n. 0 not included + + if (master_list.Count == 0) + { + Log.Error("The Wave Bank list is empty. Something went wrong, or you don't have any music packs installed, or you didn't have any songs in the list files."); + reset(); + return; + + } + + current_info_class = master_list.ElementAt(randomNumber); //grab a random wave bank/song bank/music pack/ from all available music packs. + + + if (Game1.timeOfDay < 600 || Game1.timeOfDay >= Game1.getModeratelyDarkTime()) //expanded upon, just incase my night owl mod is installed. + { + randomNumber = random.Next(0,current_info_class.num_of_spring_night_songs); //random number between 0 and n. 0 not includes + + if (current_info_class.spring_night_song_list.Count == 0) //nightly spring songs + { + Log.Error("The spring night song list is empty. Trying to look for more songs."); //or should I default where if there aren't any nightly songs to play a song from a different play list? + int master_helper = 0; + int chedar = 0; + while (master_helper != master_list.Count) + { + if (current_info_class.spring_night_song_list.Count > 0) + { + stop_sound(); + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = current_info_class.spring_night_song_list.ElementAt(randomNumber); //grab a random song from the spring song list + cueball = Game1.soundBank.GetCue(cueball.Name); + break; + + } //itterate through all of the svalid locations that were stored in this class + else + { + master_helper++; + } + if (master_helper > master_list.Count) + { + Log.Info("I've gone though every music pack with no success for default music. There is no music to load for this area so it will be silent once this song finishes playing. Sorry!"); + no_music = true; + + return; + + //break; + } + chedar = (master_helper + randomNumber) % master_list.Count; //circular arrays FTW + + current_info_class = master_list.ElementAt(chedar); //grab a random wave bank/song bank/music pack/ from all available music packs. + continue; + } + } + + + else + { + stop_sound(); + cueball = current_info_class.fall_song_list.ElementAt(randomNumber); //grab a random song from the fall song list + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = Game1.soundBank.GetCue(cueball.Name); + } + if (cueball != null) + { + no_music = false; + Log.Info("Now listening to: " + cueball.Name + " from the music pack located at: " + current_info_class.path_loc + " while it is spring and night time. Check the seasons folder for more info"); + cueball.Play(); + Class1.reset(); + return; + } //if cueballs is null, aka the song list either wasn't initialized, or it is empty, default to playing the normal songs. + + + } + //not nightly spring songs. AKA default songs + + randomNumber = random.Next(0,current_info_class.num_of_spring_songs); //random number between 0 and n. 0 not includes + if (current_info_class.spring_song_list.Count == 0) + { + Log.Error("The spring night song list is empty. Trying to look for more songs."); //or should I default where if there aren't any nightly songs to play a song from a different play list? + int master_helper = 0; + int chedar = 0; + while (master_helper != master_list.Count) + { + if (current_info_class.spring_night_song_list.Count > 0) + { + stop_sound(); + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = current_info_class.spring_song_list.ElementAt(randomNumber); //grab a random song from the spring song list + cueball = Game1.soundBank.GetCue(cueball.Name); + break; + + } //itterate through all of the svalid locations that were stored in this class + else + { + master_helper++; + } + if (master_helper > master_list.Count) + { + Log.Info("I've gone though every music pack with no success for default music. There is no music to load for this area so it will be silent once this song finishes playing. Sorry!"); + no_music = true; + return; + // cueball = null; + } + chedar = (master_helper + randomNumber) % master_list.Count; //circular arrays FTW + + current_info_class = master_list.ElementAt(chedar); //grab a random wave bank/song bank/music pack/ from all available music packs. + continue; + } + } + else + { + stop_sound(); + cueball = current_info_class.fall_song_list.ElementAt(randomNumber); //grab a random song from the fall song list + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = Game1.soundBank.GetCue(cueball.Name); + } + if (cueball == null) return; + no_music = false; + Log.Info("Now listening to: " + cueball.Name + " from the music pack located at: " + current_info_class.path_loc + "while it is Spring Time. Check the seasons folder for more info"); + cueball.Play(); + Class1.reset(); + return; + + } //plays the songs associated with spring time + public static void spring_rain_songs() + { + + if (game_loaded == false) + { + SetTimer(); + return; + } + random.Next(); + int randomNumber = random.Next(0, master_list.Count); //random number between 0 and n. 0 not included + + if (master_list.Count == 0) + { + Log.Error("The Wave Bank list is empty. Something went wrong, or you don't have any music packs installed, or you didn't have any songs in the list files."); + reset(); + return; + + } + + current_info_class = master_list.ElementAt(randomNumber); //grab a random wave bank/song bank/music pack/ from all available music packs. + + + if (Game1.timeOfDay < 600 || Game1.timeOfDay >= Game1.getModeratelyDarkTime()) //expanded upon, just incase my night owl mod is installed. + { + randomNumber = random.Next(0, current_info_class.num_of_spring_rain_night_songs); //random number between 0 and n. 0 not includes + + if (current_info_class.spring_rain_night_song_list.Count == 0) //nightly spring_rain songs + { + Log.Error("The spring_rain night song list is empty. Trying to look for more songs."); //or should I default where if there aren't any nightly songs to play a song from a different play list? + int master_helper = 0; + int chedar = 0; + while (master_helper != master_list.Count) + { + if (current_info_class.spring_rain_night_song_list.Count > 0) + { + stop_sound(); + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = current_info_class.spring_rain_night_song_list.ElementAt(randomNumber); //grab a random song from the spring_rain song list + cueball = Game1.soundBank.GetCue(cueball.Name); + break; + + } //itterate through all of the svalid locations that were stored in this class + else + { + master_helper++; + } + if (master_helper > master_list.Count) + { + Log.Info("I've gone though every music pack with no success for default music. There is no music to load for this area so it will be silent once this song finishes playing. Sorry!"); + no_music = true; + return; + } + chedar = (master_helper + randomNumber) % master_list.Count; //circular arrays FTW + + current_info_class = master_list.ElementAt(chedar); //grab a random wave bank/song bank/music pack/ from all available music packs. + continue; + } + } + else + { + stop_sound(); + cueball = current_info_class.fall_song_list.ElementAt(randomNumber); //grab a random song from the fall song list + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = Game1.soundBank.GetCue(cueball.Name); + } + + + if (cueball != null) + { + no_music = false; + Log.Info("Now listening to: " + cueball.Name + " from the music pack located at: " + current_info_class.path_loc + "while it is a rainy Spring night. Check the Seasons folder for more info"); + cueball.Play(); + Class1.reset(); + return; + } //if cueballs is null, aka the song list either wasn't initialized, or it is empty, default to playing the normal songs. + + + } + //not nightly spring_rain songs. AKA default songs + + randomNumber = random.Next(0, current_info_class.num_of_spring_rain_songs); //random number between 0 and n. 0 not includes + if (current_info_class.spring_rain_song_list.Count == 0) + { + Log.Error("The spring_rain night song list is empty. Trying to look for more songs."); //or should I default where if there aren't any nightly songs to play a song from a different play list? + int master_helper = 0; + int chedar = 0; + while (master_helper != master_list.Count) + { + if (current_info_class.spring_rain_song_list.Count > 0) + { + stop_sound(); + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = current_info_class.spring_rain_song_list.ElementAt(randomNumber); //grab a random song from the spring_rain song list + cueball = Game1.soundBank.GetCue(cueball.Name); + break; + + } //itterate through all of the svalid locations that were stored in this class + else + { + master_helper++; + } + if (master_helper > master_list.Count) + { + Log.Info("I've gone though every music pack with no success for default music. There is no music to load for this area so it will be silent once this song finishes playing. Sorry!"); + no_music = true; + return; + // cueball = null; + } + chedar = (master_helper + randomNumber) % master_list.Count; //circular arrays FTW + + current_info_class = master_list.ElementAt(chedar); //grab a random wave bank/song bank/music pack/ from all available music packs. + continue; + } + } + else + { + stop_sound(); + cueball = current_info_class.fall_song_list.ElementAt(randomNumber); //grab a random song from the fall song list + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = Game1.soundBank.GetCue(cueball.Name); + } + if (cueball == null) return; + no_music = false; + Log.Info("Now listening to: " + cueball.Name + " from the music pack located at: " + current_info_class.path_loc + "while it is a rainy Spring Day. Check the seasons folder for more info"); + cueball.Play(); + Class1.reset(); + return; + + } //plays the songs associated with spring time + public static void summer_songs() + { + + if (game_loaded == false) + { + SetTimer(); + return; + } + random.Next(); + int randomNumber = random.Next(0, master_list.Count); //random number between 0 and n. 0 not included + + if (master_list.Count == 0) + { + Log.Error("The Wave Bank list is empty. Something went wrong, or you don't have any music packs installed, or you didn't have any songs in the list files."); + reset(); + return; + + } + + current_info_class = master_list.ElementAt(randomNumber); //grab a random wave bank/song bank/music pack/ from all available music packs. + + + if (Game1.timeOfDay < 600 || Game1.timeOfDay >= Game1.getModeratelyDarkTime()) //expanded upon, just incase my night owl mod is installed. + { + randomNumber = random.Next(0, current_info_class.num_of_summer_night_songs); //random number between 0 and n. 0 not includes + + if (current_info_class.summer_night_song_list.Count == 0) //nightly summer songs + { + Log.Error("The summer night song list is empty. Trying to look for more songs."); //or should I default where if there aren't any nightly songs to play a song from a different play list? + int master_helper = 0; + int chedar = 0; + while (master_helper != master_list.Count) + { + if (current_info_class.summer_night_song_list.Count > 0) + { + stop_sound(); + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = current_info_class.summer_night_song_list.ElementAt(randomNumber); //grab a random song from the summer song list + cueball = Game1.soundBank.GetCue(cueball.Name); + break; + + } //itterate through all of the svalid locations that were stored in this class + else + { + master_helper++; + } + if (master_helper > master_list.Count) + { + Log.Info("I've gone though every music pack with no success for default music. There is no music to load for this area so it will be silent once this song finishes playing. Sorry!"); + no_music = true; + return; + } + chedar = (master_helper + randomNumber) % master_list.Count; //circular arrays FTW + + current_info_class = master_list.ElementAt(chedar); //grab a random wave bank/song bank/music pack/ from all available music packs. + continue; + } + } + else + { + stop_sound(); + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = current_info_class.summer_night_song_list.ElementAt(randomNumber); //grab a random song from the summer song list + cueball = Game1.soundBank.GetCue(cueball.Name); + + } + + + + if (cueball != null) + { + Log.Info("Now listening to: " + cueball.Name + " from the music pack located at: " + current_info_class.path_loc + " while it is a Summer Night. Check the Seasons folder for more info."); + no_music = false; + cueball.Play(); + Class1.reset(); + return; + } //if cueballs is null, aka the song list either wasn't initialized, or it is empty, default to playing the normal songs. + + + } + //not nightly summer songs. AKA default songs + + randomNumber = random.Next(0, current_info_class.num_of_summer_songs); //random number between 0 and n. 0 not includes + if (current_info_class.summer_song_list.Count == 0) + { + Log.Error("The summer night song list is empty. Trying to look for more songs."); //or should I default where if there aren't any nightly songs to play a song from a different play list? + int master_helper = 0; + int chedar = 0; + while (master_helper != master_list.Count) + { + if (current_info_class.summer_night_song_list.Count > 0) + { + stop_sound(); + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = current_info_class.summer_song_list.ElementAt(randomNumber); //grab a random song from the summer song list + cueball = Game1.soundBank.GetCue(cueball.Name); + break; + + } //itterate through all of the svalid locations that were stored in this class + else + { + master_helper++; + } + if (master_helper > master_list.Count) + { + Log.Info("I've gone though every music pack with no success for default music. There is no music to load for this area so it will be silent once this song finishes playing. Sorry!"); + no_music = true; + return; + // cueball = null; + } + chedar = (master_helper + randomNumber) % master_list.Count; //circular arrays FTW + + current_info_class = master_list.ElementAt(chedar); //grab a random wave bank/song bank/music pack/ from all available music packs. + continue; + } + } + if (cueball == null) return; + stop_sound(); + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = current_info_class.summer_song_list.ElementAt(randomNumber); //grab a random song from the summer song list + cueball = Game1.soundBank.GetCue(cueball.Name); + Log.Info("Now listening to: " + cueball.Name + " from the music pack located at: " + current_info_class.path_loc + " while it is a Summer day. Check the Seasons folder for more info."); + no_music = false; + cueball.Play(); + Class1.reset(); + return; + + } //plays the songs associated with summer time + public static void summer_rain_songs() + { + + if (game_loaded == false) + { + SetTimer(); + return; + } + random.Next(); + int randomNumber = random.Next(0, master_list.Count); //random number between 0 and n. 0 not included + + if (master_list.Count == 0) + { + Log.Error("The Wave Bank list is empty. Something went wrong, or you don't have any music packs installed, or you didn't have any songs in the list files."); + reset(); + return; + + } + + current_info_class = master_list.ElementAt(randomNumber); //grab a random wave bank/song bank/music pack/ from all available music packs. + + + if (Game1.timeOfDay < 600 || Game1.timeOfDay >= Game1.getModeratelyDarkTime()) //expanded upon, just incase my night owl mod is installed. + { + randomNumber = random.Next(0, current_info_class.num_of_summer_rain_night_songs); //random number between 0 and n. 0 not includes + + if (current_info_class.summer_rain_night_song_list.Count == 0) //nightly summer_rain songs + { + Log.Error("The summer_rain night song list is empty. Trying to look for more songs."); //or should I default where if there aren't any nightly songs to play a song from a different play list? + int master_helper = 0; + int chedar = 0; + while (master_helper != master_list.Count) + { + if (current_info_class.summer_rain_night_song_list.Count > 0) + { + stop_sound(); + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = current_info_class.summer_rain_night_song_list.ElementAt(randomNumber); //grab a random song from the summer_rain song list + cueball = Game1.soundBank.GetCue(cueball.Name); + break; + + } //itterate through all of the svalid locations that were stored in this class + else + { + master_helper++; + } + if (master_helper > master_list.Count) + { + Log.Info("I've gone though every music pack with no success for default music. There is no music to load for this area so it will be silent once this song finishes playing. Sorry!"); + no_music = true; + return; + } + chedar = (master_helper + randomNumber) % master_list.Count; //circular arrays FTW + + current_info_class = master_list.ElementAt(chedar); //grab a random wave bank/song bank/music pack/ from all available music packs. + continue; + } + } + + else + { + stop_sound(); + cueball = current_info_class.fall_song_list.ElementAt(randomNumber); //grab a random song from the fall song list + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = Game1.soundBank.GetCue(cueball.Name); + } + + if (cueball != null) + { + Log.Info("Now listening to: " + cueball.Name + " from the music pack located at: " + current_info_class.path_loc + " while it is a rainy Summer Night. Check the Seasons folder for more info."); + no_music = false; + cueball.Play(); + Class1.reset(); + return; + } //if cueballs is null, aka the song list either wasn't initialized, or it is empty, default to playing the normal songs. + + + } + //not nightly summer_rain songs. AKA default songs + + randomNumber = random.Next(0, current_info_class.num_of_summer_rain_songs); //random number between 0 and n. 0 not includes + if (current_info_class.summer_rain_song_list.Count == 0) + { + Log.Error("The summer_rain night song list is empty. Trying to look for more songs."); //or should I default where if there aren't any nightly songs to play a song from a different play list? + int master_helper = 0; + int chedar = 0; + while (master_helper != master_list.Count) + { + if (current_info_class.summer_rain_song_list.Count > 0) + { + stop_sound(); + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = current_info_class.summer_rain_song_list.ElementAt(randomNumber); //grab a random song from the summer_rain song list + cueball = Game1.soundBank.GetCue(cueball.Name); + break; + + } //itterate through all of the svalid locations that were stored in this class + else + { + master_helper++; + } + if (master_helper > master_list.Count) + { + Log.Info("I've gone though every music pack with no success for default music. There is no music to load for this area so it will be silent once this song finishes playing. Sorry!"); + no_music = true; + return; + // cueball = null; + } + chedar = (master_helper + randomNumber) % master_list.Count; //circular arrays FTW + + current_info_class = master_list.ElementAt(chedar); //grab a random wave bank/song bank/music pack/ from all available music packs. + continue; + } + } + + else + { + stop_sound(); + cueball = current_info_class.fall_song_list.ElementAt(randomNumber); //grab a random song from the fall song list + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = Game1.soundBank.GetCue(cueball.Name); + } + + if (cueball == null) return; + Log.Info("Now listening to: " + cueball.Name + " from the music pack located at: " + current_info_class.path_loc + " while it is a rainy Summer day. Check the Seasons folder for more info."); + no_music = false; + cueball.Play(); + Class1.reset(); + return; + + } //plays the songs associated with summer time + public static void fall_songs() + { + + if (game_loaded == false) + { + return; + } + random.Next(); + int randomNumber = random.Next(0, master_list.Count); //random number between 0 and n. 0 not included + + if (master_list.Count == 0) + { + Log.Error("The Wave Bank list is empty. Something went wrong, or you don't have any music packs installed, or you didn't have any songs in the list files."); + // System.Threading.Thread.Sleep(3000); + reset(); + return; + + } + + current_info_class = master_list.ElementAt(randomNumber); //grab a random wave bank/song bank/music pack/ from all available music packs. + + + if (Game1.timeOfDay < 600 || Game1.timeOfDay >= Game1.getModeratelyDarkTime()) //expanded upon, just incase my night owl mod is installed. + { + randomNumber = random.Next(0, current_info_class.fall_night_song_list.Count); //random number between 0 and n. 0 not includes + + if (current_info_class.fall_night_song_list.Count == 0) //nightly fall songs + { + Log.Error("The fall night song list is empty. Trying to look for more songs."); //or should I default where if there aren't any nightly songs to play a song from a different play list? + // System.Threading.Thread.Sleep(3000); + int master_helper = 0; + int chedar = 0; + while (master_helper != master_list.Count) + { + if (current_info_class.fall_night_song_list.Count > 0) + { + stop_sound(); + cueball = current_info_class.fall_night_song_list.ElementAt(randomNumber); //grab a random song from the fall song list + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + + cueball = Game1.soundBank.GetCue(cueball.Name); + break; + + } //itterate through all of the svalid locations that were stored in this class + else + { + master_helper++; + } + if (master_helper >= master_list.Count) + { + Log.Info("I've gone though every music pack with no success for default music. There is no music to load for this area so it will be silent once this song finishes playing. Sorry!"); + // System.Threading.Thread.Sleep(3000); + no_music = true; + return; + // cueball = null; + } + chedar = (master_helper + randomNumber) % master_list.Count; //circular arrays FTW + + current_info_class = master_list.ElementAt(chedar); //grab a random wave bank/song bank/music pack/ from all available music packs. + continue; + } + } + else + { + stop_sound(); + + cueball = current_info_class.fall_night_song_list.ElementAt(randomNumber); //grab a random song from the fall song list + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = Game1.soundBank.GetCue(cueball.Name); + } + + + if (cueball != null) + { + Log.Info("Now listening to: " + cueball.Name + " from the music pack located at: " + current_info_class.path_loc + " while it is a Fall Night. Check the Seasons folder for more info."); + + //System.Threading.Thread.Sleep(30000); + no_music = false; + cueball.Play(); + reset(); + return; + } //if cueballs is null, aka the song list either wasn't initialized, or it is empty, default to playing the normal songs. + + + } + //not nightly fall songs. AKA default songs + + randomNumber = random.Next(0, current_info_class.fall_song_list.Count); //random number between 0 and n. 0 not includes + if (current_info_class.fall_song_list.Count == 0) + { + Log.Error("The fall night song list is empty. Trying to look for more songs."); //or should I default where if there aren't any nightly songs to play a song from a different play list? + // System.Threading.Thread.Sleep(3000); + int master_helper = 0; + int chedar = 0; + while (master_helper != master_list.Count) + { + if (current_info_class.fall_song_list.Count > 0) + { + stop_sound(); + cueball = current_info_class.fall_song_list.ElementAt(randomNumber); //grab a random song from the fall song list + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = Game1.soundBank.GetCue(cueball.Name); + break; + + } //itterate through all of the svalid locations that were stored in this class + else + { + master_helper++; + } + + if (master_helper >= master_list.Count) + { + Log.Info("I've gone though every music pack with no success for default music. There is no music to load for this area so it will be silent once this song finishes playing. Sorry!"); + // System.Thr1eading.Thread.Sleep(3000); + no_music = true; + return; + // cueball = null; + } + chedar = (master_helper + randomNumber) % master_list.Count; //circular arrays FTW + + current_info_class = master_list.ElementAt(chedar); //grab a random wave bank/song bank/music pack/ from all available music packs. + continue; + } + } + else + { + stop_sound(); + cueball = current_info_class.fall_song_list.ElementAt(randomNumber); //grab a random song from the fall song list + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = Game1.soundBank.GetCue(cueball.Name); + } + if (cueball != null) + { + Log.Info("Now listening to: " + cueball.Name + " from the music pack located at: " + current_info_class.path_loc + " while it is a Fall day. Check the Seasons folder for more info."); + // System.Threading.Thread.Sleep(30000); + no_music = false; + cueball.Play(); + reset(); + } + return; + + } //plays the songs associated with fall time + public static void fall_rain_songs() + { + + if (game_loaded == false) + { + SetTimer(); + return; + } + random.Next(); + int randomNumber = random.Next(0, master_list.Count); //random number between 0 and n. 0 not included + + if (master_list.Count == 0) + { + Log.Error("The Wave Bank list is empty. Something went wrong, or you don't have any music packs installed, or you didn't have any songs in the list files."); + reset(); + return; + + } + + current_info_class = master_list.ElementAt(randomNumber); //grab a random wave bank/song bank/music pack/ from all available music packs. + + + if (Game1.timeOfDay < 600 || Game1.timeOfDay >= Game1.getModeratelyDarkTime()) //expanded upon, just incase my night owl mod is installed. + { + randomNumber = random.Next(0, current_info_class.num_of_fall_rain_night_songs); //random number between 0 and n. 0 not includes + + if (current_info_class.fall_rain_night_song_list.Count == 0) //nightly fall_rain songs + { + Log.Error("The fall_rain night song list is empty. Trying to look for more songs."); //or should I default where if there aren't any nightly songs to play a song from a different play list? + int master_helper = 0; + int chedar = 0; + while (master_helper != master_list.Count) + { + if (current_info_class.fall_rain_night_song_list.Count > 0) + { + stop_sound(); + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = current_info_class.fall_rain_night_song_list.ElementAt(randomNumber); //grab a random song from the fall_rain song list + cueball = Game1.soundBank.GetCue(cueball.Name); + + break; + + } //itterate through all of the svalid locations that were stored in this class + else + { + master_helper++; + } + if (master_helper > master_list.Count) + { + Log.Info("I've gone though every music pack with no success for default music. There is no music to load for this area so it will be silent once this song finishes playing. Sorry!"); + no_music = true; + return; + } + chedar = (master_helper + randomNumber) % master_list.Count; //circular arrays FTW + + current_info_class = master_list.ElementAt(chedar); //grab a random wave bank/song bank/music pack/ from all available music packs. + continue; + } + } + else + { + stop_sound(); + cueball = current_info_class.fall_rain_night_song_list.ElementAt(randomNumber); //grab a random song from the fall song list + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = Game1.soundBank.GetCue(cueball.Name); + } + + + if (cueball != null) + { + no_music = false; + Log.Info("Now listening to: " + cueball.Name + " from the music pack located at: " + current_info_class.path_loc + " while it is a rainy Fall Night. Check the Seasons folder for more info."); + cueball.Play(); + Class1.reset(); + return; + } //if cueballs is null, aka the song list either wasn't initialized, or it is empty, default to playing the normal songs. + + + } + //not nightly fall_rain songs. AKA default songs + + randomNumber = random.Next(0, current_info_class.num_of_fall_rain_songs); //random number between 0 and n. 0 not includes + if (current_info_class.fall_rain_song_list.Count == 0) + { + Log.Error("The fall_rain night song list is empty. Trying to look for more songs."); //or should I default where if there aren't any nightly songs to play a song from a different play list? + int master_helper = 0; + int chedar = 0; + while (master_helper != master_list.Count) + { + if (current_info_class.fall_rain_song_list.Count > 0) + { + stop_sound(); + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = current_info_class.fall_rain_song_list.ElementAt(randomNumber); //grab a random song from the fall_rain song list + cueball = Game1.soundBank.GetCue(cueball.Name); + break; + + } //itterate through all of the svalid locations that were stored in this class + else + { + master_helper++; + } + if (master_helper > master_list.Count) + { + Log.Info("I've gone though every music pack with no success for default music. There is no music to load for this area so it will be silent once this song finishes playing. Sorry!"); + no_music = true; + return; + // cueball = null; + } + chedar = (master_helper + randomNumber) % master_list.Count; //circular arrays FTW + + current_info_class = master_list.ElementAt(chedar); //grab a random wave bank/song bank/music pack/ from all available music packs. + continue; + } + } + else + { + stop_sound(); + cueball = current_info_class.fall_rain_song_list.ElementAt(randomNumber); //grab a random song from the fall song list + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = Game1.soundBank.GetCue(cueball.Name); + } + + if (cueball == null) return; + Log.Info("Now listening to: " + cueball.Name + " from the music pack located at: " + current_info_class.path_loc + " while it is a rainy Fall day. Check the Seasons folder for more info."); + no_music = false; + cueball.Play(); + Class1.reset(); + return; + + } //plays the songs associated with fall time + public static void winter_songs() + { + + if (game_loaded == false) + { + SetTimer(); + return; + } + random.Next(); + int randomNumber = random.Next(0, master_list.Count); //random number between 0 and n. 0 not included + + if (master_list.Count == 0) + { + Log.Error("The Wave Bank list is empty. Something went wrong, or you don't have any music packs installed, or you didn't have any songs in the list files."); + reset(); + return; + + } + + current_info_class = master_list.ElementAt(randomNumber); //grab a random wave bank/song bank/music pack/ from all available music packs. + + + if (Game1.timeOfDay < 600 || Game1.timeOfDay >= Game1.getModeratelyDarkTime()) //expanded upon, just incase my night owl mod is installed. + { + randomNumber = random.Next(0, current_info_class.num_of_winter_night_songs); //random number between 0 and n. 0 not includes + + if (current_info_class.winter_night_song_list.Count == 0) //nightly winter songs + { + + Log.Error("The winter night song list is empty. Trying to look for more songs."); //or should I default where if there aren't any nightly songs to play a song from a different play list? + int master_helper = 0; + int chedar = 0; + while (master_helper != master_list.Count) + { + if (current_info_class.winter_night_song_list.Count > 0) + { + stop_sound(); + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = current_info_class.winter_night_song_list.ElementAt(randomNumber); //grab a random song from the winter song list + cueball = Game1.soundBank.GetCue(cueball.Name); + break; + + } //itterate through all of the svalid locations that were stored in this class + else + { + master_helper++; + } + if (master_helper > master_list.Count) + { + Log.Info("I've gone though every music pack with no success for default music. There is no music to load for this area so it will be silent once this song finishes playing. Sorry!"); + no_music = true; + return; + } + chedar = (master_helper + randomNumber) % master_list.Count; //circular arrays FTW + + current_info_class = master_list.ElementAt(chedar); //grab a random wave bank/song bank/music pack/ from all available music packs. + continue; + } + } + + else + { + stop_sound(); + cueball = current_info_class.winter_night_song_list.ElementAt(randomNumber); //grab a random song from the fall song list + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = Game1.soundBank.GetCue(cueball.Name); + } + + if (cueball != null) + { + no_music = false; + Log.Info("Now listening to: " + cueball.Name + " from the music pack located at: " + current_info_class.path_loc + " while it is a Winter Night. Check the Seasons folder for more info."); + cueball.Play(); + Class1.reset(); + return; + } //if cueballs is null, aka the song list either wasn't initialized, or it is empty, default to playing the normal songs. + + + } + //not nightly winter songs. AKA default songs + + randomNumber = random.Next(0, current_info_class.num_of_winter_songs); //random number between 0 and n. 0 not includes + if (current_info_class.winter_song_list.Count == 0) + { + Log.Error("The winter night song list is empty. Trying to look for more songs."); //or should I default where if there aren't any nightly songs to play a song from a different play list? + int master_helper = 0; + int chedar = 0; + while (master_helper != master_list.Count) + { + if (current_info_class.winter_night_song_list.Count > 0) + { + stop_sound(); + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = current_info_class.winter_song_list.ElementAt(randomNumber); //grab a random song from the winter song list + cueball = Game1.soundBank.GetCue(cueball.Name); + break; + + } //itterate through all of the svalid locations that were stored in this class + else + { + master_helper++; + } + if (master_helper > master_list.Count) + { + Log.Info("I've gone though every music pack with no success for default music. There is no music to load for this area so it will be silent once this song finishes playing. Sorry!"); + no_music = true; + return; + // cueball = null; + } + chedar = (master_helper + randomNumber) % master_list.Count; //circular arrays FTW + + current_info_class = master_list.ElementAt(chedar); //grab a random wave bank/song bank/music pack/ from all available music packs. + continue; + } + } + else + { + stop_sound(); + cueball = current_info_class.winter_song_list.ElementAt(randomNumber); //grab a random song from the fall song list + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = Game1.soundBank.GetCue(cueball.Name); + } + if (cueball == null) return; + Log.Info("Now listening to: " + cueball.Name + " from the music pack located at: " + current_info_class.path_loc + " while it is a Winter Day. Check the Seasons folder for more info."); + no_music = false; + cueball.Play(); + Class1.reset(); + return; + + } //plays the songs associated with winter time + public static void winter_snow_songs() + { + + if (game_loaded == false) + { + SetTimer(); + return; + } + random.Next(); + int randomNumber = random.Next(0, master_list.Count); //random number between 0 and n. 0 not included + + if (master_list.Count == 0) + { + Log.Error("The Wave Bank list is empty. Something went wrong, or you don't have any music packs installed, or you didn't have any songs in the list files."); + reset(); + return; + + } + + current_info_class = master_list.ElementAt(randomNumber); //grab a random wave bank/song bank/music pack/ from all available music packs. + + + if (Game1.timeOfDay < 600 || Game1.timeOfDay >= Game1.getModeratelyDarkTime()) //expanded upon, just incase my night owl mod is installed. + { + randomNumber = random.Next(0, current_info_class.num_of_winter_snow_night_songs); //random number between 0 and n. 0 not includes + + if (current_info_class.winter_snow_night_song_list.Count == 0) //nightly winter_snow songs + { + Log.Error("The winter_snow night song list is empty. Trying to look for more songs."); //or should I default where if there aren't any nightly songs to play a song from a different play list? + int master_helper = 0; + int chedar = 0; + while (master_helper != master_list.Count) + { + if (current_info_class.winter_snow_night_song_list.Count > 0) + { + stop_sound(); + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = current_info_class.winter_snow_night_song_list.ElementAt(randomNumber); //grab a random song from the winter_snow song list + cueball = Game1.soundBank.GetCue(cueball.Name); + break; + + } //itterate through all of the svalid locations that were stored in this class + else + { + master_helper++; + } + if (master_helper > master_list.Count) + { + Log.Info("I've gone though every music pack with no success for default music. There is no music to load for this area so it will be silent once this song finishes playing. Sorry!"); + no_music = true; + return; + } + chedar = (master_helper + randomNumber) % master_list.Count; //circular arrays FTW + + current_info_class = master_list.ElementAt(chedar); //grab a random wave bank/song bank/music pack/ from all available music packs. + continue; + } + } + + else + { + stop_sound(); + cueball = current_info_class.winter_snow_night_song_list.ElementAt(randomNumber); //grab a random song from the fall song list + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = Game1.soundBank.GetCue(cueball.Name); + } + + if (cueball != null) + { + no_music = false; + Log.Info("Now listening to: " + cueball.Name + " from the music pack located at: " + current_info_class.path_loc + " while it is a snowy Winter night. Check the Seasons folder for more info."); + cueball.Play(); + Class1.reset(); + return; + } //if cueballs is null, aka the song list either wasn't initialized, or it is empty, default to playing the normal songs. + + + } + //not nightly winter_snow songs. AKA default songs + + randomNumber = random.Next(0, current_info_class.num_of_winter_snow_songs); //random number between 0 and n. 0 not includes + if (current_info_class.winter_snow_song_list.Count == 0) + { + Log.Error("The winter_snow night song list is empty. Trying to look for more songs."); //or should I default where if there aren't any nightly songs to play a song from a different play list? + int master_helper = 0; + int chedar = 0; + while (master_helper != master_list.Count) + { + if (current_info_class.winter_snow_song_list.Count > 0) + { + stop_sound(); + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = current_info_class.winter_snow_song_list.ElementAt(randomNumber); //grab a random song from the winter_snow song list + cueball = Game1.soundBank.GetCue(cueball.Name); + break; + + } //itterate through all of the svalid locations that were stored in this class + else + { + master_helper++; + } + if (master_helper > master_list.Count) + { + Log.Info("I've gone though every music pack with no success for default music. There is no music to load for this area so it will be silent once this song finishes playing. Sorry!"); + no_music = true; + return; + // cueball = null; + } + chedar = (master_helper + randomNumber) % master_list.Count; //circular arrays FTW + + current_info_class = master_list.ElementAt(chedar); //grab a random wave bank/song bank/music pack/ from all available music packs. + continue; + } + } + else + { + stop_sound(); + cueball = current_info_class.winter_snow_song_list.ElementAt(randomNumber); //grab a random song from the fall song list + Game1.soundBank = current_info_class.new_sound_bank; //access my new sound table + Game1.waveBank = current_info_class.newwave; + cueball = Game1.soundBank.GetCue(cueball.Name); + } + if (cueball == null) return; + no_music = false; + Log.Info("Now listening to: " + cueball.Name + " from the music pack located at: " + current_info_class.path_loc + " while it is a snowy winter day. Check the Seasons folder for more info."); + cueball.Play(); + Class1.reset(); + return; + + } //plays the songs associated with spring time + + + public static void stop_sound() //Stops any song that is playing at the time. + { + + if (cueball == null) + { + //trying to stop a song that doesn't "exist" crashes the game. This prevents that. + return; + } + + if (current_info_class == null) + { + //if my info class is null, return. Should only be null if the game starts. Pretty sure my code should prevent this. + return; + } + Game1.soundBank = current_info_class.new_sound_bank; //reset the wave/sound banks back to the music pack's + Game1.waveBank = current_info_class.newwave; + cueball.Stop(AudioStopOptions.Immediate); //redundant stopping code + cueball.Stop(AudioStopOptions.AsAuthored); + Game1.soundBank = old_sound_bank; //reset the wave/sound to the game's original + Game1.waveBank = oldwave; + cueball = null; + } //stop whatever song is playing. + public static void reset() + { + Game1.waveBank = oldwave; + Game1.soundBank = old_sound_bank; + } + +//config/loading stuff below + void MyWritter() + { + //saves the BuildEndurance_data at the end of a new day; + string mylocation = Path.Combine(PathOnDisk, "Music_Expansion_Config"); + //string mylocation2 = mylocation + myname; + string mylocation3 = mylocation + ".txt"; + string[] mystring3 = new string[20]; + if (!File.Exists(mylocation3)) + { + Console.WriteLine("The config file for SDV_Music_Expansion wasn't found. Time to create it!"); + + //write out the info to a text file at the end of a day. This will run if it doesnt exist. + + mystring3[0] = "Player: Stardew Valley Music Expansion Config. Feel free to edit."; + mystring3[1] = "===================================================================================="; + + mystring3[2] = "Minimum delay time: This is the minimal amout of time(in miliseconds!!!) that will pass before another song will play. 0 means a song will play immediately, 1000 means a second will pass, etc. Used in RNG to determine a random delay between songs."; + mystring3[3] = delay_time_min.ToString(); + + mystring3[4] = "Maximum delay time: This is the maximum amout of time(in miliseconds!!!) that will pass before another song will play. 0 means a song will play immediately, 1000 means a second will pass, etc. Used in RNG to determine a random delay between songs."; + mystring3[5] = delay_time_max.ToString(); + + mystring3[6] = "Silent rain? Setting this value to false plays the default ambient rain music along side whatever songs are set in rain music. Setting this to true will disable the ambient rain music. It's up to the soundpack creators wither or not they want to mix their music with rain prior to loading it in here."; + mystring3[7] = silent_rain.ToString(); + + mystring3[8] = "Seasonal_Music? Setting this value to true will play the seasonal music from the music packs instead of defaulting to the Stardew Valley Soundtrack."; + mystring3[9] = seasonal_music.ToString(); + + + // mystring3[8] = "Clean out charges mail?: Get rid of the annoying We charged X gold for your health fees, etc."; + // mystring3[9] = wipe_mail.ToString(); + + //mystring3[8] = "Keep Money?: True: Don't be charged for passing out."; + //mystring3[9] = protect_money.ToString(); + + //mystring3[10] = "Keep stamina when staying up? When the farmer passes out at 6, should their stamina be their stamina before collapsing?"; + //mystring3[11] = persistant_stamina.ToString(); + //mystring3[12] = "Keep health when staying up? When the farmer passes out at 6, should their health be their health before collapsing?"; + //mystring3[13] = persistant_health.ToString(); + + /* + mystring3[17] = "Nightly Stamina Value: This is the value of the player's stamina that was saved when the player slept."; + mystring3[18] = nightly_stamina_value.ToString(); //this should save the player's stamina upon sleeping. + */ + + File.WriteAllLines(mylocation3, mystring3); + } + + else + { + + //write out the info to a text file at the end of a day. This will run if it doesnt exist. + + mystring3[0] = "Player: Stardew Valley Music Expansion Config. Feel free to edit."; + mystring3[1] = "===================================================================================="; + + mystring3[2] = "Minimum delay time: This is the minimal amout of time(in miliseconds!!!) that will pass before another song will play. 0 means a song will play immediately, 1000 means a second will pass, etc. Used in RNG to determine a random delay between songs."; + mystring3[3] = delay_time_min.ToString(); + + mystring3[4] = "Maximum delay time: This is the maximum amout of time(in miliseconds!!!) that will pass before another song will play. 0 means a song will play immediately, 1000 means a second will pass, etc. Used in RNG to determine a random delay between songs."; + mystring3[5] = delay_time_max.ToString(); + + mystring3[6] = "Silent rain? Setting this value to false plays the default ambient rain music along side whatever songs are set in rain music. Setting this to true will disable the ambient rain music. It's up to the soundpack creators wither or not they want to mix their music with rain prior to loading it in here."; + mystring3[7] = silent_rain.ToString(); + mystring3[8] = "Seasonal_Music? Setting this value to true will play the seasonal music from the music packs instead of defaulting to the Stardew Valley Soundtrack."; + mystring3[9] = seasonal_music.ToString(); + + // mystring3[8] = "Clean out charges mail?: Get rid of the annoying We charged X gold for your health fees, etc."; + // mystring3[9] = wipe_mail.ToString(); + + //mystring3[8] = "Keep Money?: True: Don't be charged for passing out."; + //mystring3[9] = protect_money.ToString(); + + //mystring3[10] = "Keep stamina when staying up? When the farmer passes out at 6, should their stamina be their stamina before collapsing?"; + //mystring3[11] = persistant_stamina.ToString(); + //mystring3[12] = "Keep health when staying up? When the farmer passes out at 6, should their health be their health before collapsing?"; + //mystring3[13] = persistant_health.ToString(); + + /* + mystring3[17] = "Nightly Stamina Value: This is the value of the player's stamina that was saved when the player slept."; + mystring3[18] = nightly_stamina_value.ToString(); //this should save the player's stamina upon sleeping. + */ + + File.WriteAllLines(mylocation3, mystring3); + } + } + void DataLoader() + { + //loads the data to the variables upon loading the game. + string mylocation = Path.Combine(PathOnDisk, "Music_Expansion_Config"); + //string mylocation2 = mylocation + myname; + string mylocation3 = mylocation + ".txt"; + if (!File.Exists(mylocation3)) //if not data.json exists, initialize the data variables to the ModConfig data. I.E. starting out. + { + delay_time_min = 10000; + delay_time_max = 30000; + silent_rain = false; + seasonal_music = true; + + } + + else + { + Log.Info("Music Expansion Config Loaded"); + // Console.WriteLine("HEY THERE IM LOADING DATA"); + + //loads the BuildEndurance_data upon loading the mod + string[] readtext = File.ReadAllLines(mylocation3); + delay_time_min = Convert.ToInt32(readtext[3]); + delay_time_max = Convert.ToInt32(readtext[5]); //these array locations refer to the lines in BuildEndurance_data.json + silent_rain = Convert.ToBoolean(readtext[7]); + seasonal_music = Convert.ToBoolean(readtext[9]); + + + + + + } + } + + + + }//ends class1 +}//ends namespace \ No newline at end of file diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/Properties/AssemblyInfo.cs b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..08c742e3 --- /dev/null +++ b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Stardew_Music_Expansion_API")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Stardew_Music_Expansion_API")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("697f7ec8-02c6-4f39-a917-ee45955cfff9")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API.csproj b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API.csproj new file mode 100644 index 00000000..0fffe830 --- /dev/null +++ b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API.csproj @@ -0,0 +1,84 @@ + + + + + Debug + AnyCPU + {697F7EC8-02C6-4F39-A917-EE45955CFFF9} + Library + Properties + Stardew_Music_Expansion_API + Stardew_Symphony + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Microsoft.Xna.Framework.dll + + + False + ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Microsoft.Xna.Framework.Game.dll + + + False + ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Microsoft.Xna.Framework.GamerServices.dll + + + False + ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Microsoft.Xna.Framework.Graphics.dll + + + False + ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Microsoft.Xna.Framework.Input.Touch.dll + + + False + ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Microsoft.Xna.Framework.Xact.dll + + + ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Stardew Valley.exe + + + ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Stardew Valley\StardewModdingAPI.exe + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.Game.dll b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.Game.dll new file mode 100644 index 00000000..9ba4aa23 Binary files /dev/null and b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.Game.dll differ diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.GamerServices.dll b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.GamerServices.dll new file mode 100644 index 00000000..86b73866 Binary files /dev/null and b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.GamerServices.dll differ diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.GamerServices.xml b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.GamerServices.xml new file mode 100644 index 00000000..50a5cc57 --- /dev/null +++ b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.GamerServices.xml @@ -0,0 +1,1310 @@ + + + + + Describes a single achievement, including the achievement name, description, picture, and whether it has been achieved by the currently signed in gamer. + + + Gets the localized achievement description string. + + + Gets whether this achievement should be displayed before it is earned. + + + Gets the date at which this achievement was earned. + + + Gets whether this achievement was earned while online. + + + Gets the amount of gamer score awarded for earning this achievement. + + + Gets the image associated with this achievement. + + + Gets the localized description of the steps necessary to earn the achievement. + + + Gets whether the current player has earned this achievement. + + + Gets the achievement key string. + + + Gets the localized achievement name string, for display to the user. + + + Collection holding the achievements belonging to a signed-in gamer. + + + Gets the number of objects in the collection. + + + Immediately releases the unmanaged resources used by this object. + + + Gets an enumerator that can iterate through this AchievementCollection. + + + Indicates whether the object is disposed. + + + Gets a specific element in the collection using an index value. + + + + Retrieves the Achievement matching a specified achievement key string. + + + + Adds a new Achievement to this AchievementCollection. + The achievement to add. + + + Removes all Achievement instances from this AchievementCollection. + + + Determines whether the specified achievement is in this AchievementCollection. + The Achievement to locate in this AchievementCollection. + + + Copies the collection of achievements to an array, starting at the specified index. + Array that will receive the copied elements. + Index into which to begin inserting elements. + + + Gets a value indicating whether this collection is read-only. + + + Removes the specified Achievement from the collection. + The achievement to remove. + + + Gets the index of an achievement in the collection. + The achievement to locate in this collection. + + + Inserts a new Achievement into this collection of achievements. + Position at which to place this achievement in the collection. + The achievement to insert into the collection. + + + Removes the Achievement at the specified index position. + Index of the Achievement to remove. + + + Gets a strongly-typed enumerator that can iterate through the collection. + + + Indicates how sensitive this gamer prefers controller input to be. + + + Highly sensitive controller input is preferred. + + + Below average sensitivity is preferred. + + + Average controller sensitivity is preferred. + + + Represents the complete friends list of a local gamer. + + + Immediately releases the unmanaged resources used by this object. + + + Gets a value that indicates whether the object is disposed. + + + Provides the presence information of a friend of the local gamer. + + + Gets whether the local gamer who requested the friends list has received a friend request from this gamer. + + + Gets whether the local gamer who requested the friends list has sent a friend request to this gamer. + + + Gets whether this friend currently has voice capability. + + + Gets whether this friend has accepted an invitation from the local gamer who requested the friends list. + + + Gets whether the local gamer who requested the friends list has received an invitation from this friend. + + + Gets whether this friend has rejected an invitation from the local gamer who requested the friends list. + + + Gets whether the local gamer who requested the friends list has sent an invitation to this friend. + + + Gets whether this friend is currently away from the computer or console. + + + Gets whether this friend is currently busy. + + + Gets whether this friend is currently in a public session that can be joined. + + + Gets whether this friend is currently online. + + + Gets whether this friend is currently playing a game. + + + Gets a title-defined presence string describing what this friend is currently doing. + + + Describes a gamer's preferred settings. + + + Gets the gamer's preference for using controller buttons to accelerate in racing games. + + + Gets whether the title should automatically correct the gamer's aim. + + + Gets whether the title should automatically center the view when the gamer moves. + + + Gets the gamer's preference for using controller buttons to brake in racing games. + + + Gets the preferred controller sensitivity setting for this gamer. + + + Gets the preferred difficulty setting for this gamer. + + + Gets the gamer's preference for inverting the y-axis input of the controller. + + + Gets the gamer's preference for driving a manual shift transmission in racing games. + + + Gets the gamer's preference for moving by using the right thumbstick. + + + Gets the preferred color for the player character. + + + Gets the gamer's preferred camera angle for racing games. + + + Gets a secondary color selection for the player character. + + + Indicates how difficult this gamer likes things to be. + + + Below-average difficulty. + + + Above-average difficulty. + + + Average difficulty. + + + Abstract base class for types that represent game players (profiles that have an associated gamertag). The concrete types SignedInGamer and NetworkGamer derive from this. + + + Begins the process of getting a Gamer object for a specified gamertag. + The Xbox LIVE gamertag for the gamer requested. + The method to call once the asynchronous operation is finished. + State of the asynchronous operation. + + + Begins the asynchronous process of getting the partner token for this gamer. + URI associated with the service to use with this token. This cannot be null. + Method to call once the asynchronous operation is finished. + State of the asynchronous operation. + + + Starts an asynchronous profile read operation. + The method to call once the asynchronous operation is finished. + State of the asynchronous operation. + + + Gets the display name string for the gamer. + + + Ends the process of getting a Gamer object for a specified gamertag. + An IAsyncResult used to track the progress of the operation. + + + Retrieves the results from an asynchronous request for the partner token for this gamer. + An IAsyncResult used to track the progress of the operation. + + + Ends an asynchronous profile read operation. + An IAsyncResult used to track the progress of the operation. + + + Gets the gamertag string. + + + Returns a Gamer object for the specified gamertag. + The Xbox LIVE gamertag for the gamer requested. + + + Gets the partner token for this gamer. + URI associated with the service that will be used with this token. This cannot be null. + + + Reads profile data for this gamer. + + + Gets a value indicating whether the object is disposed. + + + Gets an object that can be used to write leaderboard statistics for this gamer. + + + + + + Gets or sets a custom object which can be used to attach arbitrary user defined data to the gamer. + + + Retrieves a string representation of this object. + + + Represents a collection of gamers. This collection cannot be modified and is updated automatically during the call to Update. + + + Returns a strongly typed GamerCollection.GamerCollectionEnumerator Structure that can iterate through a GamerCollection. + + + Returns an enumerator that can iterate through the collection. + + + Provides the ability to iterate through the gamers in an GamerCollection. + + + Gets the current element in the GamerCollection. + + + Immediately releases the unmanaged resources used by this object. + + + Advances the enumerator to the next element of the GamerCollection. + + + Gets the current element in the GamerCollection as a Object. + + + Sets the enumerator to its initial position, which is before the first element in the GamerCollection. + + + Provides properties to set the rich presence state for a locally signed-in gamer profile. + + + Reference page contains links to related code samples. + + + + + + Settings defining the status string that will appear when you view a friend through the Xbox LIVE Guide or on Xbox.com. Use the PresenceMode property to set this option. + + + Arcade Mode + + + At Menu + + + Battling Boss + + + Campaign Mode + + + Challenge Mode + + + Configuring Settings + + + Co-Op: Level. Includes a numeric value specified with PresenceValue. + + + Co-Op: Stage. Includes a numeric value specified with PresenceValue. + + + Cornflower Blue + + + Customizing Player + + + Difficulty: Easy + + + Difficulty: Extreme + + + Difficulty: Hard + + + Difficulty: Medium + + + Editing Level + + + Exploration Mode + + + Found Secret + + + Free Play + + + Game Over + + + In Combat + + + In Game Store + + + Level. Includes a numeric value specified with PresenceValue. + + + Local Co-Op + + + Local Versus + + + Looking For Games + + + Losing + + + Multiplayer + + + Nearly Finished + + + No Presence String Displayed + + + On a Roll + + + Online Co-Op + + + Online Versus + + + Outnumbered + + + Paused + + + Playing Minigame + + + Playing With Friends + + + Practice Mode + + + Puzzle Mode + + + Scenario Mode + + + Score. Includes a numeric value specified with PresenceValue. + + + Score is Tied + + + Setting Up Match + + + Single Player + + + Stage. Includes a numeric value specified with PresenceValue. + + + Starting Game + + + Story Mode + + + Stuck on a Hard Bit + + + Survival Mode + + + Time Attack + + + Trying For Record + + + Tutorial Mode + + + Versus Computer + + + Versus: Score. Includes a numeric value specified with PresenceValue. + + + Waiting For Players + + + Waiting In Lobby + + + Wasting Time + + + Watching Credits + + + Watching Cutscene + + + Winning + + + Won the Game + + + Thrown if a gamer services or multiplayer API is called without a valid, signed-in profile. + + + Creates an instance of GamerPrivilegeException. + + + Initializes a new instance of GamerPrivilegeException with the specified streaming context. + Describes the gamer services or multiplayer API being accessed when the exception occurred. + Describes the stream where the exception occurred. + + + Initializes a new instance of GamerPrivilegeException with the specified error message. + A message that describes the error. + + + Initializes a new instance of GamerPrivilegeException with the specified error message and inner exception. + A message that describes the error. + The inner exception related to this exception. + + + Describes what operations a gamer is allowed to perform. + + + Checks if this gamer is allowed to send and receive communications using voice, text, messaging, or game invites. + + + Checks if this gamer is allowed to play in online multiplayer sessions. + + + Checks if this gamer is allowed to access premium content. + + + Checks if this gamer is allowed to view the profiles of other gamers. + + + Checks if this gamer is allowed to purchase content from LIVE Marketplace. + + + Checks if this gamer is allowed to trade content with other gamers. + + + Checks if this gamer is allowed to access user content created by other gamers. + + + Describes the conditions in which a privilege is available. + + + This privilege is not available for the current gamer profile. + + + This privilege is available for the current gamer profile. + + + This privilege is only available for friends of the current gamer profile. Use the IsFriend method to check which gamers are friends. + + + Profile settings describing information about a gamer such as the gamer's motto, reputation, and gamer picture. This data is accessible for both locally signed in profiles and remote gamers that you are playing with in a multiplayer session. + + + Immediately releases the unmanaged resources used by this object. + + + Gets the GamerScore of this gamer. + + + Gets the GamerZone setting. + + + Gets the gamer picture associated with this profile. + + + Gets a value that indicates whether the object is disposed. + + + Gets the gamer motto string. + + + Gets the region of this gamer. + + + Gets the gamer reputation, as a number of stars ranging 0 to 5. + + + Gets the number of titles this gamer has played. + + + Gets the total number of achievements this gamer has obtained. + + + Implements the Windows-specific portion of a GamerServicesDispatcher class. Reference page contains links to related code samples. + + + Initializes gamer services functionality for the game, automatically choosing the most appropriate gamer service type for the platform. Reference page contains links to related code samples. + The service provider to be used when locating additional services services. For example, IGraphicsDeviceService. + + + Notifies the game when a Games for Windows - LIVE title update is being installed. + + + + Determines if Initialize has been called. + + + Reference page contains links to related code samples. + + + Gets or sets the handle to the underlying game window. + + + Thrown if the gamer services system cannot be successfully initialized. + + + Creates an empty instance of GamerServicesNotAvailableException. + + + Initializes a new instance of GamerServicesNotAvailableException with the specified streaming context. + Describes the gamer services being accessed when the exception occurred. + Describes the stream where the exception occurred. + + + Initializes a new instance of GamerServicesNotAvailableException with the specified error message. + A message that describes the error. + + + Initializes a new instance of GamerServicesNotAvailableException with the specified error message and the inner exception. + A message that describes the error. + The inner exception related to this exception. + + + This style of social gaming preferred by this Xbox LIVE member. + + + Family-friendly game play. + + + Competitive game play. + + + Non-competitive game play. + + + Alternative approach to game play. + + + Unknown. + + + The exception thrown when a game (title) update is required in order to use Xbox LIVE. + + + Initializes a new GameUpdateRequiredException. + + + Initializes a new GameUpdateRequiredException with specified serialization information and a streaming context. + Describes the gamer services or multiplayer API being accessed when the exception occurred. + Describes the stream where the exception occurred. + + + Initializes a new GameUpdateRequiredException with a specified error message. + Text that describes the error. + + + Initializes a new GameUpdateRequiredException, with a specified error message and a reference to the inner exception that caused the error. + Text that describes the error. + The exception that is the cause of the GameUpdateRequiredException. If this parameter is not null, the exception is raised in a catch block that handles the inner exception. + + + + + + Begins the process for displaying asynchronously the software keyboard interface for a gamer. Reference page contains links to related code samples. + Index of the player providing input. On platforms such as Windows Phone or Windows that support only one player, the valid value is PlayerIndex.One. + Title of the interface dialog box. + Text of the interface dialog box. + Default text displayed in the input area when the interface dialog box is first shown. + The method to be called once the asynchronous operation is finished. + A user-created object uniquely identifying this request. + + + Begins the process for displaying asynchronously the software keyboard interface for a gamer by using the password mode if it is specified. Reference page contains links to related code samples. + Index of the player providing input. On platforms such as Windows Phone or Windows that support only one player, the valid value is PlayerIndex.One. + Title of the interface dialog box. + Text of the interface dialog box. + Default text displayed in the input area when the interface dialog box is first shown. + Method to be called once the asynchronous operation is finished. + User-created object uniquely identifying this request. + Specify true to enable password mode, or false to disable it. If the password mode is specified, the characters that the player types are not echoed in the input area. + + + Begins the process of displaying a message box for a particular player. Reference page contains links to related code samples. + Target player of the message box. On Windows or Windows Phone, the only valid option is PlayerIndex.One. + Title of the message box. + Text that will be displayed by the message box. + Captions for the message box buttons. The maximum number of buttons is two on Windows Phone, and three on Xbox 360 or Windows. + Zero-based index specifying which button has the focus. + Type of icon displayed in the message box. + Method to be called once the asynchronous operation has finished. + User-created object uniquely identifying this request. + + + Begins the process of displaying a message box to which any user on the system can respond. Reference page contains links to related code samples. + Title of the message box. + Text that will be displayed by the message box. + Captions for message box buttons. The maximum number of buttons is two on Windows Phone, and three on Xbox 360 or Windows. + Zero-based index specifying which button has the focus. + Type of icon displayed in the message box. + Method to be called once the asynchronous operation is finished. + User-created object uniquely identifying this request. + + + Delays system notifications for a specified time. + Time, in seconds, of the delay. Calling this function while notifications are already delayed has no effect. The maximum delay is 120 seconds. If the specified duration exceeds the maximum, the maximum value is used. + + + Ends the display of the keyboard input dialog box. + The IAsyncResult returned from BeginShowKeyboardInput. + + + Ends the display of a message box. + The IAsyncResult returned from BeginShowMessageBox. + + + + + + Determines whether the game is running currently in limited trial mode. Reference page contains links to related code samples. + + + Determines if a Guide user interface screen is active. + + + Retrieves or sets the location where notifications will appear on the screen. + + + + Gamer composing the message. + Text of the message. + Collection of gamers receiving the message.If this is null, the Select Gamertag user interface is displayed. + + + Shows the Friend Request user interface. + Index of the player making the request. The profile specified by player must be signed in when calling this function. + Recipient of the request. + + + Shows the Friends user interface. + Index of the player making the request. The profile specified by player must be signed in when calling this function. + + + Displays the game invitation user interface, taking the sender's player index and an optional list of recipient gamers. + Index of the player initiating the invitation. + List of gamers who receive the invitation. If null, the Guide prompts the player for a recipient gamer. + + + Displays the game invitation user interface, taking a session ID. + The session ID to use for the game invitation. + + + Shows the Gamer Card user interface. + Index of the player making the request. The profile specified by player must be signed in when calling this function. + Owner of the gamer card being requested for display. + + + Displays the marketplace user interface. Reference page contains links to related code samples. + Index of the controller for the player making the request. + + + Shows the Messages user interface. + Index of the player making the request. The profile specified by player must be signed in when calling this function. + + + Shows the Xbox LIVE Party screen. Reference page contains links to related code samples. + The player index for whom to bring up the Xbox LIVE Party screen. + + + Shows the Play with Party Member screen. Reference page contains links to related code samples. + The player index for whom the list of game sessions with party members is shown. + + + Shows the Player Review user interface. + Index of the player making the request. The profile specified by player must be signed in when calling this function. + Player being reviewed. + + + Shows the Players user interface. + Index of the player making the request. The profile specified by player must be signed in when calling this function. + + + Shows the user interface a gamer uses for signing into Xbox LIVE. + Number of panes displayed at sign in. Each pane accepts a single gamer. On Windows and Windows Phone, only a single pane can be displayed. On Xbox 360, valid values are 1, 2, and 4. + Determines the profile types being displayed. true if only online profiles are displayed; false otherwise. If onlineOnly is true, local gamers can sign in as guests of a profile currently signed in. + + + Reference page contains links to related code samples. + + + Thrown if an attmept is made to display a component of the Guide user interface when a Guide component is already displayed. + + + Initializes an empty instance of GuideAlreadyVisibleException. + + + Initializes an instance of GuideAlreadyVisibleException with the specified streaming context. + Describes the displayed Guide component when the exception occurred. + Describes the stream where the exception occurred. + + + Initializes an instance of GuideAlreadyVisibleException with the specified error message. + A message describing the error. + + + Initializes an instance of GuideAlreadyVisibleException with the specified error message and related inner exception. + A message describing the error. + The inner exception related to this exception. + + + Represents the arguments passed to an InviteAccepted event. Reference page contains links to related code samples. + + + Initializes a new instance of InviteAcceptedEventArgs by using a gamer that is signed in and a Boolean value that indicates if the invitation is for the current local session. + The gamer who is accepting the game invitation. + Indicates if the invitation is for the current local session. + + + The signed-in gamer who is accepting the game invitation. Reference page contains links to related code samples. + + + Indicates if the invitation is for the current local session. Reference page contains links to related code samples. + + + Class representing a single row of a leaderboard, holding all the information a specific gamer has uploaded to the board. + + + Provides access to the columns of key/value data associated with this leaderboard entry. Reference page contains links to related code samples. + + + Provides access to gamer information for this leaderboard entry. Reference page contains links to related code samples. + + + Provides access to the rating associated with this leaderboard entry. Reference page contains links to related code samples. + + + Contains leaderboard identity information for a particular leaderboard. + + + Creates a leaderboard identity from a leaderboard key. + The leaderboard key to use for this leaderboard identity. + + + Creates a new LeaderboardIdentity from a leaderboard key and game mode value. + The leaderboard key to use for this leaderboard identity. + The game mode value for this leaderboard identity. + + + Provides access to the game mode for this leaderboard identity. + + + The key string associated with this leaderboard identity. + + + Values used with LeaderboardIdentity.Create to select which leaderboard to access. + + + Best lifetime score for this player and his or her Xbox LIVE friends. + + + Best recent scores for this player and his or her Xbox LIVE friends. + + + Best lifetime times for this player and his or her Xbox LIVE friends. + + + Best recent times for this player and his or her Xbox LIVE friends. + + + Values used to provide an outcome for a player's leaderboard entry. + + + Player lost the match. + + + No result reported. + + + Match resulted in a tie: no player won. + + + Player won the match. + + + Reads data from leaderboards. + + + Begins an asynchronous read of the page of leaderboard data after the current page. Reference page contains links to related code samples. + An AsyncCallback representing the method to call when the leaderboard information is read. + A user-created object used to uniquely identify the request, or null. + + + Begins an asynchronous read of the page of leaderboard data before the current page. Reference page contains links to related code samples. + An AsyncCallback representing the method to call when the leaderboard information is read. + A user-created object used to uniquely identify the request, or null. + + + Begins reading a leaderboard asynchronously, and specifies a leaderboard identity, pivot gamer, and page size. Reference page contains links to related code samples. + The leaderboard identity of the leaderboard to read. + The gamer of interest in the leaderboard. The current page is set so that this gamer appears on the page. + The number of leaderboard entries per page. + An AsyncCallback representing the method to call when the leaderboard information is read. + A user-created object used to uniquely identify the request, or null. + + + Begins an asynchronous read of leaderboard data, taking a leaderboard identity, a collection of gamers, a pivot gamer, and a page size. Reference page contains links to related code samples. + The leaderboard identity of the leaderboard to read. + A collection of gamers that should be included in the leaderboard results. This parameter is ignored on Windows Phone. + The gamer of interest in the leaderboard. The current page is set so that this gamer appears on the page. + The number of leaderboard entries per page. + An AsyncCallback representing the method to call when the leaderboard information is read. + A user-created object used to uniquely identify the request, or null. + + + Begins reading a leaderboard asynchronously, and specifies a leaderboard identity, the start page, and the page size. Reference page contains links to related code samples. + The leaderboard identity of the leaderboard to read. + The page of leaderboard entries at which to start. + The number of leaderboard entries per page. + An AsyncCallback representing the method to call when the leaderboard information is read. + A user-created object used to uniquely identify the request, or null. + + + Provides information about whether there are more leaderboard entries after the current page of entries. + + + Provides information about whether there are more leaderboard entries before the current page of entries. + + + Releases all resources used by this LeaderboardReader. + + + Checks the result of an asynchonous PageDown operation. Reference page contains links to related code samples. + The IASyncResult that represents the state of the asynchronous page-down operation. If the operation is finished, IsCompleted will be true. + + + Checks the result of an asynchonous PageUp operation. Reference page contains links to related code samples. + The IASyncResult that represents the state of the asynchronous page-up operation. If the operation is finished, IsCompleted will be true. + + + Checks the result of an asynchronous Read operation. Reference page contains links to related code samples. + The IASyncResult that represents the state of the asynchronous read operation. If the operation is finished, IsCompleted will be true. + + + Gets the collection of leaderboard entries for the leaderboard. + + + Provides information about whether this leaderboard reader is disposed. + + + Provides the identity of the leaderboard. + + + Reads the next page of leaderboard data synchronously. Reference page contains links to related code samples. + + + Gets the index of the leaderboard entry at the start of the current page. + + + Reads the previous page of leaderboard data synchronously. Reference page contains links to related code samples. + + + Reads a leaderboard synchronously, specifying a leaderboard identity, pivot gamer, and page size. Reference page contains links to related code samples. + The leaderboard identity of the leaderboard to read. + The gamer to center the results on. It can be null. + The number of leaderboard entries on a page. Pass zero to include all available entries on a single page. + + + Reads a leaderboard synchronously, specifying a leaderboard identity, collection of gamers, pivot gamer, and page size. Reference page contains links to related code samples. + The leaderboard identity of the leaderboard to read. + A collection of gamers to be included in the leaderboard results. This parameter is ignored on Windows Phone. + The gamer of interest in the leaderboard. The current page will be set so that this gamer will appear on the page. + The number of leaderboard entries per page. + + + Begins reading a leaderboard synchronously, specifying a leaderboard identity, the start page, and the page size. Reference page contains links to related code samples. + The leaderboard identity of the leaderboard to read. + The page of leaderboard entries at which to start. Pass zero to start at the highest scores. + The number of leaderboard entries per page. Pass zero to include all available entries on a single page. + + + Provides information about the total number of entries in the leaderboard. + + + Records leaderboard data for players in a NetworkSession. + + + Gets a leaderboard entry that can be used to write to a specified leaderboard. + The identity of the leaderboard to write to. + + + Defines the different icons for a message box. + + + Displays the Alert icon. + + + Displays the Error icon. + + + No icon is displayed. + + + Displays the Warning icon. + + + Thrown if there is a network communication failure. + + + Creates an empty instance of NetworkException. + + + Initializes a new instance of NetworkException with the specified streaming context. + Describes the network data being sent or received when the exception occurred. + Describes the stream where the exception occurred. + + + Initializes a new instance of NetworkException with the specified error message. + A message that describes the error. + + + Initializes a new instance of NetworkException with the specified error message and the inner exception. + A message that describes the error. + The inner exception related to this exception. + + + Thrown if a network connection is unavailable. + + + Initializes a new NetworkNotAvailableException. + + + Initializes a new NetworkNotAvailableException with serialization information and the streaming context. + Describes the network data being sent or received when the exception occurred. + Describes the stream where the exception occurred. + + + Initializes a new NetworkNotAvailableException with a specified error message. + Text that describes the error. + + + Initializes a new NetworkNotAvailableException with a specified error message and a reference to the inner exception that caused the error. + Text that describes the error. + The exception that caused the GameUpdateRequiredException. If this parameter is not null, this exception is raised in a catch block that handles the inner exception. + + + + + + Positions the message box at the bottom of the screen and centered. + + + Positions the message box at the bottom-left of the screen. + + + Positions the message box at the bottom-right of the screen. + + + Positions the message box at the center of the screen. + + + Positions the message box at the center of the screen and left-aligned. + + + Positions the message box at the center of the screen and right-aligned. + + + Positions the message box at the top of the screen and centered. + + + Positions the message box at the top-left of the screen. + + + Positions the message box at the top-right of the screen. + + + Holds a set of properties used to define presence states or leaderboard column values. + + + Determines whether the PropertyDictionary contains an element with the specified key. + The key to locate in the PropertyDictionary. + + + Gets the number of elements contained in this PropertyDictionary. + + + Returns an enumerator that iterates through a collection of key/value pairs that represent elements in the PropertyDictionary. + + + Gets the value of the property with the specified key, as a System.DateTime. + The key to search for in the PropertyDictionary. + + + Gets the value of the property with the specified key, as a System.Double. + The key to search for in the PropertyDictionary. + + + Gets the value of the property with the specified key, as a System.Int32. + The key to search for in the PropertyDictionary. + + + Gets the value of the property with the specified key, as a System.Int64. + The key to search for in the PropertyDictionary. + + + Gets the value of the property with the specified key, as a LeaderboardOutcome. + The key to search for in the PropertyDictionary. + + + Gets the value of the property with the specified key, as a System.Single. + The key to search for in the PropertyDictionary. + + + Gets the value of the property with the specified key, as a System.IO.Stream. + The key to search for in the PropertyDictionary. + + + Gets the value of the property with the specified key, as a System.String. + The key to search for in the PropertyDictionary. + + + Gets the value of the property with the specified key, as a System.TimeSpan. + he key to search for in the PropertyDictionary. + + + Gets or sets the element with the specified key. + The key of the element to get or set. + + + Sets the value of the property with the specified key, as a LeaderboardOutcome. + The key to search for in the PropertyDictionary. + The value of the property to set for the specified key, as a LeaderboardOutcome. + + + Sets the value of the property with the specified key, as a System.DateTime. + The key to search for in the PropertyDictionary. + The value of the property to set for the specified key, as a DateTime. + + + Sets the value of the property with the specified key, as a System.Double. + The key to search for in the PropertyDictionary. + The value of the property to set for the specified key, as a Double. + + + Sets the value of the property with the specified key, as a System.Int32. + The key to search for in the PropertyDictionary. + The value of the property to set for the specified key, as an Int32. + + + Sets the value of the property with the specified key, as a System.Int64. + The key to search for in the PropertyDictionary. + The value of the property to set for the specified key, as an Int64. + + + Sets the value of the property with the specified key, as a System.Single. + The key to search for in the PropertyDictionary. + The value of the property to set for the specified key, as a Single. + + + Sets the value of the property with the specified key, as a System.String. + The key to search for in the PropertyDictionary. + The value of the property to set for the specified key, as a String. + + + Sets the value of the property with the specified key, as a System.TimeSpan. + The key to search for in the PropertyDictionary. + The value of the property to set for the specified key, as a TimeSpan. + + + Adds an element to the PropertyDictionary. This method is not supported. + A KeyValuePair representing a property to add to the PropertyDictionary. + + + Removes all elements from the PropertyDictionary. + + + Determines whether the PropertyDictionary contains an element with the specified key/value pair. + A KeyValuePair that represents the key/value pair to locate in the PropertyDictionary. + + + Copies the elements of the PropertyDictionary to an Array, starting at a particular Array index. + An array of key/value pairs that will receive the elements of the PropertyDictionary. The array must have zero-based indexing. + The zero-based index in the array at which copying begins. + + + Gets a value indicating whether this PropertyDictionary is read-only. + + + Removes an element from the PropertyDictionary. This method is not supported. + The object to add to the PropertyDictionary. + + + Returns an enumerator that iterates through the collection of elements in the PropertyDictionary. + + + Determines if a value for the specified key exists in the PropertyDictionary. + The key to search for in the PropertyDictionary. + [OutAttribute] When the method returns, this parameter will contain the value associated with the specified key. If no value could be found in the PropertyDictionary, it will contain the default value for the type passed in. + + + Indicates which camera angle this gamer prefers to use in racing games. + + + Traditional third-person camera view from behind the car. + + + Camera view from in front of the car. The car itself is not visible. + + + Camera view from inside the car, looking through the windscreen. + + + + + + Creates a new instance of SignedInEventArgs. + The gamer that just signed in. + + + Gets the gamer that just signed in. + + + Represents a gamer (a profile that has an associated gamertag) on the local system. + + + [Deprecated] Awards the specified achievement to a locally signed-in gamer. + Identifier specifying the achievement to award. + + + Starts an asynchronous operation to award an achievement to a locally signed-in gamer. Reference page contains links to related code samples. + Identifier specifying the achievement to award. + The method to be called once the asynchronous operation iss finished. + State of the asynchronous operation. + + + Starts an asynchronous achievement query operation. Reference page contains links to related code samples. + The method to be called once the asynchronous operation is finished. + State of the asynchronous operation. + + + Ends an asynchronous achievement award operation. + An IAsyncResult used to track the progress of the operation. + + + Ends an asynchronous achievement query operation. + An IAsyncResult used to track the progress of the operation. + + + Describes a gamer's preferred settings. + + + Returns the collection of all achievements that may be earned by this gamer. + + + Reads the friends list of this signed-in gamer, including the gamertag and current presence information for each friend. + + + Queries whether the specified gamer is a friend of this local gamer. + The gamer to query. + + + Determines if the gamer is the guest of an Xbox LIVE–enabled profile. + + + Determines if the passed microphone is a headset associated with this signed-in gamer. Use this method to determine if a specific microphone is a gamer-bound headset. + The microphone to check against this signed-in gamer. + + + Determines if the gamer has an Xbox LIVE–enabled profile. + + + Gets the current party size. Reference page contains links to related code samples. + + + Gets the index of the gamer. + + + Gets an object that may be used to set the rich presence state for this gamer. + + + Describes what operations a gamer is allowed to perform. + + + Occurs when a new gamer signs into the local system. + + + + Occurs when a gamer signs out on the local system. + + + + Represents a collection of gamers on the local system. + + + Gets a specific local gamer based on that player's PlayerIndex on the local system. + The PlayerIndex of the local gamer to retrieve. + + + + + + Creates a new instance of SignedOutEventArgs. + The gamer that just signed out. + + + Gets the gamer that just signed out. + + + \ No newline at end of file diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.Graphics.dll b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.Graphics.dll new file mode 100644 index 00000000..1bf4852d Binary files /dev/null and b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.Graphics.dll differ diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.Input.Touch.dll b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.Input.Touch.dll new file mode 100644 index 00000000..1e1eefe5 Binary files /dev/null and b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.Input.Touch.dll differ diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.Input.Touch.xml b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.Input.Touch.xml new file mode 100644 index 00000000..0dd206a0 --- /dev/null +++ b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.Input.Touch.xml @@ -0,0 +1,252 @@ + + + + + A representation of data from a multitouch gesture over a span of time. + + + Holds delta information about the first touchpoint in a multitouch gesture. + + + Holds delta information about the second touchpoint in a multitouch gesture. + + + The type of gesture in a multitouch gesture sample. + + + Holds the current position of the first touchpoint in this gesture sample. + + + Holds the current position of the the second touchpoint in this gesture sample. + + + Holds the starting time for this touch gesture sample. + + + Contains values that represent different multitouch gestures that can be detected by TouchPanel.ReadGesture. Reference page contains links to related code samples. + + + The user tapped the screen twice in quick succession. This always is preceded by a Tap gesture. If the time between taps is too great to be considered a DoubleTap, two Tap gestures will be generated instead. + + + A drag gesture (VerticalDrag, HorizontalDrag, or FreeDrag) was completed. This signals only completion. No position or delta data is valid for this sample. + + + The user performed a touch combined with a quick swipe of the screen. Flicks are positionless. The velocity of the flick can be retrieved by reading the Delta member of GestureSample. + + + The user touched the screen, and then performed a free-form drag gesture. + + + The user touched a single point on the screen for approximately one second. This is a single event, and not continuously generated while the user is holding the touchpoint. + + + The user touched the screen, and then performed a horizontal (left to right or right to left) gesture. + + + Represents no gestures. + + + The user touched two points on the screen, and then converged or diverged them. Pinch behaves like a two-finger drag. When this gesture is enabled, it takes precedence over drag gestures while two fingers are down. + + + A pinch operation was completed. This signals only completion. No position or delta data is valid for this sample. + + + The user briefly touched a single point on the screen. + + + The user touched the screen, and then performed a vertical (top to bottom or bottom to top) gesture. + + + Provides methods and properties for accessing state information for the touch screen of a touch-enabled device. Reference page contains links to related code samples. + + + Initializes a new instance of the TouchCollection structure with a set of touch locations. Reference page contains links to related code samples. + Array of touch locations. + + + Adds a TouchLocation to the collection. + TouchLocation to add. + + + Removes all TouchLocation objects from the collection. + + + Checks if the current touch collection contains the specified touch location. + Touch location to be checked against the current collection. + + + Copies the touch location to the collection at the specified index. + Array receiving the copied touch location. + Target index of the collection. + + + Gets the current number of touch locations for the touch screen. + + + Retrieves the touch location matching the specified ID. + ID of touch location sought. + [OutAttribute] Touch location item matching the specified ID. + + + Returns an enumerator that iterates through the TouchCollection. + + + Determines the index of a TouchLocation in the TouchCollection. + TouchLocation to locate in the collection. + + + Inserts a new TouchLocation into the TouchCollection at a specified index. + Index in the touch collection for the new item. + TouchLocation to be inserted. + + + Indicates if the touch screen is available for use. + + + Determines if the touch location array is read-only. + + + Gets or sets the information of the specified touch location. + Index of the touch location to return. + + + Removes the specified TouchLocation from the TouchCollection. + TouchLocation to be removed. + + + Removes a TouchLocation at the specified index in the TouchCollection. + Index of the TouchLocation to remove. + + + Returns an enumerator that iterates through the TouchCollection. + + + Provides the ability to iterate through the touch locations in a TouchCollection. + + + Gets the current element in the TouchCollection. + + + Immediately releases the unmanaged resources used by this object. + + + Advances the enumerator to the next element of the TouchCollection. + + + Gets the current element in the TouchCollection as an object. + + + Sets the enumerator to its initial position, which is before the first element in the TouchCollection. + + + Provides methods and properties for interacting with a touch location on a touch screen device. Reference page contains links to related code samples. + + + Initializes a new TouchLocation with an ID, state, position, and pressure. + ID of the new touch location. + State of the new touch location. + Position, in screen coordinates, of the new touch location. + + + Initializes a new TouchLocation with an ID, and a set of both current and previous state, position, and pressure values. + ID of the new touch location. + State of the new touch location. + Position, in screen coordinates, of the new touch location. + Previous state for the new touch location. + Previous position for the new touch location. + + + Determines whether the current TouchLocation is equal to the specified TouchLocation. + The TouchLocation to compare with this instance. + + + Determines whether the current TouchLocation is equal to the specified object. + The Object to compare with the touch location. + + + Gets the hash code for this TouchLocation. + + + Gets the ID of the touch location. + + + Determines whether two TouchLocation instances are equal. + The TouchLocation to compare with the second. + The TouchLocation to compare with the first. + + + Determines whether two TouchLocation instances are unequal. + The TouchLocation to compare with the second. + The TouchLocation to compare with the first. + + + Gets the position of the touch location. + + + Gets the state of the touch location. + + + Gets a string representation of the TouchLocation. + + + Attempts to get the previous location of this touch location object. + [OutAttribute] Previous location data, as a TouchLocation. + + + Defines the possible states of a touch location. Reference page contains links to related code samples. + + + This touch location position is invalid. Typically, you will encounter this state when a new touch location attempts to get the previous state of itself. + + + This touch location position was updated or pressed at the same position. + + + This touch location position is new. + + + This touch location position was released. + + + Provides methods for retrieving touch panel device information. Reference page contains links to related code samples. + + + Gets or sets the display height of the touch panel. + + + Gets or sets the display orientation of the touch panel. + + + Gets or sets the display width of the touch panel. + + + Gets or sets the gestures that are enabled for the touch panel. Reference page contains links to related code samples. + + + Gets the touch panel capabilities for an available device. Reference page contains links to related code samples. + + + Gets the current state of the touch panel. Reference page contains links to related code samples. + + + Used to determine if a touch gesture is available. Reference page contains links to related code samples. + + + Reads an available gesture on the touch panel. Reference page contains links to related code samples. + + + The window handle of the touch panel. + + + Provides access to information about the capabilities of the touch input device. Reference page contains links to related code samples. + + + Indicates if the touch panel device is available for use. + + + Gets the maximum number of touch locations that can be tracked by the touch pad device. + + + \ No newline at end of file diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.Xact.dll b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.Xact.dll new file mode 100644 index 00000000..96815795 Binary files /dev/null and b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.Xact.dll differ diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.dll b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.dll new file mode 100644 index 00000000..a0caf6af Binary files /dev/null and b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Microsoft.Xna.Framework.dll differ diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Newtonsoft.Json.dll b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Newtonsoft.Json.dll new file mode 100644 index 00000000..4d42dd9c Binary files /dev/null and b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Newtonsoft.Json.dll differ diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Newtonsoft.Json.xml b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Newtonsoft.Json.xml new file mode 100644 index 00000000..72a4b31a --- /dev/null +++ b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Newtonsoft.Json.xml @@ -0,0 +1,9085 @@ + + + + Newtonsoft.Json + + + + + Represents a BSON Oid (object id). + + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Initializes a new instance of the class. + + The Oid value. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a JSON array. + + + + + Writes the beginning of a JSON object. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Converts a binary value to and from a base 64 string value. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a F# discriminated union type to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an Entity Framework EntityKey to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an ExpandoObject to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Gets or sets a value indicating whether integer values are allowed. + + true if integers are allowed; otherwise, false. + + + + Initializes a new instance of the class. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts XML to and from JSON. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements. + + The name of the deserialize root element. + + + + Gets or sets a flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attibute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the attributeName is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + True if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Floating point numbers are parsed to . + + + + + Floating point numbers are parsed to . + + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable types; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Specifies float format handling options when writing special floating point numbers, e.g. , + and with . + + + + + Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". + + + + + Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. + Note that this will produce non-valid JSON. + + + + + Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a property. + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Provides an interface for using pooled arrays. + + The array type content. + + + + Rent a array from the pool. This array must be returned when it is no longer needed. + + The minimum required length of the array. The returned array may be longer. + The rented array from the pool. This array must be returned when it is no longer needed. + + + + Return an array to the pool. + + The array that is being returned. + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Instructs the how to serialize the collection. + + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Instructs the how to serialize the object. + + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + The parameter list to use when constructing the JsonConverter described by ItemConverterType. + If null, the default constructor is used. + When non-null, there must be a constructor defined in the JsonConverter that exactly matches the number, + order, and type of these parameters. + + + [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] + + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Gets or sets a function that creates default . + Default settings are automatically used by serialization methods on , + and and on . + To serialize without using any default settings create a with + . + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + The string escape handling. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting and a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string. + Serialization will happen on a new thread. + + The object to serialize. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using formatting. + Serialization will happen on a new thread. + + The object to serialize. + Indicates how the output is formatted. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using formatting and a collection of . + Serialization will happen on a new thread. + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the JSON string. + + + + Deserializes the JSON to a .NET object using . + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the given anonymous type using . + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Asynchronously deserializes the JSON to the specified .NET type. + Deserialization will happen on a new thread. + + The type of the object to deserialize to. + The JSON to deserialize. + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type using . + Deserialization will happen on a new thread. + + The type of the object to deserialize to. + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type. + Deserialization will happen on a new thread. + + The JSON to deserialize. + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type using . + Deserialization will happen on a new thread. + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + + + + Asynchronously populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + + A task that represents the asynchronous populate operation. + + + + + Serializes the XML node to a JSON string. + + The node to serialize. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string using formatting. + + The node to serialize. + Indicates how the output is formatted. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XmlNode. + + + + Deserializes the XmlNode from a JSON string. + + The JSON string. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XmlNode + + + + Serializes the to a JSON string. + + The node to convert to JSON. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting. + + The node to convert to JSON. + Indicates how the output is formatted. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XNode. + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XNode + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + + Gets the of the JSON produced by the JsonConverter. + + + JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details. + + + The of the JSON produced by the JsonConverter. + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Instructs the to use the specified when serializing the member or class. + + + + + Gets the of the converter. + + The of the converter. + + + + The parameter list to use when constructing the JsonConverter described by ConverterType. + If null, the default constructor is used. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Initializes a new instance of the class. + + Type of the converter. + Parameter list to use when constructing the JsonConverter. Can be null. + + + + Represents a collection of . + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during JSON serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Instructs the to deserialize properties with no matching class member into the specified collection + and write values during serialization. + + + + + Gets or sets a value that indicates whether to write extension data when serializing the object. + + + true to write extension data when serializing the object; otherwise, false. The default is true. + + + + + Gets or sets a value that indicates whether to read extension data when deserializing the object. + + + true to read extension data when deserializing the object; otherwise, false. The default is true. + + + + + Initializes a new instance of the class. + + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Instructs the how to serialize the object. + + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Instructs the to always serialize the member with the specified name. + + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + The parameter list to use when constructing the JsonConverter described by ItemConverterType. + If null, the default constructor is used. + When non-null, there must be a constructor defined in the JsonConverter that exactly matches the number, + order, and type of these parameters. + + + [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] + + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization of a member. + + The numeric order of serialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether multiple pieces of JSON content can + be read from a continuous stream without erroring. + + + true to support reading multiple pieces of JSON content; otherwise false. The default is false. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how custom date formatted strings are parsed when reading JSON. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a []. + + A [] or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + The exception thrown when an error occurs while reading JSON text. + + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Instructs the to always serialize the member, and require the member has a value. + + + + + The exception thrown when an error occurs during JSON serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the equality comparer used by the serializer when comparing references. + + The equality comparer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than TypeNameHandling.None. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets how metadata properties are used during deserialization. + + The metadata properties handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how and values are formatted when writing JSON text, and the expected date format when reading JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance. + The will not use default settings + from . + + + A new instance. + The will not use default settings + from . + + + + + Creates a new instance using the specified . + The will not use default settings + from . + + The settings to be applied to the . + + A new instance using the specified . + The will not use default settings + from . + + + + + Creates a new instance. + The will use default settings + from . + + + A new instance. + The will use default settings + from . + + + + + Creates a new instance using the specified . + The will use default settings + from as well as the specified . + + The settings to be applied to the . + + A new instance using the specified . + The will use default settings + from as well as the specified . + + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the JSON structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the JSON structure + to a Stream using the specified . + + The used to write the JSON structure. + The to serialize. + + + + Serializes the specified and writes the JSON structure + to a Stream using the specified . + + The used to write the JSON structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the JSON structure + to a Stream using the specified . + + The used to write the JSON structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the JSON structure + to a Stream using the specified . + + The used to write the JSON structure. + The to serialize. + + + + Specifies the settings on a object. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than TypeNameHandling.None. + + The type name handling. + + + + Gets or sets how metadata properties are used during deserialization. + + The metadata properties handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the equality comparer used by the serializer when comparing references. + + The equality comparer. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets a function that creates the used by the serializer when resolving references. + + A function that creates the used by the serializer when resolving references. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Get or set how and values are formatted when writing JSON text, and the expected date format when reading JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Gets or sets the reader's character buffer pool. + + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a []. + + A [] or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets or sets the writer's character array pool. + + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Specifies the type of JSON token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + + Represents a reader that provides validation. + + + JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details. + + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current JSON token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current JSON token. + + + + + + Gets the Common Language Runtime (CLR) type for the current JSON token. + + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a []. + + + A [] or a null reference if the next JSON token is null. + + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written to JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when writing JSON. Defaults to . + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a JSON object. + + + + + Writes the end of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes the end of the current JSON object or array. + + + + + Writes the current token and its children. + + The to read the token from. + + + + Writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + + + + Writes the token and its value. + + The to write. + + The value to write. + A value is only required for tokens that have an associated value, e.g. the property name for . + A null value can be passed to the method for token's that don't have a value, e.g. . + + + + Writes the token. + + The to write. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Sets the state of the JsonWriter, + + The JsonToken being written. + The value being written. + + + + The exception thrown when an error occurs while reading JSON text. + + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Specifies how JSON comments are handled when loading JSON. + + + + + Ignore comments. + + + + + Load comments as a with type . + + + + + Specifies how line information is handled when loading JSON. + + + + + Ignore line information. + + + + + Load line information. + + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every token in the source collection. + + + + Returns a collection of tokens that contains every token in the source collection, and the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains every token in the source collection, the ancestors of every token in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every token in the source collection. + + + + Returns a collection of tokens that contains every token in the source collection, and the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains every token in the source collection, and the descendants of every token in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every token in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every token in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every token in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every token in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every token in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every token in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Represents a JSON array. + + + + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads an from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Represents a JSON constructor. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads an from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Represents a token that can contain other tokens. + + + + + Occurs when the list changes or an item in the list changes. + + + + + Occurs before an item is added to the collection. + + + + + Occurs when the items list of the collection has changed, or the collection is reset. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Returns a collection of the tokens that contain this token, and all descendant tokens of this token, in document order. + + An containing this token, and all the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Merge the specified content into this . + + The content to be merged. + + + + Merge the specified content into this using . + + The content to be merged. + The used to merge the content. + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Gets the with the specified key. + + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Represents a JSON object. + + + + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Occurs when a property value is changing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets the node type for this . + + The type. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads an from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the properties for this instance of a component. + + + A that represents the properties for this component instance. + + + + + Returns the properties for this instance of a component using the attribute array as a filter. + + An array of type that is used as a filter. + + A that represents the filtered properties for this component instance. + + + + + Returns a collection of custom attributes for this instance of a component. + + + An containing the attributes for this object. + + + + + Returns the class name of this instance of a component. + + + The class name of the object, or null if the class does not have a name. + + + + + Returns the name of this instance of a component. + + + The name of the object, or null if the object does not have a name. + + + + + Returns a type converter for this instance of a component. + + + A that is the converter for this object, or null if there is no for this object. + + + + + Returns the default event for this instance of a component. + + + An that represents the default event for this object, or null if this object does not have events. + + + + + Returns the default property for this instance of a component. + + + A that represents the default property for this object, or null if this object does not have properties. + + + + + Returns an editor of the specified type for this instance of a component. + + A that represents the editor for this object. + + An of the specified type that is the editor for this object, or null if the editor cannot be found. + + + + + Returns the events for this instance of a component using the specified attribute array as a filter. + + An array of type that is used as a filter. + + An that represents the filtered events for this component instance. + + + + + Returns the events for this instance of a component. + + + An that represents the events for this component instance. + + + + + Returns an object that contains the property described by the specified property descriptor. + + A that represents the property whose owner is to be found. + + An that represents the owner of the specified property. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Specifies the settings used when merging JSON. + + + + + Gets or sets the method used when merging JSON arrays. + + The method used when merging JSON arrays. + + + + Represents a JSON property. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads an from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Represents a view of a . + + + + + Initializes a new instance of the class. + + The name. + + + + When overridden in a derived class, returns whether resetting an object changes its value. + + + true if resetting the component changes its value; otherwise, false. + + The component to test for reset capability. + + + + + When overridden in a derived class, gets the current value of the property on a component. + + + The value of a property for a given component. + + The component with the property for which to retrieve the value. + + + + + When overridden in a derived class, resets the value for this property of the component to the default value. + + The component with the property value that is to be reset to the default value. + + + + + When overridden in a derived class, sets the value of the component to a different value. + + The component with the property value that is to be set. + The new value. + + + + + When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. + + + true if the property should be persisted; otherwise, false. + + The component with the property to be examined for persistence. + + + + + When overridden in a derived class, gets the type of the component this property is bound to. + + + A that represents the type of component this property is bound to. When the or methods are invoked, the object specified might be an instance of this type. + + + + + When overridden in a derived class, gets a value indicating whether this property is read-only. + + + true if the property is read-only; otherwise, false. + + + + + When overridden in a derived class, gets the type of the property. + + + A that represents the type of the property. + + + + + Gets the hash code for the name of the member. + + + + The hash code for the name of the member. + + + + + Represents a raw JSON string. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Represents an abstract JSON token. + + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the path of the JSON token. + + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of tokens that contain this token, and the ancestors of this token. + + A collection of tokens that contain this token, and the ancestors of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to []. + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from [] to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Creates a from a . + + An positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A , or null. + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + A . + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + An that contains the selected elements. + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + An that contains the selected elements. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Adds an object to the annotation list of this . + + The annotation to add. + + + + Get the first annotation object of the specified type from this . + + The type of the annotation to retrieve. + The first annotation object that matches the specified type, or null if no annotation is of the specified type. + + + + Gets the first annotation object of the specified type from this . + + The of the annotation to retrieve. + The first annotation object that matches the specified type, or null if no annotation is of the specified type. + + + + Gets a collection of annotations of the specified type for this . + + The type of the annotations to retrieve. + An that contains the annotations for this . + + + + Gets a collection of annotations of the specified type for this . + + The of the annotations to retrieve. + An of that contains the annotations that match the specified type for this . + + + + Removes the annotations of the specified type from this . + + The type of annotations to remove. + + + + Removes the annotations of the specified type from this . + + The of annotations to remove. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Gets the at the reader's current position. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Gets the path of the current JSON token. + + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets the at the writer's current position. + + + + + Gets the token being writen. + + The token being writen. + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Creates a null value. + + A null value. + + + + Creates a null value. + + A null value. + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Specifies the settings used when loading JSON. + + + + + Gets or sets how JSON comments are handled when loading JSON. + + The JSON comment handling. + + + + Gets or sets how JSON line info is handled when loading JSON. + + The JSON line info handling. + + + + Specifies how JSON arrays are merged together. + + + + Concatenate arrays. + + + Union arrays, skipping items that already exist. + + + Replace all array items. + + + Merge array items together, matched by index. + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members must be marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies metadata property handling options for the . + + + + + Read metadata properties located at the start of a JSON object. + + + + + Read metadata properties located anywhere in a JSON object. Note that this setting will impact performance. + + + + + Do not try to read metadata properties. + + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Specifies reference handling options for the . + Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement ISerializable. + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + The property is not required but it cannot be a null value. + + + + + + Contains the JSON schema extension methods. + + + JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details. + + + + + + + Determines whether the is valid. + + + JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details. + + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + + Determines whether the is valid. + + + JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details. + + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + + Validates the specified . + + + JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details. + + + The source to test. + The schema to test with. + + + + + Validates the specified . + + + JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details. + + + The source to test. + The schema to test with. + The validation event handler. + + + + + An in-memory representation of a JSON Schema. + + + JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisble by. + + A number that the value should be divisble by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + A flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + A flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets a value indicating whether items in an array are validated using the instance at their array position from . + + + true if items are validated using their array position; otherwise, false. + + + + + Gets or sets the of additional items. + + The of additional items. + + + + Gets or sets a value indicating whether additional items are allowed. + + + true if additional items are allowed; otherwise, false. + + + + + Gets or sets whether the array items must be unique. + + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets disallowed types. + + The disallow types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the collection of that this schema extends. + + The collection of that this schema extends. + + + + Gets or sets the format. + + The format. + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains schema JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Parses the specified json. + + The json. + The resolver. + A populated from the string that contains JSON. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + + Returns detailed information about the schema exception. + + + JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + + Generates a from a specified . + + + JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + + Resolves from an id. + + + JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + Initializes a new instance of the class. + + + + + Gets a for the specified reference. + + The id. + A for the specified reference. + + + + + The value types allowed by the . + + + JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details. + + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + + Specifies undefined schema Id handling options for the . + + + JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details. + + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + + Returns detailed information related to the . + + + JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + + Represents the callback method that will handle JSON schema validation events and the . + + + JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details. + + + + + + Resolves member mappings for a type, camel casing property names. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + Used by to resolves a for a given . + + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. + + + true if the interface will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. + + + true if the attribute will be ignored when serializing and deserializing types; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly improve performance with multiple resolver instances because expensive reflection will only + happen once. This setting can cause unexpected behavior if different instances of the resolver are suppose to produce different + results. When set to false it is highly recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Resolved name of the property. + + + + Resolves the key of the dictionary. By default is used to resolve dictionary keys. + + Key of the dictionary. + Resolved key of the dictionary. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Represents a trace writer that writes to the application's instances. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Get and set values for a using dynamic methods. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides information surrounding an error. + + + + + Gets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Provides data for the Error event. + + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Get and set values for a using dynamic methods. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides methods to get attributes. + + + + + Returns a collection of all of the attributes, or an empty collection if there are no attributes. + + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. + + The type of the attributes. + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + Represents a trace writer. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Contract details for a used by the . + + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Gets or sets the function used to create the object. When set this function will override . + + The function used to create the object. + + + + Gets a value indicating whether the creator has a parameter with the collection values. + + true if the creator has a parameter with the collection values; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Handles serialization callback events. + + The object that raised the callback event. + The streaming context. + + + + Handles serialization error callback events. + + The object that raised the callback event. + The streaming context. + The error context. + + + + Sets extension data for an object during deserialization. + + The object to set extension data on. + The extension data key. + The extension data value. + + + + Gets extension data for an object during serialization. + + The object to set extension data on. + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets all methods called immediately after deserialization of the object. + + The methods called immediately after deserialization of the object. + + + + Gets or sets all methods called during deserialization of the object. + + The methods called during deserialization of the object. + + + + Gets or sets all methods called after serialization of the object graph. + + The methods called after serialization of the object graph. + + + + Gets or sets all methods called before serialization of the object. + + The methods called before serialization of the object. + + + + Gets or sets all method called when an error is thrown during the serialization of the object. + + The methods called when an error is thrown during the serialization of the object. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Contract details for a used by the . + + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets or sets the dictionary key resolver. + + The dictionary key resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Gets or sets the function used to create the object. When set this function will override . + + The function used to create the object. + + + + Gets a value indicating whether the creator has a parameter with the dictionary values. + + true if the creator has a parameter with the dictionary values; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets the object's properties. + + The object's properties. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets or sets the ISerializable object constructor. + + The ISerializable object constructor. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets a collection of instances that define the parameters used with . + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Gets or sets the function used to create the object. When set this function will override . + This function is called with a collection of arguments which are defined by the collection. + + The function used to create the object. + + + + Gets or sets the extension data setter. + + + + + Gets or sets the extension data getter. + + + + + Gets or sets the extension data value type. + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization of a member. + + The numeric order of serialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the for this property. + + The for this property. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets or sets the member converter. + + The member converter. + + + + Gets or sets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets or sets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets or sets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets or sets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets or sets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets or sets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets or sets the property null value handling. + + The null value handling. + + + + Gets or sets the property default value handling. + + The default value handling. + + + + Gets or sets the property reference loop handling. + + The reference loop handling. + + + + Gets or sets the property object creation handling. + + The object creation handling. + + + + Gets or sets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be deserialized. + + A predicate used to determine whether the property should be deserialized. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Lookup and create an instance of the JsonConverter type described by the argument. + + The JsonConverter type to create. + Optional arguments to pass to an initializing constructor of the JsonConverter. + If null, the default constructor is used. + + + + Create a factory function that can be used to create instances of a JsonConverter described by the + argument type. The returned function can then be used to either invoke the converter's default ctor, or any + parameterized constructors by way of an object array. + + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Represents a method that constructs an object. + + The object type to create. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Provides methods to get attributes from a , , or . + + + + + Initializes a new instance of the class. + + The instance to get attributes for. This parameter should be a , , or . + + + + Returns a collection of all of the attributes, or an empty collection if there are no attributes. + + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. + + The type of the attributes. + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Specifies type name handling options for the . + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than TypeNameHandling.None. + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer{TSource}. + + The type of the elements of source. + A sequence in which to locate a value. + The object to locate in the sequence + An equality comparer to compare values. + The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, –1. + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic that returns a result + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Returns a Restrictions object which includes our current restrictions merged + with a restriction limiting our type + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Stardew Valley.exe b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Stardew Valley.exe new file mode 100644 index 00000000..0e84c996 Binary files /dev/null and b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Stardew Valley.exe differ diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/StardewModdingAPI.exe b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/StardewModdingAPI.exe new file mode 100644 index 00000000..267637c6 Binary files /dev/null and b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/StardewModdingAPI.exe differ diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Stardew_Symphony.dll b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Stardew_Symphony.dll new file mode 100644 index 00000000..e3fc9415 Binary files /dev/null and b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Stardew_Symphony.dll differ diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Stardew_Symphony.pdb b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Stardew_Symphony.pdb new file mode 100644 index 00000000..8d542996 Binary files /dev/null and b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Stardew_Symphony.pdb differ diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Steamworks.NET.dll b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Steamworks.NET.dll new file mode 100644 index 00000000..06768479 Binary files /dev/null and b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/Steamworks.NET.dll differ diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/xTile.dll b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/xTile.dll new file mode 100644 index 00000000..7a004924 Binary files /dev/null and b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/bin/Debug/xTile.dll differ diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 00000000..3e223aa0 Binary files /dev/null and b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/obj/Debug/Stardew_Music_Expansion_API.csproj.FileListAbsolute.txt b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/obj/Debug/Stardew_Music_Expansion_API.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..16728e8d --- /dev/null +++ b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/obj/Debug/Stardew_Music_Expansion_API.csproj.FileListAbsolute.txt @@ -0,0 +1,19 @@ +C:\Users\owner\Documents\Visual Studio 2015\Projects\Stardew_Music_Expansion_API\Stardew_Music_Expansion_API\bin\Debug\Microsoft.Xna.Framework.dll +C:\Users\owner\Documents\Visual Studio 2015\Projects\Stardew_Music_Expansion_API\Stardew_Music_Expansion_API\bin\Debug\Microsoft.Xna.Framework.Game.dll +C:\Users\owner\Documents\Visual Studio 2015\Projects\Stardew_Music_Expansion_API\Stardew_Music_Expansion_API\bin\Debug\Microsoft.Xna.Framework.GamerServices.dll +C:\Users\owner\Documents\Visual Studio 2015\Projects\Stardew_Music_Expansion_API\Stardew_Music_Expansion_API\bin\Debug\Microsoft.Xna.Framework.Graphics.dll +C:\Users\owner\Documents\Visual Studio 2015\Projects\Stardew_Music_Expansion_API\Stardew_Music_Expansion_API\bin\Debug\Microsoft.Xna.Framework.Input.Touch.dll +C:\Users\owner\Documents\Visual Studio 2015\Projects\Stardew_Music_Expansion_API\Stardew_Music_Expansion_API\bin\Debug\Microsoft.Xna.Framework.Xact.dll +C:\Users\owner\Documents\Visual Studio 2015\Projects\Stardew_Music_Expansion_API\Stardew_Music_Expansion_API\bin\Debug\Stardew Valley.exe +C:\Users\owner\Documents\Visual Studio 2015\Projects\Stardew_Music_Expansion_API\Stardew_Music_Expansion_API\bin\Debug\StardewModdingAPI.exe +C:\Users\owner\Documents\Visual Studio 2015\Projects\Stardew_Music_Expansion_API\Stardew_Music_Expansion_API\bin\Debug\xTile.dll +C:\Users\owner\Documents\Visual Studio 2015\Projects\Stardew_Music_Expansion_API\Stardew_Music_Expansion_API\bin\Debug\Steamworks.NET.dll +C:\Users\owner\Documents\Visual Studio 2015\Projects\Stardew_Music_Expansion_API\Stardew_Music_Expansion_API\bin\Debug\Newtonsoft.Json.dll +C:\Users\owner\Documents\Visual Studio 2015\Projects\Stardew_Music_Expansion_API\Stardew_Music_Expansion_API\bin\Debug\Microsoft.Xna.Framework.GamerServices.xml +C:\Users\owner\Documents\Visual Studio 2015\Projects\Stardew_Music_Expansion_API\Stardew_Music_Expansion_API\bin\Debug\Microsoft.Xna.Framework.Input.Touch.xml +C:\Users\owner\Documents\Visual Studio 2015\Projects\Stardew_Music_Expansion_API\Stardew_Music_Expansion_API\bin\Debug\Newtonsoft.Json.xml +C:\Users\owner\Documents\Visual Studio 2015\Projects\Stardew_Music_Expansion_API\Stardew_Music_Expansion_API\obj\Debug\Stardew_Music_Expansion_API.csprojResolveAssemblyReference.cache +C:\Users\owner\documents\visual studio 2015\Projects\Stardew_Music_Expansion_API\Stardew_Music_Expansion_API\bin\Debug\Stardew_Symphony.dll +C:\Users\owner\documents\visual studio 2015\Projects\Stardew_Music_Expansion_API\Stardew_Music_Expansion_API\bin\Debug\Stardew_Symphony.pdb +C:\Users\owner\documents\visual studio 2015\Projects\Stardew_Music_Expansion_API\Stardew_Music_Expansion_API\obj\Debug\Stardew_Symphony.dll +C:\Users\owner\documents\visual studio 2015\Projects\Stardew_Music_Expansion_API\Stardew_Music_Expansion_API\obj\Debug\Stardew_Symphony.pdb diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/obj/Debug/Stardew_Music_Expansion_API.csprojResolveAssemblyReference.cache b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/obj/Debug/Stardew_Music_Expansion_API.csprojResolveAssemblyReference.cache new file mode 100644 index 00000000..256535cf Binary files /dev/null and b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/obj/Debug/Stardew_Music_Expansion_API.csprojResolveAssemblyReference.cache differ diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/obj/Debug/Stardew_Symphony.dll b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/obj/Debug/Stardew_Symphony.dll new file mode 100644 index 00000000..e3fc9415 Binary files /dev/null and b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/obj/Debug/Stardew_Symphony.dll differ diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/obj/Debug/Stardew_Symphony.pdb b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/obj/Debug/Stardew_Symphony.pdb new file mode 100644 index 00000000..8d542996 Binary files /dev/null and b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Music_Expansion_API/Stardew_Music_Expansion_API/obj/Debug/Stardew_Symphony.pdb differ diff --git a/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Symphony.dll b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Symphony.dll new file mode 100644 index 00000000..e3fc9415 Binary files /dev/null and b/Stardew_Valley_Music_Expansion_API_Mod/Stardew_Symphony.dll differ diff --git a/Stardew_Valley_Music_Expansion_API_Mod/manifest.json b/Stardew_Valley_Music_Expansion_API_Mod/manifest.json new file mode 100644 index 00000000..c09c5c38 --- /dev/null +++ b/Stardew_Valley_Music_Expansion_API_Mod/manifest.json @@ -0,0 +1,14 @@ +{ + "Name": "Stardew_Symphony", + "Authour": "Alpha_Omegasis", + "Version": { + "MajorVersion": 1, + "MinorVersion": 0, + "PatchVersion": 0, + "Build": "" + }, + "Description": "Adding more music to the game one beep at a time.", + "UniqueID": "4108e859-333c-4fec-a1a7-d2e18c1019fe", + "PerSaveConfigs": false, + "EntryDll": "Stardew_Symphony.dll" +} \ No newline at end of file