From 5e5c79c0a0dfad170b18ea07f0708365d2ca4a01 Mon Sep 17 00:00:00 2001 From: Logan Perkins Date: Fri, 8 Jun 2018 09:47:34 -0700 Subject: [PATCH 001/110] Reset money to previous value before the save So, if you let the timer run down to 6:00 A.M., you lose 10% of your cash, the game saves, the new day starts, and NightOwl resets your money to what it was at 5:59. There are two problems with this. First, if you quit to the title and reload, your money doesn't get reset again on load, so you lose the 10%. Second, if you shipped anything the day before, the cash reset wipes out the cash gained from shipping items. This fixes both. The first is fixed by resetting the cash value during the before save event, the second is fixed by reading the cash penalty amount from the mailbox before the mailbox is cleared, and adding the value rather than setting the total. --- GeneralMods/NightOwl/NightOwl.cs | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/GeneralMods/NightOwl/NightOwl.cs b/GeneralMods/NightOwl/NightOwl.cs index 9474ad49..cc48c311 100644 --- a/GeneralMods/NightOwl/NightOwl.cs +++ b/GeneralMods/NightOwl/NightOwl.cs @@ -74,6 +74,7 @@ namespace Omegasis.NightOwl TimeEvents.TimeOfDayChanged += this.TimeEvents_TimeOfDayChanged; TimeEvents.AfterDayStarted += this.TimeEvents_AfterDayStarted; SaveEvents.AfterLoad += this.SaveEvents_AfterLoad; + SaveEvents.BeforeSave += this.SaveEvents_BeforeSave; GameEvents.FourthUpdateTick += this.GameEvents_FourthUpdateTick; } @@ -105,6 +106,28 @@ namespace Omegasis.NightOwl this.WriteErrorLog(); } } + + /// The method invoked before the game saves. + /// The event sender. + /// The event data. + public void SaveEvents_BeforeSave(object sender, EventArgs e) + { + int collapseFee = 0; + string[] passOutFees = Game1.player.mailbox + .Where(p => p.Contains("passedOut")) + .ToArray(); + for (int idx=0; idxThe method invoked after the player loads a save. /// The event sender. @@ -136,8 +159,6 @@ namespace Omegasis.NightOwl Game1.player.stamina = this.PreCollapseStamina; if (this.Config.KeepHealthAfterCollapse) Game1.player.health = this.PreCollapseHealth; - if (this.Config.KeepMoneyAfterCollapse) - Game1.player.money = this.PreCollapseMoney; if (this.Config.KeepPositionAfterCollapse) Game1.warpFarmer(this.PreCollapseMap, this.PreCollapseTile.X, this.PreCollapseTile.Y, false); } From ad7f9754ef2b95e54c3caacaa65026dfbf3bc063 Mon Sep 17 00:00:00 2001 From: Date: Fri, 8 Jun 2018 11:40:23 -0700 Subject: [PATCH 002/110] Console commands, bug fixes, and more! --- .../Framework/NPCS/ExtendedNPC.cs | 4 +- .../DebugSandBoxAndReferences/Class1.cs | 15 +- .../DebugSandBoxAndReferences.csproj | 1 + .../Framework/Commands/TimeCommands.cs | 45 ++++++ GeneralMods/MoreRain/MoreRain.cs | 68 +++------ GeneralMods/MoreRain/manifest.json | 2 +- GeneralMods/NightOwl/NightOwl.cs | 129 ++++++++++++++++++ GeneralMods/SaveAnywhere/SaveAnywhere.cs | 69 +++++++++- GeneralMods/SaveAnywhere/manifest.json | 2 +- .../Framework/Menus/MusicManagerMenu.cs | 1 + .../Graphics/Icons/Prismatic Star Big.png | Bin 0 -> 1590 bytes .../Content/Graphics/Icons/Prismatic Star.png | Bin 0 -> 651 bytes Images/ModBannerTemplate.pdn | Bin 0 -> 19068 bytes Images/ModBanners/StardustCore.pdn | Bin 0 -> 65484 bytes .../Original/Moonlight Blue/capitalS.png | Bin 0 -> 3894 bytes .../Original/Moonlight Blue/lowercaseA.png | Bin 0 -> 3520 bytes .../Original/Moonlight Blue/lowercaseD.png | Bin 0 -> 4335 bytes .../Original/Moonlight Blue/lowercaseR.png | Bin 0 -> 2782 bytes .../Original/Moonlight Blue/lowercaseS.png | Bin 0 -> 2513 bytes .../Original/Moonlight Blue/lowercaseT.png | Bin 0 -> 2866 bytes .../Original/Moonlight Blue/lowercaseU.png | Bin 0 -> 3416 bytes .../Original/Starlight Yellow/capitalC.png | Bin 0 -> 4661 bytes .../Original/Starlight Yellow/lowercaseE.png | Bin 0 -> 3060 bytes .../Original/Starlight Yellow/lowercaseO.png | Bin 0 -> 3223 bytes .../Original/Starlight Yellow/lowercaseR.png | Bin 0 -> 3070 bytes .../VanillaStardewFont/Original/capitalC.png | Bin 0 -> 274 bytes .../VanillaStardewFont/Original/capitalS.png | Bin 0 -> 280 bytes .../Original/lowercaseA.png | Bin 0 -> 248 bytes .../Original/lowercaseD.png | Bin 0 -> 254 bytes .../Original/lowercaseE.png | Bin 0 -> 253 bytes .../Original/lowercaseO.png | Bin 0 -> 240 bytes .../Original/lowercaseR.png | Bin 0 -> 249 bytes .../Original/lowercaseS.png | Bin 0 -> 248 bytes .../Original/lowercaseT.png | Bin 0 -> 244 bytes .../Original/lowercaseU.png | Bin 0 -> 230 bytes 35 files changed, 273 insertions(+), 63 deletions(-) create mode 100644 GeneralMods/DebugSandBoxAndReferences/Framework/Commands/TimeCommands.cs create mode 100644 GeneralMods/StardustCore/Content/Graphics/Icons/Prismatic Star Big.png create mode 100644 GeneralMods/StardustCore/Content/Graphics/Icons/Prismatic Star.png create mode 100644 Images/ModBannerTemplate.pdn create mode 100644 Images/ModBanners/StardustCore.pdn create mode 100644 Images/VanillaStardewFont/Original/Moonlight Blue/capitalS.png create mode 100644 Images/VanillaStardewFont/Original/Moonlight Blue/lowercaseA.png create mode 100644 Images/VanillaStardewFont/Original/Moonlight Blue/lowercaseD.png create mode 100644 Images/VanillaStardewFont/Original/Moonlight Blue/lowercaseR.png create mode 100644 Images/VanillaStardewFont/Original/Moonlight Blue/lowercaseS.png create mode 100644 Images/VanillaStardewFont/Original/Moonlight Blue/lowercaseT.png create mode 100644 Images/VanillaStardewFont/Original/Moonlight Blue/lowercaseU.png create mode 100644 Images/VanillaStardewFont/Original/Starlight Yellow/capitalC.png create mode 100644 Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseE.png create mode 100644 Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseO.png create mode 100644 Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseR.png create mode 100644 Images/VanillaStardewFont/Original/capitalC.png create mode 100644 Images/VanillaStardewFont/Original/capitalS.png create mode 100644 Images/VanillaStardewFont/Original/lowercaseA.png create mode 100644 Images/VanillaStardewFont/Original/lowercaseD.png create mode 100644 Images/VanillaStardewFont/Original/lowercaseE.png create mode 100644 Images/VanillaStardewFont/Original/lowercaseO.png create mode 100644 Images/VanillaStardewFont/Original/lowercaseR.png create mode 100644 Images/VanillaStardewFont/Original/lowercaseS.png create mode 100644 Images/VanillaStardewFont/Original/lowercaseT.png create mode 100644 Images/VanillaStardewFont/Original/lowercaseU.png diff --git a/GeneralMods/CustomNPCFramework/Framework/NPCS/ExtendedNPC.cs b/GeneralMods/CustomNPCFramework/Framework/NPCS/ExtendedNPC.cs index 62844cd3..925fd7c3 100644 --- a/GeneralMods/CustomNPCFramework/Framework/NPCS/ExtendedNPC.cs +++ b/GeneralMods/CustomNPCFramework/Framework/NPCS/ExtendedNPC.cs @@ -190,7 +190,7 @@ namespace CustomNPCFramework.Framework.NPCS this.Sprite.standAndFaceDirection(this.defaultFacingDirection); if (this.isMarried()) - this.marriageDuties(true); + this.marriageDuties(); bool flag = Utility.isFestivalDay(Game1.dayOfMonth, Game1.currentSeason); try { @@ -597,7 +597,7 @@ namespace CustomNPCFramework.Framework.NPCS bool flag = Utility.isFestivalDay(dayOfMonth, Game1.currentSeason); if (!this.isMarried()) return; - this.marriageDuties(true); + this.marriageDuties(); //Friendship f=Game1.player.GetSpouseFriendship(); //this.daysMarried = this.daysMarried + 1; } diff --git a/GeneralMods/DebugSandBoxAndReferences/Class1.cs b/GeneralMods/DebugSandBoxAndReferences/Class1.cs index 7b201b5d..b0a78b69 100644 --- a/GeneralMods/DebugSandBoxAndReferences/Class1.cs +++ b/GeneralMods/DebugSandBoxAndReferences/Class1.cs @@ -1,4 +1,5 @@ -using Microsoft.Xna.Framework; +using DebugSandBoxAndReferences.Framework.Commands; +using Microsoft.Xna.Framework; using StardewModdingAPI; using StardewValley; using System; @@ -9,7 +10,7 @@ using System.Threading.Tasks; namespace DebugSandBoxAndReferences { - public class DebugSandBox + public class DebugSandBox : Mod { /* * Notes: @@ -17,13 +18,13 @@ namespace DebugSandBoxAndReferences * Game1.MainPlayer will always target the host player. * */ - - - public void Main() + public override void Entry(IModHelper helper) { - + TimeCommands.registerCommands(helper); } + + /* /// /// This is how you will iterate across a new dictionary in stardew valley /// @@ -36,5 +37,7 @@ namespace DebugSandBoxAndReferences } } + */ + } } diff --git a/GeneralMods/DebugSandBoxAndReferences/DebugSandBoxAndReferences.csproj b/GeneralMods/DebugSandBoxAndReferences/DebugSandBoxAndReferences.csproj index 86554908..746fc3f7 100644 --- a/GeneralMods/DebugSandBoxAndReferences/DebugSandBoxAndReferences.csproj +++ b/GeneralMods/DebugSandBoxAndReferences/DebugSandBoxAndReferences.csproj @@ -86,6 +86,7 @@ + diff --git a/GeneralMods/DebugSandBoxAndReferences/Framework/Commands/TimeCommands.cs b/GeneralMods/DebugSandBoxAndReferences/Framework/Commands/TimeCommands.cs new file mode 100644 index 00000000..91a97096 --- /dev/null +++ b/GeneralMods/DebugSandBoxAndReferences/Framework/Commands/TimeCommands.cs @@ -0,0 +1,45 @@ +using StardewValley; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DebugSandBoxAndReferences.Framework.Commands +{ + class TimeCommands + { + /// + /// Registers all time modifying commands. + /// + /// + public static void registerCommands(StardewModdingAPI.IModHelper helper) + { + helper.ConsoleCommands.Add("debug_world_settime", "Sets the in-game time to be any valid int. Allows for setting time to be early in the morning, i.e. 3 A.M", world_settime); + helper.ConsoleCommands.Add("debug_world_modifytimetick", "Sets the time interval in seconds between 10-minute in-game update ticks.", world_modifyTimeTick); + } + + /// + /// Sets the time of day to the first argument passed into this command. This argument should be an integer value. + /// + /// The name of the command. + /// The parameters to pass in. Only the first one is read as that should be the integer valuve for time. + public static void world_settime(string name, string[] args) + { + Game1.timeOfDay = Convert.ToInt32(args[0]); + } + + /// + /// Sets the time interval in seconds between 10-minute in-game update ticks. + /// + /// + /// + public static void world_modifyTimeTick(string name, string[] args) + { + Game1.gameTimeInterval = Convert.ToInt32(args[0]); + } + + + + } +} diff --git a/GeneralMods/MoreRain/MoreRain.cs b/GeneralMods/MoreRain/MoreRain.cs index f7613ce7..8b1adfbd 100644 --- a/GeneralMods/MoreRain/MoreRain.cs +++ b/GeneralMods/MoreRain/MoreRain.cs @@ -79,27 +79,16 @@ namespace Omegasis.MoreRain { Game1.weatherForTomorrow = Game1.weather_rain; this.VerboseLog("It will rain tomorrow."); - } - else - { - Game1.weatherForTomorrow = Game1.weather_sunny; - this.VerboseLog("It will not rain tomorrow."); + return; } - // set storm - if (Game1.weatherForTomorrow == Game1.weather_rain) + if (chance <= this.Config.SpringThunderChance) { - if (chance <= this.Config.SpringThunderChance) - { - Game1.weatherForTomorrow = Game1.weather_lightning; - this.VerboseLog("It will be stormy tomorrow."); - } - else - { - Game1.weatherForTomorrow = Game1.weather_rain; - this.VerboseLog("There will be no lightning tomorrow."); - } + Game1.weatherForTomorrow = Game1.weather_lightning; + this.VerboseLog("It will be stormy tomorrow."); + return; } + break; case "summer": @@ -108,26 +97,15 @@ namespace Omegasis.MoreRain { Game1.weatherForTomorrow = Game1.weather_rain; this.VerboseLog("It will rain tomorrow."); - } - else - { - Game1.weatherForTomorrow = Game1.weather_sunny; - this.VerboseLog("It will not rain tomorrow."); + return; } - // set storm - if (Game1.weatherForTomorrow == Game1.weather_rain) + + if (chance <= this.Config.SummerThunderChance) { - if (chance <= this.Config.SummerThunderChance) - { - Game1.weatherForTomorrow = Game1.weather_lightning; - this.VerboseLog("It will be stormy tomorrow."); - } - else - { - Game1.weatherForTomorrow = Game1.weather_rain; - this.VerboseLog("There will be no lightning tomorrow."); - } + Game1.weatherForTomorrow = Game1.weather_lightning; + this.VerboseLog("It will be stormy tomorrow."); + return; } break; @@ -138,26 +116,14 @@ namespace Omegasis.MoreRain { Game1.weatherForTomorrow = Game1.weather_rain; this.VerboseLog("It will rain tomorrow."); - } - else - { - Game1.weatherForTomorrow = Game1.weather_sunny; - this.VerboseLog("It will not rain tomorrow."); + return; } - // set storm - if (Game1.weatherForTomorrow == Game1.weather_rain) + if (chance <= this.Config.FallThunderChance) { - if (chance <= this.Config.FallThunderChance) - { - Game1.weatherForTomorrow = Game1.weather_lightning; - this.VerboseLog("It will be stormy tomorrow."); - } - else - { - Game1.weatherForTomorrow = Game1.weather_rain; - this.VerboseLog("There will be no lightning tomorrow."); - } + Game1.weatherForTomorrow = Game1.weather_lightning; + this.VerboseLog("It will be stormy tomorrow."); + return; } break; diff --git a/GeneralMods/MoreRain/manifest.json b/GeneralMods/MoreRain/manifest.json index aff4f327..481fc266 100644 --- a/GeneralMods/MoreRain/manifest.json +++ b/GeneralMods/MoreRain/manifest.json @@ -1,7 +1,7 @@ { "Name": "More Rain", "Author": "Alpha_Omegasis", - "Version": "1.6.0", + "Version": "1.6.1", "Description": "Change how much it rains in the game.", "UniqueID": "Omegasis.MoreRain", "EntryDll": "MoreRain.dll", diff --git a/GeneralMods/NightOwl/NightOwl.cs b/GeneralMods/NightOwl/NightOwl.cs index 9474ad49..a2f7949c 100644 --- a/GeneralMods/NightOwl/NightOwl.cs +++ b/GeneralMods/NightOwl/NightOwl.cs @@ -2,10 +2,13 @@ using System.IO; using System.Linq; using Microsoft.Xna.Framework; +using Netcode; using Omegasis.NightOwl.Framework; using StardewModdingAPI; using StardewModdingAPI.Events; using StardewValley; +using StardewValley.Characters; +using StardewValley.Locations; /*TODO: Issues: @@ -60,7 +63,30 @@ namespace Omegasis.NightOwl /// The player's health before they collapsed. private int PreCollapseHealth; + /// + /// Checks if the player was bathing or not before passing out. + /// + private bool isBathing; + /// + /// Checks if the player was in their swimsuit before passing out. + /// + private bool isInSwimSuit; + + /// + /// The horse the player was riding before they collapsed. + /// + private Horse horse; + + /// + /// Determines whehther or not to rewarp the player's horse to them. + /// + private bool shouldWarpHorse; + + /// + /// Event in the night taht simulates the earthquake event that should happen. + /// + StardewValley.Events.SoundInTheNightEvent eve; /********* ** Public methods @@ -75,12 +101,30 @@ namespace Omegasis.NightOwl TimeEvents.AfterDayStarted += this.TimeEvents_AfterDayStarted; SaveEvents.AfterLoad += this.SaveEvents_AfterLoad; GameEvents.FourthUpdateTick += this.GameEvents_FourthUpdateTick; + GameEvents.UpdateTick += GameEvents_UpdateTick; + shouldWarpHorse = false; } + /********* ** Private methods *********/ + + /// + /// Updates the earthquake event. + /// + /// + /// + private void GameEvents_UpdateTick(object sender, EventArgs e) + { + if (eve == null) return; + else + { + eve.tickUpdate(Game1.currentGameTime); + } + } + /// The method invoked every fourth game update (roughly 15 times per second). /// The event sender. /// The event data. @@ -140,6 +184,46 @@ namespace Omegasis.NightOwl Game1.player.money = this.PreCollapseMoney; if (this.Config.KeepPositionAfterCollapse) Game1.warpFarmer(this.PreCollapseMap, this.PreCollapseTile.X, this.PreCollapseTile.Y, false); + if (horse != null && shouldWarpHorse==true) + { + Game1.warpCharacter(horse, Game1.player.currentLocation, Game1.player.position); + shouldWarpHorse = false; + } + if (isInSwimSuit) + { + Game1.player.changeIntoSwimsuit(); + } + if (isBathing) + { + Game1.player.swimming.Value = true; + } + //Reflction to ensure that the railroad becomes properly unblocked. + if (Game1.dayOfMonth == 1 && Game1.currentSeason == "summer" && Game1.year == 1) + { + Mountain mountain = (Mountain)Game1.getLocationFromName("Mountain"); + + var reflect2 = Helper.Reflection.GetField(mountain, "railroadAreaBlocked", true); + var netBool2 = reflect2.GetValue(); + netBool2.Value = false; + reflect2.SetValue(netBool2); + + + var reflect3 = Helper.Reflection.GetField(mountain, "railroadBlockRect", true); + var netBool3 = reflect3.GetValue(); + netBool3 = new Rectangle(0, 0, 0, 0); + reflect3.SetValue(netBool3); + + + eve = new StardewValley.Events.SoundInTheNightEvent(4); + eve.setUp(); + eve.makeChangesToLocation(); + + } + } + + if(Game1.currentSeason!="spring" && Game1.year >= 1) + { + clearRailRoadBlock(); } // delete annoying charge messages (if only I could do this with mail IRL) @@ -163,6 +247,25 @@ namespace Omegasis.NightOwl } } + /// + /// If the user for this mod never gets the event that makes the railroad blok go away we will always force it to go away if they have met the conditions for it. I.E not being in spring of year 1. + /// + private void clearRailRoadBlock() + { + Mountain mountain = (Mountain)Game1.getLocationFromName("Mountain"); + + var reflect2 = Helper.Reflection.GetField(mountain, "railroadAreaBlocked", true); + var netBool2 = reflect2.GetValue(); + netBool2.Value = false; + reflect2.SetValue(netBool2); + + + var reflect3 = Helper.Reflection.GetField(mountain, "railroadBlockRect", true); + var netBool3 = reflect3.GetValue(); + netBool3 = new Rectangle(0, 0, 0, 0); + reflect3.SetValue(netBool3); + } + /// The method invoked when changes. /// The event sender. /// The event data. @@ -193,6 +296,26 @@ namespace Omegasis.NightOwl this.IsUpLate = true; if (this.IsUpLate && Game1.timeOfDay == 600 && !this.JustCollapsed) { + if (Game1.player.isRidingHorse()) + { + foreach (var character in Game1.player.currentLocation.characters) + { + try + { + if (character is Horse) + { + (character as Horse).dismount(); + horse = (character as Horse); + shouldWarpHorse = true; + } + + } + catch (Exception err) + { + + } + } + } this.JustCollapsed = true; this.ShouldResetPlayerAfterCollapseNow = true; @@ -201,10 +324,16 @@ namespace Omegasis.NightOwl this.PreCollapseStamina = Game1.player.stamina; this.PreCollapseHealth = Game1.player.health; this.PreCollapseMoney = Game1.player.money; + this.isInSwimSuit = Game1.player.bathingClothes.Value; + this.isBathing = Game1.player.swimming.Value; + + if (Game1.currentMinigame != null) Game1.currentMinigame = null; Game1.farmerShouldPassOut = true; + + } } catch (Exception ex) diff --git a/GeneralMods/SaveAnywhere/SaveAnywhere.cs b/GeneralMods/SaveAnywhere/SaveAnywhere.cs index 99e32f40..54b50400 100644 --- a/GeneralMods/SaveAnywhere/SaveAnywhere.cs +++ b/GeneralMods/SaveAnywhere/SaveAnywhere.cs @@ -6,6 +6,7 @@ using StardewModdingAPI; using StardewModdingAPI.Events; using StardewValley; using StardewValley.Characters; +using StardewValley.Monsters; namespace Omegasis.SaveAnywhere { @@ -40,6 +41,10 @@ namespace Omegasis.SaveAnywhere /// public static IMonitor ModMonitor; + private List monsters; + + private bool customMenuOpen; + /********* ** Public methods *********/ @@ -56,11 +61,16 @@ namespace Omegasis.SaveAnywhere ControlEvents.KeyPressed += this.ControlEvents_KeyPressed; GameEvents.UpdateTick += this.GameEvents_UpdateTick; TimeEvents.AfterDayStarted += this.TimeEvents_AfterDayStarted; + ModHelper = helper; ModMonitor = Monitor; + customMenuOpen = false; } + + + /********* ** Private methods *********/ @@ -84,7 +94,7 @@ namespace Omegasis.SaveAnywhere private void SaveEvents_AfterSave(object sender, EventArgs e) { // clear custom data after a normal save (to avoid restoring old state) - if (!this.IsCustomSaving) + if (!this.IsCustomSaving) this.SaveManager.ClearData(); } @@ -116,6 +126,60 @@ namespace Omegasis.SaveAnywhere this.ShouldResetSchedules = false; this.ApplySchedules(); } + + if (Game1.activeClickableMenu == null && this.customMenuOpen == false) return; + if(Game1.activeClickableMenu==null && this.customMenuOpen == true) + { + restoreMonsters(); + this.customMenuOpen = false; + return; + } + if (Game1.activeClickableMenu != null) + { + if (Game1.activeClickableMenu.GetType() == typeof(NewSaveGameMenu)) + { + this.customMenuOpen = true; + } + } + } + + /// + /// Saves all monsters from the game world. + /// + private void cleanMonsters() + { + monsters = new List(); + + foreach (var monster in Game1.player.currentLocation.characters) + { + try + { + if (monster is Monster) + { + monsters.Add(monster as Monster); + } + } + catch (Exception err) + { + + } + } + + foreach (var monster in this.monsters) + { + Game1.player.currentLocation.characters.Remove(monster); + } + } + + /// + /// Adds all saved monster back into the game world. + /// + private void restoreMonsters() + { + foreach (var monster in this.monsters) + { + Game1.player.currentLocation.characters.Add(monster); + } } /// The method invoked after a new day starts. @@ -150,6 +214,7 @@ namespace Omegasis.SaveAnywhere { if (Game1.client==null) { + cleanMonsters(); // validate: community center Junimos can't be saved if (Game1.player.currentLocation.getCharacters().OfType().Any()) @@ -189,7 +254,7 @@ namespace Omegasis.SaveAnywhere string scheduleData; if (!this.NpcSchedules.TryGetValue(npc.Name, out scheduleData) || string.IsNullOrEmpty(scheduleData)) { - this.Monitor.Log("THIS IS AWKWARD"); + //this.Monitor.Log("THIS IS AWKWARD"); continue; } diff --git a/GeneralMods/SaveAnywhere/manifest.json b/GeneralMods/SaveAnywhere/manifest.json index 36fda132..d53330f2 100644 --- a/GeneralMods/SaveAnywhere/manifest.json +++ b/GeneralMods/SaveAnywhere/manifest.json @@ -1,7 +1,7 @@ { "Name": "Save Anywhere", "Author": "Alpha_Omegasis", - "Version": "2.7.0", + "Version": "2.7.2", "Description": "Lets you save almost anywhere.", "UniqueID": "Omegasis.SaveAnywhere", "EntryDll": "SaveAnywhere.dll", diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs index d3418495..aa5e8439 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs @@ -1061,6 +1061,7 @@ namespace StardewSymphonyRemastered.Framework.Menus } } this.selectAlbum(ok); + this.updateFancyButtons(); return; } diff --git a/GeneralMods/StardustCore/Content/Graphics/Icons/Prismatic Star Big.png b/GeneralMods/StardustCore/Content/Graphics/Icons/Prismatic Star Big.png new file mode 100644 index 0000000000000000000000000000000000000000..be88f0b6f856ead79f3dc8c393c2446733ee8dc3 GIT binary patch literal 1590 zcmeAS@N?(olHy`uVBq!ia0y~yU~~Xs4mP03*$GQm0V%d5Z+91l{~)+v@AAn&5zYdS z$YKTtzQZ8Qcszea3Q&-}#M9T6{Sh0xsE)k0^sNsJ46KJeT^vIyZoR#0pB)@1ap0lL zxf6Hm} z8@-L8yJMIf7#LXuh$R-78%qiQuEd@iH$>{fq{u=;)DDf zPAB(Ohvg*CkYYX1ng0&5@psN#H8pDDG*c5{fXGk#2M^gn%`X9 z9b{Q@ou@l=|!c+xfeMW!rONp)9`^9XzpmLN9W0o7Hhc>iVS-gf-Nuj%CrANR_vsXSG@ zCZoDy1|!yF$Mix7(@$XMUQh?6;Wvg%(6rLPu#3eZP&7|)$)`_cV~32 z-CvPkzghVa$uvPdlI10{nA@eKgNJ$G zdHGkf>jb;h#FXlY4+aP${)O&vosisq-067r?p<@v?A#hHQMvg`#pU$g`Dau5e!g0L za>@MZzcL=3FJ3BTb??sa=?I@;jci!*g{Q&0-1mi3l5%#5THgE1UCveNET?PBE&KlH zryR?tpa0JIr^{J8@Acxxp7Y<#y(~U?U)^Ty?uF+!ODa52H^49pYs`Xe`r`3SsAM@X z`bB)d$cZd{U~9BUc6G>E5(|@E;`{y|IdY?9wTJixIk`7WUM`;8`fH!-`-{Nx><1?g gaUKRc()N?M5%03J^>)3lfF(SGr>mdKI;Vst0HOEvJOBUy literal 0 HcmV?d00001 diff --git a/GeneralMods/StardustCore/Content/Graphics/Icons/Prismatic Star.png b/GeneralMods/StardustCore/Content/Graphics/Icons/Prismatic Star.png new file mode 100644 index 0000000000000000000000000000000000000000..49dfc53b1d7dfa93a975aee84e2b37b77d6a3d76 GIT binary patch literal 651 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 HcP;+|c|B30 literal 0 HcmV?d00001 diff --git a/Images/ModBanners/StardustCore.pdn b/Images/ModBanners/StardustCore.pdn new file mode 100644 index 0000000000000000000000000000000000000000..09f7938b7218247486c2cd6ce9b612692c95a105 GIT binary patch literal 65484 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 literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/Moonlight Blue/lowercaseD.png b/Images/VanillaStardewFont/Original/Moonlight Blue/lowercaseD.png new file mode 100644 index 0000000000000000000000000000000000000000..02d49e3a54636efb97e24ff85346f5b29ae2bba9 GIT binary patch literal 4335 zcmeAS@N?(olHy`uVBq!ia0y~yU~~Xs4mP03*$GQm0V$SrM_)$E)e-c@Ne9i)o z$YKTtzC$3)D5~Mr02Gugag8Vm&QB{TPb^AhC`ioAE78kKEm1JhGte_K{HTyQm4QJZ z$J50zq$2L^-HW}dmc=d)zk0q~EBVR6@8sS-p)%u`**4QZS2Igmb8_Us+kX!yqT9eKP^!<@jk2J$t@l!r6H@eTzX+-mYZi3 z&`^h$0hV_;&ITEKT{`4Cjm@k5)JwOFX|n<+i2;oaunO@rciMcVXVR8}iAx(VEiBq4 zIBRLzlqIb|o2T$iz1(|2$8@oZZcIw%f|3<;^6*%x&h__Oh005Qh|)J2Uv591xWpb} z>ZZjP^84K<{W}10K%dioTRG2P%n-L)gEju$|1I9#S+&q2q)g;jF4QMla}O^B>CJ|C zCE%qD-&EPwx@d@B+Pt0@tN>XA^-PFWyK}1h!u!{#;F|#mz)>q{lrl#H78!pEGdTaJLQ0BzE|<80#mI)1Eo+|DymBW0JI`J zJj+dIlS#?3DHo!znR_n=m90w`K7Hi{v$g6p)Yc6qTVi5YN^S(&BN^WQH0=n`@^l~0y{WaEO}Kz1bA(jXx^-~(ZC?X%AG5df>8n#` z2?D)5*HHD#w6A9`X#i71LT1L!T|vfBN8j574V59`XgODqx1WB#c}W7{lTpFZ0D&j# z(ZoPZV)$2U1TLB`$>z9a9Yqv3x`{HNl27*~pPBO3N5Ix9qzIWf&43SFgp{z)o)}dK zFUvf>d|IN~11_Ib?;cEB5{AgBmxPXi3d(zv-X$0ZX@e>w zNa2^s`50XId6sXGTq%ku(6+P`f(qR2ORR77T>X5~tc7D{X!wXaY&YA@d zw~L~?RzGfp`2bY;e5&_73l6#$Tz9X2JOGV@wrS4_GJft~mIe;JlGb;xDjqjH?qBwQ;aBdI{>CNCO?8`a+#FDRP+2)s`UM?eC*iN}O3|q| z{3;5;No3~z?_Y#>U7mYD(u5n>MW_$Xa)sL;19NTx+gT@I2jTvdsKCy*E#m5+$e;eR z*57`i^ij-JT-)*+Pp5-oX-SCv&!BDOAYTA zOU>N~Y!zl?p7}n<4H(InxTB;#+b+K-X+7~v)3jqlMJX}E0ZSJC`}O)igH6Qa@Ao?% SHUkGI7(8A5T-G@yGywo)Inmbu literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/Moonlight Blue/lowercaseR.png b/Images/VanillaStardewFont/Original/Moonlight Blue/lowercaseR.png new file mode 100644 index 0000000000000000000000000000000000000000..d9f15dec4843c5dc36c0cb5326bb4c6ed597de09 GIT binary patch literal 2782 zcmeAS@N?(olHy`uVBq!ia0y~yU~~Xs4mP03*$GQm0V$SrM_)$E)e-c@Ne9i)o z$YKTtzC$3)D5~Mr02Gugag8Vm&QB{TPb^AhC`ioAE78kKEm1JhGte_K{HTyQm4SgP z+SA1`q$2L^m4m#mvx-_SPQSe5xxt)+Do=Bc{qNe*%^$U8g_(XWUx2rlDp%}(ps51} zK5+ftW%~c`{Qovq|NnfB-@a_$W6zc6?z6@%ZO@rybx3__f7QHSedcuOj%5BPg z#W8=1-K)x1*7K&k`V;#gwCcpNmC7|izg9e7`Mx4()#viY@Ry3Sm-T({e7Shua%96S z4%PoZ|KE4j>6a1iw*EElr8hlFPr_`nIAnFLH)Q(djeS+~e)PTCH1XA>x%;{Ic=6vf zDQqcSBfU~@d9v(Rn~$$1Q7rt_ch&s*6qk9sK^^A9Y|P+4y?` z18()5`BmSa+XIu$!%8nugg*UuWw-r*PGH=h4;BK(ht~Jy_x}F$2PUD`j0H&#b$FAhBzOotFVbm36w0ogA8=9z8t?e~0?yQRjM%#SOnhWg~&=loe zRu{CW`0q9^+iE-E9}D;kXF>DHn?Fljp8v`PrjHu6503JWV439RPtVSCUvF!Dee=`j zL9^YFOlS_-^m($-+}GPfU)}sX^8kBo2P}J}JXcq>x(@cJaU=gPf#uM=aq^tMSIN5j zVJp+mr!&caQS^gmj7f9nPk9lue=RW4o@cRp;XG$3df?R`--dpOUkh)6${>HQ(tm0P z+#$hYkqgS$paM_$!D4U-X3qf^1CxX1?&tgv2o7vhKX9P|Dk)ihtN_Q0)N)Yy^)c_S z+%rb8tAgi*7Y9Gy0xC-Gt-XKP=D;GWLzPJ-Ss|jJ%c?W#NEQb$FKJ?sN|^F zUdR8Lq5Bob^UjMaL9ViteShtJqFh3t>_ZzvE3kdbAK(3DdxlwOmGT^Qx8=t&L50zt z=>6@L4X&jvpO3t_0&@DCzVg@K4fr>#=qs2fF?VD*ict?#;KTgSFdbM;!GhYo!5dhG zzyeVD0H{`j1&iPVP}vQO0geJ-y`=^VSC$>1+5i@XOfkS}4jwV1)`3$0aykX3sg*z1 z0eMg}<6>nH!@mo_DC<2pndw72FqX4Q=7}`e17j+9@#iHBe-^gCv1I%)Q);d{>w|Q# u+E)e-c@Ne9i)o z$YKTtzC$3)D5~Mr02Gugag8Vm&QB{TPb^AhC`ioAE78kKEm1JhGte_K{HTyQ6{ykA z)5S5QBJSTyXRP*~u*ZYx=@rX@>71(?zURJ{2O2wc zK!g3e`hBRy%$|44JR{|NDpTz52E7fTL~7?Yk^n5W;_Ri^VIeI@|j%`M?Isl*;a(_r8Q(=Bl%qZr`rH`19qvnEPHS z&K7fzJ-+_A^<75yuM>Q`7q5GK{qx*+4U4NzEIS%_{p0JOe&q)Ou~`%P_uF|^sA_Yno*J)%pxG-zw!f;){bHmn`}<4aKX2*`e33EAJNGZ~>ftz@fQ* zy?c&&!a`uWl_>>>WL$jz4Zj0U;Is!0#XbAvHqLEm1*c4K2v*kGCRsCbgA-KtoG&%Y zcOw*llWr`+1aRtIhp+;ifUhfWgSi2mhF=Tb=8SlONXB0~-m>U?L8RoWBV|ltNQoI? zJviIowBG8Ket7by?yL99_9g^ES2u-5KKk z_Y))w?N!`x0ch>374dP9ENRZd_e!za|7(BqGkA`2d$2%it~sdug6C!?_Ny=UtOO=6 zcm@@;SmE~E7gUtN^V|VPQ>%PX=?c&9EPSgjRt5tTAv_B!7X!VA4n$w%hj(9ixF-F6|`gtES2i4EN!V@11hSk_a^ecwE^d8 z*{|}eK?QqUKCmPN=ef0gzxqQ#MfiGiV2KINc46*+kFNq3E)e-c@Ne9i)o z$YKTtzC$3)D5~Mr02Gugag8Vm&QB{TPb^AhC`ioAE78kKEm1JhGte_K{HTyQm4Sh4 zy{C&~NJZS+D+fDuy(hU|TpzqTJZTHt+K}wvr%w)4elWA#up?8HGy9+h>OHM3X{bElhL;Z^hzTp=u zFEjkRpg3D^(dYXA|L;fMEy`or0aWT*qU9&OI{I8MLwI}6t`5JWnaQQ6cM3juHNjW> z;!2C$HF=iiOff*im8?XU_g>X~?$)r{*(}y&`J*ixcRjtsQBZnfS@(;OIc8zo=SVZI z$G@M?_57A-SPbT|I62x9+}7U!wr}jE3SO~@%H`yFI!>m5%1q6 zxBu_o`TMR3RvSH#24>1ff!7~z-~a#eb-4R%URC`e;25yyPXeR! zx=SnWZGx9pKaN`20Ih|UNkhQe(UNkwS2$hg+QT=lzPcS+VY)s)y!yt~SGOV6;<`nj zABMik`uY}9(}rLC`9Z5}>#uK+`gHY+nhMd~QMJ|JD*E%^*NeM5z^adjo7+ooSfTVS z>8N0QT{KNXI_CfNT_q{(k2NreR zn0$5dJbg(1o`mW&P=kPeMs=N=9fo8-sM%ABU>E)e-c@Ne9i)o z$YKTtzC$3)D5~Mr02Gugag8Vm&QB{TPb^AhC`ioAE78kKEm1JhGte_K{HTyQm4Sih zs;7%%NJZS+D;HPhdKbA|d>*`8-S|o4oJrA2 z?RjJ4d1r+l(6Hso1s8$7?AdT^*ThjrkB0PU@)*sCqov0PD5ouD|G!?2sG@!;RzoX+ zBCBuC-)13d82L@Gif4JUeaiY#EznAx%nNPZvw{d0cts;!iseBk&MWiwCykH9F`UtZVj`RbU;2SaEm^?o?L5*T{B3^{9j zY?CH`5r_{~{!{eIe8!SIA13)=NN^#HVhI1LQD?b7%v_C8>?+WL_|?*r8M?Dt;?J$W z+Uwci3bf(*b)fkN7D+vv{yDoeStub8XvNR1KnpgkaQpG}PZTgoM1%nCs9OuPL1&fV k02qg}6Y|IX-_Pg&8Se8vT`Q&3(+^VT>FVdQ&MBb@0G<~t`v3p{ literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/Starlight Yellow/capitalC.png b/Images/VanillaStardewFont/Original/Starlight Yellow/capitalC.png new file mode 100644 index 0000000000000000000000000000000000000000..94e351ed39890d3c2af4a7dfda6c55b1aa5d8e3d GIT binary patch literal 4661 zcmeHLdrVVT9KH+%g|)F-bQZ|8Wu!tuB^6K-1!;Mdly|T^6hzb&kV0*EWQZb65#&)_ zi;4yvROlRFRmQ3vSO(aM3|ADG4?ry{nTB_y4dTuz^b!8pmPIrs+~nq__vUxb?|i@4 z_w|^+uP4d`XM!LI%G-+)h#&^8@LpsD-n117egKaJd)?@62qG#po!q$){9c^s6}lfm z(2ejmFeB0qftM>eR0b!AwTF|klf4^B+{sMf*eC4ftRma5vv*iOyo$*~5X=>Cid%5% zj@Rd;RSKEef-WSD@TPN>*lMjpO7xR(4!vyKR%vaDakcoyJ5^z1L$~9FH54ao3Z^8Sm){E%j{lbrs`htNWmb=Jb!MVTRa%9Ylcf#b z$)6c3yvN9RD+wwuL7Q>SE6KINv80BKo;7m%(OelS_)M7127ct0L9EUNTx(5fN-n44 z0-kNiyU3^I_jk3sP_Ga8W5k)XARj@?$X_qc;U9A0N;)6H=1(7ucy1@W?T zRWOd!g9?P8IMK1xu8`{nJ-OMe(Gt98W;0VDj}j*@3O$jufgHVTxVnmCC^1{y``ih{ zF0X?okg{JdxnlJ!_Uk6=r`y8^j8biv*0-^8Efy}X;L)=BAFPh?Zn=Lqhu(DKCpl^e zBGZfAXhQO}hK*&M4Y7f+6@9gGn>)b~^XVUy zDzD3<>tL|fp(i2?JZ!es!M99{dS5qp>~-`>E$msxw9!g@<)um%>B1##(ni@i+3LWJ zZjd1}VUCIh*--&{%0OYdn4ApYKhAiS>1W)_JTD8l`(>J4{_kw&D**gTW|Q@1%k+v& zyrFBI%fnT`j*=ze@QBCDadA>6<2e4XFi(r(|(VPU2aZQM1>`dUg#a1W2<|bbW^_ zx9t3ukuaR4MFq_H*?#mn!@MKpcQ;jJ4U+v8#FvEFq^u93JR% zL4o{J5o!c~NRwc8eu^$*xTc^_YM{Yl#IUVu&NKfJ1a%&Sc@U<{`+sLbOT!9V{8}SG zQ1seLt}IWgS8Jf%;YXqYN73tP-{(la(5p_+xQL(ZGJKz1o{e>|a|Td$e2xya)gKoc zEJE$`Ef@D%gI-L*q^)<3snQ=FnzQennLePqQx(m9MW}Lar2zBm%>3(+LV5t_VulG= zMokZH6_m49lpOanhV%c_sa~vd4KNl#qGRE5qJDe4!)8m!WTrsRq+P(Qc{oCsAM{7L~wdX}DL-N`*u7d?K zbPE^`Z+XEKERBY$aJ>_jYYxdgz*4A|rKik+>I9XS1eDmcFuj8U(ifyZJoU6ReSQQe zPf)l}y-kbL{q8_}0wDr{nwF>H3qXB>QiO_6El`^u`2*DqY7AnlmZ;GQM7$HMWYA)# zMe4_Lr*p7P|B!Ec^nLyJk1+&tuId*s8Y=I7^apEqinD7Z2i1 L^`%sAjXL}{22n4_ literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseE.png b/Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseE.png new file mode 100644 index 0000000000000000000000000000000000000000..879c59de0017c4de3544921d0e0a1e74d42c6167 GIT binary patch literal 3060 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 literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseR.png b/Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseR.png new file mode 100644 index 0000000000000000000000000000000000000000..6433b5144af2e72c50433738d2b43a351d43a7f3 GIT binary patch literal 3070 zcmeAS@N?(olHy`uVBq!ia0y~yU~~Xs4mP03*$GQm0V&4fAa^H*b?0PW0y!+{j=qiz z3>*8o|0J>k`J4qFk;M!Qe1}1p@p%4<6riAFiEBhjaDG}zd16s2LqTF@UWr~_YKel0 zo`If`;YWqcsSFIt4yi3sSVz|RD&uUE#-KE_n6ABzN3_l;__DcGp z{hXm(vsx$lnLg0m0Rwgq-}`@?U;p>5y}EhYpW~C4zPDIu^7-t8;75wly1EZNdnGRi z=}+JHc*&(R=FR?{?KxYww5Xe=`FQV*`PDbs%lJNzovPfXtCxi4U72C1`?ct$wV&46 z8si^RDo%uDd;fS}|1W=4@tI>inJcGf-=COvGjMM5w6uMaHC{F;tGBB9oZhwA>UhqX z8PlqEev{3dCVSN~E%VvzgUgRNZ;OgPv}KL;2-6&O$ld$&e6RC;*h6foYR#4{e^!2Z zlYu?R22y*OSMJKopO(KW-tD#djmFtePLJ&yfeGgMlv_f}p88*XUN#jN`?H?59;;`X zFT{Ud6BPUNSDk;Wb#~KYlhfS2|5<=3XypA(o?Y?fb{ zW}v%&-uivtZ~pKHCeDYJOSiRTMt-gNy7xS?fvcXceqU?$PZ*f~D*RUJCPszX#@D{z z{Biz)Q^o(wvY`6Ch0#bm)@TSie#jqpo#K70{l0#K%RcL;+&zk@%)h4 zmVdW})aIGl3I9;kdo(IVztEWV)9VKb=RgD$S#MJbf5w>vqtTMbIg&ez-;n( z3oy;-oUIAUd}iHyo~5p%dk3%-ESXal@_fe9nf}0nb@|7c2lxvG!?V3-^j+?IC9~P& zv**&8?@bW#S$GRv#M%K%@wvy+ne30a#;ny%wDN|beoHIYR{E*9I$(b^(U}ss$C9w5oX*E$b{N_w%Ufw%mtgT*JyagsdX=6LxeeKeW z(o0oi*2&I=_^MZOzS#Z4y$!vWg!HcW`Hec0qX1OLA_9_S2dFAUgdtN5uwq_|2tG!= zj}z8jLxdc|bWp_$k6X6}Z%{=Gk5=UapxPP{qk<2FfF%SXGDoc+bb)VW1#E9Yk^x!F zvH*tlp6<_=FvLynJLk!`M@@F_WTpyVpjoURW|frqaXm17`C^X9f$U2cEj1giFIik1 lL=6peXwm*#|M%Wt~$(699&og^&OM literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/capitalC.png b/Images/VanillaStardewFont/Original/capitalC.png new file mode 100644 index 0000000000000000000000000000000000000000..a904c1b7e410c9751e52161a280b136cdcd94df3 GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwsy?=IAP*q9#ul#}EtuvlFBF8WaSWcM4zs{LUjXt~s0O<8e=^TwU&i6M}xJnA-@R zeQ-+d3eR7m!xD!3_c!iyN&a$ob$_I;bNr&2W!IHhMR^^!ceXLhX~emH-p=@0Rzzg| zqK&7c{x{wD$GvF&A;#LyV+S;)el0kzHLJ1hjMkaE`;Kw@KWY2z^^ooAwNj3)@3gl8 PUBlq%>gTe~DWM4f)KOxU literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/capitalS.png b/Images/VanillaStardewFont/Original/capitalS.png new file mode 100644 index 0000000000000000000000000000000000000000..e0b6ee0329b62cd8acf2945b6d7d2c5a980a17e5 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwsy?=IAP*q7F|N#}Etur4t$X8Vop?|4zRD`MpP?-+~zyxtBDy^WC}Q@??7Sjz?na zW*l4_`&uQHUGCyag9lC@JT3hf__!HwI8Z!~!F)%H+8p%<2TNG4L^K4r85bP&pBMD) zm(ap(om$U1H@uQRS;>^VDz~&Y`$DG4=}M-$Z&p{$k_FdaeZtvIbK}3w VDlMHLdmQK{22WQ%mvv4FO#muLW+VUr literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/lowercaseA.png b/Images/VanillaStardewFont/Original/lowercaseA.png new file mode 100644 index 0000000000000000000000000000000000000000..78cdb3b3917d75ac7c61c601e8243f6b44b0a0fe GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwsy?=IAP*q6|+L#}EtuqZ0!88Vop`cTT?k`5njXNr}HV9^;?AXH8}Dk&Ji$IJHDq zge(YZ^kM}u91M%y@^{*vYc{ZcB-0t!z3F-CHBpgT$FFDfxo_>i5$7PcF8)Dh!N9Y8x7JYD@<);T3K0RY&1RR910 literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/lowercaseD.png b/Images/VanillaStardewFont/Original/lowercaseD.png new file mode 100644 index 0000000000000000000000000000000000000000..efbc06d7ac253bca9cf25d3c6dd254304e357b29 GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwsy?=IAP*qC8I*#}Etuqy2$=4F(*}0#LT=By}Z;C1rt33 zJwsy?=IAP*qFhfG#}Etur4s`A8Web(%hlH(zx&+mg2gR<=~;UY#C1uWx!b=WsL_j6 zOLRpDlo4>I=f-xO_F93o@HJEK)IaC==J0#LT=By}Z;C1rt33 zJwsy?=IAP*q6AMD#}Etuwf&BK4GKIgzt#62zn{&jIPqMgtJzG3$)&<)@76a4F)n5D zVx7XJAsV2yAxE=NzViOg?n`gFHm6CQik))5v9SM%-l@aP)%y)y eC+n2gJMKPRdPiG{IVlck7lWs(pUXO@geCwX-%m3D literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/lowercaseR.png b/Images/VanillaStardewFont/Original/lowercaseR.png new file mode 100644 index 0000000000000000000000000000000000000000..bfc2a9f83aab9b89e701fa8e4c2874c322029c4b GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwsy?=IAP*qD)U0#}EturG0^12Mjoz_g-GNeYf>$S&Pa2t!(#J@pBrN+c$Z!YKg80 zSrEk7dQ&uC?OApI`=0L#ixy1pd0^Y&^}jo=d32Cq(Nf`#k0#LT=By}Z;C1rt33 zJwsy?=IAP*q6|+L#}EtuwG*Pb8VqA+hBtRU?ny5ToE2LbRup(nv-nQpPMr#2z5N+wf#0N$Pdf2t(VHui683iA nbp3f68w?PTzD^>bP0l+XkK#4=L& literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/lowercaseT.png b/Images/VanillaStardewFont/Original/lowercaseT.png new file mode 100644 index 0000000000000000000000000000000000000000..5c55fc4f9e499b2e1e111f71cd121b2f3857fc80 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwsy?=IAP*q7+XT#}EtuvlBe|4k+*(`4PPT`u^pSFO)ts2J*l45Ie{vc;U<&Q4P@m ztpyi6cp{CcPR jlixqrsfT#4Z7gG`XId_2KV_CC&^`uFS3j3^P60#LT=By}Z;C1rt33 zJwsy?=IAP*qA*Vv#}EtuyFCXv85DS!cTax3vwCZ&qmLY0JzL*3Af) Date: Tue, 12 Jun 2018 18:42:31 -0700 Subject: [PATCH 003/110] Rewrote the serialization fuctions of SDust Core to support custom tools. A huge pain but it should work. --- .../AdditionalCropsFramework/ModCore.cs | 1 + GeneralMods/NightOwl/NightOwl.cs | 5 +- GeneralMods/NightOwl/manifest.json | 2 +- .../Content/Graphics/Tools/CustomAxe.png | Bin 0 -> 291 bytes .../StardustCore/Interfaces/ISerializeable.cs | 27 ++ .../Interfaces/IToolSerializer.cs | 15 + GeneralMods/StardustCore/ModCore.cs | 13 +- .../StardustCore/{ => Objects}/CoreObject.cs | 48 +- .../StardustCore/Objects/Tools/ExtendedAxe.cs | 134 ++++++ .../Serialization_ExtendedAxe.cs | 42 ++ .../SerializedObjectBase.cs | 29 ++ .../Serialization/Serialization.cs | 440 ++++++++++++------ .../Serialization/SerializerDataNode.cs | 5 +- GeneralMods/StardustCore/StardustCore.csproj | 12 +- .../UIUtilities/IClickableMenuExtended.cs | 18 +- .../UIUtilities/MenuComponents/Button.cs | 6 +- .../UIUtilities/Texture2DExtended.cs | 11 +- 17 files changed, 642 insertions(+), 166 deletions(-) create mode 100644 GeneralMods/StardustCore/Content/Graphics/Tools/CustomAxe.png create mode 100644 GeneralMods/StardustCore/Interfaces/ISerializeable.cs create mode 100644 GeneralMods/StardustCore/Interfaces/IToolSerializer.cs rename GeneralMods/StardustCore/{ => Objects}/CoreObject.cs (96%) create mode 100644 GeneralMods/StardustCore/Objects/Tools/ExtendedAxe.cs create mode 100644 GeneralMods/StardustCore/Objects/Tools/SerializationInformation/Serialization_ExtendedAxe.cs create mode 100644 GeneralMods/StardustCore/Objects/Tools/SerializationInformation/SerializedObjectBase.cs diff --git a/GeneralMods/AdditionalCropsFramework/ModCore.cs b/GeneralMods/AdditionalCropsFramework/ModCore.cs index 7682ef44..ecc87717 100644 --- a/GeneralMods/AdditionalCropsFramework/ModCore.cs +++ b/GeneralMods/AdditionalCropsFramework/ModCore.cs @@ -4,6 +4,7 @@ using Microsoft.Xna.Framework.Input; using StardewModdingAPI; using StardewValley; using StardewValley.Menus; +using StardustCore.Objects.Tools; using StardustCore.Serialization; using System; using System.Collections.Generic; diff --git a/GeneralMods/NightOwl/NightOwl.cs b/GeneralMods/NightOwl/NightOwl.cs index a2f7949c..e15185ea 100644 --- a/GeneralMods/NightOwl/NightOwl.cs +++ b/GeneralMods/NightOwl/NightOwl.cs @@ -183,7 +183,10 @@ namespace Omegasis.NightOwl if (this.Config.KeepMoneyAfterCollapse) Game1.player.money = this.PreCollapseMoney; if (this.Config.KeepPositionAfterCollapse) - Game1.warpFarmer(this.PreCollapseMap, this.PreCollapseTile.X, this.PreCollapseTile.Y, false); + if (Game1.weddingToday == false) + { + Game1.warpFarmer(this.PreCollapseMap, this.PreCollapseTile.X, this.PreCollapseTile.Y, false); + } if (horse != null && shouldWarpHorse==true) { Game1.warpCharacter(horse, Game1.player.currentLocation, Game1.player.position); diff --git a/GeneralMods/NightOwl/manifest.json b/GeneralMods/NightOwl/manifest.json index 95407765..d722a920 100644 --- a/GeneralMods/NightOwl/manifest.json +++ b/GeneralMods/NightOwl/manifest.json @@ -1,7 +1,7 @@ { "Name": "Night Owl", "Author": "Alpha_Omegasis", - "Version": "1.5.0", + "Version": "1.5.1", "Description": "Lets you stay up all night.", "UniqueID": "Omegasis.NightOwl", "EntryDll": "NightOwl.dll", diff --git a/GeneralMods/StardustCore/Content/Graphics/Tools/CustomAxe.png b/GeneralMods/StardustCore/Content/Graphics/Tools/CustomAxe.png new file mode 100644 index 0000000000000000000000000000000000000000..d8b7237a509afae2193ebd3dc15a79df7e0a8d7e GIT binary patch literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJtM=93Yk-ZiY9xyIEGmGCo8bsn04zfd!oj46NXDO1cW$`DQuf-!Ytvul#@Ay*0&Sg+Qy;J!q#riXkKHBG(`m%8OfrqZ%Fe>;O*f-Dd*_I|C zpTfW)ytcB-Tsp>>r@=(%3eP6d*=dUyJU-8p@!N2Dq0yb%NVeB$#X7EtH eIZKnBhlio1xl=n-A}0grJO)o!KbLh*2~7ZCO + /// Used to extend custom serialization to a variety of items. + /// + public interface IItemSerializeable + { + /// + /// Gets the type of object I am trying to parse. + /// + /// + Type getCutsomType(); + + /// + /// Returns the serialization name of the object I am serializing. + /// + /// + string GetSerializationName(); + } +} diff --git a/GeneralMods/StardustCore/Interfaces/IToolSerializer.cs b/GeneralMods/StardustCore/Interfaces/IToolSerializer.cs new file mode 100644 index 00000000..c633679e --- /dev/null +++ b/GeneralMods/StardustCore/Interfaces/IToolSerializer.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StardustCore.Interfaces +{ + /// + /// Used to mark items that are valid tools so we can do things like if(Item is IToolSerializer) + /// + interface IToolSerializer + { + } +} diff --git a/GeneralMods/StardustCore/ModCore.cs b/GeneralMods/StardustCore/ModCore.cs index ef318c83..35b71450 100644 --- a/GeneralMods/StardustCore/ModCore.cs +++ b/GeneralMods/StardustCore/ModCore.cs @@ -3,6 +3,7 @@ using StardewModdingAPI; using StardewValley; using StardewValley.Menus; using StardustCore.ModInfo; +using StardustCore.Objects.Tools; using StardustCore.Serialization; using StardustCore.UIUtilities.SpriteFonts; using System; @@ -23,7 +24,7 @@ namespace StardustCore public static string ContentDirectory; public override void Entry(IModHelper helper) { - ModHelper = helper; + ModHelper = Helper; ModMonitor = Monitor; //Unused MetaData information. Works in player inventory but not in chests. Besides who really care where an object is from anyways. Also doesn't work 100% like I intended since it only gets base mod object that this runs from, not extensions? @@ -43,6 +44,8 @@ namespace StardustCore ContentDirectory = Path.Combine(ModHelper.DirectoryPath, "Content"); if (!Directory.Exists(ContentDirectory)) Directory.CreateDirectory(ContentDirectory); SpriteFonts.initialize(); + + SerializationManager.initializeDefaultSuportedTypes(); } @@ -53,6 +56,14 @@ namespace StardustCore { SerializationManager.restoreAllModObjects(SerializationManager.trackedObjectList); + ExtendedAxe axe = new ExtendedAxe(); + axe.UpgradeLevel = 1; + axe.Name = "Hello Axe"; + axe.DisplayName = "Hello Axe"; + Game1.player.addItemToInventory(axe); + + ExtendedAxe.Serialize(axe); + } private void SaveEvents_AfterSave(object sender, EventArgs e) diff --git a/GeneralMods/StardustCore/CoreObject.cs b/GeneralMods/StardustCore/Objects/CoreObject.cs similarity index 96% rename from GeneralMods/StardustCore/CoreObject.cs rename to GeneralMods/StardustCore/Objects/CoreObject.cs index d6588d7d..814def34 100644 --- a/GeneralMods/StardustCore/CoreObject.cs +++ b/GeneralMods/StardustCore/Objects/CoreObject.cs @@ -6,6 +6,7 @@ using StardewValley.Locations; using StardewValley.Menus; using StardewValley.Objects; using StardustCore.Animations; +using StardustCore.Interfaces; using StardustCore.UIUtilities; using System; using System.Collections.Generic; @@ -18,7 +19,7 @@ namespace StardustCore /// /// - public class CoreObject : StardewValley.Object + public class CoreObject : StardewValley.Object, IItemSerializeable { public Vector2 position; @@ -132,7 +133,7 @@ namespace StardustCore this.Decoration_type = this.getTypeNumberFromName(array[1]); this.description = "Can be placed inside your house."; - this.defaultSourceRect = new Rectangle(which * 16 % TextureSheet.texture.Width, which * 16 / TextureSheet.texture.Width * 16, 1, 1); + this.defaultSourceRect = new Rectangle(which * 16 % TextureSheet.getTexture().Width, which * 16 / TextureSheet.getTexture().Width * 16, 1, 1); if (array[2].Equals("-1")) { this.sourceRect = this.getDefaultSourceRectForType(which, this.Decoration_type); @@ -148,7 +149,7 @@ namespace StardustCore { ' ' })[1]); - this.sourceRect = new Rectangle(which * 16 % TextureSheet.texture.Width, which * 16 / TextureSheet.texture.Width * 16, this.defaultSourceRect.Width * 16, this.defaultSourceRect.Height * 16); + this.sourceRect = new Rectangle(which * 16 % TextureSheet.getTexture().Width, which * 16 / TextureSheet.getTexture().Width * 16, this.defaultSourceRect.Width * 16, this.defaultSourceRect.Height * 16); this.defaultSourceRect = this.sourceRect; } this.defaultBoundingBox = new Rectangle((int)this.TileLocation.X, (int)this.TileLocation.Y, 1, 1); @@ -174,6 +175,7 @@ namespace StardustCore this.rotations = Convert.ToInt32(array[4]); this.Price = Convert.ToInt32(array[5]); this.ParentSheetIndex = which; + this.serializationName=this.GetType().ToString(); } public override string getDescription() @@ -1208,7 +1210,7 @@ namespace StardustCore num = 1; num2 = 2; IL_94: - return new Rectangle(tileIndex * 16 % TextureSheet.texture.Width, tileIndex * 16 / TextureSheet.texture.Width * 16, num * 16, num2 * 16); + return new Rectangle(tileIndex * 16 % TextureSheet.getTexture().Width, tileIndex * 16 / TextureSheet.getTexture().Width * 16, num * 16, num2 * 16); } private Rectangle getDefaultBoundingBoxForType(int type) @@ -1395,7 +1397,7 @@ namespace StardustCore float num = this.Quality < 4 ? 0.0f : (float)((Math.Cos((double)Game1.currentGameTime.TotalGameTime.Milliseconds * Math.PI / 512.0) + 1.0) * 0.0500000007450581); spriteBatch.Draw(Game1.mouseCursors, location + new Vector2(12f, (float)(Game1.tileSize - 12) + num), new Microsoft.Xna.Framework.Rectangle?(this.Quality < 4 ? new Microsoft.Xna.Framework.Rectangle(338 + (this.Quality - 1) * 8, 400, 8, 8) : new Microsoft.Xna.Framework.Rectangle(346, 392, 8, 8)), Color.White * transparency, 0.0f, new Vector2(4f, 4f), (float)(3.0 * (double)scaleSize * (1.0 + (double)num)), SpriteEffects.None, layerDepth); } - spriteBatch.Draw(TextureSheet.texture, location + new Vector2((float)(Game1.tileSize), (float)(Game1.tileSize)), new Rectangle?(this.defaultSourceRect), Color.White * transparency, 0f, new Vector2((float)(this.defaultSourceRect.Width / 2), (float)(this.defaultSourceRect.Height)), 1f * this.getScaleSize() * scaleSize * .5f, SpriteEffects.None, layerDepth); + spriteBatch.Draw(TextureSheet.getTexture(), location + new Vector2((float)(Game1.tileSize), (float)(Game1.tileSize)), new Rectangle?(this.defaultSourceRect), Color.White * transparency, 0f, new Vector2((float)(this.defaultSourceRect.Width / 2), (float)(this.defaultSourceRect.Height)), 1f * this.getScaleSize() * scaleSize * .5f, SpriteEffects.None, layerDepth); } /// @@ -1409,11 +1411,11 @@ namespace StardustCore { if (x == -1) { - spriteBatch.Draw(TextureSheet.texture, Game1.GlobalToLocal(Game1.viewport, this.drawPosition), new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, (this.Decoration_type == 12) ? 0f : ((float)(this.boundingBox.Bottom - 8) / 10000f)); + spriteBatch.Draw(TextureSheet.getTexture(), Game1.GlobalToLocal(Game1.viewport, this.drawPosition), new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, (this.Decoration_type == 12) ? 0f : ((float)(this.boundingBox.Bottom - 8) / 10000f)); } else { - spriteBatch.Draw(TextureSheet.texture, Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(x * Game1.tileSize), (float)(y * Game1.tileSize - (this.sourceRect.Height * Game1.pixelZoom - this.boundingBox.Height)))), new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, (this.Decoration_type == 12) ? 0f : ((float)(this.boundingBox.Bottom - 8) / 10000f)); + spriteBatch.Draw(TextureSheet.getTexture(), Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(x * Game1.tileSize), (float)(y * Game1.tileSize - (this.sourceRect.Height * Game1.pixelZoom - this.boundingBox.Height)))), new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, (this.Decoration_type == 12) ? 0f : ((float)(this.boundingBox.Bottom - 8) / 10000f)); } if (this.heldObject.Value != null) { @@ -1429,7 +1431,7 @@ namespace StardustCore public virtual void drawAtNonTileSpot(SpriteBatch spriteBatch, Vector2 location, float layerDepth, float alpha = 1f) { - spriteBatch.Draw(TextureSheet.texture, location, new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, layerDepth); + spriteBatch.Draw(TextureSheet.getTexture(), location, new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, layerDepth); } public override Item getOne() @@ -1600,7 +1602,17 @@ namespace StardustCore return Color.Black; } + public virtual Type getCutsomType() + { + return this.GetType(); + } + public virtual string GetSerializationName() + { + return this.GetType().ToString(); + } + + /* public static void Serialize(Item I) { @@ -1619,6 +1631,26 @@ namespace StardustCore //return I; } + public void Serialize(Item I) + { + throw new NotImplementedException(); + } + + public void deserialize() + { + throw new NotImplementedException(); + } + + public void ParseIntoWorld() + { + throw new NotImplementedException(); + } + + void ISerializeable.ParseIntoInventory() + { + throw new NotImplementedException(); + } + */ } } diff --git a/GeneralMods/StardustCore/Objects/Tools/ExtendedAxe.cs b/GeneralMods/StardustCore/Objects/Tools/ExtendedAxe.cs new file mode 100644 index 00000000..c60c9b1e --- /dev/null +++ b/GeneralMods/StardustCore/Objects/Tools/ExtendedAxe.cs @@ -0,0 +1,134 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using StardewModdingAPI; +using StardewValley; +using StardustCore.Interfaces; +using StardustCore.Objects.Tools.SerializationInformation; +using StardustCore.UIUtilities; + +namespace StardustCore.Objects.Tools +{ + public class ExtendedAxe : StardewValley.Tools.Axe, IItemSerializeable, IToolSerializer + { + public Texture2DExtended texture; + + public override string DisplayName { get => this.displayName; set => this.displayName = value; } + public override string Name { get => this.displayName; set => this.displayName = value; } + + /// + /// Generates a default axe. Doens't really do much. + /// + public ExtendedAxe() : base() + { + this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content","Graphics","Tools","CustomAxe.png")); + } + + public ExtendedAxe(IModHelper helper,String texturePath) : base() + { + this.texture = new Texture2DExtended(helper, texturePath); + } + + public ExtendedAxe(Texture2DExtended texture) :base() + { + this.texture = texture; + } + + public ExtendedAxe(SerializedObjectBase dataBase) : base() + { + StardustCore.ModCore.ModMonitor.Log("WTF EVEN " + dataBase.GetType().ToString()); + StardustCore.ModCore.ModMonitor.Log((dataBase as Serialization_ExtendedAxe).Name); + this.displayName = "Hello"; + this.description = (dataBase as Serialization_ExtendedAxe).Description; + this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png")); + this.UpgradeLevel = (dataBase as Serialization_ExtendedAxe).UpgradeLevel; + } + + public override void draw(SpriteBatch b) + { + base.draw(b); + } + + public override void drawInMenu(SpriteBatch spriteBatch, Vector2 location, float scaleSize, float transparency, float layerDepth, bool drawStackNumber, Color color, bool drawShadow) + { + spriteBatch.Draw(texture.getTexture(), location + new Vector2(32f, 32f), new Rectangle(0, 0, 16 , 16), color * transparency, 0.0f, new Vector2(8f, 8f), 4f * scaleSize, SpriteEffects.None, layerDepth); + } + + public Type getCutsomType() + { + return this.GetType(); + } + + public string GetSerializationName() + { + return this.GetType().ToString(); + } + + public override int maximumStackSize() + { + return 1; + } + + public override void setNewTileIndexForUpgradeLevel() + { + //Do nothing. + } + + /// + /// Serializes the said item properly. + /// + /// + public static void Serialize(Item I) + { + SerializationInformation.Serialization_ExtendedAxe sAxe = new SerializationInformation.Serialization_ExtendedAxe((I as ExtendedAxe)); + String savePath = ModCore.SerializationManager.playerInventoryPath; + String fileName = I.Name + ".json"; + String resultPath = Path.Combine(savePath, fileName); + int count = 0; + while (File.Exists(resultPath)) + { + resultPath=Serialization.SerializationManager.getValidSavePathIfDuplicatesExist(I, savePath,count); + count++; + } + StardustCore.ModCore.ModHelper.WriteJsonFile(resultPath, sAxe); + } + + /// + /// Serializes the said item to a chest. + /// + /// + /// + public static void SerializeToContainer(Item I, string s) + { + SerializationInformation.Serialization_ExtendedAxe sAxe = new SerializationInformation.Serialization_ExtendedAxe((I as ExtendedAxe)); + String savePath = s; + String fileName = I.Name + ".json"; + String resultPath = Path.Combine(savePath, fileName); + int count = 0; + while (File.Exists(resultPath)) + { + resultPath = Serialization.SerializationManager.getValidSavePathIfDuplicatesExist(I, savePath, count); + count++; + } + StardustCore.ModCore.ModHelper.WriteJsonFile(resultPath, sAxe); + } + + /// + /// Deserializes the object from a .json. + /// + /// + /// + public static ExtendedAxe Deserialize(string data) + { + Serialization_ExtendedAxe axeData= ModCore.ModHelper.ReadJsonFile(data); + return new ExtendedAxe(axeData); + } + + + } +} diff --git a/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/Serialization_ExtendedAxe.cs b/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/Serialization_ExtendedAxe.cs new file mode 100644 index 00000000..700b347a --- /dev/null +++ b/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/Serialization_ExtendedAxe.cs @@ -0,0 +1,42 @@ +using StardustCore.Interfaces; +using StardustCore.UIUtilities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StardustCore.Objects.Tools.SerializationInformation +{ + public class Serialization_ExtendedAxe : SerializedObjectBase + { + public string Name; + public string Description; + public int UpgradeLevel; + public Texture2DExtended TextureInformation; + + public Serialization_ExtendedAxe() : base() + { + this.SerializationName = GetSerializationName(); + } + + public Serialization_ExtendedAxe(ExtendedAxe axe) : base() + { + this.UpgradeLevel = axe.UpgradeLevel; + this.Name = axe.Name; + this.Description = axe.description; + this.TextureInformation = axe.texture; + this.SerializationName = GetSerializationName(); + } + + public override Type getCutsomType() + { + return typeof(ExtendedAxe); + } + + public override string GetSerializationName() + { + return typeof(ExtendedAxe).ToString(); + } + } +} diff --git a/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/SerializedObjectBase.cs b/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/SerializedObjectBase.cs new file mode 100644 index 00000000..0e1c7442 --- /dev/null +++ b/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/SerializedObjectBase.cs @@ -0,0 +1,29 @@ +using StardustCore.Interfaces; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StardustCore.Objects.Tools.SerializationInformation +{ + public class SerializedObjectBase : IItemSerializeable + { + public string SerializationName; + + public SerializedObjectBase() + { + this.SerializationName = this.GetSerializationName(); + } + + public virtual Type getCutsomType() + { + return this.GetType(); + } + + public virtual string GetSerializationName() + { + return this.GetType().ToString(); + } + } +} diff --git a/GeneralMods/StardustCore/Serialization/Serialization.cs b/GeneralMods/StardustCore/Serialization/Serialization.cs index da106117..f5b2bd35 100644 --- a/GeneralMods/StardustCore/Serialization/Serialization.cs +++ b/GeneralMods/StardustCore/Serialization/Serialization.cs @@ -4,6 +4,9 @@ using Newtonsoft.Json.Linq; using StardewModdingAPI; using StardewValley; using StardewValley.Buildings; +using StardustCore.Interfaces; +using StardustCore.Objects.Tools; +using StardustCore.Objects.Tools.SerializationInformation; using System; using System.Collections.Generic; using System.IO; @@ -29,7 +32,7 @@ namespace StardustCore.Serialization public Dictionary acceptedTypes = new Dictionary(); - public List trackedObjectList = new List(); + public List trackedObjectList = new List(); @@ -93,7 +96,10 @@ namespace StardustCore.Serialization } removalList.Clear(); } - + + /// + /// Removes custom objects from the world and saves them to a file. + /// public void cleanUpWorld() { try @@ -104,7 +110,7 @@ namespace StardustCore.Serialization { ModCore.ModMonitor.Log(e.ToString()); } - List removalList = new List(); + List removalList = new List(); int countProcessed = 0; List idk = new List(); foreach (CoreObject d in trackedObjectList) @@ -120,7 +126,7 @@ namespace StardustCore.Serialization } catch (Exception e) { - ModCore.ModMonitor.Log(e.ToString()); + //ModCore.ModMonitor.Log(e.ToString()); } string s = Convert.ToString((d.GetType())); @@ -136,6 +142,7 @@ namespace StardustCore.Serialization if (d.useXML == false) { // Log.AsyncY("Saving the object"); + //Removes the object from the world and saves it to a file. t.worldObj.Invoke(d); } else @@ -149,7 +156,10 @@ namespace StardustCore.Serialization } foreach (var i in removalList) { - i.thisLocation.removeObject(i.TileLocation, false); + if (i.getCutsomType() == typeof(CoreObject)) + { + (i as CoreObject).thisLocation.removeObject((i as CoreObject).TileLocation, false); + } } foreach (var v in idk) { @@ -163,12 +173,16 @@ namespace StardustCore.Serialization if (works == true) { countProcessed++; - if ((v as CoreObject).useXML == true) + //If the item is a core object I can validate that it is in the world and not in an inventory. + if ((v is CoreObject)) { - t.worldObj.Invoke(v as CoreObject); + if ((v as CoreObject).useXML == true) + { + t.worldObj.Invoke(v as CoreObject); + } + //Log.AsyncG("Progress on saving objects: " + countProcessed + "/" + Lists.trackedObjectList.Count); + removalList.Add(v as CoreObject); } - //Log.AsyncG("Progress on saving objects: " + countProcessed + "/" + Lists.trackedObjectList.Count); - removalList.Add(v as CoreObject); } } } @@ -178,6 +192,9 @@ namespace StardustCore.Serialization } + /// + /// Clean all of the storage containers in the game from custom objects. + /// public void cleanUpStorageContainers() { ProcessDirectoryForDeletion(storageContainerPath); @@ -191,6 +208,8 @@ namespace StardustCore.Serialization { j++; //ModCore.ModMonitor.Log("Parsing location " + loc.Name + " : object number" + j + "/" + i + " : object name: " + obj.Value.name); + + //If the object is a chest get the items from it. if (obj.Value is StardewValley.Objects.Chest) { int k = (obj.Value as StardewValley.Objects.Chest).items.Count; int l = 0; @@ -198,7 +217,7 @@ namespace StardustCore.Serialization { l++; //ModCore.ModMonitor.Log("Parsing Chest at : " + loc.Name + " X: " + obj.Key.X + " Y: " + obj.Key.Y + " : object number: " + l + "/" + k + "object name: " + item.Name); - if (item is CoreObject) removalList.Add(item); + if (item is IItemSerializeable) removalList.Add(item); } foreach(var v in removalList) @@ -206,9 +225,9 @@ namespace StardustCore.Serialization (obj.Value as StardewValley.Objects.Chest).items.Remove(v); SerializerDataNode t; - if (acceptedTypes.ContainsKey((v as CoreObject).serializationName)) + if (acceptedTypes.ContainsKey((v as IItemSerializeable).GetSerializationName())) { - acceptedTypes.TryGetValue((v as CoreObject).serializationName, out t); + acceptedTypes.TryGetValue((v as IItemSerializeable).GetSerializationName(), out t); string s = Path.Combine(loc.Name, "Chest," + Convert.ToString((int)obj.Key.X) + "," + Convert.ToString((int)obj.Key.Y)); string s2 = Path.Combine(ModCore.SerializationManager.storageContainerPath, s); if (!Directory.Exists(s)) Directory.CreateDirectory(s2); @@ -220,17 +239,19 @@ namespace StardustCore.Serialization } } + //Look through all farm buildings for custom items. foreach (Building building in Game1.getFarm().buildings) { GameLocation loc =Game1.getLocationFromName(building.nameOfIndoors,true); - ModCore.ModMonitor.Log("Cleaning up farm building: "+loc.uniqueName.Value); + //ModCore.ModMonitor.Log("Cleaning up farm building: "+loc.uniqueName.Value); int i = loc.objects.Pairs.Count(); int j = 0; foreach (KeyValuePair obj in loc.objects.Pairs) { j++; - ModCore.ModMonitor.Log("Parsing location " + loc.Name + " : object number" + j + "/" + i + " : object name: " + obj.Value.name); + //ModCore.ModMonitor.Log("Parsing location " + loc.Name + " : object number" + j + "/" + i + " : object name: " + obj.Value.name); + //Look through all chests in all farm buildings. if (obj.Value is StardewValley.Objects.Chest) { int k = (obj.Value as StardewValley.Objects.Chest).items.Count; @@ -238,16 +259,16 @@ namespace StardustCore.Serialization foreach (var item in (obj.Value as StardewValley.Objects.Chest).items) { l++; - ModCore.ModMonitor.Log("Parsing Chest at : " + loc.Name + " X: " + obj.Key.X + " Y: " + obj.Key.Y + " : object number: " + l + "/" + k + "object name: " + item.Name); - if (item is CoreObject) removalList.Add(item); + //ModCore.ModMonitor.Log("Parsing Chest at : " + loc.Name + " X: " + obj.Key.X + " Y: " + obj.Key.Y + " : object number: " + l + "/" + k + "object name: " + item.Name); + if (item is IItemSerializeable) removalList.Add(item); } foreach(var v in removalList) { (obj.Value as StardewValley.Objects.Chest).items.Remove(v); SerializerDataNode t; - if(acceptedTypes.ContainsKey((v as CoreObject).serializationName)){ - acceptedTypes.TryGetValue((v as CoreObject).serializationName, out t); + if(acceptedTypes.ContainsKey((v as IItemSerializeable).GetSerializationName())){ + acceptedTypes.TryGetValue((v as IItemSerializeable).GetSerializationName(), out t); string s = Path.Combine(building.nameOfIndoors, "Chest,"+Convert.ToString( (int)obj.Key.X)+","+Convert.ToString((int)obj.Key.Y)); string s2 = Path.Combine(ModCore.SerializationManager.storageContainerPath, s); if (!Directory.Exists(s)) Directory.CreateDirectory(s2); @@ -264,7 +285,7 @@ namespace StardustCore.Serialization /// Reloads all modded objects added by this mod back to the game in proper locations. /// /// - public void restoreAllModObjects(List thingsToAddBackIn) + public void restoreAllModObjects(List thingsToAddBackIn) { processDirectoryForDeserialization(playerInventoryPath,thingsToAddBackIn); @@ -301,39 +322,6 @@ namespace StardustCore.Serialization } - public void WriteToJsonFile(string filePath, T objectToWrite, bool append = false) where T : new() - { - TextWriter writer = null; - try - { - JsonSerializerSettings settings = new JsonSerializerSettings(); - //settings.TypeNameHandling = TypeNameHandling.Auto; - settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; - settings.TypeNameHandling = TypeNameHandling.Auto; - // settings.Formatting = Formatting.Indented; - var contentsToWriteToFile = JsonConvert.SerializeObject(objectToWrite, settings); - int i = 0; - string s = filePath; - while (File.Exists(s) == true) - { - s = filePath; - s = (s + Convert.ToString(i)); - i++; - } - filePath = s; - - writer = new StreamWriter(filePath, append); - - writer.Write(contentsToWriteToFile); - } - finally - { - if (writer != null) - writer.Close(); - } - } - - public void serializeXML(Item I) { System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(T)); @@ -349,8 +337,9 @@ namespace StardustCore.Serialization /// /// /// Typically this would be the trackedObjectList. - public void processDirectoryForDeserialization(string pathToFile,List thingsToAddBackIn) + public void processDirectoryForDeserialization(string pathToFile,List thingsToAddBackIn) { + //StardustCore.ModCore.ModMonitor.Log("Look through dir: " + pathToFile); string[] fileEntries = Directory.GetFiles(pathToFile); // Log.AsyncC(pathToFile); @@ -368,7 +357,7 @@ namespace StardustCore.Serialization } - public void processDirectoryForDeserializationIntoContainer(string pathToFile, List thingsToAddBackIn) + public void processDirectoryForDeserializationIntoContainer(string pathToFile, List thingsToAddBackIn) { string[] fileEntries = Directory.GetFiles(pathToFile); // Log.AsyncC(pathToFile); @@ -387,56 +376,154 @@ namespace StardustCore.Serialization } + public void ProcessFileForCleanUp(string path, List thingsToAddBackIn) + { - public void ProcessFileForCleanUp(string path, List thingsToAddBackIn) + try + { + string type = ""; + int count = 0; + while (type == "" || type==null) + { + if (count == 0) + { + //THE ERROR LIES HERE AS IT THINKS IT CAN TRY TO BE A CORE OBJECT WHEN IT IS NOT!!!! + CoreObject core_obj = StardustCore.ModCore.ModHelper.ReadJsonFile(path); //FIND A WAY TO FIX THIS!!!! + type = (core_obj as CoreObject).thisType; + //ModCore.ModMonitor.Log("UMM THIS CAN't BE RIGHT 1" + type); + } + + if (count == 1) + { + //THIS NEEDS TO BE SOMETHING GENERIC!!! + SerializedObjectBase core_obj = StardustCore.ModCore.ModHelper.ReadJsonFile(path); + type = (core_obj as SerializedObjectBase).SerializationName; + //ModCore.ModMonitor.Log("UMM THIS CAN't BE RIGHT 2" + type); + } + + if (count == 2) + { + ModCore.ModMonitor.Log("A valid type could not be found for the file: "+path); + return; + } + + count++; + } + + foreach (KeyValuePair pair in acceptedTypes) + { + // Log.AsyncY(pair.Key); + if (pair.Key == type) + { + try + { + //parse from Json Style + // Log.AsyncR("1"); + var cObj = pair.Value.parse.Invoke(path); + if (cObj is CoreObject) + { + (cObj as CoreObject).thisLocation = Game1.getLocationFromName((cObj as CoreObject).locationsName); + + if ((cObj as CoreObject).thisLocation == null) + { + Game1.player.addItemToInventory(cObj); + // Log.AsyncY("ADDED ITEM TO INVENTORY"); + return; + } + else + { + (cObj as CoreObject).thisLocation.objects.Add((cObj as CoreObject).TileLocation, (StardewValley.Object)cObj); + thingsToAddBackIn.Add(cObj as CoreObject); + //Util.placementAction(cObj, cObj.thisLocation,(int)cObj.tileLocation.X,(int) cObj.tileLocation.Y,null,false); + } + } + else + { + Game1.player.addItemToInventory(cObj); + } + } + catch (Exception e) + { + ModCore.ModMonitor.Log(e.ToString()); + // Log.AsyncO(e); + } + } + } + } + catch (Exception err) + { + ModCore.ModMonitor.Log(err.ToString()); + //Tool t = StardustCore.ModCore.ModHelper.ReadJsonFile(path); + } + + } + + /* + public void ProcessFileForCleanUp(string path, List thingsToAddBackIn) { //Log.AsyncC(path); string[] ehh = File.ReadAllLines(path); - string data = ehh[0]; - CoreObject cObj; - string a; + Item cObj; + string a=""; string[] b; string s = ""; - // Log.AsyncC(path); + // Log.AsyncC(path); // Log.AsyncC(data); + CoreObject obj = StardustCore.ModCore.ModHelper.ReadJsonFile(path); + StardustCore.ModCore.ModMonitor.Log("OK FIRST STEP"); try { - JObject obj2 = JObject.Parse(data); - CoreObject obj = (CoreObject)obj2.ToObject(typeof(CoreObject)); - - + if (StardustCore.ModCore.ModHelper == null) ModCore.ModMonitor.Log("WTF!!!!!"); + // Log.AsyncC(obj.thisType); + try + { + a = obj.SerializationName; + } + catch(Exception err) + { + ModCore.ModMonitor.Log("IDK WHAT EVEN HAPPENED"); - a = obj.serializationName; + } + ModCore.ModMonitor.Log(":THIS IS MY TYPE!!!:" + a); b = a.Split(','); s = b.ElementAt(0); // Log.AsyncC(s); } catch (Exception e) { - e.ToString(); //Get rid of that warning because I'll do other things. + + ModCore.ModMonitor.Log(e.ToString()); //Get rid of that warning because I'll do other things. //USE XML STYLE DESERIALIZING foreach (KeyValuePair pair in acceptedTypes) { var word = ParseXMLType(path); if (pair.Key == word.ToString()) { - cObj =(CoreObject) pair.Value.parse.Invoke(path); - (cObj as CoreObject).thisLocation = Game1.getLocationFromName((cObj as CoreObject).locationsName); - (cObj as CoreObject).resetTexture(); - if ((cObj as CoreObject).thisLocation == null) + + cObj = pair.Value.parse.Invoke(obj); + if (cObj is CoreObject) { - Game1.player.addItemToInventory(cObj); - // Log.AsyncY("ADDED ITEM TO INVENTORY"); - return; + (cObj as CoreObject).thisLocation = Game1.getLocationFromName((cObj as CoreObject).locationsName); + (cObj as CoreObject).resetTexture(); + if ((cObj as CoreObject).thisLocation == null) + { + Game1.player.addItemToInventory(cObj); + // Log.AsyncY("ADDED ITEM TO INVENTORY"); + return; + } + else + { + (cObj as CoreObject).thisLocation.objects.Add((cObj as CoreObject).TileLocation, (StardewValley.Object)cObj); + thingsToAddBackIn.Add(cObj as CoreObject); + //Util.placementAction(cObj, cObj.thisLocation,(int)cObj.tileLocation.X,(int) cObj.tileLocation.Y,null,false); + } } else { - (cObj as CoreObject).thisLocation.objects.Add((cObj as CoreObject).TileLocation, (StardewValley.Object)cObj); - thingsToAddBackIn.Add(cObj); - //Util.placementAction(cObj, cObj.thisLocation,(int)cObj.tileLocation.X,(int) cObj.tileLocation.Y,null,false); + Game1.player.addItemToInventory(cObj); } } } @@ -459,8 +546,9 @@ namespace StardustCore.Serialization Lists.trackedObjectList.Add(cObj); //Util.placementAction(cObj, cObj.thisLocation,(int)cObj.tileLocation.X,(int) cObj.tileLocation.Y,null,false); } - */ - + * + ModCore.ModMonitor.Log("a value: "+a); + ModCore.ModMonitor.Log("s value: " + s); //USE JSON STYLE DESERIALIZNG if (acceptedTypes.ContainsKey(s)) { @@ -474,20 +562,27 @@ namespace StardustCore.Serialization { //parse from Json Style // Log.AsyncR("1"); - cObj = (CoreObject)pair.Value.parse.Invoke(data); - (cObj as CoreObject).thisLocation = Game1.getLocationFromName((cObj as CoreObject).locationsName); - - if ((cObj as CoreObject).thisLocation == null) + cObj = pair.Value.parse.Invoke(obj); + if (cObj is CoreObject) { - Game1.player.addItemToInventory(cObj); - // Log.AsyncY("ADDED ITEM TO INVENTORY"); - return; + (cObj as CoreObject).thisLocation = Game1.getLocationFromName((cObj as CoreObject).locationsName); + + if ((cObj as CoreObject).thisLocation == null) + { + Game1.player.addItemToInventory(cObj); + // Log.AsyncY("ADDED ITEM TO INVENTORY"); + return; + } + else + { + (cObj as CoreObject).thisLocation.objects.Add((cObj as CoreObject).TileLocation, (StardewValley.Object)cObj); + thingsToAddBackIn.Add(cObj as CoreObject); + //Util.placementAction(cObj, cObj.thisLocation,(int)cObj.tileLocation.X,(int) cObj.tileLocation.Y,null,false); + } } else { - (cObj as CoreObject).thisLocation.objects.Add((cObj as CoreObject).TileLocation,(StardewValley.Object)cObj); - thingsToAddBackIn.Add(cObj); - //Util.placementAction(cObj, cObj.thisLocation,(int)cObj.tileLocation.X,(int) cObj.tileLocation.Y,null,false); + Game1.player.addItemToInventory(cObj); } } catch (Exception e) @@ -502,12 +597,16 @@ namespace StardustCore.Serialization { ModCore.ModMonitor.Log("Error parsing unknown object type: " + s, LogLevel.Error); } - + } + */ - - - public void ProcessFileForCleanUpIntoContainer(string path, List thingsToAddBackIn) + /// + /// Process an item from a file back into it's original storage container. + /// + /// + /// + public void ProcessFileForCleanUpIntoContainer(string path, List thingsToAddBackIn) { //Log.AsyncC(path); @@ -541,57 +640,72 @@ namespace StardustCore.Serialization } string[] ehh = File.ReadAllLines(path); - string data = ehh[0]; - CoreObject cObj; + Item cObj; string a; string[] b; string s = ""; // Log.AsyncC(path); // Log.AsyncC(data); + SerializedObjectBase obj = StardustCore.ModCore.ModHelper.ReadJsonFile(path); try { - JObject obj2 = JObject.Parse(data); - CoreObject obj =(CoreObject)obj2.ToObject(typeof(CoreObject)); + // Log.AsyncC(obj.thisType); - // Log.AsyncC(obj.thisType); - - a = obj.serializationName; - b = a.Split(','); - s = b.ElementAt(0); + a = obj.SerializationName; + ModCore.ModMonitor.Log(":THIS IS MY TYPE!!!:" + a); + b = a.Split(','); + s = b.ElementAt(0); // Log.AsyncC(s); } catch (Exception e) { - e.ToString(); + ModCore.ModMonitor.Log(e.ToString()); + //USE XML STYLE DESERIALIZING foreach (KeyValuePair pair in acceptedTypes) { var word = ParseXMLType(path); if (pair.Key == word.ToString()) { - cObj = (CoreObject)pair.Value.parse.Invoke(path); - (cObj as CoreObject).thisLocation = Game1.getLocationFromName((cObj as CoreObject).locationsName); - (cObj as CoreObject).resetTexture(); - if ((cObj as CoreObject).thisLocation == null) + cObj = pair.Value.parse.Invoke(""); + if (cObj is CoreObject) { - // Game1.player.addItemToInventory(cObj); - try + (cObj as CoreObject).thisLocation = Game1.getLocationFromName((cObj as CoreObject).locationsName); + (cObj as CoreObject).resetTexture(); + if ((cObj as CoreObject).thisLocation == null) { - - Utilities.addItemToOtherInventory((chestObject as StardewValley.Objects.Chest).items, cObj); + // Game1.player.addItemToInventory(cObj); + try + { + + Utilities.addItemToOtherInventory((chestObject as StardewValley.Objects.Chest).items, (cObj as CoreObject)); + } + catch (Exception err) + { + ModCore.ModMonitor.Log(err.ToString(), LogLevel.Error); + } + // Log.AsyncY("ADDED ITEM TO INVENTORY"); + return; } - catch(Exception err) + else { - ModCore.ModMonitor.Log(err.ToString(), LogLevel.Error); + (cObj as CoreObject).thisLocation.objects.Add((cObj as CoreObject).TileLocation, (StardewValley.Object)cObj); + thingsToAddBackIn.Add((cObj as CoreObject)); + //Util.placementAction(cObj, cObj.thisLocation,(int)cObj.tileLocation.X,(int) cObj.tileLocation.Y,null,false); } - // Log.AsyncY("ADDED ITEM TO INVENTORY"); - return; } else { - (cObj as CoreObject).thisLocation.objects.Add((cObj as CoreObject).TileLocation, (StardewValley.Object)cObj); - thingsToAddBackIn.Add(cObj); - //Util.placementAction(cObj, cObj.thisLocation,(int)cObj.tileLocation.X,(int) cObj.tileLocation.Y,null,false); + + try + { + Utilities.addItemToOtherInventory((chestObject as StardewValley.Objects.Chest).items, cObj); + } + catch (Exception err) + { + ModCore.ModMonitor.Log(err.ToString(), LogLevel.Error); + } + } } } @@ -619,7 +733,6 @@ namespace StardustCore.Serialization //USE JSON STYLE DESERIALIZNG if (acceptedTypes.ContainsKey(s)) { - ModCore.ModMonitor.Log("parse???"); foreach (KeyValuePair pair in acceptedTypes) { // Log.AsyncY(pair.Key); @@ -629,36 +742,48 @@ namespace StardustCore.Serialization { //parse from Json Style // Log.AsyncR("1"); - cObj = (CoreObject)pair.Value.parse.Invoke(data); - (cObj as CoreObject).thisLocation = Game1.getLocationFromName((cObj as CoreObject).locationsName); - ModCore.ModMonitor.Log("closer"); - if ((cObj as CoreObject).thisLocation == null) + cObj = pair.Value.parse.Invoke(""); + if (cObj is CoreObject) + { + (cObj as CoreObject).thisLocation = Game1.getLocationFromName((cObj as CoreObject).locationsName); + if ((cObj as CoreObject).thisLocation == null) + { + try + { + Utilities.addItemToOtherInventory((chestObject as StardewValley.Objects.Chest).items, (cObj as CoreObject)); + + foreach (var v in (chestObject as StardewValley.Objects.Chest).items) + { + ModCore.ModMonitor.Log(v.Name); + } + + } + catch (Exception err) + { + ModCore.ModMonitor.Log(err.ToString(), LogLevel.Error); + } + // Log.AsyncY("ADDED ITEM TO INVENTORY"); + return; + } + else + { + (cObj as CoreObject).thisLocation.objects.Add((cObj as CoreObject).TileLocation, (StardewValley.Object)cObj); + thingsToAddBackIn.Add((cObj as CoreObject)); + //Util.placementAction(cObj, cObj.thisLocation,(int)cObj.tileLocation.X,(int) cObj.tileLocation.Y,null,false); + } + } + else { try { - ModCore.ModMonitor.Log("HERE PRETTY MUCH!!!"); Utilities.addItemToOtherInventory((chestObject as StardewValley.Objects.Chest).items, cObj); - - foreach(var v in (chestObject as StardewValley.Objects.Chest).items) - { - ModCore.ModMonitor.Log(v.Name); - } - } catch (Exception err) { ModCore.ModMonitor.Log(err.ToString(), LogLevel.Error); } - // Log.AsyncY("ADDED ITEM TO INVENTORY"); - return; - } - else - { - ModCore.ModMonitor.Log("WHY HERE????"); - (cObj as CoreObject).thisLocation.objects.Add((cObj as CoreObject).TileLocation, (StardewValley.Object)cObj); - thingsToAddBackIn.Add(cObj); - //Util.placementAction(cObj, cObj.thisLocation,(int)cObj.tileLocation.X,(int) cObj.tileLocation.Y,null,false); } + } catch (Exception e) { @@ -675,7 +800,13 @@ namespace StardustCore.Serialization } + + /// + /// ??? + /// + /// + /// public string ParseXMLType(string path) { string[] s = File.ReadAllLines(path); @@ -693,6 +824,11 @@ namespace StardustCore.Serialization return returnString; } + /// + /// Parse rectangles. + /// + /// + /// public static Microsoft.Xna.Framework.Rectangle parseRectFromJson(string s) { s = s.Replace('{', ' '); @@ -715,12 +851,38 @@ namespace StardustCore.Serialization { foreach(var v in StardustCore.ModCore.SerializationManager.trackedObjectList) { - if(c.TileLocation==v.TileLocation && c.thisLocation == v.thisLocation) + if (v.getCutsomType() == typeof(CoreObject)) { - StardustCore.ModCore.SerializationManager.trackedObjectList.Remove(v); + if (c.TileLocation == (v as CoreObject).TileLocation && c.thisLocation == (v as CoreObject).thisLocation) + { + StardustCore.ModCore.SerializationManager.trackedObjectList.Remove(v); + } } } } + /// + /// Initializes a list of default supported types added by Stardust Core. + /// + public void initializeDefaultSuportedTypes() + { + initializeSupportedToolTypes(); + } + + /// + /// Initializes supported tools made by Stardust Core. + /// + private void initializeSupportedToolTypes() + { + this.acceptedTypes.Add(typeof(ExtendedAxe).ToString(), new SerializerDataNode(ExtendedAxe.Serialize, ExtendedAxe.Deserialize, null, new SerializerDataNode.SerializingToContainerFunction(ExtendedAxe.SerializeToContainer))); + } + + public static string getValidSavePathIfDuplicatesExist(Item I, string path, int number) + { + String savePath = path; + String fileName = I.Name + number + ".json"; + String resultPath = Path.Combine(savePath, fileName); + return resultPath; + } } } diff --git a/GeneralMods/StardustCore/Serialization/SerializerDataNode.cs b/GeneralMods/StardustCore/Serialization/SerializerDataNode.cs index 57a24115..92c4a6d2 100644 --- a/GeneralMods/StardustCore/Serialization/SerializerDataNode.cs +++ b/GeneralMods/StardustCore/Serialization/SerializerDataNode.cs @@ -1,4 +1,5 @@ using StardewValley; +using StardustCore.Objects.Tools.SerializationInformation; using System; using System.Collections.Generic; using System.Linq; @@ -15,9 +16,9 @@ namespace StardustCore.Serialization /// /// A function that handles loading an object back into it's Item form. /// - /// + /// The path to the file. /// - public delegate Item ParsingFunction(string data); + public delegate Item ParsingFunction(string path); /// /// A function that handles saving an item. /// diff --git a/GeneralMods/StardustCore/StardustCore.csproj b/GeneralMods/StardustCore/StardustCore.csproj index eda79044..67405b94 100644 --- a/GeneralMods/StardustCore/StardustCore.csproj +++ b/GeneralMods/StardustCore/StardustCore.csproj @@ -85,8 +85,13 @@ + + + + + @@ -99,7 +104,7 @@ - + @@ -408,6 +413,11 @@ Always + + + + PreserveNewest + diff --git a/GeneralMods/StardustCore/UIUtilities/IClickableMenuExtended.cs b/GeneralMods/StardustCore/UIUtilities/IClickableMenuExtended.cs index a7aadf96..e178a63b 100644 --- a/GeneralMods/StardustCore/UIUtilities/IClickableMenuExtended.cs +++ b/GeneralMods/StardustCore/UIUtilities/IClickableMenuExtended.cs @@ -298,26 +298,26 @@ namespace StardustCore.UIUtilities rectangle1.Height = Game1.tileSize; rectangle1.X = Game1.tileSize; rectangle1.Y = Game1.tileSize * 2; - Game1.spriteBatch.Draw(texture.texture, new Microsoft.Xna.Framework.Rectangle(28 + x + dialogueX, 28 + y - Game1.tileSize * addedTileHeightForQuestions + num1 + num2, width - Game1.tileSize, height - Game1.tileSize + addedTileHeightForQuestions * Game1.tileSize), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color); + Game1.spriteBatch.Draw(texture.getTexture(), new Microsoft.Xna.Framework.Rectangle(28 + x + dialogueX, 28 + y - Game1.tileSize * addedTileHeightForQuestions + num1 + num2, width - Game1.tileSize, height - Game1.tileSize + addedTileHeightForQuestions * Game1.tileSize), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color); rectangle1.Y = 0; rectangle1.X = 0; - Game1.spriteBatch.Draw(texture.texture, new Vector2((float)(x + dialogueX), (float)(y - Game1.tileSize * addedTileHeightForQuestions + num1 + num2)), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color); + Game1.spriteBatch.Draw(texture.getTexture(), new Vector2((float)(x + dialogueX), (float)(y - Game1.tileSize * addedTileHeightForQuestions + num1 + num2)), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color); rectangle1.X = Game1.tileSize * 3; - Game1.spriteBatch.Draw(texture.texture, new Vector2((float)(x + width + dialogueX - Game1.tileSize), (float)(y - Game1.tileSize * addedTileHeightForQuestions + num1 + num2)), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color); + Game1.spriteBatch.Draw(texture.getTexture(), new Vector2((float)(x + width + dialogueX - Game1.tileSize), (float)(y - Game1.tileSize * addedTileHeightForQuestions + num1 + num2)), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color); rectangle1.Y = Game1.tileSize * 3; - Game1.spriteBatch.Draw(texture.texture, new Vector2((float)(x + width + dialogueX - Game1.tileSize), (float)(y + height + num1 - Game1.tileSize + num2)), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color); + Game1.spriteBatch.Draw(texture.getTexture(), new Vector2((float)(x + width + dialogueX - Game1.tileSize), (float)(y + height + num1 - Game1.tileSize + num2)), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color); rectangle1.X = 0; - Game1.spriteBatch.Draw(texture.texture, new Vector2((float)(x + dialogueX), (float)(y + height + num1 - Game1.tileSize + num2)), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color); + Game1.spriteBatch.Draw(texture.getTexture(), new Vector2((float)(x + dialogueX), (float)(y + height + num1 - Game1.tileSize + num2)), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color); rectangle1.X = Game1.tileSize * 2; rectangle1.Y = 0; - Game1.spriteBatch.Draw(texture.texture, new Microsoft.Xna.Framework.Rectangle(Game1.tileSize + x + dialogueX, y - Game1.tileSize * addedTileHeightForQuestions + num1 + num2, width - Game1.tileSize * 2, Game1.tileSize), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color); + Game1.spriteBatch.Draw(texture.getTexture(), new Microsoft.Xna.Framework.Rectangle(Game1.tileSize + x + dialogueX, y - Game1.tileSize * addedTileHeightForQuestions + num1 + num2, width - Game1.tileSize * 2, Game1.tileSize), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color); rectangle1.Y = 3 * Game1.tileSize; - Game1.spriteBatch.Draw(texture.texture, new Microsoft.Xna.Framework.Rectangle(Game1.tileSize + x + dialogueX, y + height + num1 - Game1.tileSize + num2, width - Game1.tileSize * 2, Game1.tileSize), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color); + Game1.spriteBatch.Draw(texture.getTexture(), new Microsoft.Xna.Framework.Rectangle(Game1.tileSize + x + dialogueX, y + height + num1 - Game1.tileSize + num2, width - Game1.tileSize * 2, Game1.tileSize), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color); rectangle1.Y = Game1.tileSize * 2; rectangle1.X = 0; - Game1.spriteBatch.Draw(texture.texture, new Microsoft.Xna.Framework.Rectangle(x + dialogueX, y - Game1.tileSize * addedTileHeightForQuestions + num1 + Game1.tileSize + num2, Game1.tileSize, height - Game1.tileSize * 2 + addedTileHeightForQuestions * Game1.tileSize), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color); + Game1.spriteBatch.Draw(texture.getTexture(), new Microsoft.Xna.Framework.Rectangle(x + dialogueX, y - Game1.tileSize * addedTileHeightForQuestions + num1 + Game1.tileSize + num2, Game1.tileSize, height - Game1.tileSize * 2 + addedTileHeightForQuestions * Game1.tileSize), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color); rectangle1.X = 3 * Game1.tileSize; - Game1.spriteBatch.Draw(texture.texture, new Microsoft.Xna.Framework.Rectangle(x + width + dialogueX - Game1.tileSize, y - Game1.tileSize * addedTileHeightForQuestions + num1 + Game1.tileSize + num2, Game1.tileSize, height - Game1.tileSize * 2 + addedTileHeightForQuestions * Game1.tileSize), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color); + Game1.spriteBatch.Draw(texture.getTexture(), new Microsoft.Xna.Framework.Rectangle(x + width + dialogueX - Game1.tileSize, y - Game1.tileSize * addedTileHeightForQuestions + num1 + Game1.tileSize + num2, Game1.tileSize, height - Game1.tileSize * 2 + addedTileHeightForQuestions * Game1.tileSize), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color); if (objectDialogueWithPortrait && Game1.objectDialoguePortraitPerson != null || speaker && Game1.currentSpeaker != null && (Game1.currentSpeaker.CurrentDialogue.Count > 0 && Game1.currentSpeaker.CurrentDialogue.Peek().showPortrait)) { Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.Rectangle(0, 0, 64, 64); diff --git a/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs b/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs index 1135dba6..bca9c3ee 100644 --- a/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs +++ b/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs @@ -24,7 +24,7 @@ namespace StardustCore.UIUtilities.MenuComponents /// /// Empty Constructor. /// - public Button(Rectangle Bounds,Texture2DExtended Texture,Rectangle sourceRect,float Scale): base(Bounds, Texture.texture, sourceRect, Scale) + public Button(Rectangle Bounds,Texture2DExtended Texture,Rectangle sourceRect,float Scale): base(Bounds, Texture.getTexture(), sourceRect, Scale) { } @@ -38,7 +38,7 @@ namespace StardustCore.UIUtilities.MenuComponents /// /// /// - public Button(string Name,Rectangle Bounds,Texture2DExtended Texture,string displayText,Rectangle sourceRect,float Scale,Animations.Animation defaultAnimation, Color DrawColor,Color TextColor, ButtonFunctionality Functionality, bool AnimationEnabled=true) : base(Bounds,Texture.texture,sourceRect,Scale) + public Button(string Name,Rectangle Bounds,Texture2DExtended Texture,string displayText,Rectangle sourceRect,float Scale,Animations.Animation defaultAnimation, Color DrawColor,Color TextColor, ButtonFunctionality Functionality, bool AnimationEnabled=true) : base(Bounds,Texture.getTexture(), sourceRect,Scale) { this.animationManager = new Animations.AnimationManager(Texture, defaultAnimation,AnimationEnabled); this.label = displayText; @@ -70,7 +70,7 @@ namespace StardustCore.UIUtilities.MenuComponents /// /// /// - public Button(string Name,Rectangle Bounds,Texture2DExtended Texture, string displayText, Rectangle sourceRect,float Scale, Animations.Animation defaultAnimation,Dictionary> animationsToPlay,string startingAnimationKey,Color DrawColor,Color TextColor, ButtonFunctionality Functionality,int startingAnimationFrame=0,bool AnimationEnabled=true) : base(Bounds, Texture.texture, sourceRect, Scale) + public Button(string Name,Rectangle Bounds,Texture2DExtended Texture, string displayText, Rectangle sourceRect,float Scale, Animations.Animation defaultAnimation,Dictionary> animationsToPlay,string startingAnimationKey,Color DrawColor,Color TextColor, ButtonFunctionality Functionality,int startingAnimationFrame=0,bool AnimationEnabled=true) : base(Bounds, Texture.getTexture(), sourceRect, Scale) { this.animationManager = new Animations.AnimationManager(Texture, defaultAnimation, animationsToPlay, startingAnimationKey, startingAnimationFrame, AnimationEnabled); this.label = displayText; diff --git a/GeneralMods/StardustCore/UIUtilities/Texture2DExtended.cs b/GeneralMods/StardustCore/UIUtilities/Texture2DExtended.cs index 92905bd0..236a7b3a 100644 --- a/GeneralMods/StardustCore/UIUtilities/Texture2DExtended.cs +++ b/GeneralMods/StardustCore/UIUtilities/Texture2DExtended.cs @@ -12,7 +12,7 @@ namespace StardustCore.UIUtilities public class Texture2DExtended { public string Name; - public Texture2D texture; + private Texture2D texture; public string path; IModHelper helper; @@ -48,5 +48,14 @@ namespace StardustCore.UIUtilities { return this.helper; } + + /// + /// Returns the actual 2D texture held by this wrapper class. + /// + /// + public Texture2D getTexture() + { + return this.texture; + } } } From 70106444987f57f8aed1dbbf50a341a40e237f16 Mon Sep 17 00:00:00 2001 From: Date: Tue, 12 Jun 2018 21:45:42 -0700 Subject: [PATCH 004/110] Fixed serializing items to a chest. --- .../Serialization/Serialization.cs | 281 ++++++++---------- 1 file changed, 128 insertions(+), 153 deletions(-) diff --git a/GeneralMods/StardustCore/Serialization/Serialization.cs b/GeneralMods/StardustCore/Serialization/Serialization.cs index f5b2bd35..d3faa361 100644 --- a/GeneralMods/StardustCore/Serialization/Serialization.cs +++ b/GeneralMods/StardustCore/Serialization/Serialization.cs @@ -4,6 +4,7 @@ using Newtonsoft.Json.Linq; using StardewModdingAPI; using StardewValley; using StardewValley.Buildings; +using StardewValley.Objects; using StardustCore.Interfaces; using StardustCore.Objects.Tools; using StardustCore.Objects.Tools.SerializationInformation; @@ -458,149 +459,8 @@ namespace StardustCore.Serialization } + /* - public void ProcessFileForCleanUp(string path, List thingsToAddBackIn) - { - - //Log.AsyncC(path); - - string[] ehh = File.ReadAllLines(path); - Item cObj; - string a=""; - string[] b; - string s = ""; - // Log.AsyncC(path); - // Log.AsyncC(data); - CoreObject obj = StardustCore.ModCore.ModHelper.ReadJsonFile(path); - StardustCore.ModCore.ModMonitor.Log("OK FIRST STEP"); - try - { - if (StardustCore.ModCore.ModHelper == null) ModCore.ModMonitor.Log("WTF!!!!!"); - - // Log.AsyncC(obj.thisType); - try - { - a = obj.SerializationName; - } - catch(Exception err) - { - ModCore.ModMonitor.Log("IDK WHAT EVEN HAPPENED"); - - } - ModCore.ModMonitor.Log(":THIS IS MY TYPE!!!:" + a); - b = a.Split(','); - s = b.ElementAt(0); - // Log.AsyncC(s); - } - catch (Exception e) - { - - ModCore.ModMonitor.Log(e.ToString()); //Get rid of that warning because I'll do other things. - //USE XML STYLE DESERIALIZING - foreach (KeyValuePair pair in acceptedTypes) - { - var word = ParseXMLType(path); - if (pair.Key == word.ToString()) - { - - cObj = pair.Value.parse.Invoke(obj); - if (cObj is CoreObject) - { - (cObj as CoreObject).thisLocation = Game1.getLocationFromName((cObj as CoreObject).locationsName); - (cObj as CoreObject).resetTexture(); - if ((cObj as CoreObject).thisLocation == null) - { - Game1.player.addItemToInventory(cObj); - // Log.AsyncY("ADDED ITEM TO INVENTORY"); - return; - } - else - { - (cObj as CoreObject).thisLocation.objects.Add((cObj as CoreObject).TileLocation, (StardewValley.Object)cObj); - thingsToAddBackIn.Add(cObj as CoreObject); - //Util.placementAction(cObj, cObj.thisLocation,(int)cObj.tileLocation.X,(int) cObj.tileLocation.Y,null,false); - } - } - else - { - Game1.player.addItemToInventory(cObj); - } - } - } - - // Log.AsyncG("attempting to parse from path and value of s is " + s); - } - - // var cObj = parseBagOfHolding(path); //pair.Value.parse.Invoke(path); - // cObj.TextureSheet = Game1.content.Load(Path.Combine("Revitalize", "CropsNSeeds", "Graphics", "seeds")); - /* - cObj.thisLocation = Game1.getLocationFromName(cObj.locationsName); - if (cObj.thisLocation == null) - { - Game1.player.addItemToInventory(cObj); - return; - } - else - { - cObj.thisLocation.objects.Add(cObj.tileLocation, cObj); - Lists.trackedObjectList.Add(cObj); - //Util.placementAction(cObj, cObj.thisLocation,(int)cObj.tileLocation.X,(int) cObj.tileLocation.Y,null,false); - } - * - ModCore.ModMonitor.Log("a value: "+a); - ModCore.ModMonitor.Log("s value: " + s); - //USE JSON STYLE DESERIALIZNG - if (acceptedTypes.ContainsKey(s)) - { - //Log.AsyncC("FUUUUU"); - foreach (KeyValuePair pair in acceptedTypes) - { - // Log.AsyncY(pair.Key); - if (pair.Key == s) - { - try - { - //parse from Json Style - // Log.AsyncR("1"); - cObj = pair.Value.parse.Invoke(obj); - if (cObj is CoreObject) - { - (cObj as CoreObject).thisLocation = Game1.getLocationFromName((cObj as CoreObject).locationsName); - - if ((cObj as CoreObject).thisLocation == null) - { - Game1.player.addItemToInventory(cObj); - // Log.AsyncY("ADDED ITEM TO INVENTORY"); - return; - } - else - { - (cObj as CoreObject).thisLocation.objects.Add((cObj as CoreObject).TileLocation, (StardewValley.Object)cObj); - thingsToAddBackIn.Add(cObj as CoreObject); - //Util.placementAction(cObj, cObj.thisLocation,(int)cObj.tileLocation.X,(int) cObj.tileLocation.Y,null,false); - } - } - else - { - Game1.player.addItemToInventory(cObj); - } - } - catch (Exception e) - { - ModCore.ModMonitor.Log(e.ToString()); - // Log.AsyncO(e); - } - } - } - } - else - { - ModCore.ModMonitor.Log("Error parsing unknown object type: " + s, LogLevel.Error); - } - - } - */ - /// /// Process an item from a file back into it's original storage container. /// @@ -623,7 +483,7 @@ namespace StardustCore.Serialization { Log.AsyncC("PART OF PATH2 " + v); } - */ + if (chestArray2.Length > chestArray.Length) chestArray = chestArray2; GameLocation loc = Game1.getLocationFromName(chestArray[chestArray.Length - 3]); @@ -667,7 +527,7 @@ namespace StardustCore.Serialization var word = ParseXMLType(path); if (pair.Key == word.ToString()) { - cObj = pair.Value.parse.Invoke(""); + cObj = pair.Value.parse.Invoke(path); if (cObj is CoreObject) { (cObj as CoreObject).thisLocation = Game1.getLocationFromName((cObj as CoreObject).locationsName); @@ -728,7 +588,7 @@ namespace StardustCore.Serialization Lists.trackedObjectList.Add(cObj); //Util.placementAction(cObj, cObj.thisLocation,(int)cObj.tileLocation.X,(int) cObj.tileLocation.Y,null,false); } - */ + //USE JSON STYLE DESERIALIZNG if (acceptedTypes.ContainsKey(s)) @@ -742,7 +602,7 @@ namespace StardustCore.Serialization { //parse from Json Style // Log.AsyncR("1"); - cObj = pair.Value.parse.Invoke(""); + cObj = pair.Value.parse.Invoke(path); if (cObj is CoreObject) { (cObj as CoreObject).thisLocation = Game1.getLocationFromName((cObj as CoreObject).locationsName); @@ -799,15 +659,130 @@ namespace StardustCore.Serialization } } + */ - + public void ProcessFileForCleanUpIntoContainer(string path, List thingsToAddBackIn) + { - /// - /// ??? - /// - /// - /// - public string ParseXMLType(string path) + + + //Log.AsyncC(path); + string newLine = Environment.NewLine; + + string[] chestArray = path.Split(new string[] { "/" }, StringSplitOptions.None); + string[] chestArray2 = path.Split(new string[] { "\\" }, StringSplitOptions.None); + /* + foreach (var v in chestArray) + { + Log.AsyncC("PART OF PATH "+v); + } + foreach (var v in chestArray2) + { + Log.AsyncC("PART OF PATH2 " + v); + } + */ + if (chestArray2.Length > chestArray.Length) chestArray = chestArray2; + + GameLocation loc = Game1.getLocationFromName(chestArray[chestArray.Length - 3]); + string[] chest = chestArray[chestArray.Length - 2].Split(','); + StardewValley.Object chestObject; + bool f = loc.objects.TryGetValue(new Microsoft.Xna.Framework.Vector2(Convert.ToInt32(chest[1]), Convert.ToInt32(chest[2])), out chestObject); + if (f == true) + { + ModCore.ModMonitor.Log("YAY"); + } + else + { + ModCore.ModMonitor.Log("BOO"); + } + try + { + string type = ""; + int count = 0; + while (type == "" || type == null) + { + if (count == 0) + { + //THE ERROR LIES HERE AS IT THINKS IT CAN TRY TO BE A CORE OBJECT WHEN IT IS NOT!!!! + CoreObject core_obj = StardustCore.ModCore.ModHelper.ReadJsonFile(path); //FIND A WAY TO FIX THIS!!!! + type = (core_obj as CoreObject).thisType; + //ModCore.ModMonitor.Log("UMM THIS CAN't BE RIGHT 1" + type); + } + + if (count == 1) + { + //THIS NEEDS TO BE SOMETHING GENERIC!!! + SerializedObjectBase core_obj = StardustCore.ModCore.ModHelper.ReadJsonFile(path); + type = (core_obj as SerializedObjectBase).SerializationName; + //ModCore.ModMonitor.Log("UMM THIS CAN't BE RIGHT 2" + type); + } + + if (count == 2) + { + ModCore.ModMonitor.Log("A valid type could not be found for the file: " + path); + return; + } + + count++; + } + + foreach (KeyValuePair pair in acceptedTypes) + { + // Log.AsyncY(pair.Key); + if (pair.Key == type) + { + try + { + //parse from Json Style + // Log.AsyncR("1"); + var cObj = pair.Value.parse.Invoke(path); + if (cObj is CoreObject) + { + (cObj as CoreObject).thisLocation = Game1.getLocationFromName((cObj as CoreObject).locationsName); + + if ((cObj as CoreObject).thisLocation == null) + { + Utilities.addItemToOtherInventory((chestObject as Chest).items, cObj); + // Log.AsyncY("ADDED ITEM TO INVENTORY"); + return; + } + else + { + (cObj as CoreObject).thisLocation.objects.Add((cObj as CoreObject).TileLocation, (StardewValley.Object)cObj); + thingsToAddBackIn.Add(cObj as CoreObject); + //Util.placementAction(cObj, cObj.thisLocation,(int)cObj.tileLocation.X,(int) cObj.tileLocation.Y,null,false); + } + } + else + { + Utilities.addItemToOtherInventory((chestObject as Chest).items, cObj); + } + } + catch (Exception e) + { + ModCore.ModMonitor.Log(e.ToString()); + // Log.AsyncO(e); + } + } + } + } + catch (Exception err) + { + ModCore.ModMonitor.Log(err.ToString()); + //Tool t = StardustCore.ModCore.ModHelper.ReadJsonFile(path); + } + + } + + + + +/// +/// ??? +/// +/// +/// +public string ParseXMLType(string path) { string[] s = File.ReadAllLines(path); string returnString = ""; From a928f7d18e35f5f3316121b8c25a186297ae766a Mon Sep 17 00:00:00 2001 From: Date: Tue, 12 Jun 2018 23:25:36 -0700 Subject: [PATCH 005/110] Added tool support for axe, hoe, watering can and pickaxe. --- .../StardustCore/Interfaces/ISerializeable.cs | 2 +- GeneralMods/StardustCore/ModCore.cs | 22 ++- .../StardustCore/Objects/CoreObject.cs | 2 +- .../Objects/Tools/BasicToolInfo.cs | 40 +++++ .../StardustCore/Objects/Tools/ExtendedAxe.cs | 24 ++- .../StardustCore/Objects/Tools/ExtendedHoe.cs | 142 ++++++++++++++++ .../Objects/Tools/ExtendedPickaxe.cs | 142 ++++++++++++++++ .../Objects/Tools/ExtendedWateringCan.cs | 156 ++++++++++++++++++ .../Serialization_ExtendedAxe.cs | 3 +- .../Serialization_ExtendedHoe.cs | 43 +++++ .../Serialization_ExtendedPickaxe.cs | 42 +++++ .../Serialization_ExtendedWateringCan.cs | 46 ++++++ .../SerializedObjectBase.cs | 2 +- .../Serialization/Serialization.cs | 4 +- GeneralMods/StardustCore/StardustCore.csproj | 7 + 15 files changed, 658 insertions(+), 19 deletions(-) create mode 100644 GeneralMods/StardustCore/Objects/Tools/BasicToolInfo.cs create mode 100644 GeneralMods/StardustCore/Objects/Tools/ExtendedHoe.cs create mode 100644 GeneralMods/StardustCore/Objects/Tools/ExtendedPickaxe.cs create mode 100644 GeneralMods/StardustCore/Objects/Tools/ExtendedWateringCan.cs create mode 100644 GeneralMods/StardustCore/Objects/Tools/SerializationInformation/Serialization_ExtendedHoe.cs create mode 100644 GeneralMods/StardustCore/Objects/Tools/SerializationInformation/Serialization_ExtendedPickaxe.cs create mode 100644 GeneralMods/StardustCore/Objects/Tools/SerializationInformation/Serialization_ExtendedWateringCan.cs diff --git a/GeneralMods/StardustCore/Interfaces/ISerializeable.cs b/GeneralMods/StardustCore/Interfaces/ISerializeable.cs index 9aeeef69..35c7292e 100644 --- a/GeneralMods/StardustCore/Interfaces/ISerializeable.cs +++ b/GeneralMods/StardustCore/Interfaces/ISerializeable.cs @@ -16,7 +16,7 @@ namespace StardustCore.Interfaces /// Gets the type of object I am trying to parse. /// /// - Type getCutsomType(); + Type getCustomType(); /// /// Returns the serialization name of the object I am serializing. diff --git a/GeneralMods/StardustCore/ModCore.cs b/GeneralMods/StardustCore/ModCore.cs index 35b71450..e426a2c7 100644 --- a/GeneralMods/StardustCore/ModCore.cs +++ b/GeneralMods/StardustCore/ModCore.cs @@ -5,6 +5,7 @@ using StardewValley.Menus; using StardustCore.ModInfo; using StardustCore.Objects.Tools; using StardustCore.Serialization; +using StardustCore.UIUtilities; using StardustCore.UIUtilities.SpriteFonts; using System; using System.Collections.Generic; @@ -56,14 +57,25 @@ namespace StardustCore { SerializationManager.restoreAllModObjects(SerializationManager.trackedObjectList); - ExtendedAxe axe = new ExtendedAxe(); - axe.UpgradeLevel = 1; - axe.Name = "Hello Axe"; - axe.DisplayName = "Hello Axe"; + ExtendedAxe axe = new ExtendedAxe(new BasicToolInfo("My First Axe",7,"An axe so legendary it shakes the heavens."), new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png"))); Game1.player.addItemToInventory(axe); + ExtendedHoe hoe = new ExtendedHoe(new BasicToolInfo("My First Hoe", 7, "An hoe so legendary it shakes the heavens."), new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png"))); + Game1.player.addItemToInventory(hoe); + + ExtendedPickaxe pick = new ExtendedPickaxe(new BasicToolInfo("My First pickaxe", 7, "An pickaxe so legendary it shakes the heavens."), new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png"))); + Game1.player.addItemToInventory(pick); + + ExtendedWateringCan water = new ExtendedWateringCan(new BasicToolInfo("My First Can", 7, "An can so legendary it shakes the heavens."), new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png")),10,3); + Game1.player.addItemToInventory(water); + + + + ExtendedWateringCan.Serialize(water); ExtendedAxe.Serialize(axe); - + ExtendedPickaxe.Serialize(pick); + ExtendedHoe.Serialize(hoe); + } private void SaveEvents_AfterSave(object sender, EventArgs e) diff --git a/GeneralMods/StardustCore/Objects/CoreObject.cs b/GeneralMods/StardustCore/Objects/CoreObject.cs index 814def34..e77eff49 100644 --- a/GeneralMods/StardustCore/Objects/CoreObject.cs +++ b/GeneralMods/StardustCore/Objects/CoreObject.cs @@ -1602,7 +1602,7 @@ namespace StardustCore return Color.Black; } - public virtual Type getCutsomType() + public virtual Type getCustomType() { return this.GetType(); } diff --git a/GeneralMods/StardustCore/Objects/Tools/BasicToolInfo.cs b/GeneralMods/StardustCore/Objects/Tools/BasicToolInfo.cs new file mode 100644 index 00000000..eb2866be --- /dev/null +++ b/GeneralMods/StardustCore/Objects/Tools/BasicToolInfo.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StardustCore.Objects.Tools +{ + public class BasicToolInfo + { + /// + /// The name of the tool. + /// + public string name; + + /// + /// The upgrade level of the tool. + /// + public int level; + + /// + /// The description of the tool. + /// + public string description; + + /// + /// Constructor used to hold generic info shared across all tools. + /// + /// + /// + /// + public BasicToolInfo(String Name, int Level, string Description) + { + this.name = Name; + this.level = Level; + this.description = Description; + } + + } +} diff --git a/GeneralMods/StardustCore/Objects/Tools/ExtendedAxe.cs b/GeneralMods/StardustCore/Objects/Tools/ExtendedAxe.cs index c60c9b1e..a271dfa6 100644 --- a/GeneralMods/StardustCore/Objects/Tools/ExtendedAxe.cs +++ b/GeneralMods/StardustCore/Objects/Tools/ExtendedAxe.cs @@ -29,14 +29,12 @@ namespace StardustCore.Objects.Tools this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content","Graphics","Tools","CustomAxe.png")); } - public ExtendedAxe(IModHelper helper,String texturePath) : base() + public ExtendedAxe(BasicToolInfo info, Texture2DExtended texture) { - this.texture = new Texture2DExtended(helper, texturePath); - } - - public ExtendedAxe(Texture2DExtended texture) :base() - { - this.texture = texture; + this.texture = texture; + this.displayName = info.name; + this.description = info.description; + this.UpgradeLevel = info.level; } public ExtendedAxe(SerializedObjectBase dataBase) : base() @@ -59,7 +57,7 @@ namespace StardustCore.Objects.Tools spriteBatch.Draw(texture.getTexture(), location + new Vector2(32f, 32f), new Rectangle(0, 0, 16 , 16), color * transparency, 0.0f, new Vector2(8f, 8f), 4f * scaleSize, SpriteEffects.None, layerDepth); } - public Type getCutsomType() + public Type getCustomType() { return this.GetType(); } @@ -74,6 +72,16 @@ namespace StardustCore.Objects.Tools return 1; } + public override bool canBeDropped() + { + return true; + } + + public override bool canBeTrashed() + { + return true; + } + public override void setNewTileIndexForUpgradeLevel() { //Do nothing. diff --git a/GeneralMods/StardustCore/Objects/Tools/ExtendedHoe.cs b/GeneralMods/StardustCore/Objects/Tools/ExtendedHoe.cs new file mode 100644 index 00000000..ebbcc04a --- /dev/null +++ b/GeneralMods/StardustCore/Objects/Tools/ExtendedHoe.cs @@ -0,0 +1,142 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using StardewModdingAPI; +using StardewValley; +using StardustCore.Interfaces; +using StardustCore.Objects.Tools.SerializationInformation; +using StardustCore.UIUtilities; + +namespace StardustCore.Objects.Tools +{ + public class ExtendedHoe : StardewValley.Tools.Hoe, IItemSerializeable, IToolSerializer + { + public Texture2DExtended texture; + + public override string DisplayName { get => this.displayName; set => this.displayName = value; } + public override string Name { get => this.displayName; set => this.displayName = value; } + + /// + /// Generates a default axe. Doens't really do much. + /// + public ExtendedHoe() : base() + { + this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png")); + } + + public ExtendedHoe(BasicToolInfo info, Texture2DExtended texture) + { + this.texture = texture; + this.displayName = info.name; + this.description = info.description; + this.UpgradeLevel = info.level; + } + + public ExtendedHoe(SerializedObjectBase dataBase) : base() + { + StardustCore.ModCore.ModMonitor.Log("WTF EVEN " + dataBase.GetType().ToString()); + StardustCore.ModCore.ModMonitor.Log((dataBase as Serialization_ExtendedHoe).Name); + this.displayName = "Hello"; + this.description = (dataBase as Serialization_ExtendedHoe).Description; + this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png")); + this.UpgradeLevel = (dataBase as Serialization_ExtendedHoe).UpgradeLevel; + } + + public override bool canBeDropped() + { + return true; + } + + public override bool canBeTrashed() + { + return true; + } + + public override void draw(SpriteBatch b) + { + base.draw(b); + } + + public override void drawInMenu(SpriteBatch spriteBatch, Vector2 location, float scaleSize, float transparency, float layerDepth, bool drawStackNumber, Color color, bool drawShadow) + { + spriteBatch.Draw(texture.getTexture(), location + new Vector2(32f, 32f), new Rectangle(0, 0, 16, 16), color * transparency, 0.0f, new Vector2(8f, 8f), 4f * scaleSize, SpriteEffects.None, layerDepth); + } + + public Type getCustomType() + { + return this.GetType(); + } + + public string GetSerializationName() + { + return this.GetType().ToString(); + } + + public override int maximumStackSize() + { + return 1; + } + + public override void setNewTileIndexForUpgradeLevel() + { + //Do nothing. + } + + /// + /// Serializes the said item properly. + /// + /// + public static void Serialize(Item I) + { + SerializationInformation.Serialization_ExtendedHoe sAxe = new SerializationInformation.Serialization_ExtendedHoe((I as ExtendedHoe)); + String savePath = ModCore.SerializationManager.playerInventoryPath; + String fileName = I.Name + ".json"; + String resultPath = Path.Combine(savePath, fileName); + int count = 0; + while (File.Exists(resultPath)) + { + resultPath = Serialization.SerializationManager.getValidSavePathIfDuplicatesExist(I, savePath, count); + count++; + } + StardustCore.ModCore.ModHelper.WriteJsonFile(resultPath, sAxe); + } + + /// + /// Serializes the said item to a chest. + /// + /// + /// + public static void SerializeToContainer(Item I, string s) + { + SerializationInformation.Serialization_ExtendedHoe sAxe = new SerializationInformation.Serialization_ExtendedHoe((I as ExtendedHoe)); + String savePath = s; + String fileName = I.Name + ".json"; + String resultPath = Path.Combine(savePath, fileName); + int count = 0; + while (File.Exists(resultPath)) + { + resultPath = Serialization.SerializationManager.getValidSavePathIfDuplicatesExist(I, savePath, count); + count++; + } + StardustCore.ModCore.ModHelper.WriteJsonFile(resultPath, sAxe); + } + + /// + /// Deserializes the object from a .json. + /// + /// + /// + public static ExtendedHoe Deserialize(string data) + { + Serialization_ExtendedHoe axeData = ModCore.ModHelper.ReadJsonFile(data); + return new ExtendedHoe(axeData); + } + + + } +} diff --git a/GeneralMods/StardustCore/Objects/Tools/ExtendedPickaxe.cs b/GeneralMods/StardustCore/Objects/Tools/ExtendedPickaxe.cs new file mode 100644 index 00000000..74bc63a6 --- /dev/null +++ b/GeneralMods/StardustCore/Objects/Tools/ExtendedPickaxe.cs @@ -0,0 +1,142 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using StardewModdingAPI; +using StardewValley; +using StardustCore.Interfaces; +using StardustCore.Objects.Tools.SerializationInformation; +using StardustCore.UIUtilities; + +namespace StardustCore.Objects.Tools +{ + public class ExtendedPickaxe : StardewValley.Tools.Pickaxe, IItemSerializeable, IToolSerializer + { + public Texture2DExtended texture; + + public override string DisplayName { get => this.displayName; set => this.displayName = value; } + public override string Name { get => this.displayName; set => this.displayName = value; } + + /// + /// Generates a default axe. Doens't really do much. + /// + public ExtendedPickaxe() : base() + { + this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png")); + } + + public ExtendedPickaxe(BasicToolInfo info, Texture2DExtended texture) + { + this.texture = texture; + this.displayName = info.name; + this.description = info.description; + this.UpgradeLevel = info.level; + } + + public ExtendedPickaxe(SerializedObjectBase dataBase) : base() + { + StardustCore.ModCore.ModMonitor.Log("WTF EVEN " + dataBase.GetType().ToString()); + StardustCore.ModCore.ModMonitor.Log((dataBase as Serialization_ExtendedPickaxe).Name); + this.displayName = "Hello"; + this.description = (dataBase as Serialization_ExtendedPickaxe).Description; + this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png")); + this.UpgradeLevel = (dataBase as Serialization_ExtendedPickaxe).UpgradeLevel; + } + + public override bool canBeDropped() + { + return true; + } + + public override bool canBeTrashed() + { + return true; + } + + public override void draw(SpriteBatch b) + { + base.draw(b); + } + + public override void drawInMenu(SpriteBatch spriteBatch, Vector2 location, float scaleSize, float transparency, float layerDepth, bool drawStackNumber, Color color, bool drawShadow) + { + spriteBatch.Draw(texture.getTexture(), location + new Vector2(32f, 32f), new Rectangle(0, 0, 16, 16), color * transparency, 0.0f, new Vector2(8f, 8f), 4f * scaleSize, SpriteEffects.None, layerDepth); + } + + public Type getCustomType() + { + return this.GetType(); + } + + public string GetSerializationName() + { + return this.GetType().ToString(); + } + + public override int maximumStackSize() + { + return 1; + } + + public override void setNewTileIndexForUpgradeLevel() + { + //Do nothing. + } + + /// + /// Serializes the said item properly. + /// + /// + public static void Serialize(Item I) + { + SerializationInformation.Serialization_ExtendedPickaxe sAxe = new SerializationInformation.Serialization_ExtendedPickaxe((I as ExtendedPickaxe)); + String savePath = ModCore.SerializationManager.playerInventoryPath; + String fileName = I.Name + ".json"; + String resultPath = Path.Combine(savePath, fileName); + int count = 0; + while (File.Exists(resultPath)) + { + resultPath = Serialization.SerializationManager.getValidSavePathIfDuplicatesExist(I, savePath, count); + count++; + } + StardustCore.ModCore.ModHelper.WriteJsonFile(resultPath, sAxe); + } + + /// + /// Serializes the said item to a chest. + /// + /// + /// + public static void SerializeToContainer(Item I, string s) + { + SerializationInformation.Serialization_ExtendedPickaxe sAxe = new SerializationInformation.Serialization_ExtendedPickaxe((I as ExtendedPickaxe)); + String savePath = s; + String fileName = I.Name + ".json"; + String resultPath = Path.Combine(savePath, fileName); + int count = 0; + while (File.Exists(resultPath)) + { + resultPath = Serialization.SerializationManager.getValidSavePathIfDuplicatesExist(I, savePath, count); + count++; + } + StardustCore.ModCore.ModHelper.WriteJsonFile(resultPath, sAxe); + } + + /// + /// Deserializes the object from a .json. + /// + /// + /// + public static ExtendedPickaxe Deserialize(string data) + { + Serialization_ExtendedPickaxe axeData = ModCore.ModHelper.ReadJsonFile(data); + return new ExtendedPickaxe(axeData); + } + + + } +} diff --git a/GeneralMods/StardustCore/Objects/Tools/ExtendedWateringCan.cs b/GeneralMods/StardustCore/Objects/Tools/ExtendedWateringCan.cs new file mode 100644 index 00000000..345ec345 --- /dev/null +++ b/GeneralMods/StardustCore/Objects/Tools/ExtendedWateringCan.cs @@ -0,0 +1,156 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using StardewModdingAPI; +using StardewValley; +using StardustCore.Interfaces; +using StardustCore.Objects.Tools.SerializationInformation; +using StardustCore.UIUtilities; + +namespace StardustCore.Objects.Tools +{ + public class ExtendedWateringCan : StardewValley.Tools.WateringCan, IItemSerializeable, IToolSerializer + { + public Texture2DExtended texture; + + public override string DisplayName { get => this.displayName; set => this.displayName = value; } + public override string Name { get => this.displayName; set => this.displayName = value; } + + /// + /// Generates a default axe. Doens't really do much. + /// + public ExtendedWateringCan() : base() + { + this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png")); + this.waterCanMax = 30; + this.WaterLeft = 0; + } + + public ExtendedWateringCan(BasicToolInfo info, Texture2DExtended texture, int waterMax, int waterCurrent) + { + this.texture = texture; + this.displayName = info.name; + this.description = info.description; + this.UpgradeLevel = info.level; + this.waterCanMax = waterMax; + this.WaterLeft = waterCurrent; + } + + public ExtendedWateringCan(SerializedObjectBase dataBase) : base() + { + StardustCore.ModCore.ModMonitor.Log((dataBase as Serialization_ExtendedWateringCan).Name); + this.displayName = "Hello"; + this.description = (dataBase as Serialization_ExtendedWateringCan).Description; + this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png")); + this.UpgradeLevel = (dataBase as Serialization_ExtendedWateringCan).UpgradeLevel; + this.waterCanMax= (dataBase as Serialization_ExtendedWateringCan).MaxCapacity; + this.WaterLeft= (dataBase as Serialization_ExtendedWateringCan).WaterLeft; + } + + public override void draw(SpriteBatch b) + { + base.draw(b); + } + + public override void drawInMenu(SpriteBatch spriteBatch, Vector2 location, float scaleSize, float transparency, float layerDepth, bool drawStackNumber, Color color, bool drawShadow) + { + spriteBatch.Draw(texture.getTexture(), location + new Vector2(32f, 32f), new Rectangle(0, 0, 16, 16), color * transparency, 0.0f, new Vector2(8f, 8f), 4f * scaleSize, SpriteEffects.None, layerDepth); + if (!drawStackNumber || Game1.player.hasWateringCanEnchantment) + return; + spriteBatch.Draw(Game1.mouseCursors, location + new Vector2(4f, 44f), new Rectangle?(new Rectangle(297, 420, 14, 5)), Color.White * transparency, 0.0f, Vector2.Zero, 4f, SpriteEffects.None, layerDepth + 0.0001f); + spriteBatch.Draw(Game1.staminaRect, new Rectangle((int)location.X + 8, (int)location.Y + 64 - 16, (int)((double)this.WaterLeft / (double)this.waterCanMax * 48.0), 8), Color.DodgerBlue * 0.7f * transparency); + } + + public override bool canBeDropped() + { + return true; + } + + public override bool canBeTrashed() + { + return true; + } + + public Type getCustomType() + { + return this.GetType(); + } + + public string GetSerializationName() + { + return this.GetType().ToString(); + } + + public override int maximumStackSize() + { + return 1; + } + + public override void setNewTileIndexForUpgradeLevel() + { + //Do nothing. + } + + public void upgradeWateringCapacity(int amount) + { + this.waterCanMax += amount; + } + + /// + /// Serializes the said item properly. + /// + /// + public static void Serialize(Item I) + { + SerializationInformation.Serialization_ExtendedWateringCan tool = new SerializationInformation.Serialization_ExtendedWateringCan((I as ExtendedWateringCan)); + String savePath = ModCore.SerializationManager.playerInventoryPath; + String fileName = I.Name + ".json"; + String resultPath = Path.Combine(savePath, fileName); + int count = 0; + while (File.Exists(resultPath)) + { + resultPath = Serialization.SerializationManager.getValidSavePathIfDuplicatesExist(I, savePath, count); + count++; + } + StardustCore.ModCore.ModHelper.WriteJsonFile(resultPath, tool); + } + + /// + /// Serializes the said item to a chest. + /// + /// + /// + public static void SerializeToContainer(Item I, string s) + { + SerializationInformation.Serialization_ExtendedWateringCan tool = new SerializationInformation.Serialization_ExtendedWateringCan((I as ExtendedWateringCan)); + String savePath = s; + String fileName = I.Name + ".json"; + String resultPath = Path.Combine(savePath, fileName); + int count = 0; + while (File.Exists(resultPath)) + { + resultPath = Serialization.SerializationManager.getValidSavePathIfDuplicatesExist(I, savePath, count); + count++; + } + StardustCore.ModCore.ModHelper.WriteJsonFile(resultPath, tool); + } + + /// + /// Deserializes the object from a .json. + /// + /// + /// + public static ExtendedWateringCan Deserialize(string data) + { + SerializationInformation.Serialization_ExtendedWateringCan toolData = ModCore.ModHelper.ReadJsonFile< SerializationInformation.Serialization_ExtendedWateringCan>(data); + return new ExtendedWateringCan(toolData); + } + + + } +} diff --git a/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/Serialization_ExtendedAxe.cs b/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/Serialization_ExtendedAxe.cs index 700b347a..fc296b61 100644 --- a/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/Serialization_ExtendedAxe.cs +++ b/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/Serialization_ExtendedAxe.cs @@ -1,4 +1,5 @@ using StardustCore.Interfaces; +using StardustCore.Objects.Tools.SerializationInformation; using StardustCore.UIUtilities; using System; using System.Collections.Generic; @@ -29,7 +30,7 @@ namespace StardustCore.Objects.Tools.SerializationInformation this.SerializationName = GetSerializationName(); } - public override Type getCutsomType() + public override Type getCustomType() { return typeof(ExtendedAxe); } diff --git a/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/Serialization_ExtendedHoe.cs b/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/Serialization_ExtendedHoe.cs new file mode 100644 index 00000000..a314f0c6 --- /dev/null +++ b/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/Serialization_ExtendedHoe.cs @@ -0,0 +1,43 @@ +using StardustCore.Interfaces; +using StardustCore.Objects.Tools.SerializationInformation; +using StardustCore.UIUtilities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StardustCore.Objects.Tools.SerializationInformation +{ + public class Serialization_ExtendedHoe : SerializedObjectBase + { + public string Name; + public string Description; + public int UpgradeLevel; + public Texture2DExtended TextureInformation; + + public Serialization_ExtendedHoe() : base() + { + this.SerializationName = GetSerializationName(); + } + + public Serialization_ExtendedHoe(ExtendedHoe axe) : base() + { + this.UpgradeLevel = axe.UpgradeLevel; + this.Name = axe.Name; + this.Description = axe.description; + this.TextureInformation = axe.texture; + this.SerializationName = GetSerializationName(); + } + + public override Type getCustomType() + { + return typeof(ExtendedHoe); + } + + public override string GetSerializationName() + { + return typeof(ExtendedHoe).ToString(); + } + } +} diff --git a/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/Serialization_ExtendedPickaxe.cs b/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/Serialization_ExtendedPickaxe.cs new file mode 100644 index 00000000..15a78bd3 --- /dev/null +++ b/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/Serialization_ExtendedPickaxe.cs @@ -0,0 +1,42 @@ +using StardustCore.Interfaces; +using StardustCore.UIUtilities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StardustCore.Objects.Tools.SerializationInformation +{ + public class Serialization_ExtendedPickaxe : SerializedObjectBase + { + public string Name; + public string Description; + public int UpgradeLevel; + public Texture2DExtended TextureInformation; + + public Serialization_ExtendedPickaxe() : base() + { + this.SerializationName = GetSerializationName(); + } + + public Serialization_ExtendedPickaxe(ExtendedPickaxe axe) : base() + { + this.UpgradeLevel = axe.UpgradeLevel; + this.Name = axe.Name; + this.Description = axe.description; + this.TextureInformation = axe.texture; + this.SerializationName = GetSerializationName(); + } + + public override Type getCustomType() + { + return typeof(ExtendedPickaxe); + } + + public override string GetSerializationName() + { + return typeof(ExtendedPickaxe).ToString(); + } + } +} diff --git a/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/Serialization_ExtendedWateringCan.cs b/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/Serialization_ExtendedWateringCan.cs new file mode 100644 index 00000000..7f99ebd7 --- /dev/null +++ b/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/Serialization_ExtendedWateringCan.cs @@ -0,0 +1,46 @@ +using StardustCore.Interfaces; +using StardustCore.UIUtilities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StardustCore.Objects.Tools.SerializationInformation +{ + public class Serialization_ExtendedWateringCan : SerializedObjectBase + { + public string Name; + public string Description; + public int UpgradeLevel; + public Texture2DExtended TextureInformation; + public int MaxCapacity; + public int WaterLeft; + + public Serialization_ExtendedWateringCan() : base() + { + this.SerializationName = GetSerializationName(); + } + + public Serialization_ExtendedWateringCan(ExtendedWateringCan tool) : base() + { + this.UpgradeLevel = tool.UpgradeLevel; + this.Name = tool.Name; + this.Description = tool.description; + this.TextureInformation = tool.texture; + this.SerializationName = GetSerializationName(); + this.MaxCapacity = tool.waterCanMax; + this.WaterLeft = tool.WaterLeft; + } + + public override Type getCustomType() + { + return typeof(ExtendedWateringCan); + } + + public override string GetSerializationName() + { + return typeof(ExtendedWateringCan).ToString(); + } + } +} diff --git a/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/SerializedObjectBase.cs b/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/SerializedObjectBase.cs index 0e1c7442..c315a1e5 100644 --- a/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/SerializedObjectBase.cs +++ b/GeneralMods/StardustCore/Objects/Tools/SerializationInformation/SerializedObjectBase.cs @@ -16,7 +16,7 @@ namespace StardustCore.Objects.Tools.SerializationInformation this.SerializationName = this.GetSerializationName(); } - public virtual Type getCutsomType() + public virtual Type getCustomType() { return this.GetType(); } diff --git a/GeneralMods/StardustCore/Serialization/Serialization.cs b/GeneralMods/StardustCore/Serialization/Serialization.cs index d3faa361..f59e351b 100644 --- a/GeneralMods/StardustCore/Serialization/Serialization.cs +++ b/GeneralMods/StardustCore/Serialization/Serialization.cs @@ -157,7 +157,7 @@ namespace StardustCore.Serialization } foreach (var i in removalList) { - if (i.getCutsomType() == typeof(CoreObject)) + if (i.getCustomType() == typeof(CoreObject)) { (i as CoreObject).thisLocation.removeObject((i as CoreObject).TileLocation, false); } @@ -826,7 +826,7 @@ public string ParseXMLType(string path) { foreach(var v in StardustCore.ModCore.SerializationManager.trackedObjectList) { - if (v.getCutsomType() == typeof(CoreObject)) + if (v.getCustomType() == typeof(CoreObject)) { if (c.TileLocation == (v as CoreObject).TileLocation && c.thisLocation == (v as CoreObject).thisLocation) { diff --git a/GeneralMods/StardustCore/StardustCore.csproj b/GeneralMods/StardustCore/StardustCore.csproj index 67405b94..eddcade2 100644 --- a/GeneralMods/StardustCore/StardustCore.csproj +++ b/GeneralMods/StardustCore/StardustCore.csproj @@ -89,8 +89,15 @@ + + + + + + + From 4469fbd9b353e543f6d5fb1d437853142e6f431b Mon Sep 17 00:00:00 2001 From: Date: Wed, 13 Jun 2018 02:36:52 -0700 Subject: [PATCH 006/110] Made multi tile objects that can be used in the future for things like machines and more furniture. Bigger things here we come. Need to edit sme click functionality however. --- .../AdditionalCropsFramework/PlanterBox.cs | 3 - .../Content/Graphics/MultiTest/Test1.png | Bin 0 -> 191 bytes .../Content/Graphics/MultiTest/Test2.png | Bin 0 -> 171 bytes .../Content/Graphics/MultiTest/Test3.png | Bin 0 -> 193 bytes GeneralMods/StardustCore/ModCore.cs | 32 ++- .../StardustCore/Objects/CoreObject.cs | 193 +++--------------- .../Objects/MultiTileComponent.cs | 130 ++++++++++++ .../StardustCore/Objects/MultiTileObject.cs | 185 +++++++++++++++++ .../StardustCore/Objects/Tools/ExtendedAxe.cs | 2 +- .../StardustCore/Objects/Tools/ExtendedHoe.cs | 2 +- .../Objects/Tools/ExtendedPickaxe.cs | 2 +- .../Objects/Tools/ExtendedWateringCan.cs | 2 +- GeneralMods/StardustCore/StardustCore.csproj | 11 + GeneralMods/StardustCore/Utilities.cs | 11 +- 14 files changed, 386 insertions(+), 187 deletions(-) create mode 100644 GeneralMods/StardustCore/Content/Graphics/MultiTest/Test1.png create mode 100644 GeneralMods/StardustCore/Content/Graphics/MultiTest/Test2.png create mode 100644 GeneralMods/StardustCore/Content/Graphics/MultiTest/Test3.png create mode 100644 GeneralMods/StardustCore/Objects/MultiTileComponent.cs create mode 100644 GeneralMods/StardustCore/Objects/MultiTileObject.cs diff --git a/GeneralMods/AdditionalCropsFramework/PlanterBox.cs b/GeneralMods/AdditionalCropsFramework/PlanterBox.cs index 99293655..96dc57b1 100644 --- a/GeneralMods/AdditionalCropsFramework/PlanterBox.cs +++ b/GeneralMods/AdditionalCropsFramework/PlanterBox.cs @@ -501,9 +501,6 @@ namespace AdditionalCropsFramework this.locationsName = ""; return true; } - - - return false; } diff --git a/GeneralMods/StardustCore/Content/Graphics/MultiTest/Test1.png b/GeneralMods/StardustCore/Content/Graphics/MultiTest/Test1.png new file mode 100644 index 0000000000000000000000000000000000000000..cb95df9b2e7c4e06781356e557f6db76f296ef31 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJtM=93Yk-Ziu65Q978Ppryk$P$zUMBZ1{fvm*xB2SgvGjx3~RzCD0#LT=By}Z;C1rt33 zJtM=93Yk-ZiljYV978PplXraGKTpMERigwLzcBf;o}D51WrTe3!z+S7WelFKelF{r G5}E*&8!z7g literal 0 HcmV?d00001 diff --git a/GeneralMods/StardustCore/Content/Graphics/MultiTest/Test3.png b/GeneralMods/StardustCore/Content/Graphics/MultiTest/Test3.png new file mode 100644 index 0000000000000000000000000000000000000000..2a2e2b7c89f48ee1e02c95dc7406fd2ac1cba500 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJtM=93Yk-ZiVQtn978Ppryf`2V^H8>F#Nav`~8R7J0@KDGUukf-OneJ{ZWYfY5EQt WlLe9%GVB0qX7F_Nb6Mw<&;$U> objs = new List>(); + MultiTileComponent tile1 = new MultiTileComponent(new CoreObject(new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png")), 0, Vector2.Zero, 0)); + MultiTileComponent tile2 = new MultiTileComponent(new CoreObject(new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test2.png")), 0, Vector2.Zero, 0)); + MultiTileComponent tile3 = new MultiTileComponent(new CoreObject(new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test3.png")), 0, Vector2.Zero, 0)); - ExtendedHoe hoe = new ExtendedHoe(new BasicToolInfo("My First Hoe", 7, "An hoe so legendary it shakes the heavens."), new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png"))); - Game1.player.addItemToInventory(hoe); + objs.Add(new KeyValuePair(new Vector2(0, 0), tile1)); + objs.Add(new KeyValuePair(new Vector2(1, 0), tile2)); + objs.Add(new KeyValuePair(new Vector2(2, 0), tile3)); - ExtendedPickaxe pick = new ExtendedPickaxe(new BasicToolInfo("My First pickaxe", 7, "An pickaxe so legendary it shakes the heavens."), new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png"))); - Game1.player.addItemToInventory(pick); - - ExtendedWateringCan water = new ExtendedWateringCan(new BasicToolInfo("My First Can", 7, "An can so legendary it shakes the heavens."), new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png")),10,3); - Game1.player.addItemToInventory(water); - - - - ExtendedWateringCan.Serialize(water); - ExtendedAxe.Serialize(axe); - ExtendedPickaxe.Serialize(pick); - ExtendedHoe.Serialize(hoe); + MultiTileObject collection= new MultiTileObject("MultiTest", "Trying to get multi object testing working", Vector2.Zero, new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test3.png")), objs, StardustCore.IlluminateFramework.Colors.invertColor(StardustCore.IlluminateFramework.LightColorsList.Purple), "MultiTest"); + Game1.player.addItemToInventory(collection); } private void SaveEvents_AfterSave(object sender, EventArgs e) diff --git a/GeneralMods/StardustCore/Objects/CoreObject.cs b/GeneralMods/StardustCore/Objects/CoreObject.cs index e77eff49..1c407066 100644 --- a/GeneralMods/StardustCore/Objects/CoreObject.cs +++ b/GeneralMods/StardustCore/Objects/CoreObject.cs @@ -31,7 +31,7 @@ namespace StardustCore public int sourceIndexOffset; - protected Vector2 drawPosition; + public Vector2 drawPosition; public Rectangle sourceRect; @@ -136,19 +136,13 @@ namespace StardustCore this.defaultSourceRect = new Rectangle(which * 16 % TextureSheet.getTexture().Width, which * 16 / TextureSheet.getTexture().Width * 16, 1, 1); if (array[2].Equals("-1")) { - this.sourceRect = this.getDefaultSourceRectForType(which, this.Decoration_type); + this.sourceRect = new Rectangle(0, 0, 16, 16); this.defaultSourceRect = this.sourceRect; } else { - this.defaultSourceRect.Width = Convert.ToInt32(array[2].Split(new char[] - { - ' ' - })[0]); - this.defaultSourceRect.Height = Convert.ToInt32(array[2].Split(new char[] - { - ' ' - })[1]); + this.defaultSourceRect.Width = 16; + this.defaultSourceRect.Height = 16; this.sourceRect = new Rectangle(which * 16 % TextureSheet.getTexture().Width, which * 16 / TextureSheet.getTexture().Width * 16, this.defaultSourceRect.Width * 16, this.defaultSourceRect.Height * 16); this.defaultSourceRect = this.sourceRect; } @@ -168,7 +162,7 @@ namespace StardustCore { ' ' })[1]); - this.boundingBox.Value = new Rectangle((int)this.TileLocation.X * Game1.tileSize, (int)this.TileLocation.Y * Game1.tileSize, this.defaultBoundingBox.Width * Game1.tileSize, this.defaultBoundingBox.Height * Game1.tileSize); + this.boundingBox.Value = new Rectangle((int)this.TileLocation.X * Game1.tileSize, (int)this.TileLocation.Y * Game1.tileSize, 1 * Game1.tileSize, 1 * Game1.tileSize); this.defaultBoundingBox = this.boundingBox.Value; } this.updateDrawPosition(); @@ -190,7 +184,7 @@ namespace StardustCore /// The x tile location to "place". /// The y tile location to "place". /// If true then the Serialization manager will keep track of this object. - public void fakePlacementAction(GameLocation location, int tileX, int tileY,bool trackSerialization=true) + public virtual void fakePlacementAction(GameLocation location, int tileX, int tileY,bool trackSerialization=true) { this.thisLocation = location; this.TileLocation = new Vector2(tileX, tileY); @@ -605,7 +599,14 @@ namespace StardustCore environment.lightGlows.Remove(new Vector2((float)(this.boundingBox.X + Game1.tileSize / 2), (float)(this.boundingBox.Y + Game1.tileSize))); this.lightGlowAdded = false; } - this.spillInventoryEverywhere(); + try + { + this.spillInventoryEverywhere(); + } + catch(Exception err) + { + + } base.performRemoveAction(tileLocation, environment); } @@ -979,163 +980,37 @@ namespace StardustCore public override bool placementAction(GameLocation location, int x, int y, StardewValley.Farmer who = null) { + + Point point = new Point(x / Game1.tileSize, y / Game1.tileSize); - if (location is FarmHouse) + this.TileLocation = new Vector2((float)point.X, (float)point.Y); + + this.boundingBox.Value = new Rectangle(x, y, Game1.tileSize, Game1.tileSize); + + using (List.Enumerator enumerator3 = location.getFarmers().GetEnumerator()) { - Point point = new Point(x / Game1.tileSize, y / Game1.tileSize); - List walls = FarmHouse.getWalls((location as FarmHouse).upgradeLevel); - this.TileLocation = new Vector2((float)point.X, (float)point.Y); - bool flag = false; - if (this.Decoration_type == 6 || this.Decoration_type == 13 || this.ParentSheetIndex == 1293) + while (enumerator3.MoveNext()) { - int num = (this.ParentSheetIndex == 1293) ? 3 : 0; - bool flag2 = false; - foreach (Rectangle current in walls) - { - if ((this.Decoration_type == 6 || this.Decoration_type == 13 || num != 0) && current.Y + num == point.Y && current.Contains(point.X, point.Y - num)) - { - flag2 = true; - break; - } - } - if (!flag2) - { - Game1.showRedMessage("Must be placed on wall"); - return false; - } - flag = true; - } - for (int i = point.X; i < point.X + this.getTilesWide(); i++) - { - for (int j = point.Y; j < point.Y + this.getTilesHigh(); j++) - { - if (location.doesTileHaveProperty(i, j, "NoFurniture", "Back") != null) - { - Game1.showRedMessage("Furniture can't be placed here"); - return false; - } - if (!flag && Utility.pointInRectangles(walls, i, j)) - { - Game1.showRedMessage("Can't place on wall"); - return false; - } - if (location.getTileIndexAt(i, j, "Buildings") != -1) - { - return false; - } - } - } - this.boundingBox.Value = new Rectangle(x / Game1.tileSize, y / Game1.tileSize, this.boundingBox.Width, this.boundingBox.Height); - foreach (var c in location.objects.Pairs) - { - StardewValley.Object ehh = c.Value; - if (((ehh.GetType()).ToString()).Contains("Spawner")) - { - CoreObject current2 = (CoreObject)ehh; - if (current2.Decoration_type == 11 && current2.heldObject.Value == null && current2.getBoundingBox(current2.TileLocation).Intersects(this.boundingBox.Value)) - { - current2.performObjectDropInAction(this, false, (who == null) ? Game1.player : who); - bool result = true; - return result; - } - } - } - foreach (StardewValley.Farmer current3 in location.getFarmers()) - { - if (current3.GetBoundingBox().Intersects(this.boundingBox.Value)) + if (enumerator3.Current.GetBoundingBox().Intersects(this.boundingBox.Value)) { Game1.showRedMessage("Can't place on top of a person."); bool result = false; return result; } } - this.updateDrawPosition(); - // Log.AsyncO(this.boundingBox); - // Log.AsyncO(x); - // Log.AsyncY(y); - for (int i = 0; i <= this.boundingBox.X / Game1.tileSize; i++) - { - base.placementAction(location, x + 1, y, who); - } - for (int i = 0; i <= this.boundingBox.Y / Game1.tileSize; i++) - { - base.placementAction(location, x, y + 1, who); - } - return true; - } - else - { - Point point = new Point(x / Game1.tileSize, y / Game1.tileSize); - // List walls = FarmHouse.getWalls((location as FarmHouse).upgradeLevel); - this.TileLocation = new Vector2((float)point.X, (float)point.Y); - if (this.Decoration_type == 6 || this.Decoration_type == 13 || this.ParentSheetIndex == 1293) - { - int num = (this.ParentSheetIndex == 1293) ? 3 : 0; - bool flag2 = false; - /* - foreach (Rectangle current in walls) - { - if ((this.Decoration_type == 6 || this.Decoration_type == 13 || num != 0) && current.Y + num == point.Y && current.Contains(point.X, point.Y - num)) - { - flag2 = true; - break; - } - } - */ - if (!flag2) - { - Game1.showRedMessage("Must be placed on wall"); - return false; - } - } - for (int i = point.X; i < point.X + this.getTilesWide(); i++) - { - for (int j = point.Y; j < point.Y + this.getTilesHigh(); j++) - { - if (location.doesTileHaveProperty(i, j, "NoFurniture", "Back") != null) - { - Game1.showRedMessage("Furniture can't be placed here"); - return false; - } - /* - if (!flag && Utility.pointInRectangles(walls, i, j)) - { - Game1.showRedMessage("Can't place on wall"); - return false; - } - */ - if (location.getTileIndexAt(i, j, "Buildings") != -1) - { - return false; - } - } - } - this.boundingBox.Value = new Rectangle(x / Game1.tileSize, y / Game1.tileSize, this.boundingBox.Width, this.boundingBox.Height); - /* - foreach (Furniture current2 in (location as FarmHouse).furniture) - { - if (current2.furniture_type == 11 && current2.heldObject == null && current2.getBoundingBox(current2.tileLocation).Intersects(this.boundingBox)) - { - current2.performObjectDropInAction(this, false, (who == null) ? Game1.player : who); - bool result = true; - return result; - } - } - */ - foreach (StardewValley.Farmer current3 in location.getFarmers()) - { - if (current3.GetBoundingBox().Intersects(this.boundingBox.Value)) - { - Game1.showRedMessage("Can't place on top of a person."); - bool result = false; - return result; - } - } - this.updateDrawPosition(); - this.thisLocation = Game1.player.currentLocation; - return base.placementAction(location, x * Game1.tileSize, y * Game1.tileSize, who); } + this.updateDrawPosition(); + + bool f = Utilities.placementAction(this, location, x, y, StardustCore.ModCore.SerializationManager,who); + this.thisLocation = Game1.player.currentLocation; + return f; + // Game1.showRedMessage("Can only be placed in House"); + // return false; + + + + } public override bool isPlaceable() diff --git a/GeneralMods/StardustCore/Objects/MultiTileComponent.cs b/GeneralMods/StardustCore/Objects/MultiTileComponent.cs new file mode 100644 index 00000000..420a0a32 --- /dev/null +++ b/GeneralMods/StardustCore/Objects/MultiTileComponent.cs @@ -0,0 +1,130 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using StardewValley; + +namespace StardustCore.Objects +{ + public class MultiTileComponent : CoreObject + { + public MultiTileObject containerObject; + public CoreObject objectPart; + + public MultiTileComponent(CoreObject part) + { + this.objectPart = part; + this.name = this.objectPart.name; + this.defaultBoundingBox = new Rectangle(0, 0, 16, 16); + this.boundingBox.Value = new Rectangle((int)0 * Game1.tileSize, (int)0* Game1.tileSize, 1 * Game1.tileSize, 1 * Game1.tileSize); + } + + public override bool clicked(Farmer who) + { + containerObject.RemoveAllObjects(); + return true; + } + + public override Item getOne() + { + var obj= new MultiTileComponent((CoreObject)objectPart.getOne()); + obj.containerObject = this.containerObject; + return obj; + } + + public override bool RightClicked(Farmer who) + { + return this.objectPart.RightClicked(who); + } + + public override bool placementAction(GameLocation location, int x, int y, Farmer who = null) + { + Point point = new Point(x / Game1.tileSize, y / Game1.tileSize); + + this.TileLocation = new Vector2((float)point.X, (float)point.Y); + this.boundingBox.Value = new Rectangle((int)TileLocation.X * Game1.tileSize, (int)TileLocation.Y * Game1.tileSize, 1 * Game1.tileSize, 1 * Game1.tileSize); + using (List.Enumerator enumerator3 = location.getFarmers().GetEnumerator()) + { + while (enumerator3.MoveNext()) + { + if (enumerator3.Current.GetBoundingBox().Intersects(this.boundingBox.Value)) + { + Game1.showRedMessage("Can't place on top of a person."); + bool result = false; + return result; + } + } + } + this.updateDrawPosition(); + + bool f = Utilities.placementAction(this, location, x, y,StardustCore.ModCore.SerializationManager ,who); + this.thisLocation = Game1.player.currentLocation; + return f; + // Game1.showRedMessage("Can only be placed in House"); + // return false; + } + + public override void performRemoveAction(Vector2 tileLocation, GameLocation environment) + { + // Game1.showRedMessage("Why3?"); + try + { + this.heldObject.Value.performRemoveAction(this.TileLocation, this.thisLocation); + this.heldObject.Value = null; + } + catch(Exception err) + { + + } + StardustCore.ModCore.SerializationManager.trackedObjectList.Remove(this); + this.thisLocation.objects.Remove(this.TileLocation); + this.thisLocation = null; + this.locationsName = ""; + base.performRemoveAction(tileLocation, environment); + } + + public override void draw(SpriteBatch spriteBatch, int x, int y, float alpha = 1f) + { + if (x == -1) + { + spriteBatch.Draw(this.objectPart.TextureSheet.getTexture(), Game1.GlobalToLocal(Game1.viewport, this.objectPart.drawPosition), new Rectangle?(this.objectPart.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.objectPart.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, (this.objectPart.Decoration_type == 12) ? 0f : ((float)(this.objectPart.boundingBox.Bottom - 8) / 10000f)); + } + else + { + //The actual planter box being drawn. + if (animationManager == null) + { + spriteBatch.Draw(this.objectPart.TextureSheet.getTexture(), Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(x * Game1.tileSize), y * Game1.tileSize)), new Rectangle?(this.objectPart.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.objectPart.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, 0); + // Log.AsyncG("ANIMATION IS NULL?!?!?!?!"); + } + + else + { + //Log.AsyncC("Animation Manager is working!"); + this.animationManager.draw(spriteBatch, this.objectPart.animationManager.objectTexture.getTexture(), Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(x * Game1.tileSize), y * Game1.tileSize)), new Rectangle?(this.objectPart.animationManager.currentAnimation.sourceRectangle), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.objectPart.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, 0); + try + { + this.animationManager.tickAnimation(); + // Log.AsyncC("Tick animation"); + } + catch (Exception err) + { + ModCore.ModMonitor.Log(err.ToString()); + } + } + + // spriteBatch.Draw(Game1.mouseCursors, Game1.GlobalToLocal(Game1.viewport, new Vector2((float)((double)tileLocation.X * (double)Game1.tileSize + (((double)tileLocation.X * 11.0 + (double)tileLocation.Y * 7.0) % 10.0 - 5.0)) + (float)(Game1.tileSize / 2), (float)((double)tileLocation.Y * (double)Game1.tileSize + (((double)tileLocation.Y * 11.0 + (double)tileLocation.X * 7.0) % 10.0 - 5.0)) + (float)(Game1.tileSize / 2))), new Rectangle?(new Rectangle((int)((double)tileLocation.X * 51.0 + (double)tileLocation.Y * 77.0) % 3 * 16, 128 + this.whichForageCrop * 16, 16, 16)), Color.White, 0.0f, new Vector2(8f, 8f), (float)Game1.pixelZoom, SpriteEffects.None, (float)(((double)tileLocation.Y * (double)Game1.tileSize + (double)(Game1.tileSize / 2) + (((double)tileLocation.Y * 11.0 + (double)tileLocation.X * 7.0) % 10.0 - 5.0)) / 10000.0)); + + + + } + } + + + + + } +} diff --git a/GeneralMods/StardustCore/Objects/MultiTileObject.cs b/GeneralMods/StardustCore/Objects/MultiTileObject.cs new file mode 100644 index 00000000..00efae1f --- /dev/null +++ b/GeneralMods/StardustCore/Objects/MultiTileObject.cs @@ -0,0 +1,185 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using StardewValley; +using StardustCore.UIUtilities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StardustCore.Objects +{ + public class MultiTileObject : CoreObject + { + public List> objects; + public Color categoryColor; + public String categoryName; + + public MultiTileObject(String Name, String Description,Vector2 tile, Texture2DExtended texture, List> Objects, Color CategoryColor, String CategoryName) :base(texture,0,tile,0) + { + this.objects = Objects; + this.TextureSheet = texture; + this.texturePath = texture.path; + this.categoryColor = CategoryColor; + this.categoryName = CategoryName; + this.name = Name; + this.displayName = Name; + this.description = Description; + + foreach(var v in this.objects) + { + v.Value.containerObject = this; + } + + InitializeBasics(0, tile); + } + + public MultiTileObject(String Name, String Description, Vector2 tile, Animations.AnimationManager animationManager, List> Objects, Color CategoryColor, String CategoryName) + { + this.animationManager = animationManager; + this.objects = Objects; + this.TextureSheet =animationManager.objectTexture; + this.texturePath = animationManager.objectTexture.path; + this.name = Name; + this.displayName = Name; + this.description = Description; + InitializeBasics(0, tile); + } + + public void RemoveAllObjects() + { + if (Game1.player.isInventoryFull() == false){ + foreach (var v in this.objects) + { + v.Value.performRemoveAction(v.Value.TileLocation, v.Value.objectPart.thisLocation); + } + Game1.player.addItemToInventory(this); + } + return; + } + + public override Type getCustomType() + { + return this.GetType(); + } + + public override string GetSerializationName() + { + return typeof(MultiTileObject).ToString(); + } + + public override void InitializeBasics(int InvMaxSize, Vector2 tile) + { + base.InitializeBasics(InvMaxSize, tile); + } + public override bool placementAction(GameLocation location, int x, int y, Farmer who = null) + { + foreach(var pair in this.objects) + { + pair.Value.placementAction(location, x+(int)(pair.Key.X*Game1.tileSize), y+ (int)(pair.Key.Y * Game1.tileSize), who); + } + return true; + } + + public override bool clicked(Farmer who) + { + foreach (var pair in this.objects) + { + pair.Value.clicked(who); + } + return true; + } + + public override bool RightClicked(Farmer who) + { + foreach (var pair in this.objects) + { + pair.Value.RightClicked(who); + } + return true; + } + + /// + /// Need to fix this for sure!!! + /// + /// + public override Item getOne() + { + List> items = new List>(); + foreach (var pair in this.objects) + { + items.Add(new KeyValuePair(pair.Key, (pair.Value.getOne()) as MultiTileComponent)); + } + if (this.animationManager != null) + { + return new MultiTileObject(this.name, this.description, this.TileLocation, this.animationManager, items, this.categoryColor, this.categoryName); + //throw new NotImplementedException(); + } + else + { + return new MultiTileObject(this.name, this.description, this.TileLocation, this.TextureSheet, items, this.categoryColor, this.categoryName); + } + return null; + } + + public override void draw(SpriteBatch spriteBatch, int x, int y, float alpha = 1) + { + + foreach(var v in this.objects) + { + if (v.Value.objectPart.thisLocation != null) + { + v.Value.draw(spriteBatch, (int)v.Value.position.X, (int)v.Value.position.Y, alpha); + } + } + + //base.draw(spriteBatch, x, y, alpha); + } + + public override void draw(SpriteBatch spriteBatch, int xNonTile, int yNonTile, float layerDepth, float alpha = 1) + { + foreach (var v in this.objects) + { + //v.Value.draw(spriteBatch, (int)v.Value.position.X, (int)v.Value.position.Y, layerDepth, alpha); + } + } + + public override void drawWhenHeld(SpriteBatch spriteBatch, Vector2 objectPosition, StardewValley.Farmer f) + { + if (animationManager == null) + { + spriteBatch.Draw(this.TextureSheet.getTexture(), objectPosition, new Microsoft.Xna.Framework.Rectangle?(GameLocation.getSourceRectForObject(f.ActiveObject.ParentSheetIndex)), Color.White, 0f, Vector2.Zero, (float)Game1.pixelZoom, SpriteEffects.None, Math.Max(0f, (float)(f.getStandingY() + 2) / 10000f)); + } + else + { + spriteBatch.Draw(animationManager.objectTexture.getTexture(), objectPosition, this.animationManager.currentAnimation.sourceRectangle, Color.White, 0f, Vector2.Zero, (float)Game1.pixelZoom, SpriteEffects.None, Math.Max(0f, (float)(f.getStandingY() + 2) / 10000f)); + } + + //base.drawWhenHeld(spriteBatch, objectPosition, f); + } + + public override void drawInMenu(SpriteBatch spriteBatch, Vector2 location, float scaleSize, float transparency, float layerDepth, bool drawStackNumber, Color c, bool drawShadows) + { + if (animationManager == null) spriteBatch.Draw(this.TextureSheet.getTexture(), location,this.defaultSourceRect, Color.White * transparency, 0f, new Vector2(0,0), scaleSize, SpriteEffects.None, layerDepth); + else + { + spriteBatch.Draw(animationManager.objectTexture.getTexture(), location, animationManager.currentAnimation.sourceRectangle, Color.White * transparency, 0f, new Vector2(0,0), scaleSize, SpriteEffects.None, layerDepth); + //this.modularCrop.drawInMenu(spriteBatch, location + new Vector2((float)(Game1.tileSize / 2), (float)(Game1.tileSize / 2)), Color.White, 0f,true); + if (Game1.player.CurrentItem != this) animationManager.tickAnimation(); + } + } + + public override Color getCategoryColor() + { + return this.categoryColor; + } + + public override string getCategoryName() + { + return this.name; + } + + + } +} diff --git a/GeneralMods/StardustCore/Objects/Tools/ExtendedAxe.cs b/GeneralMods/StardustCore/Objects/Tools/ExtendedAxe.cs index a271dfa6..43fec26c 100644 --- a/GeneralMods/StardustCore/Objects/Tools/ExtendedAxe.cs +++ b/GeneralMods/StardustCore/Objects/Tools/ExtendedAxe.cs @@ -43,7 +43,7 @@ namespace StardustCore.Objects.Tools StardustCore.ModCore.ModMonitor.Log((dataBase as Serialization_ExtendedAxe).Name); this.displayName = "Hello"; this.description = (dataBase as Serialization_ExtendedAxe).Description; - this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png")); + this.texture = StardustCore.ModCore.TextureManager.getTexture((dataBase as Serialization_ExtendedAxe).TextureInformation.Name); //new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png")); this.UpgradeLevel = (dataBase as Serialization_ExtendedAxe).UpgradeLevel; } diff --git a/GeneralMods/StardustCore/Objects/Tools/ExtendedHoe.cs b/GeneralMods/StardustCore/Objects/Tools/ExtendedHoe.cs index ebbcc04a..393f3daf 100644 --- a/GeneralMods/StardustCore/Objects/Tools/ExtendedHoe.cs +++ b/GeneralMods/StardustCore/Objects/Tools/ExtendedHoe.cs @@ -43,7 +43,7 @@ namespace StardustCore.Objects.Tools StardustCore.ModCore.ModMonitor.Log((dataBase as Serialization_ExtendedHoe).Name); this.displayName = "Hello"; this.description = (dataBase as Serialization_ExtendedHoe).Description; - this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png")); + this.texture = StardustCore.ModCore.TextureManager.getTexture((dataBase as Serialization_ExtendedHoe).TextureInformation.Name); this.UpgradeLevel = (dataBase as Serialization_ExtendedHoe).UpgradeLevel; } diff --git a/GeneralMods/StardustCore/Objects/Tools/ExtendedPickaxe.cs b/GeneralMods/StardustCore/Objects/Tools/ExtendedPickaxe.cs index 74bc63a6..0f67e793 100644 --- a/GeneralMods/StardustCore/Objects/Tools/ExtendedPickaxe.cs +++ b/GeneralMods/StardustCore/Objects/Tools/ExtendedPickaxe.cs @@ -43,7 +43,7 @@ namespace StardustCore.Objects.Tools StardustCore.ModCore.ModMonitor.Log((dataBase as Serialization_ExtendedPickaxe).Name); this.displayName = "Hello"; this.description = (dataBase as Serialization_ExtendedPickaxe).Description; - this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png")); + this.texture = this.texture = StardustCore.ModCore.TextureManager.getTexture((dataBase as Serialization_ExtendedPickaxe).TextureInformation.Name); this.UpgradeLevel = (dataBase as Serialization_ExtendedPickaxe).UpgradeLevel; } diff --git a/GeneralMods/StardustCore/Objects/Tools/ExtendedWateringCan.cs b/GeneralMods/StardustCore/Objects/Tools/ExtendedWateringCan.cs index 345ec345..84fbd868 100644 --- a/GeneralMods/StardustCore/Objects/Tools/ExtendedWateringCan.cs +++ b/GeneralMods/StardustCore/Objects/Tools/ExtendedWateringCan.cs @@ -46,7 +46,7 @@ namespace StardustCore.Objects.Tools StardustCore.ModCore.ModMonitor.Log((dataBase as Serialization_ExtendedWateringCan).Name); this.displayName = "Hello"; this.description = (dataBase as Serialization_ExtendedWateringCan).Description; - this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png")); + this.texture = StardustCore.ModCore.TextureManager.getTexture((dataBase as Serialization_ExtendedWateringCan).TextureInformation.Name); this.UpgradeLevel = (dataBase as Serialization_ExtendedWateringCan).UpgradeLevel; this.waterCanMax= (dataBase as Serialization_ExtendedWateringCan).MaxCapacity; this.WaterLeft= (dataBase as Serialization_ExtendedWateringCan).WaterLeft; diff --git a/GeneralMods/StardustCore/StardustCore.csproj b/GeneralMods/StardustCore/StardustCore.csproj index eddcade2..7e5f69b9 100644 --- a/GeneralMods/StardustCore/StardustCore.csproj +++ b/GeneralMods/StardustCore/StardustCore.csproj @@ -89,6 +89,8 @@ + + @@ -422,6 +424,15 @@ + + Always + + + Always + + + Always + PreserveNewest diff --git a/GeneralMods/StardustCore/Utilities.cs b/GeneralMods/StardustCore/Utilities.cs index 7d7ae9bb..21b389d0 100644 --- a/GeneralMods/StardustCore/Utilities.cs +++ b/GeneralMods/StardustCore/Utilities.cs @@ -116,6 +116,10 @@ namespace StardustCore // cObj.health = 10; if (who != null) { + if (cObj == null) + { + StardustCore.ModCore.ModMonitor.Log("WHY IS MY COMPONENT NULL???"); + } cObj.owner.Value = who.UniqueMultiplayerID; } else @@ -267,7 +271,7 @@ namespace StardustCore } if (!cObj.performDropDownAction(who)) { - CoreObject @object = (CoreObject)cObj.getOne(); + CoreObject @object = cObj; @object.shakeTimer = 50; @object.TileLocation = vector; @object.performDropDownAction(who); @@ -303,9 +307,8 @@ namespace StardustCore } } - - + public static bool addItemToInventoryAndCleanTrackedList(CoreObject I,Serialization.SerializationManager s) { if (Game1.player.isInventoryFull() == false) @@ -463,6 +466,8 @@ namespace StardustCore } + + /// /// Checks whether or not the net inventory list is full of items. /// From bcf76f9163daed6c475c5a97691087a4c83106cd Mon Sep 17 00:00:00 2001 From: Date: Wed, 13 Jun 2018 11:11:56 -0700 Subject: [PATCH 007/110] Fixed draw issues with multi tile obects. Next up menu drawing and functionality. --- .../Animations/AnimationManager.cs | 12 ++- GeneralMods/StardustCore/ModCore.cs | 7 +- .../StardustCore/Objects/CoreObject.cs | 60 +++--------- .../Objects/MultiTileComponent.cs | 96 ++++++++++++++++--- .../StardustCore/Objects/MultiTileObject.cs | 57 ++++++++--- .../UIUtilities/MenuComponents/Button.cs | 4 +- 6 files changed, 157 insertions(+), 79 deletions(-) diff --git a/GeneralMods/StardustCore/Animations/AnimationManager.cs b/GeneralMods/StardustCore/Animations/AnimationManager.cs index 077854b1..dfcb03b2 100644 --- a/GeneralMods/StardustCore/Animations/AnimationManager.cs +++ b/GeneralMods/StardustCore/Animations/AnimationManager.cs @@ -20,7 +20,7 @@ namespace StardustCore.Animations public string currentAnimationName; public int currentAnimationListIndex; public List currentAnimationList = new List(); - public Texture2DExtended objectTexture; ///Might not be necessary if I use the CoreObject texture sheet. + private Texture2DExtended objectTexture; ///Might not be necessary if I use the CoreObject texture sheet. public Animation defaultDrawFrame; public Animation currentAnimation; bool enabled; @@ -218,5 +218,15 @@ namespace StardustCore.Animations } } + public Texture2DExtended getExtendedTexture() + { + return this.objectTexture; + } + + public Texture2D getTexture() + { + return this.objectTexture.getTexture(); + } + } } diff --git a/GeneralMods/StardustCore/ModCore.cs b/GeneralMods/StardustCore/ModCore.cs index 39c49bab..fe44a221 100644 --- a/GeneralMods/StardustCore/ModCore.cs +++ b/GeneralMods/StardustCore/ModCore.cs @@ -61,10 +61,9 @@ namespace StardustCore { SerializationManager.restoreAllModObjects(SerializationManager.trackedObjectList); List> objs = new List>(); - MultiTileComponent tile1 = new MultiTileComponent(new CoreObject(new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png")), 0, Vector2.Zero, 0)); - MultiTileComponent tile2 = new MultiTileComponent(new CoreObject(new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test2.png")), 0, Vector2.Zero, 0)); - MultiTileComponent tile3 = new MultiTileComponent(new CoreObject(new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test3.png")), 0, Vector2.Zero, 0)); - + MultiTileComponent tile1 = new MultiTileComponent(0,"Tileobj1","A basic tile obj",new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png"))); + MultiTileComponent tile2 = new MultiTileComponent(0,"Tileobj2", "A basic tile obj", new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test2.png"))); + MultiTileComponent tile3 = new MultiTileComponent(0,"Tileobj3", "A basic tile obj", new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test3.png"))); objs.Add(new KeyValuePair(new Vector2(0, 0), tile1)); objs.Add(new KeyValuePair(new Vector2(1, 0), tile2)); objs.Add(new KeyValuePair(new Vector2(2, 0), tile3)); diff --git a/GeneralMods/StardustCore/Objects/CoreObject.cs b/GeneralMods/StardustCore/Objects/CoreObject.cs index 1c407066..c6ed6a00 100644 --- a/GeneralMods/StardustCore/Objects/CoreObject.cs +++ b/GeneralMods/StardustCore/Objects/CoreObject.cs @@ -42,7 +42,7 @@ namespace StardustCore public string description; [XmlIgnore] - public Texture2DExtended TextureSheet; + protected Texture2DExtended TextureSheet; public new bool flipped; @@ -143,7 +143,7 @@ namespace StardustCore { this.defaultSourceRect.Width = 16; this.defaultSourceRect.Height = 16; - this.sourceRect = new Rectangle(which * 16 % TextureSheet.getTexture().Width, which * 16 / TextureSheet.getTexture().Width * 16, this.defaultSourceRect.Width * 16, this.defaultSourceRect.Height * 16); + this.sourceRect = new Rectangle((which * 16) % TextureSheet.getTexture().Width, (which * 16) / TextureSheet.getTexture().Width * 16, this.defaultSourceRect.Width, this.defaultSourceRect.Height); this.defaultSourceRect = this.sourceRect; } this.defaultBoundingBox = new Rectangle((int)this.TileLocation.X, (int)this.TileLocation.Y, 1, 1); @@ -1370,27 +1370,27 @@ namespace StardustCore else return false; } - public virtual void spillInventoryEverywhere() + public virtual void getInventoryMenu() { Game1.activeClickableMenu = new StorageContainer(this.inventory, 3, 3); this.itemReadyForHarvest = false; /* - Log.AsyncC("DROPPING INVENTORY!"); + + */ + } + + public virtual void spillInventoryEverywhere() + { Random random = new Random(inventory.Count); int i = random.Next(); i = i % 4; - Vector2 v2 = new Vector2(this.tileLocation.X * Game1.tileSize, this.tileLocation.Y * Game1.tileSize); + Vector2 v2 = new Vector2(this.TileLocation.X * Game1.tileSize, this.TileLocation.Y * Game1.tileSize); foreach (var I in inventory) { - Log.AsyncY(I.Name); - Log.AsyncO(I.getStack()); - Log.AsyncM(I.Stack); - Log.AsyncC("Dropping an item!"); Game1.createItemDebris(I, v2, i); } inventory.Clear(); - */ } /// @@ -1487,45 +1487,11 @@ namespace StardustCore return this.GetType().ToString(); } - /* - public static void Serialize(Item I) + + public virtual Texture2DExtended getExtendedTexture() { - + return this.TextureSheet; } - - public static Item ParseIntoInventory() - { - Texture2DExtended texture = new Texture2DExtended(); - Item I = new CoreObject(texture,0, Vector2.Zero, 0); - return I; - } - - public static void ParseIntoWorld() - { - //Item I = new CoreObject(0, Vector2.Zero, 0); - //return I; - } - - public void Serialize(Item I) - { - throw new NotImplementedException(); - } - - public void deserialize() - { - throw new NotImplementedException(); - } - - public void ParseIntoWorld() - { - throw new NotImplementedException(); - } - - void ISerializeable.ParseIntoInventory() - { - throw new NotImplementedException(); - } - */ } } diff --git a/GeneralMods/StardustCore/Objects/MultiTileComponent.cs b/GeneralMods/StardustCore/Objects/MultiTileComponent.cs index 420a0a32..27a74cef 100644 --- a/GeneralMods/StardustCore/Objects/MultiTileComponent.cs +++ b/GeneralMods/StardustCore/Objects/MultiTileComponent.cs @@ -6,44 +6,95 @@ using System.Threading.Tasks; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using StardewValley; +using StardustCore.UIUtilities; namespace StardustCore.Objects { public class MultiTileComponent : CoreObject { + //Pass in different function pointers that return bool to check if this default code will run. If not public MultiTileObject containerObject; - public CoreObject objectPart; + public MultiTileComponent(CoreObject part) { - this.objectPart = part; - this.name = this.objectPart.name; + this.name = part.name; + this.description = part.description; + this.TextureSheet = part.getExtendedTexture(); + this.texturePath = this.TextureSheet.path; + if (part.animationManager != null) + { + this.animationManager = part.animationManager; + } this.defaultBoundingBox = new Rectangle(0, 0, 16, 16); this.boundingBox.Value = new Rectangle((int)0 * Game1.tileSize, (int)0* Game1.tileSize, 1 * Game1.tileSize, 1 * Game1.tileSize); } + public MultiTileComponent(int which,String name, String description, Texture2DExtended texture) + { + this.name = name; + this.displayName = name; + this.description = description; + this.TextureSheet = texture; + this.defaultBoundingBox = new Rectangle(0, 0, 16, 16); + this.boundingBox.Value = new Rectangle((int)0 * Game1.tileSize, (int)0 * Game1.tileSize, 1 * Game1.tileSize, 1 * Game1.tileSize); + this.defaultSourceRect.Width = 16; + this.defaultSourceRect.Height = 16; + this.sourceRect = new Rectangle((which * 16) % TextureSheet.getTexture().Width, (which * 16) / TextureSheet.getTexture().Width * 16, this.defaultSourceRect.Width * 1, this.defaultSourceRect.Height * 1); + this.defaultSourceRect = this.sourceRect; + this.serializationName = this.GetType().ToString(); + this.ParentSheetIndex = which; + } + + public MultiTileComponent(int which,String name, String description, Animations.AnimationManager animationManager) + { + this.name = name; + this.displayName = name; + this.description = description; + this.animationManager = animationManager; + this.TextureSheet = animationManager.getExtendedTexture(); + this.defaultBoundingBox = new Rectangle(0, 0, 16, 16); + this.boundingBox.Value = new Rectangle((int)0 * Game1.tileSize, (int)0 * Game1.tileSize, 1 * Game1.tileSize, 1 * Game1.tileSize); + this.defaultSourceRect.Width = 16; + this.defaultSourceRect.Height = 16; + this.sourceRect = new Rectangle(which * 16 % TextureSheet.getTexture().Width, which * 16 / TextureSheet.getTexture().Width * 16, this.defaultSourceRect.Width * 16, this.defaultSourceRect.Height * 16); + this.defaultSourceRect = this.sourceRect; + this.serializationName = this.GetType().ToString(); + this.ParentSheetIndex = which; + } + public override bool clicked(Farmer who) { - containerObject.RemoveAllObjects(); + //Check if shift click to interact with object. + containerObject.RemoveAllObjects(); return true; } public override Item getOne() { - var obj= new MultiTileComponent((CoreObject)objectPart.getOne()); - obj.containerObject = this.containerObject; - return obj; + if (this.animationManager != null) + { + var obj = new MultiTileComponent(this.ParentSheetIndex,this.name, this.description, this.animationManager); + obj.containerObject = this.containerObject; + return obj; + } + else + { + var obj = new MultiTileComponent(this.ParentSheetIndex,this.name, this.description, this.TextureSheet); + obj.containerObject = this.containerObject; + return obj; + } } public override bool RightClicked(Farmer who) { - return this.objectPart.RightClicked(who); + return true; } public override bool placementAction(GameLocation location, int x, int y, Farmer who = null) { Point point = new Point(x / Game1.tileSize, y / Game1.tileSize); - + this.position = new Vector2(point.X, point.Y); this.TileLocation = new Vector2((float)point.X, (float)point.Y); this.boundingBox.Value = new Rectangle((int)TileLocation.X * Game1.tileSize, (int)TileLocation.Y * Game1.tileSize, 1 * Game1.tileSize, 1 * Game1.tileSize); using (List.Enumerator enumerator3 = location.getFarmers().GetEnumerator()) @@ -90,21 +141,21 @@ namespace StardustCore.Objects { if (x == -1) { - spriteBatch.Draw(this.objectPart.TextureSheet.getTexture(), Game1.GlobalToLocal(Game1.viewport, this.objectPart.drawPosition), new Rectangle?(this.objectPart.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.objectPart.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, (this.objectPart.Decoration_type == 12) ? 0f : ((float)(this.objectPart.boundingBox.Bottom - 8) / 10000f)); + spriteBatch.Draw(this.TextureSheet.getTexture(), Game1.GlobalToLocal(Game1.viewport, this.drawPosition), new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, (this.Decoration_type == 12) ? 0f : ((float)(this.boundingBox.Bottom - 8) / 10000f)); } else { //The actual planter box being drawn. if (animationManager == null) { - spriteBatch.Draw(this.objectPart.TextureSheet.getTexture(), Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(x * Game1.tileSize), y * Game1.tileSize)), new Rectangle?(this.objectPart.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.objectPart.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, 0); + spriteBatch.Draw(this.TextureSheet.getTexture(), Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(x * Game1.tileSize), y * Game1.tileSize)), new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, 0); // Log.AsyncG("ANIMATION IS NULL?!?!?!?!"); } else { //Log.AsyncC("Animation Manager is working!"); - this.animationManager.draw(spriteBatch, this.objectPart.animationManager.objectTexture.getTexture(), Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(x * Game1.tileSize), y * Game1.tileSize)), new Rectangle?(this.objectPart.animationManager.currentAnimation.sourceRectangle), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.objectPart.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, 0); + this.animationManager.draw(spriteBatch, this.animationManager.getTexture(), Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(x * Game1.tileSize), y * Game1.tileSize)), new Rectangle?(this.animationManager.currentAnimation.sourceRectangle), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, 0); try { this.animationManager.tickAnimation(); @@ -123,6 +174,27 @@ namespace StardustCore.Objects } } + public override void draw(SpriteBatch spriteBatch, int xNonTile, int yNonTile, float layerDepth, float alpha = 1f) + { + + if (Game1.eventUp && Game1.CurrentEvent.isTileWalkedOn(xNonTile / 64, yNonTile / 64)) + return; + if ((int)(this.ParentSheetIndex) != 590 && (int)(this.Fragility) != 2) + spriteBatch.Draw(Game1.shadowTexture, Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(xNonTile + 32), (float)(yNonTile + 51 + 4))), new Microsoft.Xna.Framework.Rectangle?(Game1.shadowTexture.Bounds), Color.White * alpha, 0.0f, new Vector2((float)Game1.shadowTexture.Bounds.Center.X, (float)Game1.shadowTexture.Bounds.Center.Y), 4f, SpriteEffects.None, layerDepth - 1E-06f); + SpriteBatch spriteBatch1 = spriteBatch; + Texture2D objectSpriteSheet = Game1.objectSpriteSheet; + Vector2 local = Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(xNonTile + 32 + (this.shakeTimer > 0 ? Game1.random.Next(-1, 2) : 0)), (float)(yNonTile + 32 + (this.shakeTimer > 0 ? Game1.random.Next(-1, 2) : 0)))); + Microsoft.Xna.Framework.Rectangle? sourceRectangle = new Microsoft.Xna.Framework.Rectangle?(GameLocation.getSourceRectForObject(this.ParentSheetIndex)); + Color color = Color.White * alpha; + double num1 = 0.0; + Vector2 origin = new Vector2(8f, 8f); + Vector2 scale = this.scale; + double num2 = (double)this.scale.Y > 1.0 ? (double)this.getScale().Y : 4.0; + int num3 = (bool)(this.flipped) ? 1 : 0; + double num4 = (double)layerDepth; + spriteBatch1.Draw(TextureSheet.getTexture(), local, sourceRectangle, color, (float)num1, origin, (float)num2, (SpriteEffects)num3, (float)num4); + + } diff --git a/GeneralMods/StardustCore/Objects/MultiTileObject.cs b/GeneralMods/StardustCore/Objects/MultiTileObject.cs index 00efae1f..7a449017 100644 --- a/GeneralMods/StardustCore/Objects/MultiTileObject.cs +++ b/GeneralMods/StardustCore/Objects/MultiTileObject.cs @@ -33,18 +33,23 @@ namespace StardustCore.Objects } InitializeBasics(0, tile); + this.serializationName = this.GetType().ToString(); + + this.defaultSourceRect = new Rectangle(0, 0, 16, 16); + this.sourceRect = defaultSourceRect; } public MultiTileObject(String Name, String Description, Vector2 tile, Animations.AnimationManager animationManager, List> Objects, Color CategoryColor, String CategoryName) { this.animationManager = animationManager; this.objects = Objects; - this.TextureSheet =animationManager.objectTexture; - this.texturePath = animationManager.objectTexture.path; + this.TextureSheet =animationManager.getExtendedTexture(); + this.texturePath = animationManager.getExtendedTexture().path; this.name = Name; this.displayName = Name; this.description = Description; InitializeBasics(0, tile); + this.serializationName = this.GetType().ToString(); } public void RemoveAllObjects() @@ -52,7 +57,7 @@ namespace StardustCore.Objects if (Game1.player.isInventoryFull() == false){ foreach (var v in this.objects) { - v.Value.performRemoveAction(v.Value.TileLocation, v.Value.objectPart.thisLocation); + v.Value.performRemoveAction(v.Value.TileLocation, v.Value.thisLocation); } Game1.player.addItemToInventory(this); } @@ -75,9 +80,24 @@ namespace StardustCore.Objects } public override bool placementAction(GameLocation location, int x, int y, Farmer who = null) { - foreach(var pair in this.objects) + if (canBePlacedHere(location,new Vector2(x/Game1.tileSize,y/Game1.tileSize))) { - pair.Value.placementAction(location, x+(int)(pair.Key.X*Game1.tileSize), y+ (int)(pair.Key.Y * Game1.tileSize), who); + foreach (var pair in this.objects) + { + pair.Value.placementAction(location, x + (int)(pair.Key.X * Game1.tileSize), y + (int)(pair.Key.Y * Game1.tileSize), who); + } + return true; + } + return false; + } + + public override bool canBePlacedHere(GameLocation l, Vector2 tile) + { + bool canBePlaced = true; + foreach (var v in this.objects) + { + canBePlaced=v.Value.canBePlacedHere(l, tile+v.Key); + if (canBePlaced == false) return false; } return true; } @@ -128,10 +148,7 @@ namespace StardustCore.Objects foreach(var v in this.objects) { - if (v.Value.objectPart.thisLocation != null) - { - v.Value.draw(spriteBatch, (int)v.Value.position.X, (int)v.Value.position.Y, alpha); - } + v.Value.draw(spriteBatch, (int)x+(int)(v.Key.X), (int)y+(int)(v.Key.Y), alpha); } //base.draw(spriteBatch, x, y, alpha); @@ -141,7 +158,7 @@ namespace StardustCore.Objects { foreach (var v in this.objects) { - //v.Value.draw(spriteBatch, (int)v.Value.position.X, (int)v.Value.position.Y, layerDepth, alpha); + v.Value.draw(spriteBatch, (int)xNonTile+(int)(v.Key.X*Game1.tileSize), (int)yNonTile+ (int)(v.Key.Y * Game1.tileSize), layerDepth, alpha); } } @@ -149,22 +166,36 @@ namespace StardustCore.Objects { if (animationManager == null) { - spriteBatch.Draw(this.TextureSheet.getTexture(), objectPosition, new Microsoft.Xna.Framework.Rectangle?(GameLocation.getSourceRectForObject(f.ActiveObject.ParentSheetIndex)), Color.White, 0f, Vector2.Zero, (float)Game1.pixelZoom, SpriteEffects.None, Math.Max(0f, (float)(f.getStandingY() + 2) / 10000f)); + foreach (var v in this.objects) + { + spriteBatch.Draw(v.Value.getExtendedTexture().getTexture(), objectPosition + new Vector2(v.Key.X * Game1.tileSize, v.Key.Y * Game1.tileSize), this.sourceRect, Color.White, 0f, Vector2.Zero, (float)Game1.pixelZoom, SpriteEffects.None, Math.Max(0f, (float)(f.getStandingY() + 2) / 10000f)); + } } else { - spriteBatch.Draw(animationManager.objectTexture.getTexture(), objectPosition, this.animationManager.currentAnimation.sourceRectangle, Color.White, 0f, Vector2.Zero, (float)Game1.pixelZoom, SpriteEffects.None, Math.Max(0f, (float)(f.getStandingY() + 2) / 10000f)); + foreach (var v in this.objects) + { + spriteBatch.Draw(v.Value.animationManager.getTexture(), objectPosition + new Vector2(v.Key.X * Game1.tileSize, v.Key.Y * Game1.tileSize), this.sourceRect, Color.White, 0f, Vector2.Zero, (float)Game1.pixelZoom, SpriteEffects.None, Math.Max(0f, (float)(f.getStandingY() + 2) / 10000f)); + } } //base.drawWhenHeld(spriteBatch, objectPosition, f); } + public override void drawAtNonTileSpot(SpriteBatch spriteBatch, Vector2 location, float layerDepth, float alpha = 1) + { + foreach (var v in this.objects) + { + v.Value.drawAtNonTileSpot(spriteBatch, location+new Vector2(v.Key.X * Game1.tileSize, v.Key.Y * Game1.tileSize), layerDepth, alpha); + } + } + public override void drawInMenu(SpriteBatch spriteBatch, Vector2 location, float scaleSize, float transparency, float layerDepth, bool drawStackNumber, Color c, bool drawShadows) { if (animationManager == null) spriteBatch.Draw(this.TextureSheet.getTexture(), location,this.defaultSourceRect, Color.White * transparency, 0f, new Vector2(0,0), scaleSize, SpriteEffects.None, layerDepth); else { - spriteBatch.Draw(animationManager.objectTexture.getTexture(), location, animationManager.currentAnimation.sourceRectangle, Color.White * transparency, 0f, new Vector2(0,0), scaleSize, SpriteEffects.None, layerDepth); + spriteBatch.Draw(animationManager.getTexture(), location, animationManager.currentAnimation.sourceRectangle, Color.White * transparency, 0f, new Vector2(0,0), scaleSize, SpriteEffects.None, layerDepth); //this.modularCrop.drawInMenu(spriteBatch, location + new Vector2((float)(Game1.tileSize / 2), (float)(Game1.tileSize / 2)), Color.White, 0f,true); if (Game1.player.CurrentItem != this) animationManager.tickAnimation(); } diff --git a/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs b/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs index bca9c3ee..79771249 100644 --- a/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs +++ b/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs @@ -204,7 +204,7 @@ namespace StardustCore.UIUtilities.MenuComponents /// A Button object that is identical to the one passed in. public Button clone() { - var b= new Button(this.name, this.bounds, this.animationManager.objectTexture, this.label, this.sourceRect, this.scale, this.animationManager.defaultDrawFrame, this.textureColor, this.textColor, this.buttonFunctionality, true); + var b= new Button(this.name, this.bounds, this.animationManager.getExtendedTexture(), this.label, this.sourceRect, this.scale, this.animationManager.defaultDrawFrame, this.textureColor, this.textColor, this.buttonFunctionality, true); if (b.buttonFunctionality.hover == null) { StardustCore.ModCore.ModMonitor.Log("I'm null!"); @@ -219,7 +219,7 @@ namespace StardustCore.UIUtilities.MenuComponents /// public Button clone(Vector2 newPosition) { - var b = new Button(this.name, new Rectangle((int)newPosition.X,(int)newPosition.Y,this.bounds.Width,this.bounds.Height), this.animationManager.objectTexture, this.label, this.sourceRect, this.scale, this.animationManager.defaultDrawFrame, this.textureColor, this.textColor, this.buttonFunctionality, true); + var b = new Button(this.name, new Rectangle((int)newPosition.X,(int)newPosition.Y,this.bounds.Width,this.bounds.Height), this.animationManager.getExtendedTexture(), this.label, this.sourceRect, this.scale, this.animationManager.defaultDrawFrame, this.textureColor, this.textColor, this.buttonFunctionality, true); if (b.buttonFunctionality.hover == null) { //StardustCore.ModCore.ModMonitor.Log("I'm null!"); From 701823925f3413c2204a4dd4efcec223f03e9ff7 Mon Sep 17 00:00:00 2001 From: Date: Wed, 13 Jun 2018 12:08:14 -0700 Subject: [PATCH 008/110] Updated menu drawing. Now to fix the scale size of the object --- .../StardustCore/Objects/MultiTileObject.cs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/GeneralMods/StardustCore/Objects/MultiTileObject.cs b/GeneralMods/StardustCore/Objects/MultiTileObject.cs index 7a449017..13ec1c0a 100644 --- a/GeneralMods/StardustCore/Objects/MultiTileObject.cs +++ b/GeneralMods/StardustCore/Objects/MultiTileObject.cs @@ -192,12 +192,18 @@ namespace StardustCore.Objects public override void drawInMenu(SpriteBatch spriteBatch, Vector2 location, float scaleSize, float transparency, float layerDepth, bool drawStackNumber, Color c, bool drawShadows) { - if (animationManager == null) spriteBatch.Draw(this.TextureSheet.getTexture(), location,this.defaultSourceRect, Color.White * transparency, 0f, new Vector2(0,0), scaleSize, SpriteEffects.None, layerDepth); - else + foreach (var v in this.objects) { - spriteBatch.Draw(animationManager.getTexture(), location, animationManager.currentAnimation.sourceRectangle, Color.White * transparency, 0f, new Vector2(0,0), scaleSize, SpriteEffects.None, layerDepth); - //this.modularCrop.drawInMenu(spriteBatch, location + new Vector2((float)(Game1.tileSize / 2), (float)(Game1.tileSize / 2)), Color.White, 0f,true); - if (Game1.player.CurrentItem != this) animationManager.tickAnimation(); + if (animationManager == null) + { + spriteBatch.Draw(v.Value.getExtendedTexture().getTexture(), location+new Vector2(v.Key.X*16,v.Key.Y*16), this.defaultSourceRect, Color.White * transparency, 0f, new Vector2(0, 0), 1, SpriteEffects.None, layerDepth); + } + else + { + spriteBatch.Draw(v.Value.animationManager.getTexture(), location + new Vector2(v.Key.X*8, v.Key.Y*8), v.Value.animationManager.currentAnimation.sourceRectangle, Color.White * transparency, 0f, new Vector2(0, 0), scaleSize, SpriteEffects.None, layerDepth); + //this.modularCrop.drawInMenu(spriteBatch, location + new Vector2((float)(Game1.tileSize / 2), (float)(Game1.tileSize / 2)), Color.White, 0f,true); + if (Game1.player.CurrentItem != this) animationManager.tickAnimation(); + } } } From b620e4eaf5fb147b67b5ce7e5103e519100b893b Mon Sep 17 00:00:00 2001 From: DefenTheNation Date: Sat, 23 Jun 2018 00:31:40 -0700 Subject: [PATCH 009/110] Add API for other mods to hook into Save Anywhere save events --- .../SaveAnywhere/API/ISaveAnywhereAPI.cs | 28 +++++++++++ .../SaveAnywhere/API/SaveAnywhereAPI.cs | 19 +++++++ .../Framework/Models/CharacterType.cs | 2 +- .../Framework/Models/PlayerData.cs | 2 +- .../Framework/Models/PositionData.cs | 2 +- .../{NewSaveMenu.cs => NewSaveGameMenu.cs} | 5 +- .../SaveAnywhere/Framework/NewShippingMenu.cs | 3 +- .../SaveAnywhere/Framework/SaveManager.cs | 49 +++++++++++++++++-- GeneralMods/SaveAnywhere/SaveAnywhere.cs | 15 +++++- GeneralMods/SaveAnywhere/SaveAnywhere.csproj | 4 +- 10 files changed, 117 insertions(+), 12 deletions(-) create mode 100644 GeneralMods/SaveAnywhere/API/ISaveAnywhereAPI.cs create mode 100644 GeneralMods/SaveAnywhere/API/SaveAnywhereAPI.cs rename GeneralMods/SaveAnywhere/Framework/{NewSaveMenu.cs => NewSaveGameMenu.cs} (98%) diff --git a/GeneralMods/SaveAnywhere/API/ISaveAnywhereAPI.cs b/GeneralMods/SaveAnywhere/API/ISaveAnywhereAPI.cs new file mode 100644 index 00000000..55033c0a --- /dev/null +++ b/GeneralMods/SaveAnywhere/API/ISaveAnywhereAPI.cs @@ -0,0 +1,28 @@ +using System; + +namespace Omegasis.SaveAnywhere.API +{ + /// + /// Interface for the Save Anywhere API + /// Other mods can use this interface to get the + /// API from the SMAPI helper + /// + public interface ISaveAnywhereAPI + { + /********* + ** Events + *********/ + /// + /// Event that fires before game save + /// + event EventHandler BeforeSave; + /// + /// Event that fires after game save + /// + event EventHandler AfterSave; + /// + /// Event that fires after game load + /// + event EventHandler AfterLoad; + } +} diff --git a/GeneralMods/SaveAnywhere/API/SaveAnywhereAPI.cs b/GeneralMods/SaveAnywhere/API/SaveAnywhereAPI.cs new file mode 100644 index 00000000..ec34bb97 --- /dev/null +++ b/GeneralMods/SaveAnywhere/API/SaveAnywhereAPI.cs @@ -0,0 +1,19 @@ +using System; +using Omegasis.SaveAnywhere.Framework; + +namespace Omegasis.SaveAnywhere.API +{ + public class SaveAnywhereAPI : ISaveAnywhereAPI + { + public event EventHandler BeforeSave; + public event EventHandler AfterSave; + public event EventHandler AfterLoad; + + public SaveAnywhereAPI(SaveManager manager) + { + manager.BeforeSave += (sender, e) => { BeforeSave.Invoke(sender, e); }; + manager.AfterSave += (sender, e) => { AfterSave.Invoke(sender, e); }; + manager.AfterLoad += (sender, e) => { AfterLoad.Invoke(sender, e); }; + } + } +} diff --git a/GeneralMods/SaveAnywhere/Framework/Models/CharacterType.cs b/GeneralMods/SaveAnywhere/Framework/Models/CharacterType.cs index ef94f702..da6e2530 100644 --- a/GeneralMods/SaveAnywhere/Framework/Models/CharacterType.cs +++ b/GeneralMods/SaveAnywhere/Framework/Models/CharacterType.cs @@ -1,7 +1,7 @@ namespace Omegasis.SaveAnywhere.Framework.Models { /// The character type for an NPC. - internal enum CharacterType + public enum CharacterType { /// The player. Player = 1, diff --git a/GeneralMods/SaveAnywhere/Framework/Models/PlayerData.cs b/GeneralMods/SaveAnywhere/Framework/Models/PlayerData.cs index 49fbdd87..2bb7287c 100644 --- a/GeneralMods/SaveAnywhere/Framework/Models/PlayerData.cs +++ b/GeneralMods/SaveAnywhere/Framework/Models/PlayerData.cs @@ -1,7 +1,7 @@ namespace Omegasis.SaveAnywhere.Framework.Models { /// The data for the current player. - internal class PlayerData + public class PlayerData { /// The current time. public int Time { get; set; } diff --git a/GeneralMods/SaveAnywhere/Framework/Models/PositionData.cs b/GeneralMods/SaveAnywhere/Framework/Models/PositionData.cs index 2f8ad8cc..5708b451 100644 --- a/GeneralMods/SaveAnywhere/Framework/Models/PositionData.cs +++ b/GeneralMods/SaveAnywhere/Framework/Models/PositionData.cs @@ -3,7 +3,7 @@ namespace Omegasis.SaveAnywhere.Framework.Models { /// Represents saved data for an NPC. - internal class CharacterData + public class CharacterData { /********* ** Accessors diff --git a/GeneralMods/SaveAnywhere/Framework/NewSaveMenu.cs b/GeneralMods/SaveAnywhere/Framework/NewSaveGameMenu.cs similarity index 98% rename from GeneralMods/SaveAnywhere/Framework/NewSaveMenu.cs rename to GeneralMods/SaveAnywhere/Framework/NewSaveGameMenu.cs index 10c00854..509529cd 100644 --- a/GeneralMods/SaveAnywhere/Framework/NewSaveMenu.cs +++ b/GeneralMods/SaveAnywhere/Framework/NewSaveGameMenu.cs @@ -5,7 +5,6 @@ using StardewValley.BellsAndWhistles; using StardewValley.Menus; using System; using System.Collections.Generic; -using System.Linq; using System.Text; namespace Omegasis.SaveAnywhere.Framework @@ -13,6 +12,8 @@ namespace Omegasis.SaveAnywhere.Framework /// A marker subclass to detect when a custom save is in progress. internal class NewSaveGameMenu : IClickableMenu { + public event EventHandler SaveComplete; + private int completePause = -1; private int margin = 500; private StringBuilder _stringBuilder = new StringBuilder(); @@ -38,6 +39,8 @@ namespace Omegasis.SaveAnywhere.Framework this.completePause = 1500; this.loader = (IEnumerator)null; Game1.game1.IsSaving = false; + + SaveComplete.Invoke(this, EventArgs.Empty); } public override void update(GameTime time) diff --git a/GeneralMods/SaveAnywhere/Framework/NewShippingMenu.cs b/GeneralMods/SaveAnywhere/Framework/NewShippingMenu.cs index b21fc994..87dd59e6 100644 --- a/GeneralMods/SaveAnywhere/Framework/NewShippingMenu.cs +++ b/GeneralMods/SaveAnywhere/Framework/NewShippingMenu.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework; using Netcode; using StardewModdingAPI; using StardewValley; diff --git a/GeneralMods/SaveAnywhere/Framework/SaveManager.cs b/GeneralMods/SaveAnywhere/Framework/SaveManager.cs index f6c10f89..fc1a1ef4 100644 --- a/GeneralMods/SaveAnywhere/Framework/SaveManager.cs +++ b/GeneralMods/SaveAnywhere/Framework/SaveManager.cs @@ -12,7 +12,7 @@ using StardewValley.Monsters; namespace Omegasis.SaveAnywhere.Framework { /// Provides methods for saving and loading game data. - internal class SaveManager + public class SaveManager { /********* ** Properties @@ -32,6 +32,24 @@ namespace Omegasis.SaveAnywhere.Framework /// Whether we should save at the next opportunity. private bool WaitingToSave; + /// Currently displayed save menu (null if no menu is displayed) + private NewSaveGameMenu currentSaveMenu; + + /********* + ** Events + *********/ + /// + /// Event that fires before game save + /// + public event EventHandler BeforeSave; + /// + /// Event that fires after game save + /// + public event EventHandler AfterSave; + /// + /// Event that fires after game load + /// + public event EventHandler AfterLoad; /********* ** Public methods @@ -53,11 +71,26 @@ namespace Omegasis.SaveAnywhere.Framework // perform passive save if (this.WaitingToSave && Game1.activeClickableMenu == null) { - Game1.activeClickableMenu = new NewSaveGameMenu(); + currentSaveMenu = new NewSaveGameMenu(); + currentSaveMenu.SaveComplete += CurrentSaveMenu_SaveComplete; + Game1.activeClickableMenu = currentSaveMenu; this.WaitingToSave = false; } } + /// + /// Event function for NewSaveGameMenu event SaveComplete + /// + /// + /// + private void CurrentSaveMenu_SaveComplete(object sender, EventArgs e) + { + currentSaveMenu.SaveComplete -= CurrentSaveMenu_SaveComplete; + currentSaveMenu = null; + + AfterSave.Invoke(this, EventArgs.Empty); + } + /// Clear saved data. public void ClearData() { @@ -68,6 +101,9 @@ namespace Omegasis.SaveAnywhere.Framework /// Initiate a game save. public void BeginSaveData() { + // Fire Event before saving data + BeforeSave.Invoke(this, EventArgs.Empty); + // save game data Farm farm = Game1.getFarm(); if (farm.shippingBin.Any()) @@ -79,7 +115,12 @@ namespace Omegasis.SaveAnywhere.Framework this.WaitingToSave = true; } else - Game1.activeClickableMenu = new NewSaveGameMenu(); + { + currentSaveMenu = new NewSaveGameMenu(); + currentSaveMenu.SaveComplete += CurrentSaveMenu_SaveComplete; + Game1.activeClickableMenu = currentSaveMenu; + } + // get data PlayerData data = new PlayerData @@ -112,6 +153,8 @@ namespace Omegasis.SaveAnywhere.Framework this.SetPositions(data.Characters); this.OnLoaded?.Invoke(); + // Notify other mods that load is complete + AfterLoad.Invoke(this, EventArgs.Empty); } /// diff --git a/GeneralMods/SaveAnywhere/SaveAnywhere.cs b/GeneralMods/SaveAnywhere/SaveAnywhere.cs index 99e32f40..3fbd84f0 100644 --- a/GeneralMods/SaveAnywhere/SaveAnywhere.cs +++ b/GeneralMods/SaveAnywhere/SaveAnywhere.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Omegasis.SaveAnywhere.API; using Omegasis.SaveAnywhere.Framework; using StardewModdingAPI; using StardewModdingAPI.Events; @@ -47,9 +48,10 @@ namespace Omegasis.SaveAnywhere /// Provides simplified APIs for writing mods. public override void Entry(IModHelper helper) { - this.Config = helper.ReadConfig(); + this.SaveManager = new SaveManager(this.Helper, this.Helper.Reflection, onLoaded: () => this.ShouldResetSchedules = true); + SaveEvents.AfterLoad += this.SaveEvents_AfterLoad; SaveEvents.AfterSave += this.SaveEvents_AfterSave; MenuEvents.MenuChanged += this.MenuEvents_MenuChanged; @@ -60,6 +62,16 @@ namespace Omegasis.SaveAnywhere ModMonitor = Monitor; } + /// + /// Exposes the SaveAnywhere API to other SMAPI mods + /// + /// + public override object GetApi() + { + SaveAnywhereAPI api = new SaveAnywhereAPI(SaveManager); + return api; + } + /********* ** Private methods @@ -74,7 +86,6 @@ namespace Omegasis.SaveAnywhere this.ShouldResetSchedules = false; // load positions - this.SaveManager = new SaveManager(this.Helper, this.Helper.Reflection, onLoaded: () => this.ShouldResetSchedules = true); this.SaveManager.LoadData(); } diff --git a/GeneralMods/SaveAnywhere/SaveAnywhere.csproj b/GeneralMods/SaveAnywhere/SaveAnywhere.csproj index 69f8c90d..2da3321b 100644 --- a/GeneralMods/SaveAnywhere/SaveAnywhere.csproj +++ b/GeneralMods/SaveAnywhere/SaveAnywhere.csproj @@ -75,10 +75,12 @@ Properties\GlobalAssemblyInfo.cs + + - + From 8f0f692a60d658aedc6f2b4a539d9d5b4d9a1620 Mon Sep 17 00:00:00 2001 From: Date: Mon, 25 Jun 2018 21:13:40 -0700 Subject: [PATCH 010/110] Fixed Game1.shouldFarmerPassOut issue, need to test night owl, started fixing Happy bday, need to update SimpleSoundManager --- GeneralMods/BuildEndurance/BuildEndurance.cs | 17 ++++++++++++++--- GeneralMods/BuildHealth/BuildHealth.cs | 9 +++++++-- GeneralMods/HappyBirthday/HappyBirthday.cs | 3 ++- GeneralMods/NightOwl/NightOwl.cs | 15 ++++++++++++--- .../SimpleSoundManager/{ => Framework}/Sound.cs | 2 +- .../{ => Framework}/SoundManager.cs | 7 ++++++- .../{ => Framework}/WavSound.cs | 0 .../{ => Framework}/XACTSound.cs | 2 +- .../{ => Framework}/XactMusicPair.cs | 0 .../StardustCore/Objects/MultiTileObject.cs | 2 ++ 10 files changed, 45 insertions(+), 12 deletions(-) rename GeneralMods/SimpleSoundManager/{ => Framework}/Sound.cs (95%) rename GeneralMods/SimpleSoundManager/{ => Framework}/SoundManager.cs (97%) rename GeneralMods/SimpleSoundManager/{ => Framework}/WavSound.cs (100%) rename GeneralMods/SimpleSoundManager/{ => Framework}/XACTSound.cs (98%) rename GeneralMods/SimpleSoundManager/{ => Framework}/XactMusicPair.cs (100%) diff --git a/GeneralMods/BuildEndurance/BuildEndurance.cs b/GeneralMods/BuildEndurance/BuildEndurance.cs index edc64517..763e619a 100644 --- a/GeneralMods/BuildEndurance/BuildEndurance.cs +++ b/GeneralMods/BuildEndurance/BuildEndurance.cs @@ -99,7 +99,7 @@ namespace Omegasis.BuildEndurance } // give XP when exhausted - if (!this.WasExhausted && Game1.player.exhausted) + if (!this.WasExhausted && Game1.player.exhausted.Value) { this.PlayerData.CurrentExp += this.Config.ExpForExhaustion; this.WasExhausted = true; @@ -107,8 +107,9 @@ namespace Omegasis.BuildEndurance } // give XP when player stays up too late or collapses - if (!this.WasCollapsed && Game1.farmerShouldPassOut) + if (!this.WasCollapsed && shouldFarmerPassout()) { + this.PlayerData.CurrentExp += this.Config.ExpForCollapsing; this.WasCollapsed = true; //this.Monitor.Log("The player has collapsed!"); @@ -180,7 +181,7 @@ namespace Omegasis.BuildEndurance } } this.PlayerData.ClearModEffects = false; - this.PlayerData.NightlyStamina = Game1.player.maxStamina; + this.PlayerData.NightlyStamina = Game1.player.MaxStamina; // save data this.Helper.WriteJsonFile(this.DataFilePath, this.PlayerData); @@ -219,5 +220,15 @@ namespace Omegasis.BuildEndurance this.Monitor.Log($"Error migrating data from the legacy 'PlayerData' folder for the current player. Technical details:\n {ex}", LogLevel.Error); } } + + /// + /// Try and emulate the old Game1.shouldFarmerPassout logic. + /// + /// + public bool shouldFarmerPassout() + { + if (Game1.player.stamina <= 0 || Game1.player.health <= 0 || Game1.timeOfDay >= 2600) return true; + else return false; + } } } diff --git a/GeneralMods/BuildHealth/BuildHealth.cs b/GeneralMods/BuildHealth/BuildHealth.cs index b263fc01..1ba8210c 100644 --- a/GeneralMods/BuildHealth/BuildHealth.cs +++ b/GeneralMods/BuildHealth/BuildHealth.cs @@ -103,11 +103,10 @@ namespace Omegasis.BuildHealth this.LastHealth = player.health; // give XP when player stays up too late or collapses - if (!this.WasCollapsed && Game1.farmerShouldPassOut) + if (!this.WasCollapsed && shouldFarmerPassout()) { this.PlayerData.CurrentExp += this.Config.ExpForCollapsing; this.WasCollapsed = true; - this.Monitor.Log("The player has collapsed!"); } } @@ -210,5 +209,11 @@ namespace Omegasis.BuildHealth this.Monitor.Log($"Error migrating data from the legacy 'PlayerData' folder for the current player. Technical details:\n {ex}", LogLevel.Error); } } + + public bool shouldFarmerPassout() + { + if (Game1.player.stamina <= 0 || Game1.player.health <= 0 || Game1.timeOfDay >= 2600) return true; + else return false; + } } } diff --git a/GeneralMods/HappyBirthday/HappyBirthday.cs b/GeneralMods/HappyBirthday/HappyBirthday.cs index 6eca492f..162e05ed 100644 --- a/GeneralMods/HappyBirthday/HappyBirthday.cs +++ b/GeneralMods/HappyBirthday/HappyBirthday.cs @@ -147,6 +147,7 @@ namespace Omegasis.HappyBirthday private void ControlEvents_KeyPressed(object sender, EventArgsKeyPressed e) { // show birthday selection menu + if (Game1.activeClickableMenu != null) return; if (Context.IsPlayerFree && !this.HasChosenBirthday && e.KeyPressed.ToString() == this.Config.KeyBinding) Game1.activeClickableMenu = new BirthdayMenu(this.PlayerData.BirthdaySeason, this.PlayerData.BirthdayDay, this.SetBirthday); } @@ -240,7 +241,7 @@ namespace Omegasis.HappyBirthday if (Game1.activeClickableMenu.GetType() == typeof(BirthdayMenu)) return; } // ask for birthday date - if (!this.HasChosenBirthday) + if (!this.HasChosenBirthday && Game1.activeClickableMenu==null) { Game1.activeClickableMenu = new BirthdayMenu(this.PlayerData.BirthdaySeason, this.PlayerData.BirthdayDay, this.SetBirthday); this.CheckedForBirthday = false; diff --git a/GeneralMods/NightOwl/NightOwl.cs b/GeneralMods/NightOwl/NightOwl.cs index d66bf81d..d0a354fd 100644 --- a/GeneralMods/NightOwl/NightOwl.cs +++ b/GeneralMods/NightOwl/NightOwl.cs @@ -160,7 +160,7 @@ namespace Omegasis.NightOwl string[] passOutFees = Game1.player.mailbox .Where(p => p.Contains("passedOut")) .ToArray(); - for (int idx=0; idx + /// Try and emulate the old Game1.shouldFarmerPassout logic. + /// + /// + public bool shouldFarmerPassout() + { + if (Game1.player.stamina <= 0 || Game1.player.health <= 0 || Game1.timeOfDay >= 2600) return true; + else return false; + } } } diff --git a/GeneralMods/SimpleSoundManager/Sound.cs b/GeneralMods/SimpleSoundManager/Framework/Sound.cs similarity index 95% rename from GeneralMods/SimpleSoundManager/Sound.cs rename to GeneralMods/SimpleSoundManager/Framework/Sound.cs index 33fe9088..7524e046 100644 --- a/GeneralMods/SimpleSoundManager/Sound.cs +++ b/GeneralMods/SimpleSoundManager/Framework/Sound.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace SimpleSoundManager +namespace SimpleSoundManager.Framework { /// /// Interface used for common sound functionality; diff --git a/GeneralMods/SimpleSoundManager/SoundManager.cs b/GeneralMods/SimpleSoundManager/Framework/SoundManager.cs similarity index 97% rename from GeneralMods/SimpleSoundManager/SoundManager.cs rename to GeneralMods/SimpleSoundManager/Framework/SoundManager.cs index e60d811d..8fd53482 100644 --- a/GeneralMods/SimpleSoundManager/SoundManager.cs +++ b/GeneralMods/SimpleSoundManager/Framework/SoundManager.cs @@ -7,8 +7,13 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace SimpleSoundManager +namespace SimpleSoundManager.Framework { + + /// + /// TODO: + /// Play, stop, pause songs. + /// class SoundManager { diff --git a/GeneralMods/SimpleSoundManager/WavSound.cs b/GeneralMods/SimpleSoundManager/Framework/WavSound.cs similarity index 100% rename from GeneralMods/SimpleSoundManager/WavSound.cs rename to GeneralMods/SimpleSoundManager/Framework/WavSound.cs diff --git a/GeneralMods/SimpleSoundManager/XACTSound.cs b/GeneralMods/SimpleSoundManager/Framework/XACTSound.cs similarity index 98% rename from GeneralMods/SimpleSoundManager/XACTSound.cs rename to GeneralMods/SimpleSoundManager/Framework/XACTSound.cs index b486017a..196d34d2 100644 --- a/GeneralMods/SimpleSoundManager/XACTSound.cs +++ b/GeneralMods/SimpleSoundManager/Framework/XACTSound.cs @@ -7,7 +7,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace SimpleSoundManager +namespace SimpleSoundManager.Framework { public class XACTSound : Sound { diff --git a/GeneralMods/SimpleSoundManager/XactMusicPair.cs b/GeneralMods/SimpleSoundManager/Framework/XactMusicPair.cs similarity index 100% rename from GeneralMods/SimpleSoundManager/XactMusicPair.cs rename to GeneralMods/SimpleSoundManager/Framework/XactMusicPair.cs diff --git a/GeneralMods/StardustCore/Objects/MultiTileObject.cs b/GeneralMods/StardustCore/Objects/MultiTileObject.cs index 13ec1c0a..63085359 100644 --- a/GeneralMods/StardustCore/Objects/MultiTileObject.cs +++ b/GeneralMods/StardustCore/Objects/MultiTileObject.cs @@ -196,6 +196,8 @@ namespace StardustCore.Objects { if (animationManager == null) { + //FIX SCALE SIZE AND POSITION APPROPRIATELY DEPENDING ON # OF OBJECTS!!! + aosdkpoasdopjsa spriteBatch.Draw(v.Value.getExtendedTexture().getTexture(), location+new Vector2(v.Key.X*16,v.Key.Y*16), this.defaultSourceRect, Color.White * transparency, 0f, new Vector2(0, 0), 1, SpriteEffects.None, layerDepth); } else From c474ce1a8d4f0898c1621aac87499d23b41f9168 Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Sun, 8 Jul 2018 00:48:13 -0700 Subject: [PATCH 011/110] Updated SSM to allow for playing/stoping of sound files. --- SimpleSoundManager/Framework/Sound.cs | 36 +++ SimpleSoundManager/Framework/SoundManager.cs | 216 ++++++++++++++++ SimpleSoundManager/Framework/WavSound.cs | 237 ++++++++++++++++++ SimpleSoundManager/Framework/XACTSound.cs | 134 ++++++++++ SimpleSoundManager/Framework/XactMusicPair.cs | 34 +++ SimpleSoundManager/Properties/AssemblyInfo.cs | 36 +++ SimpleSoundManager/README.md | 24 ++ SimpleSoundManager/SimpleSoundManager.csproj | 100 ++++++++ .../SimpleSoundManager.csproj.user | 6 + SimpleSoundManager/SimpleSoundManagerMod.cs | 14 ++ .../bin/Debug/SimpleSoundManager 2.0.zip | Bin 0 -> 11561 bytes .../bin/Debug/SimpleSoundManager.dll | Bin 0 -> 10240 bytes .../bin/Debug/SimpleSoundManager.pdb | Bin 0 -> 32256 bytes SimpleSoundManager/manifest.json | 10 + ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 7460 bytes ...oundManager.csproj.CoreCompileInputs.cache | 1 + ...leSoundManager.csproj.FileListAbsolute.txt | 5 + .../obj/Debug/SimpleSoundManager.dll | Bin 0 -> 10240 bytes .../obj/Debug/SimpleSoundManager.pdb | Bin 0 -> 32256 bytes SimpleSoundManager/packages.config | 4 + 20 files changed, 857 insertions(+) create mode 100644 SimpleSoundManager/Framework/Sound.cs create mode 100644 SimpleSoundManager/Framework/SoundManager.cs create mode 100644 SimpleSoundManager/Framework/WavSound.cs create mode 100644 SimpleSoundManager/Framework/XACTSound.cs create mode 100644 SimpleSoundManager/Framework/XactMusicPair.cs create mode 100644 SimpleSoundManager/Properties/AssemblyInfo.cs create mode 100644 SimpleSoundManager/README.md create mode 100644 SimpleSoundManager/SimpleSoundManager.csproj create mode 100644 SimpleSoundManager/SimpleSoundManager.csproj.user create mode 100644 SimpleSoundManager/SimpleSoundManagerMod.cs create mode 100644 SimpleSoundManager/bin/Debug/SimpleSoundManager 2.0.zip create mode 100644 SimpleSoundManager/bin/Debug/SimpleSoundManager.dll create mode 100644 SimpleSoundManager/bin/Debug/SimpleSoundManager.pdb create mode 100644 SimpleSoundManager/manifest.json create mode 100644 SimpleSoundManager/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 SimpleSoundManager/obj/Debug/SimpleSoundManager.csproj.CoreCompileInputs.cache create mode 100644 SimpleSoundManager/obj/Debug/SimpleSoundManager.csproj.FileListAbsolute.txt create mode 100644 SimpleSoundManager/obj/Debug/SimpleSoundManager.dll create mode 100644 SimpleSoundManager/obj/Debug/SimpleSoundManager.pdb create mode 100644 SimpleSoundManager/packages.config diff --git a/SimpleSoundManager/Framework/Sound.cs b/SimpleSoundManager/Framework/Sound.cs new file mode 100644 index 00000000..7524e046 --- /dev/null +++ b/SimpleSoundManager/Framework/Sound.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SimpleSoundManager.Framework +{ + /// + /// Interface used for common sound functionality; + /// + public interface Sound + { + /// + /// Handles playing a sound. + /// + void play(); + /// + /// Handles pausing a song. + /// + void pause(); + /// + /// Handles stopping a song. + /// + void stop(); + /// + /// Handles restarting a song. + /// + void restart(); + /// + /// Handles getting a clone of the song. + /// + /// + Sound clone(); + } +} diff --git a/SimpleSoundManager/Framework/SoundManager.cs b/SimpleSoundManager/Framework/SoundManager.cs new file mode 100644 index 00000000..df7d79be --- /dev/null +++ b/SimpleSoundManager/Framework/SoundManager.cs @@ -0,0 +1,216 @@ +using Microsoft.Xna.Framework.Audio; +using StardewModdingAPI; +using StardewValley; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SimpleSoundManager.Framework +{ + + /// + /// TODO: + /// Pause sounds. + /// + public class SoundManager + { + + public Dictionary sounds; + public Dictionary musicBanks; + public KeyValuePair previousSound; + + + /// + /// Constructor for this class. + /// + public SoundManager() + { + this.sounds = new Dictionary(); + this.musicBanks = new Dictionary(); + this.previousSound = new KeyValuePair("", null); + } + + /// + /// Constructor for wav files. + /// + /// + /// + public void loadWavFile(string soundName,string pathToWav) + { + WavSound wav = new WavSound(pathToWav); + this.sounds.Add(soundName,wav); + } + + /// + /// Constructor for wav files. + /// + /// + /// + /// + public void loadWavFile(IModHelper helper,string soundName,string pathToWav) + { + WavSound wav = new WavSound(helper ,pathToWav); + this.sounds.Add(soundName,wav); + } + + /// + /// Constructor for wav files. + /// + /// + /// + /// + public void loadWavFile(IModHelper helper,string songName,List pathToWav) + { + WavSound wav = new WavSound(helper,pathToWav); + this.sounds.Add(songName,wav); + } + + /// + /// Constructor for XACT files. + /// + /// + /// + /// + public void loadXACTFile(WaveBank waveBank, ISoundBank soundBank, string songName) + { + XACTSound xactSound = new XACTSound(waveBank, soundBank, songName); + this.sounds.Add(songName, xactSound); + } + + /// + /// Constructor for XACT files based on already added music packs. + /// + /// + /// + public void loadXACTFile(string pairName, string songName) + { + XACTMusicPair musicPair = getMusicPack(pairName); + if (pairName == null) + { + return; + } + loadXACTFile(musicPair.waveBank, musicPair.soundBank, songName); + } + + + /// + /// Creates a music pack pair that holds .xwb and .xsb music files. + /// + /// The mod's helper that will handle the path of the files. + /// The name of this music pack pair. + /// The relative path to the .xwb file + /// The relative path to the .xsb file + public void loadXACTMusicBank(IModHelper helper,string pairName,string wavName, string soundName) + { + this.musicBanks.Add(pairName,new XACTMusicPair(helper, wavName, soundName)); + } + + /// + /// Gets the music pack pair from the sound pool. + /// + /// + /// + public XACTMusicPair getMusicPack(string name) + { + foreach(var pack in this.musicBanks) + { + if (name == pack.Key) return pack.Value; + } + return null; + } + + /// + /// Gets a clone of the loaded sound. + /// + /// + /// + public Sound getSoundClone(string name) + { + foreach(var sound in this.sounds) + { + if (sound.Key == name) return sound.Value.clone(); + } + return null; + } + + /// + /// Returns the sound with the associated name. + /// + /// + /// + public Sound getSound(string name) + { + Sound s; + bool exists=this.sounds.TryGetValue(name,out s); + if (exists) + { + return s; + } + else + { + return null; + } + } + + /// + /// Plays the sound with the associated name. + /// + /// + public void playSound(string name) + { + Sound s; + bool exists = this.sounds.TryGetValue(name, out s); + if (exists) + { + s.play(); + previousSound = new KeyValuePair(name, s); + } + } + + /// + /// Stops the sound with the associated name. + /// + /// + public void stopSound(string name) + { + Sound s; + bool exists = this.sounds.TryGetValue(name, out s); + if (exists) + { + s.stop(); + } + } + + /// + /// Stops the previously playing sound. + /// + public void stopPreviousSound() + { + if (previousSound.Key != "") + { + previousSound.Value.stop(); + previousSound = new KeyValuePair("", null); + } + } + + /// + /// Stops the previously playing sound and plays a new sound. + /// + /// + public void swapSounds(string name) + { + if (previousSound.Key == "") + { + playSound(name); + } + else + { + stopSound(previousSound.Key); + playSound(name); + } + } + + } +} diff --git a/SimpleSoundManager/Framework/WavSound.cs b/SimpleSoundManager/Framework/WavSound.cs new file mode 100644 index 00000000..eb3e7137 --- /dev/null +++ b/SimpleSoundManager/Framework/WavSound.cs @@ -0,0 +1,237 @@ +using Microsoft.Xna.Framework.Audio; +using SimpleSoundManager.Framework; +using StardewModdingAPI; +using StardewValley; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SimpleSoundManager.Framework +{ + public class WavSound : Sound + { + + /// + /// Used to actually play the song. + /// + DynamicSoundEffectInstance dynamicSound; + /// + /// Used to keep track of where in the song we are. + /// + int position; + /// + /// ??? + /// + int count; + /// + /// Used to store the info for the song. + /// + byte[] byteArray; + + public List sounds; + + public string path; + + + + /// + /// Get a raw disk path to the wav file. + /// + /// + public WavSound(string pathToWavFile) + { + this.path = pathToWavFile; + LoadWavFromFileToStream(); + } + + /// + /// A constructor that takes a mod helper and a relative path to a wav file. + /// + /// + /// + public WavSound(IModHelper modHelper, string pathInModDirectory) + { + string path = Path.Combine(modHelper.DirectoryPath, pathInModDirectory); + this.path = path; + } + + /// + /// Constructor that is more flexible than typing an absolute path. + /// + /// The mod helper for the mod you wish to use to load the music files from. + /// The list of folders and files that make up a complete path. + public WavSound(IModHelper modHelper, List pathPieces) + { + string s = modHelper.DirectoryPath; + foreach(var str in pathPieces) + { + s = Path.Combine(s, str); + } + this.path = s; + } + + /// + /// Loads the .wav file from disk and plays it. + /// + public void LoadWavFromFileToStream() + { + // Create a new SpriteBatch, which can be used to draw textures. + + string file = this.path; + System.IO.Stream waveFileStream = File.OpenRead(file); //TitleContainer.OpenStream(file); + + BinaryReader reader = new BinaryReader(waveFileStream); + + int chunkID = reader.ReadInt32(); + int fileSize = reader.ReadInt32(); + int riffType = reader.ReadInt32(); + int fmtID = reader.ReadInt32(); + int fmtSize = reader.ReadInt32(); + int fmtCode = reader.ReadInt16(); + int channels = reader.ReadInt16(); + int sampleRate = reader.ReadInt32(); + int fmtAvgBPS = reader.ReadInt32(); + int fmtBlockAlign = reader.ReadInt16(); + int bitDepth = reader.ReadInt16(); + + if (fmtSize == 18) + { + // Read any extra values + int fmtExtraSize = reader.ReadInt16(); + reader.ReadBytes(fmtExtraSize); + } + + int dataID = reader.ReadInt32(); + int dataSize = reader.ReadInt32(); + + byteArray = reader.ReadBytes(dataSize); + + + dynamicSound = new DynamicSoundEffectInstance(sampleRate, (AudioChannels)channels); + count = dynamicSound.GetSampleSizeInBytes(TimeSpan.FromMilliseconds(10000)); + + } + + void DynamicSound_BufferNeeded(object sender, EventArgs e) + { + try + { + dynamicSound.SubmitBuffer(byteArray, position, count); + } + catch (Exception err) + { + + } + + position += count; + if (position + count > byteArray.Length) + { + position = 0; + } + } + + /// + /// Used to pause the current song. + /// + public void pause() + { + if (dynamicSound != null) dynamicSound.Pause(); + } + + /// + /// Used to play a song. + /// + /// + public void play() + { + if (this.isPlaying() == true) return; + dynamicSound.BufferNeeded += new EventHandler(DynamicSound_BufferNeeded); + dynamicSound.Play(); + } + + + /// + /// Used to resume the currently playing song. + /// + public void resume() + { + if (dynamicSound == null) return; + dynamicSound.Resume(); + } + + /// + /// Used to stop the currently playing song. + /// + public void stop() + { + + if (dynamicSound != null) + { + dynamicSound.Stop(true); + dynamicSound.BufferNeeded -= new EventHandler(DynamicSound_BufferNeeded); + position = 0; + count = 0; + byteArray = new byte[0]; + } + } + + /// + /// Used to change from one playing song to another; + /// + /// + public void swap(string pathToNewWavFile) + { + this.stop(); + this.path = pathToNewWavFile; + this.play(); + } + + /// + /// Checks if the song is currently playing. + /// + /// + public bool isPlaying() + { + if (this.dynamicSound == null) return false; + if (this.dynamicSound.State == SoundState.Playing) return true; + else return false; + } + + /// + /// Checks if the song is currently paused. + /// + /// + public bool isPaused() + { + if (this.dynamicSound == null) return false; + if (this.dynamicSound.State == SoundState.Paused) return true; + else return false; + } + + /// + /// Checks if the song is currently stopped. + /// + /// + public bool isStopped() + { + if (this.dynamicSound == null) return false; + if (this.dynamicSound.State == SoundState.Stopped) return true; + else return false; + } + + public Sound clone() + { + return new WavSound(this.path); + } + + public void restart() + { + this.stop(); + this.play(); + } + + } +} diff --git a/SimpleSoundManager/Framework/XACTSound.cs b/SimpleSoundManager/Framework/XACTSound.cs new file mode 100644 index 00000000..196d34d2 --- /dev/null +++ b/SimpleSoundManager/Framework/XACTSound.cs @@ -0,0 +1,134 @@ +using Microsoft.Xna.Framework.Audio; +using StardewModdingAPI; +using StardewValley; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SimpleSoundManager.Framework +{ + public class XACTSound : Sound + { + public WaveBank waveBank; + public ISoundBank soundBank; + public string soundName; + WaveBank vanillaWaveBank; + ISoundBank vanillaSoundBank; + Cue song; + + /// + /// Make a new Sound Manager to play and manage sounds in a modded wave bank. + /// + /// The reference to the wave bank in the mod's asset folder. + /// The reference to the sound bank in the mod's asset folder. + public XACTSound(WaveBank newWaveBank, ISoundBank newSoundBank,string soundName) + { + this.waveBank = newWaveBank; + this.soundBank = newSoundBank; + + vanillaSoundBank = Game1.soundBank; + vanillaWaveBank = Game1.waveBank; + this.soundName = soundName; + song = this.soundBank.GetCue(this.soundName); + } + + /// + /// Play a sound from the mod's wave bank. + /// + /// The name of the sound in the mod's wave bank. This will fail if the sound doesn't exists. This is also case sensitive. + public void play(string soundName) + { + Game1.waveBank = this.waveBank; + Game1.soundBank = this.soundBank; + + if (this.song == null) return; + + this.song.Play(); + + Game1.waveBank = this.vanillaWaveBank; + Game1.soundBank = this.vanillaSoundBank; + } + + /// + /// Pauses the first instance of this sound. + /// + /// + public void pause(string soundName) + { + if (this.song == null) return; + this.song.Pause(); + } + + /// + /// Resume the first instance of the sound that has this name. + /// + public void resume(string soundName) + { + if (this.song == null) return; + this.song.Resume(); + } + + + /// + /// Stop the first instance of the sound that has this name. + /// + /// + public void stop(string soundName) + { + if (this.song == null) return; + this.song.Stop(AudioStopOptions.Immediate); + } + + /// + /// Resumes a paused song. + /// + public void resume() + { + this.resume(soundName); + } + + /// + /// Plays this song. + /// + public void play() + { + this.play(this.soundName); + } + + /// + /// Pauses this song. + /// + public void pause() + { + this.pause(this.soundName); + } + + /// + /// Stops this somg. + /// + public void stop() + { + this.stop(this.soundName); + } + + /// + /// Restarts this song. + /// + public void restart() + { + this.stop(); + this.play(); + } + + /// + /// Gets a clone of this song. + /// + /// + public Sound clone() + { + return new XACTSound(this.waveBank, this.soundBank, this.soundName); + } + } +} diff --git a/SimpleSoundManager/Framework/XactMusicPair.cs b/SimpleSoundManager/Framework/XactMusicPair.cs new file mode 100644 index 00000000..970f9fbe --- /dev/null +++ b/SimpleSoundManager/Framework/XactMusicPair.cs @@ -0,0 +1,34 @@ +using Microsoft.Xna.Framework.Audio; +using StardewModdingAPI; +using StardewValley; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SimpleSoundManager.Framework +{ + public class XACTMusicPair + { + public WaveBank waveBank; + public ISoundBank soundBank; + + /// + /// Create a xwb and xsb music pack pair. + /// + /// The mod helper from the mod that will handle loading in the file. + /// A relative path to the .xwb file in the mod helper's mod directory. + /// A relative path to the .xsb file in the mod helper's mod directory. + public XACTMusicPair(IModHelper helper,string wavBankPath, string soundBankPath) + { + wavBankPath = Path.Combine(helper.DirectoryPath, wavBankPath); + soundBankPath = Path.Combine(helper.DirectoryPath, soundBankPath); + + + waveBank = new WaveBank(Game1.audioEngine, wavBankPath); + soundBank = new SoundBankWrapper(new SoundBank(Game1.audioEngine, soundBankPath)); + } + } +} diff --git a/SimpleSoundManager/Properties/AssemblyInfo.cs b/SimpleSoundManager/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..58a4d762 --- /dev/null +++ b/SimpleSoundManager/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("SimpleSoundManager")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("SimpleSoundManager")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[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("7b1e9a54-ed9e-47aa-bbaa-98a6e7cb527a")] + +// 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/SimpleSoundManager/README.md b/SimpleSoundManager/README.md new file mode 100644 index 00000000..72949ec6 --- /dev/null +++ b/SimpleSoundManager/README.md @@ -0,0 +1,24 @@ +**SimpleSoundManager** is a [Stardew Valley](http://stardewvalley.net/) mod which lets SMAPI mods +use custom wave/sound banks for their mods. This allows for things such as playing music/sounds at +a time of day, when an object is interacted with, etc. + +Compatible with Stardew Valley 1.2+ on Linux, Mac, and Windows. + +## Installation +1. [Install the latest version of SMAPI](https://github.com/Pathoschild/SMAPI/releases). +2. Install [this mod from Nexus mods](https://www.nexusmods.com/stardewvalley/mods/1410). +3. Run the game using SMAPI. + +## Usage +1. Download this mod and reference it when making your mod. +2. Create new wave/sound banks using XACT. +3. Create a new SoundManager in your mod. +4. Play sounds to your heart's content. + +## Versions +1.0: +* Initial release. + +1.0.1: +* Enabled update checks in SMAPI 2.0+. +* Fixed compatibility with SMAPI 2.0. diff --git a/SimpleSoundManager/SimpleSoundManager.csproj b/SimpleSoundManager/SimpleSoundManager.csproj new file mode 100644 index 00000000..9e859b3f --- /dev/null +++ b/SimpleSoundManager/SimpleSoundManager.csproj @@ -0,0 +1,100 @@ + + + + + Debug + AnyCPU + {7B1E9A54-ED9E-47AA-BBAA-98A6E7CB527A} + Library + Properties + SimpleSoundManager + SimpleSoundManager + v4.5 + 512 + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + bin\x86\ + TRACE + true + pdbonly + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + prompt + MinimumRecommendedRules.ruleset + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + prompt + MinimumRecommendedRules.ruleset + + + bin\x86\x86\ + TRACE + true + pdbonly + x86 + prompt + MinimumRecommendedRules.ruleset + + + + + + + + + + + + + + + + + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + \ No newline at end of file diff --git a/SimpleSoundManager/SimpleSoundManager.csproj.user b/SimpleSoundManager/SimpleSoundManager.csproj.user new file mode 100644 index 00000000..2f196a36 --- /dev/null +++ b/SimpleSoundManager/SimpleSoundManager.csproj.user @@ -0,0 +1,6 @@ + + + + ShowAllFiles + + \ No newline at end of file diff --git a/SimpleSoundManager/SimpleSoundManagerMod.cs b/SimpleSoundManager/SimpleSoundManagerMod.cs new file mode 100644 index 00000000..3e4eb435 --- /dev/null +++ b/SimpleSoundManager/SimpleSoundManagerMod.cs @@ -0,0 +1,14 @@ +using StardewModdingAPI; + +namespace SimpleSoundManager +{ + public class SimpleSoundManagerMod : Mod + { + internal static IModHelper ModHelper; + + public override void Entry(IModHelper helper) + { + ModHelper = helper; + } + } +} diff --git a/SimpleSoundManager/bin/Debug/SimpleSoundManager 2.0.zip b/SimpleSoundManager/bin/Debug/SimpleSoundManager 2.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..ab56470caf277b99e5e8ea6d4d9dcff86816a300 GIT binary patch literal 11561 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 literal 0 HcmV?d00001 diff --git a/SimpleSoundManager/bin/Debug/SimpleSoundManager.dll b/SimpleSoundManager/bin/Debug/SimpleSoundManager.dll new file mode 100644 index 0000000000000000000000000000000000000000..ab698f9605f5995e5082f8791ebf503f28fe2a28 GIT binary patch literal 10240 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 Rc>niP-T21q{e-f0`acQ5z{>yt literal 0 HcmV?d00001 diff --git a/SimpleSoundManager/obj/Debug/SimpleSoundManager.csproj.CoreCompileInputs.cache b/SimpleSoundManager/obj/Debug/SimpleSoundManager.csproj.CoreCompileInputs.cache new file mode 100644 index 00000000..604b2e56 --- /dev/null +++ b/SimpleSoundManager/obj/Debug/SimpleSoundManager.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +1ef37e74c2d3c9be63fcc5fc24c5b0b4a4b35324 diff --git a/SimpleSoundManager/obj/Debug/SimpleSoundManager.csproj.FileListAbsolute.txt b/SimpleSoundManager/obj/Debug/SimpleSoundManager.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..e3de2ab3 --- /dev/null +++ b/SimpleSoundManager/obj/Debug/SimpleSoundManager.csproj.FileListAbsolute.txt @@ -0,0 +1,5 @@ +C:\Users\iD Student\Desktop\Stardew\Stardew_Valley_Mods-Development\GeneralMods\SimpleSoundManager\obj\Debug\SimpleSoundManager.csproj.CoreCompileInputs.cache +C:\Users\iD Student\Desktop\Stardew\Stardew_Valley_Mods-Development\GeneralMods\SimpleSoundManager\bin\Debug\SimpleSoundManager.dll +C:\Users\iD Student\Desktop\Stardew\Stardew_Valley_Mods-Development\GeneralMods\SimpleSoundManager\bin\Debug\SimpleSoundManager.pdb +C:\Users\iD Student\Desktop\Stardew\Stardew_Valley_Mods-Development\GeneralMods\SimpleSoundManager\obj\Debug\SimpleSoundManager.dll +C:\Users\iD Student\Desktop\Stardew\Stardew_Valley_Mods-Development\GeneralMods\SimpleSoundManager\obj\Debug\SimpleSoundManager.pdb diff --git a/SimpleSoundManager/obj/Debug/SimpleSoundManager.dll b/SimpleSoundManager/obj/Debug/SimpleSoundManager.dll new file mode 100644 index 0000000000000000000000000000000000000000..ab698f9605f5995e5082f8791ebf503f28fe2a28 GIT binary patch literal 10240 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 + + + \ No newline at end of file From 32c4ba1d65815893bfcce267e46d629b74e51e89 Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Sun, 8 Jul 2018 00:49:49 -0700 Subject: [PATCH 012/110] Creating new voice acting mod at request of another author. --- Vocalization/Vocalization.sln | 25 +++ .../Framework/CharacterVoiceCue.cs | 53 +++++ .../Vocalization/Properties/AssemblyInfo.cs | 36 ++++ Vocalization/Vocalization/Vocalization.cs | 197 ++++++++++++++++++ Vocalization/Vocalization/Vocalization.csproj | 63 ++++++ .../Vocalization/Vocalization.csproj.user | 6 + .../Vocalization/bin/Debug/Netcode.dll | Bin 0 -> 76800 bytes .../Vocalization/bin/Debug/Netcode.pdb | Bin 0 -> 239104 bytes .../bin/Debug/Vocalization 0.0.1.zip | Bin 0 -> 94387 bytes .../Vocalization/bin/Debug/Vocalization.dll | Bin 0 -> 5120 bytes .../Vocalization/bin/Debug/Vocalization.pdb | Bin 0 -> 11776 bytes Vocalization/Vocalization/manifest.json | 10 + ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 7920 bytes ...ocalization.csproj.CoreCompileInputs.cache | 1 + .../Vocalization.csproj.FileListAbsolute.txt | 8 + ...ation.csprojResolveAssemblyReference.cache | Bin 0 -> 83875 bytes .../Vocalization/obj/Debug/Vocalization.dll | Bin 0 -> 5120 bytes .../Vocalization/obj/Debug/Vocalization.pdb | Bin 0 -> 11776 bytes Vocalization/Vocalization/packages.config | 4 + ...oschild.Stardew.ModBuildConfig.2.0.2.nupkg | Bin 0 -> 11531 bytes ...Pathoschild.Stardew.ModBuildConfig.targets | 144 +++++++++++++ .../StardewModdingAPI.ModBuildConfig.dll | Bin 0 -> 16384 bytes 22 files changed, 547 insertions(+) create mode 100644 Vocalization/Vocalization.sln create mode 100644 Vocalization/Vocalization/Framework/CharacterVoiceCue.cs create mode 100644 Vocalization/Vocalization/Properties/AssemblyInfo.cs create mode 100644 Vocalization/Vocalization/Vocalization.cs create mode 100644 Vocalization/Vocalization/Vocalization.csproj create mode 100644 Vocalization/Vocalization/Vocalization.csproj.user create mode 100644 Vocalization/Vocalization/bin/Debug/Netcode.dll create mode 100644 Vocalization/Vocalization/bin/Debug/Netcode.pdb create mode 100644 Vocalization/Vocalization/bin/Debug/Vocalization 0.0.1.zip create mode 100644 Vocalization/Vocalization/bin/Debug/Vocalization.dll create mode 100644 Vocalization/Vocalization/bin/Debug/Vocalization.pdb create mode 100644 Vocalization/Vocalization/manifest.json create mode 100644 Vocalization/Vocalization/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 Vocalization/Vocalization/obj/Debug/Vocalization.csproj.CoreCompileInputs.cache create mode 100644 Vocalization/Vocalization/obj/Debug/Vocalization.csproj.FileListAbsolute.txt create mode 100644 Vocalization/Vocalization/obj/Debug/Vocalization.csprojResolveAssemblyReference.cache create mode 100644 Vocalization/Vocalization/obj/Debug/Vocalization.dll create mode 100644 Vocalization/Vocalization/obj/Debug/Vocalization.pdb create mode 100644 Vocalization/Vocalization/packages.config create mode 100644 Vocalization/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/Pathoschild.Stardew.ModBuildConfig.2.0.2.nupkg create mode 100644 Vocalization/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/Pathoschild.Stardew.ModBuildConfig.targets create mode 100644 Vocalization/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/StardewModdingAPI.ModBuildConfig.dll diff --git a/Vocalization/Vocalization.sln b/Vocalization/Vocalization.sln new file mode 100644 index 00000000..ce987ba5 --- /dev/null +++ b/Vocalization/Vocalization.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27428.2037 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Vocalization", "Vocalization\Vocalization.csproj", "{1651701C-DB36-43C7-B66D-2700171DD9A9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1651701C-DB36-43C7-B66D-2700171DD9A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1651701C-DB36-43C7-B66D-2700171DD9A9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1651701C-DB36-43C7-B66D-2700171DD9A9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1651701C-DB36-43C7-B66D-2700171DD9A9}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {4C50BF63-11B5-41DB-B244-337AF4EF66DC} + EndGlobalSection +EndGlobal diff --git a/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs b/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs new file mode 100644 index 00000000..a5ee8796 --- /dev/null +++ b/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Vocalization.Framework +{ + /// + /// A class that handles all of the storage of references to the audio files for this character. + /// + public class CharacterVoiceCue + { + /// + /// The name of the NPC. + /// + public string name; + /// + /// A dictionary of dialogue strings that correspond to audio files. + /// + public Dictionary dialogueCues; + + /// + /// Constructor. + /// + /// The name of the NPC. + public CharacterVoiceCue(string name) + { + this.name = name; + this.dialogueCues = new Dictionary(); + } + + /// + /// Plays the associated dialogue file. + /// + /// The current dialogue string to play audio for. + public void speak(string dialogueString) + { + string voiceFileName = ""; + bool exists = dialogueCues.TryGetValue(dialogueString, out voiceFileName); + if (exists) + { + Vocalization.soundManager.swapSounds(voiceFileName); + } + else + { + Vocalization.ModMonitor.Log("The dialogue cue for the current dialogue could not be found. Please ensure that the dialogue is added the character's voice file and that the proper file for the voice exists."); + return; + } + } + + } +} diff --git a/Vocalization/Vocalization/Properties/AssemblyInfo.cs b/Vocalization/Vocalization/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..1218eb86 --- /dev/null +++ b/Vocalization/Vocalization/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("Vocalization")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Vocalization")] +[assembly: AssemblyCopyright("Copyright © 2018")] +[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("1651701c-db36-43c7-b66d-2700171dd9a9")] + +// 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/Vocalization/Vocalization/Vocalization.cs b/Vocalization/Vocalization/Vocalization.cs new file mode 100644 index 00000000..52a699ab --- /dev/null +++ b/Vocalization/Vocalization/Vocalization.cs @@ -0,0 +1,197 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using StardewModdingAPI; +using StardewValley; +using StardewValley.Menus; +using Vocalization.Framework; + +namespace Vocalization +{ + /// + /// TODO: + /// + /// Make a directory where all of the wav files will be stored. (Done?) + /// Load in said wav files.(Done?) + /// + /// Find way to add in supported dialogue via some sort of file system. (Done?) + /// -Make each character folder have a .json that has.... + /// -Character Name(Done?) + /// -Dictionary of supported dialogue lines and values for .wav files. (Done?) + /// -*Note* The value for the dialogue dictionaries is the name of the file excluding the .wav extension. + /// + /// Find way to play said wave files. (Done?) + /// + /// Sanitize input to remove variables such as pet names, farm names, farmer name. + /// + /// Add in dialogue for npcs into their respective VoiceCue.json files. + /// + /// Add support for different kinds of menus. TV, shops, etc. + /// + public class Vocalization : Mod + { + public static IModHelper ModHelper; + public static IMonitor ModMonitor; + + /// + /// A string that keeps track of the previous dialogue said to ensure that dialogue isn't constantly repeated while the text box is open. + /// + public static string previousDialogue; + + /// + /// Simple Sound Manager class that handles playing and stoping dialogue. + /// + public static SimpleSoundManager.Framework.SoundManager soundManager; + + /// + /// The path to the folder where all of the NPC folders for dialogue .wav files are kept. + /// + public static string VoicePath = ""; + + + /// + /// A dictionary that keeps track of all of the npcs whom have voice acting for their dialogue. + /// + public static Dictionary DialogueCues; + + public override void Entry(IModHelper helper) + { + StardewModdingAPI.Events.SaveEvents.AfterLoad += SaveEvents_AfterLoad; + DialogueCues = new Dictionary(); + + StardewModdingAPI.Events.GameEvents.UpdateTick += GameEvents_UpdateTick; + StardewModdingAPI.Events.MenuEvents.MenuClosed += MenuEvents_MenuClosed; + + + previousDialogue = ""; + + ModMonitor = Monitor; + ModHelper = Helper; + + soundManager = new SimpleSoundManager.Framework.SoundManager(); + + } + + /// + /// Runs whenever any onscreen menu is closed. + /// + /// + /// + private void MenuEvents_MenuClosed(object sender, StardewModdingAPI.Events.EventArgsClickableMenuClosed e) + { + //Clean out my previous dialogue when I close any sort of menu. + previousDialogue = ""; + } + + /// + /// Runs after the game is loaded to initialize all of the mod's files. + /// + /// + /// + private void SaveEvents_AfterLoad(object sender, EventArgs e) + { + initialzeDirectories(); + loadAllVoiceFiles(); + } + + /// + /// Runs every game tick to check if the player is talking to an npc. + /// + /// + /// + private void GameEvents_UpdateTick(object sender, EventArgs e) + { + if (Game1.currentSpeaker != null) + { + string speakerName = Game1.currentSpeaker.Name; + if (Game1.activeClickableMenu.GetType() == typeof(StardewValley.Menus.DialogueBox)) + { + StardewValley.Menus.DialogueBox dialogueBox =(DialogueBox)Game1.activeClickableMenu; + string currentDialogue = dialogueBox.getCurrentString(); + if (previousDialogue != currentDialogue) + { + ModMonitor.Log(speakerName); + previousDialogue = currentDialogue; //Update my previously read dialogue so that I only read the new string once when it appears. + ModMonitor.Log(currentDialogue); //Print out my dialogue. + + + //Do logic here to figure out what audio clips to play. + //Sanitize input here! + //Load all game dialogue files and then sanitize input for that??? + } + } + } + } + + /// + /// Runs after loading. + /// + private void initialzeDirectories() + { + string basePath = ModHelper.DirectoryPath; + string contentPath = Path.Combine(basePath, "Content"); + string audioPath = Path.Combine(contentPath, "Audio"); + string voicePath = Path.Combine(audioPath, "VoiceFiles"); + VoicePath = voicePath; //Set a static reference to my voice files directory. + + List characterDialoguePaths = new List(); + + //Get a list of all characters in the game and make voice directories for them. + foreach (var loc in Game1.locations) + { + foreach(var NPC in loc.characters) + { + string characterPath = Path.Combine(voicePath, NPC.Name); + characterDialoguePaths.Add(characterPath); + } + } + + //Create a list of new directories if the corresponding character directory doesn't exist. + //Note: A modder could also manually add in their own character directory for voice lines instead of having to add it via code. + foreach(var dir in characterDialoguePaths) + { + if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); + } + } + + + /// + /// Loads in all of the .wav files associated with voice acting clips. + /// + public void loadAllVoiceFiles() + { + List directories = Directory.GetDirectories(VoicePath).ToList(); + foreach(var dir in directories) + { + List audioClips = Directory.GetFiles(dir, ".wav").ToList(); + //For every .wav file in every character voice clip directory load in the voice clip. + foreach(var file in audioClips) + { + string fileName = Path.GetFileNameWithoutExtension(file); + soundManager.loadWavFile(ModHelper, fileName, file); + ModMonitor.Log("Loaded sound file: " + fileName+ " from: "+ file); + } + + //Get the character dialogue cues (aka when the character should "speak") from the .json file. + string voiceCueFile=Path.Combine(dir,"VoiceCues.json"); + string characterName = Path.GetFileName(dir); + + //If a file was not found, create one and add it to the list of character voice cues. + if (!File.Exists(voiceCueFile)) + { + CharacterVoiceCue cue= new CharacterVoiceCue(characterName); + ModHelper.WriteJsonFile(Path.Combine(dir, "VoiceCues.json"), cue); + DialogueCues.Add(characterName, cue); + } + else + { + CharacterVoiceCue cue=ModHelper.ReadJsonFile(voiceCueFile); + DialogueCues.Add(characterName,cue); + } + } + } + } +} diff --git a/Vocalization/Vocalization/Vocalization.csproj b/Vocalization/Vocalization/Vocalization.csproj new file mode 100644 index 00000000..d46ef317 --- /dev/null +++ b/Vocalization/Vocalization/Vocalization.csproj @@ -0,0 +1,63 @@ + + + + + Debug + AnyCPU + {1651701C-DB36-43C7-B66D-2700171DD9A9} + Library + Properties + Vocalization + Vocalization + v4.6.1 + 512 + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Netcode.dll + + + + + + + + + + + + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + \ No newline at end of file diff --git a/Vocalization/Vocalization/Vocalization.csproj.user b/Vocalization/Vocalization/Vocalization.csproj.user new file mode 100644 index 00000000..2f196a36 --- /dev/null +++ b/Vocalization/Vocalization/Vocalization.csproj.user @@ -0,0 +1,6 @@ + + + + ShowAllFiles + + \ No newline at end of file diff --git a/Vocalization/Vocalization/bin/Debug/Netcode.dll b/Vocalization/Vocalization/bin/Debug/Netcode.dll new file mode 100644 index 0000000000000000000000000000000000000000..7df91e3adfe3e3391e4da0c5495edc3eef035b96 GIT binary patch literal 76800 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 literal 0 HcmV?d00001 diff --git a/Vocalization/Vocalization/bin/Debug/Netcode.pdb b/Vocalization/Vocalization/bin/Debug/Netcode.pdb new file mode 100644 index 0000000000000000000000000000000000000000..30f4e55890b2829e0967a09bcaab23c67b077eee GIT binary patch literal 239104 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 P{I&*uTLb@p)WH7+_!I#M literal 0 HcmV?d00001 diff --git a/Vocalization/Vocalization/bin/Debug/Vocalization 0.0.1.zip b/Vocalization/Vocalization/bin/Debug/Vocalization 0.0.1.zip new file mode 100644 index 0000000000000000000000000000000000000000..2796371fb49bb95b5bc21683073824f075ebffd9 GIT binary patch literal 94387 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%0D)xT`16)5x^nNlhwk$cDpI2NcQOI-}nt&&H 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%0A;p`N<^ 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 literal 0 HcmV?d00001 diff --git a/Vocalization/Vocalization/bin/Debug/Vocalization.dll b/Vocalization/Vocalization/bin/Debug/Vocalization.dll new file mode 100644 index 0000000000000000000000000000000000000000..ace3a2b8e54c9d2d4fe188e164f1ca5c8e3aeb36 GIT binary patch literal 5120 zcmeHLU2Ggz6+Sb&UjHQ7W;f1%M8|Q8oWEr^HqLK@?cGhXsqMH~$0dn{GrN1Uo@91r zJTvQfBO19yty+WxZC^ktFGv-wc%cYE8-WlMRYIZ?L?C!T(5gZxycDD&p$a8@=gzFX zj?*Gusv>dM^Ue9Y=bU@)ojZ3tcHwIjA)+X*yLX9R!=2lZ#E*tWsN)abjMMi!-|Bfy z8GWl~a@O!P$F-}jUen6DW!b(~5}I4LG{e$zXNp?Qu87pSbzQqc*Asc7Q6)lu`Ofgg zX0*3yr?y5(6Rm|L7D!8bao2DS;UZcuX*I~31)&+yA{fZIMd;E~Y|4Mj_mE`~+Isjs z!^9BL*SQe)wo5@8zu!%?<6hlI@fuM_i@pQ=sTMxviv=J2>>2=ca;#zA;AGQ?E~Q-0 zErXM}4T0c^isNc&L&!em3e$!mmy9mqVqZyIEp3Qsq=l7aj_ZoXxvA7fS`XF$5?7@3 zzlU3--iaZ0%zJ>Ss}Gg$A{Wk_MHDxx_9Y-#gdQZa>so{=x(8u4q$Bht+`%X4#s;Xm z??k#{`|1H>cSEwKZzIs&1o#ywrEfE+zAb>Y9s3?3sr6a0uG8KM>4xYH4w{JeZDX!2 z(Y9|F-QeKuo9*ooQ6ehSlCnfJ6e5c~JJmkSb{Fj#DV`ot!fJ4B=Lb^hRDZfZa~KTj zWdeT=m%TTLFa(NXetL_(Ygko}Ee6^l!@c)hkq&|8rPzD&Tp@@1Dew*k+&g00CGgzf zN_lLfN}bGnp!5?)3ln-U&=Eo`UA!K7DX^X|)?tcOrum5|DBB}3`hmp9>9+a+9fe7Z zUZScRqkRhFI*H$uXh?ig;*X@wbM!CR*b@IHCBLITD_t~5+fkfvtBk(@#^@`NA}mh> z<8(8!fVf{(i)t6uB9oCgvimJ?v&7d`reBaYSBQHZk=QBi55pU`V2N|(71XSqE~vwj z-b62}b12Fm)jIGuN`odewtth}jeHRn&q(eG>Q$daEjRbD?&&RWAPUcdLf_*8Qv;~d zyGkd$fodgyG1?03qTRstl#zH?;;_Vm#78Bbm#70bk|F6ii4BRb0=LoY)U9gt1l>|U z4SZ4EOFyMW^$7i%zCg!8e=9OV-=Hd;q<3f(zjx?%q)4yOUFA6ao&FKINYBxFRYzaW zEk$eSS>OhG9=M%e1@_WS;9mMAuwUX)iCHOsgl<7zl#+`Q%k)=Bu2Q#>B9D5MG({JK zb%Vl$?E>n;b!xU*+Am3Ud4B~T%#echHoNW1;46L_tOYj&%m+2@2|iYeiGhHWkPYAUm~b=j!aUERO0Iw!ocYd9;F$lEbY z+2gD*^#w_Jt9?(nC~?_et;pI=!!@e2_f^##-D)iN32VC(Dau?p@`P0pE|tURj?k}ym2rZ_<8pE{r-bQ1 zUcibA$=N`Xoz-2v>_e9-`?j>O3?{hOm>tmQ)g;3jpe9wz_I#u4EhQB!dW5TL?bf$C##i2sh zMA`YNV6hwz25QWUmGb87j@S!LZ(884$%b6s^4$j6&P;x;j+yc$U9d!xlbgz)693%t z!TFz@c*;MjcfXf~S#-o`BGMTiWJ6ZjF0DYPRso}XOWWA=rQ)x$V)45l*3HQv3X%o(0z>J8otySbOPq|v0c z+?1PVYHaGX13ABsGwk~~Z=NmYit`WU|8V=z%h_i>GqqvM!`EXxr0kLDa~}4vX(Oi< z{dxtD=rs1GtG?|_hih=UwGt~CyL1KC*nn4vQ%HO37@ryaH3vZnHfJSIN#n!&UXCm@cAL4 zW6d)F_+ya);1o_EGr&BZ1y#V8);RbA@I>&{ML&+dcPBW7a0G6_{c`~$Pb0j3TU!o{ z0Ec0+y|+W(TzFX?V+Lov^wPy2ehJufm3(PyNx#dPeORm%RS=)Qa(JGT z@G*-1c&9_g6>z8_Gq2JtJYx@8CDU-K)$lujd@_U$lJ>w$tDj(|D)3u_Ul(W8W;KaU z%e>EoF?gmpa@$qfcyeqdWZpm}{!>4W_pvoC_@6=L=*JfE|A9V175Fy^Lo_P@ literal 0 HcmV?d00001 diff --git a/Vocalization/Vocalization/bin/Debug/Vocalization.pdb b/Vocalization/Vocalization/bin/Debug/Vocalization.pdb new file mode 100644 index 0000000000000000000000000000000000000000..13677e06b9a33733a71680dcb8b4c3e8a859cd02 GIT binary patch literal 11776 zcmeHNT})g>6rQ^vzulIlKq-y5(xNT2yI^Udg#N%TZLqGE0FAAyvfaIumF+I>UFc6t zyogZ}qp3d+_Q8inAB;_W(P&a_!h@-)FGg!jOzKM?G&M$2V`3i+>-XKc7cULLG$C4+ zd+52}%sDe>X3or=duFzwcr=~TQbQSUz#nLA^oIKOds}@?P41GKV4ncFjDKPslFu;@ zs*>P5bHD@BS%+4#2ikhMB>fL7wtb){$?R2eo`|TpT+DR`H4=nWl z^P_0r|C#4-ZpURZM5mjJc)*$eMVzw&RJV@x?!8=i)pNE_Oh5Ln>--np2hZL3>08g) zy)s|=&Pzu5zJ(A$?8i>b*> zIH+nPnbc^wFB3_})RW=Esc0k-KNHEsQ_1<6Kq8`P&AzB6M6^9TCJn{BnrSFz8q!Qd z<90*yGSN9hj6!RBFF#KsI+bvaX; z!L(g|^vVxmQ_q>CP6a!3cX)trm`^l#*qaV>0$XfdgUC1s8mjJOCViUs|9KwP%ZJb^ zOMQvh zIITuv@#Jw|e?%M6&=0mJx06sRMos4-EHY_F$`41-Hu@~>*k!(unjFJk#r0bt9uoQa zSN8sL`J*G>_k3Po?E37&$Ai>`L=ZYTR*sq1WL)n>1{R1trtfqLL6Z`UCqxDGkKwxm zkrQh7ICfO+>4DK$B%}7nqa)In`{+j$W?id1eXK*?1o;@`ou-{y;q}lS*qAdUg*K{2 zM%479Xu+79x1rpMdIzC6{JgkPD^T@zo@*6)xHf=LSgtTn}j*KbIL zs1QPjIZ+8*3&d|w`n^Ed)VbHJ2W|&$02X5+^c)PY-p6Tof27l1yX92Zg`H*RS?VjnnW59{(~D77xP<5h zay?+(8OSsl@7-J;$t5PNJT63#wH9U0dETua;J(iN9Q&O^%h&_uqTYxj@-YTQ$N;ZO zY_Z9jb~cfk`OTAM_u(Z~#KHlMRacfV>oS0H=&tmD_03D z=l)XRer=U_Pi4G22<`wg4(tb8#Q*!n_!klFv;la?Ux)0!4_O*wiFgrl1!>CIH)Ps+ z+OLy*@&-u+x_7ni=<04`nQa$+H?5eU#j0dO>L{PI$*iOcCl$9*S(*FoiuapEW`8(# zmL>AsVMQNHbq!|St(je5Ql{+Gy zX}#cYz59v?9I+*9y&0sHrgdpA>?g_)-JTT9SoDQDJt?4O6np08?W}L|V bgzc;W^LtYcHUbQwL;tS_c&>A3<$B<6L*n|I literal 0 HcmV?d00001 diff --git a/Vocalization/Vocalization/manifest.json b/Vocalization/Vocalization/manifest.json new file mode 100644 index 00000000..d4cef718 --- /dev/null +++ b/Vocalization/Vocalization/manifest.json @@ -0,0 +1,10 @@ +{ + "Name": "Vocalization", + "Author": "Alpha_Omegasis, DonDemitri, Various Voice Actors/Actresses", + "Version": "0.0.1", + "Description": "A mod that brings voice acting to Stardew Valley.", + "UniqueID": "Omegasis.Vocalization", + "EntryDll": "Vocalization.dll", + "MinimumApiVersion": "2.0", + "UpdateKeys": [] +} diff --git a/Vocalization/Vocalization/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Vocalization/Vocalization/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000000000000000000000000000000000000..1faae21001217ac760d6ac18e9654dc59641e300 GIT binary patch literal 7920 zcmeHMTXWM!6t;5_aex+6${i|N+5$DI9mh#vhKJOSAp@Zq+XQA%#;m2avqaLG-Blcu z$y29~{SEyEo&Lo399h2PVql0h!-JK{vAmb>T=wkxoU^fbEEf9@9{j}T%mfg7jahOHEZv-Mnkv7X7;xira=X=J%Hgwt<6b8O_d>M1IC^Q9ooCKX1Bh*huYD|rPb zUm=deThv~blDajgy|SyQhf>M2Fgnk@I%^b}LoZsyvzbj4?T*A&d9Cg{PEin-wz$~t zc2!6X`Ys&kD{{vMeQ#o8g@^`Ky=i5?CaHQ3Ao4bAcwEo|trIZCswWl5*O#sXeDA}9 zI&ht#m)P+TH;%Lq&e9#wQ>sH^7MP%x;(}3mu4yYG%9IFeYn`Yqd9HD&;dE2*I#>v` zIxlF0NhR9-2?6rqZz~#az)Gqm+VlEA*97gI`NnZ9PEzvp^)B~uZ;4Xl^1*ES;w>2<}Hla;w zS}ZmRbRr&)Yw!;=Hu3j#xh)lS!98JpErkweJf}!dXjuv7HB!1OEiN2Z>+iAoPu^mSizH{|7BUaA^EAEmU^De0IlfR)qp-u~XwCYC z!^Puc7mdP;db=qK@Gsn_M!bQ>4jP3IjU9AUKb)I!jDr)CKxPwD_&SXQ!hu-g6cG5B zL6Sf+i{vzrS?vtan06LOVXqWMP7livNVkZfW-r(^jpr+sUJRMqnKu@UOsX4#hT-PQ z?!NXFAic{!G+#)FKTTH9F%qYqG7D60E8aBA5Et3BWo~ebIP5*aXyo7*UV96pYkmXg zK=fIG2&qIRcXoQ=a6cR}EMjfZ#Mh|BIUv^$3fhhOI|6G-7;ynd=sjKZKo#vg0)(T! zf%hp_GDo`rZ?n*vHnQn#=0W0H_#T^0qLuMqyNJYSG0(NNOYlBr*p8!J4&LZ4P2xfz zhKAAq)03ISB_69oplrOA+|#ZC;M&Omo5b2C4Jr*QNIbM_0LcInqRR#(8G4X&=y!IP z7VerogX`g%LtH-K9X)Fv^b@mV(EdOpU*0038CdB$u-gN6FPUfa)&QFEoGO!qDU$hk zIbY4r4M4o|h|%YVi&G8b&1!XNe$J{d)o8}1xpXd<9X2fx;06frXZ)lR7>^+bKt(@C z44fOtaua0vYXq`D*15$j`PuS>^8=Z_8;yNl5lelpJUBOyMF&|(B)-|rUII3^fX$O3 zY|4rf*MvNZxR9(%(+X+}-SbR`49THw6MWa=c4tw)2edzMQ9pVZhKFLc15#b%w!B}U zJJjJ#7Z1-MStAa%n`P!U9a`qTXRi?tHn1>j%nMJ0t~~_zWam&X#}%Cg`UyDgM9HZ@6fuyLsp=Pdf+hJmYApla z_;YjzI8~$65}DiuCR9Ra617^$=o$0g1>91=tvE!j zPdk2gD^TS^tSJot#!1UKX&GsGZqzw{5JXp@Eb7YXs$}o!Om(MIr-z<@r+Vl0(X!>Z zCW$u`L(8X8`2DCCf5a7<*PAmliTiNsb)O_Azj$Y(89-hPIaf~>Q6w?94tV?uFH=Rh zZ;4}`9VFj_!o)H0KGK@ROdOviX5%QYmH~2kFMsR>(7rYYz32CyFi&C0AMXNIVe{;3 zS!lnyS2_N6qrI=qL;q+J{2U;i-7Aq6riXa{v9B#a6GqJ+4ReR*{QU?viK#r+GPFe? w(X5)b1kjt2I7E?H#D?5B8I%fu&8ff(&_(c>{AYZqeeBwGe5m!V!!}R<4gt;6B$kwv^b1V*7pL@OFqaSUdn4g!xHRVOUEvS-+=ZU##Hc$r9MRfmj?^Mi ze>l`Lr?Wf9o$bzUpP5?`h*dv0vppR>DY&ub#@i^UjK;KJLCh1=FiI))2Q=NQ)3j<4>_s4;d1J5(QTG5(v@GT+ z323<2N*yo`G`|{}3IXciu*cWWm^!@*!U1hOaM z)23v??gq5VqM=&M3wd(;0s$wMK);hpZE7LxfSy(wq~$e9D_<+sB3j6+W%i0jwIDE| zMT^8?FX{(5(WZnW6N}tK`xaJvlRLS)xO0l)MK>xK&^M&Oh9>`!8|veUdE96Uv{>J% zF)f6YNA+#1u<>-Sw^k3f=KCYJrjvjt%4w(OxQ~JhO>N5=*VS|Ff_<5V$9+T;F2F_p zKA8ov3ZE8=74^}g6Jz0We#Y~^#Z_m1@sO}DdO;s;vK9!J2Qj|C7SiA{je1dmKUfYI z*lF*5=|>KdVS$soI4Lq8#Hafq_+c;S9Rd4Yi#km&Iwf5 zF1*mw+1t5GPPdMowCt|kQgBDluRg@IQdqSSy^3}|R!j6btgoa8Jkc2B++XU~eChli zITY@J={~Jo3&FL^3l)O&sMiyVX%W3jb6TV#6!QnQc%7_XDX${nYDo@ll?7D(>G{FLeK&6~>OkRnCi_Gx=4!`hbZZIm|@!cJ>JLYs#vcP9}z_CD658a*Y+XE|QgQMi2=>W#r5e!|a6Zk0z z$e(`%lHmv>*Q-T=Vj(46*J;Ms&vpz@mCoQOUBEam1Vi$wrr1JMiu;~Wfz!p^YLgZIjJR(#NFDPB5;fTIjWb14|-Ffe2VWjOdLEx`Qw zC3=d^kbKCDQUJzT2!`ZUO~HELpP$eFEjgE7GPa7G5m+uG(Od?`ISPzaI9Naa^9$z` zK`zi7kecR+7Q`a(OquSFR<*<7BW0^H zPZXN@y;?LHj`WIn%lt8T+X1gv@;@?^K`({ED2hV}H+sbNkGi(WmyM(YSGV9Pu$i zDF@@61m>^tw;I(=9Qqrn6L}{Ust6!4N(4+QKCmb0We0y9zw5Z_I|Ofol9U*l3N(|! zWZ?5ZPAT}zf1>RP4v0+;7QhVflU(5DPZbJZ&j43s8@nXQW-WlAi>HsFwQH%^w8hvRF`81XtIE_-@V6G_I2~3~{)XmiG&9g#111C8MQ~!+7J>!poC&5z4rif08%-{}X$r;E zRBUHBnd3SKR#*Ox=2|q@fyuyT3!GBBqCE*{u7}l?xoB=cb0e4xY%9Qt;S;icgyzAF z^B-V}t52`Qw@TFq?u0LCHQzkJCX}1Nq~deAp070cTZ@BuGpwfEf@VIN1!xwcS%l_R zG`E4tz(;?a7(VdodA%KGoQuJDP4gOm>vW3py9BnCdI^}5f%c!Ux^f4arD*ZW~*Vw`4AXWKJg9KDLP&c!*)^!f;pMeTm!2sYtgJj^9Y*tU@``Q z!HEq4qi60>m~lP^CNJ?lS#_3v?>$FN#pli`i|h=-+!)W;BzTn>z$jyq=&+hpx+0tyhDL<=QE(xMI}_~ z)rDuP1)nZ#0YP6UR64OLC}V`k{CpW}I8Wj4`=3R3DF%x&*!en@AlAMlTiz z{QdpKqHKfJlo!#wgl0RK417w(DRnejJXh<$|5_yeGOVV&g635)8TeF)Q)&^~lSub9 zSY3G?%^P4c#(}{pwHPg?Tg$?D6INArpm__;+h8)T0E1I%30h1XDXK+b?1a^nf1`N^ z&AVvc1C!wegA>!h=mfnFGtLjd43=N@RfCh`?&$7vVV7)ohwPl}E+=01`4AFKEd`_J zq(1zuMNU3~)s&CXe1c{dn%!tVMY9LZUNrmAe1_(8G+&_EkLCcHFVTDjCSyDpoR}Ys zeku4GW@=mt{sWTp8#M7M6Po~zUR>Xz`W=`7@#3m}iCJA@9iXSq33UPE)x?94VCqCL zdQoM--&z#aAy`fM9?fAi|3&iynj>g_L~|6)PiT&zIgaLMG{2z1jVlaIG8%kr$_T&$ zoLC5qUS1B6Ym^uET&uctI?5sJH=eZ8Ata?3>*;E-=o06up4EHDr5DG$&*gT!@ ztc16?e6~{B+1jnuGV%E}A!|KObbsQdD3yT02IzCSUOdUpR5;eD@dr#*Ndxa{IG#=g zW`^NoSof@~tlaKd23_*9^d1LUqDx*@RhK-FX_vgLc-q*1K~W)9$KjuU`K5M625Tp! zPR5Rj#l=Z!jv0XQ_mCJS2uqSw$03+IsWOwdfS%(ZqIcXV5`G=Mg%aCPQjzVK6u;E-WgTSQLzY6|N783XYNiGc3mC z23&54as`)9=W-*ICv*7>E}scAj;SEmIJ@!A?kpbSnGlY^A3xOEoW*({52ZL?o9xF{ zCx}Q&g9$@%!al<|v1#Dowa|GMB%Y!-BapMD35Y{a$=M>hoGNESnrv?zZ^sO9_QW07 z4QSo?6g=b|!jjl-m_bl8^+i{KMf7k|GBE%qHXV#!+RZ`HOS=Vb;%{7T$>mlk<5fV9 zZq4O$QJ%r&^SImwo&_=xxVNou!)4-464pdUr1RetRHUT7B2Va@&J_Qb2*R8 z15sYU9MSghJ9oA#1E=t1~@C@4&)e)@ZI2vBfJ8f z>La`a0uqlfwgTx#xENB_kMI?^i95LL;c^MeOS$ajvJd5daarSXDav$rRim*=DW2$vUdc_GT{xx9$Wx1#(g$oc`f4ZH@4t!t`sJ1o!- z!D5)XfnG-R4)9sk9pJO#9pHKWn*TNH0G~xVz-J|HItx0$Lz2(|-e94Adsu=w(C7j1 zNe9474?s!$0Mv&Zt84==jyoX@ENYcK&ZWDA^aPid327sjmJ116{PauC3L$L*iB~I9 zV7{u3234Ww!O_e6Ziqdz`qnC4$d#3_P`L+;UhwzA%q&{)Cv|78E%x|ybRX;qyNnk2 zNU6X_&;l=v7kG2XvdUfnn@IdNQ1zmF2vXLGe;7CMBA3^2c`eE>ad{n=A3=FLm)CRo zQIuci@?%`yfbuI`ew@ospp0#J`krj$@{=gP#^tBDyb0ykx%@PjH>3Opm!IMCvnapG z1CuoS^Eccc@x-mUwH?2 zqzxtUJc-0}DT%G)Bxb^ns|;HS6G{9CR6VaBLCQLbALAxI=JF?8-i7ifT;9#)Pf^~* z9i}G$R@8j}kC}V@7zRAzI`~}L`#Hh>rxqJZSy0p zQ~i8<5CRezI|QnJWSx+*&R8mL;(IQqaalq6Fqc&>*F_myS@lHl7s7fX^-#ukS6x1h z%Py3UaJfF0Gf>91Sv|S|mm8vdl*^}cxe?0Peyc~H!R0ei#ui;&K8wqZQ9jP)CR{!n z<)69Sl*`Rf{)Nkb;qo~s!@sJuGr8OxWya+eTyBYSGM8I%xi!jlxO^^`&qFx{WR4!a zIlIze0Zz$GjfcdADj95w3zXl}u7nAk<%Qp`;t!bfHE4Jo4+efHjg6bIO+*( zny{1YCTw^C5O2b61IIay|EN+`+JcKUJ5_0iJnke{74|l9RQ49V#O#P)Vqi_U`eXn! z;u3>c;^b&xqr_iVP!8N&sT75JzP%Q<}C*G&MA&>2#YW zYtz&fh%tK#Rh4dntnNtGRss`yo;WIdj*_)SBCC-hS!dW}S(~g&fEYD?oq|y#RHc`I zsW-y3iSWaoB96+Qq%duiU^>$XCU!QcSfPV-^~n+c%Q9gB-Wr*sIas@j#Rq@k=vk7a%Xd8&MJxTy$>xrYXM<{LUB-&a4G@^=yEaBv6X`{sXv1S!(7!YHAQyebH z%15$R6PVb8#8KG;l&n<}S*;AoYHgEcZL&rIF~9ltR#ip|#Ks_ED+yKXZsMqH1x0MR zgxI-;h@EF6W^Kf-0Ai$imq)-fcr%qg+-Sk1fZkknjeu$;xd zlqN_hbuvV$vyGCqQMw(7;SY9r+f$Xrf~F-%lSTkyKH{j%OKB>RXzF4}(}gxo)~4w$ zAV$>2mkE%TBS_;2JFJK}DjQ2d8Y6+!)exj^Hb~Y6={_KaUzTu$Fjcu<(6kC^8bJVJ zg~U-=0i`KlqN%$PO)mWT8@|*_PHF{j^=3eo4IJ#5iGF@TuN)l21v?^cn>B91^35Z+ z`tE2~cgf)yWpy^({l@Ie%eT1(UG~O%^Rj2L^68$E(IYmiEBfBNctNW}B@caYd&O6a zI}SxTsINUG=XY zuAJGp&YO?5*?y>5!}8FJ@y>_ z`#tY`-=O|L=e^&}x@(K~$$Cph&)%~wn3=zt?fN12p+T27KKAUof4}6vVE?U)*Zgo> z)}Vf2wP4rwvpz1oa^ILwa#v`+GsYfk^Kt7V_pZ5}Ujruysf4Z-=jS>+KZlT0k_{$~$_CN%bD(s7_5)}V-?R6(QL^^c{&67Y1m1=| zArRY$i1j5@u|C96SuRDaw}jXLL&WlI#H@|jGe8V)iHZMe&J9DY1f#0*tiWmuV%3w7 z#Ci}%WfxJbx=UCMG{kCQWmhYXkKz5F^@V z-V-3bk07-s?66kEQCUk0QVR*BVTK?Lw?VQtNV|ZT)+PfM=;H}R3be>%Ka7{ID!T<| zpCV_?2wJQuaa49T<*bRsS-v4>1vY2a=Ijd~rllEYd7<)(n7c4s;Vn~@{erRsNLeES z7CW6dDr-n7YamfpXhfN7B&eD2-)ycBEr4vVGb?N!3O6TVl08L`spvOkZ+IN8?K#cq*=tn`*QKTt_0K^=` zQCS^IQ?f);i6Kp1nGbGDzlVxqP&H`dceY~+isR^RAkI=*R z5=UiwC`zA7C{3U!i67idv{AA)N|`{6^t00D0;U!S(?^6K_91ap_5p?IeF>(3AxuFV zCTqjg28d}I|9wP$1$<#KsJWr>*zXDWr|BOwfg#caUhNRCorEa%HgRBxG>X>_39pbL zUSS(AYvYv-#E7T8905`X1nE`64ts?-Fgh9qX}bhcxgkiCY>=!CQdb~GZiMP4XzGqM zZ6yG)=ZOO&qEVW*NHj$ZX^Pr3S(~OyfEZF6?f;7bj$=VHKT7^BXwiv?3lkSUE|#C*hoq2nl1B@$B$4VhYG zGi7b2?gC=WJHIXyWGzRs#u1oU5piHFIZD|G#+swFNSF%wMfrU z0t_2M9F+~G^bC^dS!UB?ZF(L9HkwxdfM`_6@+olTRqY5D+&5w8$F6d-+s zAhjUuu;#>3StbSP90{aH3_)6NgJf-x_5d+PuMqYMruHFIO$bJ;F>zFO7G>&8iK#~o znR?7-%GykQ3B-_E(^mqeuMwpNgdUbb9F^6lD7hq*Hc*sA&)~;xl&p=?As|NF=e`#p z9Y&B;!VXi2qp~y#QmO>f6NVsdv_Y~qNIwBFa`pR|py@c$luQ6(j5sPwqBQ;T6CHKz zNkf{RvT3q5O?4d79nJx6)c|%WFvpGpB8TGx)3G0kqp~C5i2>|>kWkuWh|<$GO4dfH zE)Zk#+n02KRXxP&AR&o;M;w)XOR@S!!fLZ2R?pa2SsSZ{K#cS|;?o68jS!{-gdet_ zI4b*s!t}WW)3b&!ZLwjpHcV#&G30@+sX(b2qVy@DhwUbg%63tdK9Nv*&Jd;NZIrBy zQcEC4JkYfgAhkx2-Y4v^_lTpicPU8kNFZ%B1nC7EBx{3oJ`f{6(6tvdU4S(0AONv9 ziKDVNC{3?RG;K4a=|!6+Ytz&bh!J1;stkF8ey^%@5lTrTT2|3t)VbIEWz}; zAxv-BFj*U>0w5-F6sST$)CeSM6@iG|PaKuqM~S*uBI->;qITFsS(~V_gs1||TM_Zc zpa*@CAZi>EwVXi2mJvr~cTuA5l!$uEh$!|BsQh<^@Cq=gtVvSR+@bJ0!;fs#tc{u% zP$IQ+pI}Tw#+DGQ*ka~_l7Z4zT2Q^v5XJx-2KY?Q2x(nKIeZifm8nu18vd;$== zg*Ym^nbLHVMAI%qns(bXS(~OP5M%ml#QyNJL{*6iyebf{xr8WoJ#kca9mVTf39nBL z@!DhKWo^8!1Y$DHe(c&m;wdlF$8x<&AT}Kln@Ol**APc#GbmzLONi|?L~Ngpn6(j` z1;m*DmT|TqYYvh%jljeziKDWql&mQdS)Un_^|?)!waK~xh)J1R=nue6FbxiNRgb%Q z$Wer#!zK|&W#yEku*A_9h8*p;IkGlK3xF8Wp1u&ADv%Z-ND~M<%ugJZl~It!OCTLE z1nEl~Bx{58Pawv$vR*ZG$Q=T&rHEGvA&Pm3qp~X~Ud0k#Um4={wT+jx@mc}Iqz=_$ z-mp))C0Eppz%rEnYeBmikcfW8X2%qhE z5EfP4|5hVb`Gh1koH!~QMzOk7!s=T?tiH3cvNl$a05Q`0HA zf-y#`8#H$!NbLwatSxb1FenPrc@juR4MF9EeJ)dIdNcED2miM5>m&EkYX^5q~3E1{vn(K$AEkVw#PTwJ%#=0x@mk111j%`+WY;_+G>E z+=bzAV4^?f#*0`UerK=L%HN9h<-^$Za^%|^`Hh}B8?wT@H{SXxC^3e2&iKuqvWqfYqNDW5aSxEO^Jm=(Qs+ZJun&$sY+8&t8RPEkf=`y zL~J*4VCX4I)F%>AjSPu8!zRkwM70EBvF5;V0&n%*Y>vG<4r<4;kV-jQfJ(~zdK zY?`c1)A>M5MnPpXrUl(YJR#3`EeOr;s?uICbpbN9gJ8toBo2&1MVWeCVydwrQ%!89 ztj$zMAVwV$4u##hn%5tI5vT-Aoe`$(gdg@2abN^03ez?Trn3!UYHGt|ZI~_sVoZCd zSN)W=k)w?S9rgrqU{ET` z(FTd5a|}7kv^laiM}vTvGvf8A{EAS_AJp8r9&Z`E4OErEu(0ZJZwP|5jKulWp z08bg4(w!1YtqoB+*G9?OD0zVxlV4)_U{Te*PD8Ag z5R%wp;=mwO6sy}Ltj;sS%GDNB{gcKUrWK8B+-cYKtQ{yupEP#mB!qS_3+={3XSYA{ zbhCXa1+2SSXfGZrcA&ReXkJ3-K(o-{JXGvJzFFw#gwQc&p&lM8_O-+;)SnPK!7OxA zLTJP!l;PLyT+r>3xhfM@nr5<+>zahnnP#Ea^UyUH7hj#RQ|->?nuXrNLq%E4Hw#^y z5W2)HbXh{^aM9Y%~jfmWPTG*kTs?5)T!rZZ`{klZT2! zu){3$Jsv7{;C-{u-8@w6z^7)R`x8PBn1z1FL&XjpGz3WQ_t_&V3N}z#Rs*QQ5$W{}x(B=uDEzCmOCWN*#3(ZLg?O+z#Eg`hK zS!l0>(B5XDc?qEd%|eGKgyx%tj!p<2V;1U32rV%S_481{zy!0*oawZB@Y#; zPBRO=hKGt&XPSjxpAb6NEcBLy(D`Pei+QNn*Cp}LgtK574;5#@a!hN1X1OF0z3YH1kifZ~%wQ$R5cP3NH^TlLIBPv@cH5HvCiZJH3;%q+B3 zLTGEV(Dn(T7np^1;-Mm2oy|gf@KBMho@Swa5<>f$g$_;#9by(*m=HR`EVPJ+ifoND z3-$3(kuA+EG>{M)Gz*RKP;tgqn1x=I5IWr~baq1M9FtHsFTMb;OgMq7Pp*YL4UykP zCTY0t;GrTDOHD%A%J>4jbkWK6AWuVVZna4ouJs9_kD7%(#Y4BHL)H#?6u8JUwh(>%Nf2d#!#H-9ms{R{Pa*!H2CVzC{>2dM^Ue9Y=bU@)ojZ3tcHwIjA)+X*yLX9R!=2lZ#E*tWsN)abjMMi!-|Bfy z8GWl~a@O!P$F-}jUen6DW!b(~5}I4LG{e$zXNp?Qu87pSbzQqc*Asc7Q6)lu`Ofgg zX0*3yr?y5(6Rm|L7D!8bao2DS;UZcuX*I~31)&+yA{fZIMd;E~Y|4Mj_mE`~+Isjs z!^9BL*SQe)wo5@8zu!%?<6hlI@fuM_i@pQ=sTMxviv=J2>>2=ca;#zA;AGQ?E~Q-0 zErXM}4T0c^isNc&L&!em3e$!mmy9mqVqZyIEp3Qsq=l7aj_ZoXxvA7fS`XF$5?7@3 zzlU3--iaZ0%zJ>Ss}Gg$A{Wk_MHDxx_9Y-#gdQZa>so{=x(8u4q$Bht+`%X4#s;Xm z??k#{`|1H>cSEwKZzIs&1o#ywrEfE+zAb>Y9s3?3sr6a0uG8KM>4xYH4w{JeZDX!2 z(Y9|F-QeKuo9*ooQ6ehSlCnfJ6e5c~JJmkSb{Fj#DV`ot!fJ4B=Lb^hRDZfZa~KTj zWdeT=m%TTLFa(NXetL_(Ygko}Ee6^l!@c)hkq&|8rPzD&Tp@@1Dew*k+&g00CGgzf zN_lLfN}bGnp!5?)3ln-U&=Eo`UA!K7DX^X|)?tcOrum5|DBB}3`hmp9>9+a+9fe7Z zUZScRqkRhFI*H$uXh?ig;*X@wbM!CR*b@IHCBLITD_t~5+fkfvtBk(@#^@`NA}mh> z<8(8!fVf{(i)t6uB9oCgvimJ?v&7d`reBaYSBQHZk=QBi55pU`V2N|(71XSqE~vwj z-b62}b12Fm)jIGuN`odewtth}jeHRn&q(eG>Q$daEjRbD?&&RWAPUcdLf_*8Qv;~d zyGkd$fodgyG1?03qTRstl#zH?;;_Vm#78Bbm#70bk|F6ii4BRb0=LoY)U9gt1l>|U z4SZ4EOFyMW^$7i%zCg!8e=9OV-=Hd;q<3f(zjx?%q)4yOUFA6ao&FKINYBxFRYzaW zEk$eSS>OhG9=M%e1@_WS;9mMAuwUX)iCHOsgl<7zl#+`Q%k)=Bu2Q#>B9D5MG({JK zb%Vl$?E>n;b!xU*+Am3Ud4B~T%#echHoNW1;46L_tOYj&%m+2@2|iYeiGhHWkPYAUm~b=j!aUERO0Iw!ocYd9;F$lEbY z+2gD*^#w_Jt9?(nC~?_et;pI=!!@e2_f^##-D)iN32VC(Dau?p@`P0pE|tURj?k}ym2rZ_<8pE{r-bQ1 zUcibA$=N`Xoz-2v>_e9-`?j>O3?{hOm>tmQ)g;3jpe9wz_I#u4EhQB!dW5TL?bf$C##i2sh zMA`YNV6hwz25QWUmGb87j@S!LZ(884$%b6s^4$j6&P;x;j+yc$U9d!xlbgz)693%t z!TFz@c*;MjcfXf~S#-o`BGMTiWJ6ZjF0DYPRso}XOWWA=rQ)x$V)45l*3HQv3X%o(0z>J8otySbOPq|v0c z+?1PVYHaGX13ABsGwk~~Z=NmYit`WU|8V=z%h_i>GqqvM!`EXxr0kLDa~}4vX(Oi< z{dxtD=rs1GtG?|_hih=UwGt~CyL1KC*nn4vQ%HO37@ryaH3vZnHfJSIN#n!&UXCm@cAL4 zW6d)F_+ya);1o_EGr&BZ1y#V8);RbA@I>&{ML&+dcPBW7a0G6_{c`~$Pb0j3TU!o{ z0Ec0+y|+W(TzFX?V+Lov^wPy2ehJufm3(PyNx#dPeORm%RS=)Qa(JGT z@G*-1c&9_g6>z8_Gq2JtJYx@8CDU-K)$lujd@_U$lJ>w$tDj(|D)3u_Ul(W8W;KaU z%e>EoF?gmpa@$qfcyeqdWZpm}{!>4W_pvoC_@6=L=*JfE|A9V175Fy^Lo_P@ literal 0 HcmV?d00001 diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.pdb b/Vocalization/Vocalization/obj/Debug/Vocalization.pdb new file mode 100644 index 0000000000000000000000000000000000000000..13677e06b9a33733a71680dcb8b4c3e8a859cd02 GIT binary patch literal 11776 zcmeHNT})g>6rQ^vzulIlKq-y5(xNT2yI^Udg#N%TZLqGE0FAAyvfaIumF+I>UFc6t zyogZ}qp3d+_Q8inAB;_W(P&a_!h@-)FGg!jOzKM?G&M$2V`3i+>-XKc7cULLG$C4+ zd+52}%sDe>X3or=duFzwcr=~TQbQSUz#nLA^oIKOds}@?P41GKV4ncFjDKPslFu;@ zs*>P5bHD@BS%+4#2ikhMB>fL7wtb){$?R2eo`|TpT+DR`H4=nWl z^P_0r|C#4-ZpURZM5mjJc)*$eMVzw&RJV@x?!8=i)pNE_Oh5Ln>--np2hZL3>08g) zy)s|=&Pzu5zJ(A$?8i>b*> zIH+nPnbc^wFB3_})RW=Esc0k-KNHEsQ_1<6Kq8`P&AzB6M6^9TCJn{BnrSFz8q!Qd z<90*yGSN9hj6!RBFF#KsI+bvaX; z!L(g|^vVxmQ_q>CP6a!3cX)trm`^l#*qaV>0$XfdgUC1s8mjJOCViUs|9KwP%ZJb^ zOMQvh zIITuv@#Jw|e?%M6&=0mJx06sRMos4-EHY_F$`41-Hu@~>*k!(unjFJk#r0bt9uoQa zSN8sL`J*G>_k3Po?E37&$Ai>`L=ZYTR*sq1WL)n>1{R1trtfqLL6Z`UCqxDGkKwxm zkrQh7ICfO+>4DK$B%}7nqa)In`{+j$W?id1eXK*?1o;@`ou-{y;q}lS*qAdUg*K{2 zM%479Xu+79x1rpMdIzC6{JgkPD^T@zo@*6)xHf=LSgtTn}j*KbIL zs1QPjIZ+8*3&d|w`n^Ed)VbHJ2W|&$02X5+^c)PY-p6Tof27l1yX92Zg`H*RS?VjnnW59{(~D77xP<5h zay?+(8OSsl@7-J;$t5PNJT63#wH9U0dETua;J(iN9Q&O^%h&_uqTYxj@-YTQ$N;ZO zY_Z9jb~cfk`OTAM_u(Z~#KHlMRacfV>oS0H=&tmD_03D z=l)XRer=U_Pi4G22<`wg4(tb8#Q*!n_!klFv;la?Ux)0!4_O*wiFgrl1!>CIH)Ps+ z+OLy*@&-u+x_7ni=<04`nQa$+H?5eU#j0dO>L{PI$*iOcCl$9*S(*FoiuapEW`8(# zmL>AsVMQNHbq!|St(je5Ql{+Gy zX}#cYz59v?9I+*9y&0sHrgdpA>?g_)-JTT9SoDQDJt?4O6np08?W}L|V bgzc;W^LtYcHUbQwL;tS_c&>A3<$B<6L*n|I literal 0 HcmV?d00001 diff --git a/Vocalization/Vocalization/packages.config b/Vocalization/Vocalization/packages.config new file mode 100644 index 00000000..96d0f73b --- /dev/null +++ b/Vocalization/Vocalization/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Vocalization/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/Pathoschild.Stardew.ModBuildConfig.2.0.2.nupkg b/Vocalization/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/Pathoschild.Stardew.ModBuildConfig.2.0.2.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..1b4cc5db0b96b50cac07e5e5af22c042ab1d514c GIT binary patch literal 11531 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 MRrP(o^76BRNFMERJ5 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 literal 0 HcmV?d00001 diff --git a/Vocalization/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/Pathoschild.Stardew.ModBuildConfig.targets b/Vocalization/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/Pathoschild.Stardew.ModBuildConfig.targets new file mode 100644 index 00000000..b49d646d --- /dev/null +++ b/Vocalization/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/Pathoschild.Stardew.ModBuildConfig.targets @@ -0,0 +1,144 @@ + + + + + + + + + + + + + $(DeployModFolderName) + $(DeployModZipTo) + + + $(MSBuildProjectName) + $(TargetDir) + True + True + + + + + + + + $(HOME)/GOG Games/Stardew Valley/game + $(HOME)/.local/share/Steam/steamapps/common/Stardew Valley + + + /Applications/Stardew Valley.app/Contents/MacOS + $(HOME)/Library/Application Support/Steam/steamapps/common/Stardew Valley/Contents/MacOS + + + + + C:\Program Files (x86)\GalaxyClient\Games\Stardew Valley + C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley + $([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\GOG.com\Games\1453375253', 'PATH', null, RegistryView.Registry32)) + $([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 413150', 'InstallLocation', null, RegistryView.Registry64, RegistryView.Registry32)) + + + + + + + + + + + + false + + + false + + + false + + + false + + + $(GamePath)\Stardew Valley.exe + false + + + $(GamePath)\StardewModdingAPI.exe + false + + + $(GamePath)\xTile.dll + false + False + + + + + + Program + $(GamePath)\StardewModdingAPI.exe + $(GamePath) + + + + + + + $(GamePath)\MonoGame.Framework.dll + false + False + + + $(GamePath)\StardewValley.exe + false + + + $(GamePath)\StardewModdingAPI.exe + false + + + $(GamePath)\xTile.dll + false + + + + + + + + + + + + + + + + + + + + + + diff --git a/Vocalization/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/StardewModdingAPI.ModBuildConfig.dll b/Vocalization/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/StardewModdingAPI.ModBuildConfig.dll new file mode 100644 index 0000000000000000000000000000000000000000..e8e4c16849c86c5aeec79ea2d99a46d032bef259 GIT binary patch literal 16384 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 literal 0 HcmV?d00001 From 4e10d7efc6f155630a9d0276b8a04af80c057c46 Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Sun, 8 Jul 2018 01:40:46 -0700 Subject: [PATCH 013/110] Updated vocalization with notes on what to do next. --- Vocalization/Vocalization/Vocalization.cs | 90 ++++++++++++++++-- Vocalization/Vocalization/Vocalization.csproj | 7 +- .../bin/Debug/SimpleSoundManager.dll | Bin 0 -> 10240 bytes .../bin/Debug/SimpleSoundManager.pdb | Bin 0 -> 32256 bytes .../bin/Debug/Vocalization 0.0.1.zip | Bin 94387 -> 109159 bytes .../Vocalization/bin/Debug/Vocalization.dll | Bin 5120 -> 8704 bytes .../Vocalization/bin/Debug/Vocalization.pdb | Bin 11776 -> 17920 bytes Vocalization/Vocalization/manifest.json | 3 +- .../Vocalization.csproj.FileListAbsolute.txt | 2 + .../Vocalization/obj/Debug/Vocalization.dll | Bin 5120 -> 8704 bytes .../Vocalization/obj/Debug/Vocalization.pdb | Bin 11776 -> 17920 bytes 11 files changed, 93 insertions(+), 9 deletions(-) create mode 100644 Vocalization/Vocalization/bin/Debug/SimpleSoundManager.dll create mode 100644 Vocalization/Vocalization/bin/Debug/SimpleSoundManager.pdb diff --git a/Vocalization/Vocalization/Vocalization.cs b/Vocalization/Vocalization/Vocalization.cs index 52a699ab..841031ac 100644 --- a/Vocalization/Vocalization/Vocalization.cs +++ b/Vocalization/Vocalization/Vocalization.cs @@ -25,11 +25,13 @@ namespace Vocalization /// /// Find way to play said wave files. (Done?) /// - /// Sanitize input to remove variables such as pet names, farm names, farmer name. + /// Sanitize input to remove variables such as pet names, farm names, farmer name. (done?) /// - /// Add in dialogue for npcs into their respective VoiceCue.json files. + /// !!!!!!!Loop through common variables and add them to the dialogue list. /// - /// Add support for different kinds of menus. TV, shops, etc. + /// !!!!!!!Add in dialogue for npcs into their respective VoiceCue.json files. + /// + /// !!!!!!!Add support for different kinds of menus. TV, shops, etc. ///

public class Vocalization : Mod { @@ -117,17 +119,30 @@ namespace Vocalization previousDialogue = currentDialogue; //Update my previously read dialogue so that I only read the new string once when it appears. ModMonitor.Log(currentDialogue); //Print out my dialogue. - //Do logic here to figure out what audio clips to play. //Sanitize input here! - //Load all game dialogue files and then sanitize input for that??? + //Load all game dialogue files and then sanitize input. + + CharacterVoiceCue voice; + DialogueCues.TryGetValue(speakerName,out voice); + currentDialogue=sanitizeDialogue(currentDialogue); //If contains the stuff in the else statement, change things up. + if (voice.dialogueCues.ContainsKey(currentDialogue)) + { + //Not variable messages. Aka messages that don't contain words the user can change such as farm name, farmer name etc. + voice.speak(currentDialogue); + } + else + { + ModMonitor.Log("New unregistered dialogue detected for NPC: "+speakerName+" saying: "+currentDialogue,LogLevel.Alert); + ModMonitor.Log("Make sure to add this to their respective VoiceCue.json file if you wish for this dialogue to have voice acting associated with it!",LogLevel.Alert); + } } } } } /// - /// Runs after loading. + /// Runs after loading and creates necessary mod directories. /// private void initialzeDirectories() { @@ -149,9 +164,13 @@ namespace Vocalization } } + if (!Directory.Exists(contentPath)) Directory.CreateDirectory(contentPath); + if (!Directory.Exists(audioPath)) Directory.CreateDirectory(audioPath); + if (!Directory.Exists(voicePath)) Directory.CreateDirectory(voicePath); + //Create a list of new directories if the corresponding character directory doesn't exist. //Note: A modder could also manually add in their own character directory for voice lines instead of having to add it via code. - foreach(var dir in characterDialoguePaths) + foreach (var dir in characterDialoguePaths) { if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); } @@ -183,6 +202,13 @@ namespace Vocalization if (!File.Exists(voiceCueFile)) { CharacterVoiceCue cue= new CharacterVoiceCue(characterName); + //Loop through all variations of... + //time %time + //adjectives $adj + //nouns %noun + //location %place + //spouse %spouse + //If found in a string of dialogue in a character file. ModHelper.WriteJsonFile(Path.Combine(dir, "VoiceCues.json"), cue); DialogueCues.Add(characterName, cue); } @@ -193,5 +219,55 @@ namespace Vocalization } } } + + + /// + /// Removes a lot of variables that would be hard to voice act from dkialogue strings such as player's name, pet names, farm names, etc. + /// + /// + /// + public string sanitizeDialogue(string dialogue) + { + if (dialogue.Contains(Game1.player.Name)) + { + dialogue = dialogue.Replace(Game1.player.name, ""); //Remove player's name from dialogue. + dialogue = dialogue.Replace(" ", " "); //Remove awkward double space that is left when removing player's name. + } + + if (Game1.player.hasPet()) + { + if (dialogue.Contains(Game1.player.getPetName())) + { + dialogue.Replace(Game1.player.getPetName(), ""); + dialogue = dialogue.Replace(" ", " "); //Remove awkward double space that is left when removing player's pet's name. + } + } + + if (dialogue.Contains(Game1.player.farmName.Value)) + { + dialogue.Replace(Game1.player.farmName.Value, ""); + dialogue = dialogue.Replace(" ", " "); //Remove awkward double space that is left when removing player's farm name. + } + + if (dialogue.Contains(Game1.player.favoriteThing.Value)) + { + dialogue.Replace(Game1.player.favoriteThing.Value, ""); + dialogue = dialogue.Replace(" ", " "); //Remove awkward double space that is left when removing player's favorite thing. + } + + if (dialogue.Contains(Game1.samBandName)) + { + dialogue.Replace(Game1.samBandName, ""); + dialogue = dialogue.Replace(" ", " "); //Remove awkward double space that is left when removing Sam's band name. + } + + if (dialogue.Contains(Game1.elliottBookName)) + { + dialogue.Replace(Game1.elliottBookName, ""); + dialogue = dialogue.Replace(" ", " "); //Remove awkward double space that is left when removing Elliott's book name. + } + + return dialogue; + } } } diff --git a/Vocalization/Vocalization/Vocalization.csproj b/Vocalization/Vocalization/Vocalization.csproj index d46ef317..f60c952f 100644 --- a/Vocalization/Vocalization/Vocalization.csproj +++ b/Vocalization/Vocalization/Vocalization.csproj @@ -35,6 +35,9 @@ ..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Netcode.dll + + ..\..\Stardew_Valley_Mods-Development\GeneralMods\SimpleSoundManager\bin\Debug\SimpleSoundManager.dll + @@ -45,13 +48,15 @@ - + + + diff --git a/Vocalization/Vocalization/bin/Debug/SimpleSoundManager.dll b/Vocalization/Vocalization/bin/Debug/SimpleSoundManager.dll new file mode 100644 index 0000000000000000000000000000000000000000..ab698f9605f5995e5082f8791ebf503f28fe2a28 GIT binary patch literal 10240 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 b^JqfR_fZqDyp+6@vb2=ckq7G}C#in{i?MBZ delta 4075 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 diff --git a/Vocalization/Vocalization/bin/Debug/Vocalization.dll b/Vocalization/Vocalization/bin/Debug/Vocalization.dll index ace3a2b8e54c9d2d4fe188e164f1ca5c8e3aeb36..16995820a705b60459ebdcda29b735bb512e5937 100644 GIT binary patch literal 8704 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 OJ=M8lSohd+o8vzZ;Ry@? diff --git a/Vocalization/Vocalization/bin/Debug/Vocalization.pdb b/Vocalization/Vocalization/bin/Debug/Vocalization.pdb index 13677e06b9a33733a71680dcb8b4c3e8a859cd02..41e17d2ad6dea441bcef6a9fe2c1c435f84ca5bb 100644 GIT binary patch literal 17920 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 OJ=M8lSohd+o8vzZ;Ry@? diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.pdb b/Vocalization/Vocalization/obj/Debug/Vocalization.pdb index 13677e06b9a33733a71680dcb8b4c3e8a859cd02..41e17d2ad6dea441bcef6a9fe2c1c435f84ca5bb 100644 GIT binary patch literal 17920 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 ZW8^$l0Qa&MD7{)DYg Date: Sun, 8 Jul 2018 09:22:21 -0700 Subject: [PATCH 014/110] Started work on translation update and sanitizing input. Translation update will allow for dialogue scraping of dictionaries for different supported languages. Sanitizing input will replace game variables with a generic string so that voice acting can be more flexible and not have to record a million lines. --- .../Framework/CharacterVoiceCue.cs | 6 + .../Framework/ReplacementStrings.cs | 72 ++++++ Vocalization/Vocalization/Vocalization.cs | 215 ++++++++++++++---- ...ocalization.csproj.CoreCompileInputs.cache | 2 +- 4 files changed, 251 insertions(+), 44 deletions(-) create mode 100644 Vocalization/Vocalization/Framework/ReplacementStrings.cs diff --git a/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs b/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs index a5ee8796..a2fd7488 100644 --- a/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs +++ b/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs @@ -15,6 +15,12 @@ namespace Vocalization.Framework /// The name of the NPC. ///
public string name; + + /// + /// The name of the dialogue file to scrape for inputting values into the dictionary of dialogueCues. + /// + public string dialogueFileName; + /// /// A dictionary of dialogue strings that correspond to audio files. /// diff --git a/Vocalization/Vocalization/Framework/ReplacementStrings.cs b/Vocalization/Vocalization/Framework/ReplacementStrings.cs new file mode 100644 index 00000000..e89a3bad --- /dev/null +++ b/Vocalization/Vocalization/Framework/ReplacementStrings.cs @@ -0,0 +1,72 @@ +using StardewValley; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Vocalization.Framework +{ + public class ReplacementStrings + { + + public string farmerName = ""; + public string bandName = ""; + public string bookName = ""; + public string rivalName = ""; + public string petName = ""; + public string farmName = ""; + public string favoriteThing = ""; + public string kid1Name = ""; + public string kid2Name = ""; + + public List adjStrings; + public List nounStrings; + public List placeStrings; + public List spouseNames; + + + public ReplacementStrings() + { + loadAdjStrings(); + loadNounStrings(); + loadPlaceStrings(); + loadSpouseStrings(); + } + + public void loadAdjStrings() + { + adjStrings = new List(); + } + + public void loadNounStrings() + { + nounStrings = new List(); + } + + public void loadPlaceStrings() + { + placeStrings = new List(); + } + + /// + /// Load all associated spouse names. + /// + public void loadSpouseStrings() + { + spouseNames = new List(); + foreach(var loc in Game1.locations) + { + foreach(var character in loc.characters) + { + if (character.datable.Value) + { + spouseNames.Add(character.Name); + } + } + } + } + + + } +} diff --git a/Vocalization/Vocalization/Vocalization.cs b/Vocalization/Vocalization/Vocalization.cs index 841031ac..9c623c34 100644 --- a/Vocalization/Vocalization/Vocalization.cs +++ b/Vocalization/Vocalization/Vocalization.cs @@ -27,11 +27,14 @@ namespace Vocalization /// /// Sanitize input to remove variables such as pet names, farm names, farmer name. (done?) /// - /// !!!!!!!Loop through common variables and add them to the dialogue list. + /// !!!!!!!Loop through common variables and add them to the dialogue list inside of ReplacementString.cs /// /// !!!!!!!Add in dialogue for npcs into their respective VoiceCue.json files. /// /// !!!!!!!Add support for different kinds of menus. TV, shops, etc. + /// + /// + /// !!!!!!!!!Make moddable to support other languages, portuguese, russian, etc (Needs testing) ///
public class Vocalization : Mod { @@ -53,6 +56,8 @@ namespace Vocalization /// public static string VoicePath = ""; + public static ReplacementStrings replacementStrings; + /// /// A dictionary that keeps track of all of the npcs whom have voice acting for their dialogue. @@ -63,6 +68,7 @@ namespace Vocalization { StardewModdingAPI.Events.SaveEvents.AfterLoad += SaveEvents_AfterLoad; DialogueCues = new Dictionary(); + replacementStrings = new ReplacementStrings(); StardewModdingAPI.Events.GameEvents.UpdateTick += GameEvents_UpdateTick; StardewModdingAPI.Events.MenuEvents.MenuClosed += MenuEvents_MenuClosed; @@ -125,7 +131,7 @@ namespace Vocalization CharacterVoiceCue voice; DialogueCues.TryGetValue(speakerName,out voice); - currentDialogue=sanitizeDialogue(currentDialogue); //If contains the stuff in the else statement, change things up. + currentDialogue=sanitizeDialogueInGame(currentDialogue); //If contains the stuff in the else statement, change things up. if (voice.dialogueCues.ContainsKey(currentDialogue)) { //Not variable messages. Aka messages that don't contain words the user can change such as farm name, farmer name etc. @@ -150,17 +156,27 @@ namespace Vocalization string contentPath = Path.Combine(basePath, "Content"); string audioPath = Path.Combine(contentPath, "Audio"); string voicePath = Path.Combine(audioPath, "VoiceFiles"); + + + List translationFolders = new List(); + + //TODO: Add more translations. + translationFolders.Add(Path.Combine(voicePath, "English")); + VoicePath = voicePath; //Set a static reference to my voice files directory. List characterDialoguePaths = new List(); - //Get a list of all characters in the game and make voice directories for them. + //Get a list of all characters in the game and make voice directories for them in each supported translation of the mod. foreach (var loc in Game1.locations) { foreach(var NPC in loc.characters) { - string characterPath = Path.Combine(voicePath, NPC.Name); - characterDialoguePaths.Add(characterPath); + foreach (var translation in translationFolders) + { + string characterPath = Path.Combine(translation, NPC.Name); + characterDialoguePaths.Add(characterPath); + } } } @@ -168,6 +184,13 @@ namespace Vocalization if (!Directory.Exists(audioPath)) Directory.CreateDirectory(audioPath); if (!Directory.Exists(voicePath)) Directory.CreateDirectory(voicePath); + + //Create all of the necessary folders for different translations. + foreach(var dir in translationFolders) + { + if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); + } + //Create a list of new directories if the corresponding character directory doesn't exist. //Note: A modder could also manually add in their own character directory for voice lines instead of having to add it via code. foreach (var dir in characterDialoguePaths) @@ -182,40 +205,67 @@ namespace Vocalization /// public void loadAllVoiceFiles() { - List directories = Directory.GetDirectories(VoicePath).ToList(); - foreach(var dir in directories) + //get a list of all translations supported by this mod. + List translations = Directory.GetDirectories(VoicePath).ToList(); + foreach (var translation in translations) { - List audioClips = Directory.GetFiles(dir, ".wav").ToList(); - //For every .wav file in every character voice clip directory load in the voice clip. - foreach(var file in audioClips) + List characterVoiceLines = Directory.GetDirectories(translation).ToList(); + //get a list of all characters supported in this translation and load their voice cue file. + foreach (var dir in characterVoiceLines) { - string fileName = Path.GetFileNameWithoutExtension(file); - soundManager.loadWavFile(ModHelper, fileName, file); - ModMonitor.Log("Loaded sound file: " + fileName+ " from: "+ file); - } - //Get the character dialogue cues (aka when the character should "speak") from the .json file. - string voiceCueFile=Path.Combine(dir,"VoiceCues.json"); - string characterName = Path.GetFileName(dir); + List audioClips = Directory.GetFiles(dir, ".wav").ToList(); + //For every .wav file in every character voice clip directory load in the voice clip. + foreach (var file in audioClips) + { + string fileName = Path.GetFileNameWithoutExtension(file); + soundManager.loadWavFile(ModHelper, fileName, file); + ModMonitor.Log("Loaded sound file: " + fileName + " from: " + file); + } - //If a file was not found, create one and add it to the list of character voice cues. - if (!File.Exists(voiceCueFile)) - { - CharacterVoiceCue cue= new CharacterVoiceCue(characterName); - //Loop through all variations of... + //Get the character dialogue cues (aka when the character should "speak") from the .json file. + string voiceCueFile = Path.Combine(dir, "VoiceCues.json"); + string characterName = Path.GetFileName(dir); + + //If a file was not found, create one and add it to the list of character voice cues. + if (!File.Exists(voiceCueFile)) + { + CharacterVoiceCue cue = new CharacterVoiceCue(characterName); + + var contentDirectory = Game1.content.RootDirectory; + + var DialogueDict=ModHelper.Content.Load>(cue.dialogueFileName, ContentSource.GameContent); + + foreach(KeyValuePairpair in DialogueDict) + { + string dialogue = pair.Value; + dialogue = sanitizeDialogueFromDictionaries(dialogue); + } + + //Loop through all variations of... //time %time //adjectives $adj //nouns %noun //location %place //spouse %spouse - //If found in a string of dialogue in a character file. - ModHelper.WriteJsonFile(Path.Combine(dir, "VoiceCues.json"), cue); - DialogueCues.Add(characterName, cue); - } - else - { - CharacterVoiceCue cue=ModHelper.ReadJsonFile(voiceCueFile); - DialogueCues.Add(characterName,cue); + + //If found in a string of dialogue in a character file. + /* + *DialogueDict=load dict + * foreach(KeyValuePair pair in ){ + * dialogue= + * + * } + */ + ModHelper.WriteJsonFile(Path.Combine(dir, "VoiceCues.json"), cue); + DialogueCues.Add(characterName, cue); + } + + else + { + CharacterVoiceCue cue = ModHelper.ReadJsonFile(voiceCueFile); + DialogueCues.Add(characterName, cue); + } } } } @@ -226,48 +276,127 @@ namespace Vocalization /// /// /// - public string sanitizeDialogue(string dialogue) + public string sanitizeDialogueInGame(string dialogue) { if (dialogue.Contains(Game1.player.Name)) { - dialogue = dialogue.Replace(Game1.player.name, ""); //Remove player's name from dialogue. - dialogue = dialogue.Replace(" ", " "); //Remove awkward double space that is left when removing player's name. + dialogue = dialogue.Replace(Game1.player.name, ); //Remove player's name from dialogue. } if (Game1.player.hasPet()) { if (dialogue.Contains(Game1.player.getPetName())) { - dialogue.Replace(Game1.player.getPetName(), ""); - dialogue = dialogue.Replace(" ", " "); //Remove awkward double space that is left when removing player's pet's name. + dialogue=dialogue.Replace(Game1.player.getPetName(), ); } } if (dialogue.Contains(Game1.player.farmName.Value)) { - dialogue.Replace(Game1.player.farmName.Value, ""); - dialogue = dialogue.Replace(" ", " "); //Remove awkward double space that is left when removing player's farm name. + dialogue=dialogue.Replace(Game1.player.farmName.Value, ); } if (dialogue.Contains(Game1.player.favoriteThing.Value)) { - dialogue.Replace(Game1.player.favoriteThing.Value, ""); - dialogue = dialogue.Replace(" ", " "); //Remove awkward double space that is left when removing player's favorite thing. + dialogue=dialogue.Replace(Game1.player.favoriteThing.Value, ); } if (dialogue.Contains(Game1.samBandName)) { - dialogue.Replace(Game1.samBandName, ""); - dialogue = dialogue.Replace(" ", " "); //Remove awkward double space that is left when removing Sam's band name. + dialogue=dialogue.Replace(Game1.samBandName, ); } if (dialogue.Contains(Game1.elliottBookName)) { - dialogue.Replace(Game1.elliottBookName, ""); - dialogue = dialogue.Replace(" ", " "); //Remove awkward double space that is left when removing Elliott's book name. + dialogue=dialogue.Replace(Game1.elliottBookName, ); } return dialogue; } + + public string sanitizeDialogueFromDictionaries(string dialogue) + { + + if (dialogue.Contains("@")) + { + //replace with farmer name. + dialogue=dialogue.Replace("@",); + } + + if (dialogue.Contains("%adj")) + { + //??? Loop through all possible adj combinations. + } + + if (dialogue.Contains("%noun")) + { + //??? Loop through all possible noun combinations. + } + + if (dialogue.Contains("%place")) + { + //??? Loop through all place combinations. + } + + if (dialogue.Contains("%spouse")) + { + //Replace with all possible marriageable npcs + } + + if (dialogue.Contains("%time")) + { + //Replace with all times of day. 600-2600. + for(int i = 600; i <= 2600; i += 10) + { + string time = i.ToString(); + dialogue = dialogue.Replace("%time", time); + } + } + + if (dialogue.Contains("%band")) + { + //Replace with + dialogue = dialogue.Replace("%band", ); + } + + if (dialogue.Contains("%book")) + { + //Replace with + dialogue = dialogue.Replace("%book",); + } + + if (dialogue.Contains("%rival")) + { + //Replace with + dialogue = dialogue.Replace("%rival",); + } + + if (dialogue.Contains("%pet")) + { + //Replace with + dialogue = dialogue.Replace("%pet",); + } + + if (dialogue.Contains("%farm")) + { + //Replace with + } + + if (dialogue.Contains("%favorite")) + { + //Replace with + } + + if (dialogue.Contains("%kid1")) + { + //Replace with + } + + if (dialogue.Contains("%kid2")) + { + //Replace with + } + return dialogue; + } } } diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.CoreCompileInputs.cache b/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.CoreCompileInputs.cache index ce61e3fc..4bd81298 100644 --- a/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.CoreCompileInputs.cache +++ b/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -038fb9dcd07cce9441d42d4051eb2db1b115c7e2 +080c6a8807c043af2887ea474b0027cde5781876 From fd5972d0b9e054a3c0136538d8879f7384b5b6b7 Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Sun, 8 Jul 2018 14:11:06 -0700 Subject: [PATCH 015/110] More sanitation work. Should work for the most part, just need to add in adjectives, nouns, and places. --- Vocalization/Vocalization/Vocalization.cs | 337 +++++++++++++++------- 1 file changed, 232 insertions(+), 105 deletions(-) diff --git a/Vocalization/Vocalization/Vocalization.cs b/Vocalization/Vocalization/Vocalization.cs index 9c623c34..5a36d310 100644 --- a/Vocalization/Vocalization/Vocalization.cs +++ b/Vocalization/Vocalization/Vocalization.cs @@ -25,16 +25,22 @@ namespace Vocalization /// /// Find way to play said wave files. (Done?) /// - /// Sanitize input to remove variables such as pet names, farm names, farmer name. (done?) + /// Sanitize input to remove variables such as pet names, farm names, farmer name. (done) /// /// !!!!!!!Loop through common variables and add them to the dialogue list inside of ReplacementString.cs /// - /// !!!!!!!Add in dialogue for npcs into their respective VoiceCue.json files. + /// Add in dialogue for npcs into their respective VoiceCue.json files. (done? Can be improved on) /// /// !!!!!!!Add support for different kinds of menus. TV, shops, etc. /// + /// !!!!!!!Add support for MarriageDialogue strings. + /// + /// !!!!!!!Add support for Extra dialogue via StringsFromCSFiles /// /// !!!!!!!!!Make moddable to support other languages, portuguese, russian, etc (Needs testing) + /// -make mod config have a list of supported languages and a variable that is the currently selected language. + /// + /// !!!!!!!!! Add support for adding dialogue lines when loading CharacterVoiceCue.json if the line doesn't already exist! /// public class Vocalization : Mod { @@ -238,25 +244,15 @@ namespace Vocalization foreach(KeyValuePairpair in DialogueDict) { - string dialogue = pair.Value; - dialogue = sanitizeDialogueFromDictionaries(dialogue); + string rawDialogue = pair.Value; + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach(var str in cleanDialogues) + { + cue.dialogueCues.Add(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } } - //Loop through all variations of... - //time %time - //adjectives $adj - //nouns %noun - //location %place - //spouse %spouse - - //If found in a string of dialogue in a character file. - /* - *DialogueDict=load dict - * foreach(KeyValuePair pair in ){ - * dialogue= - * - * } - */ ModHelper.WriteJsonFile(Path.Combine(dir, "VoiceCues.json"), cue); DialogueCues.Add(characterName, cue); } @@ -280,123 +276,254 @@ namespace Vocalization { if (dialogue.Contains(Game1.player.Name)) { - dialogue = dialogue.Replace(Game1.player.name, ); //Remove player's name from dialogue. + dialogue = dialogue.Replace(Game1.player.name, replacementStrings.farmerName); //Remove player's name from dialogue. } if (Game1.player.hasPet()) { if (dialogue.Contains(Game1.player.getPetName())) { - dialogue=dialogue.Replace(Game1.player.getPetName(), ); + dialogue=dialogue.Replace(Game1.player.getPetName(), replacementStrings.petName); } } if (dialogue.Contains(Game1.player.farmName.Value)) { - dialogue=dialogue.Replace(Game1.player.farmName.Value, ); + dialogue=dialogue.Replace(Game1.player.farmName.Value, replacementStrings.farmName); } if (dialogue.Contains(Game1.player.favoriteThing.Value)) { - dialogue=dialogue.Replace(Game1.player.favoriteThing.Value, ); + dialogue=dialogue.Replace(Game1.player.favoriteThing.Value, replacementStrings.favoriteThing); } if (dialogue.Contains(Game1.samBandName)) { - dialogue=dialogue.Replace(Game1.samBandName, ); + dialogue=dialogue.Replace(Game1.samBandName, replacementStrings.bandName); } if (dialogue.Contains(Game1.elliottBookName)) { - dialogue=dialogue.Replace(Game1.elliottBookName, ); + dialogue=dialogue.Replace(Game1.elliottBookName, replacementStrings.bookName); } - return dialogue; - } - - public string sanitizeDialogueFromDictionaries(string dialogue) - { - - if (dialogue.Contains("@")) + //Sanitize children names from the dialogue. + if (Game1.player.getChildren().Count > 0) { - //replace with farmer name. - dialogue=dialogue.Replace("@",); - } - - if (dialogue.Contains("%adj")) - { - //??? Loop through all possible adj combinations. - } - - if (dialogue.Contains("%noun")) - { - //??? Loop through all possible noun combinations. - } - - if (dialogue.Contains("%place")) - { - //??? Loop through all place combinations. - } - - if (dialogue.Contains("%spouse")) - { - //Replace with all possible marriageable npcs - } - - if (dialogue.Contains("%time")) - { - //Replace with all times of day. 600-2600. - for(int i = 600; i <= 2600; i += 10) + int count = 1; + foreach (var child in Game1.player.getChildren()) { - string time = i.ToString(); - dialogue = dialogue.Replace("%time", time); + if (dialogue.Contains(child.Name)) + { + if (count == 1) + { + dialogue = dialogue.Replace(child.Name, replacementStrings.kid1Name); + } + if (count == 2) + { + dialogue = dialogue.Replace(child.Name, replacementStrings.kid2Name); + } + } + count++; } } - if (dialogue.Contains("%band")) - { - //Replace with - dialogue = dialogue.Replace("%band", ); - } - - if (dialogue.Contains("%book")) - { - //Replace with - dialogue = dialogue.Replace("%book",); - } - - if (dialogue.Contains("%rival")) - { - //Replace with - dialogue = dialogue.Replace("%rival",); - } - - if (dialogue.Contains("%pet")) - { - //Replace with - dialogue = dialogue.Replace("%pet",); - } - - if (dialogue.Contains("%farm")) - { - //Replace with - } - - if (dialogue.Contains("%favorite")) - { - //Replace with - } - - if (dialogue.Contains("%kid1")) - { - //Replace with - } - - if (dialogue.Contains("%kid2")) - { - //Replace with - } return dialogue; } + + public List sanitizeDialogueFromDictionaries(string dialogue) + { + List possibleDialogues = new List(); + + //remove $ symbols and their corresponding letters. + + if (dialogue.Contains("$neutral")) + { + dialogue = dialogue.Replace("$neutral", ""); + dialogue = dialogue.Replace(" ", " "); //Remove awkward spacing. + } + + if (dialogue.Contains("$h")) + { + dialogue = dialogue.Replace("$h", ""); + dialogue = dialogue.Replace(" ", " "); //Remove awkward spacing. + } + + if (dialogue.Contains("$s")) + { + dialogue = dialogue.Replace("$s", ""); + dialogue = dialogue.Replace(" ", " "); //Remove awkward spacing. + } + + if (dialogue.Contains("$u")) + { + dialogue = dialogue.Replace("$u", ""); + dialogue = dialogue.Replace(" ", " "); //Remove awkward spacing. + } + + if (dialogue.Contains("$l")) + { + dialogue = dialogue.Replace("$l", ""); + dialogue = dialogue.Replace(" ", " "); //Remove awkward spacing. + } + + if (dialogue.Contains("$a")) + { + dialogue = dialogue.Replace("$a", ""); + dialogue = dialogue.Replace(" ", " "); //Remove awkward spacing. + } + + for(int i=0; i<=100; i++) + { + string combine = ""; + if (i == 1) continue; + combine = "$" + i.ToString(); + if (dialogue.Contains(combine)) + { + dialogue = dialogue.Replace(combine, ""); + dialogue = dialogue.Replace(" ", " "); //Remove awkward spacing. + //remove dialogue symbol. + } + } + + //split across % symbol + //Just remove the %symbol for generic text boxes. Not for forks. + if (dialogue.Contains("%") && dialogue.Contains("%fork") == false) + { + dialogue = dialogue.Replace("%", ""); + } + + //split across # symbol + List dialogueSplits1 = dialogue.Split('#').ToList(); //Returns an element size of 1 if # isn't found. + + //Split across choices + List orSplit = new List(); + + //Split across genders + List finalSplit = new List(); + + //split across | symbol + foreach(var dia in dialogueSplits1) + { + if (dia.Contains("|")) //If I can split my string do so and add all the split strings into my orSplit list. + { + List tempSplits = dia.Split('|').ToList(); + orSplit.Concat(tempSplits); //Add the two lists together. + } + else + { + orSplit.Add(dia); //If I can't split the list just add the dialogue and keep processing. + } + } + + //split across ^ symbol + foreach (var dia in orSplit) + { + if (dia.Contains("^")) //If I can split my string do so and add all the split strings into my orSplit list. + { + List tempSplits = dia.Split('^').ToList(); + finalSplit.Concat(tempSplits); //Add the two lists together. + } + else + { + finalSplit.Add(dia); //If I can't split the list just add the dialogue and keep processing. + } + } + + //iterate across ll dialogues and return a list of them. + for (int i= 0;i + dia = dia.Replace("%band", replacementStrings.bandName); + } + + if (dia.Contains("%book")) + { + //Replace with + dia = dia.Replace("%book", replacementStrings.bookName); + } + + if (dia.Contains("%rival")) + { + //Replace with + dia = dia.Replace("%rival", replacementStrings.rivalName); + } + + if (dia.Contains("%pet")) + { + //Replace with + dia = dia.Replace("%pet", replacementStrings.petName); + } + + if (dia.Contains("%farm")) + { + dia = dia.Replace("%pet", replacementStrings.farmName); + } + + if (dia.Contains("%favorite")) + { + //Replace with + dia = dia.Replace("%pet", replacementStrings.favoriteThing); + } + + if (dia.Contains("%kid1")) + { + //Replace with + dia = dia.Replace("%pet", replacementStrings.kid1Name); + } + + if (dia.Contains("%kid2")) + { + //Replace with + dia = dia.Replace("%pet", replacementStrings.kid2Name); + } + + if (dia.Contains("%time")) + { + //Replace with all times of day. 600-2600. + for (int t = 600; t <= 2600; t += 10) + { + string time = t.ToString(); + string diaTime = dia.Replace("%time", time); + possibleDialogues.Add(diaTime); + } + } + else + { + possibleDialogues.Add(dia); + } + + } + return possibleDialogues; + } } } From 1497980aea8b4cfb2c8ad289024db8f4221953e1 Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Tue, 10 Jul 2018 23:23:50 -0700 Subject: [PATCH 016/110] Finished dictionary sanitization. See todo list for next task. --- .../Framework/CharacterVoiceCue.cs | 12 + .../Framework/ReplacementStrings.cs | 48 +++- Vocalization/Vocalization/Vocalization.cs | 229 ++++++++++++++---- Vocalization/Vocalization/Vocalization.csproj | 1 + .../bin/Debug/Vocalization 0.0.1.zip | Bin 109159 -> 116994 bytes .../Vocalization/bin/Debug/Vocalization.dll | Bin 8704 -> 15872 bytes .../Vocalization/bin/Debug/Vocalization.pdb | Bin 17920 -> 32256 bytes .../Vocalization/obj/Debug/Vocalization.dll | Bin 8704 -> 15872 bytes .../Vocalization/obj/Debug/Vocalization.pdb | Bin 17920 -> 32256 bytes 9 files changed, 247 insertions(+), 43 deletions(-) diff --git a/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs b/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs index a2fd7488..b0f3e666 100644 --- a/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs +++ b/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs @@ -55,5 +55,17 @@ namespace Vocalization.Framework } } + public void addDialogue(string key, string value) + { + if (dialogueCues.ContainsKey(key)) + { + return; + } + else + { + this.dialogueCues.Add(key, value); + } + } + } } diff --git a/Vocalization/Vocalization/Framework/ReplacementStrings.cs b/Vocalization/Vocalization/Framework/ReplacementStrings.cs index e89a3bad..3bc36c07 100644 --- a/Vocalization/Vocalization/Framework/ReplacementStrings.cs +++ b/Vocalization/Vocalization/Framework/ReplacementStrings.cs @@ -1,6 +1,8 @@ -using StardewValley; + +using StardewValley; using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -36,17 +38,61 @@ namespace Vocalization.Framework public void loadAdjStrings() { + //load in adj strings from StringsFromCS and add them to this list. Then in sanitizaion is where you make all of the possible combinations for input. adjStrings = new List(); + + Dictionary extraStrings = Vocalization.ModHelper.Content.Load>(Path.Combine("Strings", "StringsFromCSFiles.xnb"),StardewModdingAPI.ContentSource.GameContent); + + for(int i = 679; i <= 698; i++) + { + string d = "Dialogue.cs."; + string combo = d + i.ToString(); + string dialogue = ""; + bool exists = extraStrings.TryGetValue(combo, out dialogue); + if (exists) + { + adjStrings.Add(dialogue); + } + } + } public void loadNounStrings() { nounStrings = new List(); + + Dictionary extraStrings = Vocalization.ModHelper.Content.Load>(Path.Combine("Strings", "StringsFromCSFiles.xnb"),StardewModdingAPI.ContentSource.GameContent); + + for (int i = 699; i <= 721; i++) + { + string d = "Dialogue.cs."; + string combo = d + i.ToString(); + string dialogue = ""; + bool exists = extraStrings.TryGetValue(combo, out dialogue); + if (exists) + { + adjStrings.Add(dialogue); + } + } } public void loadPlaceStrings() { placeStrings = new List(); + + Dictionary extraStrings = Vocalization.ModHelper.Content.Load>(Path.Combine("Strings", "StringsFromCSFiles.xnb"), StardewModdingAPI.ContentSource.GameContent); + + for (int i = 735; i <= 759; i++) + { + string d = "Dialogue.cs."; + string combo = d + i.ToString(); + string dialogue = ""; + bool exists = extraStrings.TryGetValue(combo, out dialogue); + if (exists) + { + adjStrings.Add(dialogue); + } + } } /// diff --git a/Vocalization/Vocalization/Vocalization.cs b/Vocalization/Vocalization/Vocalization.cs index 5a36d310..49cda3f6 100644 --- a/Vocalization/Vocalization/Vocalization.cs +++ b/Vocalization/Vocalization/Vocalization.cs @@ -27,20 +27,38 @@ namespace Vocalization /// /// Sanitize input to remove variables such as pet names, farm names, farmer name. (done) /// - /// !!!!!!!Loop through common variables and add them to the dialogue list inside of ReplacementString.cs + /// Loop through common variables and add them to the dialogue list inside of ReplacementString.cs (done) + /// -ERRR that might not be fun to do....... + /// Dialogue.cs + /// adj is 679-698 (done) + /// noun is 699-721 (done) + /// verb is 722-734 ???? Not needed??? + /// place is 735-759 (done) + /// colors is 795-810. What does it change though?????? /// /// Add in dialogue for npcs into their respective VoiceCue.json files. (done? Can be improved on) /// + /// + ///Add in sanitization for Dialogue Commands(see the wiki) (done) + /// + /// !!!!!!!!!Add in dialogue for npcs into their respective VoiceCue files for events! + /// /// !!!!!!!Add support for different kinds of menus. TV, shops, etc. + /// -All of these strings are stored in StringsFromCS and TV/file.yaml /// /// !!!!!!!Add support for MarriageDialogue strings. /// /// !!!!!!!Add support for Extra dialogue via StringsFromCSFiles + /// -tv + /// -events + /// -above stuff + /// -NPC.cs + /// -Utility.csmmn /// /// !!!!!!!!!Make moddable to support other languages, portuguese, russian, etc (Needs testing) /// -make mod config have a list of supported languages and a variable that is the currently selected language. /// - /// !!!!!!!!! Add support for adding dialogue lines when loading CharacterVoiceCue.json if the line doesn't already exist! + /// Add support for adding dialogue lines when loading CharacterVoiceCue.json if the line doesn't already exist! (done) /// public class Vocalization : Mod { @@ -73,17 +91,15 @@ namespace Vocalization public override void Entry(IModHelper helper) { StardewModdingAPI.Events.SaveEvents.AfterLoad += SaveEvents_AfterLoad; - DialogueCues = new Dictionary(); - replacementStrings = new ReplacementStrings(); - StardewModdingAPI.Events.GameEvents.UpdateTick += GameEvents_UpdateTick; StardewModdingAPI.Events.MenuEvents.MenuClosed += MenuEvents_MenuClosed; - - previousDialogue = ""; - ModMonitor = Monitor; ModHelper = Helper; + DialogueCues = new Dictionary(); + replacementStrings = new ReplacementStrings(); + + previousDialogue = ""; soundManager = new SimpleSoundManager.Framework.SoundManager(); @@ -238,18 +254,23 @@ namespace Vocalization { CharacterVoiceCue cue = new CharacterVoiceCue(characterName); - var contentDirectory = Game1.content.RootDirectory; + var dialoguePath = Path.Combine("Characters", "Dialogue"); - var DialogueDict=ModHelper.Content.Load>(cue.dialogueFileName, ContentSource.GameContent); - - foreach(KeyValuePairpair in DialogueDict) + //basically this will never run but can be used below to also add in dialogue. + if (!String.IsNullOrEmpty(cue.dialogueFileName)) { - string rawDialogue = pair.Value; - List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); - foreach(var str in cleanDialogues) + dialoguePath = Path.Combine(dialoguePath, cue.dialogueFileName); + var DialogueDict = ModHelper.Content.Load>(dialoguePath, ContentSource.GameContent); + + foreach (KeyValuePair pair in DialogueDict) { - cue.dialogueCues.Add(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + string rawDialogue = pair.Value; + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } } } @@ -260,6 +281,25 @@ namespace Vocalization else { CharacterVoiceCue cue = ModHelper.ReadJsonFile(voiceCueFile); + var dialoguePath = Path.Combine("Characters", "Dialogue"); + //Add in all dialogue. + if (!String.IsNullOrEmpty(cue.dialogueFileName)) + { + dialoguePath = Path.Combine(dialoguePath, cue.dialogueFileName); + var DialogueDict = ModHelper.Content.Load>(dialoguePath, ContentSource.GameContent); + + foreach (KeyValuePair pair in DialogueDict) + { + string rawDialogue = pair.Value; + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + } + } + ModHelper.WriteJsonFile(Path.Combine(dir, "VoiceCues.json"), cue); DialogueCues.Add(characterName, cue); } } @@ -331,6 +371,11 @@ namespace Vocalization return dialogue; } + /// + /// Load in all dialogue.xnb files and attempt to sanitize all of the dialogue from it to help making adding dialogue easier. + /// + /// + /// public List sanitizeDialogueFromDictionaries(string dialogue) { List possibleDialogues = new List(); @@ -373,7 +418,15 @@ namespace Vocalization dialogue = dialogue.Replace(" ", " "); //Remove awkward spacing. } - for(int i=0; i<=100; i++) + if (dialogue.Contains("$q")) + { + dialogue = dialogue.Replace("$q", ""); + dialogue = dialogue.Replace(" ", " "); //Remove awkward spacing. + } + + + //This is probably the worst possible way to do this but I don't have too much a choice. + for (int i=0; i<=100; i++) { string combine = ""; if (i == 1) continue; @@ -393,6 +446,11 @@ namespace Vocalization dialogue = dialogue.Replace("%", ""); } + if (dialogue.Contains("$fork")) + { + dialogue = dialogue.Replace("%fork", ""); + } + //split across # symbol List dialogueSplits1 = dialogue.Split('#').ToList(); //Returns an element size of 1 if # isn't found. @@ -408,7 +466,10 @@ namespace Vocalization if (dia.Contains("|")) //If I can split my string do so and add all the split strings into my orSplit list. { List tempSplits = dia.Split('|').ToList(); - orSplit.Concat(tempSplits); //Add the two lists together. + foreach(var v in tempSplits) + { + orSplit.Add(v); + } } else { @@ -422,7 +483,10 @@ namespace Vocalization if (dia.Contains("^")) //If I can split my string do so and add all the split strings into my orSplit list. { List tempSplits = dia.Split('^').ToList(); - finalSplit.Concat(tempSplits); //Add the two lists together. + foreach (var v in tempSplits) + { + finalSplit.Add(v); + } } else { @@ -430,36 +494,74 @@ namespace Vocalization } } - //iterate across ll dialogues and return a list of them. - for (int i= 0;i @@ -523,6 +625,49 @@ namespace Vocalization } } + + List removalList = new List(); + //Clean out all dialogue commands. + foreach(var dia in possibleDialogues) + { + if (dia.Contains("$r")) + { + removalList.Add(dia); + } + + if (dia.Contains("$p")) + { + removalList.Add(dia); + } + + if (dia.Contains("$b")) + { + removalList.Add(dia); + } + + if (dia.Contains("$e")) + { + removalList.Add(dia); + } + + if (dia.Contains("$d")) + { + removalList.Add(dia); + } + + if (dia.Contains("$k")) + { + removalList.Add(dia); + } + } + + //Delete all garbage dialogues left over. + foreach(var v in removalList) + { + possibleDialogues.Remove(v); + } + + return possibleDialogues; } } diff --git a/Vocalization/Vocalization/Vocalization.csproj b/Vocalization/Vocalization/Vocalization.csproj index f60c952f..c1a39fb2 100644 --- a/Vocalization/Vocalization/Vocalization.csproj +++ b/Vocalization/Vocalization/Vocalization.csproj @@ -49,6 +49,7 @@ + diff --git a/Vocalization/Vocalization/bin/Debug/Vocalization 0.0.1.zip b/Vocalization/Vocalization/bin/Debug/Vocalization 0.0.1.zip index 08a2af4f4aa8151c1223cbee37b4188dd610a288..4191e5f026e00f7cbdb03ebc2569b3d785f9e27d 100644 GIT binary patch delta 15286 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 Z1O)1Ta`eCBnwdJ%j|f7Q{f_uA{2%&Rgg5{I diff --git a/Vocalization/Vocalization/bin/Debug/Vocalization.dll b/Vocalization/Vocalization/bin/Debug/Vocalization.dll index 16995820a705b60459ebdcda29b735bb512e5937..56f68a78fa86586ac963a296f457198eaa5dc6f8 100644 GIT binary patch literal 15872 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

O<;%K5d5Mz4pN-Ppnfe?t{Mf3sA+ZT7BdWb9T$8 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 SXOH}w(GE`6KR*BOJn&!q%V!Ay delta 3446 zcmZu!du)@}6+h>D+i|}5`%FR-+{PgfoY;hVB{YvHRIk!Bl7OK@<5-`6&Mnn%EIa7=)LJFJ%WG0AmH2Y6N3BeYgv?|)Y(j=( zI9k%5t79!3%&S*u4ZI*Y9ErHe`LOgGDP%SntpJ^8rjT`(4p^zOJ9NG;ql-K%g=dY% zQ7V73S}=O-i;kXLAV`DK$u9WC=(aC**T9$Cr$OM>1wI z4r1YZSMnV*Zh>7W*KBExD{A9><@|teL z(q)-YfUMLKu>*jtSw8u)SsSs{u93~!ME#;T1E}$MTC|YdSx1y{DWo(mdM)(`{5V#s zPYh-ho$sHUj0iQsk6ha8SekLq(yY{zclJM|S`EZuq`rTtSsAo*aFld7RtM0ke4$M1rRwk-?(-AHqzpI(yFDl zM%l#FhFWdGdl;`Qv8X>n68a22;2W=0fS<2K9~R+j>$0a&Y(VWkC5pkw-S&tdbhM&5C29;4-i2A{} z)B#hM{w}ATmhN8U8mypRVn!8~1`;yp2kI!WMFwMF5!%9GgZ`_9;j~iP7ns84YuYHj zq)PZ1Q4b!Kb=xkHQB|g3n!2@atxYmu>3;R1x|K|9LlOO6dy9*xNk0RuSI+`p)y@IG zE9t-L7ZCCgp9S93FY%^`@cRyxn3tL9yyPb6ck~BV==~h`W4g*3{W-_IrCw#+@!v1U zJer`B*a(Y)6@q()-jm$HO34)$N$#-Zri#P*b++iGySgCeoyl_aLp3OSi0Lny=$!8X z6_yRqM)yMTV;QQJtIx3Ay__Vg2%J~5A!2X>#9;XvD z&A6C(1wR2SGe_uWG^*~PHjbI&G)3Q5pGJU)b`TwL81l`0n14#)oHy5ahbqa^e@$_k zHa?=?(jwy;HKwJgMT)|7jx-+P*9||9@hR-<1dkXtPq5DnaTu1R+#xMHNZ3s9S$!=} z@d;xS=s)QR-puvd03W3!ytMK2#uy||GbGZ_B=x{9fGE%LByHg%JV9wukP|Y;M|0Sw zz5*B9Q1&{?qknK6h3He@JPIpyR6$k17%c@ZmbhGEyOgh^ham5gk{uFzX)7d8P#QQ) z2bFc?Q4PP$)$o3XewC(Kx9>V_Ux7JNcQ%O^e6WX=X}<+CkF-+y+Y&_M|aI_Pws;OZQS)$2uTEL z-=9h)ykACFd6Am+xFAt{??&xnuPL^3=I8NV4h~*yn)mJtSJynZ?%2TW@Y0vOR~JRn zI*yM!W)`}e726G9%zTU8Za<_sQj3t=DPU!uX)3nj_TUYuhC75qXCscAIjlpSIcgCD zoy@e46a^GMIw;#VBMRG2=C~2z5QnJR4BB`K-2~f93f+Eo_qu!KIOGo5ilP)c``NY? zOoo{*?JNW7yar2=;VJJ_{e8=S!tRjZ#0V|i4CxVuf8?cT#EOlp!Oi@_wjv}vhDeu= zBWA#}8^T3y0BgU`wu3>j)&$>A(sia`o@J6IGPJ!98^YV+8?~`@Q$=o8L{UN%46*g* z*T1x_q;YlqVm3Qr?+|oZOWLN)UFtv%{CgCFz}9d@X+GUyy>`3ZqM} zXIl2WC$Y34sm he#4&Kw47UK);7JV`taiwKNo0c(~Q&d2~X9V{{xLI7K8u* diff --git a/Vocalization/Vocalization/bin/Debug/Vocalization.pdb b/Vocalization/Vocalization/bin/Debug/Vocalization.pdb index 41e17d2ad6dea441bcef6a9fe2c1c435f84ca5bb..8dcbbd692d11b0c11570efca759bb4bfa30fb025 100644 GIT binary patch literal 32256 zcmeI53w%|@xwqF^zy{;2XqtDY7;dJb09YV8rVE&i;P@A=P~wX?DbDo6VDQ!_Go_RPHR z%&d2=Yu4J^nML{Kr4^-%D^s(EW(^vYIx}}_>X@|j^j61p$Dj4gdr%Ug6l@1syuX?E)uMmevZ zF(NrCk=F3x>tliX#=q9X==`s+t|*ybpQ~)B>5(kZ(EdlV%(o-{<3(poe4^=#DO+-# zhflxB`w0X>Jnr2CfBVCI3;%f8x5I+pjH~?4 z@xgV3{AOHL!&Q8d1wMQKv-fo)*Pe5JCu?lp+={~TioBxi)ZEJD1%)M*dD(>(ODjvu z@^UNVa53(yrt+3e@*z787b}ORU9WkKn zzFOs`mdBSBUR+wfG%ssOygZ&?Sy(==v?#wYYk8qE|7ulToX9*s%zTA1&kr&`Ry9Af zu&g+qU$~5B$*n9eD!HKISXRBfHus9!+*{Bs)IUzg&&DUa`6S**y=kJz2vH`kH+bQIEI&AAFHT-(4WuB`>jv9%*x}l`ic6G(h9Ad zpgtAK#&7oCl&ta!`&(32eJqq+^sC(KB&)tBS*1l~2{yPdVF8`Tyo*l)1T=R8$r&bGp}lPRlASE-uX1f>Dt+ zt+1r9yeQvk9Z8=~1GbBVXB3rOq%xy%a|%~hDy~aJZqAbO!gvAmVA`B`#nKAurSgM? zWoBuCQYOuw9_ACo&x=zRt|7=L8kaV+uw*%_mQ9PUb7_gygU8`9XSmb2@zWFEed1pi z{C4^SeVTjs-+I?V>CJSqNpqaW7(@2a;}k8c#~H?)3D(Z9%2>FT0nA_IVzQ-4Qcb3; zV4ANuUmvrIODhTs)J|WbTryC;Af~#8WzJSbaH>=27`w4*0;bH|_=-YX=A^}}jx$Q* z6#13Pe91mOIv5rRu}f@gSmrd=WLxIkvVwSJ;hduUr9uCiLw$Ypr5nnt-)$%UJH)?5 z{10tD-JR4FT?5|qV?H_+Wrgvjh2^s-!SvVL&|8V#y`=p*kfo2Nrl^Why@H~6ap?ui z3n!PZbb6Amc8sRyFE1~rVY025$$LL}SCY|YWL00)r3<=tUQE=<>->Z7kT|L-aGa$%6Z1?BP=yjYoR4MD4&<5)Xo2a6a zqDn62(!%Vbat3K>c~PMTfo#2(YnqL|bVGUBOxaMS#C0u-R}{{US1wU}*cQ?B{L+$2 zY-U81PFfxP`0|3HQky~8CQ*H3H=Ewqwn;R-vOHc=QEYakQ%j2r*uXl@K;*d2I^`rb zXJP9pPh@qiooML&C~QFILu;FkGHB>7phvyA*m zWM9SiA-$KC*R^VY70o|#Ek>^ZoxS+3$PKo7>X+&ZQN6^qSvy7hmp+Hr*opS+h3=a+ zFV$HM8O^JpsGM-E&J3%QMt=yeQ|Es5=}2$I(f4O3hy2_V+|yluyX)_Ds|L8$lVYnH zxvLt*R^_;>a$>8tx%&5sxB7l>O?z)mQLHA#tx54}=Ev6F;;y~LTlQyRc9alJJ5fb2KlMgSG&?} z>gcOoCI2w;w;}&L@^@Q#)ssuFBX7oKR&h}oS122xRwvzzOKzZKK9Y<~vm}{Boy|-f z*y#Wn?L%-HvcI+EYrfPvNibpK#Wr8nxeWPN@e`2w??|1wjKg$nQKk=v{a9sYQ$Q;^ zaGbFo_TyGb`rNXa>u8-6AFc~_co{qHr#_kFc_*^lZJx4|*4XHEgwsuSQNG#3=z21k zD8`{H!#!?wWrKD}x@B=14JVySbTZJ~_ek>Yg6v-+_UV|U%dKI;uCi_DRX^EykNPpjt)TOTHa;OKkI=@QlH%*LaSnCb zO`fvxtu{~DSoMrvQ+PR18}CGS7rL^s=3doDHr8Ak)s5PCFFHHXk&WN9IW_?US0Mdn6l&wvO_;qn~TNV#;$D#r)e`{#7-Kv2);Gbw79Y zL++Z^vFiVF`L}Acx8~p6n$B)bfw#81yY`*fx=L674!Y|n#@4^(@^9m0cjJxTrta>h zcVbsmy83s}-8?b2`7L+zTUsA#_n%ud&~R;;b3#XVi9KTN;8eu55z#gz*nmwh(eBXn z`-RNq{n3|hD6jsui}>Ee-%N&m7>i;1@=^QD#5|H;y1YaKPdfLYlZuW8)%b`G&0be$ zNl|eDaZy_@I(l2XBb7&6&;OHG)!(ab;#EKAt@@$2dak$TRCmpe*qXcCHFtS6t-YGK zx3*VD*OYgvUBfaoaB(FVDs)si_JXbVVK$puUb;*JfIF>tWFNPk>&;-2P(Goq))(bT z7f;x!thAz{Xi;&Z378tp{2{wW<-&2ATUK0DSuxCvDK%?UrnKCoCid9Tw8cdw@!}xa zw8=i|_Xj3iwNWn`A{-ZLlc-)1VYQ);?0)>&g!@~0jcbNh9r^syWs6uO6KyD6l{LSO z%9(?FZ_+zcfa(^`xlwuUdCLNO)b^RMyr*n=WmaEnbB808 zmxt_Qw!Dpz@-&Bj+42flfVLpNH&UMF+NgeL%jYO-A@UjzuSMiLC&`EQ_!Rj(-O9PYiL;LNatW4x(zfBSOK}qsq{q`b14tdq@7m@m< zCCOKmm2$3MfBi->&!jRLbYk3ueIq?dKdfI4Wu+s32*K2d{IDeXuzo9%AB_A|(x0Ip zhWU?6k`L$lJ;?V*Uf1)Ym6yH8C(9SH(BPD&{bjVRDSM8Rqiqp>{^aP_1LryNce}ak zhr8=vbTV=P~&c>@isi; zUcNN8@eOz58{Vc=chfK3%`4r_k9wOwiftL?ZW-lmE_JV5=U(}ux3y7h>r{8^RPV~~ zyW4Jbx4q+S?;P8HuDktQZ`)PwRrk49H}S3>6}$RU_v%Z%tL}8K`L(;Fskh@~@7kDm z?Q7n3_juQD@^+r%?flfc;Xl0_Z})z%%H7q*-Ied|+TrbrdDlGN(UlFtbHkl>onrb( zIHuNECSy@;U&J8iBmxrOJADr<|4U%*k3%3(e5X>R8ns4>VM&L0EM zgOlO;a3)*`&w_D?ck@z@|L^Q=5ZNh3*dYQ(yg8E zCi3b{oq8nl+em?1NmqUcp`7MUUlqZvu^($7?dAN>`=9wLcP(M20%slU3fIHYHeGeu zKv-kwa;Q3QgtOr$h^UatfW|Wa0}< zIE54E4o(q%CSF(Qz>ZF5XB2)M{$%`g{26%lB=!W%8r?W`5QER#2tQ&zOILZSoUotF zp;H8BX>Q_7ZVLJ2sI%aHN*&caKZ7hO&h1cZH+JzgkKGB=A@(tS``_THggMtVZE!zS z-+lq>uvA+Zu>FM5GYz@iF z?`*@}Y`8akmiVDIUT-KXJQgzV`crKDbQ_)xpC|qd%d>5Io(&hm-;ll-z5vT@`U)HV z9(+TG( z{e2GoH_LoZvw5f=_b?}iM%3iTJ~#;Qx0RI}=FI1FFusO5bCN!{MQc9xx? z`c`)v?hD@{y&rrVj)3pLk(QbVB|piAH3r`${WSO`$jlBbq zIozTD`&Ysb;T@3v@81cP&jTX*^k;{;%#5LfkZW>2fykJ2&3AtztoiO!cnE$5+j8NI zBfke!KK-FbcmQk!Plh~W@MpppoMm|yl>7o4UId$xo)4SBV%Qv3z~kU|VGF3SA+Cke z*PN&DR@f45gN$eYhmi5?Ym6veV?*)}!Zw5-f~wEcHhwSUTKtzG=S=>G@Oa3E#Ay$k z!V_RK*a>!oonb$CBFuowee5wz;%JN1i{arTvW7wDUpTK_bUPxQ`_u2Hvq2ynJw2l8CQ1#hou2QoIDd5}JD@}n<1%uPOhSMQei)X8Cv@~Ml%`t55CSGk&}&Lvy` z&x04h^WhT9OQ7T~v*FcnA?a&i9B#MiJK!S1*Fy62ciH&eki7kyVIkCfwHRtGr!4;o zsQjOSl<7YUi{O5EA$$`qg>OOTQvW@;4E_nKo*zT$YhEiMta+^r>Y3w3FxU%>#)?57 zO5rX?eW{hBl`D*!Y(58LcCi_|flQ`}55{<*)teHDE46Xa{Lis*VH={%@sDHP_SV?ago^85`^HLAn z^(J19b~a<>QrML6_h5S{+jfHAC#*dHLjE9F1$75d4JSbQg<0Dre>!3MhuLq}z(s`D z!b-RfE{7XnHI#e}yqxe_xDj3pH^E!s74SB=1>OrK{~)}Q@I#RG(tjSZUYfO@{^-9! z_-e?$!N_Y2T|@XUkbden<+|yoW`E2c)bB!gC+uhYlE%;tga^YL;RN^tI2+Qh&3^bM z$hb54GwvMvxv#wd{oFqf{s_|FO*;MAgz3l5EyQD6XAi^{CY@_`eoUBac76h>i*qad z8T=`{9rD?~1FGD+Eq@7RkH_KvA^uGpeh2<5;dkL(@KgA6_;+{@Y|q$WPwjVs55ZJO zUVabD0Z{o4vf+{N5zv~2QM&dJzb8BZz5xeX zo?_F-+pzW&`$?Y$X)FIM$h_t+gm1$*l)j#;E8olD9|-Gx9@^CZE>yi%S#E}syBfYn z{IxcGJ!F3LcPb2j1mA~u+4Oth0mApf58!>4&)W1~*|45He@Oc8;79On_-A+k{sn#j zrT-~3cH%zbuY_B|gRm7;y^gm$2}-Un{Dk-cHarOajqqSdU-d^r`l_F8({tcwgr~zp z@KnolZ2Gx2ycjwjYZ!Fl#n6L3Yy_*I^fyA)<9gVb_?@r`yaB3SH(A~eC3iPuUGeX= z;rn58!n$ud4n6@}z?W?LUf7cG%aC=*f5q~THvLaF{8!kT^n_b;&NOW}!xi(xmo z8g_?kAajGi4JzMjAajJj1NMS@u$U8dzAED&l zheHS-fJ0%k7<+Bl91e#kK*^m5M-c7`nS=b1a5NkRxnJ?KpyZ~(lL_a*v2YT8D*Ue{=QP1B*y zjK<>IBN<$K?Kw<8qZ8~Ar?KBkH+ctPl^>K-_k1SUtJR**Bmzl5#T+vhZ6=ah)P&b@Ul^~Xi8^>iy2ZLj+Bn_=aGz82W&jC#rl zBPU6ZZ|h$uD?L z+jriU8r||pmjZx@|ABUfV z{|jMNa*_?xgZK5L z@6`YEzZ0P6lt=TvK3hFpQ%8EE?Rz-8**D8=2w?uU!7jNe)-L8<(t-=^m$Hm~)aI;( zMkkc($@66?H`7#P9baoGkB5rH$+qezth1b+abIf7=!mYGC#qXy<+qTadz4JVYa{YR z)sZhC%o<_dD~;x(_hd>*V_r7zyGPS_{%zieC)wz-m8p|w;mV?lN)EHbXX4_~yw9%w z#ry0|D*3wpXKvMFZgnHKdZ=3+cdKi>>VNmD9#Ed)d%YvoVR6y6pnJw%v)66j>z&05 z9!WOUJ=H!MS9+oBmu-*z=)Q`s+M_uS4Ac&v*B+_J?!{*!rx!Xy`L9uXxT)0L&2y`I zxmAnYsw>>8hux|-z3Mcts*7psusyT~mW#FrO%c1mUbktF+4|aIZG)(fXV8vi=t?h? z{j%**iLUnYYL9IZ`^wJIz8j8@JCI+3d?xAFN94bD?QyPK)yJ(WaI3bsRgbt;Z+q40 zURBpR?Xj1!BzJiL^OsAGeGqMrT=N1?qCwOiPhlV3CrB@pHS;`i>+m`kZgG5VUzV+# zN9M8cdl9;aS&dI4y{DDeyuxs(BcC6BQI`1V+%fei-l?&3M z&GSRJ7ay!ou34)Hns+On(+3>$xOpFgImGWsn7-@xfSAkIy3Qq-Gj!H@^9~8;>;6pQ zku_)LC%}BdC&3G0DqIT5!#rp233Ybf3;M7(Tnqca=BzM*9}7p~)2&x{g!R3l-bLw- zKM9|TuYJd(najPEnfu(t7}TDGXMe`^ryNAI`!w$pa82gAXdiz#@wz`63E83fqhLBb z1rCGLAu{Hia|Bc$KsI=$iJq<-9lro_@@uY_(_QmkK?bZOUgfN`Tmx0!ddTUqA6(ZE zuIIPdJ-F8i?zsjL9){O_hxVjFTCk_neNb>O(x1Jn_V9AbOYJRt1oM0S_83pOvIl3n z#vYka?K~Mq?U6-T_Q-~^#}p`gOog-IG$?!IK=X{(+5;J5k5gee>8HU8I0MQaDo6GZ zqxPUrS$m`zd$i+jM($|rF@T-uNp_DPwMQ_&)^884#n|Hv*pl*cq3kgiM(r_=uPHt5zZ|L_-?#DW zEjK{=UZg*@cMiYb@5G#-n(4V{aDU%HqaGLBU!82Iu@>GFD^2||JOfZzZS-f@3_su6 zus@$UA2jcQa(<<=8>bAv1+RVBQ}}&&rxCuv{ZlQ_n9{@dIMt4FCk8NoTd=gA);3u8 zd5=@CahiJ+={;a&!}O#1{&)1d-T&L~du!it^!Ij6%zh)hX5EL&WtzXiAI5!bad^$< zi^Rb-e@wC_2g!!%;hr@X*$bKP#pz3N_KRq`=Tb3Indp7fgrnH=s6Dt}a;cuaFFD@h zNxbY3-m8w&xWe@bVE!_H#eNiCPrRTYJ91Aq_UOy@G%tGOr*c2!^BjE82i!#8X+m5M zUakjbYYKZp%@fR%=DpS4P;)7DWv)syb4jqznQT5Q?>+dy)^4JWRQ^u9++cKN+aXY8 zXuqL-oc1%}e69YRPFTALW;kE-({MNlj)df4_A%q3_AwJ7Gb44 z9t_sz*V&JBO4N5XGJ&n#L>n|GZl#oQr;xAeI}Wynn$J@pW&7=*_9gA%B-jB?hFVv$ zAoeo*k#JokXzHQzgSw0`jLyk7N(iUg>%Eb|_-y=qd>MWtzQKKaEui0Y?b3Yc2W{z; z>zF&vz!YXY(Jw^Ta+8f;V8d6DsPrq*5%u1g$n!kIo2|U!@B$nD zt_^pyoEyqp{Y|!aaj0+OnMX`I&)E!J z7CJs2(JB4NP9-Jjo6MLzH4);zTK=k|Z}N%$$&3U(zkWgah*P0s;Oeo(=h^P7lo(j{ z3v=+@NCgr)eyyJ8WYz{g=abeP&7r;VtR?0<897jEUol?u`)d3ayw)bITX*3f#y^MO zi{Fnwfd3S)`_%UMRQzCk2443dx8~XFwz_ zeRR6qFs7~!bw||d^6Z#$r`7wTF`;fC zV|7{F!*X>V>pJ!S*h#1x$XMM`Iu8%7SHB72*7JiApO~t8;(UiHwg6VK2!+xf^@6LoE7Tnd^^yqd-xsd1?g6g`6_A)uO3@?p)D5G z%6`msd%-VHC9Xe+v)7-mXJ~pQ5TbDbqfBm9ZzHY;^xC#isUT3)fH`> z-G!R`XArRuKbX(`m1v#rtvZ{}|MReo;{OW}d{SQe6o!M?md-Bb8Mz(Y>_xINadm!X zEgEo!O`4KEW%QUSMl6wM{bjV)drrpfp@7dVBk@yiX<6YT2=j9~{Em$?dGeT(vqopz zBEO)_R?e%e3vw&zTVJxw!+*ll$;cQrdf4P_)|(;srSZC9;8s{hp)|#_tQ_W)R*kQ3 zK3CdS{6T!OQ`&m|@LuL&PEmSSa~?j~DeV!izpb@or&o0R)pzF%cPQ=V;ts` zrgMbw{7K=^>9fuOGHpb1n(n##93kyl($?9uXmyo`o}K8tR4zG9&k>H4rZe>;rRjY6 z@*vAPd3uCenTosgtzeYs_m-R4g2Onm5wn$gm50}Va<}1U;lJAN$wmj+vHV@#!@Kse z%>A&zs?2fW?-yIMDk^X?V&GaBV+WtZ)CO7$eBS^6M{B@P4riB6FIimb3@u^fUEvI^ zD9<0dgx}pPEMLS!-=#r>eyXct=vVs{!IAl8!~jU-0wH|A2Dp|1D)L7suh% zSHEZNueDa^mU1j3+^+;j1D8Ra8%kb!Z`jY^nEt<)n5vvq{5@2PTL$NS_E(~u?xps^ zyom45=hZq~Wf5wO>>j2m?GbiE%~*QIrTTIkWWK$tymWn9v$&n%=}~Zf;k9WUXoF{p z<{Z^Lch@s_^Io0KjI`f40pAI)eTUAAwLWyk>xp1@{7Lv!d=I?r*9+epul1lWz8_xo z9)KT+*SW9itg{}@i_Kes>2Mf+IG)=^^Cl@v@;Ba%{l;Hm!v!{2puqwS7HF_Qg9REa IkZghf3!$v5>;M1& literal 17920 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

O<;%K5d5Mz4pN-Ppnfe?t{Mf3sA+ZT7BdWb9T$8 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 SXOH}w(GE`6KR*BOJn&!q%V!Ay delta 3446 zcmZu!du)@}6+h>D+i|}5`%FR-+{PgfoY;hVB{YvHRIk!Bl7OK@<5-`6&Mnn%EIa7=)LJFJ%WG0AmH2Y6N3BeYgv?|)Y(j=( zI9k%5t79!3%&S*u4ZI*Y9ErHe`LOgGDP%SntpJ^8rjT`(4p^zOJ9NG;ql-K%g=dY% zQ7V73S}=O-i;kXLAV`DK$u9WC=(aC**T9$Cr$OM>1wI z4r1YZSMnV*Zh>7W*KBExD{A9><@|teL z(q)-YfUMLKu>*jtSw8u)SsSs{u93~!ME#;T1E}$MTC|YdSx1y{DWo(mdM)(`{5V#s zPYh-ho$sHUj0iQsk6ha8SekLq(yY{zclJM|S`EZuq`rTtSsAo*aFld7RtM0ke4$M1rRwk-?(-AHqzpI(yFDl zM%l#FhFWdGdl;`Qv8X>n68a22;2W=0fS<2K9~R+j>$0a&Y(VWkC5pkw-S&tdbhM&5C29;4-i2A{} z)B#hM{w}ATmhN8U8mypRVn!8~1`;yp2kI!WMFwMF5!%9GgZ`_9;j~iP7ns84YuYHj zq)PZ1Q4b!Kb=xkHQB|g3n!2@atxYmu>3;R1x|K|9LlOO6dy9*xNk0RuSI+`p)y@IG zE9t-L7ZCCgp9S93FY%^`@cRyxn3tL9yyPb6ck~BV==~h`W4g*3{W-_IrCw#+@!v1U zJer`B*a(Y)6@q()-jm$HO34)$N$#-Zri#P*b++iGySgCeoyl_aLp3OSi0Lny=$!8X z6_yRqM)yMTV;QQJtIx3Ay__Vg2%J~5A!2X>#9;XvD z&A6C(1wR2SGe_uWG^*~PHjbI&G)3Q5pGJU)b`TwL81l`0n14#)oHy5ahbqa^e@$_k zHa?=?(jwy;HKwJgMT)|7jx-+P*9||9@hR-<1dkXtPq5DnaTu1R+#xMHNZ3s9S$!=} z@d;xS=s)QR-puvd03W3!ytMK2#uy||GbGZ_B=x{9fGE%LByHg%JV9wukP|Y;M|0Sw zz5*B9Q1&{?qknK6h3He@JPIpyR6$k17%c@ZmbhGEyOgh^ham5gk{uFzX)7d8P#QQ) z2bFc?Q4PP$)$o3XewC(Kx9>V_Ux7JNcQ%O^e6WX=X}<+CkF-+y+Y&_M|aI_Pws;OZQS)$2uTEL z-=9h)ykACFd6Am+xFAt{??&xnuPL^3=I8NV4h~*yn)mJtSJynZ?%2TW@Y0vOR~JRn zI*yM!W)`}e726G9%zTU8Za<_sQj3t=DPU!uX)3nj_TUYuhC75qXCscAIjlpSIcgCD zoy@e46a^GMIw;#VBMRG2=C~2z5QnJR4BB`K-2~f93f+Eo_qu!KIOGo5ilP)c``NY? zOoo{*?JNW7yar2=;VJJ_{e8=S!tRjZ#0V|i4CxVuf8?cT#EOlp!Oi@_wjv}vhDeu= zBWA#}8^T3y0BgU`wu3>j)&$>A(sia`o@J6IGPJ!98^YV+8?~`@Q$=o8L{UN%46*g* z*T1x_q;YlqVm3Qr?+|oZOWLN)UFtv%{CgCFz}9d@X+GUyy>`3ZqM} zXIl2WC$Y34sm he#4&Kw47UK);7JV`taiwKNo0c(~Q&d2~X9V{{xLI7K8u* diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.pdb b/Vocalization/Vocalization/obj/Debug/Vocalization.pdb index 41e17d2ad6dea441bcef6a9fe2c1c435f84ca5bb..8dcbbd692d11b0c11570efca759bb4bfa30fb025 100644 GIT binary patch literal 32256 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 IkZghf3!$v5>;M1& literal 17920 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 Date: Thu, 12 Jul 2018 22:25:21 -0700 Subject: [PATCH 017/110] Added Mod config, scrape npc dialogue and TVs. See todo list. Next is shops. --- .../Framework/CharacterVoiceCue.cs | 22 +- Vocalization/Vocalization/ModConfig.cs | 23 + Vocalization/Vocalization/Vocalization.cs | 488 ++++++++++++++++-- ...ocalization.csproj.CoreCompileInputs.cache | 2 +- ...ation.csprojResolveAssemblyReference.cache | Bin 83875 -> 80837 bytes 5 files changed, 481 insertions(+), 54 deletions(-) create mode 100644 Vocalization/Vocalization/ModConfig.cs diff --git a/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs b/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs index b0f3e666..00d6efec 100644 --- a/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs +++ b/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs @@ -17,23 +17,39 @@ namespace Vocalization.Framework public string name; ///

- /// The name of the dialogue file to scrape for inputting values into the dictionary of dialogueCues. + /// The name of the dialogue file to scrape from Content/Characters/Dialogue for inputting values into the dictionary of dialogueCues. /// - public string dialogueFileName; + public List dialogueFileNames; + + /// + /// The name of the files in Content/Strings to scrape for dialogue. + /// + public List stringsFileNames; + + /// + /// The names of the files in Content/Data to scrape for dialogue. + /// + public List dataFileNames; /// /// A dictionary of dialogue strings that correspond to audio files. /// public Dictionary dialogueCues; + public string path; + /// /// Constructor. /// /// The name of the NPC. - public CharacterVoiceCue(string name) + public CharacterVoiceCue(string name,string path) { this.name = name; this.dialogueCues = new Dictionary(); + this.stringsFileNames = new List(); + this.dialogueFileNames = new List(); + this.dataFileNames = new List(); + this.path = path; } ///
diff --git a/Vocalization/Vocalization/ModConfig.cs b/Vocalization/Vocalization/ModConfig.cs new file mode 100644 index 00000000..aeaf7bc1 --- /dev/null +++ b/Vocalization/Vocalization/ModConfig.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Vocalization +{ + public class ModConfig + { + public List translations; + public string currentTranslation; + + public ModConfig() + { + translations = new List(); + translations.Add("English"); + currentTranslation = "English"; + } + + + } +} diff --git a/Vocalization/Vocalization/Vocalization.cs b/Vocalization/Vocalization/Vocalization.cs index 49cda3f6..bbfe22be 100644 --- a/Vocalization/Vocalization/Vocalization.cs +++ b/Vocalization/Vocalization/Vocalization.cs @@ -11,6 +11,42 @@ using Vocalization.Framework; namespace Vocalization { + /* + * Things to sanitize/load in + * + * NPC Dialogue(sanitized, not loaded); + * Rainy Dialogue(sanitized, not loaded); + * Marriage dialogue(sanitized?,not loaded); + * Engagement dialogue(sanitized, not loaded); + * + * TV shows + * -cooking (sanitized, not loaded) + * -interview(sanitized, not loaded) + * -tip(sanitized, not loaded) + * -oracle(sanitized, not loaded) + * -weather(sanitized, not loaded) + * + * + * Shops + * Extra dialogue + * Letters + * Events + * + * + * Strings/Characters.yaml + * Strings/Events.yaml + * Strings/Locations.yaml + * Strings/Notes.yaml + * Strings/Objects.yaml + * Strings/StringsFromCSFiles.yaml + * -npc + * -events + * -tv shows + * -utility + * Strings/StringsFromMaps.yaml + */ + + /// /// TODO: /// @@ -41,19 +77,24 @@ namespace Vocalization /// ///Add in sanitization for Dialogue Commands(see the wiki) (done) /// - /// !!!!!!!!!Add in dialogue for npcs into their respective VoiceCue files for events! /// /// !!!!!!!Add support for different kinds of menus. TV, shops, etc. /// -All of these strings are stored in StringsFromCS and TV/file.yaml /// /// !!!!!!!Add support for MarriageDialogue strings. + /// !!!!!!!Add support for EngagementDialogue strings. + /// !!!!!!!Add support for ExtraDialogue.yaml file + /// + /// + /// !!!!!!!Add support for mail dialogue + /// -split using ^ to get the sender's name as the last element in the split list. Then sanitize the % information out by splitting across % and getting the first element. + /// /// /// !!!!!!!Add support for Extra dialogue via StringsFromCSFiles /// -tv /// -events - /// -above stuff /// -NPC.cs - /// -Utility.csmmn + /// -Utility.cs /// /// !!!!!!!!!Make moddable to support other languages, portuguese, russian, etc (Needs testing) /// -make mod config have a list of supported languages and a variable that is the currently selected language. @@ -82,6 +123,8 @@ namespace Vocalization public static ReplacementStrings replacementStrings; + public static ModConfig config; + /// /// A dictionary that keeps track of all of the npcs whom have voice acting for their dialogue. @@ -102,7 +145,9 @@ namespace Vocalization previousDialogue = ""; soundManager = new SimpleSoundManager.Framework.SoundManager(); - + + config = new ModConfig(); + ModHelper.ReadConfig(); } /// @@ -112,8 +157,9 @@ namespace Vocalization /// private void MenuEvents_MenuClosed(object sender, StardewModdingAPI.Events.EventArgsClickableMenuClosed e) { - //Clean out my previous dialogue when I close any sort of menu. + //Clean out my previous dialogue swhen I close any sort of menu. previousDialogue = ""; + soundManager.stopPreviousSound(); } /// @@ -163,10 +209,137 @@ namespace Vocalization { ModMonitor.Log("New unregistered dialogue detected for NPC: "+speakerName+" saying: "+currentDialogue,LogLevel.Alert); ModMonitor.Log("Make sure to add this to their respective VoiceCue.json file if you wish for this dialogue to have voice acting associated with it!",LogLevel.Alert); + voice.addDialogue(currentDialogue, ""); + ModHelper.WriteJsonFile(voice.path, voice); //If the dialogue was overlooked somehow, just add it to the player's dialogue lines. } } } } + else + { + //Support for TV + if (Game1.activeClickableMenu.GetType() == typeof(StardewValley.Menus.DialogueBox)) + { + StardewValley.Menus.DialogueBox dialogueBox = (DialogueBox)Game1.activeClickableMenu; + string currentDialogue = dialogueBox.getCurrentString(); + if (previousDialogue != currentDialogue) + { + previousDialogue = currentDialogue; //Update my previously read dialogue so that I only read the new string once when it appears. + ModMonitor.Log(currentDialogue); //Print out my dialogue. + + + //Add in support for TV Shows + CharacterVoiceCue voice; + DialogueCues.TryGetValue("TV", out voice); + currentDialogue = sanitizeDialogueInGame(currentDialogue); //If contains the stuff in the else statement, change things up. + if (voice.dialogueCues.ContainsKey(currentDialogue)) + { + //Not variable messages. Aka messages that don't contain words the user can change such as farm name, farmer name etc. + voice.speak(currentDialogue); + } + else + { + ModMonitor.Log("New unregistered dialogue detected saying: " + currentDialogue, LogLevel.Alert); + ModMonitor.Log("Make sure to add this to their respective VoiceCue.json file if you wish for this dialogue to have voice acting associated with it!", LogLevel.Alert); + voice.addDialogue(currentDialogue, ""); + ModHelper.WriteJsonFile(voice.path, voice); //If the dialogue was overlooked somehow, just add it to the player's dialogue lines. + } + } + } + + //Support for Letters + if (Game1.activeClickableMenu.GetType() == typeof(StardewValley.Menus.LetterViewerMenu)) + { + //Use reflection to get original text back. + var menu = (StardewValley.Menus.LetterViewerMenu)Game1.activeClickableMenu; + //mail dialogue text will probably need to be sanitized as well.... + List mailText=(List)ModHelper.Reflection.GetField>(menu, "mailMessage", true); + string currentDialogue = ""; + foreach(var v in mailText) + { + currentDialogue += mailText; + } + + previousDialogue = currentDialogue; //Update my previously read dialogue so that I only read the new string once when it appears. + ModMonitor.Log(currentDialogue); //Print out my dialogue. + + + //Add in support for TV Shows + CharacterVoiceCue voice; + DialogueCues.TryGetValue("Mail", out voice); + currentDialogue = sanitizeDialogueInGame(currentDialogue); //If contains the stuff in the else statement, change things up. + if (voice.dialogueCues.ContainsKey(currentDialogue)) + { + //Not variable messages. Aka messages that don't contain words the user can change such as farm name, farmer name etc. + voice.speak(currentDialogue); + } + else + { + ModMonitor.Log("New unregistered Mail dialogue detected saying: " + currentDialogue, LogLevel.Alert); + ModMonitor.Log("Make sure to add this to their respective VoiceCue.json file if you wish for this dialogue to have voice acting associated with it!", LogLevel.Alert); + voice.addDialogue(currentDialogue, ""); + ModHelper.WriteJsonFile(voice.path, voice); + } + + } + + //Support for shops + if (Game1.activeClickableMenu.GetType() == typeof(StardewValley.Menus.ShopMenu)) + { + + var menu = (StardewValley.Menus.ShopMenu)Game1.activeClickableMenu; + string currentDialogue = menu.potraitPersonDialogue; //Check this string to the dict of voice cues + NPC npc = menu.portraitPerson; + + previousDialogue = currentDialogue; //Update my previously read dialogue so that I only read the new string once when it appears. + ModMonitor.Log(currentDialogue); //Print out my dialogue. + + + //Add in support for Shops + CharacterVoiceCue voice=new CharacterVoiceCue("",""); + try + { + //character shops + bool f=DialogueCues.TryGetValue(Path.Combine("Shops", npc.Name), out voice); + if (f == false) + { + ModMonitor.Log("Can't find the dialogue for the shop: " + npc.Name); + } + } + catch(Exception err) + { + try + { + //non npc shops + bool f=DialogueCues.TryGetValue(Path.Combine("Shops", "Misc"), out voice); + if (f == false) + { + ModMonitor.Log("Can't find the dialogue in the misc shop file."); + } + } + catch(Exception errr) + { + ModMonitor.Log("A really big problem happened when trying to load dialogue from shops. Uhh ohh. Make sure the Shops folder exists."); + return; + } + } + currentDialogue = sanitizeDialogueInGame(currentDialogue); //If contains the stuff in the else statement, change things up. + if (voice.dialogueCues.ContainsKey(currentDialogue)) + { + //Not variable messages. Aka messages that don't contain words the user can change such as farm name, farmer name etc. + voice.speak(currentDialogue); + } + else + { + ModMonitor.Log("New unregistered dialogue detected saying: " + currentDialogue, LogLevel.Alert); + ModMonitor.Log("Make sure to add this to their respective VoiceCue.json file if you wish for this dialogue to have voice acting associated with it!", LogLevel.Alert); + voice.addDialogue(currentDialogue, ""); + ModHelper.WriteJsonFile(voice.path, voice); + } + + } + + } } /// @@ -202,6 +375,30 @@ namespace Vocalization } } + //Add in folder for TV Shows + foreach (var translation in translationFolders) + { + string TVPath = Path.Combine(translation, "TV"); + characterDialoguePaths.Add(TVPath); + } + + //Add in folder for shop support + foreach (var translation in translationFolders) + { + string shop = Path.Combine(translation, "Shops"); //Used to hold NPC Shops + characterDialoguePaths.Add(shop); + + string shop2 = Path.Combine(translation, "Shops","Misc"); //Used to hold Misc shops such as traveling merchants and boats. + characterDialoguePaths.Add(shop2); + } + + //Add in folder for Mail support. + foreach (var translation in translationFolders) + { + string mail = Path.Combine(translation, "Mail"); + characterDialoguePaths.Add(mail); + } + if (!Directory.Exists(contentPath)) Directory.CreateDirectory(contentPath); if (!Directory.Exists(audioPath)) Directory.CreateDirectory(audioPath); if (!Directory.Exists(voicePath)) Directory.CreateDirectory(voicePath); @@ -252,61 +449,252 @@ namespace Vocalization //If a file was not found, create one and add it to the list of character voice cues. if (!File.Exists(voiceCueFile)) { - CharacterVoiceCue cue = new CharacterVoiceCue(characterName); - - var dialoguePath = Path.Combine("Characters", "Dialogue"); - - //basically this will never run but can be used below to also add in dialogue. - if (!String.IsNullOrEmpty(cue.dialogueFileName)) - { - dialoguePath = Path.Combine(dialoguePath, cue.dialogueFileName); - var DialogueDict = ModHelper.Content.Load>(dialoguePath, ContentSource.GameContent); - - foreach (KeyValuePair pair in DialogueDict) - { - string rawDialogue = pair.Value; - List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); - foreach (var str in cleanDialogues) - { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. - } - } - } - - ModHelper.WriteJsonFile(Path.Combine(dir, "VoiceCues.json"), cue); - DialogueCues.Add(characterName, cue); + CharacterVoiceCue cue = new CharacterVoiceCue(characterName, Path.Combine(dir, "VoiceCues.json")); + scrapeDictionaries(cue); } - else { CharacterVoiceCue cue = ModHelper.ReadJsonFile(voiceCueFile); - var dialoguePath = Path.Combine("Characters", "Dialogue"); - //Add in all dialogue. - if (!String.IsNullOrEmpty(cue.dialogueFileName)) - { - dialoguePath = Path.Combine(dialoguePath, cue.dialogueFileName); - var DialogueDict = ModHelper.Content.Load>(dialoguePath, ContentSource.GameContent); - - foreach (KeyValuePair pair in DialogueDict) - { - string rawDialogue = pair.Value; - List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); - foreach (var str in cleanDialogues) - { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. - } - } - } - ModHelper.WriteJsonFile(Path.Combine(dir, "VoiceCues.json"), cue); - DialogueCues.Add(characterName, cue); + scrapeDictionaries(cue); } } } } + public void scrapeDictionaries(CharacterVoiceCue cue) + { + + var dialoguePath = Path.Combine("Characters", "Dialogue"); + var stringsPath = Path.Combine("Strings"); //Used for all sorts of extra strings and stuff for like StringsFromCS + var dataPath = Path.Combine("Data"); //Used for engagement dialogue strings, and ExtraDialogue, Notes, Secret Notes, Mail + + //If the "character"'s name is TV which means I'm watching tv, scrape the data from the TV shows. + if (cue.name == "TV") + { + foreach (var fileName in cue.dialogueFileNames) + { + //basically this will never run but can be used below to also add in dialogue. + if (!String.IsNullOrEmpty(fileName)) + { + string dialoguePath2 = Path.Combine(dialoguePath, fileName); + var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); + + //Scraping the CookingChannel dialogue + if (fileName.Contains("CookingChannel")) + { + //Scrape the whole dictionary looking for the character's name. + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + List splitDialogues = new List(); + splitDialogues = rawDialogue.Split('/').ToList(); + + string cookingDialogue = splitDialogues.ElementAt(1); + //If the key contains the character's name. + if (key.Contains(cue.name)) + { + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(cookingDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + } + } + continue; + } + + //Interview Show + if (fileName.Contains("InterviewShow")) + { + //Scrape the whole dictionary looking for the character's name. + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + if (key != "intro") continue; + //If the key contains the character's name. + if (key.Contains(cue.name)) + { + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + } + } + continue; + } + + //Tip channel + if (fileName.Contains("TipChannel")) + { + //Scrape the whole dictionary looking for the character's name. + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + //If the key contains the character's name. + if (key.Contains(cue.name)) + { + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + } + } + continue; + } + + if (fileName.Contains("StringsFromCSFiles")) + { + //Scrape the whole dictionary looking for the character's name. + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + if (!key.Contains("TV")) continue; + //If the key contains the character's name. + if (key.Contains(cue.name)) + { + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + } + } + continue; + } + } + } + + } + else + { + foreach (var fileName in cue.dialogueFileNames) + { + //basically this will never run but can be used below to also add in dialogue. + if (!String.IsNullOrEmpty(fileName)) + { + string dialoguePath2 = Path.Combine(dialoguePath, fileName); + var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); + + //Scraping the rainy dialogue file. + if (fileName.Contains("rainy")) + { + //Scrape the whole dictionary looking for the character's name. + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + //If the key contains the character's name. + if (key.Contains(cue.name)) + { + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + } + } + continue; + } + + if (fileName.Contains("MarriageDialogue")) + { + //Scrape the whole dictionary looking for other character's names to ignore. + + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + + //get my current charcter's name + //check the current key + //if my key contains a different spouse's name continue the loop + //else sanitize it and add it to my list + foreach (var spouse in replacementStrings.spouseNames) + { + if (key.Contains(spouse) && spouse != cue.name) + { + //If the key contains a spouse name and it is not my character's name... + continue; + } + //If the key contains the character's name or is generic dialogue. + if (key.Contains(cue.name)) + { + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + } + } + } + + } + + foreach (KeyValuePair pair in DialogueDict) + { + string rawDialogue = pair.Value; + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + } + } + } + foreach (var fileName in cue.dataFileNames) + { + string dialoguePath2 = Path.Combine(dialoguePath, fileName); + var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); + + //Load in engagement dialogue for this npc. + if (fileName.Contains("EngagementDialogue")) + { + //Scrape the whole dictionary looking for the character's name. + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + //If the key contains the character's name. + if (key.Contains(cue.name)) + { + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + } + } + continue; + } + } + } + + ModHelper.WriteJsonFile(cue.path, cue); + DialogueCues.Add(cue.name, cue); + } + /// /// Removes a lot of variables that would be hard to voice act from dkialogue strings such as player's name, pet names, farm names, etc. /// diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.CoreCompileInputs.cache b/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.CoreCompileInputs.cache index 4bd81298..29425678 100644 --- a/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.CoreCompileInputs.cache +++ b/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -080c6a8807c043af2887ea474b0027cde5781876 +48fee857a186c1f9f735aa5f673493ef10fe066c diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.csprojResolveAssemblyReference.cache b/Vocalization/Vocalization/obj/Debug/Vocalization.csprojResolveAssemblyReference.cache index cd918a0201284995e2baac12d3fa16e4991d6648..229ebcf37c17f1ebdaa8233679247d1d6be55be0 100644 GIT binary patch literal 80837 zcmeI52YeJ&_xE#_%_egREJ39xU{qA3Y(kZ034ze0NJ0<9O)^Oqw#3~H5D|$|6cw>6 z3W9=Q0}=aU!H!}>pT`O!J_t6f=z|6Hf6ip*=3I7H5%hW9&%85yIGOX?Gv(gFmkz@U)VguI1g!Pc84W%6YrIq{qy5TiwRreF_h2O82MsXJ+oT1P)?jm8Z4>PC;JEegKD*}`N6}u16VYl;GO1{q&|Fje z?{c9Tl-Iimcc~)m4P@nGu0*oh&FI%KUy8uZm%5swfw_6bUAxpL(K9aS^~i*I24Z@PFm*Y_ z_@Dk27x(PerL??fiQc(P@1E1Wd)MDx*4USZxGxL;f_({lt15k^kwe~}*z(3cW#B$l z{+(q*5S--;o@;Ea5pJ#Q@7$U}0v#xgaZ7V3uSZAlq*vtYpH&d8F4Ke2qW*ehYBW@3 z9%bg=;<}@)cvz?`(y6~bP4|bY0u(<`59)YoB)zD>7pTIMTBtf$Hq0CJR_NiP5?>Hk zSyEk*;723PZrl^^-;(A)q%;)v`$~+>G{Mcx#LXNQ=ZA_E<#;CUz~4#|9+*^&P=D)DM|T%SsWihajYyKPKb2vzYoC!@&2goF!6|$k-ZLC3-?S_xunAq; z2|cX^nU-XZCUXp#R%BX}X+!2%GFfDfBXc~N6UekBW85#CL~|#TX-DQ1G#TyD46cK) z{*Enn)j5b8wo^~_b}#MTqjRsW-SnKEy;5mMJJe&rZwl)+V%(y2pxY8-j_y}7{N6|u zne~14S=U!Si`alIv8Jf0drK4;IE|i0g)|pHf zG_I~__(I*#PbEP9_a)%K5^yv+gbbxjO1Y$4?ZjPg4iZ{-bhI95T&JR8X%(q-3|J{ND4o3zOeY=Y|NC^(5#{)=98mY{O>d8FFF(CQ9AomItLt>PP+10CY|||&ViK9K?kH0 zvQVJQ!86vY8rMiPEUhB-`2Q!; z`QJTFjyQ8--I?HQ%9l}O3edO;(I}Zi_kosyU^Jz345f4If$5}MUCX3%9HnzSrE|go z=>)o)r!&FguV%bvTqh@@qZN^vgvK=)4Ffy{=28i!i&r6 zPLoqH@tU7Z0F5h%hGme*2%#`MR-scLVH|penCf|dsv=4?;>O+xucW4XBL&eg)+sZ5 zk-9cPs#3PC^hU6mzf_MzLgCzSX{9fUPdo7O%HUvrH8n|7kmd^ns*ML98DX88{q?f^ za466Ka4XI>X602ck3A?+>c#-@0Lbj9f0kl2QTj@aXDZkPeop6!6aP%bxntIW(SPkj zqe+vf9H|PqK#r%*D94b_tmUWG+RMNo@o)0o9C+(zy(0 zT$iIMu0O2epC;88+CiVn4t(N-n-FPK7dO(Bj(-oK02kt7+7)CLk-3u0Rb;Lva}Akm z(PUC}pC+J6u942`aK?2#n$o1{j6G@ktI~QVZtQSiy#W{3ZX~mq%uQr&Mw6L~hNd*C z)E>?jmf+&rQZl!YSw?0#n#}%aXiCc`OAH=jdEJVOYPXSDL1rbH+sUjVvzp8uXfg+) zp$Vu?YLwTVIODnt&EWXQSoJ0J=TE~!aFvIXXLsY`+C5~}kXcLSUNo6Q(a;3L&={wX zbvSdtDdawsG&(_wG^&gmJ3@c|{GpIJ0vDsxpzD4#8NpCE;48zYz(IeN>j6|6k`gR0 zHG~K2g)&2U$Xq5^KD937VWt={a5gGNQ9Ob(u1C>KNOI`Zm&f6q9jFRwWC>lO{(P2b z|G>qx$H+WR<_R>JRHLOSZ8TXzxdHw^gq1&ui)kCkJcTB63>uo!#*saY^*)V@YtN8* z7ER`OG&I3PG)DG6hcm9{(F}@vK3AXdU9c;|LG_W5*U}4RB_92<=WIiJEZ#0=@XlR0R zG)5Wkz!}%aXwHh2aqN*|eF1m&boKN&wMUMpOHSvU9)IGVsRGw(q@oG_J%m*3#Kp8- zWIiGDDVfj6d`{*IGP}uqN#-juUz7QU%(rB|BeRFh_h>RJ(a;1_&=^Jh1I`>!#Q#Cb zwU#j?wryMET_{gzQ2>mD~aSRT@fsbg6`Z$wWoj@`32E~frqx&De! z*cYt~v{2prP&h9XjD|!0ro~uU3q*|JUDsJG3mrrBl+TQOCpL;*@k}EwaB4S4JzuUs8ng z7o0n+JX5zop7Up1=fPy9x@Z>d4}{Sgr-d~9RTxsll+vXXH6=|-)utp&$vGXR18}7q z5m)gr@03s&|M>8p%2jN1O3;c&>C=4FOo9<9={Qj+P1MPiCa6J&4sKUN+(N2R_Z3CB-lMNNSC7o$zg}yqvY@d=qnUH!!olMvn>*!&2ZYoS~f0GJcwg*2u>r z@W;A*Jl~X#l+r9yI!a0xm{Kz-QTmK^HJ8$bC{gytWzrlowuOwHYf3GpG|!ZdmePDv zIz~ztn^G$&U1CbDrL@45+DPeAQ#w{km!V`7UKUENlHB(i9WAxvFhV;XjZv;A;LJi` z1sm()mR-LNJYKWSZYtSzT{+pW@s;oF-|x!#yUQ9Ug|@g)um#JSj$>ynI`79EOeJ#h z9(t0CchMm(jx&B*h}I~}Q*a%1TwGyF?WMHHlsZW1N>l16rK?P-la#JDC6AP@F{NxN zU294?Qo0T$qkKA}#99Oo$h}yVUh9HUT30ki8Fj;%>;A$rif!eP%ZYVy)w<)p!KPU8 zIBU^)Ddu2`v8-N1PnOk2bn46M1`IIDsyD8quB>h}r9M(xY)XBlL`@6Ef~QI8W>Y#{ zN=r=X3@I%&r8A{;iz($wX_+bYlhSfi%9GNqrqo|b)No+z*8nN4Fr|Dctu&>9Qo7xg z21#j^DGip=YEv2_r8`V%sFbK7!XWJ|l$ypjMhI;f{$Ox59A_@$Tp8VYv+KL_X2-ho znpbf1Z?f*Z*{nNncKoKZu{$rW61(#z_|Z7>N8ld8I!@EQ3QcP{O>1H_HNg}MxZBK% zLR?23P4}46Xeq5Rr7==kYf59KbgwCmlhS=CnO6j=U)5bS@!IqVI!1nv$JpleXHDhE z)+XSO+C(%)#uwqt9G>xqb<#c52XsklhPBWL~pXxE%>Ab-KuXlwV(iy!DN);tA=OHWT4D_8LMc(Zj3HelC2FNHq&ZTeHXB2l zDt=`L`vICX@QhJG^IL{l68$-H5O4OQTNHR!E6joeXKEl&B5LkZzX}H8z>Z;%xn; zh?<%V4pw1o(n(mqqVPfGhuX}y$wHKqGa$(@38G&#V5b5s&B!BELK z(@?QmBbmc)B*P}gSR>g3SitG#D`G->5M4Twg!T~5!C*!z3}TLefgIcX7`DWWaHiYP zn9ZryY*~E_3%H?dzzyp{dt7q!1aZ@kp#r(g5pX8w<_v`!&F041+&qH?oUCRkv}Ywl z&k;j?7&g$GIRbidhI%Rt37a8nGxQP`u!x;|@U3y7ZIal$OxSc|q(E2Z2CCZl zXW*hVIiNAl(XEif@atR7ozy^Y-wK(-JeZJK=y~C0EMRsk^ai?hw?c2?9CTtRK}Y5Y z=)k#Z&$)6QX+vX@V$EBjcd&qyU((){482DToy4$#6PY8REobNig`uNthOEudHZ0&j ze3T}%4<$_738rHiKhTCb0$OvJS}8C!vthC}OgpiFmHVSz5}Qv5n-+`|XwDn~%{Vqk zDcCf(v9UHbyRm@PD*cy|o3DtQOoj?HVU7Sd=ccj3O$(bFYjd*)3z*$Be=ni=fuIqL z6VR9=Ae}>#ra;ruhQ`{^{EP+cs;k2b?H7s6K0>AeqXZnx5da*S6a|^1ZDg#C3}Aaq z(^#{QF??UaxqhSh$ALf8Rnr^b9PHa)-)k0rVGce`Lr?bL`UxHC!9}e+!g-91kG1hh zM>dX>Pb^p$c%f+$AVC2Az?gyWnIm8i2k1KmpjI|O)&|IpY_R*BCK8%Vg61p634F;M z0lPUgUntPDwxO{$G|i9=vr$+`Jh;iiqvjkURHjcmyK z<2DkRV+onsk1ELROal}E{@XZb(lxhj81sDDlJ*U6`k}V6 z!NV&z&z)Sg(LHqR=Jyun%z>&|-jea7H;5Gju3UUg+dU;~x7=90`?~J8r}bL0ck8{m zclQXd`tHqb%?kJTdH>pH?y24T#oivd&%HH!UhkR?EBf?rzrD$Vv$f_e8@%yQyG?sq zA5pdc-RVR7?p(CKcG-q48T+@M@7}fPmd~6|KLuObHC#Hb?~WhluX^YErcH*pR)0HZ z`7@=DHM(j1+#MSOS)d6D9n+wsRITklLQfVQac?v41PF*#4cAM7W|7Jic40S^#%v)EA{ ziJj<3e3Kn~@CI`PZ01Me>-PHMc!LWhHnIqsa&d@&;hC0~{S(~AO$c8ztL;tXMI*x=Xv_TS`!Gz93j23v1 zIRYNw=-jWMB$J*M;_ zA{)wUgjYyx77;d8j1&klM?jEc6Hu_Bu}SUPxP@!u*CHFOV*TvRZ);<-tIzBAoo5U= zFSP3u{JhOA{$4@oqUZz$4jj)M z0mpHQvN%QVVMq~84j6%R3BP|)XoF^L&^|(ZSmV#XC09F$t5yspIEFa_j^M?xo!(E={!2uS7VI2Clp+2~jso&Cs0 z@_vQCN``(ThEf0pKqnus~2zRolWm4vS| zmDmTSwGT{Z1EoHaif-MDg)W?fpV+|%KQc$aUVbG0haZW~QX3j;L(>r1P+QqDBsYzS zo9`GZ@GWx$e8aiV{K$w zA{&WbXF6Kaa}3e*F#`s6Fh{_@IXxdK^pxB5Seu?KWP`P~9w(tWo}l@FaROVJBVY@M z=6wa43L6@0Lvu2+A+J*HBr>NEGH)|V;4S6|_!md!p9(USHZs;m#)E9AH^kYJn;hci zb%qMO#vB2!a&BHxxbfNCSeu*f$OgMU^^nkIDw7K5%2911Z>~{J*faR)dtAg0OcVYO2_d25}N^p%|93^@F;TxJi@Vg zm}BD(AU1WqTS7QTt;yJypW-sKI^&GmWLcZ6A&3vVo(+{;okd*T&rpK(%n@)O=V~42 z%2{ngV{K^8MmE|NM7`lMefqFaSs4!7n>%ta4s{svPxVDT^mUQJ)FrRnYmB8iNfdiK?N5I9LqWKC%Gi{2jP0>tb!#!M|9>v$cL*-G=kVq&fwDTo9vxuFG7%p%j za|G0Kc4jN=oNu#ZZFVj~Hq=LAb0jx&iJO@W6*!MM0%|xnGZb!S+1yy0n+3>5X6#MO zVcwv(LJ#P{sL(Ez^jt>tL>Vv;VUB<>r{`RSo(pVxtWD3A$c7je3Whv+da2JZw5udG zR}(e?Mhf_uBVa1WW{QH%Y#SSEV{-$tk@OY0f!+Xq-ugxf(qaOsoUsEsa|D!ekV+Mh zYHg6L4bm;hM(T`0pC5@?CW%>2#1u0~U@~(AOya~8Da2f86Ju>+Zbvqn#qM{^5sdS^ zrIp6VD_2Q`Rue+w7&S1KIReITghnd}U1TFf)P26@AQP_Ra54@hVpBxr^(PGB%|1PtQP3{;?*YeQpg zX#Rn0m^}{<_{#fZ5}?NkpghJ5^ka^ITn^Bg3PAI0fUFJB)5r$vANGud=2?QKFXIII zFh@Xd4oxown)x;~)`sRqWJ5mwd`Tj+iIC~eD1mOw5zv(*(?vn%VjCH2Bl9}4p+0=r zEV+4uxbZMlpc8WhbmZK0P`J6o=EmCGyp3!$j#b9{*95%*U#ZaEk?6cj=$y=Gfs>dc z;6#p2TLqm3HagZu=L2Me-P&xE(0oYHWHC^K=N z(11At9Go5C?6?;pJ2W}qDx5QiM91}|R34p@a_R7t6zBCeUe?Ad#i`sm1G;rX5IS%U z_Wx2p{wM5Xj(}g#lY@c&jE)=()OmvqjkTdkLpIbFo^;8LM%?^|p#ncJN5J=-n>`9Q zH`?4-o14bS#vk6nNv|9mbu?>>7K{^WAIEc4In@O0O6HK2n ze&7@42-wA8+Nr>FlMR!#VQPhJB!5e^wPdIbG4v6`2DURtz=xcnZ3;s-+YDKop%ah| zv+HSFNz92v%=-)yc#k;(-sQx+qY$&iCdS&tv`02%>vIQ*Oh-cIpNtZClQ{z3;K*!N zkXdRYV{K$QBO6I?pU2^sf`!&ag4C5jdWEqAFEdBLCJxd|3P`uuAXyuvp2$XhpXFYX zncl?A^9&PsjyVFJ<;*;zFtf~N#@fuBfovq{etM<^D3<_wk}(5MFh{`S9H7S(fR@_; zSsS2yWJ7s&I#6OWh_HE>kpd4fN5F#|n+FtZZnd$oHa5eMjf{a_zjsDWUO}ZdTqU&O z5}XkP&N{{l+{+vRYdJV;6mV{{!Lc?tg~$dDLa2KK(?j8@5zp`eg+d!G(HTSN+{tKx zJD4M2HAiQag3byX9c!aA5!rB`p>5`+eZKitw^#niP*V~;R3fZN5FE<&N79a zl{P!pW~T(%aP@3w~?_nGCpLZ$;hxC!LfF{ zQC}!Xqb>_=iiBq>!E-I+1+HO^fU7w?S8;gUs}Y_o{O?F`yRYkhds?q0d$-=3dv}lUs_)+1)~s-UpZBkQ=APQUU+nFX``lZz z=k>1Xu%b`@_S>5*I9qGpvcVe|R@6JW*YnN@+6?$2-iTm1ZJMqWW59IVbm=Ckwff=KI znDs7H5`LKVUi_hrIc$Jl?$=AH)J#ZghU1te8JNSV#WW|1M^=~keWgS78h8C{VQ8uz z%qY&Q_D8E}i0$%_R-A{gkoWUO^z`B}dN_h>Y+O9Z8>!6oSA?+FS7o4u>gI>Sd3cry zhx|>83-C{{f;NYn8R_+fk22Sh7YbA%R3$z?b{umR=li`C5x23T`sE=lEydBmn9>}M zbn_*Q*j{vxr4%<-?yIN{8;F{T_306Fwno|6LtE;E_*{)kTHk}+pVeoRvV#vUXO4i&_>p)iKN6kmY-mhUtO?C@WJB#0 zHA8Y!L)^?~sK7kt2$;*cnWJ!XpUsW6xw!z@kWT_^9&6KcIkJ(w!_z{^&=thcxeObq zVvc|iXDG-SazBU+88_1ppI0=dWw-4M;2~5J-Aub5j|+VwS?IH7=-iG!KG}L_Y5_c# zEOe6@DtF-JWT9`wg}#|A^j$Ml?!bG=LO+ZP-JUFTml-Pe^^;_wU&e)gl`Qo8xX>Sx zh5iy3x-VI%1FMc|!8Sl8VZmx<=(;nCXJ@`8dV@$7+QbZ%Igptww0T@;i)5i~;zEy2 z7J6b_=t;>!JH~}}N*3DH43)TaOBUMO43#<1Cs}B&87kM>FIngyGgKDA;AEjA%uu-l zBa?-WF+=4Jj7=6gDK2z!vd}U!RPKPDEOcsIs6Sa~I4(4jEVRZ9m6>&3EL31+o=@&t zGgRilg~`@>u^B3pbxE?&E8;>IB@4YSF7*0jp-bXImnI8c5f{2LS?FDHp?4<>y)Q0w zeX`I;;zA!y7P=uW^r>W_FT{mzOcwg887digEm`Ql%urddZzT)eVus4KZcP^YZ!=V` zbw{$$&+rGD9PoK8garQ0NB1|VsBK!`#zOJZu1xN|v@lK%_%RlOmw*)hGNAj{xV8P3 zY;CEypn92bp_1@2kr5Z#C|T$caiK>h3q9Hlm05mFEHv(5rVrDr`$`|EPq?r2L2@;e zK1`l4l)gc&hSImF6Nb{4ht*K}0&&7n`o^pgDw9RunoSr=-xXEYO5Ybv7)qatR72^L zkqJZT1AsI+fIa|7A;gUW9ewDHCI`@m-YCQ*X*|AGno*6<*68zH#s=m2lRo2>aD()f zCN-44)|4=mzRsg2gTB&}FqA&QLX!jN6D$-Gmkj#ShOxGsH6wPdU$yp2pf7GvXhT|( zO>X+Qg1TY)$U?#m(@6S8s4PGlQ9ofQjh=3Vj(lxHtJfagJQ-*dbqb}4W9+8!v5iof zpEOQ(!nM-C$TT^C21ce3N;ysDDZxzx->Uma1K=iH8;y5LlLKhHQwpK7=98O7x1`Ad zG`gi3!o%D&exb2JdD5eC3=?jUMy*prY4o~;p)^{V8cL&pcCBpOqV8T#(txFB1*Sivi(%U;~D80p# zFqB@~sNS>v9ZPcqy4W-_72}7wLl@Yq}@}aYa?)dyCp#D@8ibbC?5C5m(f12FXZ-yoZP`?=p zF@G{-G;Zo1L6ZZhdjy4S#TZJ88S19T;WRmb9)~9kp@*KvK6T#EbIh6^!@C1L{G`y> zvc?L?xap~kno@c?lQ5JT;?+=UkWUy&4X|n`HN++irPekhR30PDgbgt;6B$kwv^b1V*7pL@OFqaSUdn4g!xHRVOUEvS-+=ZU##Hc$r9MRfmj?^Mi ze>l`Lr?Wf9o$bzUpP5?`h*dv0vppR>DY&ub#@i^UjK;KJLCh1=FiI))2Q=NQ)3j<4>_s4;d1J5(QTG5(v@GT+ z323<2N*yo`G`|{}3IXciu*cWWm^!@*!U1hOaM z)23v??gq5VqM=&M3wd(;0s$wMK);hpZE7LxfSy(wq~$e9D_<+sB3j6+W%i0jwIDE| zMT^8?FX{(5(WZnW6N}tK`xaJvlRLS)xO0l)MK>xK&^M&Oh9>`!8|veUdE96Uv{>J% zF)f6YNA+#1u<>-Sw^k3f=KCYJrjvjt%4w(OxQ~JhO>N5=*VS|Ff_<5V$9+T;F2F_p zKA8ov3ZE8=74^}g6Jz0We#Y~^#Z_m1@sO}DdO;s;vK9!J2Qj|C7SiA{je1dmKUfYI z*lF*5=|>KdVS$soI4Lq8#Hafq_+c;S9Rd4Yi#km&Iwf5 zF1*mw+1t5GPPdMowCt|kQgBDluRg@IQdqSSy^3}|R!j6btgoa8Jkc2B++XU~eChli zITY@J={~Jo3&FL^3l)O&sMiyVX%W3jb6TV#6!QnQc%7_XDX${nYDo@ll?7D(>G{FLeK&6~>OkRnCi_Gx=4!`hbZZIm|@!cJ>JLYs#vcP9}z_CD658a*Y+XE|QgQMi2=>W#r5e!|a6Zk0z z$e(`%lHmv>*Q-T=Vj(46*J;Ms&vpz@mCoQOUBEam1Vi$wrr1JMiu;~Wfz!p^YLgZIjJR(#NFDPB5;fTIjWb14|-Ffe2VWjOdLEx`Qw zC3=d^kbKCDQUJzT2!`ZUO~HELpP$eFEjgE7GPa7G5m+uG(Od?`ISPzaI9Naa^9$z` zK`zi7kecR+7Q`a(OquSFR<*<7BW0^H zPZXN@y;?LHj`WIn%lt8T+X1gv@;@?^K`({ED2hV}H+sbNkGi(WmyM(YSGV9Pu$i zDF@@61m>^tw;I(=9Qqrn6L}{Ust6!4N(4+QKCmb0We0y9zw5Z_I|Ofol9U*l3N(|! zWZ?5ZPAT}zf1>RP4v0+;7QhVflU(5DPZbJZ&j43s8@nXQW-WlAi>HsFwQH%^w8hvRF`81XtIE_-@V6G_I2~3~{)XmiG&9g#111C8MQ~!+7J>!poC&5z4rif08%-{}X$r;E zRBUHBnd3SKR#*Ox=2|q@fyuyT3!GBBqCE*{u7}l?xoB=cb0e4xY%9Qt;S;icgyzAF z^B-V}t52`Qw@TFq?u0LCHQzkJCX}1Nq~deAp070cTZ@BuGpwfEf@VIN1!xwcS%l_R zG`E4tz(;?a7(VdodA%KGoQuJDP4gOm>vW3py9BnCdI^}5f%c!Ux^f4arD*ZW~*Vw`4AXWKJg9KDLP&c!*)^!f;pMeTm!2sYtgJj^9Y*tU@``Q z!HEq4qi60>m~lP^CNJ?lS#_3v?>$FN#pli`i|h=-+!)W;BzTn>z$jyq=&+hpx+0tyhDL<=QE(xMI}_~ z)rDuP1)nZ#0YP6UR64OLC}V`k{CpW}I8Wj4`=3R3DF%x&*!en@AlAMlTiz z{QdpKqHKfJlo!#wgl0RK417w(DRnejJXh<$|5_yeGOVV&g635)8TeF)Q)&^~lSub9 zSY3G?%^P4c#(}{pwHPg?Tg$?D6INArpm__;+h8)T0E1I%30h1XDXK+b?1a^nf1`N^ z&AVvc1C!wegA>!h=mfnFGtLjd43=N@RfCh`?&$7vVV7)ohwPl}E+=01`4AFKEd`_J zq(1zuMNU3~)s&CXe1c{dn%!tVMY9LZUNrmAe1_(8G+&_EkLCcHFVTDjCSyDpoR}Ys zeku4GW@=mt{sWTp8#M7M6Po~zUR>Xz`W=`7@#3m}iCJA@9iXSq33UPE)x?94VCqCL zdQoM--&z#aAy`fM9?fAi|3&iynj>g_L~|6)PiT&zIgaLMG{2z1jVlaIG8%kr$_T&$ zoLC5qUS1B6Ym^uET&uctI?5sJH=eZ8Ata?3>*;E-=o06up4EHDr5DG$&*gT!@ ztc16?e6~{B+1jnuGV%E}A!|KObbsQdD3yT02IzCSUOdUpR5;eD@dr#*Ndxa{IG#=g zW`^NoSof@~tlaKd23_*9^d1LUqDx*@RhK-FX_vgLc-q*1K~W)9$KjuU`K5M625Tp! zPR5Rj#l=Z!jv0XQ_mCJS2uqSw$03+IsWOwdfS%(ZqIcXV5`G=Mg%aCPQjzVK6u;E-WgTSQLzY6|N783XYNiGc3mC z23&54as`)9=W-*ICv*7>E}scAj;SEmIJ@!A?kpbSnGlY^A3xOEoW*({52ZL?o9xF{ zCx}Q&g9$@%!al<|v1#Dowa|GMB%Y!-BapMD35Y{a$=M>hoGNESnrv?zZ^sO9_QW07 z4QSo?6g=b|!jjl-m_bl8^+i{KMf7k|GBE%qHXV#!+RZ`HOS=Vb;%{7T$>mlk<5fV9 zZq4O$QJ%r&^SImwo&_=xxVNou!)4-464pdUr1RetRHUT7B2Va@&J_Qb2*R8 z15sYU9MSghJ9oA#1E=t1~@C@4&)e)@ZI2vBfJ8f z>La`a0uqlfwgTx#xENB_kMI?^i95LL;c^MeOS$ajvJd5daarSXDav$rRim*=DW2$vUdc_GT{xx9$Wx1#(g$oc`f4ZH@4t!t`sJ1o!- z!D5)XfnG-R4)9sk9pJO#9pHKWn*TNH0G~xVz-J|HItx0$Lz2(|-e94Adsu=w(C7j1 zNe9474?s!$0Mv&Zt84==jyoX@ENYcK&ZWDA^aPid327sjmJ116{PauC3L$L*iB~I9 zV7{u3234Ww!O_e6Ziqdz`qnC4$d#3_P`L+;UhwzA%q&{)Cv|78E%x|ybRX;qyNnk2 zNU6X_&;l=v7kG2XvdUfnn@IdNQ1zmF2vXLGe;7CMBA3^2c`eE>ad{n=A3=FLm)CRo zQIuci@?%`yfbuI`ew@ospp0#J`krj$@{=gP#^tBDyb0ykx%@PjH>3Opm!IMCvnapG z1CuoS^Eccc@x-mUwH?2 zqzxtUJc-0}DT%G)Bxb^ns|;HS6G{9CR6VaBLCQLbALAxI=JF?8-i7ifT;9#)Pf^~* z9i}G$R@8j}kC}V@7zRAzI`~}L`#Hh>rxqJZSy0p zQ~i8<5CRezI|QnJWSx+*&R8mL;(IQqaalq6Fqc&>*F_myS@lHl7s7fX^-#ukS6x1h z%Py3UaJfF0Gf>91Sv|S|mm8vdl*^}cxe?0Peyc~H!R0ei#ui;&K8wqZQ9jP)CR{!n z<)69Sl*`Rf{)Nkb;qo~s!@sJuGr8OxWya+eTyBYSGM8I%xi!jlxO^^`&qFx{WR4!a zIlIze0Zz$GjfcdADj95w3zXl}u7nAk<%Qp`;t!bfHE4Jo4+efHjg6bIO+*( zny{1YCTw^C5O2b61IIay|EN+`+JcKUJ5_0iJnke{74|l9RQ49V#O#P)Vqi_U`eXn! z;u3>c;^b&xqr_iVP!8N&sT75JzP%Q<}C*G&MA&>2#YW zYtz&fh%tK#Rh4dntnNtGRss`yo;WIdj*_)SBCC-hS!dW}S(~g&fEYD?oq|y#RHc`I zsW-y3iSWaoB96+Qq%duiU^>$XCU!QcSfPV-^~n+c%Q9gB-Wr*sIas@j#Rq@k=vk7a%Xd8&MJxTy$>xrYXM<{LUB-&a4G@^=yEaBv6X`{sXv1S!(7!YHAQyebH z%15$R6PVb8#8KG;l&n<}S*;AoYHgEcZL&rIF~9ltR#ip|#Ks_ED+yKXZsMqH1x0MR zgxI-;h@EF6W^Kf-0Ai$imq)-fcr%qg+-Sk1fZkknjeu$;xd zlqN_hbuvV$vyGCqQMw(7;SY9r+f$Xrf~F-%lSTkyKH{j%OKB>RXzF4}(}gxo)~4w$ zAV$>2mkE%TBS_;2JFJK}DjQ2d8Y6+!)exj^Hb~Y6={_KaUzTu$Fjcu<(6kC^8bJVJ zg~U-=0i`KlqN%$PO)mWT8@|*_PHF{j^=3eo4IJ#5iGF@TuN)l21v?^cn>B91^35Z+ z`tE2~cgf)yWpy^({l@Ie%eT1(UG~O%^Rj2L^68$E(IYmiEBfBNctNW}B@caYd&O6a zI}SxTsINUG=XY zuAJGp&YO?5*?y>5!}8FJ@y>_ z`#tY`-=O|L=e^&}x@(K~$$Cph&)%~wn3=zt?fN12p+T27KKAUof4}6vVE?U)*Zgo> z)}Vf2wP4rwvpz1oa^ILwa#v`+GsYfk^Kt7V_pZ5}Ujruysf4Z-=jS>+KZlT0k_{$~$_CN%bD(s7_5)}V-?R6(QL^^c{&67Y1m1=| zArRY$i1j5@u|C96SuRDaw}jXLL&WlI#H@|jGe8V)iHZMe&J9DY1f#0*tiWmuV%3w7 z#Ci}%WfxJbx=UCMG{kCQWmhYXkKz5F^@V z-V-3bk07-s?66kEQCUk0QVR*BVTK?Lw?VQtNV|ZT)+PfM=;H}R3be>%Ka7{ID!T<| zpCV_?2wJQuaa49T<*bRsS-v4>1vY2a=Ijd~rllEYd7<)(n7c4s;Vn~@{erRsNLeES z7CW6dDr-n7YamfpXhfN7B&eD2-)ycBEr4vVGb?N!3O6TVl08L`spvOkZ+IN8?K#cq*=tn`*QKTt_0K^=` zQCS^IQ?f);i6Kp1nGbGDzlVxqP&H`dceY~+isR^RAkI=*R z5=UiwC`zA7C{3U!i67idv{AA)N|`{6^t00D0;U!S(?^6K_91ap_5p?IeF>(3AxuFV zCTqjg28d}I|9wP$1$<#KsJWr>*zXDWr|BOwfg#caUhNRCorEa%HgRBxG>X>_39pbL zUSS(AYvYv-#E7T8905`X1nE`64ts?-Fgh9qX}bhcxgkiCY>=!CQdb~GZiMP4XzGqM zZ6yG)=ZOO&qEVW*NHj$ZX^Pr3S(~OyfEZF6?f;7bj$=VHKT7^BXwiv?3lkSUE|#C*hoq2nl1B@$B$4VhYG zGi7b2?gC=WJHIXyWGzRs#u1oU5piHFIZD|G#+swFNSF%wMfrU z0t_2M9F+~G^bC^dS!UB?ZF(L9HkwxdfM`_6@+olTRqY5D+&5w8$F6d-+s zAhjUuu;#>3StbSP90{aH3_)6NgJf-x_5d+PuMqYMruHFIO$bJ;F>zFO7G>&8iK#~o znR?7-%GykQ3B-_E(^mqeuMwpNgdUbb9F^6lD7hq*Hc*sA&)~;xl&p=?As|NF=e`#p z9Y&B;!VXi2qp~y#QmO>f6NVsdv_Y~qNIwBFa`pR|py@c$luQ6(j5sPwqBQ;T6CHKz zNkf{RvT3q5O?4d79nJx6)c|%WFvpGpB8TGx)3G0kqp~C5i2>|>kWkuWh|<$GO4dfH zE)Zk#+n02KRXxP&AR&o;M;w)XOR@S!!fLZ2R?pa2SsSZ{K#cS|;?o68jS!{-gdet_ zI4b*s!t}WW)3b&!ZLwjpHcV#&G30@+sX(b2qVy@DhwUbg%63tdK9Nv*&Jd;NZIrBy zQcEC4JkYfgAhkx2-Y4v^_lTpicPU8kNFZ%B1nC7EBx{3oJ`f{6(6tvdU4S(0AONv9 ziKDVNC{3?RG;K4a=|!6+Ytz&bh!J1;stkF8ey^%@5lTrTT2|3t)VbIEWz}; zAxv-BFj*U>0w5-F6sST$)CeSM6@iG|PaKuqM~S*uBI->;qITFsS(~V_gs1||TM_Zc zpa*@CAZi>EwVXi2mJvr~cTuA5l!$uEh$!|BsQh<^@Cq=gtVvSR+@bJ0!;fs#tc{u% zP$IQ+pI}Tw#+DGQ*ka~_l7Z4zT2Q^v5XJx-2KY?Q2x(nKIeZifm8nu18vd;$== zg*Ym^nbLHVMAI%qns(bXS(~OP5M%ml#QyNJL{*6iyebf{xr8WoJ#kca9mVTf39nBL z@!DhKWo^8!1Y$DHe(c&m;wdlF$8x<&AT}Kln@Ol**APc#GbmzLONi|?L~Ngpn6(j` z1;m*DmT|TqYYvh%jljeziKDWql&mQdS)Un_^|?)!waK~xh)J1R=nue6FbxiNRgb%Q z$Wer#!zK|&W#yEku*A_9h8*p;IkGlK3xF8Wp1u&ADv%Z-ND~M<%ugJZl~It!OCTLE z1nEl~Bx{58Pawv$vR*ZG$Q=T&rHEGvA&Pm3qp~X~Ud0k#Um4={wT+jx@mc}Iqz=_$ z-mp))C0Eppz%rEnYeBmikcfW8X2%qhE z5EfP4|5hVb`Gh1koH!~QMzOk7!s=T?tiH3cvNl$a05Q`0HA zf-y#`8#H$!NbLwatSxb1FenPrc@juR4MF9EeJ)dIdNcED2miM5>m&EkYX^5q~3E1{vn(K$AEkVw#PTwJ%#=0x@mk111j%`+WY;_+G>E z+=bzAV4^?f#*0`UerK=L%HN9h<-^$Za^%|^`Hh}B8?wT@H{SXxC^3e2&iKuqvWqfYqNDW5aSxEO^Jm=(Qs+ZJun&$sY+8&t8RPEkf=`y zL~J*4VCX4I)F%>AjSPu8!zRkwM70EBvF5;V0&n%*Y>vG<4r<4;kV-jQfJ(~zdK zY?`c1)A>M5MnPpXrUl(YJR#3`EeOr;s?uICbpbN9gJ8toBo2&1MVWeCVydwrQ%!89 ztj$zMAVwV$4u##hn%5tI5vT-Aoe`$(gdg@2abN^03ez?Trn3!UYHGt|ZI~_sVoZCd zSN)W=k)w?S9rgrqU{ET` z(FTd5a|}7kv^laiM}vTvGvf8A{EAS_AJp8r9&Z`E4OErEu(0ZJZwP|5jKulWp z08bg4(w!1YtqoB+*G9?OD0zVxlV4)_U{Te*PD8Ag z5R%wp;=mwO6sy}Ltj;sS%GDNB{gcKUrWK8B+-cYKtQ{yupEP#mB!qS_3+={3XSYA{ zbhCXa1+2SSXfGZrcA&ReXkJ3-K(o-{JXGvJzFFw#gwQc&p&lM8_O-+;)SnPK!7OxA zLTJP!l;PLyT+r>3xhfM@nr5<+>zahnnP#Ea^UyUH7hj#RQ|->?nuXrNLq%E4Hw#^y z5W2)HbXh{^aM9Y%~jfmWPTG*kTs?5)T!rZZ`{klZT2! zu){3$Jsv7{;C-{u-8@w6z^7)R`x8PBn1z1FL&XjpGz3WQ_t_&V3N}z#Rs*QQ5$W{}x(B=uDEzCmOCWN*#3(ZLg?O+z#Eg`hK zS!l0>(B5XDc?qEd%|eGKgyx%tj!p<2V;1U32rV%S_481{zy!0*oawZB@Y#; zPBRO=hKGt&XPSjxpAb6NEcBLy(D`Pei+QNn*Cp}LgtK574;5#@a!hN1X1OF0z3YH1kifZ~%wQ$R5cP3NH^TlLIBPv@cH5HvCiZJH3;%q+B3 zLTGEV(Dn(T7np^1;-Mm2oy|gf@KBMho@Swa5<>f$g$_;#9by(*m=HR`EVPJ+ifoND z3-$3(kuA+EG>{M)Gz*RKP;tgqn1x=I5IWr~baq1M9FtHsFTMb;OgMq7Pp*YL4UykP zCTY0t;GrTDOHD%A%J>4jbkWK6AWuVVZna4ouJs9_kD7%(#Y4BHL)H#?6u8JUwh(>%Nf2d#!#H-9ms{R{Pa*!H2CVzC{>2 Date: Fri, 13 Jul 2018 20:28:26 -0700 Subject: [PATCH 018/110] Finished writing dialogue scraper. Needs to be tested. --- Vocalization/Vocalization/Vocalization.cs | 600 +++++++++++++++--- Vocalization/Vocalization/Vocalization.csproj | 1 + .../Vocalization/bin/Debug/Netcode.dll | Bin 76800 -> 76800 bytes .../Vocalization/bin/Debug/Netcode.pdb | Bin 239104 -> 241152 bytes .../bin/Debug/Vocalization 0.0.1.zip | Bin 116994 -> 129223 bytes .../Vocalization/bin/Debug/Vocalization.dll | Bin 15872 -> 26624 bytes .../Vocalization/bin/Debug/Vocalization.pdb | Bin 32256 -> 54784 bytes .../Vocalization.csproj.FileListAbsolute.txt | 1 + ...ation.csprojResolveAssemblyReference.cache | Bin 80837 -> 120072 bytes .../Vocalization/obj/Debug/Vocalization.dll | Bin 15872 -> 26624 bytes .../Vocalization/obj/Debug/Vocalization.pdb | Bin 32256 -> 54784 bytes 11 files changed, 522 insertions(+), 80 deletions(-) diff --git a/Vocalization/Vocalization/Vocalization.cs b/Vocalization/Vocalization/Vocalization.cs index bbfe22be..cb8ce092 100644 --- a/Vocalization/Vocalization/Vocalization.cs +++ b/Vocalization/Vocalization/Vocalization.cs @@ -14,42 +14,67 @@ namespace Vocalization /* * Things to sanitize/load in * - * NPC Dialogue(sanitized, not loaded); + * NPC Dialogue(sanitized, not loaded); + * -Characters/Dialogue/CharacterName * Rainy Dialogue(sanitized, not loaded); + * -Characters/Dialogue/rainy.yaml * Marriage dialogue(sanitized?,not loaded); + * -Characters/Dialogue/MarriageDialogue * Engagement dialogue(sanitized, not loaded); + * -Data/EngagementDialogue + * Misc + * -Strings/StringsFromCS.yaml * * TV shows * -cooking (sanitized, not loaded) + * -Data/TV/CookingChannel.yaml * -interview(sanitized, not loaded) + * -Data/TV/InterviewShow.yaml * -tip(sanitized, not loaded) + * -Data/TV/TipChannel.yaml * -oracle(sanitized, not loaded) + * -Strings/StringsFromCS.yaml * -weather(sanitized, not loaded) + * -Strings/StringsFromCS.yaml * * - * Shops - * Extra dialogue - * Letters - * Events + * Shops(sanitized, not loaded); + * -Strings/StringsFromCS.yaml + * Extra dialogue(sanitized, not loaded); + * -Data/ExtraDialogue.yaml * + * Letters(sanitized, not loaded); + * -Data/mail.yaml * - * Strings/Characters.yaml - * Strings/Events.yaml - * Strings/Locations.yaml - * Strings/Notes.yaml - * Strings/Objects.yaml - * Strings/StringsFromCSFiles.yaml - * -npc - * -events - * -tv shows - * -utility - * Strings/StringsFromMaps.yaml + * Events(sanitized, not loaded); + * -Strings/StringsFromCS.yaml + * -Strings/Events.yaml + * + * Characters: + * -Strings/Characters.yaml (sanitized, not loaded); + * + * Strings/Events.yaml (sanitized, not loaded); + * -Strings/StringsFromCS.yaml + * + * Strings/Locations.yaml(sanitized, not loaded); + * -Strings/Loctions.yaml + * -Strings/StringsFromMaps.yaml + * + * Strings/Notes.yaml(sanitized, not loaded); + * -Strings/Notes.yaml + * -Data/SecretNotes.yaml + * + * Strings/Objects.yaml (not needed); + * + * Utility + * -Strings/StringsFromCS.yaml */ - /// public Dictionary dialogueCues; - public string path; /// /// Constructor. /// /// The name of the NPC. - public CharacterVoiceCue(string name,string path) + public CharacterVoiceCue(string name) { this.name = name; this.dialogueCues = new Dictionary(); this.stringsFileNames = new List(); this.dialogueFileNames = new List(); this.dataFileNames = new List(); - this.path = path; } /// @@ -83,5 +81,67 @@ namespace Vocalization.Framework } } + + public void initializeEnglishScrape() + { + if (name == "TV") + { + dataFileNames.Add("CookingChannel.xnb"); + dataFileNames.Add("InterviewShow.xnb"); + dataFileNames.Add("TipChannel.xnb"); + stringsFileNames.Add("StringsFromCSFiles.xnb"); + + } + else if (name == "Shops") + { + stringsFileNames.Add("StringsFromCSFiles.xnb"); + } + else if (name == "ExtraDialogue") + { + dataFileNames.Add("ExtraDialogue.xnb"); + } + else if (name == "LocationDialogue") + { + stringsFileNames.Add("Locations.xnb"); + stringsFileNames.Add("StringsFromMaps.xnb"); + } + else if (name == "Events") + { + stringsFileNames.Add("Events.xnb"); + stringsFileNames.Add("StringsFromCSFiles.xnb"); + + } + else if (name == "Mail") + { + dataFileNames.Add("mail.xnb"); + } + else if (name == "Characters") + { + stringsFileNames.Add("Characters.xnb"); + } + else if (name == "Notes") + { + stringsFileNames.Add("Notes.xnb"); + dataFileNames.Add("SecretNotes.xnb"); + } + else if (name == "Utility") + { + stringsFileNames.Add("StringsFromCSFiles.xnb"); + } + else + { + dialogueFileNames.Add(name + ".xnb"); + dialogueFileNames.Add("rainy.xnb"); + dialogueFileNames.Add("MarriageDialogue.xnb"); + dialogueFileNames.Add("MarriageDialogue"+name+".xnb"); + + dataFileNames.Add("EngagementDialogue.xnb"); + + stringsFileNames.Add("StringsFromCSFiles.xnb"); + } + + + + } } } diff --git a/Vocalization/Vocalization/ModConfig.cs b/Vocalization/Vocalization/ModConfig.cs index aeaf7bc1..1d3b9ac3 100644 --- a/Vocalization/Vocalization/ModConfig.cs +++ b/Vocalization/Vocalization/ModConfig.cs @@ -6,9 +6,18 @@ using System.Threading.Tasks; namespace Vocalization { + /// + /// The configuration file for the mod. + /// public class ModConfig { + /// + /// A list of all of the translations currently supported by this mod. + /// public List translations; + /// + /// The currently selected translation to use. + /// public string currentTranslation; public ModConfig() diff --git a/Vocalization/Vocalization/Vocalization.cs b/Vocalization/Vocalization/Vocalization.cs index cb8ce092..b4ef4dfa 100644 --- a/Vocalization/Vocalization/Vocalization.cs +++ b/Vocalization/Vocalization/Vocalization.cs @@ -20,10 +20,11 @@ namespace Vocalization * -Characters/Dialogue/rainy.yaml * Marriage dialogue(sanitized?,not loaded); * -Characters/Dialogue/MarriageDialogue + * -Characters/Dialogue/MarriageDialogue.yaml * Engagement dialogue(sanitized, not loaded); - * -Data/EngagementDialogue + * -Data/EngagementDialogue.yaml * Misc - * -Strings/StringsFromCS.yaml + * -Strings/StringsFromCSFiles.yaml * * TV shows * -cooking (sanitized, not loaded) @@ -33,13 +34,14 @@ namespace Vocalization * -tip(sanitized, not loaded) * -Data/TV/TipChannel.yaml * -oracle(sanitized, not loaded) - * -Strings/StringsFromCS.yaml + * -Strings/StringsFromCSFiles.yaml * -weather(sanitized, not loaded) - * -Strings/StringsFromCS.yaml + * -Strings/StringsFromCSFiles.yaml * * * Shops(sanitized, not loaded); - * -Strings/StringsFromCS.yaml + * -Strings/StringsFromCSFiles.yaml + * * Extra dialogue(sanitized, not loaded); * -Data/ExtraDialogue.yaml * @@ -47,14 +49,14 @@ namespace Vocalization * -Data/mail.yaml * * Events(sanitized, not loaded); - * -Strings/StringsFromCS.yaml + * -Strings/StringsFromCSFiles.yaml * -Strings/Events.yaml * * Characters: * -Strings/Characters.yaml (sanitized, not loaded); * * Strings/Events.yaml (sanitized, not loaded); - * -Strings/StringsFromCS.yaml + * -Strings/StringsFromCSFiles.yaml * * Strings/Locations.yaml(sanitized, not loaded); * -Strings/Loctions.yaml @@ -182,8 +184,9 @@ namespace Vocalization /// private void MenuEvents_MenuClosed(object sender, StardewModdingAPI.Events.EventArgsClickableMenuClosed e) { - //Clean out my previous dialogue swhen I close any sort of menu. + //Clean out my previous dialogue when I close any sort of menu. previousDialogue = ""; + if (String.IsNullOrEmpty(soundManager.previousSound.Key) || soundManager.previousSound.Value == null) return; soundManager.stopPreviousSound(); } @@ -242,7 +245,7 @@ namespace Vocalization { ModMonitor.Log("New unregistered dialogue detected for NPC: " + speakerName + " saying: " + currentDialogue, LogLevel.Alert); ModMonitor.Log("Make sure to add this to their respective VoiceCue.json file if you wish for this dialogue to have voice acting associated with it!", LogLevel.Alert); - ModHelper.WriteJsonFile(voice.path, voice); //If the dialogue was overlooked somehow, just add it to the player's dialogue lines. + } } } @@ -250,6 +253,7 @@ namespace Vocalization } else { + if (Game1.activeClickableMenu == null) return; //Support for TV if (Game1.activeClickableMenu.GetType() == typeof(StardewValley.Menus.DialogueBox)) { @@ -282,7 +286,7 @@ namespace Vocalization { ModMonitor.Log("New unregistered dialogue detected saying: " + currentDialogue, LogLevel.Alert); ModMonitor.Log("Make sure to add this to their respective VoiceCue.json file if you wish for this dialogue to have voice acting associated with it!", LogLevel.Alert); - ModHelper.WriteJsonFile(voice.path, voice); //If the dialogue was overlooked somehow, just add it to the player's dialogue lines. + } } } @@ -318,8 +322,6 @@ namespace Vocalization { ModMonitor.Log("New unregistered Mail dialogue detected saying: " + currentDialogue, LogLevel.Alert); ModMonitor.Log("Make sure to add this to their respective VoiceCue.json file if you wish for this dialogue to have voice acting associated with it!", LogLevel.Alert); - voice.addDialogue(currentDialogue, ""); - ModHelper.WriteJsonFile(voice.path, voice); } } @@ -337,7 +339,7 @@ namespace Vocalization //Add in support for Shops - CharacterVoiceCue voice=new CharacterVoiceCue("",""); + CharacterVoiceCue voice=new CharacterVoiceCue(""); try { //character shops @@ -360,8 +362,6 @@ namespace Vocalization { ModMonitor.Log("New unregistered dialogue detected saying: " + currentDialogue, LogLevel.Alert); ModMonitor.Log("Make sure to add this to their respective VoiceCue.json file if you wish for this dialogue to have voice acting associated with it!", LogLevel.Alert); - voice.addDialogue(currentDialogue, ""); - ModHelper.WriteJsonFile(voice.path, voice); } } @@ -460,6 +460,27 @@ namespace Vocalization characterDialoguePaths.Add(extra); } + foreach (var translation in translationFolders) + { + string kent = Path.Combine(translation, "Kent"); + characterDialoguePaths.Add(kent); + + + string gil = Path.Combine(translation, "Gil"); + characterDialoguePaths.Add(gil); + + + string governor = Path.Combine(translation, "Governor"); + characterDialoguePaths.Add(governor); + + + string grandpa = Path.Combine(translation, "Grandpa"); + characterDialoguePaths.Add(grandpa); + + + string morris = Path.Combine(translation, "Morris"); + characterDialoguePaths.Add(morris); + } if (!Directory.Exists(contentPath)) Directory.CreateDirectory(contentPath); @@ -512,13 +533,14 @@ namespace Vocalization //If a file was not found, create one and add it to the list of character voice cues. if (!File.Exists(voiceCueFile)) { - CharacterVoiceCue cue = new CharacterVoiceCue(characterName, Path.Combine(dir, "VoiceCues.json")); - scrapeDictionaries(cue); + CharacterVoiceCue cue = new CharacterVoiceCue(characterName); + cue.initializeEnglishScrape(); + scrapeDictionaries(voiceCueFile,cue); } else { CharacterVoiceCue cue = ModHelper.ReadJsonFile(voiceCueFile); - scrapeDictionaries(cue); + scrapeDictionaries(voiceCueFile,cue); } } } @@ -528,18 +550,21 @@ namespace Vocalization /// Used to obtain all strings for almost all possible dialogue in the game. /// /// - public void scrapeDictionaries(CharacterVoiceCue cue) + public void scrapeDictionaries(string path,CharacterVoiceCue cue) { var dialoguePath = Path.Combine("Characters", "Dialogue"); var stringsPath = Path.Combine("Strings"); //Used for all sorts of extra strings and stuff for like StringsFromCS var dataPath = Path.Combine("Data"); //Used for engagement dialogue strings, and ExtraDialogue, Notes, Secret Notes, Mail + ModMonitor.Log("Scraping dialogue for character: " + cue.name,LogLevel.Info); //If the "character"'s name is TV which means I'm watching tv, scrape the data from the TV shows. if (cue.name == "TV") { + foreach (var fileName in cue.dataFileNames) { + ModMonitor.Log(" Scraping dialogue file: " + fileName,LogLevel.Info); //basically this will never run but can be used below to also add in dialogue. if (!String.IsNullOrEmpty(fileName)) { @@ -618,6 +643,7 @@ namespace Vocalization foreach (var fileName in cue.stringsFileNames) { + ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); //basically this will never run but can be used below to also add in dialogue. if (!String.IsNullOrEmpty(fileName)) { @@ -635,9 +661,11 @@ namespace Vocalization //If the key contains the character's name. List cleanDialogues = new List(); cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + string ahh = sanitizeDialogueFromMailDictionary(str); + cue.addDialogue(ahh, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } @@ -654,6 +682,7 @@ namespace Vocalization { foreach (var fileName in cue.stringsFileNames) { + ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); //basically this will never run but can be used below to also add in dialogue. if (!String.IsNullOrEmpty(fileName)) { @@ -694,6 +723,7 @@ namespace Vocalization { foreach (var fileName in cue.dataFileNames) { + ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); //basically this will never run but can be used below to also add in dialogue. if (!String.IsNullOrEmpty(fileName)) { @@ -727,6 +757,7 @@ namespace Vocalization { foreach (var fileName in cue.stringsFileNames) { + ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); //basically this will never run but can be used below to also add in dialogue. if (!String.IsNullOrEmpty(fileName)) { @@ -760,15 +791,16 @@ namespace Vocalization { foreach (var fileName in cue.stringsFileNames) { + ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); if (!String.IsNullOrEmpty(fileName)) { string dialoguePath2 = Path.Combine(stringsPath, fileName); var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); //Scrape Strings/Events.yaml for dialogue strings - if (fileName.Contains("StringsFromCS")) + if (fileName.Contains("StringsFromCSFiles")) { - //Scrape Strings/StringsFromCS.yaml + //Scrape Strings/StringsFromCSFiles.yaml foreach (KeyValuePair pair in DialogueDict) { //Get the key in the dictionary @@ -810,6 +842,7 @@ namespace Vocalization { foreach (var fileName in cue.dataFileNames) { + ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); //basically this will never run but can be used below to also add in dialogue. if (!String.IsNullOrEmpty(fileName)) { @@ -835,9 +868,10 @@ namespace Vocalization //Used to scrape Content/strings/Characters.yaml. else if (cue.name == "Characters") - { + { foreach (var fileName in cue.stringsFileNames) { + ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); if (!String.IsNullOrEmpty(fileName)) { string dialoguePath2 = Path.Combine(stringsPath, fileName); @@ -874,6 +908,7 @@ namespace Vocalization //Used mainly to scrape Content/Strings/Notes.yaml foreach (var fileName in cue.stringsFileNames) { + ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); //basically this will never run but can be used below to also add in dialogue. if (!String.IsNullOrEmpty(fileName)) { @@ -904,16 +939,17 @@ namespace Vocalization //Used mainly to scrape Content/Data/SecretNotes.yaml foreach (var fileName in cue.dataFileNames) { + ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); if (!String.IsNullOrEmpty(fileName)) { string dialoguePath2 = Path.Combine(dataPath, fileName); - var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); + var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); //Scrape the whole dictionary looking for the character's name. - foreach (KeyValuePair pair in DialogueDict) + foreach (KeyValuePair pair in DialogueDict) { //Get the key in the dictionary - string key = pair.Key; + int key = pair.Key; string rawDialogue = pair.Value; //If the key contains the character's name. @@ -937,6 +973,7 @@ namespace Vocalization { foreach (var fileName in cue.stringsFileNames) { + ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); //basically this will never run but can be used below to also add in dialogue. if (!String.IsNullOrEmpty(fileName)) { @@ -965,10 +1002,17 @@ namespace Vocalization { foreach (var fileName in cue.dialogueFileNames) { + ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); //basically this will never run but can be used below to also add in dialogue. if (!String.IsNullOrEmpty(fileName)) { string dialoguePath2 = Path.Combine(dialoguePath, fileName); + string root=Game1.content.RootDirectory;///////USE THIS TO CHECK FOR EXISTENCE!!!!! + if (!File.Exists(Path.Combine(root,dialoguePath2))) + { + ModMonitor.Log("Dialogue file not found for:" + fileName+". This might not necessarily be a mistake just a safety check."); + continue; //If the file is not found for some reason... + } var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); //Scraping the rainy dialogue file. @@ -994,10 +1038,11 @@ namespace Vocalization continue; } - if (fileName.Contains("MarriageDialogue")) + //Check for just my generic file + if (fileName.Contains("MarriageDialogue") && !fileName.Contains("MarriageDialogue"+cue.name)) { //Scrape the whole dictionary looking for other character's names to ignore. - + if (!replacementStrings.spouseNames.Contains(cue.name)) continue; foreach (KeyValuePair pair in DialogueDict) { //Get the key in the dictionary @@ -1030,6 +1075,28 @@ namespace Vocalization } + //Check for character specific marriage dialogue + if (fileName.Contains("MarriageDialogue"+cue.name)) + { + //Scrape the whole dictionary looking for other character's names to ignore. + if (!replacementStrings.spouseNames.Contains(cue.name)) continue; + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + //If the key contains the character's name or is generic dialogue. + if (key.Contains(cue.name)) + { + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + } + } + } foreach (KeyValuePair pair in DialogueDict) { string rawDialogue = pair.Value; @@ -1044,7 +1111,15 @@ namespace Vocalization } foreach (var fileName in cue.dataFileNames) { + ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); string dialoguePath2 = Path.Combine(dataPath, fileName); + string root = Game1.content.RootDirectory;///////USE THIS TO CHECK FOR EXISTENCE!!!!! + if (!File.Exists(Path.Combine(root, dialoguePath2))) + { + ModMonitor.Log("Dialogue file not found for:" + fileName + ". This might not necessarily be a mistake just a safety check."); + continue; //If the file is not found for some reason... + } + var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); //Load in engagement dialogue for this npc. @@ -1072,11 +1147,18 @@ namespace Vocalization } foreach (var fileName in cue.stringsFileNames) { + ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); string dialoguePath2 = Path.Combine(stringsPath, fileName); + string root = Game1.content.RootDirectory;///////USE THIS TO CHECK FOR EXISTENCE!!!!! + if (!File.Exists(Path.Combine(root, dialoguePath2))) + { + ModMonitor.Log("Dialogue file not found for:" + fileName + ". This might not necessarily be a mistake just a safety check."); + continue; //If the file is not found for some reason... + } var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); //Load in super generic dialogue for this npc. This may or may not be a good idea.... - if (fileName.Contains("StringsFromCS")) + if (fileName.Contains("StringsFromCSFiles")) { //Scrape the whole dictionary looking for the character's name. foreach (KeyValuePair pair in DialogueDict) @@ -1100,7 +1182,7 @@ namespace Vocalization } } - ModHelper.WriteJsonFile(cue.path, cue); + ModHelper.WriteJsonFile(path,cue); DialogueCues.Add(cue.name, cue); } diff --git a/Vocalization/Vocalization/bin/Debug/Vocalization 0.0.1.zip b/Vocalization/Vocalization/bin/Debug/Vocalization 0.0.1.zip index 62772ca88408b86a3908194827f9f0677d657be0..b657e46586656b992bf2273b94745a566842c4d0 100644 GIT binary patch delta 29743 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 Gf&T>x-kmuB literal 26624 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 Z;-L~aR04-e;7|!1DuF{K@Ruop{|C#fr$hh% literal 54784 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½?YIFJr1=Wg zF(*GgFKs*tnulF!eu@Xu^mVLlTfN`wr>Vbdhi&3Nd`H~`Y5RKCo*N9w)?Rj*y@WcHy zTF{pTcDhI9+ZBCi7^LTiTRZx(z)sJve7m9#w*osq+}hEH1$KJQ;@cH{2ou=(;nt4+ zD_j zFq?1st|QxjMhU2ozv!42E>+8QY3YUKoi&-qv%ek>y<4Jd-AM|xo353sn*D!lv0l#p z{r;Zf(q16@zGd_`jLbHP-%wP>Z%A%>T2A)GX$9H2p>0c#L&P6W%xTfNTk~$M+jR47e>sh^`p&S~c5(o}cnsb1n4esf zn>Qx8YgSrbS~{~EGiB(?8j3Dm+O+H1I>jb=h~qlW*=6p$QvUQAhnePCndT2Oj%8XF zJl<{F_LSBwx}?yTob*ugmq9#*{ z;uy3=!%{d#J=kNO)kyfH`Bc; zr)&Gv!TFha`Kj3{NdpTeWYADkQ!?|%6y%OiwM)lR!>8%Nh2-@7-xyorshaxp)8@Cw zUf7xa_NWeI^k;pFBH#DLzAscowwi2-167K@l?v@22xo6eatn9<*j~eATkMop*A82^ zrsvX{U)C)>{NV~WV>v#E|*AaN<- zT9c{wP#Nl+q3mn?;Ict$D9pp-beMt5#HqEF#;Ku}!Ii+NC91Wm1(w2T9-)?59;dme z@>mh4xu@nIRdAYv>e-Q=)zrXgbx18-ZCnzr4ore_u!jF`|krMc?ErI_Bx;MP@ diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.FileListAbsolute.txt b/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.FileListAbsolute.txt index aa52d96f..95c8cbb8 100644 --- a/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.FileListAbsolute.txt +++ b/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.FileListAbsolute.txt @@ -8,4 +8,3 @@ C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\bin\Debug\Netcode. C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\obj\Debug\Vocalization.csproj.CopyComplete C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\bin\Debug\SimpleSoundManager.dll C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\bin\Debug\SimpleSoundManager.pdb -C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\obj\Debug\Vocalization.csprojResolveAssemblyReference.cache diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.dll b/Vocalization/Vocalization/obj/Debug/Vocalization.dll index 0046275e0cfe48d74f4594a466a091a1fcc7bc2f..2a95354d6212611712e41f4c37e8e5a268fced93 100644 GIT binary patch literal 29696 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 Gf&T>x-kmuB literal 26624 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 Z;-L~aR04-e;7|!1DuF{K@Ruop{|C#fr$hh% literal 54784 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½?YIFJr1=Wg zF(*GgFKs*tnulF!eu@Xu^mVLlTfN`wr>Vbdhi&3Nd`H~`Y5RKCo*N9w)?Rj*y@WcHy zTF{pTcDhI9+ZBCi7^LTiTRZx(z)sJve7m9#w*osq+}hEH1$KJQ;@cH{2ou=(;nt4+ zD_j zFq?1st|QxjMhU2ozv!42E>+8QY3YUKoi&-qv%ek>y<4Jd-AM|xo353sn*D!lv0l#p z{r;Zf(q16@zGd_`jLbHP-%wP>Z%A%>T2A)GX$9H2p>0c#L&P6W%xTfNTk~$M+jR47e>sh^`p&S~c5(o}cnsb1n4esf zn>Qx8YgSrbS~{~EGiB(?8j3Dm+O+H1I>jb=h~qlW*=6p$QvUQAhnePCndT2Oj%8XF zJl<{F_LSBwx}?yTob*ugmq9#*{ z;uy3=!%{d#J=kNO)kyfH`Bc; zr)&Gv!TFha`Kj3{NdpTeWYADkQ!?|%6y%OiwM)lR!>8%Nh2-@7-xyorshaxp)8@Cw zUf7xa_NWeI^k;pFBH#DLzAscowwi2-167K@l?v@22xo6eatn9<*j~eATkMop*A82^ zrsvX{U)C)>{NV~WV>v#E|*AaN<- zT9c{wP#Nl+q3mn?;Ict$D9pp-beMt5#HqEF#;Ku}!Ii+NC91Wm1(w2T9-)?59;dme z@>mh4xu@nIRdAYv>e-Q=)zrXgbx18-ZCnzr4ore_u!jF`|krMc?ErI_Bx;MP@ From b127a000a52ebda9b2a2e5d9dd57d521100e3790 Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Tue, 17 Jul 2018 22:38:15 -0700 Subject: [PATCH 020/110] Made a mod. Shaders? --- ShaderExample/ShaderExample.sln | 25 +++ ShaderExample/ShaderExample/Class1.cs | 197 ++++++++++++++++++ .../Content/Shaders/GreyScaleEffect.xnb | Bin 0 -> 1176 bytes .../Content/Shaders/NoEffect.xnb | Bin 0 -> 752 bytes .../ShaderExample/Framework/Delegates.cs | 15 ++ .../ShaderExample/Framework/DrawManager.cs | 84 ++++++++ .../Framework/Drawers/Characters.cs | 41 ++++ .../ShaderExample/Framework/Drawers/Layer.cs | 65 ++++++ .../Framework/Drawers/Monsters.cs | 13 ++ .../ShaderExample/Properties/AssemblyInfo.cs | 36 ++++ .../ShaderExample/ShaderExample.csproj | 77 +++++++ .../ShaderExample/ShaderExample.csproj.user | 6 + .../Debug/Content/Shaders/GreyScaleEffect.xnb | Bin 0 -> 1176 bytes .../bin/Debug/Content/Shaders/NoEffect.xnb | Bin 0 -> 752 bytes .../ShaderExample/bin/Debug/Netcode.dll | Bin 0 -> 76800 bytes .../ShaderExample/bin/Debug/Netcode.pdb | Bin 0 -> 241152 bytes .../bin/Debug/ShaderExample 0.0.1.zip | Bin 0 -> 102669 bytes .../ShaderExample/bin/Debug/ShaderExample.dll | Bin 0 -> 11776 bytes .../ShaderExample/bin/Debug/ShaderExample.pdb | Bin 0 -> 24064 bytes .../ShaderExample/bin/Debug/manifest.json | 10 + ShaderExample/ShaderExample/manifest.json | 10 + ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 7911 bytes ...aderExample.csproj.CoreCompileInputs.cache | 1 + .../ShaderExample.csproj.FileListAbsolute.txt | 11 + .../ShaderExample/obj/Debug/ShaderExample.dll | Bin 0 -> 11776 bytes .../ShaderExample/obj/Debug/ShaderExample.pdb | Bin 0 -> 24064 bytes ShaderExample/ShaderExample/packages.config | 4 + ...oschild.Stardew.ModBuildConfig.2.0.2.nupkg | Bin 0 -> 11531 bytes ...Pathoschild.Stardew.ModBuildConfig.targets | 144 +++++++++++++ .../StardewModdingAPI.ModBuildConfig.dll | Bin 0 -> 16384 bytes 30 files changed, 739 insertions(+) create mode 100644 ShaderExample/ShaderExample.sln create mode 100644 ShaderExample/ShaderExample/Class1.cs create mode 100644 ShaderExample/ShaderExample/Content/Shaders/GreyScaleEffect.xnb create mode 100644 ShaderExample/ShaderExample/Content/Shaders/NoEffect.xnb create mode 100644 ShaderExample/ShaderExample/Framework/Delegates.cs create mode 100644 ShaderExample/ShaderExample/Framework/DrawManager.cs create mode 100644 ShaderExample/ShaderExample/Framework/Drawers/Characters.cs create mode 100644 ShaderExample/ShaderExample/Framework/Drawers/Layer.cs create mode 100644 ShaderExample/ShaderExample/Framework/Drawers/Monsters.cs create mode 100644 ShaderExample/ShaderExample/Properties/AssemblyInfo.cs create mode 100644 ShaderExample/ShaderExample/ShaderExample.csproj create mode 100644 ShaderExample/ShaderExample/ShaderExample.csproj.user create mode 100644 ShaderExample/ShaderExample/bin/Debug/Content/Shaders/GreyScaleEffect.xnb create mode 100644 ShaderExample/ShaderExample/bin/Debug/Content/Shaders/NoEffect.xnb create mode 100644 ShaderExample/ShaderExample/bin/Debug/Netcode.dll create mode 100644 ShaderExample/ShaderExample/bin/Debug/Netcode.pdb create mode 100644 ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip create mode 100644 ShaderExample/ShaderExample/bin/Debug/ShaderExample.dll create mode 100644 ShaderExample/ShaderExample/bin/Debug/ShaderExample.pdb create mode 100644 ShaderExample/ShaderExample/bin/Debug/manifest.json create mode 100644 ShaderExample/ShaderExample/manifest.json create mode 100644 ShaderExample/ShaderExample/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 ShaderExample/ShaderExample/obj/Debug/ShaderExample.csproj.CoreCompileInputs.cache create mode 100644 ShaderExample/ShaderExample/obj/Debug/ShaderExample.csproj.FileListAbsolute.txt create mode 100644 ShaderExample/ShaderExample/obj/Debug/ShaderExample.dll create mode 100644 ShaderExample/ShaderExample/obj/Debug/ShaderExample.pdb create mode 100644 ShaderExample/ShaderExample/packages.config create mode 100644 ShaderExample/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/Pathoschild.Stardew.ModBuildConfig.2.0.2.nupkg create mode 100644 ShaderExample/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/Pathoschild.Stardew.ModBuildConfig.targets create mode 100644 ShaderExample/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/StardewModdingAPI.ModBuildConfig.dll diff --git a/ShaderExample/ShaderExample.sln b/ShaderExample/ShaderExample.sln new file mode 100644 index 00000000..37d4f76a --- /dev/null +++ b/ShaderExample/ShaderExample.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27428.2037 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShaderExample", "ShaderExample\ShaderExample.csproj", "{9F6B98B4-BE76-42A2-8A9B-D6361B20DEAE}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9F6B98B4-BE76-42A2-8A9B-D6361B20DEAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9F6B98B4-BE76-42A2-8A9B-D6361B20DEAE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9F6B98B4-BE76-42A2-8A9B-D6361B20DEAE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9F6B98B4-BE76-42A2-8A9B-D6361B20DEAE}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {256AADFC-A160-4225-9781-5E9DA95732AF} + EndGlobalSection +EndGlobal diff --git a/ShaderExample/ShaderExample/Class1.cs b/ShaderExample/ShaderExample/Class1.cs new file mode 100644 index 00000000..e79628a7 --- /dev/null +++ b/ShaderExample/ShaderExample/Class1.cs @@ -0,0 +1,197 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +using StardewModdingAPI; +using StardewValley; +using StardewValley.Buildings; +using StardewValley.Menus; +using StardewValley.Projectiles; +using StardewValley.TerrainFeatures; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using xTile.Dimensions; + +using xRectangle = xTile.Dimensions.Rectangle; +using Rectangle = Microsoft.Xna.Framework.Rectangle; +using xTile.Layers; +using StardewValley.Tools; +using StardewValley.Locations; + +namespace ShaderExample +{ + class Class1 : Mod + { + public static Effect effect; + + + public override void Entry(IModHelper helper) + { + //StardewModdingAPI.Events.GraphicsEvents.OnPreRenderEvent += GraphicsEvents_OnPreRenderEvent; + + //Need to make checks to see what location I am at and have custom shader functions for those events. + + StardewModdingAPI.Events.GraphicsEvents.OnPostRenderEvent += GraphicsEvents_OnPreRenderEvent; + //StardewModdingAPI.Events.GraphicsEvents.OnPreRenderEvent += GraphicsEvents_OnPreRenderEvent; + + //StardewModdingAPI.Events.GraphicsEvents.OnPostRenderEvent += GraphicsEvents_OnPreRenderEvent1; + effect = Helper.Content.Load(Path.Combine("Content", "Shaders", "GreyScaleEffect.xnb")); + + + } + + private void GraphicsEvents_OnPreRenderEvent(object sender, EventArgs e) + { + + + + + + try + { + Game1.spriteBatch.End(); + } + catch(Exception err) + { + return; + } + if (Game1.activeClickableMenu != null) + { + Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); + Class1.effect.CurrentTechnique.Passes[0].Apply(); + Game1.activeClickableMenu.draw(Game1.spriteBatch); + Monitor.Log("DRAW"); + Game1.spriteBatch.End(); + } + + if (Game1.player.currentLocation == null) + { + Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + return; + } + Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + //drawBack(); + drawMapPart1(); + Game1.spriteBatch.End(); + + + Game1.spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + Framework.Drawers.Characters.drawFarmer(); + Framework.Drawers.Characters.drawCharacters(); + + foreach (var v in Game1.player.currentLocation.terrainFeatures) + { + var value = v.Values; + var keys = v.Keys; + int index = 0; + foreach(var terrain in value) + { + terrain.draw(Game1.spriteBatch, keys.ElementAt(index)); + index++; + } + } + Game1.spriteBatch.End(); + + //Game1.spriteBatch.End(); + + //Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + //drawFront(); + + Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + drawMapPart2(); + + drawOverlays(); + Game1.spriteBatch.End(); + + if (Game1.activeClickableMenu != null) + { + Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); + Class1.effect.CurrentTechnique.Passes[0].Apply(); + Game1.activeClickableMenu.draw(Game1.spriteBatch); + Game1.spriteBatch.End(); + } + //Location specific drawing done here + + + //Game1.spriteBatch.End(); + + Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + } + + + + + + public void drawMapPart1() + { + //Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); + foreach (var layer in Game1.player.currentLocation.map.Layers) + { + //do back and buildings + if (layer.Id == "Paths" || layer.Id=="AlwaysFront"|| layer.Id=="Front" ) continue; + //if (layer.Id != "Back" || layer.Id != "Buildings") continue; + //Framework.Drawers.Layer.drawLayer(layer,Game1.mapDisplayDevice, Game1.viewport, new xTile.Dimensions.Location(0, 0), false, Game1.pixelZoom); + layer.Draw(Game1.mapDisplayDevice, Game1.viewport, new xTile.Dimensions.Location(0, 0), false, Game1.pixelZoom); + + } + //Game1.spriteBatch.End(); + } + + public void drawMapPart2() + { + //Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); + foreach (var layer in Game1.player.currentLocation.map.Layers) + { + //do front, and always front. + if (layer.Id == "Back" || layer.Id == "Buildings" || layer.Id=="Paths") continue; + //if (layer.Id != "Back" || layer.Id != "Buildings") continue; + //Framework.Drawers.Layer.drawLayer(layer,Game1.mapDisplayDevice, Game1.viewport, new xTile.Dimensions.Location(0, 0), false, Game1.pixelZoom); + layer.Draw(Game1.mapDisplayDevice, Game1.viewport, new xTile.Dimensions.Location(0, 0), false, Game1.pixelZoom); + + } + //Game1.spriteBatch.End(); + } + + public static object GetInstanceField(Type type, object instance, string fieldName) + { + BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic + | BindingFlags.Static; + FieldInfo field = type.GetField(fieldName, bindFlags); + return field.GetValue(instance); + } + + public static void SetInstanceField(Type type, object instance, object value, string fieldName) + { + BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic + | BindingFlags.Static; + FieldInfo field = type.GetField(fieldName, bindFlags); + field.SetValue(instance, value); + return; + } + + + + protected void drawOverlays() + { + SpriteBatch spriteBatch = Game1.spriteBatch; + // spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, (DepthStencilState)null, (RasterizerState)null); + SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); + effect.CurrentTechnique.Passes[0].Apply(); + foreach(var v in Game1.onScreenMenus) + { + v.draw(spriteBatch); + } + //if ((Game1.displayHUD || Game1.eventUp) && (Game1.currentBillboard == 0 && Game1.gameMode == (byte)3) && (!Game1.freezeControls && !Game1.panMode)) + //Game1.drawMouseCursor(); + //spriteBatch.End(); + } + } +} diff --git a/ShaderExample/ShaderExample/Content/Shaders/GreyScaleEffect.xnb b/ShaderExample/ShaderExample/Content/Shaders/GreyScaleEffect.xnb new file mode 100644 index 0000000000000000000000000000000000000000..6c4d112f2a090859488452d6b47e033803fcacf5 GIT binary patch literal 1176 zcmb7DKX21O6h9|zaVb(5J0RhKp-7RHh6JUENRWi4QVWWj7CJ<#T<4-%b$#J%E3L#( ziIt%UhK?QBvh)Km@Bxrm82AAB02vujkKeN|QH0ciXFvab?{x3ay?5SwRU6E+i#f)O zkH$;Sl_C_q$lePadtExmd?4hJT^B*bgUEi->v1>Q=1!N(ymiy=rgZv;o*U+^*Ib64 z2&yH!Ku_MP$9@z`UJZC0NypDyt@yzA+)aMEBaV1bt(1yxuX4awyS!W|mme__W1MB| z$I|%g-NZ~k#-h63)Ans34#4hddjfD{VF3YvIVkO!l?50rCk$7COVAze9tPgqm}7x_ zNGV1JO1{g`iEL;>d!EklPnxd)AIz+4$`oY6my_U1U90!3QQK{j&rb>nAvlN9**-&Q z>jf4^!1|NUZiv=)yoS||;x0zhY4GqU68%m)a%7heI&Zw7D+XZ`BP`x*=)rcHlApF+ z$LHyU?cNC+4u@0^L&X==0N@uO_2Ek6H;vzc^H~1{q@Ip6jy3)P;$pd;gzJH`W}$P*nXxU2LHS5-!A@D0nF%)#OQ}WL2#*YWUEvFfg8z*}J)3w_-AZMX zSX8T0X&hGw*$tWY%}i?`Pl`{uiBaEwLn)4_XH)?`gHoQBo=pUN2gS=i;4}S6td;GD z*2Y$Q%Sumg)x~k&^SQLv?BZj4tz5K=l~RfNeyuE4-+5l6`@9Kd8LBqD->BVcfa6*x zd1<`_CBa=E&apelO;0NQaKE@;`2RBQrz1Nj?Sp#e*rNN_!0mB literal 0 HcmV?d00001 diff --git a/ShaderExample/ShaderExample/Content/Shaders/NoEffect.xnb b/ShaderExample/ShaderExample/Content/Shaders/NoEffect.xnb new file mode 100644 index 0000000000000000000000000000000000000000..0fe921e4646622c5de647b8edf03262585695dc7 GIT binary patch literal 752 zcmb7B&2G~`5FWcNYE_|d;>2MkE=7v0#3U$1imJwGQ;C8?lR^)cD%V~sR@~jNUMu02 z0|$;EE*x`3;Su@(+;{b0>P)xb)&wv<8!sbY$wY?Q zx)7dqth{SJm1=A`QfMx;brgo&*Js=dxT>#81w;Hw|wytPIsk4@R`b<5c(>SA?+* z#AcpDKPZ=O6a6IA=XV78ZxDZ%&-Tuqu#?llDJvM6Bd;e>%oW?W>}S?~)3)qZqXEn1 za+N& + /// Handles drawing everything to the screen. + ///

/// TODO: /// + /// Validate that all paths are loading from proper places. + /// /// Make a directory where all of the wav files will be stored. (Done?) /// Load in said wav files.(Done?) /// @@ -78,19 +103,19 @@ namespace Vocalization ///Add in sanitization for Dialogue Commands(see the wiki) (done) /// /// - /// !!!!!!!Add support for different kinds of menus. TV, shops, etc. + ///Add support for different kinds of menus. TV, shops, etc. (Done) /// -All of these strings are stored in StringsFromCS and TV/file.yaml /// - /// !!!!!!!Add support for MarriageDialogue strings. - /// !!!!!!!Add support for EngagementDialogue strings. - /// !!!!!!!Add support for ExtraDialogue.yaml file + ///Add support for MarriageDialogue strings. (Done) + ///Add support for EngagementDialogue strings.(Done) + ///Add support for ExtraDialogue.yaml file (Done) /// /// - /// !!!!!!!Add support for mail dialogue + ///Add support for mail dialogue(Done) /// -split using ^ to get the sender's name as the last element in the split list. Then sanitize the % information out by splitting across % and getting the first element. /// /// - /// !!!!!!!Add support for Extra dialogue via StringsFromCSFiles + ///Add support for Extra dialogue via StringsFromCSFiles(Done) /// -tv /// -events /// -NPC.cs @@ -197,20 +222,28 @@ namespace Vocalization //Sanitize input here! //Load all game dialogue files and then sanitize input. - CharacterVoiceCue voice; - DialogueCues.TryGetValue(speakerName,out voice); - currentDialogue=sanitizeDialogueInGame(currentDialogue); //If contains the stuff in the else statement, change things up. - if (voice.dialogueCues.ContainsKey(currentDialogue)) + List tries = new List(); + tries.Add(speakerName); + tries.Add("Events"); + tries.Add("CharactersStrings"); + tries.Add("LocationDialogue"); + tries.Add("Utility"); + foreach (var v in tries) { - //Not variable messages. Aka messages that don't contain words the user can change such as farm name, farmer name etc. - voice.speak(currentDialogue); - } - else - { - ModMonitor.Log("New unregistered dialogue detected for NPC: "+speakerName+" saying: "+currentDialogue,LogLevel.Alert); - ModMonitor.Log("Make sure to add this to their respective VoiceCue.json file if you wish for this dialogue to have voice acting associated with it!",LogLevel.Alert); - voice.addDialogue(currentDialogue, ""); - ModHelper.WriteJsonFile(voice.path, voice); //If the dialogue was overlooked somehow, just add it to the player's dialogue lines. + CharacterVoiceCue voice; + DialogueCues.TryGetValue(speakerName, out voice); + currentDialogue = sanitizeDialogueInGame(currentDialogue); //If contains the stuff in the else statement, change things up. + if (voice.dialogueCues.ContainsKey(currentDialogue)) + { + //Not variable messages. Aka messages that don't contain words the user can change such as farm name, farmer name etc. + voice.speak(currentDialogue); + } + else + { + ModMonitor.Log("New unregistered dialogue detected for NPC: " + speakerName + " saying: " + currentDialogue, LogLevel.Alert); + ModMonitor.Log("Make sure to add this to their respective VoiceCue.json file if you wish for this dialogue to have voice acting associated with it!", LogLevel.Alert); + ModHelper.WriteJsonFile(voice.path, voice); //If the dialogue was overlooked somehow, just add it to the player's dialogue lines. + } } } } @@ -227,10 +260,18 @@ namespace Vocalization previousDialogue = currentDialogue; //Update my previously read dialogue so that I only read the new string once when it appears. ModMonitor.Log(currentDialogue); //Print out my dialogue. - + List tries = new List(); + tries.Add("TV"); + tries.Add("Events"); + tries.Add("Characters"); + tries.Add("LocationDialogue"); + tries.Add("Notes"); + tries.Add("Utility"); + foreach (var v in tries) + { //Add in support for TV Shows CharacterVoiceCue voice; - DialogueCues.TryGetValue("TV", out voice); + bool f=DialogueCues.TryGetValue(v, out voice); currentDialogue = sanitizeDialogueInGame(currentDialogue); //If contains the stuff in the else statement, change things up. if (voice.dialogueCues.ContainsKey(currentDialogue)) { @@ -241,10 +282,10 @@ namespace Vocalization { ModMonitor.Log("New unregistered dialogue detected saying: " + currentDialogue, LogLevel.Alert); ModMonitor.Log("Make sure to add this to their respective VoiceCue.json file if you wish for this dialogue to have voice acting associated with it!", LogLevel.Alert); - voice.addDialogue(currentDialogue, ""); ModHelper.WriteJsonFile(voice.path, voice); //If the dialogue was overlooked somehow, just add it to the player's dialogue lines. } } + } } //Support for Letters @@ -300,28 +341,14 @@ namespace Vocalization try { //character shops - bool f=DialogueCues.TryGetValue(Path.Combine("Shops", npc.Name), out voice); + bool f=DialogueCues.TryGetValue(Path.Combine("Shops"), out voice); if (f == false) { ModMonitor.Log("Can't find the dialogue for the shop: " + npc.Name); } } - catch(Exception err) - { - try - { - //non npc shops - bool f=DialogueCues.TryGetValue(Path.Combine("Shops", "Misc"), out voice); - if (f == false) - { - ModMonitor.Log("Can't find the dialogue in the misc shop file."); - } - } - catch(Exception errr) - { - ModMonitor.Log("A really big problem happened when trying to load dialogue from shops. Uhh ohh. Make sure the Shops folder exists."); - return; - } + catch(Exception err) { + } currentDialogue = sanitizeDialogueInGame(currentDialogue); //If contains the stuff in the else statement, change things up. if (voice.dialogueCues.ContainsKey(currentDialogue)) @@ -387,9 +414,6 @@ namespace Vocalization { string shop = Path.Combine(translation, "Shops"); //Used to hold NPC Shops characterDialoguePaths.Add(shop); - - string shop2 = Path.Combine(translation, "Shops","Misc"); //Used to hold Misc shops such as traveling merchants and boats. - characterDialoguePaths.Add(shop2); } //Add in folder for Mail support. @@ -399,6 +423,45 @@ namespace Vocalization characterDialoguePaths.Add(mail); } + //Add in folder for ExtraDiaogue.yaml + foreach (var translation in translationFolders) + { + string extra = Path.Combine(translation, "ExtraDialogue"); + characterDialoguePaths.Add(extra); + } + + foreach (var translation in translationFolders) + { + string extra = Path.Combine(translation, "Events"); + characterDialoguePaths.Add(extra); + } + + foreach (var translation in translationFolders) + { + string extra = Path.Combine(translation, "Characters"); + characterDialoguePaths.Add(extra); + } + + foreach (var translation in translationFolders) + { + string extra = Path.Combine(translation, "LocationDialogue"); + characterDialoguePaths.Add(extra); + } + + foreach (var translation in translationFolders) + { + string extra = Path.Combine(translation, "Notes"); + characterDialoguePaths.Add(extra); + } + + foreach (var translation in translationFolders) + { + string extra = Path.Combine(translation, "Utility"); + characterDialoguePaths.Add(extra); + } + + + if (!Directory.Exists(contentPath)) Directory.CreateDirectory(contentPath); if (!Directory.Exists(audioPath)) Directory.CreateDirectory(audioPath); if (!Directory.Exists(voicePath)) Directory.CreateDirectory(voicePath); @@ -461,7 +524,10 @@ namespace Vocalization } } - + /// + /// Used to obtain all strings for almost all possible dialogue in the game. + /// + /// public void scrapeDictionaries(CharacterVoiceCue cue) { @@ -472,12 +538,12 @@ namespace Vocalization //If the "character"'s name is TV which means I'm watching tv, scrape the data from the TV shows. if (cue.name == "TV") { - foreach (var fileName in cue.dialogueFileNames) + foreach (var fileName in cue.dataFileNames) { //basically this will never run but can be used below to also add in dialogue. if (!String.IsNullOrEmpty(fileName)) { - string dialoguePath2 = Path.Combine(dialoguePath, fileName); + string dialoguePath2 = Path.Combine(dataPath,"TV",fileName); var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); //Scraping the CookingChannel dialogue @@ -494,15 +560,13 @@ namespace Vocalization string cookingDialogue = splitDialogues.ElementAt(1); //If the key contains the character's name. - if (key.Contains(cue.name)) - { List cleanDialogues = new List(); cleanDialogues = sanitizeDialogueFromDictionaries(cookingDialogue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. } - } + } continue; } @@ -518,15 +582,13 @@ namespace Vocalization string rawDialogue = pair.Value; if (key != "intro") continue; //If the key contains the character's name. - if (key.Contains(cue.name)) - { List cleanDialogues = new List(); cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. } - } + } continue; } @@ -540,20 +602,27 @@ namespace Vocalization //Get the key in the dictionary string key = pair.Key; string rawDialogue = pair.Value; - //If the key contains the character's name. - if (key.Contains(cue.name)) - { + List cleanDialogues = new List(); cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. } - } + } continue; } + } + } + foreach (var fileName in cue.stringsFileNames) + { + //basically this will never run but can be used below to also add in dialogue. + if (!String.IsNullOrEmpty(fileName)) + { + string dialoguePath2 = Path.Combine(stringsPath, fileName); + var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); if (fileName.Contains("StringsFromCSFiles")) { //Scrape the whole dictionary looking for the character's name. @@ -564,22 +633,334 @@ namespace Vocalization string rawDialogue = pair.Value; if (!key.Contains("TV")) continue; //If the key contains the character's name. - if (key.Contains(cue.name)) + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) { - List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); - foreach (var str in cleanDialogues) - { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. - } + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. } + } continue; } } } + } + + //If the "character"'s name is Shops which means I'm talking to a shopkeeper. + else if (cue.name == "Shops") + { + foreach (var fileName in cue.stringsFileNames) + { + //basically this will never run but can be used below to also add in dialogue. + if (!String.IsNullOrEmpty(fileName)) + { + string dialoguePath2 = Path.Combine(stringsPath, fileName); + var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); + + //Scraping the CookingChannel dialogue + + if (fileName.Contains("StringsFromCSFiles")) + { + //Scrape the whole dictionary looking for the character's name. + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + if (!key.Contains("ShopMenu")) continue; + //If the key contains the character's name. + + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + + } + continue; + } + //For moddablity add a generic scrape here! + } + } + + } + + //Scrape Content/Data/ExtraDialogue.yaml + else if (cue.name == "ExtraDialogue") + { + foreach (var fileName in cue.dataFileNames) + { + //basically this will never run but can be used below to also add in dialogue. + if (!String.IsNullOrEmpty(fileName)) + { + string dialoguePath2 = Path.Combine(dataPath, fileName); + var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); + + //Scraping the CookingChannel dialogue + //Scrape the whole dictionary looking for the character's name. + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + //If the key contains the character's name. + + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + + } + } + } + + } + + //Used to scrape Strings/Locations.yaml and Strings/StringsFromMaps.yaml + else if (cue.name == "LocationDialogue") + { + foreach (var fileName in cue.stringsFileNames) + { + //basically this will never run but can be used below to also add in dialogue. + if (!String.IsNullOrEmpty(fileName)) + { + string dialoguePath2 = Path.Combine(stringsPath, fileName); + var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); + + //Scraping the CookingChannel dialogue + //Scrape the whole dictionary looking for the character's name. + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + //If the key contains the character's name. + + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + + } + } + } + + } + + //Scrape for event dialogue. + else if (cue.name == "Events") + { + foreach (var fileName in cue.stringsFileNames) + { + if (!String.IsNullOrEmpty(fileName)) + { + string dialoguePath2 = Path.Combine(stringsPath, fileName); + var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); + + //Scrape Strings/Events.yaml for dialogue strings + if (fileName.Contains("StringsFromCS")) + { + //Scrape Strings/StringsFromCS.yaml + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + //If the key contains the character's name. + if (!key.Contains("Event")) continue; + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + } + } + //Scrape Strings/Events.yaml + if (fileName.Contains("Events")) + { + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + //If the key contains the character's name. + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + } + } + } + } + } + + //Scrape for mail dialogue. + else if (cue.name == "Mail") + { + foreach (var fileName in cue.dataFileNames) + { + //basically this will never run but can be used below to also add in dialogue. + if (!String.IsNullOrEmpty(fileName)) + { + string dialoguePath2 = Path.Combine(dataPath, fileName); + var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); + + //Scrape the whole dictionary looking for the character's name. + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + //If the key contains the character's name. + + string cleanDialogue = ""; + cleanDialogue = sanitizeDialogueFromMailDictionary(rawDialogue); + cue.addDialogue(cleanDialogue, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty + } + } + } + + } + + //Used to scrape Content/strings/Characters.yaml. + else if (cue.name == "Characters") + { + foreach (var fileName in cue.stringsFileNames) + { + if (!String.IsNullOrEmpty(fileName)) + { + string dialoguePath2 = Path.Combine(stringsPath, fileName); + var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); + + if (fileName.Contains("Characters")) + { + //Scrape the whole dictionary looking for the character's name. + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + //If the key contains the character's name. + + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + + } + continue; + } + //!!!!!!!!!!!!If I ever want to make this moddable add a generic scrape here. + } + } + + } + + else if (cue.name == "Notes") + { + //Used mainly to scrape Content/Strings/Notes.yaml + foreach (var fileName in cue.stringsFileNames) + { + //basically this will never run but can be used below to also add in dialogue. + if (!String.IsNullOrEmpty(fileName)) + { + string dialoguePath2 = Path.Combine(stringsPath, fileName); + var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); + + //Scrape the whole dictionary looking for the character's name. + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + //If the key contains the character's name. + + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + + } + continue; + } + } + + + //Used mainly to scrape Content/Data/SecretNotes.yaml + foreach (var fileName in cue.dataFileNames) + { + if (!String.IsNullOrEmpty(fileName)) + { + string dialoguePath2 = Path.Combine(dataPath, fileName); + var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); + + //Scrape the whole dictionary looking for the character's name. + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + //If the key contains the character's name. + + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + + } + continue; + + } + } + + } + + //used to scrape Content/Strings/Utility.yaml + else if (cue.name == "Utility") + { + foreach (var fileName in cue.stringsFileNames) + { + //basically this will never run but can be used below to also add in dialogue. + if (!String.IsNullOrEmpty(fileName)) + { + string dialoguePath2 = Path.Combine(stringsPath, fileName); + var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); + + //Scrape the whole dictionary looking for the character's name. + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + //If the key contains the character's name. + + string cleanDialogue = ""; + cleanDialogue = sanitizeDialogueFromMailDictionary(rawDialogue); + cue.addDialogue(cleanDialogue, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty + } + } + } + + } + + //Dialogue scrape for npc specific text. else { foreach (var fileName in cue.dialogueFileNames) @@ -663,7 +1044,7 @@ namespace Vocalization } foreach (var fileName in cue.dataFileNames) { - string dialoguePath2 = Path.Combine(dialoguePath, fileName); + string dialoguePath2 = Path.Combine(dataPath, fileName); var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); //Load in engagement dialogue for this npc. @@ -689,6 +1070,34 @@ namespace Vocalization continue; } } + foreach (var fileName in cue.stringsFileNames) + { + string dialoguePath2 = Path.Combine(stringsPath, fileName); + var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); + + //Load in super generic dialogue for this npc. This may or may not be a good idea.... + if (fileName.Contains("StringsFromCS")) + { + //Scrape the whole dictionary looking for the character's name. + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + //If the key contains the character's name. + if (key.Contains("NPC")) + { + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + } + } + continue; + } + } } ModHelper.WriteJsonFile(cue.path, cue); @@ -1058,5 +1467,36 @@ namespace Vocalization return possibleDialogues; } + + /// + /// Used to remove all garbage strings from Content/Data/mail.yaml + /// + /// + /// + public string sanitizeDialogueFromMailDictionary(string mailText) + { + + List texts = mailText.Split('%').ToList(); + + string splicedText = texts.ElementAt(0); //The actual message of the mail minus the items stored at the end. + + if (splicedText.Contains("@")) + { + splicedText = splicedText.Replace("@", replacementStrings.farmerName); + } + + if (splicedText.Contains("^")) + { + splicedText = splicedText.Replace("^", ""); + } + + if (splicedText.Contains("\"")) + { + splicedText = splicedText.Replace("\"", ""); + } + + return splicedText; + + } } } diff --git a/Vocalization/Vocalization/Vocalization.csproj b/Vocalization/Vocalization/Vocalization.csproj index c1a39fb2..b406aa9b 100644 --- a/Vocalization/Vocalization/Vocalization.csproj +++ b/Vocalization/Vocalization/Vocalization.csproj @@ -50,6 +50,7 @@ + diff --git a/Vocalization/Vocalization/bin/Debug/Netcode.dll b/Vocalization/Vocalization/bin/Debug/Netcode.dll index 7df91e3adfe3e3391e4da0c5495edc3eef035b96..d3ab5f0e7de37fb2567343b1390b28fe124d7477 100644 GIT binary patch delta 11835 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 P*0F?tYyTOG+6Vt1@7%#! delta 11866 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 buT&*r*UHd#c-15_@2m{(fIs8Pu7Upt8)3vS diff --git a/Vocalization/Vocalization/bin/Debug/Netcode.pdb b/Vocalization/Vocalization/bin/Debug/Netcode.pdb index 30f4e55890b2829e0967a09bcaab23c67b077eee..8e128c4ebc1fd3dce702932da8cf69852ecd9fcc 100644 GIT binary patch delta 34849 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

F({tQq1Jh1NtaDXtIrIJ-oY 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

0`|z0Bw0OuLL{hkWud= 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

O<;%K5d5Mz4pN-Ppnfe?t{Mf3sA+ZT7BdWb9T$8 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 SXOH}w(GE`6KR*BOJn&!q%V!Ay diff --git a/Vocalization/Vocalization/bin/Debug/Vocalization.pdb b/Vocalization/Vocalization/bin/Debug/Vocalization.pdb index 8dcbbd692d11b0c11570efca759bb4bfa30fb025..b307634dac9e480fe60968584d86d968b09dd2f5 100644 GIT binary patch literal 54784 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½?YIFJr1=Wg zF(*GgFKs*tnulF!eu@Xu^mVLlTfN`wr>Vbdhi&3Nd`H~`Y5RKCo*N9w)?Rj*y@WcHy zTF{pTcDhI9+ZBCi7^LTiTRZx(z)sJve7m9#w*osq+}hEH1$KJQ;@cH{2ou=(;nt4+ zD_j zFq?1st|QxjMhU2ozv!42E>+8QY3YUKoi&-qv%ek>y<4Jd-AM|xo353sn*D!lv0l#p z{r;Zf(q16@zGd_`jLbHP-%wP>Z%A%>T2A)GX$9H2p>0c#L&P6W%xTfNTk~$M+jR47e>sh^`p&S~c5(o}cnsb1n4esf zn>Qx8YgSrbS~{~EGiB(?8j3Dm+O+H1I>jb=h~qlW*=6p$QvUQAhnePCndT2Oj%8XF zJl<{F_LSBwx}?yTob*ugmq9#*{ z;uy3=!%{d#J=kNO)kyfH`Bc; zr)&Gv!TFha`Kj3{NdpTeWYADkQ!?|%6y%OiwM)lR!>8%Nh2-@7-xyorshaxp)8@Cw zUf7xa_NWeI^k;pFBH#DLzAscowwi2-167K@l?v@22xo6eatn9<*j~eATkMop*A82^ zrsvX{U)C)>{NV~WV>v#E|*AaN<- zT9c{wP#Nl+q3mn?;Ict$D9pp-beMt5#HqEF#;Ku}!Ii+NC91Wm1(w2T9-)?59;dme z@>mh4xu@nIRdAYv>e-Q=)zrXgbx18-ZCnzr4ore_u!jF`|krMc?ErI_Bx;MP@ literal 32256 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 IkZghf3!$v5>;M1& diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.FileListAbsolute.txt b/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.FileListAbsolute.txt index 95c8cbb8..aa52d96f 100644 --- a/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.FileListAbsolute.txt +++ b/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.FileListAbsolute.txt @@ -8,3 +8,4 @@ C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\bin\Debug\Netcode. C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\obj\Debug\Vocalization.csproj.CopyComplete C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\bin\Debug\SimpleSoundManager.dll C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\bin\Debug\SimpleSoundManager.pdb +C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\obj\Debug\Vocalization.csprojResolveAssemblyReference.cache diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.csprojResolveAssemblyReference.cache b/Vocalization/Vocalization/obj/Debug/Vocalization.csprojResolveAssemblyReference.cache index 229ebcf37c17f1ebdaa8233679247d1d6be55be0..d0ed5be54223f89d17d25424bae15acaa8125491 100644 GIT binary patch literal 120072 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 literal 80837 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

O<;%K5d5Mz4pN-Ppnfe?t{Mf3sA+ZT7BdWb9T$8 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 SXOH}w(GE`6KR*BOJn&!q%V!Ay diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.pdb b/Vocalization/Vocalization/obj/Debug/Vocalization.pdb index 8dcbbd692d11b0c11570efca759bb4bfa30fb025..b307634dac9e480fe60968584d86d968b09dd2f5 100644 GIT binary patch literal 54784 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½?YIFJr1=Wg zF(*GgFKs*tnulF!eu@Xu^mVLlTfN`wr>Vbdhi&3Nd`H~`Y5RKCo*N9w)?Rj*y@WcHy zTF{pTcDhI9+ZBCi7^LTiTRZx(z)sJve7m9#w*osq+}hEH1$KJQ;@cH{2ou=(;nt4+ zD_j zFq?1st|QxjMhU2ozv!42E>+8QY3YUKoi&-qv%ek>y<4Jd-AM|xo353sn*D!lv0l#p z{r;Zf(q16@zGd_`jLbHP-%wP>Z%A%>T2A)GX$9H2p>0c#L&P6W%xTfNTk~$M+jR47e>sh^`p&S~c5(o}cnsb1n4esf zn>Qx8YgSrbS~{~EGiB(?8j3Dm+O+H1I>jb=h~qlW*=6p$QvUQAhnePCndT2Oj%8XF zJl<{F_LSBwx}?yTob*ugmq9#*{ z;uy3=!%{d#J=kNO)kyfH`Bc; zr)&Gv!TFha`Kj3{NdpTeWYADkQ!?|%6y%OiwM)lR!>8%Nh2-@7-xyorshaxp)8@Cw zUf7xa_NWeI^k;pFBH#DLzAscowwi2-167K@l?v@22xo6eatn9<*j~eATkMop*A82^ zrsvX{U)C)>{NV~WV>v#E|*AaN<- zT9c{wP#Nl+q3mn?;Ict$D9pp-beMt5#HqEF#;Ku}!Ii+NC91Wm1(w2T9-)?59;dme z@>mh4xu@nIRdAYv>e-Q=)zrXgbx18-ZCnzr4ore_u!jF`|krMc?ErI_Bx;MP@ literal 32256 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 IkZghf3!$v5>;M1& From b68643989e115f5b46b92af7c7b30168fef8bbac Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Fri, 13 Jul 2018 23:18:17 -0700 Subject: [PATCH 019/110] Finished dialogue scrape update. Ready for alpha testing. Need audio clips, putting audio clips in place, and quality of life features. --- .../Framework/CharacterVoiceCue.cs | 66 +++++++- Vocalization/Vocalization/ModConfig.cs | 9 ++ Vocalization/Vocalization/Vocalization.cs | 142 ++++++++++++++---- .../bin/Debug/Vocalization 0.0.1.zip | Bin 129223 -> 131439 bytes .../Vocalization/bin/Debug/Vocalization.dll | Bin 26624 -> 29696 bytes .../Vocalization/bin/Debug/Vocalization.pdb | Bin 54784 -> 58880 bytes .../Vocalization.csproj.FileListAbsolute.txt | 1 - .../Vocalization/obj/Debug/Vocalization.dll | Bin 26624 -> 29696 bytes .../Vocalization/obj/Debug/Vocalization.pdb | Bin 54784 -> 58880 bytes 9 files changed, 184 insertions(+), 34 deletions(-) diff --git a/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs b/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs index 00d6efec..76d97b6e 100644 --- a/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs +++ b/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs @@ -36,20 +36,18 @@ namespace Vocalization.Framework ///

+ public class DrawManager + { + SortedDictionary> thingsToDraw = new SortedDictionary>(); + Dictionary drawFunctions = new Dictionary(); + + + public DrawManager() + { + //Add support for characters + + } + + + /// + /// Add a new item to be drawn to the draw manager. + /// + /// + /// + public void addDraw(float yPos,object item) + { + if (thingsToDraw.ContainsKey(yPos)) + { + List objs; + bool f = thingsToDraw.TryGetValue(yPos, out objs); + objs.Add(item); + } + else + { + List objs = new List(); + objs.Add(item); + thingsToDraw.Add(yPos, objs); + } + } + + /// + /// Draw all supported ibject types that are handled by drawFunctions. Must be an appropriate key type for drawFunctions. + /// + public void draw() + { + //Begin effect. + foreach(var pair in thingsToDraw) + { + foreach(var item in pair.Value) + { + Delegates.DrawFunction func; + bool f = drawFunctions.TryGetValue(item.GetType(), out func); + if (f == false) + { + continue; //Unsuporte type found. + } + else + { + func.Invoke(item); + } + } + } + //Once I am done drawing everything to the screen, flush my list of things to draw. + thingsToDraw.Clear(); + } + + /* + *Draw functions. + * + */ + #region + + + #endregion + + } +} diff --git a/ShaderExample/ShaderExample/Framework/Drawers/Characters.cs b/ShaderExample/ShaderExample/Framework/Drawers/Characters.cs new file mode 100644 index 00000000..e7ee880b --- /dev/null +++ b/ShaderExample/ShaderExample/Framework/Drawers/Characters.cs @@ -0,0 +1,41 @@ +using Microsoft.Xna.Framework.Graphics; +using StardewValley; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ShaderExample.Framework.Drawers +{ + public class Characters + { + /// + /// Draw the farmer. + /// + /// + public static void drawFarmer() + { + //Game1.spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + Class1.SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, ShaderExample.Class1.effect, "customEffect"); + Class1.effect.CurrentTechnique.Passes[0].Apply(); + Game1.player.currentLocation.draw(Game1.spriteBatch); + //Game1.spriteBatch.End(); + } + + public static void drawCharacters() + { + //Game1.spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + Class1.SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, ShaderExample.Class1.effect, "customEffect"); + Class1.effect.CurrentTechnique.Passes[0].Apply(); + foreach(var character in Game1.player.currentLocation.characters) + { + character.draw(Game1.spriteBatch); + } + //Game1.spriteBatch.End(); + } + + + + } +} diff --git a/ShaderExample/ShaderExample/Framework/Drawers/Layer.cs b/ShaderExample/ShaderExample/Framework/Drawers/Layer.cs new file mode 100644 index 00000000..88edf821 --- /dev/null +++ b/ShaderExample/ShaderExample/Framework/Drawers/Layer.cs @@ -0,0 +1,65 @@ +using StardewValley; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using xTile.Dimensions; +using xTile.Tiles; + +namespace ShaderExample.Framework.Drawers +{ + class Layer + { + + public static void drawLayer(xTile.Layers.Layer layer, xTile.Display.IDisplayDevice displayDevice, xTile.Dimensions.Rectangle mapViewport, xTile.Dimensions.Location displayOffset, bool wrap, int pixelZoom) + { + pixelZoom = (int)Game1.options.zoomLevel; + int tileWidth = pixelZoom * 16; + int tileHeight = pixelZoom * 16; + Location tileInternalOffset = new Location(mapViewport.X*tileWidth, mapViewport.Y*tileHeight); + int tileXMin = (mapViewport.X >= 0) ? (mapViewport.X / tileWidth) : ((mapViewport.X - tileWidth + 1) / tileWidth); + int tileYMin = (mapViewport.Y >= 0) ? (mapViewport.Y / tileHeight) : ((mapViewport.Y - tileHeight + 1) / tileHeight); + if (tileXMin < 0) + { + displayOffset.X -= tileXMin * tileWidth; + tileXMin = 0; + } + if (tileYMin < 0) + { + displayOffset.Y -= tileYMin * tileHeight; + tileYMin = 0; + } + int tileColumns = 1 + (mapViewport.Size.Width - 1) / tileWidth; + int tileRows = 1 + (mapViewport.Size.Height - 1) / tileHeight; + if (tileInternalOffset.X != 0) + { + tileColumns++; + } + if (tileInternalOffset.Y != 0) + { + tileRows++; + } + int tileXMax = Math.Min(tileXMin + tileColumns, layer.LayerSize.Width); + int tileYMax = Math.Min(tileYMin + tileRows, layer.LayerSize.Height); + Location tileLocation = displayOffset - tileInternalOffset; + int offset = layer.Id.Equals("Front") ? (16 * pixelZoom) : 0; + for (int tileY = tileYMin; tileY < tileYMax; tileY++) + { + tileLocation.X = displayOffset.X - tileInternalOffset.X; + for (int tileX = tileXMin; tileX < tileXMax; tileX++) + { + Tile tile = layer.Tiles[tileX, tileY]; + if (tile != null) + { + displayDevice.DrawTile(tile, tileLocation, (float)(tileY * (16 * pixelZoom) + 16 * pixelZoom + offset) / 10000f); + } + tileLocation.X += tileWidth; + } + tileLocation.Y += tileHeight; + } + } + + + } +} diff --git a/ShaderExample/ShaderExample/Framework/Drawers/Monsters.cs b/ShaderExample/ShaderExample/Framework/Drawers/Monsters.cs new file mode 100644 index 00000000..5d62351c --- /dev/null +++ b/ShaderExample/ShaderExample/Framework/Drawers/Monsters.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ShaderExample.Framework.Drawers +{ + class Monsters + { + //Do logic for drawing monsters here. + } +} diff --git a/ShaderExample/ShaderExample/Properties/AssemblyInfo.cs b/ShaderExample/ShaderExample/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..89c0a477 --- /dev/null +++ b/ShaderExample/ShaderExample/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("ShaderExample")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ShaderExample")] +[assembly: AssemblyCopyright("Copyright © 2018")] +[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("9f6b98b4-be76-42a2-8a9b-d6361b20deae")] + +// 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/ShaderExample/ShaderExample/ShaderExample.csproj b/ShaderExample/ShaderExample/ShaderExample.csproj new file mode 100644 index 00000000..d7c553fd --- /dev/null +++ b/ShaderExample/ShaderExample/ShaderExample.csproj @@ -0,0 +1,77 @@ + + + + + Debug + AnyCPU + {9F6B98B4-BE76-42A2-8A9B-D6361B20DEAE} + Library + Properties + ShaderExample + ShaderExample + v4.6.1 + 512 + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Netcode.dll + + + + + + + + + + + + + + + + + + + + + + Always + + + Always + + + Always + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + \ No newline at end of file diff --git a/ShaderExample/ShaderExample/ShaderExample.csproj.user b/ShaderExample/ShaderExample/ShaderExample.csproj.user new file mode 100644 index 00000000..2f196a36 --- /dev/null +++ b/ShaderExample/ShaderExample/ShaderExample.csproj.user @@ -0,0 +1,6 @@ + + + + ShowAllFiles + + \ No newline at end of file diff --git a/ShaderExample/ShaderExample/bin/Debug/Content/Shaders/GreyScaleEffect.xnb b/ShaderExample/ShaderExample/bin/Debug/Content/Shaders/GreyScaleEffect.xnb new file mode 100644 index 0000000000000000000000000000000000000000..6c4d112f2a090859488452d6b47e033803fcacf5 GIT binary patch literal 1176 zcmb7DKX21O6h9|zaVb(5J0RhKp-7RHh6JUENRWi4QVWWj7CJ<#T<4-%b$#J%E3L#( ziIt%UhK?QBvh)Km@Bxrm82AAB02vujkKeN|QH0ciXFvab?{x3ay?5SwRU6E+i#f)O zkH$;Sl_C_q$lePadtExmd?4hJT^B*bgUEi->v1>Q=1!N(ymiy=rgZv;o*U+^*Ib64 z2&yH!Ku_MP$9@z`UJZC0NypDyt@yzA+)aMEBaV1bt(1yxuX4awyS!W|mme__W1MB| z$I|%g-NZ~k#-h63)Ans34#4hddjfD{VF3YvIVkO!l?50rCk$7COVAze9tPgqm}7x_ zNGV1JO1{g`iEL;>d!EklPnxd)AIz+4$`oY6my_U1U90!3QQK{j&rb>nAvlN9**-&Q z>jf4^!1|NUZiv=)yoS||;x0zhY4GqU68%m)a%7heI&Zw7D+XZ`BP`x*=)rcHlApF+ z$LHyU?cNC+4u@0^L&X==0N@uO_2Ek6H;vzc^H~1{q@Ip6jy3)P;$pd;gzJH`W}$P*nXxU2LHS5-!A@D0nF%)#OQ}WL2#*YWUEvFfg8z*}J)3w_-AZMX zSX8T0X&hGw*$tWY%}i?`Pl`{uiBaEwLn)4_XH)?`gHoQBo=pUN2gS=i;4}S6td;GD z*2Y$Q%Sumg)x~k&^SQLv?BZj4tz5K=l~RfNeyuE4-+5l6`@9Kd8LBqD->BVcfa6*x zd1<`_CBa=E&apelO;0NQaKE@;`2RBQrz1Nj?Sp#e*rNN_!0mB literal 0 HcmV?d00001 diff --git a/ShaderExample/ShaderExample/bin/Debug/Content/Shaders/NoEffect.xnb b/ShaderExample/ShaderExample/bin/Debug/Content/Shaders/NoEffect.xnb new file mode 100644 index 0000000000000000000000000000000000000000..0fe921e4646622c5de647b8edf03262585695dc7 GIT binary patch literal 752 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 z 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 literal 0 HcmV?d00001 diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip b/ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip new file mode 100644 index 0000000000000000000000000000000000000000..28dbef107a37b811d2498837ece6041c9667592f GIT binary patch literal 102669 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

F({tQq1Jh1NtaDXtIr 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 literal 0 HcmV?d00001 diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample.dll b/ShaderExample/ShaderExample/bin/Debug/ShaderExample.dll new file mode 100644 index 0000000000000000000000000000000000000000..7ee93d39fd0c82d9afc80eef0df13e907703a57a GIT binary patch literal 11776 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 literal 0 HcmV?d00001 diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample.pdb b/ShaderExample/ShaderExample/bin/Debug/ShaderExample.pdb new file mode 100644 index 0000000000000000000000000000000000000000..0baaa1571cb1a53167ef75411810e7d04d33c9c3 GIT binary patch literal 24064 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 literal 0 HcmV?d00001 diff --git a/ShaderExample/ShaderExample/bin/Debug/manifest.json b/ShaderExample/ShaderExample/bin/Debug/manifest.json new file mode 100644 index 00000000..fb214cdd --- /dev/null +++ b/ShaderExample/ShaderExample/bin/Debug/manifest.json @@ -0,0 +1,10 @@ +{ + "Name": "ShaderExample", + "Author": "Alpha_Omegasis", + "Version": "0.0.1", + "Description": "A mod that attempts to add shaders to stardew.", + "UniqueID": "Omegasis.ShaderExample", + "EntryDll": "ShaderExample.dll", + "MinimumApiVersion": "2.0", + "UpdateKeys": [] +} diff --git a/ShaderExample/ShaderExample/manifest.json b/ShaderExample/ShaderExample/manifest.json new file mode 100644 index 00000000..fb214cdd --- /dev/null +++ b/ShaderExample/ShaderExample/manifest.json @@ -0,0 +1,10 @@ +{ + "Name": "ShaderExample", + "Author": "Alpha_Omegasis", + "Version": "0.0.1", + "Description": "A mod that attempts to add shaders to stardew.", + "UniqueID": "Omegasis.ShaderExample", + "EntryDll": "ShaderExample.dll", + "MinimumApiVersion": "2.0", + "UpdateKeys": [] +} diff --git a/ShaderExample/ShaderExample/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/ShaderExample/ShaderExample/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000000000000000000000000000000000000..034bd31913d22258279d17d002db7da9f6114ee9 GIT binary patch literal 7911 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 literal 0 HcmV?d00001 diff --git a/ShaderExample/ShaderExample/obj/Debug/ShaderExample.pdb b/ShaderExample/ShaderExample/obj/Debug/ShaderExample.pdb new file mode 100644 index 0000000000000000000000000000000000000000..0baaa1571cb1a53167ef75411810e7d04d33c9c3 GIT binary patch literal 24064 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 literal 0 HcmV?d00001 diff --git a/ShaderExample/ShaderExample/packages.config b/ShaderExample/ShaderExample/packages.config new file mode 100644 index 00000000..96d0f73b --- /dev/null +++ b/ShaderExample/ShaderExample/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ShaderExample/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/Pathoschild.Stardew.ModBuildConfig.2.0.2.nupkg b/ShaderExample/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/Pathoschild.Stardew.ModBuildConfig.2.0.2.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..1b4cc5db0b96b50cac07e5e5af22c042ab1d514c GIT binary patch literal 11531 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 MRrP(o^76BRNFMERJ5 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 literal 0 HcmV?d00001 diff --git a/ShaderExample/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/Pathoschild.Stardew.ModBuildConfig.targets b/ShaderExample/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/Pathoschild.Stardew.ModBuildConfig.targets new file mode 100644 index 00000000..b49d646d --- /dev/null +++ b/ShaderExample/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/Pathoschild.Stardew.ModBuildConfig.targets @@ -0,0 +1,144 @@ + + + + + + + + + + + + + $(DeployModFolderName) + $(DeployModZipTo) + + + $(MSBuildProjectName) + $(TargetDir) + True + True + + + + + + + + $(HOME)/GOG Games/Stardew Valley/game + $(HOME)/.local/share/Steam/steamapps/common/Stardew Valley + + + /Applications/Stardew Valley.app/Contents/MacOS + $(HOME)/Library/Application Support/Steam/steamapps/common/Stardew Valley/Contents/MacOS + + + + + C:\Program Files (x86)\GalaxyClient\Games\Stardew Valley + C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley + $([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\GOG.com\Games\1453375253', 'PATH', null, RegistryView.Registry32)) + $([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 413150', 'InstallLocation', null, RegistryView.Registry64, RegistryView.Registry32)) + + + + + + + + + + + + false + + + false + + + false + + + false + + + $(GamePath)\Stardew Valley.exe + false + + + $(GamePath)\StardewModdingAPI.exe + false + + + $(GamePath)\xTile.dll + false + False + + + + + + Program + $(GamePath)\StardewModdingAPI.exe + $(GamePath) + + + + + + + $(GamePath)\MonoGame.Framework.dll + false + False + + + $(GamePath)\StardewValley.exe + false + + + $(GamePath)\StardewModdingAPI.exe + false + + + $(GamePath)\xTile.dll + false + + + + + + + + + + + + + + + + + + + + + + diff --git a/ShaderExample/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/StardewModdingAPI.ModBuildConfig.dll b/ShaderExample/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/StardewModdingAPI.ModBuildConfig.dll new file mode 100644 index 0000000000000000000000000000000000000000..e8e4c16849c86c5aeec79ea2d99a46d032bef259 GIT binary patch literal 16384 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 literal 0 HcmV?d00001 From 9c6b2efccd394ed143b54d130c877a2e6f5c0dfb Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Wed, 18 Jul 2018 07:47:16 -0700 Subject: [PATCH 021/110] Updated game menu fix Applied shader to more game menu components --- ShaderExample/ShaderExample/Class1.cs | 71 ++++++++++++++++-- .../bin/Debug/ShaderExample 0.0.1.zip | Bin 102669 -> 104090 bytes .../ShaderExample/bin/Debug/ShaderExample.dll | Bin 11776 -> 13824 bytes .../ShaderExample/bin/Debug/ShaderExample.pdb | Bin 24064 -> 26112 bytes .../ShaderExample/obj/Debug/ShaderExample.dll | Bin 11776 -> 13824 bytes .../ShaderExample/obj/Debug/ShaderExample.pdb | Bin 24064 -> 26112 bytes 6 files changed, 64 insertions(+), 7 deletions(-) diff --git a/ShaderExample/ShaderExample/Class1.cs b/ShaderExample/ShaderExample/Class1.cs index e79628a7..db843e14 100644 --- a/ShaderExample/ShaderExample/Class1.cs +++ b/ShaderExample/ShaderExample/Class1.cs @@ -45,12 +45,7 @@ namespace ShaderExample } private void GraphicsEvents_OnPreRenderEvent(object sender, EventArgs e) - { - - - - - + { try { Game1.spriteBatch.End(); @@ -65,7 +60,6 @@ namespace ShaderExample SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); Class1.effect.CurrentTechnique.Passes[0].Apply(); Game1.activeClickableMenu.draw(Game1.spriteBatch); - Monitor.Log("DRAW"); Game1.spriteBatch.End(); } @@ -115,6 +109,60 @@ namespace ShaderExample Class1.effect.CurrentTechnique.Passes[0].Apply(); Game1.activeClickableMenu.draw(Game1.spriteBatch); Game1.spriteBatch.End(); + Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); + Class1.effect.CurrentTechnique.Passes[0].Apply(); + if (Game1.activeClickableMenu is StardewValley.Menus.GameMenu) + { + if ((Game1.activeClickableMenu as StardewValley.Menus.GameMenu).currentTab == 3) return; + //Draw menu tabs. + var tabField = GetInstanceField(typeof(StardewValley.Menus.GameMenu), Game1.activeClickableMenu, "tabs"); + var tabs = (List)tabField; + foreach (ClickableComponent tab in tabs) + { + int num = 0; + switch (tab.name) + { + case "catalogue": + num = 7; + break; + case "collections": + num = 5; + break; + case "coop": + num = 1; + break; + case "crafting": + num = 4; + break; + case "exit": + num = 7; + break; + case "inventory": + num = 0; + break; + case "map": + num = 3; + break; + case "options": + num = 6; + break; + case "skills": + num = 1; + break; + case "social": + num = 2; + break; + } + Game1.spriteBatch.Draw(Game1.mouseCursors, new Vector2((float)tab.bounds.X, (float)(tab.bounds.Y + ((Game1.activeClickableMenu as StardewValley.Menus.GameMenu).currentTab == (Game1.activeClickableMenu as StardewValley.Menus.GameMenu).getTabNumberFromName(tab.name) ? 8 : 0))), new Rectangle?(new Rectangle(num * 16, 368, 16, 16)), Color.White, 0.0f, Vector2.Zero, 4f, SpriteEffects.None, 0.00001f); + if (tab.name.Equals("skills")) + Game1.player.FarmerRenderer.drawMiniPortrat(Game1.spriteBatch, new Vector2((float)(tab.bounds.X + 8), (float)(tab.bounds.Y + 12 + ((Game1.activeClickableMenu as StardewValley.Menus.GameMenu).currentTab == (Game1.activeClickableMenu as StardewValley.Menus.GameMenu).getTabNumberFromName(tab.name) ? 8 : 0))), 0.00011f, 3f, 2, Game1.player); + } + } + + Game1.activeClickableMenu.upperRightCloseButton.draw(Game1.spriteBatch); + Game1.activeClickableMenu.drawMouse(Game1.spriteBatch); + Game1.spriteBatch.End(); } //Location specific drawing done here @@ -122,6 +170,8 @@ namespace ShaderExample //Game1.spriteBatch.End(); Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); + Class1.effect.CurrentTechnique.Passes[0].Apply(); } @@ -160,6 +210,13 @@ namespace ShaderExample //Game1.spriteBatch.End(); } + ///

+ /// Returns the value of the data snagged by reflection. + /// + /// + /// + /// + /// public static object GetInstanceField(Type type, object instance, string fieldName) { BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip b/ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip index 28dbef107a37b811d2498837ece6041c9667592f..410471e64b182c33c656683cd4743982207f7012 100644 GIT binary patch delta 12094 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 KCc^wz;r|06NJ?h_ delta 10678 zcmZ9SRaBk9vaNAmE;2PZB-SuYgmwV3X zmztwzje6?QJ^HKqUV#*wkA$hJ0FUqv1_lNN#-r{c0doufU#Piq{raC+YZE-XiuF$@ zsuyL~YY_ZPV^7=gg{1+$I5?aLqJs_pdh9{(ZUeNZ`&>8Xw^ zICLAzQ^G8T=2co%rfR+JD%K1Z^c~1;(aiothzAk={1K^u>ayrhRn)~qO_%%yB`LK| z5#LIm50pqhD&9Z+Ug=}(irZ;G>tc%1r^U}dGY*n&m)*uh?w(J9=3Iu8^;JI!Bp5_7 zB6b*I%*|%p)yIrJmF=i;nRSlXDt6$z*F_tTJ6ji^_tI*srZr~lPKl&fq3*Dw%2jXk@+UYWMrhF<1Zlv6y3eOG6a#(MA z{~Ye~AqavZD)NyWXiJhl@Pe}Ob!&q4Bt0e{>Y4e zlxdB{M(x_IhsmIWIi5qi+}tCg%GQ}|IGlqIUE=&}7Qd(nI4m>5Vc+bEBz3wXIL7`l zIHsu$ApH89Fx9i{95!-Et~5!ByE-GeQ;!Yf%@w0{k&w21zs<0~@jGpjVada`C5j6B zk4hOQ^jL2a`$hlG;N1_6(AEO;#sw( zN)d}D9qOr)pwcGC&@dc5sc(zRC0|Kg=kR_snh^Y5T14gPwacgajE6-Tm z6yb;K+x%4N_uvqqDYixqr+WyEeS9OqXiV~5^=jzf2PR^IS~=qsWXn}i)H55X&ZjW= z!biaoPeSSILkIp`_V$y6DP$p!NE52CNmQdPAoH8fxv_eO-Ot)m{D04_d-1r}h6aZo zj%XZ2zW%}uUBWJN;-lfoYo1emv9z5*lD{bn(qMJVhuwqX6=$>c>nAU!*)gmsd-ADk zj=s{{0s71KJ|$)8O%Y?WB^2LD70LS-#Gxk083P-Qq~o+ieOLD~7heGM3vSP$ATEWy z98?_#EQP2;W4Son->oD|i=Gp6+JBhnnpO3bU8)#%PO4M)UO3QI{CS~`U&f6Wt3#!%mvQdi9_t{58EA_5P%qY<5G&IpFrIJyGmcW0lZzfy+uL@ z&Bjt1Jfqd5*L2sQdUrP3X+4Q>z>hlQBo-BG$+VNMP0KX;;d4YPzFTzK<$+b3ZOEnpZF5zBV6H!*s$f)cB4y8++9=t? z0wPCQXZ&+`%6=|VOZl-mxrVoXGK2#!vky%WfpZhb_~vwuHEitDTUMiuz|dwVD9bq$ zN%@ub(2mwb?pISsxjgT*PBNEDuN17-w>~6IV>{+h1iR<|L=| z4#~x>pFNy$Syac(7K1HY|9-Dm{c-hf&kO6hkRDL z$hQ>p%+<_;gXRf$^0r~}Bj)_5^Dhq67`D}dQ+q!7ZD@;W5YC2_nlwI5*795l@#tPk zKWXhxTC|(XNG}?%8>R3TF9!sM8O@T~+42)z>FmZ!WsS)aqVev&p$qu!8wrGHU|=S| zk5q~-wNH=qx8@5!lVkr@@mTrM#6@{8JSW2Ag#o;0Zw!usOaodt$s%p@7G1p~Q<=)B zreb|>!;phWVPg^Mhr)-I#d@X(S2rOm4!p%^>zpawjtfe8?->*qlTbN}Mtp8kvPG|u zZDlGa-t?Q(_e|VMNn^t$BqzFP(GaLi7IOOc***wP?e8=f&>eOqvxTi06RN zmX4S4N;P{WHPcDyA=F@fU731+Ae+wq{n*Zi@NPz}#`xY3}2^%eyx*?M`+HM;|rJIwNYwU6W%i} zgW|f0Oh1<(o+d%V1aqaK*dGjUM6YRukyv=5v}U1kzHtiNw~m4fB89RuD9=fW6Z-2> z=V(%4kc(C1W;Uj4e;blz$fD+a+__7oTo~&nFm^%cO;N$ugS-Gpgolea} zrSeO<27nTBY^nEk_HS@YN;|Xt#6YP~9`>(1BxqNumkHtAw?}P)n=>uVla%gm@p~ax z%tClO6Wu;yp(;GW94&xquB#pPCP-PcXiRY520wskW{&8ZhdnQ-$|zrdXeMo*W5K7n zRPiNdP#$p0@C}hkrt@!DRYiS`l>hapfwobLw*mBga+TEolcBaR%5V>wh`@#!5lruY8i&L0z+-Aw4T#$fYg+z~N0taBgj} zvNhRqdf z0gsp{UL<@qT7NoHJgC+zP;IMRV%nn!t|+&;BhIWXrsTku`gj}mg(Np0c0W}efUH;e z5A_-{>{;aJYCEjmrWm^4{)|;?9BYMoY}7hnS-kODIB-7)SaGI(tqWCRGz+bC&2SHQ zkYymb))gBgg*#38r zqJ*m!_uwO8Os**(TQQJduw3#67=f}o+a^}p$ADI(Ec23LIqB{~ZCKz9qgA2fbD*v- zf1QRXqK5;q8Ev+c0Bolk+2DBz(<*M z0z&h4wCM7HdQdu%W!S5@#x~&6$IIkmC@_q}9(IIV844SELM%sKxqB{%Pt?ei1CYk!uf$&@j|R`zT1_WUX91n|(fB z`1r+O3~4S@s2hDilu8VQ=bAEpH{a*#e+WXCV_lwRW3LSS> zi%`cK^Ci`2AP$UDi#Qk@WH&3;MCp+lfJO2fgaTogDzs-$gI8mAo{Zvw+j5H#?Z7{m zXhz^#Bl7x>)3@vu#Pvt7{3FDZa$8A zm->l<#h`!3en>H~XME}bJm=)4R0J^%P9$meh{_FzD8a{yq%X#u;;3J*_rRa%#Vj2M z=fC9(#n+>2%)fsm7t5`Q3b<8cu#}n|(&3uYO2#jVFy_;#b_**MI-yP(@l)>lshDq- z`7tq{u!7!IZl#CUp@t#bFlbySi1YN39F#LgkX0_CKC-k_Zb&Ks?2D+u=VW5?_oU;o z@I~r^#yY=+{K1GAWMXmjd*RaNh0GxIwZR|3t&GG8HUDO2#9=I+uQltv6&@bMoYyuZ z{k#Fe44KXdPWt^UnVVh1Pyr_^9@(=XT{k{P^fQq-aA*)kIdSO*;X_Oh80y3_X;7T) zt^#{@xHav6et*3Uyq6Ikm*SA4SS#JUxrb&`jK7o1>ZV(uM9Qjf>$x(bO^qPHQ*!d4t4ZXw8LG^mG~Lv~zOZ8b#56vra|5+Q7e zTiRU|vm2emCEzhw>99IPuqPD!xc(f>b^0YsQih`f6FP4O^s;O^pbP6s#<|XmefWyV zZC?D-bu7X5Ly6boRdxKYjHL>iF-m2#Qf;`c3#x#oWQn$b4ZAFiAs|}olhRj{uh{xw zOvE(c=p@<_p&-3F(wbI z-0OYZHMsEP>l+S&$VYCc`Z&FcyZW}R>n*3ax}HRK3ar=ioH=k>NHsO;aJraO<=HS0 zr;j0CaxrBRF`Wl+BxHhJ2rug@x;|ic#UE{>dFy@wuIP@IvX^m%MIDCWL1|4VF0mon zW8bCQ-WVS_JV6lWC-~HeRw9T~X7(WM_fE~!2~z`%KTMO?%6jiy@`C0FK`KwonBT=_ zZF0-W zY<*+|Zlbf%?Q`S@u%ZL{4swp;%C-CWoxs<&- zB+5C@xY^^w>B#rzfTHyJ2#Y3Lu~PlQ=eOAdeon3!e%x8`R94+S8!Kpt_)8nJ;VZ5| zBBb!Zgdp2R7^{0yccY4*wJXFx@81fu&? z1N(Rc)904cL_7;#TTn@{yj`B1y;p5OGh zV2)e->#wPl5z+nb<;A{t2cf9Q5Kma1Dj%7p@=q0uuD9sVvgD2QPc9zaKNxby-(5th zpGVahT*&u?gs&ML`E`Yno7xG4KE7An@UtSdT^53=T#TxSJ|G7 zDw*xCiw`-^5oBo)ZS9Tvq$Ms%SW+nEUP7F@9f`Ak zJkn&O{@q5Oz|Tp9w!EW_^cY^_&N2O$+Qt)*(bUUm>y40L;O+6w8YZ13&!S1OwiSPQ zs)k~7G`;5c>V0CUbt6q9k9m-!!q0jhNe#Uv=Bqc6()>bs4{`K%0yaR-8q}p$tly{Z zD{b9%=a4#?YbRH@YXFX3+t?jSD@$M+7un@Xp1xo5PnIyc$t3#rhQMlt!?t!}VIoWs zU2%52h*BNiRi=bb*3aiierC+))Dh6ra(XlS=s{MYv~@H^R=GOC1BG%q8k7_hI=c4> z9Uz;=OW6C%y?uIEKLJoqH|9Vman9eoe$*z&?2MV-72kEpa5HP4M!ML#R$o&vJ<`gs zv^+Pq-|Jy=W*sZMc3F&9h+OY?QJjgqeHp`g+eV8jxm$c`4XA5gJBX%3pSBeqy4_-# z+z8HG1Cdib{rXrF)V<{;)*+^Kwe@h#{|puOeG`V}UsL>65C)e;ng9zis)qKC24ldV)_Euo=cF^2hTDB?wT^+D_d4<;qVl3h*xbXVG|~NaB?n*FF#VF zj+X@KjVj$?+U~m#oMOFaUB?XNjJuyV(jgDqa`~IG(xnxzH=q_TvXwC@(!_E!cAQgS zZ9SGH5VzGtRXZ|y!C(Dma|$CJ zF6FJp+~>;KyvDD#_pC8U3|dkpCVBx@>`fo~kcgsgKDw;7bhJ6QbVyPs`M!2xw|E%Y zYkg3(K>TOiZWPapeEjoGnE`P}h0=3^FzGF^k36q)O5QUXohHKVo9tK}USf9~jSjv) z1N-2K;*esgfjkNkKs{_nlry<@$ID zVnpn-xj&YToa0-Wcg}&VS*^LRwO@6yb}oBRaP~Z&hpof$pm$p==I!_Rt7_$TAqXuM ztsU)!=k-V%r2jg7Iey#z;b=4R>MQbT=Hu3ME=GxI=|u6lov)W-*b%KEzuyKc=_SK? zV(}NVl@nZA^3tocmN{9#AV8K=U&l_GS5At}!@j_G-rAwUV5#sa2CSF4x{UYlTSo^g zg2#03O&jAwG+RGZ=6{N!wNp?=qp2m$N!Gh8vJ>Tz1e|?qKVWlK*~PeHz<6{_4!Hy?vq$yfp$H`pzAs0dWL~P^>B>p#qOLLqtPg-d zcmGJPDn_t6r;v>Ov|3Tl?4|IfGOgp{mENwG%a`TKw0XNt4h=eueU$3@w#Q3r6Z&Gj znRaaloEsDV(%Ah=>ZmqC_G_0X40B}<+v$4dFkuwehHL^@w0nW=(KvMG4aW5k)`E-- zyqOW!4X}NQ&;l)q=Zm*ZpGEWHW;5jJ5WmJMO(fci&*4q5gj8oD-EY{5V;j8kXaAO-Jn+=--35VqX9*w`g9g-4g^nNCipiJ=A0y0i;mk9g;K*5) ztT%In@y@X(`9_wJ?%Blg&qo%}tr*sAKApjm!{77eSEWBR25rH(tWjcn#}A2N^21I6 z47&gZ7X-!%o)X?2{uKs{w{BoQ#(5Rc$rJ>_dm9MSpnehRB=2;?n8V>xTRjK@@?8y2 z*M1`L!*f#LD5|<~t}FfnsD_=*LA5Yxt{29MkwkhvL3dz12sS5Z3dt1KRA}HOE@LSY znuOkNxr(fdaF4Q1-uWU8;DOl-v0=vG0e^U$-5MV}Fzh;0XIRjgYWo>3ROPv2-F#$Z z4VE45Idt*PubZQUJmP~<%w?BT2CT{m%)v+T-xv)fn*lgp5?PG>A|aR|A536e^6ytf zfFFq_m^EmdieWiQ+&s?0JAWk&;cMVFUDH*jlRu_#0#3LGta&jArLuSd?^XM&fipC6 z)b^Nbx^j&7y3#u$`Eg+mBr*T`FQ$xpKKgtI-`m5}vmpQORYa|~@#3B}yRaPC$F~A* znYXl~4J&>a-N!ctX6KZQaKVOt-_nU%_7Xqy-JrdO>eZ?3yMFfzm|T2tZnj@@d(PeR zks3tac)?l9_VrZr5%bn!4(?_d_>u|EKO=@Y+y7yX0$`7mc$X_6OMaKwS+&8 z&_X>vSlQ2pQcQX8jSeka;YxXI>$fTQvQzHM5rwCofJ#zT0PFNpyV+&YkQS1GexJ|O zs+gUmsNvsXZ7up$9r|0~&(*ueNBBRqWBnF>Q}!{YEZLcU6WU=?nP4G2!rtwiYkgYs z*_SR?DM&+jjiSkIy%}1&E1g2qc&z&6EOD&nfL2XXXg$&AWx4tvs#JO)J*%&IVhGok z_IWA3V2e)h96i~hZi1m#B2DwDP@aJ5*(QyO=aeAxnc8Q*PJsq4l!rntqgg1uVDi zEZA0*S$nJRnw=F-jL&7u}riW@;SmsV6M;gFV@WtkEaSMc81UL`M9R zO48F7yVKGa+l!qW@m~_$I^>SElgdY0i@%viv8Ng)YyHnzt-n_@%-0UpA`M(f??|4Q zy*ciOQ0}Nh1YIv0AL6ZE<(E8W>-P|`-aITXDj(W@js5)#^tUe7Jvo0_8OJPQUx-UP zF|(YgsPy9ASynA*ET8I`giB;Ya}CI#|Ig_Jh%ZGWzF|^qR$K16R`!0u`gEtHIJ?Ob zPcSaYUj1c6r7q4UOR)g?CV4Qjk3z(fxv)V;T&(RVQCM4Ggpc|xSz*ZinI+kl>~DSi zm&fEUqy>Kf1f!GhCv~&AxD^<(rUU1sJAt(81-B4nXiv!dT&>wlK7r(0zRqnn?0quY zD1YYmgu~+_63CaWrmAz)Wq-4GXY_Lh2O>Mcr=D5{t`$nGb3XBTs>sv+?OFjdhM_EqU0~f50**)MlBk2x?Nj=gR z7QPP$VtONm9nv`gd=d_E*`rq!smALcj5IJ@n6uHZN=2_js7PL@Oyy9-P#Umbs2DjP zg~Epc&-69(d}Wu^fm%Laj8sX|yItpkH6$>}`pTsqJ^7q2>iSDiQIHB;Ds29EHTk&@ zQ{y?8S%4Tqs73ArGgUh0t}VU)^X|9|@bL-*KT!M%JIFLMeg20jUwT1vwcAK!P$RrD zVjDhZ1ep54l2EPX9hkzDWZk!uAjs4!-3ty_4dX>IrFh823Fuw>bbzyN0@DB!Ty90Q zE)w+AG`}{2T)Mo~dncTSbs%;9T#)=GxZ%=?bX^Pk2n!5e81{^;fqx{8as`bB0SFiy z4P~F95xQ z(tYl<;g%I5J`(oL&rPJ4_gfPHMYu5f268D?(4h8FeGxmDSy(^|KvA5#t8hyiAj4$x z>Nr!^i+=UEIJoUwO_d`fx)=;>%GgyTsO`a2-ADfga?izHbLh&QCjz9X@ozX%-@0v= zIM#NjUVA+NDSfY}zM|CxUWceZE!)j%MH}tKmTndSAn*ph<#h5R`RBt{JU^Rn=Ge9w zhI>NZ1G;6y-x;#qDg9*+Ko>uKbKI-<@<0vz&j~%z2zS9nJb){`?Uzh0^6KbjDY_%N zFwf}wY=~Dan4PEr$<9(m5wtyB8!_oKq_oGRI8J1H1f8(+qiEd4f{Zr1;OI;SYDqih zDtHbW%7iP*7huV>BF@n)vRR-OYc!K2%btYZV#HA|erWt)J5ZkIYM44f=og}K<0!?hWADE2%l@^7<_u#WV*iPANR4RT4a))yYo-#a3| znBxbVWJvEV^WYS#3$#UNEAnelrDiC)m%|_HKZ-PGRtCg85n@(KhjRI8dUj# zXXLe#c0p-Fx^D|R>$;YeT?Tj~^r}jyOo3jy>MmP5Q;fOZdQ zG{a|QE?2g{qve(RSGm&}tqr<;)K`a;vXQFLAOejY&rvFL|-uj3iGAPa`}1aIyvL1JP3r9hIBa zlVNJeb5IOHDq(6$a%$>b*{k9$#iiWwG`mj6OJ(FG8!-!q31^jiS6lw-AXkj#)I!C# zyAz*#pOpNEs4Hs@mRuddVxsYpZ|#{L02K0ZldDLUgEhxQl^=j5ZmbR57O?(X6MBP@ zbqP{7J)_1v6Er^kjK|%^@JUt*^pyU-?oeT3qN<$^74wB|L0-S;M@IqkKaD#6{>Mfu zWY!O&PmZ}}w44zdes*YZcJK=jPzV7?3{!vi6Lr+quli}fRYoN#^ODYV9;^ZO@k#xC zA_XWq7f)@!UJlIP0?d5>ilWzdMDAQ9^}N>lNTsYD>tm%oKAA*Nb5$*ZmJLZ9FlySU z+;u~DWV%<|=;2#`Q{!AZrIN(n^L{aY3%Fi_q|m=8-j#_I>=D)L+^E%Xm|hrTzvS?z za;z{85Os8rNG2Hb;fq?fA<6(mNR&X?@!7}FIpD|%sy7YKUQ@GjYO>d#q!bi*G_7|?qKh(iykTfC^{&+o5Sz0 z_*Gn@ruZVv12>+gik|rnV={e2Fd*|Jsci(;Y-FM%e*>%T`kCKmwRD8~zBYG5fzScA6`wgH|q{b?gDh7>cKiOvcW~`^>mg$i%Hoymd==e8}!Mla-a>xt{9I zHlj_!N4vVV>@1GXi{b5g*hZF|t*g@S9!uQgb%q+_OS2(qm-iVy2rj!)UOhG=aWDw~gD z{(P}*3i;^)`25qDsF2j(AN-n>vl_>wubdW&t!z0&TJl zVqz3PT}aawhv^n9CNM~i)N#kj07Pd3VR|_WR>K9rC!O_00*$sSQ8zLLq>-sipJY#C z@#p75M*}7jmO4gQyVK4?LW4#Ux2J<`&j6^iXL2(R;Hq~Ap2c{%4GptdY!1Mrv!Wu{ zIO8{t-}H>%Gyi>zQyLIyFk*amvN`p=(`cwGR;OFVg(l4jVeh#jNKcaa#qBu^r}XG)7{`c&*Cyzr8{`T zXB*&lEmomd9P3D zQ-AW@#a(Fp`v>>jd~rP*_q?>tTr~?jAweEFIntEkofeCK`@8@4rB$^>-pn^X|M05g zFk4Eprd9U=Yr4c0e&(WvSEa^>-ulcds~#-MF*&)mNq2?5H~I3{lUGUw_of@(T6Jep z?24z}{jcOu)0@Ecs58WKMWPC?yq`yS(WQ=+sJAoqt1k6eiFz|rKj%_U6se02Hht11 zJzOGLO&@egUn`MzCLE0Wof6)e=mY*QCA=-s1^mY)d}U%S@L!eiixNwx$MnRaX#fqA z0p?5vn8CCuSd7G^DFD^=0Ac3(F92|(dgNlvQ?I%H65I}73b3z;Gy#!oKOQ3EsJFcK z3J4{AbqO(}cVBKL5M7^Hvm>5`zh~CWtjVncDYu$6T?T+ug|NHaZH=y}oBhDk^Dnip z08XAlIY)a9D6vWUq{f1qUz<$)U_pj96~!%!=M|^JGAeqrcJG+0Q-rMiZ=Bv*rSK zq_u1dM{)}qD;K_d?i>*5s_&a)Gb3eOM zo=H@VJC_r%kuac8aNmLj;G_0N+?mf8)8_#{g!^5%N0^9<>65YLUq<5>*y2U`X^S=b zvdh;#0jy%x>&D6tYH>QNF!Nw_q$X5Q_bhn zqOGO*G?ysF`IP4TN1RV=v5!z>pr%A!GIMoUQ8l|04v7SO_Eor7Bq+EL{GuFAGFQ%D zl2h$2_F#foZrWm%4&aUu(B1eA|KSH5jdVk^-NW`I^nksU4WgiC&*A|Q3K!wN=!a)e zF$DspCG*y-gQj2WuGws*VH}w>S>p&l!fL`n~)PXMB z-VJ6rk&aTs9<;EfqN2e-%kBfHNHj&2h7?+rkY_VPHa2cJs@f)QsEYh`ICV8$YxGf~ z0@YH;u9b!p`t60tqOT$UC}-geu-1qX_xi(EdA$5{^PT06?8edvvHc2DJ_wdn+kitN91G~Gt`*6w+9e15 z!G>YxhZHxXbGDX;_9B!5@L`pI2a0DEb>T-i!lEI+w8gb(`weVYC{~l$N{W3Q+Io#% zZ69WZx~_AHilVV`9{GTU^lGVYhlIU)xOd-dT2sGnr+q!-S+(ant+xj?1g260Z2@=> z_2!~`z;>M%V0Jaw)q1ra1RK@G%G9}Y=N59lP~@X7)agp&g80*S)sKbiB8f>#z`g;a zXh!_wg2aw69z`Mn#YS9*FH#b(Y3RGQ`^vT8$$eA-cwl*QadO$>WlK;PaVABWQZE8+ z4mv%B`%B0WbGq}6l^K9xc&^2E??v}HTf6CDOWzp%0Ia%*FA{X93p$gy&A;{l{lHi%!Ca_z|r-R7W3EZi6L;k9{>5 z*r|o-*P++26t`nu8XfUpD#8?0=E44JV1E@&_o=}uS}9?j!tDmxUJt0z4p>-48my|K zf6ychv4z8dML?L7s%W%~qFNn&GfeQwHt3v9b1=$O zY7Vgnmiu|7Zi3D_IvTkRaY6JJ1L)@XsiA(lLurSDrkRX1>myKdbKkS zQF?}+jdX$XQHhPw55m2wLbuFk-e1x_M2bqi4KDU=i8U->>~^|U>{eCk^su|cpc*lRN(sac(DnRG0G-c^5f+AZ&PF3LfC@beNkR9>5g97<5TH+T1sw~A=q!q79Z*BH zdlqlp768`J5(!sG*eqeYgjY$pT|xt}mMq!cFX6C+#{_FT4mg!g3V$R{V>B9=Pe%pI4@BS<>UreIs!k3{? zdn33JuqnJv%mw{g(Fpp8XjhuUH;U6V61g3e#gTi&cI8*tuZF^HOX(0N#B#_#C{{~7 zA@P**4Y6N&KJv6UC7uXe7j~rHxz~_IVOo9HJm098o;x1*0_^En7;D4wO zLuPvTTgon}pa`Cg>-C z%OqSSVT+`1q_;uumXw_mrYPc1BJW)cn4`6RpEyh(^>3h+%Ey%llqZyTl}6uD-($Wh zDv8BntuRDE+$SCrKNP*nwaPy#XOuUTx0UI>YkUWNH~Bv2d&sAb@=h(k?m$++Q)TIz zqjD|7dl=iibn!cfiE@pqDo>H}zK!bR*!SGGT=poV7}ZBZQ_u8qo9KRIm2w$WNa{{G z;6&@@$-d=d%u&xsS_t|Q)PmaKD0kUhNT-dyw7F*qwYOyoL#E?lo6UTexff(KTI_V% zOyw;*1H8*L`nP1#!xMfK7{GRxwpwx=!x;v-+jjD1|3s4MSVr2qj;)-)@cNezBlVUET}-Px z?EXU9yqs2dI@SRrZ?+F*)8>$w$s0VoRx@u{>D=YCxwD0O@QqNxF_*SdciwRN&4cLM zkJ`1lvz@w!b9r+p*}jDa%>3?N3Aah^dd1x4ojT?X%NE)4aV4(pM`40BrSp*|~98ieu~Y25jaiRE-0!^*5P z4PI4Zuh==$4HvtBR!1S7w^Bwf-)g4K0mKGL=VI~EY&Em_!EU%HWu;w8x3tZ1kuG$@ znqFsmIPBbg^&ou6c4aXyM=m-v^*8771k_gmYkk2g!&=S0!oUE#Zd?MLw^=!B0yJw(y~XFnKll|R&JbM)ZOV|JErpQWwhAYVaFO6d|%d3*2oNx z_wfRa$HX{&R@%y!ad{m80%aNEpPCo=RTwdWD9=6_4d$OBcB?ioZL@to9)EvyHXpB+#q!r`9bPraJAJB z$fIvEGXrSaeb-WRZa9-_G1BQiBejoG#YTsfa_pSFH=pdy7|GJ=(uA#3PIr?Srkys2 zli1Q63+{GHZt1%g^XI*uE>5gGVU@G5v+bcx<^dKg-=oR?blOd5$cu!)AMzAY);eUS zcc2$_SQ$5Q$a7(noswZ8dwH3&M66X(I%Wn-Z4aS^~P-^cLh6*T&|3W zL#7Pl6tk|7aW%FbN?}JMXsM9RnobwTT1y%UVQnFw2UVuo_RL;enzzGrY%Eij(7`>29drdaF5GTiasc#c88p~OXz}SPqf@Hn6M)%v+J<5;L*sbm99)Ja`N+k( zyl*5W*JGlCRw`GVVXI{fWb7Q0WRCjmLZ-jODei)H93qaL?KT}geBQ%$(*ib7k?-a_ z>=q8aoEMCI0OaH>+!it{pT1t;PE6xD!hmII-R;L=02ReN?h<9hpcu3=e2A}08+ZvN zSEbqE*8YN#E?Urvb1TEyur!15Fv_{B=fzQuw#X>Tk?q}wJ8gG7UK&@pv`9Hh71t|= zGaF|wlJ0r?sI-xj9IwomCt^~rt*hB<4)LjlES0k%G#>w6;&BPketzwel#|X;adka( zqL(|&OaXJsbf+BC%(xgw*p>sPgV1vA!1ltxZu!)lcTZ9)V|Aizz-i%`M5fHG24u8c{2L@nTXIXr(&;fv&@58Oot8>8y)rmb2I-`sJ&zcdq)n( z$?AYPkAys$NAQ^aLWfGDU(fswen*{Zg0zHj(8|}rP z2|SPY!iUfg4<1ueRDgUQ+J+`bP$-XneXJ|S8W>AMY5?*kUdE=-PD{P4&yvy2d(CIn+J9fY z@sa&kX8yjm@++jqg$VlMB>ZUTI-^w#6n|V1^%vkhq==5bpvEcM?gtn>t&y(^S7@A$r`kERR(YDS&ZS(_*QX4fyZPZkBD>^iOFL?N{ya#Lb8)PFoq$u^Z(a|xCaI;dY zj~?L${spT-_)auBdKVrnqoc>U`6C8DiN^gxAN@H{Mn-=b9sO01(CMf?`Yu~HhFJjm zwYZ3mg@U+&DYcAMN=|LHRvR6gqOf&i(?xXXLfmKhU2`R2-0E_%V4QerF<(Xb4B?d+ z1#6@G<#fU9vZvMr|BJ7zF-wEUqwYAu8JV8K&?L3Ec6auVoAwZ-wro^U>ejTP>#a0G`l~`5~^sDsIr}6G8;L}Gx867=V zABrouA;vxlTk7kB0mWs=(5$Zx_~0W~>v4ohh?ka!IL?DF;D$Hmaje?tLkhz&Q6J(3 zL(D|y)&x{UEYrLj+=B&z_W^5S0t%Ul*JyBBOw0?wjiV12^`QM&S^EeqjLuaQyp)tu z+@qpg-eo){BY+vD&KeN(W>=3Mtq90X6dipM|KyZR%;ZU)l5BWWdUAT8HW-Azcy--| zf-4w|j-JAum%~!D3OGBcYWmm^lrtnq1o4Ux9o>I&eG8Z&`UQjGxDSJ!0;@s|D4`(S z?h6LLa^0?NQdWHL!zT6(e?B7?j}AN6y9%OXYiL7Jxblx zsPH!1nNl&_Gw9d{a{_XB?TjlbsB%J?kC)k!Fsem>Eb0#L<Z|UNG(=hSFSd6g*-xuPKs6$YFa&ucx zsrYI1o~JIucZ!!Jm%!MnNhPLtRPwX`B<>Y2apF=MUxbvd;_sLhQ0hS++=$O2qOR`N z?$6Cve^GP%#Ven9D)FPS`nxuAx0aQ=w&qZE?Xp_q-T6X43XWZP#NC&-v%9CZ^PVDA>_lS-29y-fyz^8W)(Q5ue+`Cr$mZPyMZtFj^8QDO9kY;RDQJr5zuO&o?0jCB@;R` zsOs?35?piTd-5Jx>19wurDZ+lR)bQ2zNmf*N(F2};qTR2@6~ij$}Gmu?cKlSs662V zd^gPg;97SGe{Q|#R%%4E%XnFgn?dEb8F!W|Uak0TkSJN+3JxCBq#ffmCd-yr&uyqu zSxXkPVNHvXS;uv31C1-}@i{I*HNCj>A!?;4;->_zwjET$MQ`H& zUC1%Fcw=x?%yt*oiZR!-{}cOHOTTwQmyJ0UJnkYkmv}FhUqhM#2^mJdl(C zm8{*JKwNCcMtP9HBu=Zkj)R-n#VUzuT{|wdJq|N1X_?y0w5pwuzot0D)J~jCBlo*^ zS3)ArOq)0Cch5QZ+;h)8_nh;d$o6KpAN!N|^WR_BPKDItSS3ew6N1t})C)q7gbi{u7guCw!e+8AWG0eg!Xn3#TROU9BoNx9+WH_H)i!2Z8qJq>>f3*6g; z$)sbre+0r$rtZc-5F#&=_b1~%BV`zc zcnGDU^8S@Xmi-WFSjD`z*k832P0_aXR3-62p`wJCy9y$|p}Kbn1C*Ri{b-qXz$!=z zik6%9M*PvtUBW=JH$;impx{M_CDwp)*8=>>#UY+p2P%LK#J-k`E^dcZcRdCaycU^Y zVcpSF3MKt$1eRMOTLxj>2BP!a5v21}DPymVV(L*$MQ9=txIUM6&TaK>4>aA7 zL9&_N@$t=cD*5vzw+Yq>;YH1;G>p*{z5U~EbK}R_qiGFqGi zlL~ERTlMy&HOaOI3JdZoaw$}dyozMo!>SdTP{TgQyBak1+zYdF@3Qo5ZJQ8cM-@|k z$Db;pB4ucYoODz}%%X*tse|`HG}r+sYt!4ehP6pirxY0w>E@s?8ktbS0Vj|$(c;mz zH8KZxc%4NR%kH1Fkk|<-Y&fc;Z{@BO3oCiCshNo`F>mpFLlVu#?e<9dy+OJy<7=qAc`mtVe$K1;AiCYcIAv})5Gi<+~~5>_%OMoU!xG+#>=$`aIL9R zpLJf-X{jl&Ll?M=;;e$cPM#g2SEyX8pb`EqY`y?_KgIBY)=w?K15^VSBcvE_nHil1 zxmdiw6yELDgL;tuRZSZeG{=rxI(ia_)BfA8KG8w0ZyEOi#CO=-7No!7X(LE)<&g>c zHA!Cq>Qo6=f;0^0g4Co7{DmoE(`;NrejL+;oxj&TyMjKDIIanLh|*e|is;8IPM3i5 z&`lr1QJFkOrbwQz#Ml8(2lR~`UqQ4VK|XEWhp1doMQm0>HBPgzxPmgKINvu_aRu*T zHbQ&t3kWCC6#+0SGNYKu6T&N+jkwt=gTF-Mfu?*Og=6B4^q!Jnu~OI{R7Re)C0TeGCieb$Z4=56Lmf<>-R-row3x zIwsNQsRLnGskS!Hy#X$x()*JA60Kzy6_uj+M`gH}rJFs(!;_~>oPeSTIW zF2hIf&fxxY2Irrb-(r>hL&Zm31+LxJamc2+{0=YcKT`r3I#ythn_y=c4NxkPSN%x8 zdc$0Jh9*iKk3zz=3PdN*z0Q8iCKSBd@hJ2<`;aNBDDgb^9t*1FgwJJ0?;)&=z6Rv< zyejA{%AC`85psogfu1Qj2pzQ`e*(>e)61IB2_g?Ty&zXHv?GHQK9NgQD!I;Ysrtr+F#O}&mrDD#SyqSI_2zllcKO16Z~u^*@zs%8gK~G%)xV-^tjPQ}{hFQCUc$%hC~ml(wcF>h!7}4}WbuDi zFT##xyiL{o=h`^c^N)-x_4=LhwtSr5NrKFgZ1>SeYRs}{0Dd>Q*EmgC>D|An1nqwF#; zV2`sLPX7bO*cSVz%wqVHke9PvYR1OksQ9x5YBT$AK83G-La6oM=HjZb?aAn$1Cg2J^ee~zTTeu zy`LXW%v(~m*c+@`GxlFq>+2clzP)o`=Y!Ngjb7V1@F1-ha8FN{ z=Z~Gxp}nU2v)*LCyezNyA2l-2;*@9U%l@mNia&!(W0y{y_S)UwF% zc^}m^x2bw4JA$BwvL^)ju7DqfVj6R@KLab6?A1{Ann^5_J>q0PkVbzk@wa-6g>uZq zfXNXd%V|c8v!Ii+ypxF+Gb2uq5+fckl+sWqbaME|u|@7?J4U6U+!7%(rwAeIWMMK2 z+E^RZi1T1jxb=66?rhLt-ZTSn5CUg|lYNz&mZ3P=qoM2mhV~m&w8V z?)=gW6f{HtZex=$y24z;D0Q;mnp_R~%ryEe90|oZ_u;fcORVru*UwL!nVOhdj8_Nr z&SDQ;j@TCWmO0`#;EV|GIsB7nN()AuNfL!KovSiRO%o9_PK3uqK8@ni1ziE+TaR7710Z&b#Xksp^gSEQep2%G>VNl^GESV0{({A zADSEeOZ=W0s<3=9d2DvPzZq*@I(xObBzOC5Is|3yv%<^ihuGi-nFl$ z#Fdrs)Ldg{nbA<5a>$iS*UA#Aja82uiX!*wll+9xl0hYa0So7UCn(N*3p4tHC_(eMfHeTMmJyw3Gy zL%7aYXqq=A==N;CnU|pZpfExIDf^^U9vHvFVGg@>?xbu8*G(E@nErUZI4{@Zk5@{j zo2Ft?Hjo$~QpxX%*U#m(OD9i$GmXQW@(W|*Yn{; ztkxTgA26QO!^K4*8S%3ir3PtKj&4HE9CB(1H_wjSb9STIs1*1Xxq42nacT{Sg#Gg zKd5F((>12`mbv4gbJu-_{0$nrt{NTb&W;kJqr~hyYd&_y*nP%$yw==Z?0me_kiSdj z6LHFXI!1<_qVglxo2lpeZ_#^hchtPY-IP0`maSj1dCroxjZ4;VxSgzAAR404X-Jad7 zAUQTgiTuwn&c!Z0QtC-`yq?)3%vizivDVj-<+>XO89V|N;dWuO@k~R3($>qth zk?5pcj$)-OxePz@7!@y~C5xmK<-wPs3^xVG;14k!%h87;pI^7e<23RUumYzeVco4% zNZmm~rpP3$4xE8qScTnKgZohidJ%s_z6V(u)(H&Yn|LRFgg?d$SciYZIT*tg1ksHR zcr(t$WFr(!>cfN4OF%;{7;+GVYhyO8y!? zfJr>VRX7<}W2lxy8;OOu2AASm+=lCLFRsU<_#h6T415kZkRL?Wi*>;+zi8(#<7Ubo zF-mR0MBIu=w&}_yg* z^$K?4A^ZjQ;bV9NcVifzU_|RR5>Ha_IysvOJPr!E;ZgO)76vs>)PTG@#+iueMr3H)OF>a&{3|Qg{^*zK71XsY%5T1Kl@9hd?x;m`T!ospWF48 zoo6knla&7o-#{K^q+c(}I7e*z@f7t;NB_AzAX~po&DyPwh@1jgaym2a$m#LgV znaVl5aVnCRsl10WmGdZ5k$(SeD(_P+Q+aDzz+K>q?&BFcEB}_PkExLv{XwbiEKT)C z^0ISZz;qnefr@c~z}I~!k%P4)J6+_sXpeBo9^q4agwHUI7MJl>{HuPYV!X+3%zG7{ zMW5T9u3#LMJTfa6uVOWhVvQ|(bL8I2DwT4!MD-=!h1c+>_;OXpU4g*xA(`g~=JdDW#0XJmV>MlLG)+grsw=pix~!{OGgGlJ$gw>~zb z+pKi!V3k*Bt4cG2ZrxGkH&;>zYutLI>VSL5zB}XOj_O0zRdR-r>SJ^YAFOF}nX{eR zQ}6M}M}wh?rxeSEWhyxwuc7Jh7E-HXtdOHcV=6^fY{(eS65dk`LI2 z{zo03$H95|Cg0QT^By(7=hJ+_1jl6GSUxkD^=x+f0tW2iOeEE0qL82}vLD@s1$uS! iwv-%Fxx^%5B9V8bI?gbP_;~-95l(Ko68*2M(f4o3Zi9IM delta 2302 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 delta 2302 zcmaKue{7RQ7{~8!?YpjKV+?55X6d@Il~G`8RyJW$_NyhhjTRL)DTtk6MkkCp$Al@a zOf0`acK#sv1A!rE#*n@!FvkqhKTI4E5@Se6-#uP*_KnVJM+LwXGc-zy@J3m#UvxXq)APM3M;jDI1A_w{`zoy~hg z{!MqIEltK7*=m+?vNCp4TL1Zi4UP+6>^$OGGIZ$oKgz$~b-1#ZM>7nH@wg!#mmN2# zJQU+mt3hWNUwm}Z0^1Kjw;e&&jr*Pd!Y~+2HBZg zEL;ZJ50n_>rQ9KM?it^$6PNYUQIHF$H3b=5OjqRMi4N;@g)vIk#F9q0qw)=89Q4hK z{BU9?b+S5xXsmWP3-!iUeImncLiQI`Dd|vA{jklhKKXw~Fv3(S1dE;~>X>WHgUV&5WF?QR6dOjN4fQBx&e1f67kN=p6NvvN zF{YdnvZdJSXvfHRAmlzJ?oXi)wwsU;?8YS7U)&kYOpbT{M?bIEv;57SF0LlayKa+k>!fL_EiDTJ_CYLY z1XI=29(l(-RzWwVPA6k%aUI^Zc-YheCTmHLIFcg!OH9rtWHypiprfg6Y2&Jw(252h zMvvAM#yX%kAyA1kO$T);gqG}xPC815x?GsnOsE`x+pscJsvvo=Q*mKNG{VCmxu=1t z;B+t@ECVUrBVYzN12lt(8McG5D|f>VupIgXumVJ#Rf3Bd>!QKJt6-=GH-KL7J)`CBRbHErF0B?YEL0Y3Hz)Wx+XanbidAy6U22}E4 zAeMnNzzj|If=|Nk0~dgPFbFn)3&9|`2&5xSTmn-6XEl8}_!R7|AZ8nmfKP*)!4SBm z3l-|P1Eh}o!A9r@KuRd8*#|YA0H1;VTkv`C0@w`x0xkt(;4<(QxExHvGo!f4U@LS3 z_#$Wr+rTO1s9?v0gJ3(@46XoIfY>?V4)9fQE4W(jEA#MtdA{sqS1L&d`NNvt%~%H8 z0>}F>Yy&?4*GcX%^X<~&sqIRf!T(O=EwraZ-U034yC5Y(d@vExDUlr@C9)HIFcH#` z2*cR%Ja&PU2l~k*&p5tY-tyF@xOIu6Wsy0~F*&_xLu2n_Yz-U?`#OG@4uEFppU5>c zvwd~<`oKa(fne9hOP?0upcdhf7U46{gcgUvOfZT_W8}@5=>kXJSZ-Z#RO@&QOh$tN z&;fo4R)T|Il|~$)`18OKireeK6Yw{HLm+lA`w9$!gK~AbnSZUmUA~|9RON|txK^rc zgc|!sdAe$mxUG|g)w$N&@mVFVrV1=VFT{cX59wudwO=^&a-h0L`1I26wGmppCNW@s0w2(!moe|2lylnhWYdz$K3@fm5c3V7lltkb7K3QVODJHq(w)zltJFos&6t(t z(?!K*E7BjZTIkLmaZhE;rn$4^nm{(slDh+DaXncM1Z?u7Kx%5~{Q$!T^;*Cx)~ zYI(d?7?0sfrE*nKTjuq1fp?t0)}*K7ph{kE*3*7W)M!6g;x>B9i5gwv9dR2?En8l! zH`A1Us<-NWn8RK&lwC&cvBWS8aYqVmCweKrrdj^&!z Date: Wed, 18 Jul 2018 11:48:37 -0700 Subject: [PATCH 022/110] Social Page: NPC Shader --- ShaderExample/ShaderExample/Class1.cs | 39 ++++++++++++++++++ .../bin/Debug/ShaderExample 0.0.1.zip | Bin 104090 -> 105059 bytes .../ShaderExample/bin/Debug/ShaderExample.dll | Bin 13824 -> 14848 bytes .../ShaderExample/bin/Debug/ShaderExample.pdb | Bin 26112 -> 26112 bytes .../ShaderExample/obj/Debug/ShaderExample.dll | Bin 13824 -> 14848 bytes .../ShaderExample/obj/Debug/ShaderExample.pdb | Bin 26112 -> 26112 bytes 6 files changed, 39 insertions(+) diff --git a/ShaderExample/ShaderExample/Class1.cs b/ShaderExample/ShaderExample/Class1.cs index db843e14..d6ddfe93 100644 --- a/ShaderExample/ShaderExample/Class1.cs +++ b/ShaderExample/ShaderExample/Class1.cs @@ -159,6 +159,39 @@ namespace ShaderExample Game1.player.FarmerRenderer.drawMiniPortrat(Game1.spriteBatch, new Vector2((float)(tab.bounds.X + 8), (float)(tab.bounds.Y + 12 + ((Game1.activeClickableMenu as StardewValley.Menus.GameMenu).currentTab == (Game1.activeClickableMenu as StardewValley.Menus.GameMenu).getTabNumberFromName(tab.name) ? 8 : 0))), 0.00011f, 3f, 2, Game1.player); } } + + if ((Game1.activeClickableMenu as StardewValley.Menus.GameMenu).currentTab == 2) + { + var pageField = GetInstanceField(typeof(StardewValley.Menus.GameMenu), Game1.activeClickableMenu, "pages"); + var pages = (List)pageField; + var v = pages.ElementAt(2); + if (v == null) + { + Monitor.Log("WHATTT?????"); + } + int slotPosition2=(int)GetInstanceField(typeof(StardewValley.Menus.SocialPage), v, "slotPosition"); + + var sprites = (List)GetInstanceField(typeof(StardewValley.Menus.SocialPage), v, "sprites"); + var names = (List)GetInstanceField(typeof(StardewValley.Menus.SocialPage), v, "names"); + for (int slotPosition = slotPosition2; slotPosition < slotPosition2 + 5; ++slotPosition) + { + if (slotPosition < sprites.Count) + { + if (names[slotPosition] is string) + getInvokeMethod(v, "drawNPCSlot", new object[]{ + Game1.spriteBatch, slotPosition + }); + else if (names[slotPosition] is long) + getInvokeMethod(v, "drawFarmerSlot", new object[]{ + Game1.spriteBatch, slotPosition + }); + } + } + } + + + + Game1.activeClickableMenu.upperRightCloseButton.draw(Game1.spriteBatch); Game1.activeClickableMenu.drawMouse(Game1.spriteBatch); @@ -194,6 +227,12 @@ namespace ShaderExample //Game1.spriteBatch.End(); } + public void getInvokeMethod(object target, string name ,object[] param) + { + var hello=target.GetType().GetMethod(name, BindingFlags.Public | BindingFlags.NonPublic| BindingFlags.Instance| BindingFlags.Static); + hello.Invoke(target, param); + } + public void drawMapPart2() { //Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip b/ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip index 410471e64b182c33c656683cd4743982207f7012..c018c692676d2e6f23fb4ba191b28069212563dc 100644 GIT binary patch delta 13073 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 diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample.dll b/ShaderExample/ShaderExample/bin/Debug/ShaderExample.dll index 35c5827ebc8a05785ad3f10cf63e6196a9f8b3d3..977e3ca09fa1fd3bab42d2c78b1fc1ab945afd6b 100644 GIT binary patch delta 6120 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 ZuI~@k{YkN)5#xV#UB5HwKUrU$@joIRN}>P& delta 5095 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 O&XgW!@|Ucu#`q6UVTT?7 diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample.pdb b/ShaderExample/ShaderExample/bin/Debug/ShaderExample.pdb index df4641432375a172915781fa54b4be577e1ffe1f..d96214a8a722843d534152d1dd70bbda217803cc 100644 GIT binary patch delta 3635 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 Mc$SCaJcZJK0adqxUH||9 delta 2567 zcmaKu4Qx|Y6vy9vZQt55J}P5ukFM>C4%&T>eTf0~)oqN?bqI4qg4Ja9b%#ZgD@gd7;Ft9AczEkg~bdqj4_DJpg5y^$ixs8{h!wdOhdfQxxahQIrrT2 z-n$=d=@BhGVsnD!PbpMVg0ae3(IqRgxEmDm9nqy2jZyPvl|3!suzP}WaMXK!B}Y!i z53I3on-R2I6O@Rx9epRBy)bg==__Rm_RrpTd3Dc)tDU*+qU#Z}V(khK1?~zDirQT_CsQ>$%mwx+trqn_g)ZySarIDb`g*+zmEdIMU|5H03~ z_9(PTL$o$cd(*uS$pm+dUu9H=BfowN#Z7d}{gzbjRaF7*f4+xi`sVEmmMh*`QEIa-Py_;%4x6 z^4G#7ON!J;{b^~kR6t`U<XEhw6L+}<(V~00yT|I zspxWsrLgruc+5RN)~|)G7g7zqA&lxX>Zvr{?7lbEjfYHS#8k~;PH-PrFzDUHcE5|T8-yb63lcr!x1wG@3nAYa{|bb_zkk3foxe$VW8Bk z655#=t!}rl_TQoK2#U{4UuHT+^kDcrxNs<_yqV4PN>;SG5#NQ&@({EdlPdGg)RCpm zX~&3SxUhNte-c2RS|U7V*^R@!khHPN&W;@C5W0$x7>Ua+R;p$Lip8K8KpqISsnNGa#qK9GVXIIh}5h(>V(c zO^5rO&KDr3(+hGsJnmuXoQIy%IhgB{d3oik?u$@yD&I)b8mwRGTlBHLrOV)0uwSCd zc@7!NWp1A8y`p=6uX|tBy?+EF;XMFGfj>#~Zk~H}Xt{{{D~nH^;}9;_^-wp!F!X-~ zBE;tD0>6{7jt1Z*}72t2MKLy?fp87OT={rnmx!43xOuq~3x`Wf-)#%#`GFdv2K@?BpCo zXov7-GGeKtshzA$g_?ci$etZe+kH_s=Mbwwvv&K6gq3WCSqhF>WvYezg$@~LD2$Z- z7OMBDw7oD&e$GON(d;XXvb{JY27jh7`m1mpZSh4=LQyti)fL5C`n2qXLH&Q#rRx^C|d z^{rB~?$AjCr86kSKRg^BTEY8}=$Fz*X`pf#EiM}lV;F6oxss0htrX$6w+7Pbpg*QH zpioMsk$$c;6ZyMoVcFK!KvY{GQKV2(V3Jr!wSg>ANACny$)yUZ<*J`A4I!murf`|W zAO11z9OPqP483L2_}KRhvFT&d`4A6{84RPti?#~8SVA!s zMb^#O2V7=bf(;cNLdGTRsEjo6^gW)sI#=l~;|$l~4XEmH+3|S9xXpL3*pIUTzK8+pPchk89qbLFALIIyuo5 zfklnfO0l&Pkaau0KJT(bND>4l$qR{xB+%mO*DVv#ngH>1=7tH8jP3uoVdtn?`5ytp B22KC~ diff --git a/ShaderExample/ShaderExample/obj/Debug/ShaderExample.dll b/ShaderExample/ShaderExample/obj/Debug/ShaderExample.dll index 35c5827ebc8a05785ad3f10cf63e6196a9f8b3d3..977e3ca09fa1fd3bab42d2c78b1fc1ab945afd6b 100644 GIT binary patch delta 6120 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 ZuI~@k{YkN)5#xV#UB5HwKUrU$@joIRN}>P& delta 5095 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 O&XgW!@|Ucu#`q6UVTT?7 diff --git a/ShaderExample/ShaderExample/obj/Debug/ShaderExample.pdb b/ShaderExample/ShaderExample/obj/Debug/ShaderExample.pdb index df4641432375a172915781fa54b4be577e1ffe1f..d96214a8a722843d534152d1dd70bbda217803cc 100644 GIT binary patch delta 3635 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 Mc$SCaJcZJK0adqxUH||9 delta 2567 zcmaKu4Qx|Y6vy9vZQt55J}P5ukFM>C4%&T>eTf0~)oqN?bqI4qg4Ja9b%#ZgD@gd7;Ft9AczEkg~bdqj4_DJpg5y^$ixs8{h!wdOhdfQxxahQIrrT2 z-n$=d=@BhGVsnD!PbpMVg0ae3(IqRgxEmDm9nqy2jZyPvl|3!suzP}WaMXK!B}Y!i z53I3on-R2I6O@Rx9epRBy)bg==__Rm_RrpTd3Dc)tDU*+qU#Z}V(khK1?~zDirQT_CsQ>$%mwx+trqn_g)ZySarIDb`g*+zmEdIMU|5H03~ z_9(PTL$o$cd(*uS$pm+dUu9H=BfowN#Z7d}{gzbjRaF7*f4+xi`sVEmmMh*`QEIa-Py_;%4x6 z^4G#7ON!J;{b^~kR6t`U<XEhw6L+}<(V~00yT|I zspxWsrLgruc+5RN)~|)G7g7zqA&lxX>Zvr{?7lbEjfYHS#8k~;PH-PrFzDUHcE5|T8-yb63lcr!x1wG@3nAYa{|bb_zkk3foxe$VW8Bk z655#=t!}rl_TQoK2#U{4UuHT+^kDcrxNs<_yqV4PN>;SG5#NQ&@({EdlPdGg)RCpm zX~&3SxUhNte-c2RS|U7V*^R@!khHPN&W;@C5W0$x7>Ua+R;p$Lip8K8KpqISsnNGa#qK9GVXIIh}5h(>V(c zO^5rO&KDr3(+hGsJnmuXoQIy%IhgB{d3oik?u$@yD&I)b8mwRGTlBHLrOV)0uwSCd zc@7!NWp1A8y`p=6uX|tBy?+EF;XMFGfj>#~Zk~H}Xt{{{D~nH^;}9;_^-wp!F!X-~ zBE;tD0>6{7jt1Z*}72t2MKLy?fp87OT={rnmx!43xOuq~3x`Wf-)#%#`GFdv2K@?BpCo zXov7-GGeKtshzA$g_?ci$etZe+kH_s=Mbwwvv&K6gq3WCSqhF>WvYezg$@~LD2$Z- z7OMBDw7oD&e$GON(d;XXvb{JY27jh7`m1mpZSh4=LQyti)fL5C`n2qXLH&Q#rRx^C|d z^{rB~?$AjCr86kSKRg^BTEY8}=$Fz*X`pf#EiM}lV;F6oxss0htrX$6w+7Pbpg*QH zpioMsk$$c;6ZyMoVcFK!KvY{GQKV2(V3Jr!wSg>ANACny$)yUZ<*J`A4I!murf`|W zAO11z9OPqP483L2_}KRhvFT&d`4A6{84RPti?#~8SVA!s zMb^#O2V7=bf(;cNLdGTRsEjo6^gW)sI#=l~;|$l~4XEmH+3|S9xXpL3*pIUTzK8+pPchk89qbLFALIIyuo5 zfklnfO0l&Pkaau0KJT(bND>4l$qR{xB+%mO*DVv#ngH>1=7tH8jP3uoVdtn?`5ytp B22KC~ From a921b2ba780de30dc4b87ebc95d3e44cb2c7ca40 Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Wed, 18 Jul 2018 14:57:58 -0700 Subject: [PATCH 023/110] Add files via upload --- ShaderExample/ShaderExample/Class1.cs | 75 ++++++++++++++++-- .../bin/Debug/ShaderExample 0.0.1.zip | Bin 105059 -> 106152 bytes .../ShaderExample/bin/Debug/ShaderExample.dll | Bin 14848 -> 16384 bytes .../ShaderExample/bin/Debug/ShaderExample.pdb | Bin 26112 -> 28160 bytes .../ShaderExample/obj/Debug/ShaderExample.dll | Bin 14848 -> 16384 bytes .../ShaderExample/obj/Debug/ShaderExample.pdb | Bin 26112 -> 28160 bytes 6 files changed, 70 insertions(+), 5 deletions(-) diff --git a/ShaderExample/ShaderExample/Class1.cs b/ShaderExample/ShaderExample/Class1.cs index d6ddfe93..153fc1c8 100644 --- a/ShaderExample/ShaderExample/Class1.cs +++ b/ShaderExample/ShaderExample/Class1.cs @@ -162,15 +162,66 @@ namespace ShaderExample if ((Game1.activeClickableMenu as StardewValley.Menus.GameMenu).currentTab == 2) { + + var pageField = GetInstanceField(typeof(StardewValley.Menus.GameMenu), Game1.activeClickableMenu, "pages"); var pages = (List)pageField; - var v = pages.ElementAt(2); + var socialPage = pages.ElementAt(2); + var v = (StardewValley.Menus.SocialPage)socialPage; if (v == null) { Monitor.Log("WHATTT?????"); } + v = (StardewValley.Menus.SocialPage)v; + + + int numFarmers = (int)GetInstanceField(typeof(StardewValley.Menus.SocialPage), v, "numFarmers"); + + getInvokeMethod(v, "drawHorizontalPartition", new object[]{ + Game1.spriteBatch, v.yPositionOnScreen + IClickableMenu.borderWidth + 128 + 4, true + }); + getInvokeMethod(v, "drawHorizontalPartition", new object[]{ + Game1.spriteBatch, v.yPositionOnScreen + IClickableMenu.borderWidth + 192 + 32 + 20, true + }); + getInvokeMethod(v, "drawHorizontalPartition", new object[]{ + Game1.spriteBatch, v.yPositionOnScreen + IClickableMenu.borderWidth + 320 + 36, true + }); + getInvokeMethod(v, "drawHorizontalPartition", new object[]{ + Game1.spriteBatch, v.yPositionOnScreen + IClickableMenu.borderWidth + 384 + 32 + 52, true + }); + Rectangle scissorRectangle = Game1.spriteBatch.GraphicsDevice.ScissorRectangle; + Rectangle rectangle = scissorRectangle; + rectangle.Y = Math.Max(0, rowPosition(v,numFarmers - 1)); + rectangle.Height -= rectangle.Y; + Game1.spriteBatch.GraphicsDevice.ScissorRectangle = rectangle; + try + { + + getInvokeMethod(v, "drawVerticalPartition", new object[] + { + Game1.spriteBatch, + v.xPositionOnScreen + 256 + 12, + true + }); + } + finally + { + Game1.spriteBatch.GraphicsDevice.ScissorRectangle = scissorRectangle; + } + getInvokeMethod(v, "drawVerticalPartition", new object[] + { + Game1.spriteBatch, + v.xPositionOnScreen + 256 + 12+340, + true + }); + + + int slotPosition2=(int)GetInstanceField(typeof(StardewValley.Menus.SocialPage), v, "slotPosition"); + + + var sprites = (List)GetInstanceField(typeof(StardewValley.Menus.SocialPage), v, "sprites"); var names = (List)GetInstanceField(typeof(StardewValley.Menus.SocialPage), v, "names"); for (int slotPosition = slotPosition2; slotPosition < slotPosition2 + 5; ++slotPosition) @@ -187,12 +238,20 @@ namespace ShaderExample }); } } + + + (GetInstanceField(typeof(SocialPage),v,"upButton") as ClickableTextureComponent).draw(Game1.spriteBatch); + (GetInstanceField(typeof(SocialPage), v, "downButton") as ClickableTextureComponent).draw(Game1.spriteBatch); + Rectangle scrollBarRunner=(Rectangle)(GetInstanceField(typeof(SocialPage), v, "scrollBarRunner")); + IClickableMenu.drawTextureBox(Game1.spriteBatch, Game1.mouseCursors, new Rectangle(403, 383, 6, 6), scrollBarRunner.X, scrollBarRunner.Y, scrollBarRunner.Width, scrollBarRunner.Height, Color.White, 4f, true); + (GetInstanceField(typeof(SocialPage), v, "scrollBar") as ClickableTextureComponent).draw(Game1.spriteBatch); + string hoverText = (GetInstanceField(typeof(SocialPage), v, "hoverText") as string); + if (!hoverText.Equals("")) + IClickableMenu.drawHoverText(Game1.spriteBatch, hoverText, Game1.smallFont, 0, 0, -1, (string)null, -1, (string[])null, (Item)null, 0, -1, -1, -1, -1, 1f, (CraftingRecipe)null); } - - - + Game1.activeClickableMenu.upperRightCloseButton.draw(Game1.spriteBatch); Game1.activeClickableMenu.drawMouse(Game1.spriteBatch); Game1.spriteBatch.End(); @@ -207,7 +266,13 @@ namespace ShaderExample Class1.effect.CurrentTechnique.Passes[0].Apply(); } - + private int rowPosition(IClickableMenu menu,int i) + { + int slotPosition2 = (int)GetInstanceField(typeof(StardewValley.Menus.SocialPage), menu, "slotPosition"); + int num1 = i - slotPosition2; + int num2 = 112; + return menu.yPositionOnScreen + IClickableMenu.borderWidth + 160 + 4 + num1 * num2; + } diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip b/ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip index c018c692676d2e6f23fb4ba191b28069212563dc..006056b993c12e0ed9c17fdc44eabd18c5188737 100644 GIT binary patch delta 14233 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 delta 13089 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 MgJVd8|1bOh00Cz;(EtDd diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample.dll b/ShaderExample/ShaderExample/bin/Debug/ShaderExample.dll index 977e3ca09fa1fd3bab42d2c78b1fc1ab945afd6b..ba2aa4c4df9b212c2955f09a197017b3b2ccd77e 100644 GIT binary patch delta 7370 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 D7uqU3 delta 5740 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 diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample.pdb b/ShaderExample/ShaderExample/bin/Debug/ShaderExample.pdb index d96214a8a722843d534152d1dd70bbda217803cc..b933ca15b9e87f8d1a9fdf552b6c07893711e17c 100644 GIT binary patch delta 4051 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 delta 3092 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 D7uqU3 delta 5740 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 diff --git a/ShaderExample/ShaderExample/obj/Debug/ShaderExample.pdb b/ShaderExample/ShaderExample/obj/Debug/ShaderExample.pdb index d96214a8a722843d534152d1dd70bbda217803cc..b933ca15b9e87f8d1a9fdf552b6c07893711e17c 100644 GIT binary patch delta 4051 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 delta 3092 zcmaKue^6A{702&=?7sbh5;pSl0n4&j!lKCX!xfw80O5xV5f=gpp`Z}iG_gQhMXH@d z7H4Wp;&g=5jEH8Ylf>92R)sY)mPu&S!3NT(&~aL0OhRpDYRp7qZPRL-w%_yiiTu&& zdvosRo^#JV_n!OSyYGfB$Pqa4)BQN5hi%Nu&>aC2+EI}>H2JJYd$ zaU@4gxE%LjN_HB6^^FDASl#*-tm6x;m<@byxQ}Bp;g>RZnN%dCc12TGwp;0n4p(Q# zNEHFqiD=sB$?{A@N5)AIQH~z0*(4+$F&v8`b|=Q?rL@t{JvB0hZh6uXhP0e!WgQBEU!$xq;fUr!l` z@2%84Aq-@N3pW>oyaqg(Q?Q$$w?W^|cA70pq?T0yTI!3{Og5NtX%Xn92|+)zQmxOK z)_@L^5N`gAJL|44eLhh%;M>%C!3eN$R!Cnp!_MBKV{7|&*SCK=(7v^&04h((ine_a z?sLbF?Ip17g|xw52Hu%!n|8tu6RzY4^b!lKp0d&JS2^P^!MPJI+g0adhinQ)f<6cB5n1m5me7+ zLvL_vXZy}=XysY&MHnyoai6O;x>&5y)aux@Ntl2Ir#YjJoo zYoSTpw^8To1&GxWp7{EnsJ_EOgziU{uY%>^5wI5gDcA^JyZ-OcW8lxAH-oQ%o#5+W z7kCtW4m<`P0gr=|;0bUFDo0>A z1O5^`3w{Ki18;#dB3xPWo{aZm2guadFCLF1SrkD}plxM!bfqj?y?_>cB)cBe`u>29 z{2<;3UEoD9!{GfO&uopMmxCXmy#o9YeAZ|W8TxK;4)#OfW$;Ci;~fDx4wh9XmQ{QL zyA9i1VtIvvPitej=KC{DJe4aT?~I><{5D>VxQfMM2;vdwCjJ6DXJNMKS$uAEy$-ry z{sQDImONU>e#V1)bm~Fdb|Ix!)EL{xPAR zNF}r#%%l%1H^>sotx9)y;ITae8HSvI%s{R{tcnmW$OFn?se5RhOT`YLw%I9bol^m- zUC+_Xx+WESg4$=N6@Is;Z+>6E=7$KcK=>WlXW02)3X`zVPJfED&QOt#jnv%s*{wPb{a?Ze07rJp9^B}Q?t@n)hYC2 ze;h5ZDMqYd%`#h??juDyW#lZOqctT8CVj1D9FfDXJ=84|8j$LfkPu`Taso1`;CS;p zITWyZ<`B0BrduHA@D%FITolX$hTce}fy8{ynys@&>-P;kXwYVO2aWdA)E`J} zJXEjInfk=RfJ)vL6CJF7pH9{<84L^zHRQ^CTG3D_gY5entE{j`XwIXuMHN z=l|(^*p+v~@^4X!Dq7Z*oE@nfA$)gz_(v$k!#wo1p7!p|FFm5<1S_8kc4GWH!$*9K zzN_vIzZWO6CM|}4fb+u_)1Ibf@^Kn#%9ESvGU^?prCD;QIaThZwB{=N4!r+-EsYL$ zHy@J<4q?ug1T!C5!X#S~&3w+#^ctTHA~yc1C+oJ^`5NyJy=>!;>voG~=C7%SzCwt1 zQG1zdeDbSp)y#Zo+(mV*iG1SS)0(5;v^>^Ys|*HGhwT6F_}%u`D7lFo9eKHP*v`E8 v`E}r Date: Wed, 18 Jul 2018 16:06:15 -0700 Subject: [PATCH 024/110] Fixed mouse cursor shader issue. --- ShaderExample/ShaderExample/Class1.cs | 126 +++++++++++++++++- .../bin/Debug/ShaderExample 0.0.1.zip | Bin 106152 -> 108801 bytes .../ShaderExample/bin/Debug/ShaderExample.dll | Bin 16384 -> 19968 bytes .../ShaderExample/bin/Debug/ShaderExample.pdb | Bin 28160 -> 30208 bytes .../ShaderExample/obj/Debug/ShaderExample.dll | Bin 16384 -> 19968 bytes .../ShaderExample/obj/Debug/ShaderExample.pdb | Bin 28160 -> 30208 bytes 6 files changed, 124 insertions(+), 2 deletions(-) diff --git a/ShaderExample/ShaderExample/Class1.cs b/ShaderExample/ShaderExample/Class1.cs index 153fc1c8..d37b333a 100644 --- a/ShaderExample/ShaderExample/Class1.cs +++ b/ShaderExample/ShaderExample/Class1.cs @@ -48,6 +48,7 @@ namespace ShaderExample { try { + Game1.spriteBatch.End(); } catch(Exception err) @@ -264,8 +265,19 @@ namespace ShaderExample Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); Class1.effect.CurrentTechnique.Passes[0].Apply(); + Monitor.Log(Game1.getMousePosition().ToString()); + drawMouse(); + Game1.spriteBatch.End(); + + + Game1.spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); + Class1.effect.CurrentTechnique.Passes[0].Apply(); + drawMouse(); } + + private int rowPosition(IClickableMenu menu,int i) { int slotPosition2 = (int)GetInstanceField(typeof(StardewValley.Menus.SocialPage), menu, "slotPosition"); @@ -338,6 +350,116 @@ namespace ShaderExample return; } + public void mouse(SpriteBatch b) + { + if (Game1.options.hardwareCursor) + return; + b.Draw(Game1.mouseCursors, new Vector2((float)Game1.getMouseX(), (float)Game1.getMouseY()), new Rectangle?(Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, !Game1.options.snappyMenus || !Game1.options.gamepadControls ? 0 : 44, 16, 16)), Color.White * Game1.mouseCursorTransparency, 0.0f, Vector2.Zero, (float)(4.0 + (double)Game1.dialogueButtonScale / 150.0), SpriteEffects.None, 1f); + } + + public void drawMouseCursor() + { + InputState input =(InputState) GetInstanceField(typeof(Game1), Program.gamePtr, "input"); + if (Game1.timerUntilMouseFade > 0) + { + Game1.timerUntilMouseFade -= Game1.currentGameTime.ElapsedGameTime.Milliseconds; + if (Game1.timerUntilMouseFade <= 0) + Game1.lastMousePositionBeforeFade = Game1.getMousePosition(); + } + if (Game1.options.gamepadControls && Game1.timerUntilMouseFade <= 0 && Game1.activeClickableMenu == null) + { + Game1.mouseCursorTransparency = 0.0f; + if (Program.gamePtr.IsActive) + { + IClickableMenu activeClickableMenu = Game1.activeClickableMenu; + } + } + if (Game1.activeClickableMenu == null && Game1.mouseCursor > -1) + { + MouseState mouseState =input.GetMouseState(); + if (mouseState.X == 0) + { + mouseState = input.GetMouseState(); + if (mouseState.Y == 0) + goto label_20; + } + if ((Game1.getOldMouseX() != 0 || Game1.getOldMouseY() != 0) && Game1.currentLocation != null) + { + if ((double)Game1.mouseCursorTransparency <= 0.0 || !Utility.canGrabSomethingFromHere(Game1.getOldMouseX() + Game1.viewport.X, Game1.getOldMouseY() + Game1.viewport.Y, Game1.player) || Game1.mouseCursor == 3) + { + if (Game1.player.ActiveObject != null && Game1.mouseCursor != 3 && !Game1.eventUp) + { + if ((double)Game1.mouseCursorTransparency > 0.0 || Game1.options.showPlacementTileForGamepad) + { + Game1.player.ActiveObject.drawPlacementBounds(Game1.spriteBatch, Game1.currentLocation); + if ((double)Game1.mouseCursorTransparency > 0.0) + { + bool flag = Utility.playerCanPlaceItemHere(Game1.currentLocation, Game1.player.CurrentItem, Game1.getMouseX() + Game1.viewport.X, Game1.getMouseY() + Game1.viewport.Y, Game1.player) || Utility.isThereAnObjectHereWhichAcceptsThisItem(Game1.currentLocation, Game1.player.CurrentItem, Game1.getMouseX() + Game1.viewport.X, Game1.getMouseY() + Game1.viewport.Y) && Utility.withinRadiusOfPlayer(Game1.getMouseX() + Game1.viewport.X, Game1.getMouseY() + Game1.viewport.Y, 1, Game1.player); + Game1.player.CurrentItem.drawInMenu(Game1.spriteBatch, new Vector2((float)(Game1.getMouseX() + 16), (float)(Game1.getMouseY() + 16)), flag ? (float)((double)Game1.dialogueButtonScale / 75.0 + 1.0) : 1f, flag ? 1f : 0.5f, 0.999f); + } + } + } + else if (Game1.mouseCursor == 0 && Game1.isActionAtCurrentCursorTile) + Game1.mouseCursor = Game1.isInspectionAtCurrentCursorTile ? 5 : 2; + } + if (!Game1.options.hardwareCursor) + Game1.spriteBatch.Draw(Game1.mouseCursors, new Vector2((float)Game1.getMouseX(), (float)Game1.getMouseY()), new Microsoft.Xna.Framework.Rectangle?(Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, Game1.mouseCursor, 16, 16)), Color.White * Game1.mouseCursorTransparency, 0.0f, Vector2.Zero, (float)(4.0 + (double)Game1.dialogueButtonScale / 150.0), SpriteEffects.None, 1f); + Game1.wasMouseVisibleThisFrame = (double)Game1.mouseCursorTransparency > 0.0; + } + } + label_20: + Game1.mouseCursor = 0; + if (Game1.isActionAtCurrentCursorTile || Game1.activeClickableMenu != null) + return; + Game1.mouseCursorTransparency = 1f; + } + + public void drawMouse() + { + + if ((Game1.getOldMouseX() != 0 || Game1.getOldMouseY() != 0) && Game1.currentLocation != null) + { + if ((double)Game1.mouseCursorTransparency <= 0.0 || !Utility.canGrabSomethingFromHere(Game1.getOldMouseX() + Game1.viewport.X, Game1.getOldMouseY() + Game1.viewport.Y, Game1.player) || Game1.mouseCursor == 3) + { + if (Game1.player.ActiveObject != null && Game1.mouseCursor != 3 && !Game1.eventUp) + { + if ((double)Game1.mouseCursorTransparency >= 0.0 || Game1.options.showPlacementTileForGamepad) + { + Game1.player.ActiveObject.drawPlacementBounds(Game1.spriteBatch, Game1.currentLocation); + if ((double)Game1.mouseCursorTransparency >= 0.0) + { + bool flag = Utility.playerCanPlaceItemHere(Game1.currentLocation, Game1.player.CurrentItem, Game1.getMouseX() + Game1.viewport.X, Game1.getMouseY() + Game1.viewport.Y, Game1.player) || Utility.isThereAnObjectHereWhichAcceptsThisItem(Game1.currentLocation, Game1.player.CurrentItem, Game1.getMouseX() + Game1.viewport.X, Game1.getMouseY() + Game1.viewport.Y) && Utility.withinRadiusOfPlayer(Game1.getMouseX() + Game1.viewport.X, Game1.getMouseY() + Game1.viewport.Y, 1, Game1.player); + Game1.player.CurrentItem.drawInMenu(Game1.spriteBatch, new Vector2((float)(Game1.getMouseX() + 16), (float)(Game1.getMouseY() + 16)), flag ? (float)((double)Game1.dialogueButtonScale / 75.0 + 1.0) : 1f, flag ? 1f : 0.5f, 0.999f); + } + } + } + else if (Game1.mouseCursor == 0 && Game1.isActionAtCurrentCursorTile) + { + + Game1.mouseCursor = Game1.isInspectionAtCurrentCursorTile ? 5 : 2; + } + } + if (!Game1.options.hardwareCursor) + { + + Game1.mouseCursorTransparency = 0.0001f; + Game1.spriteBatch.Draw(Game1.mouseCursors, new Vector2((float)Game1.getMouseX(), (float)Game1.getMouseY()), new Microsoft.Xna.Framework.Rectangle?(Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, Game1.mouseCursor, 16, 16)), Color.White, 0.0f, Vector2.Zero, (float)(4.0 + (double)Game1.dialogueButtonScale / 150.0), SpriteEffects.None, 1f); + + } + Game1.wasMouseVisibleThisFrame = (double)Game1.mouseCursorTransparency > 0.0; + } + + /* + Game1.mouseCursorTransparency = 0; + if(Game1.mouseCursor!=5|| Game1.mouseCursor != 2) + { + Game1.mouseCursor = 0; + Game1.spriteBatch.Draw(Game1.mouseCursors, new Vector2((float)Game1.getMousePosition().X, (float)Game1.getMousePosition().Y), new Microsoft.Xna.Framework.Rectangle?(Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, Game1.mouseCursor, 16, 16)), Color.White, 0.0f, Vector2.Zero, (float)(4.0 + (double)Game1.dialogueButtonScale / 150.0), SpriteEffects.None, 1f); + } + */ + + + } protected void drawOverlays() @@ -350,8 +472,8 @@ namespace ShaderExample { v.draw(spriteBatch); } - //if ((Game1.displayHUD || Game1.eventUp) && (Game1.currentBillboard == 0 && Game1.gameMode == (byte)3) && (!Game1.freezeControls && !Game1.panMode)) - //Game1.drawMouseCursor(); + if ((Game1.displayHUD || Game1.eventUp) && (Game1.currentBillboard == 0 && Game1.gameMode == (byte)3) && (!Game1.freezeControls && !Game1.panMode)) + drawMouse(); //spriteBatch.End(); } } diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip b/ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip index 006056b993c12e0ed9c17fdc44eabd18c5188737..f2db9148c585c5010a7732f5d60878735a165a2a 100644 GIT binary patch delta 16861 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 diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample.dll b/ShaderExample/ShaderExample/bin/Debug/ShaderExample.dll index ba2aa4c4df9b212c2955f09a197017b3b2ccd77e..ae2ec6ca800b0f4d1cd26b27df336747687cafe1 100644 GIT binary patch delta 9148 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 delta 5706 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 D{bv}; delta 4273 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 delta 5706 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 D{bv}; delta 4273 zcmaLb33OD|8Nl&-Unav$HZq6_Sf>^Tob&|x zRVO`uz37}i6zg)hyeoIS^nSu0wCS3eX>t;lIdYaZmib>u@M>otrJTR-Z3ZNzSTH&1 zMICC~$%$rJX_y(2+?QNI^7ZC*aw`M5*5pKDoq^-Y!11fV(UT(aVJWE`%TrQ484N>a z5UY|ry)o2mAe!GJ8X1TlAzIWUDx(iIU!^?BaQwScS2>)tb}B}gmSU;i{>f<(+DTJq zNpDk~J|Mk>V)>jX7366mag_a9@*Q?OfzOxn5VJqM&_tH?GC!op(2Ol_BUq? z33gYxsKHib_7Ba|MgDJwJ`xS!f z!>#piSeuUN&Bye;`PSx4=e_H-{GGM#>!qwMLDnzc)>~`!)(`czG`($(eyCCJSfF>j zrFW(2U3+!=NWJ?ty|=^Kwp+J9X>|;>IyP9pyw_^~m9?*zr9z!*l#+9)RGC>gB06JJ zX!m?oW5d$ohC3HDEoi8hQkj1Z(+G1bl|z10s5vm=>DaUoDOAeeP2lL@>>Up^t47B5 zub}oBb}2q?_bfdt3#yz#Uw(*YH%kLyBXmx+ zN|Q6LBF4+;Zk}>G&JGjr_NGJ4SFJ+<}8}A?9N}R$v3p#YMOR7vpwp#HWy}(ARR5gmioy zn+Tl1C3wb;e_-c7!KK6=|AFUFCUhP@Ab-Kd`9DiSySod5@k8=X{0L+0_;vU( zGnk010X}&QNk>)q8Sypv1@U|EOZ+*?2X3@|5T*XZc%FC{Ucissod0h~ICy}3i#OwU z*ofcb{df^~qIA%Km&m`4m+=_>fbSv8tM43YyoeTFLf+hbeL{H{;4loqn=usK{v|iP zWJS1Di29lyYS?)YS5JyfkD!!$T(PwI;*q7zmxR2W1lHd^D69H4=J83XE#1#zef6;| zEBOg_+4@madWyAsh{I&^;uw^9v1$kM6EL3mL`=ZD?Q)-;=LS{D#2>*_HGuW)4d^IZp?-xMkb`&db^rO`r0l8!RM42;2n=2Tu>OZS8Of6rlv-I4`7a2AH4 z%t7oq2g%DEvQXwQ0(;Iu@-l~PlsWJq2+Vg1Gb|yY3XbZn0gr1f!@s4f|m!ZLTrv3&L9DTk3xF z>%eOOS=F2UWl6AA*gZ~1Zb!uv$TtA1Fc)Xyc-tbBZ*!`h=ZU1MDZdqG;Vi7d8kBao zDb**?fQ3IG3qNl)pG+NNGK>4_d^52)&st=)=5B18mgEfMW#)Xi889uug2_o6&D+x| zoSX?~p9nLgG$p-Hgq*hSH=7(19qjV;rrL3NwU=_2Sza2aU1m#Zs^`WYWkG?mW2JdI z%y`POofJ7|MwlsO2^Q3sMR^wXs4YFY&6cuM&$=E_>BDV~5xuWRRK7O1`Bzz-cAJ>; zLi(>QALu@Bf6a;VHJc~Ob1WuuuKamE&A;!KdL6ai;$4*eFuOb##SgG|blVJ< zhm}UHB*X#{m^YWpjOeT#L}YAh?dS$OFSm-sJ8j=2Bl#j_HqJ&pqb(WPm&&;XL)|qB|^(tLsVrIp~$nOrVGDl^~HeBBI z`+MZWDohcjvbbL@9l<(emku(kXC>-E=J8q4`iyywn)2FzwdSZFYaaH0J}c4EhfVmL zXua9=pOZLV-rKKM9sT1+${V=;uUGRZl^z&QcbPrR8%*rnfqJf)G+vzZWz4w5&ibBnMl~KX+11!hrdC|eLNc$z_kVVpX`t{}f zIrKJDGB1vwBV8Q5atxOBpjj%)jW(q&HdyYgLQ_%~9Xyj%dmtsNM2YFDi{@9Ud9f~5 zevbdSF2mw?ymS5~-CA7M7V`i8W8k(6L3)Mp)DIoJEKaFRC)YAJ&mblciE Date: Wed, 18 Jul 2018 17:41:38 -0700 Subject: [PATCH 025/110] Crafting menus fixed! --- ShaderExample/ShaderExample/Class1.cs | 112 +++++------------ .../ShaderExample/Framework/Drawers/Menus.cs | 115 ++++++++++++++++++ .../bin/Debug/ShaderExample 0.0.1.zip | Bin 108801 -> 110126 bytes .../ShaderExample/bin/Debug/ShaderExample.dll | Bin 19968 -> 20992 bytes .../ShaderExample/bin/Debug/ShaderExample.pdb | Bin 30208 -> 30208 bytes ...aderExample.csproj.CoreCompileInputs.cache | 2 +- .../ShaderExample/obj/Debug/ShaderExample.dll | Bin 19968 -> 20992 bytes .../ShaderExample/obj/Debug/ShaderExample.pdb | Bin 30208 -> 30208 bytes 8 files changed, 149 insertions(+), 80 deletions(-) create mode 100644 ShaderExample/ShaderExample/Framework/Drawers/Menus.cs diff --git a/ShaderExample/ShaderExample/Class1.cs b/ShaderExample/ShaderExample/Class1.cs index d37b333a..a151df04 100644 --- a/ShaderExample/ShaderExample/Class1.cs +++ b/ShaderExample/ShaderExample/Class1.cs @@ -167,6 +167,7 @@ namespace ShaderExample var pageField = GetInstanceField(typeof(StardewValley.Menus.GameMenu), Game1.activeClickableMenu, "pages"); var pages = (List)pageField; + var socialPage = pages.ElementAt(2); var v = (StardewValley.Menus.SocialPage)socialPage; if (v == null) @@ -251,7 +252,16 @@ namespace ShaderExample IClickableMenu.drawHoverText(Game1.spriteBatch, hoverText, Game1.smallFont, 0, 0, -1, (string)null, -1, (string[])null, (Item)null, 0, -1, -1, -1, -1, 1f, (CraftingRecipe)null); } + if((Game1.activeClickableMenu as StardewValley.Menus.GameMenu).currentTab == 4) + { + var pageField = GetInstanceField(typeof(StardewValley.Menus.GameMenu), Game1.activeClickableMenu, "pages"); + var pages = (List)pageField; + var craftingPage = pages.ElementAt(4); + Monitor.Log(craftingPage.GetType().ToString()); + var v = (StardewValley.Menus.CraftingPage)craftingPage; + Framework.Drawers.Menus.craftingPageDraw((craftingPage as StardewValley.Menus.CraftingPage), Game1.spriteBatch); + } Game1.activeClickableMenu.upperRightCloseButton.draw(Game1.spriteBatch); Game1.activeClickableMenu.drawMouse(Game1.spriteBatch); @@ -265,7 +275,7 @@ namespace ShaderExample Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); Class1.effect.CurrentTechnique.Passes[0].Apply(); - Monitor.Log(Game1.getMousePosition().ToString()); + if(Game1.activeClickableMenu==null&& Game1.eventUp==false)getInvokeMethod(Program.gamePtr, "drawHUD", new object[] { }); drawMouse(); Game1.spriteBatch.End(); @@ -276,7 +286,6 @@ namespace ShaderExample drawMouse(); } - private int rowPosition(IClickableMenu menu,int i) { @@ -285,7 +294,7 @@ namespace ShaderExample int num2 = 112; return menu.yPositionOnScreen + IClickableMenu.borderWidth + 160 + 4 + num1 * num2; } - + public void drawMapPart1() @@ -304,10 +313,10 @@ namespace ShaderExample //Game1.spriteBatch.End(); } - public void getInvokeMethod(object target, string name ,object[] param) + public static object getInvokeMethod(object target, string name ,object[] param) { var hello=target.GetType().GetMethod(name, BindingFlags.Public | BindingFlags.NonPublic| BindingFlags.Instance| BindingFlags.Static); - hello.Invoke(target, param); + return hello.Invoke(target, param); } public void drawMapPart2() @@ -335,9 +344,19 @@ namespace ShaderExample /// public static object GetInstanceField(Type type, object instance, string fieldName) { - BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic - | BindingFlags.Static; + BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic| BindingFlags.Static; FieldInfo field = type.GetField(fieldName, bindFlags); + /* + FieldInfo[] meh = type.GetFields(bindFlags); + foreach(var v in meh) + { + if (v.Name == null) + { + continue; + } + Monitor.Log(v.Name); + } + */ return field.GetValue(instance); } @@ -350,73 +369,9 @@ namespace ShaderExample return; } - public void mouse(SpriteBatch b) - { - if (Game1.options.hardwareCursor) - return; - b.Draw(Game1.mouseCursors, new Vector2((float)Game1.getMouseX(), (float)Game1.getMouseY()), new Rectangle?(Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, !Game1.options.snappyMenus || !Game1.options.gamepadControls ? 0 : 44, 16, 16)), Color.White * Game1.mouseCursorTransparency, 0.0f, Vector2.Zero, (float)(4.0 + (double)Game1.dialogueButtonScale / 150.0), SpriteEffects.None, 1f); - } - - public void drawMouseCursor() - { - InputState input =(InputState) GetInstanceField(typeof(Game1), Program.gamePtr, "input"); - if (Game1.timerUntilMouseFade > 0) - { - Game1.timerUntilMouseFade -= Game1.currentGameTime.ElapsedGameTime.Milliseconds; - if (Game1.timerUntilMouseFade <= 0) - Game1.lastMousePositionBeforeFade = Game1.getMousePosition(); - } - if (Game1.options.gamepadControls && Game1.timerUntilMouseFade <= 0 && Game1.activeClickableMenu == null) - { - Game1.mouseCursorTransparency = 0.0f; - if (Program.gamePtr.IsActive) - { - IClickableMenu activeClickableMenu = Game1.activeClickableMenu; - } - } - if (Game1.activeClickableMenu == null && Game1.mouseCursor > -1) - { - MouseState mouseState =input.GetMouseState(); - if (mouseState.X == 0) - { - mouseState = input.GetMouseState(); - if (mouseState.Y == 0) - goto label_20; - } - if ((Game1.getOldMouseX() != 0 || Game1.getOldMouseY() != 0) && Game1.currentLocation != null) - { - if ((double)Game1.mouseCursorTransparency <= 0.0 || !Utility.canGrabSomethingFromHere(Game1.getOldMouseX() + Game1.viewport.X, Game1.getOldMouseY() + Game1.viewport.Y, Game1.player) || Game1.mouseCursor == 3) - { - if (Game1.player.ActiveObject != null && Game1.mouseCursor != 3 && !Game1.eventUp) - { - if ((double)Game1.mouseCursorTransparency > 0.0 || Game1.options.showPlacementTileForGamepad) - { - Game1.player.ActiveObject.drawPlacementBounds(Game1.spriteBatch, Game1.currentLocation); - if ((double)Game1.mouseCursorTransparency > 0.0) - { - bool flag = Utility.playerCanPlaceItemHere(Game1.currentLocation, Game1.player.CurrentItem, Game1.getMouseX() + Game1.viewport.X, Game1.getMouseY() + Game1.viewport.Y, Game1.player) || Utility.isThereAnObjectHereWhichAcceptsThisItem(Game1.currentLocation, Game1.player.CurrentItem, Game1.getMouseX() + Game1.viewport.X, Game1.getMouseY() + Game1.viewport.Y) && Utility.withinRadiusOfPlayer(Game1.getMouseX() + Game1.viewport.X, Game1.getMouseY() + Game1.viewport.Y, 1, Game1.player); - Game1.player.CurrentItem.drawInMenu(Game1.spriteBatch, new Vector2((float)(Game1.getMouseX() + 16), (float)(Game1.getMouseY() + 16)), flag ? (float)((double)Game1.dialogueButtonScale / 75.0 + 1.0) : 1f, flag ? 1f : 0.5f, 0.999f); - } - } - } - else if (Game1.mouseCursor == 0 && Game1.isActionAtCurrentCursorTile) - Game1.mouseCursor = Game1.isInspectionAtCurrentCursorTile ? 5 : 2; - } - if (!Game1.options.hardwareCursor) - Game1.spriteBatch.Draw(Game1.mouseCursors, new Vector2((float)Game1.getMouseX(), (float)Game1.getMouseY()), new Microsoft.Xna.Framework.Rectangle?(Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, Game1.mouseCursor, 16, 16)), Color.White * Game1.mouseCursorTransparency, 0.0f, Vector2.Zero, (float)(4.0 + (double)Game1.dialogueButtonScale / 150.0), SpriteEffects.None, 1f); - Game1.wasMouseVisibleThisFrame = (double)Game1.mouseCursorTransparency > 0.0; - } - } - label_20: - Game1.mouseCursor = 0; - if (Game1.isActionAtCurrentCursorTile || Game1.activeClickableMenu != null) - return; - Game1.mouseCursorTransparency = 1f; - } - public void drawMouse() { - + if ((Game1.getOldMouseX() != 0 || Game1.getOldMouseY() != 0) && Game1.currentLocation != null) { if ((double)Game1.mouseCursorTransparency <= 0.0 || !Utility.canGrabSomethingFromHere(Game1.getOldMouseX() + Game1.viewport.X, Game1.getOldMouseY() + Game1.viewport.Y, Game1.player) || Game1.mouseCursor == 3) @@ -435,18 +390,18 @@ namespace ShaderExample } else if (Game1.mouseCursor == 0 && Game1.isActionAtCurrentCursorTile) { - + Game1.mouseCursor = Game1.isInspectionAtCurrentCursorTile ? 5 : 2; } } if (!Game1.options.hardwareCursor) { - + Game1.mouseCursorTransparency = 0.0001f; Game1.spriteBatch.Draw(Game1.mouseCursors, new Vector2((float)Game1.getMouseX(), (float)Game1.getMouseY()), new Microsoft.Xna.Framework.Rectangle?(Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, Game1.mouseCursor, 16, 16)), Color.White, 0.0f, Vector2.Zero, (float)(4.0 + (double)Game1.dialogueButtonScale / 150.0), SpriteEffects.None, 1f); - + } - Game1.wasMouseVisibleThisFrame = (double)Game1.mouseCursorTransparency > 0.0; + Game1.wasMouseVisibleThisFrame = (double)Game1.mouseCursorTransparency > 0.0; } /* @@ -457,11 +412,10 @@ namespace ShaderExample Game1.spriteBatch.Draw(Game1.mouseCursors, new Vector2((float)Game1.getMousePosition().X, (float)Game1.getMousePosition().Y), new Microsoft.Xna.Framework.Rectangle?(Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, Game1.mouseCursor, 16, 16)), Color.White, 0.0f, Vector2.Zero, (float)(4.0 + (double)Game1.dialogueButtonScale / 150.0), SpriteEffects.None, 1f); } */ - - - } + } + protected void drawOverlays() { SpriteBatch spriteBatch = Game1.spriteBatch; diff --git a/ShaderExample/ShaderExample/Framework/Drawers/Menus.cs b/ShaderExample/ShaderExample/Framework/Drawers/Menus.cs new file mode 100644 index 00000000..5448155d --- /dev/null +++ b/ShaderExample/ShaderExample/Framework/Drawers/Menus.cs @@ -0,0 +1,115 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using StardewValley; +using StardewValley.Menus; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ShaderExample.Framework.Drawers +{ + class Menus + { + + public static void craftingPageDraw(StardewValley.Menus.CraftingPage menu, SpriteBatch b) + { + + int craftingPage = (int)Class1.GetInstanceField(typeof(StardewValley.Menus.CraftingPage), menu, "currentCraftingPage"); + bool cooking = (bool)Class1.GetInstanceField(typeof(StardewValley.Menus.CraftingPage), menu, "cooking"); + if (cooking) + Game1.drawDialogueBox(menu.xPositionOnScreen, menu.yPositionOnScreen, menu.width, menu.height, false, true, (string)null, false); + + Class1.getInvokeMethod(menu, "drawHorizontalPartition", new object[] { + + b, menu.yPositionOnScreen + IClickableMenu.borderWidth + IClickableMenu.spaceToClearTopBorder + 256, false + }); + + + menu.inventory.draw(b); + if (menu.trashCan != null) + { + menu.trashCan.draw(b); + b.Draw(Game1.mouseCursors, new Vector2((float)(menu.trashCan.bounds.X + 60), (float)(menu.trashCan.bounds.Y + 40)), new Rectangle?(new Rectangle(686, 256, 18, 10)), Color.White, menu.trashCanLidRotation, new Vector2(16f, 10f), 4f, SpriteEffects.None, 0.86f); + } + //b.End(); + //b.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, (DepthStencilState)null, (RasterizerState)null); + IList fridge = (IList)Class1.getInvokeMethod(menu, "fridge", new object[] { }); + foreach (ClickableTextureComponent key in menu.pagesOfCraftingRecipes[craftingPage].Keys) + { + + if (key.hoverText.Equals("ghosted")) + key.draw(b, Color.Black * 0.35f, 0.89f); + else if (!menu.pagesOfCraftingRecipes[craftingPage][key].doesFarmerHaveIngredientsInInventory(cooking ? fridge : (IList)null)) + { + key.draw(b, Color.LightGray * 0.4f, 0.89f); + } + else + { + key.draw(b); + if (menu.pagesOfCraftingRecipes[craftingPage][key].numberProducedPerCraft > 1) + NumberSprite.draw(menu.pagesOfCraftingRecipes[craftingPage][key].numberProducedPerCraft, b, new Vector2((float)(key.bounds.X + 64 - 2), (float)(key.bounds.Y + 64 - 2)), Color.Red, (float)(0.5 * ((double)key.scale / 4.0)), 0.97f, 1f, 0, 0); + } + } + //b.End(); + //b.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, (DepthStencilState)null, (RasterizerState)null); + + Item hoverItem = (Item)Class1.GetInstanceField(menu.GetType(), menu, "hoverItem"); + Item heldItem = (Item)Class1.GetInstanceField(menu.GetType(), menu, "heldItem"); + Item lastCookingHover = (Item)Class1.GetInstanceField(menu.GetType(), menu, "lastCookingHover"); + string hoverText = (string)Class1.GetInstanceField(menu.GetType(), menu, "hoverText"); + string hoverTitle = (string)Class1.GetInstanceField(menu.GetType(), menu, "hoverTitle"); + + CraftingRecipe hoverRecipe = (CraftingRecipe)Class1.GetInstanceField(menu.GetType(), menu, "hoverRecipe"); + + if (hoverItem != null) + IClickableMenu.drawToolTip(b, hoverText, hoverTitle, hoverItem, heldItem != null, -1, 0, -1, -1, (CraftingRecipe)null, -1); + else if (!string.IsNullOrEmpty(hoverText)) + IClickableMenu.drawHoverText(b, hoverText, Game1.smallFont, heldItem != null ? 64 : 0, heldItem != null ? 64 : 0, -1, (string)null, -1, (string[])null, (Item)null, 0, -1, -1, -1, -1, 1f, (CraftingRecipe)null); + if (heldItem != null) + heldItem.drawInMenu(b, new Vector2((float)(Game1.getOldMouseX() + 16), (float)(Game1.getOldMouseY() + 16)), 1f); + + //(menu as IClickableMenu).draw(b); + if (menu.downButton != null && craftingPage < menu.pagesOfCraftingRecipes.Count - 1) + menu.downButton.draw(b); + if (menu.upButton != null && craftingPage > 0) + menu.upButton.draw(b); + //if (cooking) + //drawMouse(b); + if (hoverRecipe == null) + return; + SpriteBatch b1 = b; + string text = " "; + SpriteFont smallFont = Game1.smallFont; + int xOffset = heldItem != null ? 48 : 0; + int yOffset = heldItem != null ? 48 : 0; + int moneyAmountToDisplayAtBottom = -1; + string displayName = hoverRecipe.DisplayName; + int healAmountToDisplay = -1; + string[] buffIconsToDisplay; + if (cooking && lastCookingHover != null) + { + if (Game1.objectInformation[(int)((lastCookingHover as StardewValley.Object).parentSheetIndex)].Split('/').Length > 7) + { + buffIconsToDisplay = Game1.objectInformation[(int)((lastCookingHover as StardewValley.Object).parentSheetIndex)].Split('/')[7].Split(' '); + goto label_32; + } + } + buffIconsToDisplay = (string[])null; + label_32: + Item lastCookingHover2 = lastCookingHover; + int currencySymbol = 0; + int extraItemToShowIndex = -1; + int extraItemToShowAmount = -1; + int overrideX = -1; + int overrideY = -1; + double num = 1.0; + CraftingRecipe hoverRecipe2 = hoverRecipe; + IClickableMenu.drawHoverText(b1, text, smallFont, xOffset, yOffset, moneyAmountToDisplayAtBottom, displayName, healAmountToDisplay, buffIconsToDisplay, lastCookingHover2, currencySymbol, extraItemToShowIndex, extraItemToShowAmount, overrideX, overrideY, (float)num, hoverRecipe2); + } + + + + } +} diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip b/ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip index f2db9148c585c5010a7732f5d60878735a165a2a..2212c6d8d14df5870fef2a517a712be1dcf40a99 100644 GIT binary patch delta 18203 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 A82|tP diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample.dll b/ShaderExample/ShaderExample/bin/Debug/ShaderExample.dll index ae2ec6ca800b0f4d1cd26b27df336747687cafe1..880f279a13947a3c0101612851a60c684347705f 100644 GIT binary patch delta 10372 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 bmvZhu@BM@R1%Fcb;`)Qug}-6D>-7HtOP!rI delta 9162 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 FzX1euT%rH~ delta 6281 zcmaKx3w%_?xxi;mHcJvnNCIrgnrt3OB)mfqlve|aN~#blkif0U=Eb96A|XLg>n;#b z5igMO0VA(jq?&)M;-orMy;eQ;?f)fzsSp zb&5&M%i&vSe<$T#MR=hdUT=T*+23RK_Y3=*mM`gx^84_ep5G_!woIj@0e+R6)*Ysp z2hiRfqfNE7ub>UbXwz)%7x~XomB`jU_jVto9iQ zYALT8q54aERfVllsze0W#nHx$ZcgJ=Q{$awjf>_r&ueUuXlZO6wNE8qiJ~{63G?Y~ zNnn|`hvk^ot5eNQqf)hHW{#TUADARDN<|#lUmE2t?`D28%3t_hY@NnSbh%rul=CpU z5AZ?s4~yOujmj`T9#dvoN2mHfaE-ci&Ndp4(WGRvcXS|oDAAko5}lOnG)88Gr1O|h zN0){yOe)>;>;3UUS4r^os(P_{rE5afHC5kvOZ6RP)lJRANGJ6?O)(3|C-sk}6MYuC zx%eRZ>X<6XCgJKJ*uPJQLRfhfw4a8OtMKC7f4x0?p$(;1ynU-mzv19w4%Xo;^Rb# zd(wgZrPsZQDee@wy|HCcy;7sh_~FGNsjS5Ul1UUTu345D?jkcM>gW^i_NWEB)5OYk zElrCWnSJy14zoovR#jdmzEH*CSyHIeWYa@USS(dRj?3Ul!T-{9bCEuD9 z*7i9vCR6GbdO-@88mF2;-^z)XK4~y|OmV0Lz0R_hC~H}^wd{Fo`9i(?=hlh>y`s%p z@pG$noYlI;TG`K9RcNhx!Mg7)eSfL-;B(fRd#ts#m0|AKl*v|wJ8C(UFZ02>jjc(_ zcBZ2FS+Duto-?X55=^_kE!P98LIlSbFrjxElRLqe} zV{AMnso85tcor|(L#|ODiKX>Prl=(1?_hYwA!+`dq9??4;P)g%E|yHNLLNqRsZ!x& zco$4@nE^XLzZlMP<-YK4;tSwCun>M94ug{JarUP$f1BVk_!L|Lx58G~4p+e)@IJT; zKA==6yobPQ6no(sxDP%ABXBMJAzTMLU>kfH8u$u)1pX903J<{z@Mmx%JPeE%Nj55AbdHA^a0O4LhN<=x^{N;`X#>=@x@ zm;ysE4L%0b;SXUCcntQ0Cp`puMY3<)Wtq-NS$dr5QJOa?NF|(Wf>tGj#W4reG&{rw zN>156u7FvP`)N2AX2U)(0AVdef?{U}6g&G|?uSL_6WNT+l!=MXy+SL$*;3MD#BgGy zMpr}jFf{_okvr1Kp^{ne$*PcpD@pwo{Ym_l$#!E#xmm}+T-0NsG)5TP7?GthHc6`^wOa(U0iNp z2T{|A5H}A4Qtj`-TsR*VLYWZ*;R57A@OD@V8{iB#ekN>0u7!8NI=B$7bmJd@O~|X^ zBFN6K_ze->Liu(9+flTjcp5H-&%!(5UbqCZ!K$V3H7FJO1-uLSO?WqC-&6O%|8?U( zgx^O#4ey0)Qz``6PVD>_Agv8+lxi6Pwh6TyWtHuwvJ7Z?BB@koApUxM5WfV^ zx{}USZ{bhlrBkH?$Ka>o=iP@22i z9Gy|&<#_c@^qIls`GpgGa_~66HA)CDsq8~&hO77U^FiXfnx*Ae=&t6G@;=r=pLwam zZ;qFb(cMj2#Yk@&_SX5#DP48`AsmxE~ueoY+j zbMNW4%7joZEqIuI`4a2Wm}7*6GO|Kxp^!_A&3LklEXR$o+Lg0i%AG*;(_K4q!4X;Z zTH!-(y0;Pdvs95;SeX&3c0@agBxAd@!dWNd zc7bL6jmI#bDvXI6I%24}VtEj7^2qgH$37U*zGxmN&dtO55ODLzvz1nJ>YFDuEN+}% zZw}X{1s$E6_Ug;_<=yFP_J>`z@5H%zMqIWpuSr_nDE1dMS2xtw-!QL!Yn_#{pzd;WY4`Z>3Vx;8TlTOhPivS#Z&D&Rla!n9aCcT_cG$;r7~iNSfhY}isr$ay1Bl)j@ Q|I?Aw<}=P`eOd1R10^S?v;Y7A diff --git a/ShaderExample/ShaderExample/obj/Debug/ShaderExample.csproj.CoreCompileInputs.cache b/ShaderExample/ShaderExample/obj/Debug/ShaderExample.csproj.CoreCompileInputs.cache index f6398a26..4c886ead 100644 --- a/ShaderExample/ShaderExample/obj/Debug/ShaderExample.csproj.CoreCompileInputs.cache +++ b/ShaderExample/ShaderExample/obj/Debug/ShaderExample.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -d435c4e4ec5503281ab00282b8e1921cd31d8660 +acb7ac65c1444ef93858a2b1dce3b3956fc32fd6 diff --git a/ShaderExample/ShaderExample/obj/Debug/ShaderExample.dll b/ShaderExample/ShaderExample/obj/Debug/ShaderExample.dll index ae2ec6ca800b0f4d1cd26b27df336747687cafe1..880f279a13947a3c0101612851a60c684347705f 100644 GIT binary patch delta 10372 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 bmvZhu@BM@R1%Fcb;`)Qug}-6D>-7HtOP!rI delta 9162 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 FzX1euT%rH~ delta 6281 zcmaKx3w%_?xxi;mHcJvnNCIrgnrt3OB)mfqlve|aN~#blkif0U=Eb96A|XLg>n;#b z5igMO0VA(jq?&)M;-orMy;eQ;?f)fzsSp zb&5&M%i&vSe<$T#MR=hdUT=T*+23RK_Y3=*mM`gx^84_ep5G_!woIj@0e+R6)*Ysp z2hiRfqfNE7ub>UbXwz)%7x~XomB`jU_jVto9iQ zYALT8q54aERfVllsze0W#nHx$ZcgJ=Q{$awjf>_r&ueUuXlZO6wNE8qiJ~{63G?Y~ zNnn|`hvk^ot5eNQqf)hHW{#TUADARDN<|#lUmE2t?`D28%3t_hY@NnSbh%rul=CpU z5AZ?s4~yOujmj`T9#dvoN2mHfaE-ci&Ndp4(WGRvcXS|oDAAko5}lOnG)88Gr1O|h zN0){yOe)>;>;3UUS4r^os(P_{rE5afHC5kvOZ6RP)lJRANGJ6?O)(3|C-sk}6MYuC zx%eRZ>X<6XCgJKJ*uPJQLRfhfw4a8OtMKC7f4x0?p$(;1ynU-mzv19w4%Xo;^Rb# zd(wgZrPsZQDee@wy|HCcy;7sh_~FGNsjS5Ul1UUTu345D?jkcM>gW^i_NWEB)5OYk zElrCWnSJy14zoovR#jdmzEH*CSyHIeWYa@USS(dRj?3Ul!T-{9bCEuD9 z*7i9vCR6GbdO-@88mF2;-^z)XK4~y|OmV0Lz0R_hC~H}^wd{Fo`9i(?=hlh>y`s%p z@pG$noYlI;TG`K9RcNhx!Mg7)eSfL-;B(fRd#ts#m0|AKl*v|wJ8C(UFZ02>jjc(_ zcBZ2FS+Duto-?X55=^_kE!P98LIlSbFrjxElRLqe} zV{AMnso85tcor|(L#|ODiKX>Prl=(1?_hYwA!+`dq9??4;P)g%E|yHNLLNqRsZ!x& zco$4@nE^XLzZlMP<-YK4;tSwCun>M94ug{JarUP$f1BVk_!L|Lx58G~4p+e)@IJT; zKA==6yobPQ6no(sxDP%ABXBMJAzTMLU>kfH8u$u)1pX903J<{z@Mmx%JPeE%Nj55AbdHA^a0O4LhN<=x^{N;`X#>=@x@ zm;ysE4L%0b;SXUCcntQ0Cp`puMY3<)Wtq-NS$dr5QJOa?NF|(Wf>tGj#W4reG&{rw zN>156u7FvP`)N2AX2U)(0AVdef?{U}6g&G|?uSL_6WNT+l!=MXy+SL$*;3MD#BgGy zMpr}jFf{_okvr1Kp^{ne$*PcpD@pwo{Ym_l$#!E#xmm}+T-0NsG)5TP7?GthHc6`^wOa(U0iNp z2T{|A5H}A4Qtj`-TsR*VLYWZ*;R57A@OD@V8{iB#ekN>0u7!8NI=B$7bmJd@O~|X^ zBFN6K_ze->Liu(9+flTjcp5H-&%!(5UbqCZ!K$V3H7FJO1-uLSO?WqC-&6O%|8?U( zgx^O#4ey0)Qz``6PVD>_Agv8+lxi6Pwh6TyWtHuwvJ7Z?BB@koApUxM5WfV^ zx{}USZ{bhlrBkH?$Ka>o=iP@22i z9Gy|&<#_c@^qIls`GpgGa_~66HA)CDsq8~&hO77U^FiXfnx*Ae=&t6G@;=r=pLwam zZ;qFb(cMj2#Yk@&_SX5#DP48`AsmxE~ueoY+j zbMNW4%7joZEqIuI`4a2Wm}7*6GO|Kxp^!_A&3LklEXR$o+Lg0i%AG*;(_K4q!4X;Z zTH!-(y0;Pdvs95;SeX&3c0@agBxAd@!dWNd zc7bL6jmI#bDvXI6I%24}VtEj7^2qgH$37U*zGxmN&dtO55ODLzvz1nJ>YFDuEN+}% zZw}X{1s$E6_Ug;_<=yFP_J>`z@5H%zMqIWpuSr_nDE1dMS2xtw-!QL!Yn_#{pzd;WY4`Z>3Vx;8TlTOhPivS#Z&D&Rla!n9aCcT_cG$;r7~iNSfhY}isr$ay1Bl)j@ Q|I?Aw<}=P`eOd1R10^S?v;Y7A From f188c12f0ae09e41e700b6bba97de2ab6ee1cad2 Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Wed, 18 Jul 2018 23:13:39 -0700 Subject: [PATCH 026/110] Draw order fixed. Better greyscale shader and draw order fixed for drawing things to the screen. WOOT! --- ShaderExample/ShaderExample/Class1.cs | 227 ++++++++++++------ .../Content/Shaders/GreyScaleEffect.xnb | Bin 1176 -> 1468 bytes .../ShaderExample/ShaderExample.csproj | 1 + .../Debug/Content/Shaders/GreyScaleEffect.xnb | Bin 1176 -> 1468 bytes .../bin/Debug/ShaderExample 0.0.1.zip | Bin 110126 -> 112836 bytes .../ShaderExample/bin/Debug/ShaderExample.dll | Bin 20992 -> 24576 bytes .../ShaderExample/bin/Debug/ShaderExample.pdb | Bin 30208 -> 34304 bytes .../ShaderExample/obj/Debug/ShaderExample.dll | Bin 20992 -> 24576 bytes .../ShaderExample/obj/Debug/ShaderExample.pdb | Bin 30208 -> 34304 bytes 9 files changed, 161 insertions(+), 67 deletions(-) diff --git a/ShaderExample/ShaderExample/Class1.cs b/ShaderExample/ShaderExample/Class1.cs index a151df04..7f70431b 100644 --- a/ShaderExample/ShaderExample/Class1.cs +++ b/ShaderExample/ShaderExample/Class1.cs @@ -74,7 +74,7 @@ namespace ShaderExample drawMapPart1(); Game1.spriteBatch.End(); - + /* Game1.spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); Framework.Drawers.Characters.drawFarmer(); Framework.Drawers.Characters.drawCharacters(); @@ -90,16 +90,36 @@ namespace ShaderExample index++; } } + Game1.spriteBatch.End(); + */ //Game1.spriteBatch.End(); //Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); //drawFront(); - Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); - drawMapPart2(); + //The perfect map draw order. + Game1.spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + //drawMapPart2(); + SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); + Class1.effect.CurrentTechnique.Passes[0].Apply(); + AHHHH(); + Game1.spriteBatch.End(); + + Game1.spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); + Class1.effect.CurrentTechnique.Passes[0].Apply(); + Game1.player.currentLocation.drawAboveFrontLayer(Game1.spriteBatch); + if (Game1.currentLocation.Map.GetLayer("AlwaysFront") != null) + { + Game1.mapDisplayDevice.BeginScene(Game1.spriteBatch); + Game1.currentLocation.Map.GetLayer("AlwaysFront").Draw(Game1.mapDisplayDevice, Game1.viewport, Location.Origin, false, 4); + Game1.mapDisplayDevice.EndScene(); + } + //Game1.currentLocation.drawAboveAlwaysFrontLayer(Game1.spriteBatch); + Game1.player.currentLocation.drawAboveAlwaysFrontLayer(Game1.spriteBatch); drawOverlays(); Game1.spriteBatch.End(); @@ -159,108 +179,109 @@ namespace ShaderExample if (tab.name.Equals("skills")) Game1.player.FarmerRenderer.drawMiniPortrat(Game1.spriteBatch, new Vector2((float)(tab.bounds.X + 8), (float)(tab.bounds.Y + 12 + ((Game1.activeClickableMenu as StardewValley.Menus.GameMenu).currentTab == (Game1.activeClickableMenu as StardewValley.Menus.GameMenu).getTabNumberFromName(tab.name) ? 8 : 0))), 0.00011f, 3f, 2, Game1.player); } - } - if ((Game1.activeClickableMenu as StardewValley.Menus.GameMenu).currentTab == 2) - { - - - var pageField = GetInstanceField(typeof(StardewValley.Menus.GameMenu), Game1.activeClickableMenu, "pages"); - var pages = (List)pageField; - - var socialPage = pages.ElementAt(2); - var v = (StardewValley.Menus.SocialPage)socialPage; - if (v == null) + if ((Game1.activeClickableMenu as StardewValley.Menus.GameMenu).currentTab == 2) { - Monitor.Log("WHATTT?????"); - } - v = (StardewValley.Menus.SocialPage)v; - int numFarmers = (int)GetInstanceField(typeof(StardewValley.Menus.SocialPage), v, "numFarmers"); + var pageField = GetInstanceField(typeof(StardewValley.Menus.GameMenu), Game1.activeClickableMenu, "pages"); + var pages = (List)pageField; - getInvokeMethod(v, "drawHorizontalPartition", new object[]{ + var socialPage = pages.ElementAt(2); + var v = (StardewValley.Menus.SocialPage)socialPage; + if (v == null) + { + Monitor.Log("WHATTT?????"); + } + v = (StardewValley.Menus.SocialPage)v; + + + int numFarmers = (int)GetInstanceField(typeof(StardewValley.Menus.SocialPage), v, "numFarmers"); + + getInvokeMethod(v, "drawHorizontalPartition", new object[]{ Game1.spriteBatch, v.yPositionOnScreen + IClickableMenu.borderWidth + 128 + 4, true }); - getInvokeMethod(v, "drawHorizontalPartition", new object[]{ + getInvokeMethod(v, "drawHorizontalPartition", new object[]{ Game1.spriteBatch, v.yPositionOnScreen + IClickableMenu.borderWidth + 192 + 32 + 20, true }); - getInvokeMethod(v, "drawHorizontalPartition", new object[]{ + getInvokeMethod(v, "drawHorizontalPartition", new object[]{ Game1.spriteBatch, v.yPositionOnScreen + IClickableMenu.borderWidth + 320 + 36, true }); - getInvokeMethod(v, "drawHorizontalPartition", new object[]{ + getInvokeMethod(v, "drawHorizontalPartition", new object[]{ Game1.spriteBatch, v.yPositionOnScreen + IClickableMenu.borderWidth + 384 + 32 + 52, true }); - Rectangle scissorRectangle = Game1.spriteBatch.GraphicsDevice.ScissorRectangle; - Rectangle rectangle = scissorRectangle; - rectangle.Y = Math.Max(0, rowPosition(v,numFarmers - 1)); - rectangle.Height -= rectangle.Y; - Game1.spriteBatch.GraphicsDevice.ScissorRectangle = rectangle; - try - { - - getInvokeMethod(v, "drawVerticalPartition", new object[] + Rectangle scissorRectangle = Game1.spriteBatch.GraphicsDevice.ScissorRectangle; + Rectangle rectangle = scissorRectangle; + rectangle.Y = Math.Max(0, rowPosition(v, numFarmers - 1)); + rectangle.Height -= rectangle.Y; + Game1.spriteBatch.GraphicsDevice.ScissorRectangle = rectangle; + try { + + getInvokeMethod(v, "drawVerticalPartition", new object[] + { Game1.spriteBatch, v.xPositionOnScreen + 256 + 12, true - }); - } - finally - { - Game1.spriteBatch.GraphicsDevice.ScissorRectangle = scissorRectangle; - } - getInvokeMethod(v, "drawVerticalPartition", new object[] + }); + } + finally { + Game1.spriteBatch.GraphicsDevice.ScissorRectangle = scissorRectangle; + } + getInvokeMethod(v, "drawVerticalPartition", new object[] + { Game1.spriteBatch, v.xPositionOnScreen + 256 + 12+340, true - }); + }); - int slotPosition2=(int)GetInstanceField(typeof(StardewValley.Menus.SocialPage), v, "slotPosition"); + int slotPosition2 = (int)GetInstanceField(typeof(StardewValley.Menus.SocialPage), v, "slotPosition"); - var sprites = (List)GetInstanceField(typeof(StardewValley.Menus.SocialPage), v, "sprites"); - var names = (List)GetInstanceField(typeof(StardewValley.Menus.SocialPage), v, "names"); - for (int slotPosition = slotPosition2; slotPosition < slotPosition2 + 5; ++slotPosition) - { - if (slotPosition < sprites.Count) + var sprites = (List)GetInstanceField(typeof(StardewValley.Menus.SocialPage), v, "sprites"); + var names = (List)GetInstanceField(typeof(StardewValley.Menus.SocialPage), v, "names"); + for (int slotPosition = slotPosition2; slotPosition < slotPosition2 + 5; ++slotPosition) { - if (names[slotPosition] is string) - getInvokeMethod(v, "drawNPCSlot", new object[]{ + if (slotPosition < sprites.Count) + { + if (names[slotPosition] is string) + getInvokeMethod(v, "drawNPCSlot", new object[]{ Game1.spriteBatch, slotPosition }); - else if (names[slotPosition] is long) - getInvokeMethod(v, "drawFarmerSlot", new object[]{ + else if (names[slotPosition] is long) + getInvokeMethod(v, "drawFarmerSlot", new object[]{ Game1.spriteBatch, slotPosition }); + } } + + + (GetInstanceField(typeof(SocialPage), v, "upButton") as ClickableTextureComponent).draw(Game1.spriteBatch); + (GetInstanceField(typeof(SocialPage), v, "downButton") as ClickableTextureComponent).draw(Game1.spriteBatch); + Rectangle scrollBarRunner = (Rectangle)(GetInstanceField(typeof(SocialPage), v, "scrollBarRunner")); + IClickableMenu.drawTextureBox(Game1.spriteBatch, Game1.mouseCursors, new Rectangle(403, 383, 6, 6), scrollBarRunner.X, scrollBarRunner.Y, scrollBarRunner.Width, scrollBarRunner.Height, Color.White, 4f, true); + (GetInstanceField(typeof(SocialPage), v, "scrollBar") as ClickableTextureComponent).draw(Game1.spriteBatch); + string hoverText = (GetInstanceField(typeof(SocialPage), v, "hoverText") as string); + if (!hoverText.Equals("")) + IClickableMenu.drawHoverText(Game1.spriteBatch, hoverText, Game1.smallFont, 0, 0, -1, (string)null, -1, (string[])null, (Item)null, 0, -1, -1, -1, -1, 1f, (CraftingRecipe)null); } + if ((Game1.activeClickableMenu as StardewValley.Menus.GameMenu).currentTab == 4) + { + var pageField = GetInstanceField(typeof(StardewValley.Menus.GameMenu), Game1.activeClickableMenu, "pages"); + var pages = (List)pageField; - (GetInstanceField(typeof(SocialPage),v,"upButton") as ClickableTextureComponent).draw(Game1.spriteBatch); - (GetInstanceField(typeof(SocialPage), v, "downButton") as ClickableTextureComponent).draw(Game1.spriteBatch); - Rectangle scrollBarRunner=(Rectangle)(GetInstanceField(typeof(SocialPage), v, "scrollBarRunner")); - IClickableMenu.drawTextureBox(Game1.spriteBatch, Game1.mouseCursors, new Rectangle(403, 383, 6, 6), scrollBarRunner.X, scrollBarRunner.Y, scrollBarRunner.Width, scrollBarRunner.Height, Color.White, 4f, true); - (GetInstanceField(typeof(SocialPage), v, "scrollBar") as ClickableTextureComponent).draw(Game1.spriteBatch); - string hoverText = (GetInstanceField(typeof(SocialPage), v, "hoverText") as string); - if (!hoverText.Equals("")) - IClickableMenu.drawHoverText(Game1.spriteBatch, hoverText, Game1.smallFont, 0, 0, -1, (string)null, -1, (string[])null, (Item)null, 0, -1, -1, -1, -1, 1f, (CraftingRecipe)null); - } - - if((Game1.activeClickableMenu as StardewValley.Menus.GameMenu).currentTab == 4) - { - var pageField = GetInstanceField(typeof(StardewValley.Menus.GameMenu), Game1.activeClickableMenu, "pages"); - var pages = (List)pageField; + var craftingPage = pages.ElementAt(4); + Monitor.Log(craftingPage.GetType().ToString()); + var v = (StardewValley.Menus.CraftingPage)craftingPage; + Framework.Drawers.Menus.craftingPageDraw((craftingPage as StardewValley.Menus.CraftingPage), Game1.spriteBatch); + } - var craftingPage = pages.ElementAt(4); - Monitor.Log(craftingPage.GetType().ToString()); - var v = (StardewValley.Menus.CraftingPage)craftingPage; - Framework.Drawers.Menus.craftingPageDraw((craftingPage as StardewValley.Menus.CraftingPage), Game1.spriteBatch); } Game1.activeClickableMenu.upperRightCloseButton.draw(Game1.spriteBatch); @@ -319,6 +340,78 @@ namespace ShaderExample return hello.Invoke(target, param); } + + public void AHHHH() + { + if (!Game1.currentLocation.shouldHideCharacters()) + { + if (Game1.CurrentEvent == null) + { + foreach (NPC character in Game1.currentLocation.characters) + { + if (!(bool)(character.swimming) && !character.HideShadow && Game1.currentLocation.shouldShadowBeDrawnAboveBuildingsLayer(character.getTileLocation())) + Game1.spriteBatch.Draw(Game1.shadowTexture, Game1.GlobalToLocal(Game1.viewport, character.Position + new Vector2((float)(character.Sprite.SpriteWidth * 4) / 2f, (float)(character.GetBoundingBox().Height + (character.IsMonster ? 0 : 12)))), new Microsoft.Xna.Framework.Rectangle?(Game1.shadowTexture.Bounds), Color.White, 0.0f, new Vector2((float)Game1.shadowTexture.Bounds.Center.X, (float)Game1.shadowTexture.Bounds.Center.Y), (float)(4.0 + (double)character.yJumpOffset / 40.0) * (float)(character.scale), SpriteEffects.None, Math.Max(0.0f, (float)character.getStandingY() / 10000f) - 1E-06f); + } + } + else + { + foreach (NPC actor in Game1.CurrentEvent.actors) + { + if (!(bool)(actor.swimming) && !actor.HideShadow && Game1.currentLocation.shouldShadowBeDrawnAboveBuildingsLayer(actor.getTileLocation())) + Game1.spriteBatch.Draw(Game1.shadowTexture, Game1.GlobalToLocal(Game1.viewport, actor.Position + new Vector2((float)(actor.Sprite.SpriteWidth * 4) / 2f, (float)(actor.GetBoundingBox().Height + (actor.IsMonster ? 0 : 12)))), new Microsoft.Xna.Framework.Rectangle?(Game1.shadowTexture.Bounds), Color.White, 0.0f, new Vector2((float)Game1.shadowTexture.Bounds.Center.X, (float)Game1.shadowTexture.Bounds.Center.Y), (float)(4.0 + (double)actor.yJumpOffset / 40.0) * (float)(actor.scale), SpriteEffects.None, Math.Max(0.0f, (float)actor.getStandingY() / 10000f) - 1E-06f); + } + } + foreach (Farmer farmer in Game1.currentLocation.farmers) + { + if (!(bool)(farmer.swimming) && !farmer.isRidingHorse() && (Game1.currentLocation != null && Game1.currentLocation.shouldShadowBeDrawnAboveBuildingsLayer(farmer.getTileLocation()))) + { + SpriteBatch spriteBatch = Game1.spriteBatch; + Texture2D shadowTexture = Game1.shadowTexture; + Vector2 local = Game1.GlobalToLocal(farmer.Position + new Vector2(32f, 24f)); + Microsoft.Xna.Framework.Rectangle? sourceRectangle = new Microsoft.Xna.Framework.Rectangle?(Game1.shadowTexture.Bounds); + Color white = Color.White; + double num1 = 0.0; + Microsoft.Xna.Framework.Rectangle bounds = Game1.shadowTexture.Bounds; + double x = (double)bounds.Center.X; + bounds = Game1.shadowTexture.Bounds; + double y = (double)bounds.Center.Y; + Vector2 origin = new Vector2((float)x, (float)y); + double num2 = 4.0 - (!farmer.running && !farmer.UsingTool || farmer.FarmerSprite.currentAnimationIndex <= 1 ? 0.0 : (double)Math.Abs(FarmerRenderer.featureYOffsetPerFrame[farmer.FarmerSprite.CurrentFrame]) * 0.5); + int num3 = 0; + double num4 = 0.0; + spriteBatch.Draw(shadowTexture, local, sourceRectangle, white, (float)num1, origin, (float)num2, (SpriteEffects)num3, (float)num4); + } + } + } + if ((Game1.eventUp || Game1.killScreen) && (!Game1.killScreen && Game1.currentLocation.currentEvent != null)) + Game1.currentLocation.currentEvent.draw(Game1.spriteBatch); + if (Game1.player.currentUpgrade != null && Game1.player.currentUpgrade.daysLeftTillUpgradeDone <= 3 && Game1.currentLocation.Name.Equals("Farm")) + Game1.spriteBatch.Draw(Game1.player.currentUpgrade.workerTexture, Game1.GlobalToLocal(Game1.viewport, Game1.player.currentUpgrade.positionOfCarpenter), new Microsoft.Xna.Framework.Rectangle?(Game1.player.currentUpgrade.getSourceRectangle()), Color.White, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, (float)(((double)Game1.player.currentUpgrade.positionOfCarpenter.Y + 48.0) / 10000.0)); + Game1.currentLocation.draw(Game1.spriteBatch); + if (Game1.eventUp && Game1.currentLocation.currentEvent != null) + { + string messageToScreen = Game1.currentLocation.currentEvent.messageToScreen; + } + if (Game1.player.ActiveObject == null && (Game1.player.UsingTool || Game1.pickingTool) && (Game1.player.CurrentTool != null && (!Game1.player.CurrentTool.Name.Equals("Seeds") || Game1.pickingTool))) + Game1.drawTool(Game1.player); + if (Game1.currentLocation.Name.Equals("Farm")) + Monitor.Log("DRAW farm buildings here"); + //getInvokeMethod((Game1.currentLocation as GameLocation), "drawFarmBuildings", new object[] { }); + if (Game1.tvStation >= 0) + Game1.spriteBatch.Draw(Game1.tvStationTexture, Game1.GlobalToLocal(Game1.viewport, new Vector2(400f, 160f)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(Game1.tvStation * 24, 0, 24, 15)), Color.White, 0.0f, Vector2.Zero, 4f, SpriteEffects.None, 1E-08f); + if (Game1.panMode) + { + Game1.spriteBatch.Draw(Game1.fadeToBlackRect, new Microsoft.Xna.Framework.Rectangle((int)Math.Floor((double)(Game1.getOldMouseX() + Game1.viewport.X) / 64.0) * 64 - Game1.viewport.X, (int)Math.Floor((double)(Game1.getOldMouseY() + Game1.viewport.Y) / 64.0) * 64 - Game1.viewport.Y, 64, 64), Color.Lime * 0.75f); + foreach (Warp warp in (Game1.currentLocation.warps)) + Game1.spriteBatch.Draw(Game1.fadeToBlackRect, new Microsoft.Xna.Framework.Rectangle(warp.X * 64 - Game1.viewport.X, warp.Y * 64 - Game1.viewport.Y, 64, 64), Color.Red * 0.75f); + } + Game1.mapDisplayDevice.BeginScene(Game1.spriteBatch); + Game1.currentLocation.Map.GetLayer("Front").Draw(Game1.mapDisplayDevice, Game1.viewport, Location.Origin, false, 4); + Game1.mapDisplayDevice.EndScene(); + //Game1.currentLocation.drawAboveFrontLayer(Game1.spriteBatch); + //Game1.spriteBatch.End(); + } + public void drawMapPart2() { //Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); diff --git a/ShaderExample/ShaderExample/Content/Shaders/GreyScaleEffect.xnb b/ShaderExample/ShaderExample/Content/Shaders/GreyScaleEffect.xnb index 6c4d112f2a090859488452d6b47e033803fcacf5..4920b794b9f2e306808d2b9a597282936c799dd7 100644 GIT binary patch delta 721 zcmZ9Kze_?<6vxkfKkAv44uS;{1q}_(Qji4_xI_>nG*r+JXb~)zYSO_!KzR-t4R4Cj zXmAR0X!K8T4I2Cd8l<7y_uPA*NJr26+;h%7-*@iSW~3MOj`p*+F7@2H_h=>D`qPbw z`wQYSz2y**CFQT|(rz}NTSr*4@PG+;4IYO#;L~siwGH8SMX7vfBPJ;ehIb&VRY4bQ zfKy-qa_b8i0pAS!h6BT);RuXkp9is7Fk!d?@?q`umtD6ly1hI679kH6~`u50mFS&ldFMEIA6pwh`uy^V9|%;O9Otu zzQC|~XmZ~ZxsiWjzb6mWPZbLuTCMHOOmgQn_nASnpL8~HEU!Y8=P4{)FxKq~j%MTh zSQC4oV+VUA;(UOyR9&dPaKB&;)Z40#e*sY};uO*d-xVh)Psb*);rA5K_~G2jB%tNH7(fU@O{8#fr)XO|T#k zNF;&>7>TGv5H9C#Ck>N1`<=Ntd*{x}UfJ|lmxH?+%533RcHu&A;zLPc9Kgl{76E}%JBsV+O=;Yx zSN6z0rLP-RuLEw$DaDOhILMyESJoSH+=8tOR;@vu9?6@3-qVkF8G~4P_#Rr COIIZT diff --git a/ShaderExample/ShaderExample/ShaderExample.csproj b/ShaderExample/ShaderExample/ShaderExample.csproj index d7c553fd..b0899388 100644 --- a/ShaderExample/ShaderExample/ShaderExample.csproj +++ b/ShaderExample/ShaderExample/ShaderExample.csproj @@ -49,6 +49,7 @@ + diff --git a/ShaderExample/ShaderExample/bin/Debug/Content/Shaders/GreyScaleEffect.xnb b/ShaderExample/ShaderExample/bin/Debug/Content/Shaders/GreyScaleEffect.xnb index 6c4d112f2a090859488452d6b47e033803fcacf5..4920b794b9f2e306808d2b9a597282936c799dd7 100644 GIT binary patch delta 721 zcmZ9Kze_?<6vxkfKkAv44uS;{1q}_(Qji4_xI_>nG*r+JXb~)zYSO_!KzR-t4R4Cj zXmAR0X!K8T4I2Cd8l<7y_uPA*NJr26+;h%7-*@iSW~3MOj`p*+F7@2H_h=>D`qPbw z`wQYSz2y**CFQT|(rz}NTSr*4@PG+;4IYO#;L~siwGH8SMX7vfBPJ;ehIb&VRY4bQ zfKy-qa_b8i0pAS!h6BT);RuXkp9is7Fk!d?@?q`umtD6ly1hI679kH6~`u50mFS&ldFMEIA6pwh`uy^V9|%;O9Otu zzQC|~XmZ~ZxsiWjzb6mWPZbLuTCMHOOmgQn_nASnpL8~HEU!Y8=P4{)FxKq~j%MTh zSQC4oV+VUA;(UOyR9&dPaKB&;)Z40#e*sY};uO*d-xVh)Psb*);rA5K_~G2jB%tNH7(fU@O{8#fr)XO|T#k zNF;&>7>TGv5H9C#Ck>N1`<=Ntd*{x}UfJ|lmxH?+%533RcHu&A;zLPc9Kgl{76E}%JBsV+O=;Yx zSN6z0rLP-RuLEw$DaDOhILMyESJoSH+=8tOR;@vu9?6@3-qVkF8G~4P_#Rr COIIZT diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip b/ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip index 2212c6d8d14df5870fef2a517a712be1dcf40a99..a5a6de23640da2baa34d70b1d4fa8b18ee4ee0e8 100644 GIT binary patch delta 21573 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

&*}s8&je1jfll~MvQ`Vro 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

&*}s8&je1jfll~MvQ`Vro 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 Date: Thu, 19 Jul 2018 13:28:20 -0700 Subject: [PATCH 027/110] Backup all my work thus far. --- ShaderExample/ShaderExample/Class1.cs | 8 +- .../ShaderExample/bin/Debug/Netcode.dll | Bin 76800 -> 76800 bytes .../ShaderExample/bin/Debug/Netcode.pdb | Bin 241152 -> 241152 bytes .../ShaderExample/bin/Debug/ShaderExample.dll | Bin 24576 -> 24576 bytes .../ShaderExample/bin/Debug/ShaderExample.pdb | Bin 34304 -> 34304 bytes .../ShaderExample.csproj.FileListAbsolute.txt | 1 + ...ample.csprojResolveAssemblyReference.cache | Bin 0 -> 91389 bytes .../ShaderExample/obj/Debug/ShaderExample.dll | Bin 24576 -> 24576 bytes .../ShaderExample/obj/Debug/ShaderExample.pdb | Bin 34304 -> 34304 bytes .../Framework/CharacterVoiceCue.cs | 1 + Vocalization/Vocalization/Vocalization.cs | 138 +- .../bin/Debug/Vocalization 0.0.1.zip | Bin 131439 -> 131407 bytes .../Vocalization/bin/Debug/Vocalization.dll | Bin 29696 -> 29696 bytes .../Vocalization/bin/Debug/Vocalization.pdb | Bin 58880 -> 58880 bytes .../Vocalization.csproj.FileListAbsolute.txt | 1 + ...ation.csprojResolveAssemblyReference.cache | Bin 120072 -> 94587 bytes .../Vocalization/obj/Debug/Vocalization.dll | Bin 29696 -> 29696 bytes .../Vocalization/obj/Debug/Vocalization.pdb | Bin 58880 -> 58880 bytes WindowsGame2/WindowsGame2.sln | 29 + .../WindowsGame2/WindowsGame2/Game.ico | Bin 0 -> 4286 bytes .../WindowsGame2/WindowsGame2/Game1.cs | 91 + .../WindowsGame2/GameThumbnail.png | Bin 0 -> 5734 bytes .../WindowsGame2/WindowsGame2/Program.cs | 21 + .../WindowsGame2/Properties/AssemblyInfo.cs | 34 + .../WindowsGame2/WindowsGame2.csproj | 85 + .../WindowsGame2.csproj.Debug.cachefile | 2 + .../bin/x86/Debug/Content/GreyScaleEffect.xnb | Bin 0 -> 1468 bytes .../bin/x86/Debug/Content/NoEffect.xnb | Bin 0 -> 1020 bytes .../Debug/Microsoft.Xna.Framework.Game.dll | Bin 0 -> 74752 bytes .../Debug/Microsoft.Xna.Framework.Game.xml | 625 ++ .../Microsoft.Xna.Framework.GamerServices.dll | Bin 0 -> 73728 bytes .../Microsoft.Xna.Framework.GamerServices.xml | 1310 +++ .../Microsoft.Xna.Framework.Graphics.dll | Bin 0 -> 427520 bytes .../Microsoft.Xna.Framework.Graphics.xml | 3431 ++++++++ .../Microsoft.Xna.Framework.Input.Touch.dll | Bin 0 -> 23040 bytes .../Microsoft.Xna.Framework.Input.Touch.xml | 252 + .../bin/x86/Debug/Microsoft.Xna.Framework.dll | Bin 0 -> 679424 bytes .../bin/x86/Debug/Microsoft.Xna.Framework.xml | 7375 +++++++++++++++++ .../bin/x86/Debug/WindowsGame2.exe | Bin 0 -> 10240 bytes .../bin/x86/Debug/WindowsGame2.pdb | Bin 0 -> 13824 bytes ...{58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08}.xml | 65 + ...Microsoft.Xna.Framework.RuntimeProfile.txt | 1 + ...indowsGame2.csproj.CoreCompileInputs.cache | 1 + .../WindowsGame2.csproj.FileListAbsolute.txt | 19 + .../obj/x86/Debug/WindowsGame2.exe | Bin 0 -> 10240 bytes .../obj/x86/Debug/WindowsGame2.pdb | Bin 0 -> 13824 bytes ...DD6-4FC1-9E6B-9E2D8D885F08}-targetpath.txt | 2 + .../WindowsGame2Content/GreyScaleEffect.fx | 21 + .../WindowsGame2Content/NoEffect.fx | 14 + .../WindowsGame2Content.contentproj | 53 + ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 6668 bytes ...ontent.contentproj.CoreCompileInputs.cache | 1 + ...e2Content.contentproj.FileListAbsolute.txt | 1 + 53 files changed, 13562 insertions(+), 20 deletions(-) create mode 100644 ShaderExample/ShaderExample/obj/Debug/ShaderExample.csprojResolveAssemblyReference.cache create mode 100644 WindowsGame2/WindowsGame2.sln create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/Game.ico create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/Game1.cs create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/GameThumbnail.png create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/Program.cs create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/Properties/AssemblyInfo.cs create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/WindowsGame2.csproj create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/WindowsGame2.csproj.Debug.cachefile create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Content/GreyScaleEffect.xnb create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Content/NoEffect.xnb create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Game.dll create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Game.xml create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.GamerServices.dll create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.GamerServices.xml create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Graphics.dll create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Graphics.xml create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Input.Touch.dll create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Input.Touch.xml create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.dll create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.xml create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/WindowsGame2.exe create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/WindowsGame2.pdb create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/ContentPipeline-{58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08}.xml create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/Microsoft.Xna.Framework.RuntimeProfile.txt create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.csproj.CoreCompileInputs.cache create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.csproj.FileListAbsolute.txt create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.exe create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.pdb create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/cachefile-{58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08}-targetpath.txt create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2Content/GreyScaleEffect.fx create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2Content/NoEffect.fx create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2Content/WindowsGame2Content.contentproj create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2Content/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2Content/obj/x86/Debug/WindowsGame2Content.contentproj.CoreCompileInputs.cache create mode 100644 WindowsGame2/WindowsGame2/WindowsGame2Content/obj/x86/Debug/WindowsGame2Content.contentproj.FileListAbsolute.txt diff --git a/ShaderExample/ShaderExample/Class1.cs b/ShaderExample/ShaderExample/Class1.cs index 7f70431b..5083f235 100644 --- a/ShaderExample/ShaderExample/Class1.cs +++ b/ShaderExample/ShaderExample/Class1.cs @@ -283,8 +283,14 @@ namespace ShaderExample } } + try + { + Game1.activeClickableMenu.upperRightCloseButton.draw(Game1.spriteBatch); + } + catch(Exception err) + { - Game1.activeClickableMenu.upperRightCloseButton.draw(Game1.spriteBatch); + } Game1.activeClickableMenu.drawMouse(Game1.spriteBatch); Game1.spriteBatch.End(); } diff --git a/ShaderExample/ShaderExample/bin/Debug/Netcode.dll b/ShaderExample/ShaderExample/bin/Debug/Netcode.dll index d3ab5f0e7de37fb2567343b1390b28fe124d7477..df30003bd7d26a9acf69b192f5283201b12d705a 100644 GIT binary patch delta 93 zcmZp;!P0PpWkLtD?IDlG?ycR7x-0@xtantlek}G|{OHN=o~}Q!+fT4CTFB`DRYWrY v0TU3*FfuSmI5ILwC^Iqy1-k?byXpD_eqeXs-@a<$?Z<`Y+jW!~uW$eWLOUPU delta 93 zcmZp;!P0PpWkLt@>UA!S-CMgEby);5g(s%REiiQ0!TY1E|MhOR?I&0mE#!27Dxw*H vfC-3Y7#SEO92prTlo=U?Xf`@9oUaWT6yYC`GqI zkw*i2LoYQVsvGPc9{p$LcZ=V@oSjeiZ#PD+GuGO$F|`vv)IRbE{W^NeUuCyJpA4_;0LzdnP-y&q)z4|@_YcHLvVZgtE|lSzcbjS%&n zc$X+{X4(O53d_T)74{sqrm#yG#^FZDks78gq8@>gy@GWrY#D~b4S5jn0O)zIIqMY? zKUGNlS|RTT46}W2!%bMiH|NfD?*o%Q-mxoKv%(@_q5*~FVRZ_75q8u#iNsb#;(J)T z!nR>z@yV~^Crm6}*ZRF8e6bw>F-SM$#3NX3z?eN|Y(xu0^)3F(jd(Zk6Muq4i(gQ- zBup#{*}9}WW{n$F8m20V`KUo*9(MWUe)49$FtHtE%fX&{_sg~n>s8n9K<{Q4}Fr9AReSfBTs+%Sp_Ek-U|18i22$LtBCpks4}JBS{7H;LKcU-?5d!yW{TeJ&Vn sR>927b^Bct(#Bqdi5D;1Dy+#XDBCw!b->u;H%2L?{G(-!>&8Xw2FJvGJpcdz delta 1421 zcmaLXOGq0*7zglgc6}rv#)uDm1YhxmU{Dk+5+RhT;GrJuNx^_fK=5_&q)37i6v5D{ z^yES4r67vM!jv98>A{$j(mfwO?;rN=c}%H}>-U$edY;qHw{cry}aJQ7xJ*A&Kh z?O$bUc{GzfSBPpbgcgi4S)*mN?_jm&4bfg<9~{PCLh3?OoT$E-2!|d8=2g3B&)EuS zHt&fx0xOZ&7uc@E9$}-Fq5gYl1-o5DA@hz{a0=Egu_O$K9%9}O05x-3d_Pa(L7v1P zdGd~6c-uJ(9>eNvv*)kP{sI`Z(QFw@@eFH_n8!^tD6tV(xx^;is4v5LBsNJBQ?OQv zox!xpXdy1eZeg@c(-W?Mn4}(J;tj0KVca{ee)q*v(TYZUaXqx<*bb>^9n2a~ zv|ygRP9cxGrqv=APep@xAAT~zD-`R6S=&Lh2y94_mxT37><`SEwKpylymX>q|6qNR zL4DZJ)^-pdv=X+GGmnUSXVjPy%4FSbL{(-dzwifYfR#FoAI8*XSBz-2%dTpD|5`tW ia~)=_lW5zpdUHV0e!@x|#yb|(bc^&S%LDuBL(LmZLW#8i diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample.dll b/ShaderExample/ShaderExample/bin/Debug/ShaderExample.dll index abf2b67e13458f2cf401f5601ccc0a84f782d872..9e9b08e5ebc558d130c41fd804f6e6ebdf8fb0cb 100644 GIT binary patch delta 2567 zcmZ8j4R96J6+Y+O{dxQTcOPmNP2u%gXC{{vX1feY9 zCv5-=aWPD2sAMJtU!esFmLe1osBMNwkwIw$5yhco27&M+MQiD~`(G}#%X|Cf_-p|TZN99`4V`)F^mK% zG`J=$>;6s<00B&Z#rFdEU%Zb2;H>V4k5ldrN{KrGa1W5(GEdA!Ww`;8{oE~8m*T>f zvue`U1E6mPJ1v~Vkd9H9j-kc+awInqUMl*T{oG^WY5{rE-Je9pvOU0t0D#TU7Jh2{ zxtHNx??^nfgKccK900DVQ#Ldk0qXE7R1d49FH~D5*;Hfp zrgqqC_NSBsq$Vf@*}ei6jSdtu)~m8as{%>7O>;t%se*nJm`e+&B(i`;a8+KRe6K2o zIEn?tWeok6Od%Igh~sH1*rI1zig75R1I|F8Aa%u2SV{Zu^c38!cawY^*R?f<3j9Jh^EW?*p2re8l6;icIiw z=qyhz>`!tfo;S~PGH;kA~DS-~$@(ae1vj2rM8S3)|( zMXrA&rx_Bx$>C-gGO=TPE#AQqN&)wBje&|yo4M;YjpH~rDS~aNOH__a(Wf-RkG&Ol z4+YtBz9*T(l05vQQt9yi93C@yHlwU=N(G$>_fb}R>t5%rJAu+UfoX?ZSjjz((^E{#BpFK|iv7q11}rY88(MhvZcL9$u-`i&L1Sa`ETT8pXy_Mm=kv<@7eKV5}7p z^>xLm72AzJF!?h0HY*CnHC~ypj_~-rw~jlE_2R*hT+^4<`z#+D{g83BA|>xdt||@Q zbeqy`qQ0Ecrl}++af^JaP1WHfRq;{eljY$y4|k=<4p^}v>NeP`4^y+@I=+C}-x^)V zJeDUyv($YYdbxT8-qah|M&1f-Ub0=DSDUwE_IbDs+5#G1M6z-9BG0%cQYbfLiW?fo zMo@ew)J7qXVxy3U7SZ`yKc#lic>iTKI_&>gMH~|DP*bAWxS}><59OBH4z=Fd-O3I& zy=G0++Tm;D`&h10ac3~t08-m&M{S)S~6XbN1{YN#&e z(`AD~dMA|dZE?oCYC2&$k6Up%-;y@D{tUL6XT|k@dq+;eX3kPW`=i738u~1p&$yls za~1@^`KO)*F}TXu4I;iQ=mi;!{h>eO!yXRzaI_~M2ZLE&>`6*JdORFqp`{}${giWrI(sex2U^R(tf08Vm8jez4#SkHZ7+*$`k{|BjT50 zlXyeCEe?yp$|&Wwf@)CBQ0J>_)kd{Uds(Z|Hfg)H-ufUnH>VdS+_IcL_Y~=iL-M7j zcyG2e6uBF7dMLBI&Ya^O%*nVXpYMaB8W|M~Fs zS6jDF&R_fZ(8CGw!+*6LN&3*rcuCr)e?#QBXKnmm%ye%~y4ez*{FR{mp)KarD_A>7 F|1THcG`Ro( delta 2525 zcmZWr4RBS}5#HT%f8PIl_lAaC1VSJRDH;r9f|VpSNc#v7NQ5+m05<$M1nj^A!jDjH z5=cr!#drZHh+rJT_(n!3uW_JK1nbzQrl?qJQ!o}w1=>`S0#a%%-E*JQ5&JUPcfN0T z&z{{qd+)0|iFGIO>8&(>bj#yIacE1t0=pcWC75l`{1L!&S8qvHNUewG$>IkR-;(&1qPMQK#}TH zsSUUy(W6#)28>E$rwy}NB=;!el`|{UAVwLZobFH)6-{#%gr_9l4Eu)Il{&)x<~)|i zLQD11Ve(9G!N!y|%slO)ddM_3>I5&`BX#v~kAJhSK(C9MU;}9UcRX9_c0mC>u4{0~ zMNKdcHSogL@lw|WAG4hoX5W{zyoJx`UZ}Ibf)RR755P+j z@+E3Ys|ZRo?>6+vZD?x}L5A6`N8nFip{S{W2?q=0F1sKYcv&|gP-rKiH!R`TH#Om< z!lbS@aOfMlG&uS|QkP|()YESB8}tp7|9xrcK&7WsA0(F`+$09U9TH?Rd<&uRs~@5T~FSKGlB% zWi&JNE>zM1@9&|SqA415L)83;ef_};P(!xwuMndX0m*Fk_3_&AUx)S75%_|c79woJ zUn^1@H*}0+h0kvz;zZM6#p{a34rkc8p7vlm2B0{Yg##d9d{h51wn<-TGQ(t1vyn;N@S2fDaT`dDQXFzU zB}_f&FJsxN$`Wn!m(xvJ8JtZqdd|O+)>CD8E#-4nw$UWFDqit6mJpXQxQ7fO6DX6I zEHOnS*y~!TgR3>iFhz{g!f9ff>pRQ!ts$>xoR|ytk;p`0;54%XYiNP5lue%s{6JW= zRE;t-%wH;M=%zYP6p31oN;TAOUSz&5(7`1g;9tm=H$BTm79I&++?VfA3+lUzThF%dH-Scj7c?-9x zGMk&8PGO zifVCINyixFD|QK0i@BU@wRkk}H&z_rzUJU=?BhyEhYV5RE95X^BUgF5#alv&-t>>=2Bk&ZrP{pC z3Cg3q6WXe@iVv}zYQ!&sPbwCE=zW&8OE|nmjVxP4Sbbhu+#(Kn4>I^XaFi8gqK`8Z z<{P~Jvzx~)maSrVQ0DZx`400_BEMt#gd&;WhCfsGxX0a}Y!i**kQU7+d59aNsTMVb z%AJ9^L+pFigYcT3r{=;{T!y(koEjYD^>>*s4lY%X^9~K_oA6V8H`~bJ?{fG2nd{Z% zUX0_eJP2KWjh{ENKdqw3+b7~E?_8YwmX2+pc-~dpgq*lGA!ifu3;hFIy-X#(UN-ur z@2rYAHgr*qiv!-jt8JLBTvxlH#U0U?*}QJ~dTcqdukXQyooO3)3fyGCj)~Gh=$fo>9Qb!u-*t zRdN&J|H1qt>M;N6I$Qzp(9B6Q-z!~`b^i*ZXmjQZ|7l1qPEA~@@L=%T8fl;Wgq$yD e-+|y*mDimg&dyAP=KM?0u<;3F{uOMwSN|_Wgef)v diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample.pdb b/ShaderExample/ShaderExample/bin/Debug/ShaderExample.pdb index 0c641535d473f6227ab404b17a0892300b7f8005..11235f400a1d5c3b4ce8c9b8dbd6ff3e0cad3afe 100644 GIT binary patch delta 3436 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 F|1THcG`Ro( delta 2525 zcmZWr4RBS}5#HT%f8PIl_lAaC1VSJRDH;r9f|VpSNc#v7NQ5+m05<$M1nj^A!jDjH z5=cr!#drZHh+rJT_(n!3uW_JK1nbzQrl?qJQ!o}w1=>`S0#a%%-E*JQ5&JUPcfN0T z&z{{qd+)0|iFGIO>8&(>bj#yIacE1t0=pcWC75l`{1L!&S8qvHNUewG$>IkR-;(&1qPMQK#}TH zsSUUy(W6#)28>E$rwy}NB=;!el`|{UAVwLZobFH)6-{#%gr_9l4Eu)Il{&)x<~)|i zLQD11Ve(9G!N!y|%slO)ddM_3>I5&`BX#v~kAJhSK(C9MU;}9UcRX9_c0mC>u4{0~ zMNKdcHSogL@lw|WAG4hoX5W{zyoJx`UZ}Ibf)RR755P+j z@+E3Ys|ZRo?>6+vZD?x}L5A6`N8nFip{S{W2?q=0F1sKYcv&|gP-rKiH!R`TH#Om< z!lbS@aOfMlG&uS|QkP|()YESB8}tp7|9xrcK&7WsA0(F`+$09U9TH?Rd<&uRs~@5T~FSKGlB% zWi&JNE>zM1@9&|SqA415L)83;ef_};P(!xwuMndX0m*Fk_3_&AUx)S75%_|c79woJ zUn^1@H*}0+h0kvz;zZM6#p{a34rkc8p7vlm2B0{Yg##d9d{h51wn<-TGQ(t1vyn;N@S2fDaT`dDQXFzU zB}_f&FJsxN$`Wn!m(xvJ8JtZqdd|O+)>CD8E#-4nw$UWFDqit6mJpXQxQ7fO6DX6I zEHOnS*y~!TgR3>iFhz{g!f9ff>pRQ!ts$>xoR|ytk;p`0;54%XYiNP5lue%s{6JW= zRE;t-%wH;M=%zYP6p31oN;TAOUSz&5(7`1g;9tm=H$BTm79I&++?VfA3+lUzThF%dH-Scj7c?-9x zGMk&8PGO zifVCINyixFD|QK0i@BU@wRkk}H&z_rzUJU=?BhyEhYV5RE95X^BUgF5#alv&-t>>=2Bk&ZrP{pC z3Cg3q6WXe@iVv}zYQ!&sPbwCE=zW&8OE|nmjVxP4Sbbhu+#(Kn4>I^XaFi8gqK`8Z z<{P~Jvzx~)maSrVQ0DZx`400_BEMt#gd&;WhCfsGxX0a}Y!i**kQU7+d59aNsTMVb z%AJ9^L+pFigYcT3r{=;{T!y(koEjYD^>>*s4lY%X^9~K_oA6V8H`~bJ?{fG2nd{Z% zUX0_eJP2KWjh{ENKdqw3+b7~E?_8YwmX2+pc-~dpgq*lGA!ifu3;hFIy-X#(UN-ur z@2rYAHgr*qiv!-jt8JLBTvxlH#U0U?*}QJ~dTcqdukXQyooO3)3fyGCj)~Gh=$fo>9Qb!u-*t zRdN&J|H1qt>M;N6I$Qzp(9B6Q-z!~`b^i*ZXmjQZ|7l1qPEA~@@L=%T8fl;Wgq$yD e-+|y*mDimg&dyAP=KM?0u<;3F{uOMwSN|_Wgef)v diff --git a/ShaderExample/ShaderExample/obj/Debug/ShaderExample.pdb b/ShaderExample/ShaderExample/obj/Debug/ShaderExample.pdb index 0c641535d473f6227ab404b17a0892300b7f8005..11235f400a1d5c3b4ce8c9b8dbd6ff3e0cad3afe 100644 GIT binary patch delta 3436 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 @@ -123,10 +127,23 @@ namespace Vocalization /// -NPC.cs /// -Utility.cs /// - /// !!!!!!!!!Make moddable to support other languages, portuguese, russian, etc (Needs testing) + /// Make moddable to support other languages, portuguese, russian, etc (Needs testing) /// -make mod config have a list of supported languages and a variable that is the currently selected language. /// + /// Remove text typing sound from game? (done) Just turn off the option for Game1.options.dialogueTyping. + /// /// Add support for adding dialogue lines when loading CharacterVoiceCue.json if the line doesn't already exist! (done) + /// + /// + /// + /// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + /// -Quests (done) + /// -NPC Gift tastes + /// speach bubbles + /// -temp + /// -ui + /// /// + /// /// public class Vocalization : Mod { @@ -143,6 +160,8 @@ namespace Vocalization /// public static SimpleSoundManager.Framework.SoundManager soundManager; + + ///

/// The path to the folder where all of the NPC folders for dialogue .wav files are kept. /// @@ -164,7 +183,9 @@ namespace Vocalization StardewModdingAPI.Events.GameEvents.UpdateTick += GameEvents_UpdateTick; StardewModdingAPI.Events.MenuEvents.MenuClosed += MenuEvents_MenuClosed; - ModMonitor = Monitor; + Effect eff; + eff.pa + ModMonitor = Monitor; ModHelper = Helper; DialogueCues = new Dictionary(); replacementStrings = new ReplacementStrings(); @@ -380,11 +401,6 @@ namespace Vocalization string voicePath = Path.Combine(audioPath, "VoiceFiles"); - List translationFolders = new List(); - - //TODO: Add more translations. - translationFolders.Add(Path.Combine(voicePath, "English")); - VoicePath = voicePath; //Set a static reference to my voice files directory. List characterDialoguePaths = new List(); @@ -394,7 +410,7 @@ namespace Vocalization { foreach(var NPC in loc.characters) { - foreach (var translation in translationFolders) + foreach (var translation in config.translations) { string characterPath = Path.Combine(translation, NPC.Name); characterDialoguePaths.Add(characterPath); @@ -403,64 +419,64 @@ namespace Vocalization } //Add in folder for TV Shows - foreach (var translation in translationFolders) + foreach (var translation in config.translations) { string TVPath = Path.Combine(translation, "TV"); characterDialoguePaths.Add(TVPath); } //Add in folder for shop support - foreach (var translation in translationFolders) + foreach (var translation in config.translations) { string shop = Path.Combine(translation, "Shops"); //Used to hold NPC Shops characterDialoguePaths.Add(shop); } //Add in folder for Mail support. - foreach (var translation in translationFolders) + foreach (var translation in config.translations) { string mail = Path.Combine(translation, "Mail"); characterDialoguePaths.Add(mail); } //Add in folder for ExtraDiaogue.yaml - foreach (var translation in translationFolders) + foreach (var translation in config.translations) { string extra = Path.Combine(translation, "ExtraDialogue"); characterDialoguePaths.Add(extra); } - foreach (var translation in translationFolders) + foreach (var translation in config.translations) { string extra = Path.Combine(translation, "Events"); characterDialoguePaths.Add(extra); } - foreach (var translation in translationFolders) + foreach (var translation in config.translations) { string extra = Path.Combine(translation, "Characters"); characterDialoguePaths.Add(extra); } - foreach (var translation in translationFolders) + foreach (var translation in config.translations) { string extra = Path.Combine(translation, "LocationDialogue"); characterDialoguePaths.Add(extra); } - foreach (var translation in translationFolders) + foreach (var translation in config.translations) { string extra = Path.Combine(translation, "Notes"); characterDialoguePaths.Add(extra); } - foreach (var translation in translationFolders) + foreach (var translation in config.translations) { string extra = Path.Combine(translation, "Utility"); characterDialoguePaths.Add(extra); } - foreach (var translation in translationFolders) + foreach (var translation in config.translations) { string kent = Path.Combine(translation, "Kent"); characterDialoguePaths.Add(kent); @@ -483,13 +499,20 @@ namespace Vocalization } + + foreach (var translation in config.translations) + { + string extra = Path.Combine(translation, "Quests"); + characterDialoguePaths.Add(extra); + } + if (!Directory.Exists(contentPath)) Directory.CreateDirectory(contentPath); if (!Directory.Exists(audioPath)) Directory.CreateDirectory(audioPath); if (!Directory.Exists(voicePath)) Directory.CreateDirectory(voicePath); //Create all of the necessary folders for different translations. - foreach(var dir in translationFolders) + foreach(var dir in config.translations) { if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); } @@ -997,6 +1020,55 @@ namespace Vocalization } + else if (cue.name == "Quests") + { + foreach (var fileName in cue.stringsFileNames) + { + ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); + string dialoguePath2 = Path.Combine(stringsPath, fileName); + string root = Game1.content.RootDirectory;///////USE THIS TO CHECK FOR EXISTENCE!!!!! + if (!File.Exists(Path.Combine(root, dialoguePath2))) + { + ModMonitor.Log("Dialogue file not found for:" + fileName + ". This might not necessarily be a mistake just a safety check."); + continue; //If the file is not found for some reason... + } + var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); + //Scrape the whole dictionary looking for the character's name. + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + //If the key contains the character's name. + + List strippedRawQuestDialogue = new List(); + List strippedFreshQuestDialogue = new List(); + strippedRawQuestDialogue = rawDialogue.Split('/').ToList(); + string prompt = strippedRawQuestDialogue.ElementAt(2); + string response = strippedRawQuestDialogue.ElementAt(strippedRawQuestDialogue.Count - 1); + + strippedFreshQuestDialogue.Add(prompt); + if (response != "true" || response != "false") + { + strippedFreshQuestDialogue.Add(response); + } + + List cleanDialogues = new List(); + foreach (var dia in strippedFreshQuestDialogue) + { + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + } + } + continue; + + + } + } + //Dialogue scrape for npc specific text. else { @@ -1179,6 +1251,34 @@ namespace Vocalization } continue; } + + if (fileName.Contains(cue.name)) + { + dialoguePath2 = Path.Combine(stringsPath,"schedules", fileName); + root = Game1.content.RootDirectory;///////USE THIS TO CHECK FOR EXISTENCE!!!!! + if (!File.Exists(Path.Combine(root, dialoguePath2))) + { + ModMonitor.Log("Dialogue file not found for:" + fileName + ". This might not necessarily be a mistake just a safety check."); + continue; //If the file is not found for some reason... + } + DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); + //Scrape the whole dictionary looking for the character's name. + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + //If the key contains the character's name. + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + + } + continue; + } } } diff --git a/Vocalization/Vocalization/bin/Debug/Vocalization 0.0.1.zip b/Vocalization/Vocalization/bin/Debug/Vocalization 0.0.1.zip index b657e46586656b992bf2273b94745a566842c4d0..49d5fcda3e42702b7e919aa263de70364936e6eb 100644 GIT binary patch delta 29657 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
fI%`+jYaiHU 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 diff --git a/Vocalization/Vocalization/bin/Debug/Vocalization.dll b/Vocalization/Vocalization/bin/Debug/Vocalization.dll index 2a95354d6212611712e41f4c37e8e5a268fced93..605be4ac619a2312d825f66abf9e3b2f04c3f624 100644 GIT binary patch delta 2726 zcmaKu3v3is6o${eyEAuYcDuWGmzITXOUo8o+HIMZ)@nf>LY0?7K`d24p&&>}SJz@N z6b7(1Jd9W;5Gq0-0!ko+us#~2L^R?vYQTgL2%uM^T@MZ`x<>k8vv#O9y^hZ1t8|QmfGZW+A6y!JZTb zNHyRZSK@;)FS$z?9`5FzIL8zqs2U~1F)KfQ)*n=Rb0mOBTo%0t58^G02EFzmS-`UrR|!02kKw~Hd~t5rb9n7BzQZxRw~lc; z(T_yGO$-1JB(773$dSmM3-f1y{=R^Q778LUXcI%gLy68bu^$rqImBRw80?Fvg|ZQt zZ3ABTzNV@$Q( z|Gi==@yD#Rue%C(Rk~>eAAv7~s#F&)vEDD@9PzG}O#26#=n?+$(k_SHCj z)tSEPTdoD)Z$Ns)Yqb-qdccno^Tp6|0&6Hfj+)r(xIHT5oinUimE>BpS>qHD`acWTXfw;qsE`7lXuvh#?Z z-0K@%MXn@&8as{7dV|SOEH5NE;A00_4s@}@7@ud51Yw&MS6J~AqS2W2%T3EdKz;=>_8V=?urwCD381V-WY8U<7gt zMQsfP$SH=8SxQ}k^UMt$DYZyCkDc!iwO5W(WKiHrOsGzH+){@sY^4~=MW(>+DYon- zSD6Oi-fydj@*DF&Pou3$Jy)3*nr2(d8Z8UvTdFI(jQzv1pfz0!;I1C970i$V;DZ|} z)#wJr53wej`6eAL1Bdq?$v`4cIR=kj3f|sT#>2OON8YPD%^l4?N=nFx{Qd zK*nf4OQ%Rb?K)PsXm^pNVx=LqSxeikrR~jn0xgV1%|nZXnN+gv@CSPr&IqdKx%wv#O@M9rNSvS=goH zUDre!FnTz>E-jZ|gcr08=FR)^NR62{F=~{{mtjBYWUt{s?N9+8kd+DufgfW8DlkT& z7GoJq!Z^Z;Bds{z@~6Nw^k-VmBUWsNMd-9Z7sh8`htdoip_Nq9t+YnoB9CJaum{=W z>?t-7X?TMtAe$7C8$_cK8l~Sz7bH~<$YJ?md9D1CywN;2F-kU@u1U>fHnY#D*mbuE zsbdFQiT{8AYGE!cf=03)+URC5>2`Qq+K>5m0Qo5Di_n(bGszVWEO{vU!}O>&es9AE z7wZoHU6bsY*GgoA)%twCWL0xJi{W2L>oyeU$|V5Gdi=Bi%$PZ0X5%k|4t6X(Ipw8p vb5FcNe>Zt%i9)ibZb(goUr(67wnWJ6WY*H7BC)MMvGd?4 delta 2680 zcmZvedu&s66vxl`wfE7xcI~farDJ7d8{5iS#@z;Nuqg;E43WTihzJ;PAPC5yOrtPY zP#{A{U|vCBpkVfg2qbDTAxI2M!0?C!h{oXChzft85l12#hvz;U%x=UoA_Q5#1^T^!n8`}V;16_vz_PRO?L*6q0UW$)(07SJymeA&5 z8P;o?FqIp5jS_S<(vN`vo1X%Rl>?x*X=P1%23swDh<%SdKr=<(6@}>!Fmph59NX zC0-I#VsYKg0-nV^Ek)$V#-wz`%LVQ=n*vphAZ_@y@BBffFDwA$wWuV(H$d3&dg}0Z zJ}xI@3hjhwB*w0|fB!z^M9PUy&KkfMFAn<50kVN-Cx1iZVN=xJPwoA7d!O0)~>Vlxva(0UwkM+3!Rsk4SkoDK|sP?SG^w zfubg8Fz~_2UUR)^x$_B>Z-Y|N3@O?_seniYCTR%pA;|`3q(UMU+N6REsGxsP5rK+K zP%-f0q(aM`GG6%5P$CVrNkth_QU9b8B9)k=QsAY@WzI-t1S+#ZB^gjj|Daf^_Ep+T z!I%jf27Fj@zw_sn6Rg~Xk>2g-anj?Ce$3Gmq$eEx6GtCT`fx|T?C2F-sOA-BLZ3n3 zcw^VNG|m_*-BoSkUXa9?ENZQtt#^Y ztASTL#UuGh+Nsr6HI*0}U*CCE4>SiZn1{$H0*x|3snNhkJER(3L!{9*X;g+Z>H$(Y z;7R>N+zV9~!A}cM{wvV@Gx$t@2^>VU{0ORzXw@u6wbSMGmc!qks!|1wkiY=59jo$Rve7rE43wtvL6XPn#8_q)}Lw*Qk`4GD&xrwXuwPG~os zsn9N^|H-bb!rt`oN2aqm$0ZTU#HAR9Z0Up)hEC}u*_Yh9a!Nc+ex;!MQ$1(MzvMnk z_N08C?&@MoQG{)>PUtf12E(3{uWDB()`fIE;nD3+hJH*wt`$tmO@2Q`=Hdx1t_<~j9{h^fNXf*isrgS z*$+3Y=v^k#y0*^GFgeHz%!bUP=MGs>l%gPq+J$EF8a)MvD+|+&4WDAF7wciMB(X`* zptJ$v2~UJQW+<}_r3d#YWAFmr^K60(I4w(M7qCfgX4i42@+|pDxt$%xK4A+x0(bB= z@*CI|_M=h155C0LSra~=)dz?15bGB9!CK|0a0~x}4}>OM?m3$hMpCm2!UAgct*`{{ z(hy5Pb8m$v9H;ytT*m>*UzF8{SY=eU8kKEEWt&miYGmi(%Sx%}VGFaqrhD_1Zov!7 zJ#pLzH!v zo=>-_^w!P8CbFE}5!%HautnLWO>P{Fb=uO#;#9SG3y$Ir=>QGX1{IJ6UbzB7kV7^P zMv^UthsefZI@xN&)){u9p-+W5q|Y*x`G#$V=SW!zZ<1XH-EuQ*ht*ia-ePs)0dcZ4 zTY6G@MtVUSM6?-0APG4*6#Fp13fVCBg>Xyoi(xTeTqJggZ-|{**_2}J(xy&n9@izE zXZnjk+tRtZrI+cm1)v6=f@Lrlx50Y08}_k-@Ud`|{DUBhJrw^6>(jTVxFUhw?|k;0 zE5B*N+h0C?sq2{^c6|8sYV>a0EY)Vyl@n~hbZc{)L>q-Z2#q&XZyBY-;5>c%onHYk zbJnC;g_qagJr~y|pXwRoKd|B0&UAF8j6Sdasb*cJTIH%djHIWn>OpPS%JJ#!)qlHK N?btL={*Ilh^dA@(+{XX_ diff --git a/Vocalization/Vocalization/bin/Debug/Vocalization.pdb b/Vocalization/Vocalization/bin/Debug/Vocalization.pdb index 78db600019b7af3060bd449a4bb1aa634f54c188..4e1c9ca2eb288fafda19cdf1aae0e2864fad5a23 100644 GIT binary patch delta 17643 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 XR0@UgFduao$rT#;qmCo171sQJ%yYZO literal 120072 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 diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.dll b/Vocalization/Vocalization/obj/Debug/Vocalization.dll index 2a95354d6212611712e41f4c37e8e5a268fced93..605be4ac619a2312d825f66abf9e3b2f04c3f624 100644 GIT binary patch delta 2726 zcmaKu3v3is6o${eyEAuYcDuWGmzITXOUo8o+HIMZ)@nf>LY0?7K`d24p&&>}SJz@N z6b7(1Jd9W;5Gq0-0!ko+us#~2L^R?vYQTgL2%uM^T@MZ`x<>k8vv#O9y^hZ1t8|QmfGZW+A6y!JZTb zNHyRZSK@;)FS$z?9`5FzIL8zqs2U~1F)KfQ)*n=Rb0mOBTo%0t58^G02EFzmS-`UrR|!02kKw~Hd~t5rb9n7BzQZxRw~lc; z(T_yGO$-1JB(773$dSmM3-f1y{=R^Q778LUXcI%gLy68bu^$rqImBRw80?Fvg|ZQt zZ3ABTzNV@$Q( z|Gi==@yD#Rue%C(Rk~>eAAv7~s#F&)vEDD@9PzG}O#26#=n?+$(k_SHCj z)tSEPTdoD)Z$Ns)Yqb-qdccno^Tp6|0&6Hfj+)r(xIHT5oinUimE>BpS>qHD`acWTXfw;qsE`7lXuvh#?Z z-0K@%MXn@&8as{7dV|SOEH5NE;A00_4s@}@7@ud51Yw&MS6J~AqS2W2%T3EdKz;=>_8V=?urwCD381V-WY8U<7gt zMQsfP$SH=8SxQ}k^UMt$DYZyCkDc!iwO5W(WKiHrOsGzH+){@sY^4~=MW(>+DYon- zSD6Oi-fydj@*DF&Pou3$Jy)3*nr2(d8Z8UvTdFI(jQzv1pfz0!;I1C970i$V;DZ|} z)#wJr53wej`6eAL1Bdq?$v`4cIR=kj3f|sT#>2OON8YPD%^l4?N=nFx{Qd zK*nf4OQ%Rb?K)PsXm^pNVx=LqSxeikrR~jn0xgV1%|nZXnN+gv@CSPr&IqdKx%wv#O@M9rNSvS=goH zUDre!FnTz>E-jZ|gcr08=FR)^NR62{F=~{{mtjBYWUt{s?N9+8kd+DufgfW8DlkT& z7GoJq!Z^Z;Bds{z@~6Nw^k-VmBUWsNMd-9Z7sh8`htdoip_Nq9t+YnoB9CJaum{=W z>?t-7X?TMtAe$7C8$_cK8l~Sz7bH~<$YJ?md9D1CywN;2F-kU@u1U>fHnY#D*mbuE zsbdFQiT{8AYGE!cf=03)+URC5>2`Qq+K>5m0Qo5Di_n(bGszVWEO{vU!}O>&es9AE z7wZoHU6bsY*GgoA)%twCWL0xJi{W2L>oyeU$|V5Gdi=Bi%$PZ0X5%k|4t6X(Ipw8p vb5FcNe>Zt%i9)ibZb(goUr(67wnWJ6WY*H7BC)MMvGd?4 delta 2680 zcmZvedu&s66vxl`wfE7xcI~farDJ7d8{5iS#@z;Nuqg;E43WTihzJ;PAPC5yOrtPY zP#{A{U|vCBpkVfg2qbDTAxI2M!0?C!h{oXChzft85l12#hvz;U%x=UoA_Q5#1^T^!n8`}V;16_vz_PRO?L*6q0UW$)(07SJymeA&5 z8P;o?FqIp5jS_S<(vN`vo1X%Rl>?x*X=P1%23swDh<%SdKr=<(6@}>!Fmph59NX zC0-I#VsYKg0-nV^Ek)$V#-wz`%LVQ=n*vphAZ_@y@BBffFDwA$wWuV(H$d3&dg}0Z zJ}xI@3hjhwB*w0|fB!z^M9PUy&KkfMFAn<50kVN-Cx1iZVN=xJPwoA7d!O0)~>Vlxva(0UwkM+3!Rsk4SkoDK|sP?SG^w zfubg8Fz~_2UUR)^x$_B>Z-Y|N3@O?_seniYCTR%pA;|`3q(UMU+N6REsGxsP5rK+K zP%-f0q(aM`GG6%5P$CVrNkth_QU9b8B9)k=QsAY@WzI-t1S+#ZB^gjj|Daf^_Ep+T z!I%jf27Fj@zw_sn6Rg~Xk>2g-anj?Ce$3Gmq$eEx6GtCT`fx|T?C2F-sOA-BLZ3n3 zcw^VNG|m_*-BoSkUXa9?ENZQtt#^Y ztASTL#UuGh+Nsr6HI*0}U*CCE4>SiZn1{$H0*x|3snNhkJER(3L!{9*X;g+Z>H$(Y z;7R>N+zV9~!A}cM{wvV@Gx$t@2^>VU{0ORzXw@u6wbSMGmc!qks!|1wkiY=59jo$Rve7rE43wtvL6XPn#8_q)}Lw*Qk`4GD&xrwXuwPG~os zsn9N^|H-bb!rt`oN2aqm$0ZTU#HAR9Z0Up)hEC}u*_Yh9a!Nc+ex;!MQ$1(MzvMnk z_N08C?&@MoQG{)>PUtf12E(3{uWDB()`fIE;nD3+hJH*wt`$tmO@2Q`=Hdx1t_<~j9{h^fNXf*isrgS z*$+3Y=v^k#y0*^GFgeHz%!bUP=MGs>l%gPq+J$EF8a)MvD+|+&4WDAF7wciMB(X`* zptJ$v2~UJQW+<}_r3d#YWAFmr^K60(I4w(M7qCfgX4i42@+|pDxt$%xK4A+x0(bB= z@*CI|_M=h155C0LSra~=)dz?15bGB9!CK|0a0~x}4}>OM?m3$hMpCm2!UAgct*`{{ z(hy5Pb8m$v9H;ytT*m>*UzF8{SY=eU8kKEEWt&miYGmi(%Sx%}VGFaqrhD_1Zov!7 zJ#pLzH!v zo=>-_^w!P8CbFE}5!%HautnLWO>P{Fb=uO#;#9SG3y$Ir=>QGX1{IJ6UbzB7kV7^P zMv^UthsefZI@xN&)){u9p-+W5q|Y*x`G#$V=SW!zZ<1XH-EuQ*ht*ia-ePs)0dcZ4 zTY6G@MtVUSM6?-0APG4*6#Fp13fVCBg>Xyoi(xTeTqJggZ-|{**_2}J(xy&n9@izE zXZnjk+tRtZrI+cm1)v6=f@Lrlx50Y08}_k-@Ud`|{DUBhJrw^6>(jTVxFUhw?|k;0 zE5B*N+h0C?sq2{^c6|8sYV>a0EY)Vyl@n~hbZc{)L>q-Z2#q&XZyBY-;5>c%onHYk zbJnC;g_qagJr~y|pXwRoKd|B0&UAF8j6Sdasb*cJTIH%djHIWn>OpPS%JJ#!)qlHK N?btL={*Ilh^dA@(+{XX_ diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.pdb b/Vocalization/Vocalization/obj/Debug/Vocalization.pdb index 78db600019b7af3060bd449a4bb1aa634f54c188..4e1c9ca2eb288fafda19cdf1aae0e2864fad5a23 100644 GIT binary patch delta 17643 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 literal 0 HcmV?d00001 diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/Game1.cs b/WindowsGame2/WindowsGame2/WindowsGame2/Game1.cs new file mode 100644 index 00000000..e2591f93 --- /dev/null +++ b/WindowsGame2/WindowsGame2/WindowsGame2/Game1.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Audio; +using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework.GamerServices; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +using Microsoft.Xna.Framework.Media; + +namespace WindowsGame2 +{ + /// + /// This is the main type for your game + /// + public class Game1 : Microsoft.Xna.Framework.Game + { + GraphicsDeviceManager graphics; + SpriteBatch spriteBatch; + + public Game1() + { + graphics = new GraphicsDeviceManager(this); + Content.RootDirectory = "Content"; + } + + /// + /// Allows the game to perform any initialization it needs to before starting to run. + /// This is where it can query for any required services and load any non-graphic + /// related content. Calling base.Initialize will enumerate through any components + /// and initialize them as well. + /// + protected override void Initialize() + { + // TODO: Add your initialization logic here + + base.Initialize(); + } + + /// + /// LoadContent will be called once per game and is the place to load + /// all of your content. + /// + protected override void LoadContent() + { + // Create a new SpriteBatch, which can be used to draw textures. + spriteBatch = new SpriteBatch(GraphicsDevice); + + // TODO: use this.Content to load your game content here + } + + /// + /// UnloadContent will be called once per game and is the place to unload + /// all content. + /// + protected override void UnloadContent() + { + // TODO: Unload any non ContentManager content here + } + + /// + /// Allows the game to run logic such as updating the world, + /// checking for collisions, gathering input, and playing audio. + /// + /// Provides a snapshot of timing values. + protected override void Update(GameTime gameTime) + { + // Allows the game to exit + if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) + this.Exit(); + + // TODO: Add your update logic here + + base.Update(gameTime); + } + + /// + /// This is called when the game should draw itself. + /// + /// Provides a snapshot of timing values. + protected override void Draw(GameTime gameTime) + { + GraphicsDevice.Clear(Color.CornflowerBlue); + + // TODO: Add your drawing code here + + base.Draw(gameTime); + } + } +} diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/GameThumbnail.png b/WindowsGame2/WindowsGame2/WindowsGame2/GameThumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..462311aba2cd09de3992129ca43564755249ef09 GIT binary patch literal 5734 zcmV-s7MbaZP)00009a7bBm000XU z000XU0RWnu7ytkYO=&|zP*7-ZbZ>KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde00d`2O+f$vv5tKEQIh}w03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(` z>RI+y?e7jKeZ#YO-C3xi2SK~#9!j9Sf(CP`8>^NiYA4O%WBB!mPPBp!fg;0btt zAr73-g0#aTx+}wsL;QI}W=&5?-BsUDW_tLKxw%E~pa11wNrD6jqW?Jm;ql5IAEm#5 z$9LO5&(HEDPM3MUw|`&WuK+wRGXTqgCD|$h@vxaC-6iaO08#)7m*Cab@Y7Gf|EGWahjNuYC!Uu1SPmX$ zRKZa~B)u0GJ63iSWBS_wv_J{Iu86n* z+iEp%MO+3LbOOzsIQ{BnbSi*mP0I5Qqa6$Zc`cb-QEWiVRJ9`@1Z6k01_4Hgp=J}W zxQbzhO2be_5cELx19|#l_`rve7IP`RN32rlR&Oxm7A(W<%X?4kmjeN7SY&n>>hbA6 z5mDH^Lia}Il|2Rsb>Lt!SR}ntg=a`cfuzdkTIq<8a-q4q-vbFov5f0_P62NA2ZIoc z*%~O}4rb4coqk&YGJrWp!PpYQ&QLUOVsH1{D8@p2*qZCL4M@)D!tSVo@hI8y)`6U% z#~aqO!;bd;weh5r4S8Wzr#vz?<5!;+l<>4IY{a4CDH{1H^Ldgb9{`^F{UbO}boI#a zxt_%BjFZi+x3B{0&ef(1`m2#k+CyJ@pl!p_=27nrJ=@Aj8Qb`wl4P}naC%fvBxXOh zE}ub;CsFS9ZEWvERRORrpgIp}lB%>_<5?6b6A8B>o}a1uCFgVDC)n6i$VVmHFEi*4 zspD0xh-+rnK=Yms<33sy(}?Y8w`EpWl`qRjT6p=km(c4lqdcGBoo77eA4{XR4x(+; zT5FvVagKyXT4^BBr4a>eBQPgr|lrZJ{vr#)K;59A$FS+4a|M=b&wcqh%8W#KjPqqOzVmZU+}cULFp zC=;KRH;Z2_*D4dy^nWkN6Q+FdFIQQTs%70(?Mdxrz3b$?WrPK;7IS*R8_L+`#%@<0 z^GLZ?l*yW>V1_p`3(I${wbuKtvJb}U)r>VmQ2NAaR8@!*Qa8Nr-t8QRgUUA4Yx7>N zN`RhSj$7JsG(?UWpc{Ql(oFRSYGqEcaojQ*gC$eB&8>CL_!4A9LSC0D818%`mU zOD3s>iQo#TwSL}pG04MY`xKhCx4N$ih5{oCl|!aMn&4UPtKiP z!T6N*S=AtFtBJWnJ{q47>~nHI;4%rSq+yMi@@(*0@RA+1dh?f@h+yJKqZC>IYgJY4 zr8QKHCS3U7w~v|D+eEna2lR=|y&OAx)BfeT>Wb^~Xv>>OUaKsbd{Ojjty0qg+APkj z;}1mepg^4}er^5HNK1!sTN1rzprI~6H1t8OB2RvN-?d7x(8RT&s?_ci1BeI)xkS;a z#Ir4e;Kf#K8qJ$HtT&#^DN{a@95KDHqS_(%Kw_UKx7KER4m1l!_ZF1%4pK>;@n4BZ7 za$Q%nt)Q%x5rK#gO1kg6--Kk)Ri0nYq%VO;vE7hBG9$S@%_iHtgq$oL$<+nf(WaX+ z9x>~`e0*GSWeUniPYuRL`S`r=s@l_xghm|FS5s745s#t9b+2}BgTYY$xDEQ}cEVI? zW6%wJe0((VI5!6KoPC<-OZo7pt9qjpgdxSRLh!1b(!=lBb2k9Cb``vHA)k9oiT1Q* zMsz*-Dy3~ZIMIsfe!gs>pp;U-eIHV9s8%qEMf;XSNr@tu59P@|n+md`<(C~DlhLOd z^180AxpLQupF3==cCPEb?+&mhFPd|`ZI|VVwG(pcil?k)_~q%z$-#E@bzLpMoC3Y_ z#?H&-4HB-nZrpYw2h2jdy$Mx~PTRY>{h}hgy8MM=ZK_0!O}n9|zu4`y?>rKGAiUe|`DP#Y%^mG)U>+{nx6GX;)ueDwi-xqA ztbfsRe9+k4?>kH97coJe?bl?#J7tRo$0pw~pQn*}4fUPSJ_5R3UYitZq!b zZA@`E`^JFL{tT}1$bRk!Y(UCg2szb@F@RxO@Hqd%=P8RM=C?;kLrAtC^2;jsg2Ri4 z3W`(xJa#;ul|9$cWZJQLzU7M_HT%?0rMlAHd)$+9Rc5{B4cudrITOgw!ysEFPEK^+ zH6n7s_HlwQfSgfHb;w8F^>`#k;IuzLB5!;=PKz80)Ol#){3S82KEKzxonY{BF<+0o z+@GJF+jLct@4dU%K;FuIbGu)T3qAJ2w<8pNl!1NU_Z5NMVepoA>CalLsyc^|9y@K@ zx8n)<+aITV_LU6suuB>vo4ncBOj$oCjl;aq-9jf5CR%%r#yL zxvKv~YkY~A#t(ir_fS<4Z4Cx+f8O_f z2csP@Nyh6`W7|8q2^{-V16#}1+x<8m@t7(fA$S8sXIZFO9Ah&I6%}>Agj)}hYU-DM zD>E5QRPN%gq+s;ZQ75zYuQxD%0WIrYsiM}1Xz7%>|5U3-$W)x7Bve3RKm0FA%+z=``jyE#Nm;{~HSbt0f%+t=zXVYLP{89_#}6LZ*M5 z{eIC&@S_FzH(LKZ%qqLDp>*}F!r@0(emi&RcTVyH-xH6}@kiEwHTrvOZp{UVU^^wj zeXxEWkNKi}zr?#=wdBhM_(wq)BCOT=fNUW6a$MW*+QY9U!w(nmYgYcSQ|2R8w*CJD Y0L3g3-xp*i%>V!Z07*qoM6N<$f>>Wb>;M1& literal 0 HcmV?d00001 diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/Program.cs b/WindowsGame2/WindowsGame2/WindowsGame2/Program.cs new file mode 100644 index 00000000..78293cc9 --- /dev/null +++ b/WindowsGame2/WindowsGame2/WindowsGame2/Program.cs @@ -0,0 +1,21 @@ +using System; + +namespace WindowsGame2 +{ +#if WINDOWS || XBOX + static class Program + { + /// + /// The main entry point for the application. + /// + static void Main(string[] args) + { + using (Game1 game = new Game1()) + { + game.Run(); + } + } + } +#endif +} + diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/Properties/AssemblyInfo.cs b/WindowsGame2/WindowsGame2/WindowsGame2/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..24cd1d9c --- /dev/null +++ b/WindowsGame2/WindowsGame2/WindowsGame2/Properties/AssemblyInfo.cs @@ -0,0 +1,34 @@ +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("WindowsGame2")] +[assembly: AssemblyProduct("WindowsGame2")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyCopyright("Copyright © 2018")] +[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. Only Windows +// assemblies support COM. +[assembly: ComVisible(false)] + +// On Windows, the following GUID is for the ID of the typelib if this +// project is exposed to COM. On other platforms, it unique identifies the +// title storage container when deploying this assembly to the device. +[assembly: Guid("48a8e271-b5cf-4290-8c04-37c352a3f15c")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("1.0.0.0")] \ No newline at end of file diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/WindowsGame2.csproj b/WindowsGame2/WindowsGame2/WindowsGame2/WindowsGame2.csproj new file mode 100644 index 00000000..90b71993 --- /dev/null +++ b/WindowsGame2/WindowsGame2/WindowsGame2/WindowsGame2.csproj @@ -0,0 +1,85 @@ + + + {48A8E271-B5CF-4290-8C04-37C352A3F15C} + {6D335F3A-9D43-41b4-9D22-F6F17C4BE596};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Debug + x86 + WinExe + Properties + WindowsGame2 + WindowsGame2 + v4.0 + Client + v4.0 + Windows + Reach + 6e015d12-6141-4a91-b036-a111000be29c + Game + Game.ico + GameThumbnail.png + + + true + full + false + bin\x86\Debug + DEBUG;TRACE;WINDOWS + prompt + 4 + true + false + x86 + false + + + pdbonly + true + bin\x86\Release + TRACE;WINDOWS + prompt + 4 + true + false + x86 + true + + + + + + + + + + + + + + + + + + + + + + true + + + + + WindowsGame2Content + Content + + + + + + \ No newline at end of file diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/WindowsGame2.csproj.Debug.cachefile b/WindowsGame2/WindowsGame2/WindowsGame2/WindowsGame2.csproj.Debug.cachefile new file mode 100644 index 00000000..f8506c6d --- /dev/null +++ b/WindowsGame2/WindowsGame2/WindowsGame2/WindowsGame2.csproj.Debug.cachefile @@ -0,0 +1,2 @@ +Content\NoEffect.xnb +Content\GreyScaleEffect.xnb diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Content/GreyScaleEffect.xnb b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Content/GreyScaleEffect.xnb new file mode 100644 index 0000000000000000000000000000000000000000..4920b794b9f2e306808d2b9a597282936c799dd7 GIT binary patch literal 1468 zcmb7EzfTiU9Di4emLFOM5*}Z%V z<*o9}G+f7X>b|yS>)O1lZ}XPpZfOO__POnAPwRDV_$yqmaW|n}^EyTnre}ITfWn%mVMo=@mBSfY1f>VSHcmdu2$s1 zR!c75EgQPU!xPr(JFM61Q9leFS7-=8OX3cYTHgcWXxKiGX4wT&pPzvvz;6>V-~12|g@A-?Uo{-dabf#A7up7eG1PY`3t>2pTl1Lok6hLc zdr*R!uaS>t7S?Bs@?)C=7R&(wQ(%fqgu%hNFF~f-RcUJj`+j@U)⁡)BHXH>Arji zAA|A7PUr`83hc+8N!#xM+d1UR2d+-9+*22p%1dfEWwqdJH%yDW>a3P}pv`7dS}L1P zV=KK2p|V2dNuJ)~A{D~@ru3v^-)a$vCmHO6>}fC&-YMoVjvna?so|}s)|3C=#*3g- zy!+wc;8AY$*5fawpE=5SCmc%~)eoiIVX=5OAG8yP{q&HAg@Z9 z?4R1$%Mflr-~+#Is7K)=$hV6G!MYN}_5BsfLGi&lUJLXfZ;+dG^zaXv>Wk1G3;Jx+ Ge~~|A`58+9 literal 0 HcmV?d00001 diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Content/NoEffect.xnb b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Content/NoEffect.xnb new file mode 100644 index 0000000000000000000000000000000000000000..e9765352f0d30732e405d3aaee65a44c717ca62a GIT binary patch literal 1020 zcmb7CF>ljA6uzV>3KS_F7&=tq28JRz5A~KMKrcz54H7R7UR9yR_SaE&fY%4`# z=*YkT;tzDs(t(j5z{biC=nv?~fMUL9J5_|#foFa9y?1{1?%jKDaL}BtvOg<~<-X)z zxwevl9ERG!x3nE)orspbB0C`obRh?z>1-**cveP>ei4 zXE%U_>}Cr2JYUkkX8IQR(b9gVvKX?^KTzO&9M9u1Yd4QNbS9*L5TcL3D)0%QJPd4p z1Gk=;M*&J}x^3PIBL}T9+aef;a$@#EOF3d{zHxm=PJ<3wsNZg6jWrKs+FEUR#%43h zgCSFc@&mWQ^!_fG@_7rUUmljOdnUZzh$dnu^6e1qM(!&>A$bGblHBP^y(w)s?&RYE!O`5kofO<&r$VPp58;r3_ z-c9>8fCRHRE3o^xo4!;g!Lfc^`TsN?rcXV`Eti@8nH5VH&E(n=_OC8k@#+Hipd^WX Lp6JC?rz!jkJi*7? literal 0 HcmV?d00001 diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Game.dll b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Game.dll new file mode 100644 index 0000000000000000000000000000000000000000..9ba4aa23b347a65f90979d58ad155b2e573c21bd GIT binary patch literal 74752 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 + + + + A game component that is notified when it needs to draw itself. + + + Creates a new instance of DrawableGameComponent. + The Game that the game component should be attached to. + + + Releases the unmanaged resources used by the DrawableGameComponent and optionally releases the managed resources. + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + Called when the DrawableGameComponent needs to be drawn. Override this method with component-specific drawing code. Reference page contains links to related conceptual articles. + Time passed since the last call to Draw. + + + Order in which the component should be drawn, relative to other components that are in the same GameComponentCollection. Reference page contains code sample. + + + Raised when the DrawOrder property changes. + + + + The GraphicsDevice the DrawableGameComponent is associated with. + + + Initializes the component. Override this method to load any non-graphics resources and query for any required services. + + + Called when graphics resources need to be loaded. Override this method to load any component-specific graphics resources. + + + Called when the DrawOrder property changes. Raises the DrawOrderChanged event. + The DrawableGameComponent. + Arguments to the DrawOrderChanged event. + + + Called when the Visible property changes. Raises the VisibleChanged event. + The DrawableGameComponent. + Arguments to the VisibleChanged event. + + + Called when graphics resources need to be unloaded. Override this method to unload any component-specific graphics resources. + + + Indicates whether Draw should be called. + + + Raised when the Visible property changes. + + + + Provides basic graphics device initialization, game logic, and rendering code. + + + Initializes a new instance of this class, which provides basic graphics device initialization, game logic, rendering code, and a game loop. Reference page contains code sample. + + + Raised when the game gains focus. + + + + Starts the drawing of a frame. This method is followed by calls to Draw and EndDraw. + + + Called after all components are initialized but before the first update in the game loop. + + + Gets the collection of GameComponents owned by the game. + + + Gets or sets the current ContentManager. + + + Raised when the game loses focus. + + + + Immediately releases the unmanaged resources used by this object. + + + Releases all resources used by the Game class. + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + Raised when the game is being disposed. + + + + Reference page contains code sample. + Time passed since the last call to Draw. + + + Ends the drawing of a frame. This method is preceeded by calls to Draw and BeginDraw. + + + Called after the game loop has stopped running before exiting. + + + Exits the game. + + + Raised when the game is exiting. + + + + Allows a Game to attempt to free resources and perform other cleanup operations before garbage collection reclaims the Game. + + + Gets the current GraphicsDevice. + + + Gets or sets the time to sleep when the game is inactive. + + + Called after the Game and GraphicsDevice are created, but before LoadContent. Reference page contains code sample. + + + Indicates whether the game is currently the active application. + + + Gets or sets a value indicating whether to use fixed time steps. + + + Gets or sets a value indicating whether the mouse cursor should be visible. + + + Gets the start up parameters in LaunchParameters. + + + + + + Raises the Activated event. Override this method to add code to handle when the game gains focus. + The Game. + Arguments for the Activated event. + + + Raises the Deactivated event. Override this method to add code to handle when the game loses focus. + The Game. + Arguments for the Deactivated event. + + + Raises an Exiting event. Override this method to add code to handle when the game is exiting. + The Game. + Arguments for the Exiting event. + + + Resets the elapsed time counter. + + + Call this method to initialize the game, begin running the game loop, and start processing events for the game. + + + Run the game through what would happen in a single tick of the game clock; this method is designed for debugging only. + + + Gets the GameServiceContainer holding all the service providers attached to the Game. + + + This is used to display an error message if there is no suitable graphics device or sound card. + The exception to display. + + + Prevents calls to Draw until the next Update. + + + Gets or sets the target time between calls to Update when IsFixedTimeStep is true. Reference page contains links to related code samples. + + + Updates the game's clock and calls Update and Draw. + + + Called when graphics resources need to be unloaded. Override this method to unload any game-specific graphics resources. + + + Reference page contains links to related conceptual articles. + Time passed since the last call to Update. + + + Gets the underlying operating system window. + + + Base class for all XNA Framework game components. + + + Initializes a new instance of this class. + Game that the game component should be attached to. + + + Immediately releases the unmanaged resources used by this object. + + + Releases the unmanaged resources used by the GameComponent and optionally releases the managed resources. + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + Raised when the GameComponent is disposed. + + + + Indicates whether GameComponent.Update should be called when Game.Update is called. + + + Raised when the Enabled property changes. + + + + Allows a GameComponent to attempt to free resources and perform other cleanup operations before garbage collection reclaims the GameComponent. + + + Gets the Game associated with this GameComponent. + + + Reference page contains code sample. + + + Called when the Enabled property changes. Raises the EnabledChanged event. + The GameComponent. + Arguments to the EnabledChanged event. + + + Called when the UpdateOrder property changes. Raises the UpdateOrderChanged event. + The GameComponent. + Arguments to the UpdateOrderChanged event. + + + Called when the GameComponent needs to be updated. Override this method with component-specific update code. + Time elapsed since the last call to Update + + + Indicates the order in which the GameComponent should be updated relative to other GameComponent instances. Lower values are updated first. + + + Raised when the UpdateOrder property changes. + + + + A collection of game components. + + + Initializes a new instance of this class. + + + Raised when a component is added to the GameComponentCollection. + + + + Raised when a component is removed from the GameComponentCollection. + + + + Arguments used with events from the GameComponentCollection. + + + Creates a new instance of GameComponentCollectionEventArgs. + The game component affected by the event. + + + The game component affected by the event. + + + A collection of game services. + + + Initializes a new instance of this class, which represents a collection of game services. + + + Adds a service to the GameServiceContainer. + The type of service to add. + The service provider to add. + + + Gets the object providing a specified service. + The type of service. + + + Removes the object providing a specified service. + The type of service. + + + Snapshot of the game timing state expressed in values that can be used by variable-step (real time) or fixed-step (game time) games. + + + Creates a new instance of GameTime. + + + Creates a new instance of GameTime. + The amount of game time since the start of the game. + The amount of elapsed game time since the last update. + + + Creates a new instance of GameTime. + The amount of game time since the start of the game. + The amount of elapsed game time since the last update. + Whether the game is running multiple updates this frame. + + + The amount of elapsed game time since the last update. + + + Gets a value indicating that the game loop is taking longer than its TargetElapsedTime. In this case, the game loop can be considered to be running too slowly and should do something to "catch up." + + + The amount of game time since the start of the game. + + + The system window associated with a Game. + + + Specifies whether to allow the user to resize the game window. + + + Starts a device transition (windowed to full screen or vice versa). + Specifies whether the device will be in full-screen mode upon completion of the change. + + + The screen dimensions of the game window's client rectangle. + + + Raised when the size of the GameWindow changes. + + + + Gets the current display orientation, which reflects the physical orientation of the phone in the user's hand. + + + Completes a device transition. + The desktop screen to move the window to. This should be the screen device name of the graphics device that has transitioned to full screen. + + + Completes a device transition. + The desktop screen to move the window to. This should be the screen device name of the graphics device that has transitioned to full screen. + The new width of the game's client window. + The new height of the game's client window. + + + Gets the handle to the system window. + + + Called when the GameWindow gets focus. + + + Called when the size of the client window changes. Raises the ClientSizeChanged event. + + + Called when the GameWindow loses focus. + + + Called when the GameWindow display orientation changes. + + + Called when the GameWindow needs to be painted. + + + Called when the GameWindow is moved to a different screen. Raises the ScreenDeviceNameChanged event. + + + Describes the event raised when the display orientation of the GameWindow changes. When this event occurs, the XNA Framework automatically adjusts the game orientation based on the value specified by the developer with SupportedOrientations. + + + + Gets the device name of the screen the window is currently in. + + + Raised when the GameWindow moves to a different display. + + + + Sets the supported display orientations. + A set of supported display orientations. + + + Sets the title of the GameWindow. + The new title of the GameWindow. + + + Gets and sets the title of the system window. + + + Holds the settings for creating a graphics device on Windows. + + + Initializes a new instance of this class. + + + Specifies which graphics adapter to create the device on. + + + Creates a clone of this object. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The Object to compare with the current GraphicsDeviceInformation. + + + Gets the hash code for this object. + + + Gets the graphics profile, which determines the graphics feature set. + + + Specifies the presentation parameters to use when creating a graphics device. + + + Handles the configuration and management of the graphics device. + + + Creates a new GraphicsDeviceManager and registers it to handle the configuration and management of the graphics device for the specified Game. + Game the GraphicsDeviceManager should be associated with. + + + Applies any changes to device-related properties, changing the graphics device as necessary. + + + Determines whether the given GraphicsDeviceInformation is compatible with the existing graphics device. + Information describing the desired device configuration. + + + Specifies the default minimum back-buffer height. + + + Specifies the default minimum back-buffer width. + + + Raised when a new graphics device is created. + + + + Raised when the GraphicsDeviceManager is being disposed. + + + + Raised when the GraphicsDeviceManager is reset. + + + + Raised when the GraphicsDeviceManager is about to be reset. + + + + Releases the unmanaged resources used by the GraphicsDeviceManager and optionally releases the managed resources. + true to release both automatic and manual resources; false to release only manual resources. + + + Raised when the GraphicsDeviceManager is disposed. + + + + Finds the best device configuration that is compatible with the current device preferences. + true if the FindBestDevice can select devices from any available adapter; false if only the current adapter should be considered. + + + Gets the GraphicsDevice associated with the GraphicsDeviceManager. + + + Gets the graphics profile, which determines the graphics feature set. + + + Gets or sets a value that indicates whether the device should start in full-screen mode. + + + Prepares the GraphicsDevice to draw. + + + Called to ensure that the device manager has created a valid device. + + + Called by the game at the end of drawing and presents the final rendering. + + + Called when a device is created. Raises the DeviceCreated event. + The GraphicsDeviceManager. + Arguments for the DeviceCreated event. + + + Called when a device is being disposed. Raises the DeviceDisposing event. + The GraphicsDeviceManager. + Arguments for the DeviceDisposing event. + + + Called when the device has been reset. Raises the DeviceReset event. + The GraphicsDeviceManager. + Arguments for the DeviceReset event. + + + Called when the device is about to be reset. Raises the DeviceResetting event. + The GraphicsDeviceManager. + Arguments for the DeviceResetting event. + + + Called when the GraphicsDeviceManager is changing the GraphicsDevice settings (during reset or recreation of the GraphicsDevice). Raises the PreparingDeviceSettings event. + The GraphicsDeviceManager. + The graphics device information to modify. + + + + + + Gets or sets the format of the back buffer. + + + Gets or sets the preferred back-buffer height. + + + Gets or sets the preferred back-buffer width. + + + Gets or sets the format of the depth stencil. + + + Raised when the GraphicsDeviceManager is changing the GraphicsDevice settings (during reset or recreation of the GraphicsDevice). + + + + Ranks the given list of devices that satisfy the given preferences. + The list of devices to rank. + + + Gets or sets the display orientations that are available if automatic rotation and scaling is enabled. + + + Gets or sets a value that indicates whether to sync to the vertical trace (vsync) when presenting the back buffer. + + + Releases all resources used by the GraphicsDeviceManager class. + + + Toggles between full screen and windowed mode. + + + Defines the interface for a drawable game component. + + + Draws the IDrawable. Reference page contains links to related conceptual articles. + Snapshot of the game's timing state. + + + The order in which to draw this object relative to other objects. Objects with a lower value are drawn first. + + + Raised when the DrawOrder property changes. + + + + Indicates whether IDrawable.Draw should be called in Game.Draw for this game component. + + + Raised when the Visible property changes. + + + + Defines an interface for game components. + + + Called when the component should be initialized. This method can be used for tasks like querying for services the component needs and setting up non-graphics resources. + + + Defines the interface for an object that manages a GraphicsDevice. + + + Starts the drawing of a frame. + + + Called to ensure that the device manager has created a valid device. + + + Called by the game at the end of drawing; presents the final rendering. + + + Defines an interface for a game component that should be updated in Game.Update. + + + Indicates whether the game component's Update method should be called in Game.Update. + + + Raised when the Enabled property changes. + + + + Called when the game component should be updated. + Snapshot of the game's timing state. + + + Indicates when the game component should be updated relative to other game components. Lower values are updated first. + + + Raised when the UpdateOrder property changes. + + + + The start up parameters for launching a Windows Phone or Windows game. + + + Initializes a new instance of LaunchParameters. + + + Arguments for the GraphicsDeviceManager.PreparingDeviceSettings event. + + + Creates a new instance of PreparingDeviceSettingsEventArgs. + Information about the GraphicsDevice. + + + Information about the GraphicsDevice. + + + Wraps the functionality of the GamerServicesDispatcher. + + + Creates a new GamerServicesComponent. + The game that will be associated with this component. + + + Initializes the GamerServicesDispatcher. + + + Updates the GamerServicesDispatcher. + The game timing state. + + + \ No newline at end of file diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.GamerServices.dll b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.GamerServices.dll new file mode 100644 index 0000000000000000000000000000000000000000..86b73866c013c95036008147b731d8f7db6d6cdd GIT binary patch literal 73728 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 YOz7WtCmF!ZEA=WBs}KJE-p#=O2Wbo{OaK4? literal 0 HcmV?d00001 diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.GamerServices.xml b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.GamerServices.xml new file mode 100644 index 00000000..50a5cc57 --- /dev/null +++ b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/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/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Graphics.dll b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Graphics.dll new file mode 100644 index 0000000000000000000000000000000000000000..1bf4852d68bea198ae23f684aaea2cd286fc84f5 GIT binary patch literal 427520 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 z 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

e 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

Contains a configurable effect that supports alpha testing. + + + Creates a new AlphaTestEffect by cloning parameter settings from an existing instance. + A copy of an AlphaTestEffect. + + + Creates a new AlphaTestEffect with default parameter settings. + A graphics device. + + + Gets or sets the material alpha which determines its transparency. Range is between 1 (fully opaque) and 0 (fully transparent). + + + Gets or sets the compare function for alpha test. The default value is Greater. + + + Creates a clone of the current AlphaTestEffect instance. + + + Gets or sets the diffuse color for a material, the range of color values is from 0 to 1. + + + Gets or sets the fog color, the range of color values is from 0 to 1. + + + Gets or sets the fog enable flag. + + + Gets or sets the maximum z value for fog. + + + Gets or sets the minimum z value for fog. + + + Computes derived parameter values immediately before applying the effect using a lazy architecture. + + + Gets or sets the projection matrix. + + + Gets or sets the reference alpha value, the default value is 0. + + + Gets or sets the current texture. + + + Gets or sets whether vertex color is enabled. + + + Gets or sets the view matrix. + + + Gets or sets the world matrix. + + + Contains a basic rendering effect. + + + Creates an instance of this object. + An instance of a object to copy initialization data from. + + + Creates an instance of this object. + A device. + + + Gets or sets the material alpha which determines its transparency. Range is between 1 (fully opaque) and 0 (fully transparent). + + + Gets or sets the ambient color for a light, the range of color values is from 0 to 1. + + + Create a copy of this object. + + + Gets or sets the diffuse color for a material, the range of color values is from 0 to 1. + + + Gets the first directional light for this effect. + + + Gets the second directional light for this effect. + + + Gets the third directional light for this effect. + + + Gets or sets the emissive color for a material, the range of color values is from 0 to 1. + + + Enables default lighting for this effect. + + + Gets or sets the fog color, the range of color values is from 0 to 1. + + + Enables fog. + + + Gets or sets the maximum z value for fog. + + + Gets or sets the minimum z value for fog. + + + Enables lighting for this effect. + + + Computes derived parameter values immediately before applying the effect. + + + Gets or sets a value indicating that per-pixel lighting should be used if it is available for the current adapter. Per-pixel lighting is available if a graphics adapter supports Pixel Shader Model 2.0. + + + + + + Gets or sets the specular color for a material, the range of color values is from 0 to 1. + + + Gets or sets the specular power of this effect material. + + + Gets or sets a texture to be applied by this effect. + + + Enables textures for this effect. + + + Enables use vertex colors for this effect. + + + + + + + + + Defines color blending factors. + + + Each component of the color is multiplied by a constant set in BlendFactor. + + + Each component of the color is multiplied by the alpha value of the destination. This can be represented as (Ad, Ad, Ad, Ad), where Ad is the destination alpha value. + + + Each component color is multiplied by the destination color. This can be represented as (Rd, Gd, Bd, Ad), where R, G, B, and A respectively stand for red, green, blue, and alpha destination values. + + + Each component of the color is multiplied by the inverse of a constant set in BlendFactor. + + + Each component of the color is multiplied by the inverse of the alpha value of the destination. This can be represented as (1 − Ad, 1 − Ad, 1 − Ad, 1 − Ad), where Ad is the alpha destination value. + + + Each component of the color is multiplied by the inverse of the destination color. This can be represented as (1 − Rd, 1 − Gd, 1 − Bd, 1 − Ad), where Rd, Gd, Bd, and Ad respectively stand for the red, green, blue, and alpha destination values. + + + Each component of the color is multiplied by the inverse of the alpha value of the source. This can be represented as (1 − As, 1 − As, 1 − As, 1 − As), where As is the alpha destination value. + + + Each component of the color is multiplied by the inverse of the source color. This can be represented as (1 − Rs, 1 − Gs, 1 − Bs, 1 − As) where R, G, B, and A respectively stand for the red, green, blue, and alpha destination values. + + + Each component of the color is multiplied by (1, 1, 1, 1). + + + Each component of the color is multiplied by the alpha value of the source. This can be represented as (As, As, As, As), where As is the alpha source value. + + + Each component of the color is multiplied by either the alpha of the source color, or the inverse of the alpha of the source color, whichever is greater. This can be represented as (f, f, f, 1), where f = min(A, 1 − Ad). + + + Each component of the color is multiplied by the source color. This can be represented as (Rs, Gs, Bs, As), where R, G, B, and A respectively stand for the red, green, blue, and alpha source values. + + + Each component of the color is multiplied by (0, 0, 0, 0). + + + Defines how to combine a source color with the destination color already on the render target for color blending. + + + The result is the destination added to the source. Result = (Source Color * Source Blend) + (Destination Color * Destination Blend) + + + The result is the maximum of the source and destination. Result = max( (Source Color * Source Blend), (Destination Color * Destination Blend) ) + + + The result is the minimum of the source and destination. Result = min( (Source Color * Source Blend), (Destination Color * Destination Blend) ) + + + The result is the source subtracted from the destination. Result = (Destination Color * Destination Blend) − (Source Color * Source Blend) + + + The result is the destination subtracted from the source. Result = (Source Color * Source Blend) − (Destination Color * Destination Blend) + + + Contains blend state for the device. + + + Creates an instance of the BlendState class with default values, using additive color and alpha blending. + + + A built-in state object with settings for additive blend that is adding the destination data to the source data without using alpha. + + + A built-in state object with settings for alpha blend that is blending the source and destination data using alpha. + + + Gets or sets the arithmetic operation when blending alpha values. The default is BlendFunction.Add. + + + Gets or sets the blend factor for the destination alpha, which is the percentage of the destination alpha included in the blended result. The default is Blend.One. + + + Gets or sets the alpha blend factor. The default is Blend.One. + + + Gets or sets the four-component (RGBA) blend factor for alpha blending. + + + Gets or sets the arithmetic operation when blending color values. The default is BlendFunction.Add. + + + Gets or sets the blend factor for the destination color. The default is Blend.One. + + + Gets or sets the blend factor for the source color. The default is Blend.One. + + + Gets or sets which color channels (RGBA) are enabled for writing during color blending. The default value is ColorWriteChannels.None. + + + Gets or sets which color channels (RGBA) are enabled for writing during color blending. The default value is ColorWriteChannels.None. + + + Gets or sets which color channels (RGBA) are enabled for writing during color blending. The default value is ColorWriteChannels.None. + + + Gets or sets which color channels (RGBA) are enabled for writing during color blending. The default value is ColorWriteChannels.None. + + + Immediately releases the unmanaged resources used by this object. + [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + Gets or sets a bitmask which defines which samples can be written during multisampling. The default is 0xffffffff. + + + A built-in state object with settings for blending with non-premultipled alpha that is blending source and destination data by using alpha while assuming the color data contains no alpha information. + + + A built-in state object with settings for opaque blend that is overwriting the source with the destination data. + + + Specifies special usage of the buffer contents. + + + None + + + Indicates that the application only writes to the vertex buffer. If specified, the driver chooses the best memory location for efficient writing and rendering. Attempts to read from a write-only vertex buffer fail. + + + Specifies the buffer to use when calling Clear. + + + A depth buffer. + + + A stencil buffer. + + + A render target. + + + Defines the color channels that can be chosen for a per-channel write to a render target color buffer. + + + All buffer channels. + + + Alpha channel of a buffer. + + + Blue channel of a buffer. + + + Green channel of a buffer. + + + No channel selected. + + + Red channel of a buffer. + + + Defines comparison functions that can be chosen for alpha, stencil, or depth-buffer tests. + + + Always pass the test. + + + Accept the new pixel if its value is equal to the value of the current pixel. + + + Accept the new pixel if its value is greater than the value of the current pixel. + + + Accept the new pixel if its value is greater than or equal to the value of the current pixel. + + + Accept the new pixel if its value is less than the value of the current pixel. + + + Accept the new pixel if its value is less than or equal to the value of the current pixel. + + + Always fail the test. + + + Accept the new pixel if its value does not equal the value of the current pixel. + + + Defines the faces of a cube map in the TextureCube class type. + + + Negative x-face of the cube map. + + + Negative y-face of the cube map. + + + Negative z-face of the cube map. + + + Positive x-face of the cube map. + + + Positive y-face of the cube map. + + + Positive z-face of the cube map. + + + Defines winding orders that may be used to identify back faces for culling. + + + Cull back faces with clockwise vertices. + + + Cull back faces with counterclockwise vertices. + + + Do not cull back faces. + + + Defines the format of data in a depth-stencil buffer. Reference page contains links to related conceptual articles. + + + A buffer that contains 16-bits of depth data. + + + A buffer that contains 24-bits of depth data. + + + A 32 bit buffer that contains 24 bits of depth data and 8 bits of stencil data. + + + Do not create a depth buffer. + + + Contains depth-stencil state for the device. + + + Creates an instance of DepthStencilState with default values. + + + Gets or sets the stencil operation to perform if the stencil test passes and the depth-buffer test fails for a counterclockwise triangle. The default is StencilOperation.Keep. + + + Gets or sets the stencil operation to perform if the stencil test fails for a counterclockwise triangle. The default is StencilOperation.Keep. + + + Gets or sets the comparison function to use for counterclockwise stencil tests. The default is CompareFunction.Always. + + + Gets or sets the stencil operation to perform if the stencil and depth-tests pass for a counterclockwise triangle. The default is StencilOperation.Keep. + + + A built-in state object with default settings for using a depth stencil buffer. + + + Enables or disables depth buffering. The default is true. + + + Gets or sets the comparison function for the depth-buffer test. The default is CompareFunction.LessEqual + + + Enables or disables writing to the depth buffer. The default is true. + + + A built-in state object with settings for enabling a read-only depth stencil buffer. + + + Immediately releases the unmanaged resources used by this object. + [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + A built-in state object with settings for not using a depth stencil buffer. + + + Specifies a reference value to use for the stencil test. The default is 0. + + + Gets or sets the stencil operation to perform if the stencil test passes and the depth-test fails. The default is StencilOperation.Keep. + + + Gets or sets stencil enabling. The default is false. + + + Gets or sets the stencil operation to perform if the stencil test fails. The default is StencilOperation.Keep. + + + Gets or sets the comparison function for the stencil test. The default is CompareFunction.Always. + + + Gets or sets the mask applied to the reference value and each stencil buffer entry to determine the significant bits for the stencil test. The default mask is Int32.MaxValue. + + + Gets or sets the stencil operation to perform if the stencil test passes. The default is StencilOperation.Keep. + + + Gets or sets the write mask applied to values written into the stencil buffer. The default mask is Int32.MaxValue. + + + Enables or disables two-sided stenciling. The default is false. + + + The exception that is thrown when the device has been lost, but cannot be reset at this time. Therefore, rendering is not possible. + + + Initializes a new instance of this class. + + + Initializes a new instance of this class with a specified error message. + A message that describes the error. + + + Initializes a new instance of this class with a specified error message and a reference to the inner exception that is the cause of this exception. + A message that describes the error. + The exception that is the cause of the current exception. If the inner parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception. + + + The exception that is thrown when the device has been lost, but can be reset at this time. + + + Initializes a new instance of this class. + + + Initializes a new instance of this class with a specified error message. + A message that describes the error. + + + Initializes a new instance of this class with a specified error message and a reference to the inner exception that is the cause of this exception. + A message that describes the error. + The exception that is the cause of the current exception. If the inner parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception. + + + Creates a DirectionalLight object. + + + Creates a new DirectionalLight instance, with or without a copy of a DirectionalLight instance. + The light direction. + The diffuse color. + The specular color. + The cloned instance to copy from. + + + Gets or sets the diffuse color of the light. + + + Gets or sets the light direction. This value must be a unit vector. + + + Gets or sets light enable flag. + + + Gets or sets the specular color of the light. + + + Describes the display mode. + + + Gets the aspect ratio used by the graphics device. + + + Gets a value indicating the surface format of the display mode. + + + Gets a value indicating the screen height, in pixels. + + + Returns the title safe area of the display. + + + Retrieves a string representation of this object. + + + Gets a value indicating the screen width, in pixels. + + + Manipulates a collection of DisplayMode structures. + + + Gets an enumerator that can iterate through the DisplayModeCollection. + + + Retrieves the DisplayMode structure with the specified format. + The format of the DisplayMode to retrieve. + + + Gets a collection of display modes available for this format. + + + Contains a configurable effect that supports two-layer multitexturing. + + + Creates a new DualTextureEffect by cloning parameter settings from an existing instance. + The object to clone. + + + Creates a new DualTextureEffect with default parameter settings. + The graphics device. + + + Gets or sets the material alpha which determines its transparency. Range is between 1 (fully opaque) and 0 (fully transparent). + + + Creates a clone of the current DualTextureEffect instance. + + + Gets or sets the diffuse color for a material, the range of color values is from 0 to 1. + + + Gets or sets the fog color, the range of color values is from 0 to 1. + + + Gets or sets the fog enable flag. + + + Gets or sets the maximum z value for fog. + + + Gets or sets the minimum z value for fog. + + + Computes derived parameter values immediately before applying the effect. + + + Gets or sets the projection matrix. + + + Gets or sets the current base texture. + + + Gets or sets the current overlay texture. + + + Gets or sets whether per-vertex color is enabled. + + + Gets or sets the view matrix. + + + Gets or sets the world matrix. + + + + + + Create a new instance of this class. + The associated graphics device. + Size of each index element. + Number of indices in the buffer. + Behavior options. + + + Create a new instance of this class. + The associated graphics device. + The index type. + The number of indicies in the buffer. + Behavior options. + + + Occurs when resources are lost due to a lost device event. + + + + Determines if the index buffer data has been lost due to a lost device event. + + + Sets dynamic index buffer data, specifying the offset, start index, number of elements and options. + Offset in bytes from the beginning of the buffer to the data. + Array of data. + The first element to use. + The number of elements to use. + Specifies whether existing data in the buffer will be kept after this operation. Dynamic geometry may be rendered on the Xbox 360 by using DrawUserIndexedPrimitives instead of setting the data for the index buffer. + + + Sets dynamic index buffer data, specifying the start index, number of elements and options. + Array of data. + The first element to use. + The number of elements to use. + Specifies whether existing data in the buffer will be kept after this operation. Dynamic geometry may be rendered on the Xbox 360 by using DrawUserIndexedPrimitives instead of setting the data for the index buffer. + + + + + + Creates a new instance of this object. + The graphics device. + The vertex declaration, which describes per-vertex data. + The number of vertices. + Behavior options; it is good practice for this to match the createOptions parameter in the GraphicsDevice constructor. + + + Creates a new instance of this object. + The graphics device. + The data type. + The number of vertices. + Behavior options; it is good practice for this to match the createOptions parameter in the GraphicsDevice constructor. + + + Occurs when resources are lost due to a lost device event. + + + + Determines if the index buffer data has been lost due to a lost device event. + + + Sets dynamic vertex buffer data, specifying the offset, start index, number of elements and vertex stride. + Offset in bytes from the beginning of the buffer to the data. + Array of data. + The first element to use. + The number of elements to use. + The size, in bytes, of the elements in the vertex buffer. + Specifies whether existing data in the buffer will be kept after this operation. Dynamic geometry may be rendered on the Xbox 360 by using DrawUserIndexedPrimitives instead of setting the data for the vertex buffer. + + + Sets dynamic vertex buffer data, specifying the start index, number of elements and options. + Array of data. + The first element to use. + The number of elements to use. + Specifies whether existing data in the buffer will be kept after this operation. Dynamic geometry may be rendered on the Xbox 360 by using DrawUserIndexedPrimitives instead of setting the data for the vertex buffer. + + + Used to set and query effects, and to choose techniques. Reference page contains links to related conceptual articles. + + + Creates an instance of this object. + An object to copy. + + + Creates an instance of this object. + The device. + The effect code. + + + Copies data from an existing object to this object. + + + Gets or sets the active technique. Reference page contains code sample. + + + Releases the unmanaged resources used by the Effect and optionally releases the managed resources. + [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + Applies the effect state just prior to rendering the effect. + + + Gets a collection of parameters used for this effect. + + + Gets a collection of techniques that are defined for this effect. Reference page contains code sample. + + + Represents an annotation to an EffectParameter. + + + Gets the number of columns in this effect annotation. + + + Gets the value of the EffectAnnotation as a Boolean. + + + Gets the value of the EffectAnnotation as a Int32. + + + Gets the value of the EffectAnnotation as a Int32. + + + Gets the value of the EffectAnnotation as a Single. + + + Gets the value of the EffectAnnotation as a String. + + + Gets the value of the EffectAnnotation as a Vector2. + + + Gets the value of the EffectAnnotation as a Vector3. + + + Gets the value of the EffectAnnotation as a Vector4. + + + Gets the name of the effect annotation. + + + Gets the parameter class of this effect annotation. + + + Gets the parameter type of this effect annotation. + + + Gets the row count of this effect annotation. + + + Gets the semantic of this effect annotation. + + + Manipulates a collection of EffectAnnotation objects. + + + Gets the number of EffectAnnotation objects in this EffectAnnotationCollection. + + + Gets an enumerator that can iterate through the EffectAnnotationCollection. + + + Gets an enumerator that can iterate through the EffectAnnotationCollection. + + + Gets an enumerator that can iterate through the EffectAnnotationCollection. + + + Gets a specific EffectAnnotation object by using an index value. + Index of the EffectAnnotation to get. + + + Gets a specific EffectAnnotation object by using a name. + Name of the EffectAnnotation to get. + + + Contains an effect subclass which is used to load data for an EffectMaterialContent type. + + + Creates an instance of this object. + An instance of an object to copy initialization data from. + + + Represents an Effect parameter. Reference page contains code sample. + + + Gets the collection of EffectAnnotation objects for this parameter. + + + Gets the number of columns in the parameter description. + + + Gets the collection of effect parameters. + + + Gets the value of the EffectParameter as a Boolean. + + + Gets the value of the EffectParameter as an array of Boolean. + The number of elements in the array. + + + Gets the value of the EffectParameter as an Int32. + + + Gets the value of the EffectParameter as an array of Int32. + The number of elements in the array. + + + Gets the value of the EffectParameter as a Matrix. + + + Gets the value of the EffectParameter as an array of Matrix. + The number of elements in the array. + + + Gets the value of the EffectParameter as a Matrix transpose. + + + Gets the value of the EffectParameter as an array of Matrix transpose. + The number of elements in the array. + + + Gets the value of the EffectParameter as a Quaternion. + + + Gets the value of the EffectParameter as an array of Quaternion. + The number of elements in the array. + + + Gets the value of the EffectParameter as a Single. + + + Gets the value of the EffectParameter as an array of Single. + The number of elements in the array. + + + Gets the value of the EffectParameter as an String. + + + Gets the value of the EffectParameter as a Texture2D. + + + Gets the value of the EffectParameter as a Texture3D. + + + Gets the value of the EffectParameter as a TextureCube. + + + Gets the value of the EffectParameter as a Vector2. + + + Gets the value of the EffectParameter as an array of Vector2. + The number of elements in the array. + + + Gets the value of the EffectParameter as a Vector3. + + + Gets the value of the EffectParameter as an array of Vector3. + The number of elements in the array. + + + Gets the value of the EffectParameter as a Vector4. + + + Gets the value of the EffectParameter as an array of Vector4. + The number of elements in the array. + + + Gets the name of the parameter. + + + Gets the class of the parameter. + + + Gets the type of the parameter. + + + Gets the number of rows in the parameter description. + + + Gets the semantic meaning, or usage, of the parameter. + + + Sets the value of the EffectParameter. + The value to assign to the EffectParameter. + + + Sets the value of the EffectParameter. + The value to assign to the EffectParameter. + + + Sets the value of the EffectParameter. + The value to assign to the EffectParameter. + + + Sets the value of the EffectParameter. + The value to assign to the EffectParameter. + + + Sets the value of the EffectParameter. + The value to assign to the EffectParameter. + + + Sets the value of the EffectParameter. + The value to assign to the EffectParameter. + + + Sets the value of the EffectParameter. + The value to assign to the EffectParameter. + + + Sets the value of the EffectParameter. + The value to assign to the EffectParameter. + + + Sets the value of the EffectParameter. + The value to assign to the EffectParameter. + + + Sets the value of the EffectParameter. + The value to assign to the EffectParameter. + + + Sets the value of the EffectParameter. + The value to assign to the EffectParameter. + + + Sets the value of the EffectParameter. + [MarshalAsAttribute(U1)] The value to assign to the EffectParameter. + + + Sets the value of the EffectParameter. + The value to assign to the EffectParameter. + + + Sets the value of the EffectParameter. + The value to assign to the EffectParameter. + + + Sets the value of the EffectParameter. + The value to assign to the EffectParameter. + + + Sets the value of the EffectParameter. + The value to assign to the EffectParameter. + + + Sets the value of the EffectParameter. + The value to assign to the EffectParameter. + + + Sets the value of the EffectParameter. + The value to assign to the EffectParameter. + + + Sets the value of the EffectParameter to the transpose of a Matrix. + The value. + + + Sets the value of the EffectParameter to the transpose of a Matrix. + The value. + + + Gets the collection of structure members. + + + Defines classes that can be used for effect parameters or shader constants. + + + Constant is a matrix. + + + Constant is either a texture, a shader, or a string. + + + Constant is a scalar. + + + Constant is a structure. + + + Constant is a vector. + + + Manipulates a collection of EffectParameter objects. + + + Gets the number of EffectParameter objects in this EffectParameterCollection. + + + Gets an enumerator that can iterate through EffectParameterCollection. + + + Gets an enumerator that can iterate through EffectParameterCollection. + + + Gets an enumerator that can iterate through the EffectParameterCollection. + + + Gets an effect parameter from its semantic usage. + The semantic meaning, or usage, of the parameter. + + + Gets a specific EffectParameter object by using an index value. + Index of the EffectParameter to get. + + + Gets a specific EffectParameter by name. + The name of the EffectParameter to retrieve. + + + Defines types that can be used for effect parameters or shader constants. + + + Parameter is a Boolean. Any nonzero value passed in will be mapped to 1 (TRUE) before being written into the constant table; otherwise, the value will be set to 0 in the constant table. + + + Parameter is an integer. Any floating-point values passed in will be rounded off (to zero decimal places) before being written into the constant table. + + + Parameter is a floating-point number. + + + Parameter is a string. + + + Parameter is a texture. + + + Parameter is a 1D texture. + + + Parameter is a 2D texture. + + + Parameter is a 3D texture. + + + Parameter is a cube texture. + + + Parameter is a void pointer. + + + Contains rendering state for drawing with an effect; an effect can contain one or more passes. + + + Gets the set of EffectAnnotation objects for this EffectPass. + + + Begins this pass. + + + Gets the name of this pass. + + + Manipulates a collection of EffectPass objects. + + + Gets the number of objects in the collection. + + + Gets an enumerator that can iterate through the EffectPassCollection. + + + Gets an enumerator that can iterate through the EffectPassCollection. + + + Gets an enumerator that can iterate through the EffectPassCollection. + + + Gets a specific element in the collection by using an index value. + Index of the EffectPass to get. + + + Gets a specific element in the collection by using a name. + Name of the EffectPass to get. + + + Represents an effect technique. Reference page contains code sample. + + + Gets the EffectAnnotation objects associated with this technique. + + + Gets the name of this technique. + + + Gets the collection of EffectPass objects this rendering technique requires. + + + Manipulates a collection of EffectTechnique objects. + + + Gets the number of objects in the collection. + + + Gets an enumerator that can iterate through the EffectTechniqueCollection. + + + Gets an enumerator that can iterate through the EffectTechniqueCollection. + + + Gets an enumerator that can iterate through the EffectTechniqueCollection. + + + Gets a specific element in the collection by using an index value. + Index of the EffectTechnique to get. + + + Gets a specific element in the collection by using a name. + Name of the EffectTechnique to get. + + + Contains a configurable effect that supports environment mapping. + + + Creates a new EnvironmentMapEffect by cloning parameter settings from an existing instance. + An existing instance. + + + Creates a new EnvironmentMapEffect with default parameter settings. + The graphics device. + + + Gets or sets the material alpha which determines its transparency. Range is between 1 (fully opaque) and 0 (fully transparent). + + + Gets or sets the ambient color for a light, the range of color values is from 0 to 1. + + + Creates a clone of the current EnvironmentMapEffect instance. + + + Gets or sets the diffuse color for a material, the range of color values is from 0 to 1. + + + Gets the first directional light. + + + Gets the second directional light. + + + Gets the third directional light. + + + Gets or sets the emissive color for a material, the range of color values is from 0 to 1. + + + Sets up standard key, fill, and back lighting for an EnvironmentMapEffect. + + + Gets or sets the current environment map texture. + + + Gets or sets the amount of the environment map color (RGB) that will be blended over the base texture. The value ranges from 0 to 1; the default value is 1. + + + Gets or sets the amount of the environment map alpha value that will be added to the base texture. The value ranges from 0 to 1; the default value is 0. + + + Gets or sets the fog color, the range of color values is from 0 to 1. + + + Gets or sets the fog enable flag. + + + Gets or sets the maximum z value for fog. + + + Gets or sets the minimum z value for fog. + + + Gets or sets the Fresnel factor used for the environment map blending. + + + Enables lighting in an EnvironmentMapEffect. + + + Computes derived parameter values immediately before applying the effect. + + + Gets or sets the projection matrix. + + + Gets or sets the current texture. + + + Gets or sets the view matrix. + + + Gets or sets the world matrix. + + + Describes options for filling the vertices and lines that define a primitive. + + + Draw solid faces for each primitive. + + + Draw lines connecting the vertices that define a primitive face. + + + Provides methods to retrieve and manipulate graphics adapters. + + + Collection of available adapters on the system. + + + Gets the current display mode. + + + Gets the default adapter. + + + Retrieves a string used for presentation to the user. + + + Retrieves a value that is used to help identify a particular chip set. + + + Retrieves a string that contains the device name for a Microsoft Windows Graphics Device Interface (GDI). + + + Determines if this instance of GraphicsAdapter is the default adapter. + + + Tests to see if the adapter supports the requested profile. + The graphics profile. + + + Determines if the graphics adapter is in widescreen mode. + + + Retrieves the handle of the monitor associated with the Microsoft Direct3D object. + + + Queries the adapter for support for the requested back buffer format. + The graphics profile. + The requested surface data format. + The requested depth buffer format. + The requested number of multisampling locations. + [OutAttribute] The best format the adapter supports for the requested surface data format. + [OutAttribute] The best format the adapter supports for the requested depth data format. + [OutAttribute] The best format the adapter supports for the requested number of multisampling locations. + + + Queries the adapter for support for the requested render target format. + The graphics profile. + The requested surface data format. + The requested depth buffer format. + The requested number of multisampling locations. + [OutAttribute] The best format the adapter supports for the requested surface data format. + [OutAttribute] The best format the adapter supports for the requested depth data format. + [OutAttribute] The best format the adapter supports for the requested number of multisampling locations. + + + Retrieves a value used to help identify the revision level of a particular chip set. + + + Retrieves a value used to identify the subsystem. + + + Returns a collection of supported display modes for the current adapter. + + + Gets or sets a NULL device. + + + Gets or sets a reference device. + + + Retrieves a value used to identify the manufacturer. + + + Performs primitive-based rendering, creates resources, handles system-level variables, adjusts gamma ramp levels, and creates shaders. + + + Creates an instance of this object. + The display adapter. + The graphics profile. + The presentation options. + + + Gets the graphics adapter. + + + Gets or sets the color used for a constant-blend factor during alpha blending. The default value is Color.White. + + + Gets or sets a system-defined instance of a blend state object initialized for alpha blending. The default value is BlendState.Opaque. + + + Clears resource buffers. + Set this color value in all buffers. + + + Clears resource buffers. + Options for clearing a buffer. + Set this color value in the buffer. + Set this depth value in the buffer. + Set this stencil value in the buffer. + + + Clears resource buffers. + Options for clearing a buffer. + Set this four-component color value in the buffer. + Set this depth value in the buffer. + Set this stencil value in the buffer. + + + Gets or sets a system-defined instance of a depth-stencil state object. The default value is DepthStencilState.Default. + + + Occurs when a GraphicsDevice is about to be lost (for example, immediately before a reset). Reference page contains code sample. + + + + Occurs after a GraphicsDevice is reset, allowing an application to recreate all resources. + + + + Occurs when a GraphicsDevice is resetting, allowing the application to cancel the default handling of the reset. Reference page contains code sample. + + + + Retrieves the display mode's spatial resolution, color resolution, and refresh frequency. Reference page contains code sample. + + + Immediately releases the unmanaged resources used by this object. + + + Immediately releases the unmanaged resources used by this object. + [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + Occurs when Dispose is called or when this object is finalized and collected by the garbage collector of the Microsoft .NET common language runtime. Reference page contains code sample. + + + + Renders the specified geometric primitive, based on indexing into an array of vertices. + Describes the type of primitive to render. PrimitiveType.PointList is not supported with this method. + Offset to add to each vertex index in the index buffer. + Minimum vertex index for vertices used during the call. The minVertexIndex parameter and all of the indices in the index stream are relative to the baseVertex parameter. + Number of vertices used during the call. The first vertex is located at index: baseVertex + minVertexIndex. + Location in the index array at which to start reading vertices. + Number of primitives to render. The number of vertices used is a function of primitiveCount and primitiveType. + + + Draws a series of instanced models. + The primitive type. + Offset to add to each vertex index in the index buffer. + Minimum vertex index for vertices used during the call. The minVertexIndex parameter and all of the indices in the index stream are relative to the baseVertex parameter. + Number of vertices used during the call. The first vertex is located at index: baseVertex + minVertexIndex. + Location in the index array at which to start reading vertices. + Number of primitives to render. The number of vertices used is a function of primitiveCount and primitiveType. + Number of primitives to render. + + + Renders a sequence of non-indexed geometric primitives of the specified type from the current set of data input streams. + Describes the type of primitive to render. + Index of the first vertex to load. Beginning at startVertex, the correct number of vertices is read out of the vertex buffer. + Number of primitives to render. The primitiveCount is the number of primitives as determined by the primitive type. If it is a line list, each primitive has two vertices. If it is a triangle list, each primitive has three vertices. + + + Renders indexed primitives from a 16-bit index buffer and other related input parameters. + The primitive type. + The vertex data. + Offset (in vertices) from the beginning of the vertex buffer to the first vertex to draw. + Number of vertices to draw. + The index data. + Offset (in indices) from the beginning of the index buffer to the first index to use. + Number of primitives to render. + + + Renders indexed primitives from a 16-bit index buffer, a vertex declaration, and other related input parameters. + The primitive type. + The vertex data. + Offset (in vertices) from the beginning of the vertex buffer to the first vertex to draw. + Number of vertices to draw. + The index data. + Offset (in indices) from the beginning of the index buffer to the first index to use. + Number of primitives to render. + The vertex declaration. + + + Renders indexed primitives from a 32-bit index buffer and other related input parameters. + The primitive type. + The vertex data. + Offset (in vertices) from the beginning of the vertex buffer to the first vertex to draw. + Number of vertices to draw. + The index data. + Offset (in indices) from the beginning of the index buffer to the first index to use. + Number of primitives to render. + + + Renders indexed primitives from a 32-bit index buffer, a vertex declaration, and other related input parameters. + The primitive type. + The vertex data. + Offset (in vertices) from the beginning of the vertex buffer to the first vertex to draw. + Number of vertices to draw. + The index data. + Offset (in indices) from the beginning of the index buffer to the first index to use. + Number of primitives to render. + The vertex declaration. + + + Draws primitives. + Describes the type of primitive to render. + The vertex data. + Offset (in vertices) from the beginning of the buffer to start reading data. + Number of primitives to render. + + + Draws primitives. + Describes the type of primitive to render. + The vertex data. + Offset (in vertices) from the beginning of the buffer to start reading data. + Number of primitives to render. + The vertex declaration, which defines per-vertex data. + + + Allows this object to attempt to free resources and perform other cleanup operations before garbage collection reclaims the object. + + + Gets the contents of the back buffer. + The section of the back buffer to copy. null indicates the data will be copied from the entire back buffer. + Array of data. + The first element to use. + The number of elements to use. + + + Gets the contents of the back buffer. + Array of data. + + + Gets the contents of the back buffer. + Array of data. + The first element to use. + The number of elements to use. + + + Gets a render target surface. + + + Gets the vertex buffers. + + + Retrieves the status of the device. + + + Gets the graphics profile. The default value is GraphicsProfile.Reach. + + + Gets or sets index data. The default value is null. + + + Gets a value that indicates whether the object is disposed. + + + Gets or sets a bitmask controlling modification of the samples in a multisample render target. The default value is -1 (0xffffffff). + + + Presents the display with the contents of the next buffer in the sequence of back buffers owned by the GraphicsDevice. + + + Specifies the window target for a presentation and presents the display with the contents of the next buffer in the sequence of back buffers owned by the GraphicsDevice. + The source rectangle. If null, the entire source surface is presented. If the rectangle exceeds the source surface, the rectangle is clipped to the source surface. + The destination rectangle, in window client coordinates. If null, the entire client area is filled. If the rectangle exceeds the destination client area, the rectangle is clipped to the destination client area. + Destination window containing the client area that is the target for this presentation. If not specified, this is DeviceWindowHandle. + + + Gets the presentation parameters associated with this graphics device. + + + Gets or sets rasterizer state. The default value is RasterizerState.CullCounterClockwise. + + + Gets or sets a reference value for stencil testing. The default value is zero. + + + Resets the presentation parameters for the current GraphicsDevice. + + + Resets the current GraphicsDevice with the specified PresentationParameters. + Describes the new presentation parameters. This value cannot be null. + + + Resets the specified Reset with the specified presentation parameters. + Describes the new presentation parameters. This value cannot be null. + The graphics device being reset. + + + Occurs when a resource is created. + The event data. + + + Occurs when a resource is destroyed. + The event data. + + + Retrieves a collection of SamplerState objects for the current GraphicsDevice. + + + Gets or sets the rectangle used for scissor testing. By default, the size matches the render target size. + + + Sets a new render target for this GraphicsDevice. + A new render target for the device, or null to set the device render target to the back buffer of the device. + + + Sets a new render target for this GraphicsDevice. + A new render target for the device, or null to set the device render target to the back buffer of the device. + The cube map face type. + + + Sets an array of render targets. + [ParamArrayAttribute] An array of render targets. + + + Sets or binds a vertex buffer to the device. + A vertex buffer. + + + Sets or binds a vertex buffer to the device. + A vertex buffer. + The offset (in vertices) from the beginning of the buffer. + + + Sets the vertex buffers. + [ParamArrayAttribute] An array of vertex buffers. + + + Returns the collection of textures that have been assigned to the texture stages of the device. Reference page contains code sample. + + + Gets the collection of vertex sampler states. + + + Gets the collection of vertex textures that support texture lookup in the vertex shader using the texldl statement. The vertex engine contains four texture sampler stages. + + + Gets or sets a viewport identifying the portion of the render target to receive draw calls. Reference page contains code sample. + + + Describes the status of the device. + + + The device has been lost. + + + The device is normal. + + + The device has not been reset. + + + Identifies the set of supported devices for the game based on device capabilities. + + + Use the largest available set of graphic features and capabilities to target devices, such as an Xbox 360 console and a Windows-based computer, that have more enhanced graphic capabilities. + + + Use a limited set of graphic features and capabilities, allowing the game to support the widest variety of devices, including all Windows-based computers and Windows Phone. + + + Queries and prepares resources. + + + Immediately releases the unmanaged resources used by this object. + + + Immediately releases the unmanaged resources used by this object. + [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + Occurs when Dispose is called or when this object is finalized and collected by the garbage collector of the Microsoft .NET common language runtime. + + + + Allows this object to attempt to free resources and perform other cleanup operations before garbage collection reclaims the object. + + + Gets the GraphicsDevice associated with this GraphicsResource. + + + Gets a value that indicates whether the object is disposed. + + + Gets the name of the resource. + + + Gets the resource tags for this resource. + + + Gets a string representation of the current instance. + + + Gets or sets fog parameters for the current effect. + + + Gets or sets the fog color. + + + Enables or disables fog. + + + Gets or sets maximum z value for fog. + + + Gets or sets minimum z value for fog. + + + Gets or sets lighting parameters for the current effect. + + + Gets or sets the ambient light color for the current effect. + + + Gets the first directional light for the current effect. + + + Gets the second directional light for the current effect. + + + Gets the third directional light for the current effect. + + + Enables default lighting for the current effect. + + + Enables or disables lighting in an IEffectLights. + + + Gets or sets transformation matrix parameters for the current effect. + + + Gets or sets the projection matrix in the current effect. + + + Gets or sets the view matrix in the current effect. + + + Gets or sets the world matrix in the current effect. + + + Defines a mechanism for retrieving GraphicsDevice objects. + + + The event that occurs when a graphics device is created. + + + + The event that occurs when a graphics device is disposing. + + + + The event that occurs when a graphics device is reset. + + + + The event that occurs when a graphics device is in the process of resetting. + + + + Retrieves a graphcs device. + + + Describes the rendering order of the vertices in a vertex buffer. + + + Initializes a new instance of the IndexBuffer class. + The GraphicsDevice object to associate with the index buffer. + The size (in bits) of each index. + The number of indices. + Behavior options. + + + Initializes a new instance of the IndexBuffer class. + The GraphicsDevice object to associate with the index buffer. + The index value type. + The number of indices. + Behavior options. + + + Gets the state of the related BufferUsage enumeration. + + + Immediately releases the unmanaged resources used by this object. + [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + Gets a copy of the index buffer data, specifying the start index, starting offset, number of elements, and size of the elements. + Offset in bytes from the beginning of the buffer to the data. + Array of data. + Index of the first element to get. + Number of elements to get. + + + Gets a copy of the index buffer data. + Array of data. + + + Gets a copy of the index buffer data, specifying the start index and number of elements. + Array of data. + Index of the first element to get. + Number of elements to get. + + + Gets the number of indices in this buffer. + + + Gets a value indicating the size of this index element. + + + Sets index buffer data, specifying the offset, start index and number of elements. + Offset in bytes from the beginning of the buffer to the data. + Array of data. + Index of the first element to set. + Number of elements to set. + + + Sets index buffer data. Reference page contains links to related conceptual articles. + Array of data. + + + Sets index buffer data, specifying the start index and number of elements. + Array of data. + Index of the first element to set. + Number of elements to set. + + + Defines the size of an element of an index buffer. + + + Sixteen bits. + + + Thirty-two bits. + + + Vertex type interface which is implemented by a custom vertex type structure. + + + Vertex declaration, which defines per-vertex data. + + + Represents a 3D model composed of multiple ModelMesh objects which may be moved independently. + + + Gets a collection of ModelBone objects which describe how each mesh in the Meshes collection for this model relates to its parent mesh. + + + Copies a transform of each bone in a model relative to all parent bones of the bone into a given array. + The array to receive bone transforms. + + + Copies an array of transforms into each bone in the model. + An array containing new bone transforms. + + + Copies each bone transform relative only to the parent bone of the model to a given array. + The array to receive bone transforms. + + + Render a model after applying the matrix transformations. + A world transformation matrix. + A view transformation matrix. + A projection transformation matrix. + + + Gets a collection of ModelMesh objects which compose the model. Each ModelMesh in a model may be moved independently and may be composed of multiple materials identified as ModelMeshPart objects. + + + Gets the root bone for this model. + + + Gets or sets an object identifying this model. + + + Represents bone data for a model. Reference page contains links to related conceptual articles. + + + Gets a collection of bones that are children of this bone. + + + Gets the index of this bone in the Bones collection. + + + Gets the name of this bone. + + + Gets the parent of this bone. + + + Gets or sets the matrix used to transform this bone relative to its parent bone. + + + Represents a set of bones associated with a model. + + + Returns a ModelBoneCollection.Enumerator that can iterate through a ModelBoneCollection. + + + Retrieves a ModelBone from the collection, given the name of the bone. + The name of the bone to retrieve. + + + Finds a bone with a given name if it exists in the collection. + The name of the bone to find. + [OutAttribute] The bone named boneName, if found. + + + Provides the ability to iterate through the bones in an ModelBoneCollection. + + + Gets the current element in the ModelBoneCollection. + + + Immediately releases the unmanaged resources used by this object. + + + Advances the enumerator to the next element of the ModelBoneCollection. + + + Gets the current element in the ModelBoneCollection as a Object. + + + Sets the enumerator to its initial position, which is before the first element in the ModelBoneCollection. + + + Represents a collection of effects associated with a model. + + + Returns a ModelEffectCollection.Enumerator that can iterate through a ModelEffectCollection. + + + Provides the ability to iterate through the bones in an ModelEffectCollection. + + + Gets the current element in the ModelEffectCollection. + + + Immediately releases the unmanaged resources used by this object. + + + Advances the enumerator to the next element of the ModelEffectCollection. + + + Gets the current element in the ModelEffectCollection as a Object. + + + Sets the enumerator to its initial position, which is before the first element in the ModelEffectCollection. + + + Represents a mesh that is part of a Model. + + + Gets the BoundingSphere that contains this mesh. + + + Draws all of the ModelMeshPart objects in this mesh, using their current Effect settings. + + + Gets a collection of effects associated with this mesh. + + + Gets the ModelMeshPart objects that make up this mesh. Each part of a mesh is composed of a set of primitives that share the same material. + + + Gets the name of this mesh. + + + Gets the parent bone for this mesh. The parent bone of a mesh contains a transformation matrix that describes how the mesh is located relative to any parent meshes in a model. + + + Gets or sets an object identifying this mesh. + + + Represents a collection of ModelMesh objects. + + + Returns a ModelMeshCollection.Enumerator that can iterate through a ModelMeshCollection. + + + Retrieves a ModelMesh from the collection, given the name of the mesh. + The name of the mesh to retrieve. + + + Finds a mesh with a given name if it exists in the collection. + The name of the mesh to find. + [OutAttribute] The mesh named meshName, if found. + + + Provides the ability to iterate through the bones in an ModelMeshCollection. + + + Gets the current element in the ModelMeshCollection. + + + Immediately releases the unmanaged resources used by this object. + + + Advances the enumerator to the next element of the ModelMeshCollection. + + + Gets the current element in the ModelMeshCollection as a Object. + + + Sets the enumerator to its initial position, which is before the first element in the ModelMeshCollection. + + + Represents a batch of geometry information to submit to the graphics device during rendering. Each ModelMeshPart is a subdivision of a ModelMesh object. The ModelMesh class is split into multiple ModelMeshPart objects, typically based on material information. + + + Gets or sets the material Effect for this mesh part. Reference page contains code sample. + + + Gets the index buffer for this mesh part. + + + Gets the number of vertices used during a draw call. + + + Gets the number of primitives to render. + + + Gets the location in the index array at which to start reading vertices. + + + Gets or sets an object identifying this model mesh part. + + + Gets the vertex buffer for this mesh part. + + + Gets the offset (in vertices) from the top of vertex buffer. + + + Represents a collection of ModelMeshPart objects. + + + Returns a ModelMeshPartCollection.Enumerator that can iterate through a ModelMeshPartCollection. + + + Provides the ability to iterate through the bones in an ModelMeshPartCollection. + + + Gets the current element in the ModelMeshPartCollection. + + + Immediately releases the unmanaged resources used by this object. + + + Advances the enumerator to the next element of the ModelMeshPartCollection. + + + Gets the current element in the ModelMeshPartCollection as a Object. + + + Sets the enumerator to its initial position, which is before the first element in the ModelMeshPartCollection. + + + Thrown when no available graphics device fits the given device preferences. + + + Create a new instance of this object. + + + Create a new instance of this object. + A message that describes the error. + + + Create a new instance of this object. + A message that describes the error. + The exception that is the cause of the current exception. If the inner parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception. + + + Used to perform an occlusion query against the latest drawn objects. + + + Initializes a new instance of OcclusionQuery with the specified device. + The graphics device to associate with this query. + + + Begins application of the query. + + + Releases the unmanaged resources used by Dispose and optionally releases the managed resources. + [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + Ends the application of the query. + + + Gets a value that indicates if the occlusion query has completed. + + + Gets the number of visible pixels. + + + Contains presentation parameters. + + + Initializes a new instance of this class. + + + Gets or sets the format of the back buffer. Reference page contains links to related conceptual articles. + + + Gets or sets a value indicating the height of the new swap chain's back buffer. + + + Gets or sets a value indicating the width of the new swap chain's back buffer. + + + Gets the size of this resource. + + + Creates a copy of this PresentationParameters object. + + + Gets or sets the depth stencil data format. + + + Gets or sets the handle to the device window. + + + Gets or sets the orientation of the display. The default value is DisplayOrientation.Default, which means orientation is determined automatically from your BackBufferWidth and BackBufferHeight. + + + Gets or sets a value indicating whether the application is in full screen mode. + + + Gets or sets a value indicating the number of sample locations during multisampling. + + + Gets or sets the maximum rate at which the swap chain's back buffers can be presented to the front buffer. + + + Gets or sets render target usage flags. + + + Defines flags that describe the relationship between the adapter refresh rate and the rate at which Present operations are completed. + + + Equivalent to setting One. + + + The runtime updates the window client area immediately, and might do so more than once during the adapter refresh period. Present operations might be affected immediately. This option is always available for both windowed and full-screen swap chains. + + + The driver waits for the vertical retrace period (the runtime will beam trace to prevent tearing). Present operations are not affected more frequently than the screen refresh rate; the runtime completes one Present operation per adapter refresh period, at most. This option is always available for both windowed and full-screen swap chains. + + + The driver waits for the vertical retrace period. Present operations are not affected more frequently than every second screen refresh. + + + Defines how vertex data is ordered. + + + The data is ordered as a sequence of line segments; each line segment is described by two new vertices. The count may be any positive integer. + + + The data is ordered as a sequence of line segments; each line segment is described by one new vertex and the last vertex from the previous line seqment. The count may be any positive integer. + + + The data is ordered as a sequence of triangles; each triangle is described by three new vertices. Back-face culling is affected by the current winding-order render state. + + + The data is ordered as a sequence of triangles; each triangle is described by two new vertices and one vertex from the previous triangle. The back-face culling flag is flipped automatically on even-numbered triangles. + + + Contains rasterizer state, which determines how to convert vector data (shapes) into raster data (pixels). + + + Initializes a new instance of the rasterizer class. + + + A built-in state object with settings for culling primitives with clockwise winding order. + + + A built-in state object with settings for culling primitives with counter-clockwise winding order. + + + Specifies the conditions for culling or removing triangles. The default value is CullMode.CounterClockwise. + + + A built-in state object with settings for not culling any primitives. + + + Sets or retrieves the depth bias for polygons, which is the amount of bias to apply to the depth of a primitive to alleviate depth testing problems for primitives of similar depth. The default value is 0. + + + Immediately releases the unmanaged resources used by this object. + [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + The fill mode, which defines how a triangle is filled during rendering. The default is FillMode.Solid. + + + Enables or disables multisample antialiasing. The default is true. + + + Enables or disables scissor testing. The default is false. + + + Gets or sets a bias value that takes into account the slope of a polygon. This bias value is applied to coplanar primitives to reduce aliasing and other rendering artifacts caused by z-fighting. The default is 0. + + + Contains a 2D texture that can be used as a render target. + + + Creates an instance of this object. + The graphics device to associate with this render target resource. + Width, in pixels, of the render target. You can use graphicsDevice.PresentationParameters.BackBufferWidth to get the current screen width. + Height, in pixels, of the render target. You can use graphicsDevice.PresentationParameters.BackBufferHeight to get the current screen height. + + + Creates an instance of this object. + The graphics device to associate with this render target resource. + Width, in pixels, of the render target. You can use graphicsDevice.PresentationParameters.BackBufferWidth to get the current screen width. + Height, in pixels, of the render target. You can use graphicsDevice.PresentationParameters.BackBufferHeight to get the current screen height. + [MarshalAsAttribute(U1)] True to enable a full mipmap chain to be generated, false otherwise. + Preferred format for the surface data. This is the format preferred by the application, which may or may not be available from the hardware. + Preferred format for the depth buffer. This is the format preferred by the application, which may or may not be available from the hardware. + + + Creates an instance of this object. + The graphics device to associate with this render target resource. + Width, in pixels, of the render target. You can use graphicsDevice.PresentationParameters.BackBufferWidth to get the current screen width. + Height, in pixels, of the render target. You can use graphicsDevice.PresentationParameters.BackBufferHeight to get the current screen height. + [MarshalAsAttribute(U1)] True to enable a full mipmap chain to be generated, false otherwise. + Preferred format for the surface data. This is the format preferred by the application, which may or may not be available from the hardware. + Preferred format for the depth buffer. This is the format preferred by the application, which may or may not be available from the hardware. + The preferred number of multisample locations. + Behavior options. + + + Occurs when resources are lost due to a lost device event. + + + + Gets the data format for the depth stencil data. + + + Determines if the index buffer data has been lost due to a lost device event. + + + Gets the number of sample locations during multisampling. + + + Gets or sets the render target usage. + + + Binds an array of render targets. + + + Creates an instance of this object. + Identifies a 2D render target. + + + Creates an instance of this object. + Identifies a cubemap render target. + Cubemap face. + + + Gets one face of a cubemap. + + + Gets a 2D texture. + + + Represents a cubic texture resource that will be written to at the end of a render pass. + + + Creates an instance of this object. + The graphics device to associate with this render target resource. + The width and height of this cube texture resource, in pixels. + [MarshalAsAttribute(U1)] True to generate a full mipmap chain, false otherwise. + Preferred format of the surface data. + Preferred format of the depth data. + + + Creates an instance of this object. + The graphics device to associate with this render target resource. + The width and height of this cube texture resource, in pixels. + [MarshalAsAttribute(U1)] True to generate a full mipmap chain, false otherwise. + Preferred format of the surface data. + Preferred format of the depth data. + Preferred number of sample locations during multisampling. + Options identifying the behaviors of this texture resource. + + + Occurs when a resource is lost due to a device being lost. + + + + Gets the depth format of this rendertarget. + + + Determines if the data has been lost due to a lost device event. + + + Gets the number of multisample locations. + + + Gets the usage mode of this rendertarget. + + + Determines how render target data is used once a new render target is set. + + + Always clears the render target data. + + + Either clears or keeps the data, depending on the current platform. On Xbox 360, the render target will discard contents. On PC, the render target will discard if multisampling is enabled, and preserve the contents if not. + + + Always keeps the render target data. + + + Contains event data. + + + The object raising the event. + + + Arguments for a ResourceDestroyed event. + + + Gets the name of the destroyed resource. + + + Gets the resource manager tag of the destroyed resource. + + + Contains sampler state, which determines how to sample texture data. + + + Initializes a new instance of the sampler state class. + + + Gets or sets the texture-address mode for the u-coordinate. + + + Gets or sets the texture-address mode for the v-coordinate. + + + Gets or sets the texture-address mode for the w-coordinate. + + + Contains default state for anisotropic filtering and texture coordinate clamping. + + + Contains default state for anisotropic filtering and texture coordinate wrapping. + + + Immediately releases the unmanaged resources used by this object. + [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + Gets or sets the type of filtering during sampling. + + + Contains default state for linear filtering and texture coordinate clamping. + + + Contains default state for linear filtering and texture coordinate wrapping. + + + Gets or sets the maximum anisotropy. The default value is 4. + + + Gets or sets the level of detail (LOD) index of the largest map to use. + + + Gets or sets the mipmap LOD bias. The default value is 0. A negative value indicates a larger mipmap level; a positive value indicates a smaller mipmap level. + + + Contains default state for point filtering and texture coordinate clamping. + + + Contains default state for point filtering and texture coordinate wrapping. + + + Collection of SamplerState objects. + + + Gets a specific SamplerState object using an index value. + Index of the object to retrieve. + + + Describes whether existing vertex or index buffer data will be overwritten or discarded during a SetData operation. + + + The SetData operation will discard the entire buffer. A pointer to a new memory area is returned so that the direct memory access (DMA) and rendering from the previous area do not stall. + + + Portions of existing data in the buffer may be overwritten during this operation. + + + The SetData operation will not overwrite existing data in the vertex and index buffers. Specifying this option allows the driver to return immediately from a SetData operation and continue rendering. + + + Contains a configurable effect for rendering skinned character models. + + + Creates a SkinnedEffect with default parameter settings. + The graphics device. + + + Creates a SkinnedEffect by cloning parameter settings from an existing instance. + An existing instance. + + + Gets or sets the material alpha which determines its transparency. Range is between 1 (fully opaque) and 0 (fully transparent). + + + Gets or sets the ambient color for a light, the range of color values is from 0 to 1. + + + Creates a clone of the current SkinnedEffect instance. + + + Gets or sets the diffuse color for a material, the range of color values is from 0 to 1. + + + Gets the first directional light. + + + Gets the second directional light. + + + Gets the third directional light. + + + Gets or sets the emissive color for a material, the range of color values is from 0 to 1. + + + Sets up standard key, fill, and back lighting for a SkinnedEffect. + + + Gets or sets the fog color, the range of color values is from 0 to 1. + + + Gets or sets the fog enable flag. + + + Gets or sets the maximum z value for fog. + + + Gets or sets the minimum z value for fog. + + + Gets the bone transform matrices for a SkinnedEffect. + The number of matrices. + + + The maximum number of bones. + + + Enables lighting in an SkinnedEffect. + + + Computes derived parameter values immediately before applying the effect. + + + Gets or sets the per-pixel prefer lighting flag. + + + Gets or sets the projection matrix. + + + Sets an array of bone transform matrices for a SkinnedEffect. + An array of bone transformation matrices; the maximum number of bones (matrices) allowed is 72. + + + Gets or sets the specular color for a material, the range of color values is from 0 to 1. + + + Gets or sets the material specular power. + + + Gets or sets the current texture. + + + Gets or sets the view matrix. + + + Gets or sets the number of per-vertex skinning weights to evaluate, which is either 1, 2, or 4. + + + Gets or sets the world matrix. + + + Enables a group of sprites to be drawn using the same settings. + + + Initializes a new instance of the class, which enables a group of sprites to be drawn using the same settings. + The graphics device where sprites will be drawn. + + + Begins a sprite batch operation using deferred sort and default state objects (BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise). + + + Begins a sprite batch operation using the specified sort and blend state object and default state objects (DepthStencilState.None, SamplerState.LinearClamp, RasterizerState.CullCounterClockwise). If you pass a null blend state, the default is BlendState.AlphaBlend. + Sprite drawing order. + Blending options. + + + Begins a sprite batch operation using the specified sort, blend, sampler, depth stencil and rasterizer state objects. Passing null for any of the state objects selects the default default state objects (BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise). + Sprite drawing order. + Blending options. + Texture sampling options. + Depth and stencil options. + Rasterization options. + + + Begins a sprite batch operation using the specified sort, blend, sampler, depth stencil and rasterizer state objects, plus a custom effect. Passing null for any of the state objects selects the default default state objects (BlendState.AlphaBlend, DepthStencilState.None, RasterizerState.CullCounterClockwise, SamplerState.LinearClamp). Passing a null effect selects the default SpriteBatch Class shader. + Sprite drawing order. + Blending options. + Texture sampling options. + Depth and stencil options. + Rasterization options. + Effect state options. + + + Begins a sprite batch operation using the specified sort, blend, sampler, depth stencil, rasterizer state objects, plus a custom effect and a 2D transformation matrix. Passing null for any of the state objects selects the default default state objects (BlendState.AlphaBlend, DepthStencilState.None, RasterizerState.CullCounterClockwise, SamplerState.LinearClamp). Passing a null effect selects the default SpriteBatch Class shader. + Sprite drawing order. + Blending options. + Texture sampling options. + Depth and stencil options. + Rasterization options. + Effect state options. + Transformation matrix for scale, rotate, translate options. + + + Immediately releases the unmanaged resources used by this object. + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + Adds a sprite to a batch of sprites for rendering using the specified texture, destination rectangle, and color. Reference page contains links to related code samples. + A texture. + A rectangle that specifies (in screen coordinates) the destination for drawing the sprite. + The color to tint a sprite. Use Color.White for full color with no tinting. + + + Adds a sprite to a batch of sprites for rendering using the specified texture, destination rectangle, source rectangle, and color. + A texture. + A rectangle that specifies (in screen coordinates) the destination for drawing the sprite. If this rectangle is not the same size as the source rectangle, the sprite will be scaled to fit. + A rectangle that specifies (in texels) the source texels from a texture. Use null to draw the entire texture. + The color to tint a sprite. Use Color.White for full color with no tinting. + + + Adds a sprite to a batch of sprites for rendering using the specified texture, destination rectangle, source rectangle, color, rotation, origin, effects and layer. + A texture. + A rectangle that specifies (in screen coordinates) the destination for drawing the sprite. If this rectangle is not the same size as the source rectangle, the sprite will be scaled to fit. + A rectangle that specifies (in texels) the source texels from a texture. Use null to draw the entire texture. + The color to tint a sprite. Use Color.White for full color with no tinting. + Specifies the angle (in radians) to rotate the sprite about its center. + The sprite origin; the default is (0,0) which represents the upper-left corner. + Effects to apply. + The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing. + + + Adds a sprite to a batch of sprites for rendering using the specified texture, position and color. Reference page contains links to related code samples. + A texture. + The location (in screen coordinates) to draw the sprite. + The color to tint a sprite. Use Color.White for full color with no tinting. + + + Adds a sprite to a batch of sprites for rendering using the specified texture, position, source rectangle, and color. + A texture. + The location (in screen coordinates) to draw the sprite. + A rectangle that specifies (in texels) the source texels from a texture. Use null to draw the entire texture. + The color to tint a sprite. Use Color.White for full color with no tinting. + + + Adds a sprite to a batch of sprites for rendering using the specified texture, position, source rectangle, color, rotation, origin, scale, effects and layer. Reference page contains links to related code samples. + A texture. + The location (in screen coordinates) to draw the sprite. + A rectangle that specifies (in texels) the source texels from a texture. Use null to draw the entire texture. + The color to tint a sprite. Use Color.White for full color with no tinting. + Specifies the angle (in radians) to rotate the sprite about its center. + The sprite origin; the default is (0,0) which represents the upper-left corner. + Scale factor. + Effects to apply. + The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing. + + + Adds a sprite to a batch of sprites for rendering using the specified texture, position, source rectangle, color, rotation, origin, scale, effects, and layer. Reference page contains links to related code samples. + A texture. + The location (in screen coordinates) to draw the sprite. + A rectangle that specifies (in texels) the source texels from a texture. Use null to draw the entire texture. + The color to tint a sprite. Use Color.White for full color with no tinting. + Specifies the angle (in radians) to rotate the sprite about its center. + The sprite origin; the default is (0,0) which represents the upper-left corner. + Scale factor. + Effects to apply. + The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing. + + + Adds a string to a batch of sprites for rendering using the specified font, text, position, and color. + A font for diplaying text. + A text string. + The location (in screen coordinates) to draw the sprite. + The color to tint a sprite. Use Color.White for full color with no tinting. + + + Adds a string to a batch of sprites for rendering using the specified font, text, position, color, rotation, origin, scale, effects and layer. + A font for diplaying text. + A text string. + The location (in screen coordinates) to draw the sprite. + The color to tint a sprite. Use Color.White for full color with no tinting. + Specifies the angle (in radians) to rotate the sprite about its center. + The sprite origin; the default is (0,0) which represents the upper-left corner. + Scale factor. + Effects to apply. + The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing. + + + Adds a string to a batch of sprites for rendering using the specified font, text, position, color, rotation, origin, scale, effects and layer. + A font for diplaying text. + A text string. + The location (in screen coordinates) to draw the sprite. + The color to tint a sprite. Use Color.White for full color with no tinting. + Specifies the angle (in radians) to rotate the sprite about its center. + The sprite origin; the default is (0,0) which represents the upper-left corner. + Scale factor. + Effects to apply. + The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing. + + + Adds a string to a batch of sprites for rendering using the specified font, text, position, and color. + A font for diplaying text. + Text string. + The location (in screen coordinates) to draw the sprite. + The color to tint a sprite. Use Color.White for full color with no tinting. + + + Adds a string to a batch of sprites for rendering using the specified font, text, position, color, rotation, origin, scale, effects and layer. + A font for diplaying text. + Text string. + The location (in screen coordinates) to draw the sprite. + The color to tint a sprite. Use Color.White for full color with no tinting. + Specifies the angle (in radians) to rotate the sprite about its center. + The sprite origin; the default is (0,0) which represents the upper-left corner. + Scale factor. + Effects to apply. + The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing. + + + Adds a string to a batch of sprites for rendering using the specified font, text, position, color, rotation, origin, scale, effects and layer. + A font for diplaying text. + Text string. + The location (in screen coordinates) to draw the sprite. + The color to tint a sprite. Use Color.White for full color with no tinting. + Specifies the angle (in radians) to rotate the sprite about its center. + The sprite origin; the default is (0,0) which represents the upper-left corner. + Scale factor. + Effects to apply. + The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing. + + + Flushes the sprite batch and restores the device state to how it was before Begin was called. + + + Defines sprite mirroring options. + + + Rotate 180 degrees about the Y axis before rendering. + + + Rotate 180 degrees about the X axis before rendering. + + + No rotations specified. + + + Represents a font texture. + + + Gets a collection of all the characters that are included in the font. + + + Gets or sets the default character for the font. + + + Gets or sets the vertical distance (in pixels) between the base lines of two consecutive lines of text. Line spacing includes the blank space between lines as well as the height of the characters. + + + Returns the width and height of a string as a Vector2. + The string to measure. + + + Returns the width and height of a string as a Vector2. + The string to measure. + + + Gets or sets the spacing of the font characters. + + + Defines sprite sort-rendering options. + + + Same as Deferred mode, except sprites are sorted by depth in back-to-front order prior to drawing. This procedure is recommended when drawing transparent sprites of varying depths. + + + Sprites are not drawn until End is called. End will apply graphics device settings and draw all the sprites in one batch, in the same order calls to Draw were received. This mode allows Draw calls to two or more instances of SpriteBatch without introducing conflicting graphics device settings. SpriteBatch defaults to Deferred mode. + + + Same as Deferred mode, except sprites are sorted by depth in front-to-back order prior to drawing. This procedure is recommended when drawing opaque sprites of varying depths. + + + Begin will apply new graphics device settings, and sprites will be drawn within each Draw call. In Immediate mode there can only be one active SpriteBatch instance without introducing conflicting device settings. + + + Same as Deferred mode, except sprites are sorted by texture prior to drawing. This can improve performance when drawing non-overlapping sprites of uniform depth. + + + Defines stencil buffer operations. + + + Decrements the stencil-buffer entry, wrapping to the maximum value if the new value is less than 0. + + + Decrements the stencil-buffer entry, clamping to 0. + + + Increments the stencil-buffer entry, wrapping to 0 if the new value exceeds the maximum value. + + + Increments the stencil-buffer entry, clamping to the maximum value. + + + Inverts the bits in the stencil-buffer entry. + + + Does not update the stencil-buffer entry. This is the default value. + + + Replaces the stencil-buffer entry with a reference value. + + + Sets the stencil-buffer entry to 0. + + + Defines various types of surface formats. + + + (Unsigned format) 8-bit alpha only. + + + (Unsigned format) 16-bit BGR pixel format with 5 bits for blue, 6 bits for green, and 5 bits for red. + + + (Unsigned format) 16-bit BGRA pixel format with 4 bits for each channel. + + + (Unsigned format) 16-bit BGRA pixel format where 5 bits are reserved for each color and 1 bit is reserved for alpha. + + + (Unsigned format) 32-bit ARGB pixel format with alpha, using 8 bits per channel. + + + DXT1 compression texture format. The runtime will not allow an application to create a surface using a DXTn format unless the surface dimensions are multiples of 4. This applies to offscreen-plain surfaces, render targets, 2D textures, cube textures, and volume textures. + + + DXT3 compression texture format. The runtime will not allow an application to create a surface using a DXTn format unless the surface dimensions are multiples of 4. This applies to offscreen-plain surfaces, render targets, 2D textures, cube textures, and volume textures. + + + DXT5 compression texture format. The runtime will not allow an application to create a surface using a DXTn format unless the surface dimensions are multiples of 4. This applies to offscreen-plain surfaces, render targets, 2D textures, cube textures, and volume textures. + + + (Floating-point format) 16-bit float format using 16 bits for the red channel. + + + (Floating-point format) 32-bit float format using 16 bits for the red channel and 16 bits for the green channel. + + + (Floating-point format) 64-bit float format using 16 bits for each channel (alpha, blue, green, red). + + + (Floating-point format) for high dynamic range data. + + + (Signed format) 16-bit bump-map format using 8 bits each for u and v data. + + + (Signed format) 32-bit bump-map format using 8 bits for each channel. + + + (Unsigned format) 32-bit pixel format using 16 bits each for red and green. + + + (Unsigned format) 32-bit RGBA pixel format using 10 bits for each color and 2 bits for alpha. + + + (Unsigned format) 64-bit RGBA pixel format using 16 bits for each component. + + + (IEEE format) 32-bit float format using 32 bits for the red channel. + + + (IEEE format) 64-bit float format using 32 bits for the red channel and 32 bits for the green channel. + + + (IEEE format) 128-bit float format using 32 bits for each channel (alpha, blue, green, red). + + + Represents a texture resource. + + + Gets the format of the texture data. + + + Gets the number of texture levels in a multilevel texture. + + + Represents a 2D grid of texels. + + + Creates a new instance of this object. + The device. + Texture width. + Texture height. + + + Creates a new instance of this object. + The device. + Texture width. + Texture height. + [MarshalAsAttribute(U1)] True to generate a full mipmap chain; false otherwise. + Texture data format. + + + Gets the size of this resource. + + + Loads texture data from a stream. + A graphics device. + Data stream from one of the following file types: .gif, .jpg or .png. + + + Loads texture data from a stream. + A graphics device. + Data stream from one of the following file types: .gif, .jpg or .png. + The requested image width. + The requested image height. + Control the aspect ratio when zooming (scaling); set to false to maintain a constant aspect ratio, true otherwise. See remarks. + + + Gets a copy of 2D texture data, specifying a mipmap level, source rectangle, start index, and number of elements. Reference page contains code sample. + Mipmap level. + The section of the texture to copy. null indicates the data will be copied from the entire texture. + Array of data. + Index of the first element to get. + Number of elements to get. + + + Gets a copy of 2D texture data. Reference page contains code sample. + Array of data. + + + Gets a copy of 2D texture data, specifying a start index and number of elements. Reference page contains code sample. + Array of data. + Index of the first element to get. + Number of elements to get. + + + Gets the height of this texture resource, in pixels. + + + Saves texture data as a .jpg. + Data stream number. + Image width. + Image height. + + + Saves texture data as a .png. + Data stream number. + Image width. + Image height. + + + Sets 2D texture data, specifying a mipmap level, source rectangle, start index, and number of elements. + Mipmap level. + A bounding box that defines the position and location (in pixels) of the data. + Array of data. + Index of the first element to set. + Number of elements to set. + + + Sets 2D texture data. Reference page contains links to related conceptual articles. + Array of data. + + + Sets 2D texture data, specifying a start index, and number of elements. + Array of data. + Index of the first element to set. + Number of elements to set. + + + Gets the width of this texture resource, in pixels. + + + Represents a 3D volume of texels. + + + Creates a new instance of this object. + A device. + Texture width. + Texture height. + Texture depth. + [MarshalAsAttribute(U1)] True to generate a full mipmap chain; false otherwise. + Data format. + + + Gets the depth of this volume texture resource, in pixels. + + + Gets a copy of 3D texture data, specifying a mimap level, source rectangle, start index, and number of elements. + Mipmap level. + Position of the left side of the box on the x-axis. + Position of the top of the box on the y-axis. + Position of the right side of the box on the x-axis. + Position of the bottom of the box on the y-axis. + Position of the front of the box on the z-axis. + Position of the back of the box on the z-axis. + Array of data. + Index of the first element to get. + Number of elements to get. + + + Gets a copy of 3D texture data. + Array of data. + + + Gets a copy of 3D texture data, specifying a start index and number of elements. + Array of data. + Index of the first element to get. + Number of elements to get. + + + Gets the height of this texture resource, in pixels. + + + Sets 3D texture data, specifying a mipmap level, source box, start index, and number of elements. + Mipmap level. + X coordinate of the left face of the 3D bounding cube. + Y coordinate of the top face of the 3D bounding cube. + X coordinate of the right face of the 3D bounding cube. + Y coordinate of the bottom face of the 3D bounding cube. + Z coordinate of the front face of the 3D bounding cube. + Z coordinate of the back face of the 3D bounding cube. + Array of data. + Index of the first element to set. + Number of elements to set. + + + Sets 3D texture data. + Array of data. + + + Sets 3D texture data, specifying a start index and number of elements. + Array of data. + Index of the first element to set. + Number of elements to set. + + + Gets the width of this texture resource, in pixels. + + + Defines modes for addressing texels using texture coordinates that are outside of the typical range of 0.0 to 1.0. + + + Texture coordinates outside the range [0.0, 1.0] are set to the texture color at 0.0 or 1.0, respectively. + + + Similar to Wrap, except that the texture is flipped at every integer junction. For u values between 0 and 1, for example, the texture is addressed normally; between 1 and 2, the texture is flipped (mirrored); between 2 and 3, the texture is normal again, and so on. + + + Tile the texture at every integer junction. For example, for u values between 0 and 3, the texture is repeated three times; no mirroring is performed. + + + Represents a collection of Texture objects. + + + Gets or sets the Texture at the specified sampler number. + Zero-based sampler number. Textures are bound to samplers; samplers define sampling state such as the filtering mode and the address wrapping mode. Programmable shaders reference textures using this sampler number. + + + Represents a set of six 2D textures, one for each face of a cube. + + + Creates a new instance of this object. + The device. + The size (in pixels) of the top-level faces of the cube texture. Subsequent levels of each face will be the truncated value of half of the previous level's pixel dimension (independently). Each dimension is clamped to a minimum of 1 pixel. + [MarshalAsAttribute(U1)] True to generate a full mipmap chain, false otherwise. + Surface data format. + + + Gets a copy of cube texture data, specifying a cubemap face, mimap level, source rectangle, start index, and number of elements. + Cube map face. + Mipmap level. + The section of the texture where the data will be placed. null indicates the data will be copied over the entire texture. + Array of data. + Index of the first element to get. + Number of elements to get. + + + Gets a copy of cube texture data specifying a cubemap face. + Cubemap face. + Array of data. + + + Gets a copy of cube texture data, specifying a cubemap face, start index, and number of elements. + Cubemap face. + Array of data. + Index of the first element to get. + Number of elements to get. + + + Sets cube texture data, specifying a cubemap face, mipmap level, source rectangle, start index, and number of elements. + Cubemap face. + Mipmap level. + Region in the texture to set the data; use null to set data to the entire texture. + Array of data. + Index of the first element to set. + Number of elements to set. + + + Sets cube texture data, specifying a cubemap face. + The cubemap face. + Array of data. + + + Sets cube texture data, specifying a cubemap face, start index, and number of elements. + The cubemap face. + Array of data. + Index of the first element to set. + Number of elements to set. + + + Gets the width and height of this texture resource, in pixels. + + + Defines filtering types during texture sampling. + + + Use anisotropic filtering. + + + Use linear filtering. + + + Use linear filtering to shrink or expand, and point filtering between mipmap levels (mip). + + + Use linear filtering to shrink, point filtering to expand, and linear filtering between mipmap levels. + + + Use linear filtering to shrink, point filtering to expand, and point filtering between mipmap levels. + + + Use point filtering to shrink, linear filtering to expand, and linear filtering between mipmap levels. + + + Use point filtering to shrink, linear filtering to expand, and point filtering between mipmap levels. + + + Use point filtering. + + + Use point filtering to shrink (minify) or expand (magnify), and linear filtering between mipmap levels. + + + Represents a list of 3D vertices to be streamed to the graphics device. + + + Creates an instance of this object. + The graphics device. + The vertex declaration, which describes per-vertex data. + The number of vertices. + Behavior options; it is good practice for this to match the createOptions parameter in the GraphicsDevice constructor. + + + Creates an instance of this object. + The graphics device. + The data type. + The number of vertices. + Behavior options; it is good practice for this to match the createOptions parameter in the GraphicsDevice constructor. + + + Gets the state of the related BufferUsage enumeration. + + + Immediately releases the unmanaged resources used by this object. + [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + Gets a copy of the vertex buffer data, specifying the starting offset, start index, number of elements, and vertex stride. + Offset in bytes from the beginning of the buffer to the data. + Array of data. + Index of the first element to get. + Number of elements to get. + Size, in bytes, of an element in the vertex buffer. + + + Gets a copy of the vertex buffer data. + Array of data. + + + Gets a copy of the vertex buffer data, specifying the start index and number of elements. + Array of data. + Index of the first element to get. + Number of elements to get. + + + Sets vertex buffer data, specifying the offset, start index, number of elements, and the vertex stride. + Offset in bytes from the beginning of the buffer to the data. + Array of data. + Index of the first element to set. + Number of elements to set. + Stride, or size, of a vertex. + + + Sets vertex buffer data. Reference page contains code sample. + Array of data. + + + Sets vertex buffer data, specifying the start index and number of elements. + Array of data. + Index of the first element to set. + Number of elements to set. + + + Gets the number of vertices. + + + Defines per-vertex data in a buffer. + + + Binding structure that specifies a vertex buffer and other per-vertex parameters (such as offset and instancing) for a graphics device. + + + Creates an instance of this object. + The vertex buffer. + + + Creates an instance of this object. + The vertex buffer. + Offset (in vertices) from the beginning of the buffer to the first vertex to use. + + + Creates an instance of this object. + The vertex buffer. + Offset (in vertices) from the beginning of the buffer to the first vertex to use. + Number (or frequency) of instances to draw for each draw call; 1 means draw one instance, 2 means draw 2 instances, etc. Use 0 if you are not instancing. + + + Gets the instancing frequency. + + + Gets a vertex buffer. + + + Gets the offset between the beginning of the buffer and the vertex data to use. + + + A vertex declaration, which defines per-vertex data. + + + Creates an instance of this object. + [ParamArrayAttribute] An array of per-vertex elements. + + + Creates an instance of this object. + The number of bytes per element. + [ParamArrayAttribute] An array of per-vertex elements. + + + Immediately releases the unmanaged resources used by this object. + [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + Gets the vertex shader declaration. + + + The number of bytes from one vertex to the next. + + + Defines input vertex data to the pipeline. + + + Initializes a new instance of the VertexElement class. + Offset (if any) from the beginning of the stream to the beginning of the vertex data. + One of several predefined types that define the vertex data size. + The intended use of the vertex data. + Modifies the usage data to allow the user to specify multiple usage types. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The Object to compare with the current VertexElement. + + + Gets the hash code for this instance. + + + Retrieves or sets the offset (if any) from the beginning of the stream to the beginning of the vertex data. + + + Compares two objects to determine whether they are the same. + Object to the left of the equality operator. + Object to the right of the equality operator. + + + Compares two objects to determine whether they are different. + Object to the left of the inequality operator. + Object to the right of the inequality operator. + + + Retrieves a string representation of this object. + + + Modifies the usage data to allow the user to specify multiple usage types. + + + Gets or sets the format of this vertex element. + + + Gets or sets a value describing how the vertex element is to be used. + + + Defines vertex element formats. + + + Four-component, unsigned byte. + + + Four-component, packed, unsigned byte, mapped to 0 to 1 range. Input is in Int32 format (ARGB) expanded to (R, G, B, A). + + + Two-component, 16-bit floating point expanded to (value, value, value, value). This type is valid for vertex shader version 2.0 or higher. + + + Four-component, 16-bit floating-point expanded to (value, value, value, value). This type is valid for vertex shader version 2.0 or higher. + + + Normalized, two-component, signed short, expanded to (first short/32767.0, second short/32767.0, 0, 1). This type is valid for vertex shader version 2.0 or higher. + + + Normalized, four-component, signed short, expanded to (first short/32767.0, second short/32767.0, third short/32767.0, fourth short/32767.0). This type is valid for vertex shader version 2.0 or higher. + + + Two-component, signed short expanded to (value, value, 0, 1). + + + Four-component, signed short expanded to (value, value, value, value). + + + Single-component, 32-bit floating-point, expanded to (float, 0, 0, 1). + + + Two-component, 32-bit floating-point, expanded to (float, Float32 value, 0, 1). + + + Three-component, 32-bit floating point, expanded to (float, float, float, 1). + + + Four-component, 32-bit floating point, expanded to (float, float, float, float). + + + Defines usage for vertex elements. + + + Vertex binormal data. + + + Blending indices data. (BlendIndices with UsageIndex = 0) specifies matrix indices for fixed-function vertex processing using indexed paletted skinning. + + + Blending weight data. (BlendWeight with UsageIndex = 0) specifies the blend weights in fixed-function vertex processing. + + + Vertex data contains diffuse or specular color. (Color with UsageIndex = 0) specifies the diffuse color in the fixed-function vertex shader and in pixel shaders prior to ps_3_0. (Color with UsageIndex = 1) specifies the specular color in the fixed-function vertex shader and in pixel shaders prior to ps_3_0. + + + Vertex data contains depth data. + + + Vertex data contains fog data. (Fog with UsageIndex = 0) specifies a fog blend value to use after pixel shading is finished. This flag applies to pixel shaders prior to version ps_3_0. + + + Vertex normal data. (Normal with UsageIndex = 0) specifies vertex normals for fixed-function vertex processing and the N-patch tessellator. (Normal with UsageIndex = 1) specifies vertex normals for fixed-function vertex processing for skinning. + + + Point size data. (PointSize with UsageIndex = 0) specifies the point-size attribute used by the setup engine of the rasterizer to expand a point into a quad for the point-sprite functionality. + + + Position data. (Position with UsageIndex = 0 ) specifies the nontransformed position in fixed-function vertex processing and the N-patch tessellator. (Position with UsageIndex = 1) specifies the nontransformed position in the fixed-function vertex shader for skinning. + + + Vertex data contains sampler data. (Sample with UsageIndex = 0) specifies the displacement value to look up. + + + Vertex tangent data. + + + Single, positive floating-point value. (TessellateFactor with UsageIndex = 0) specifies a tessellation factor used in the tessellation unit to control the rate of tessellation. + + + Texture coordinate data. (TextureCoordinate, n) specifies texture coordinates in fixed-function vertex processing and in pixel shaders prior to ps_3_0. These coordinates can be used to pass user-defined data. + + + Describes a custom vertex format structure that contains position and color information. + + + Initializes a new instance of the VertexPositionColor class. + The position of the vertex. + The color of the vertex. + + + The vertex color. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The Object to compare with the current VertexPositionColor. + + + Gets the hash code for this instance. + + + Gets a vertex declaration. + + + Compares two objects to determine whether they are the same. + Object to the left of the equality operator. + Object to the right of the equality operator. + + + Compares two objects to determine whether they are different. + Object to the left of the inequality operator. + Object to the right of the inequality operator. + + + XYZ position. + + + Retrieves a string representation of this object. + + + Vertex declaration, which defines per-vertex data. + + + Describes a custom vertex format structure that contains position, color, and one set of texture coordinates. + + + Initializes a new instance of the VertexPositionColorTexture class. + Position of the vertex. + Color of the vertex. + Texture coordinate of the vertex. + + + The vertex color. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The Object to compare with the current VertexPositionColorTexture. + + + Gets the hash code for this instance. + + + Gets a vertex declaration. + + + Compares two objects to determine whether they are the same. + Object to the left of the equality operator. + Object to the right of the equality operator. + + + Compares two objects to determine whether they are different. + Object to the left of the inequality operator. + Object to the right of the inequality operator. + + + XYZ position. + + + UV texture coordinates. + + + Retrieves a string representation of this object. + + + Vertex declaration, which defines per-vertex data. + + + Describes a custom vertex format structure that contains position, normal data, and one set of texture coordinates. + + + Initializes a new instance of the VertexPositionNormalTexture class. + Position of the vertex. + The vertex normal. + The texture coordinate. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The Object to compare with the current VertexPositionNormalTexture. + + + Gets the hash code for this instance. + + + Gets a vertex declaration. + + + XYZ surface normal. + + + Compares two objects to determine whether they are the same. + Object to the left of the equality operator. + Object to the right of the equality operator. + + + Compares two objects to determine whether they are different. + Object to the left of the inequality operator. + Object to the right of the inequality operator. + + + XYZ position. + + + UV texture coordinates. + + + Retrieves a string representation of this object. + + + Vertex declaration, which defines per-vertex data. + + + Describes a custom vertex format structure that contains position and one set of texture coordinates. + + + Initializes a new instance of the VertexPositionTexture class. + Position of the vertex. + Texture coordinate of the vertex. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The Object to compare with the current VertexPositionTexture. + + + Gets the hash code for this instance. + + + Gets a vertex declaration. + + + Compares two objects to determine whether they are the same. + Object to the left of the equality operator. + Object to the right of the equality operator. + + + Compares two objects to determine whether they are different. + Object to the left of the inequality operator. + Object to the right of the inequality operator. + + + XYZ position. + + + UV texture coordinates. + + + Retrieves a string representation of this object. + + + Vertex declaration, which defines per-vertex data. + + + Defines the window dimensions of a render-target surface onto which a 3D volume projects. + + + Creates an instance of this object. + A bounding box that defines the location and size of the viewport in a render target. + + + Creates an instance of this object. + The x coordinate of the upper-left corner of the viewport in pixels. + The y coordinate of the upper-left corner of the viewport in pixels. + The width of the viewport in pixels. + The height of the viewport in pixels. + + + Gets the aspect ratio used by the viewport + + + Gets the size of this resource. + + + Gets or sets the height dimension of the viewport on the render-target surface, in pixels. + + + Gets or sets the maximum depth of the clip volume. + + + Gets or sets the minimum depth of the clip volume. + + + Projects a 3D vector from object space into screen space. + The vector to project. + The projection matrix. + The view matrix. + The world matrix. + + + Returns the title safe area of the current viewport. + + + Retrieves a string representation of this object. + + + Converts a screen space point into a corresponding point in world space. + The vector to project. + The projection matrix. + The view matrix. + The world matrix. + + + Gets or sets the width dimension of the viewport on the render-target surface, in pixels. + + + Gets or sets the pixel coordinate of the upper-left corner of the viewport on the render-target surface. + + + Gets or sets the pixel coordinate of the upper-left corner of the viewport on the render-target surface. + + + \ No newline at end of file diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Input.Touch.dll b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Input.Touch.dll new file mode 100644 index 0000000000000000000000000000000000000000..1e1eefe5a5b86738796a3d19aacfac409989fd3c GIT binary patch literal 23040 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 S{Wn<_^H=W1KmYAK@P7f;|4c~$ literal 0 HcmV?d00001 diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Input.Touch.xml b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Input.Touch.xml new file mode 100644 index 00000000..0dd206a0 --- /dev/null +++ b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/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/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.dll b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.dll new file mode 100644 index 0000000000000000000000000000000000000000..a0caf6af2625219ba3f5d46931203b479ebc83be GIT binary patch literal 679424 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 z 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℞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 + + + +

Defines an axis-aligned box-shaped 3D volume. + + + Creates an instance of BoundingBox. + The minimum point the BoundingBox includes. + The maximum point the BoundingBox includes. + + + Tests whether the BoundingBox contains another BoundingBox. + The BoundingBox to test for overlap. + + + Tests whether the BoundingBox contains a BoundingBox. + The BoundingBox to test for overlap. + [OutAttribute] Enumeration indicating the extent of overlap. + + + Tests whether the BoundingBox contains a BoundingFrustum. + The BoundingFrustum to test for overlap. + + + Tests whether the BoundingBox contains a BoundingSphere. + The BoundingSphere to test for overlap. + + + Tests whether the BoundingBox contains a BoundingSphere. + The BoundingSphere to test for overlap. + [OutAttribute] Enumeration indicating the extent of overlap. + + + Tests whether the BoundingBox contains a point. + The point to test for overlap. + + + Tests whether the BoundingBox contains a point. + The point to test for overlap. + [OutAttribute] Enumeration indicating the extent of overlap. + + + Specifies the total number of corners (8) in the BoundingBox. + + + Creates the smallest BoundingBox that will contain a group of points. + A list of points the BoundingBox should contain. + + + Creates the smallest BoundingBox that will contain the specified BoundingSphere. + The BoundingSphere to contain. + + + Creates the smallest BoundingBox that will contain the specified BoundingSphere. + The BoundingSphere to contain. + [OutAttribute] The created BoundingBox. + + + Creates the smallest BoundingBox that contains the two specified BoundingBox instances. + One of the BoundingBoxs to contain. + One of the BoundingBoxs to contain. + + + Creates the smallest BoundingBox that contains the two specified BoundingBox instances. + One of the BoundingBox instances to contain. + One of the BoundingBox instances to contain. + [OutAttribute] The created BoundingBox. + + + Determines whether two instances of BoundingBox are equal. + The BoundingBox to compare with the current BoundingBox. + + + Determines whether two instances of BoundingBox are equal. + The Object to compare with the current BoundingBox. + + + Gets an array of points that make up the corners of the BoundingBox. + + + Gets the array of points that make up the corners of the BoundingBox. + An existing array of at least 8 Vector3 points where the corners of the BoundingBox are written. + + + Gets the hash code for this instance. + + + Checks whether the current BoundingBox intersects another BoundingBox. + The BoundingBox to check for intersection with. + + + Checks whether the current BoundingBox intersects another BoundingBox. + The BoundingBox to check for intersection with. + [OutAttribute] true if the BoundingBox instances intersect; false otherwise. + + + Checks whether the current BoundingBox intersects a BoundingFrustum. + The BoundingFrustum to check for intersection with. + + + Checks whether the current BoundingBox intersects a BoundingSphere. + The BoundingSphere to check for intersection with. + + + Checks whether the current BoundingBox intersects a BoundingSphere. + The BoundingSphere to check for intersection with. + [OutAttribute] true if the BoundingBox and BoundingSphere intersect; false otherwise. + + + Checks whether the current BoundingBox intersects a Plane. + The Plane to check for intersection with. + + + Checks whether the current BoundingBox intersects a Plane. + The Plane to check for intersection with. + [OutAttribute] An enumeration indicating whether the BoundingBox intersects the Plane. + + + Checks whether the current BoundingBox intersects a Ray. + The Ray to check for intersection with. + + + Checks whether the current BoundingBox intersects a Ray. + The Ray to check for intersection with. + [OutAttribute] Distance at which the ray intersects the BoundingBox, or null if there is no intersection. + + + The maximum point the BoundingBox contains. + + + The minimum point the BoundingBox contains. + + + Determines whether two instances of BoundingBox are equal. + BoundingBox to compare. + BoundingBox to compare. + + + Determines whether two instances of BoundingBox are not equal. + The object to the left of the inequality operator. + The object to the right of the inequality operator. + + + Returns a String that represents the current BoundingBox. + + + Defines a frustum and helps determine whether forms intersect with it. + + + Creates a new instance of BoundingFrustum. + Combined matrix that usually takes view × projection matrix. + + + Gets the bottom plane of the BoundingFrustum. + + + Checks whether the current BoundingFrustum contains the specified BoundingBox. + The BoundingBox to check against the current BoundingFrustum. + + + Checks whether the current BoundingFrustum contains the specified BoundingBox. + The BoundingBox to test for overlap. + [OutAttribute] Enumeration indicating the extent of overlap. + + + Checks whether the current BoundingFrustum contains the specified BoundingFrustum. + The BoundingFrustum to check against the current BoundingFrustum. + + + Checks whether the current BoundingFrustum contains the specified BoundingSphere. + The BoundingSphere to check against the current BoundingFrustum. + + + Checks whether the current BoundingFrustum contains the specified BoundingSphere. + The BoundingSphere to test for overlap. + [OutAttribute] Enumeration indicating the extent of overlap. + + + Checks whether the current BoundingFrustum contains the specified point. + The point to check against the current BoundingFrustum. + + + Checks whether the current BoundingFrustum contains the specified point. + The point to test for overlap. + [OutAttribute] Enumeration indicating the extent of overlap. + + + Specifies the total number of corners (8) in the BoundingFrustum. + + + Determines whether the specified BoundingFrustum is equal to the current BoundingFrustum. + The BoundingFrustum to compare with the current BoundingFrustum. + + + Determines whether the specified Object is equal to the BoundingFrustum. + The Object to compare with the current BoundingFrustum. + + + Gets the far plane of the BoundingFrustum. + + + Gets an array of points that make up the corners of the BoundingFrustum. + + + Gets an array of points that make up the corners of the BoundingFrustum. + An existing array of at least 8 Vector3 points where the corners of the BoundingFrustum are written. + + + Gets the hash code for this instance. + + + Checks whether the current BoundingFrustum intersects the specified BoundingBox. + The BoundingBox to check for intersection. + + + Checks whether the current BoundingFrustum intersects a BoundingBox. + The BoundingBox to check for intersection with. + [OutAttribute] true if the BoundingFrustum and BoundingBox intersect; false otherwise. + + + Checks whether the current BoundingFrustum intersects the specified BoundingFrustum. + The BoundingFrustum to check for intersection. + + + Checks whether the current BoundingFrustum intersects the specified BoundingSphere. + The BoundingSphere to check for intersection. + + + Checks whether the current BoundingFrustum intersects a BoundingSphere. + The BoundingSphere to check for intersection with. + [OutAttribute] true if the BoundingFrustum and BoundingSphere intersect; false otherwise. + + + Checks whether the current BoundingFrustum intersects the specified Plane. + The Plane to check for intersection. + + + Checks whether the current BoundingFrustum intersects a Plane. + The Plane to check for intersection with. + [OutAttribute] An enumeration indicating whether the BoundingFrustum intersects the Plane. + + + Checks whether the current BoundingFrustum intersects the specified Ray. + The Ray to check for intersection. + + + Checks whether the current BoundingFrustum intersects a Ray. + The Ray to check for intersection with. + [OutAttribute] Distance at which the ray intersects the BoundingFrustum or null if there is no intersection. + + + Gets the left plane of the BoundingFrustum. + + + Gets or sets the Matrix that describes this bounding frustum. + + + Gets the near plane of the BoundingFrustum. + + + Determines whether two instances of BoundingFrustum are equal. + The BoundingFrustum to the left of the equality operator. + The BoundingFrustum to the right of the equality operator. + + + Determines whether two instances of BoundingFrustum are not equal. + The BoundingFrustum to the left of the inequality operator. + The BoundingFrustum to the right of the inequality operator. + + + Gets the right plane of the BoundingFrustum. + + + Gets the top plane of the BoundingFrustum. + + + Returns a String that represents the current BoundingFrustum. + + + Defines a sphere. + + + Creates a new instance of BoundingSphere. + Center point of the sphere. + Radius of the sphere. + + + The center point of the sphere. + + + Checks whether the current BoundingSphere contains the specified BoundingBox. + The BoundingBox to check against the current BoundingSphere. + + + Checks whether the current BoundingSphere contains the specified BoundingBox. + The BoundingBox to test for overlap. + [OutAttribute] Enumeration indicating the extent of overlap. + + + Checks whether the current BoundingSphere contains the specified BoundingFrustum. + The BoundingFrustum to check against the current BoundingSphere. + + + Checks whether the current BoundingSphere contains the specified BoundingSphere. + The BoundingSphere to check against the current BoundingSphere. + + + Checks whether the current BoundingSphere contains the specified BoundingSphere. + The BoundingSphere to test for overlap. + [OutAttribute] Enumeration indicating the extent of overlap. + + + Checks whether the current BoundingSphere contains the specified point. + The point to check against the current BoundingSphere. + + + Checks whether the current BoundingSphere contains the specified point. + The point to test for overlap. + [OutAttribute] Enumeration indicating the extent of overlap. + + + Creates the smallest BoundingSphere that can contain a specified BoundingBox. + The BoundingBox to create the BoundingSphere from. + + + Creates the smallest BoundingSphere that can contain a specified BoundingBox. + The BoundingBox to create the BoundingSphere from. + [OutAttribute] The created BoundingSphere. + + + Creates the smallest BoundingSphere that can contain a specified BoundingFrustum. + The BoundingFrustum to create the BoundingSphere with. + + + Creates a BoundingSphere that can contain a specified list of points. + List of points the BoundingSphere must contain. + + + Creates a BoundingSphere that contains the two specified BoundingSphere instances. + BoundingSphere to be merged. + BoundingSphere to be merged. + + + Creates a BoundingSphere that contains the two specified BoundingSphere instances. + BoundingSphere to be merged. + BoundingSphere to be merged. + [OutAttribute] The created BoundingSphere. + + + Determines whether the specified BoundingSphere is equal to the current BoundingSphere. + The BoundingSphere to compare with the current BoundingSphere. + + + Determines whether the specified Object is equal to the BoundingSphere. + The Object to compare with the current BoundingSphere. + + + Gets the hash code for this instance. + + + Checks whether the current BoundingSphere intersects with a specified BoundingBox. + The BoundingBox to check for intersection with the current BoundingSphere. + + + Checks whether the current BoundingSphere intersects a BoundingBox. + The BoundingBox to check for intersection with. + [OutAttribute] true if the BoundingSphere and BoundingBox intersect; false otherwise. + + + Checks whether the current BoundingSphere intersects with a specified BoundingFrustum. + The BoundingFrustum to check for intersection with the current BoundingSphere. + + + Checks whether the current BoundingSphere intersects with a specified BoundingSphere. + The BoundingSphere to check for intersection with the current BoundingSphere. + + + Checks whether the current BoundingSphere intersects another BoundingSphere. + The BoundingSphere to check for intersection with. + [OutAttribute] true if the BoundingSphere instances intersect; false otherwise. + + + Checks whether the current BoundingSphere intersects with a specified Plane. + The Plane to check for intersection with the current BoundingSphere. + + + Checks whether the current BoundingSphere intersects a Plane. + The Plane to check for intersection with. + [OutAttribute] An enumeration indicating whether the BoundingSphere intersects the Plane. + + + Checks whether the current BoundingSphere intersects with a specified Ray. + The Ray to check for intersection with the current BoundingSphere. + + + Checks whether the current BoundingSphere intersects a Ray. + The Ray to check for intersection with. + [OutAttribute] Distance at which the ray intersects the BoundingSphere or null if there is no intersection. + + + Determines whether two instances of BoundingSphere are equal. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Determines whether two instances of BoundingSphere are not equal. + The BoundingSphere to the left of the inequality operator. + The BoundingSphere to the right of the inequality operator. + + + The radius of the sphere. + + + Returns a String that represents the current BoundingSphere. + + + Translates and scales the BoundingSphere using a given Matrix. + A transformation matrix that might include translation, rotation, or uniform scaling. Note that BoundingSphere.Transform will not return correct results if there are non-uniform scaling, shears, or other unusual transforms in this transformation matrix. This is because there is no way to shear or non-uniformly scale a sphere. Such an operation would cause the sphere to lose its shape as a sphere. + + + Translates and scales the BoundingSphere using a given Matrix. + A transformation matrix that might include translation, rotation, or uniform scaling. Note that BoundingSphere.Transform will not return correct results if there are non-uniform scaling, shears, or other unusual transforms in this transformation matrix. This is because there is no way to shear or non-uniformly scale a sphere. Such an operation would cause the sphere to lose its shape as a sphere. + [OutAttribute] The transformed BoundingSphere. + + + Represents a four-component color using red, green, blue, and alpha data. + + + Creates a new instance of the class. + A three-component color. + + + Creates a new instance of the class. + A four-component color. + + + Creates a new instance of the class. + Red component. + Green component. + Blue component. + + + Creates a new instance of the class. + Red component. + Green component. + Blue component. + Alpha component. + + + Creates a new instance of the class. + Red component. + Green component. + Blue component. + + + Creates a new instance of the class. + Red component. + Green component. + Blue component. + Alpha component. + + + Gets or sets the alpha component value. + + + Gets a system-defined color with the value R:240 G:248 B:255 A:255. + + + Gets a system-defined color with the value R:250 G:235 B:215 A:255. + + + Gets a system-defined color with the value R:0 G:255 B:255 A:255. + + + Gets a system-defined color with the value R:127 G:255 B:212 A:255. + + + Gets a system-defined color with the value R:240 G:255 B:255 A:255. + + + Gets or sets the blue component value of this Color. + + + Gets a system-defined color with the value R:245 G:245 B:220 A:255. + + + Gets a system-defined color with the value R:255 G:228 B:196 A:255. + + + Gets a system-defined color with the value R:0 G:0 B:0 A:255. + + + Gets a system-defined color with the value R:255 G:235 B:205 A:255. + + + Gets a system-defined color with the value R:0 G:0 B:255 A:255. + + + Gets a system-defined color with the value R:138 G:43 B:226 A:255. + + + Gets a system-defined color with the value R:165 G:42 B:42 A:255. + + + Gets a system-defined color with the value R:222 G:184 B:135 A:255. + + + Gets a system-defined color with the value R:95 G:158 B:160 A:255. + + + Gets a system-defined color with the value R:127 G:255 B:0 A:255. + + + Gets a system-defined color with the value R:210 G:105 B:30 A:255. + + + Gets a system-defined color with the value R:255 G:127 B:80 A:255. + + + Gets a system-defined color with the value R:100 G:149 B:237 A:255. + + + Gets a system-defined color with the value R:255 G:248 B:220 A:255. + + + Gets a system-defined color with the value R:220 G:20 B:60 A:255. + + + Gets a system-defined color with the value R:0 G:255 B:255 A:255. + + + Gets a system-defined color with the value R:0 G:0 B:139 A:255. + + + Gets a system-defined color with the value R:0 G:139 B:139 A:255. + + + Gets a system-defined color with the value R:184 G:134 B:11 A:255. + + + Gets a system-defined color with the value R:169 G:169 B:169 A:255. + + + Gets a system-defined color with the value R:0 G:100 B:0 A:255. + + + Gets a system-defined color with the value R:189 G:183 B:107 A:255. + + + Gets a system-defined color with the value R:139 G:0 B:139 A:255. + + + Gets a system-defined color with the value R:85 G:107 B:47 A:255. + + + Gets a system-defined color with the value R:255 G:140 B:0 A:255. + + + Gets a system-defined color with the value R:153 G:50 B:204 A:255. + + + Gets a system-defined color with the value R:139 G:0 B:0 A:255. + + + Gets a system-defined color with the value R:233 G:150 B:122 A:255. + + + Gets a system-defined color with the value R:143 G:188 B:139 A:255. + + + Gets a system-defined color with the value R:72 G:61 B:139 A:255. + + + Gets a system-defined color with the value R:47 G:79 B:79 A:255. + + + Gets a system-defined color with the value R:0 G:206 B:209 A:255. + + + Gets a system-defined color with the value R:148 G:0 B:211 A:255. + + + Gets a system-defined color with the value R:255 G:20 B:147 A:255. + + + Gets a system-defined color with the value R:0 G:191 B:255 A:255. + + + Gets a system-defined color with the value R:105 G:105 B:105 A:255. + + + Gets a system-defined color with the value R:30 G:144 B:255 A:255. + + + Test a color to see if it is equal to the color in this instance. + A four-component color. + + + Test an instance of a color object to see if it is equal to this object. + A color object. + + + Gets a system-defined color with the value R:178 G:34 B:34 A:255. + + + Gets a system-defined color with the value R:255 G:250 B:240 A:255. + + + Gets a system-defined color with the value R:34 G:139 B:34 A:255. + + + Convert a non premultipled color into color data that contains alpha. + A four-component color. + + + Converts a non-premultipled alpha color to a color that contains premultiplied alpha. + Red component. + Green component. + Blue component. + Alpha component. + + + Gets a system-defined color with the value R:255 G:0 B:255 A:255. + + + Gets or sets the green component value of this Color. + + + Gets a system-defined color with the value R:220 G:220 B:220 A:255. + + + Serves as a hash function for a particular type. + + + Gets a system-defined color with the value R:248 G:248 B:255 A:255. + + + Gets a system-defined color with the value R:255 G:215 B:0 A:255. + + + Gets a system-defined color with the value R:218 G:165 B:32 A:255. + + + Gets a system-defined color with the value R:128 G:128 B:128 A:255. + + + Gets a system-defined color with the value R:0 G:128 B:0 A:255. + + + Gets a system-defined color with the value R:173 G:255 B:47 A:255. + + + Gets a system-defined color with the value R:240 G:255 B:240 A:255. + + + Gets a system-defined color with the value R:255 G:105 B:180 A:255. + + + Gets a system-defined color with the value R:205 G:92 B:92 A:255. + + + Gets a system-defined color with the value R:75 G:0 B:130 A:255. + + + Gets a system-defined color with the value R:255 G:255 B:240 A:255. + + + Gets a system-defined color with the value R:240 G:230 B:140 A:255. + + + Gets a system-defined color with the value R:230 G:230 B:250 A:255. + + + Gets a system-defined color with the value R:255 G:240 B:245 A:255. + + + Gets a system-defined color with the value R:124 G:252 B:0 A:255. + + + Gets a system-defined color with the value R:255 G:250 B:205 A:255. + + + Linearly interpolate a color. + A four-component color. + A four-component color. + Interpolation factor. + + + Gets a system-defined color with the value R:173 G:216 B:230 A:255. + + + Gets a system-defined color with the value R:240 G:128 B:128 A:255. + + + Gets a system-defined color with the value R:224 G:255 B:255 A:255. + + + Gets a system-defined color with the value R:250 G:250 B:210 A:255. + + + Gets a system-defined color with the value R:211 G:211 B:211 A:255. + + + Gets a system-defined color with the value R:144 G:238 B:144 A:255. + + + Gets a system-defined color with the value R:255 G:182 B:193 A:255. + + + Gets a system-defined color with the value R:255 G:160 B:122 A:255. + + + Gets a system-defined color with the value R:32 G:178 B:170 A:255. + + + Gets a system-defined color with the value R:135 G:206 B:250 A:255. + + + Gets a system-defined color with the value R:119 G:136 B:153 A:255. + + + Gets a system-defined color with the value R:176 G:196 B:222 A:255. + + + Gets a system-defined color with the value R:255 G:255 B:224 A:255. + + + Gets a system-defined color with the value R:0 G:255 B:0 A:255. + + + Gets a system-defined color with the value R:50 G:205 B:50 A:255. + + + Gets a system-defined color with the value R:250 G:240 B:230 A:255. + + + Gets a system-defined color with the value R:255 G:0 B:255 A:255. + + + Gets a system-defined color with the value R:128 G:0 B:0 A:255. + + + Gets a system-defined color with the value R:102 G:205 B:170 A:255. + + + Gets a system-defined color with the value R:0 G:0 B:205 A:255. + + + Gets a system-defined color with the value R:186 G:85 B:211 A:255. + + + Gets a system-defined color with the value R:147 G:112 B:219 A:255. + + + Gets a system-defined color with the value R:60 G:179 B:113 A:255. + + + Gets a system-defined color with the value R:123 G:104 B:238 A:255. + + + Gets a system-defined color with the value R:0 G:250 B:154 A:255. + + + Gets a system-defined color with the value R:72 G:209 B:204 A:255. + + + Gets a system-defined color with the value R:199 G:21 B:133 A:255. + + + Pack a four-component color from a vector format into the format of a color object. + A four-component color. + + + Gets a system-defined color with the value R:25 G:25 B:112 A:255. + + + Gets a system-defined color with the value R:245 G:255 B:250 A:255. + + + Gets a system-defined color with the value R:255 G:228 B:225 A:255. + + + Gets a system-defined color with the value R:255 G:228 B:181 A:255. + + + Multiply each color component by the scale factor. + The source, four-component color. + The scale factor. + + + Gets a system-defined color with the value R:255 G:222 B:173 A:255. + + + Gets a system-defined color R:0 G:0 B:128 A:255. + + + Gets a system-defined color with the value R:253 G:245 B:230 A:255. + + + Gets a system-defined color with the value R:128 G:128 B:0 A:255. + + + Gets a system-defined color with the value R:107 G:142 B:35 A:255. + + + Equality operator. + A four-component color. + A four-component color. + + + Equality operator for Testing two color objects to see if they are equal. + A four-component color. + A four-component color. + + + Multiply operator. + A four-component color + Scale factor. + + + Gets a system-defined color with the value R:255 G:165 B:0 A:255. + + + Gets a system-defined color with the value R:255 G:69 B:0 A:255. + + + Gets a system-defined color with the value R:218 G:112 B:214 A:255. + + + Gets the current color as a packed value. + + + Gets a system-defined color with the value R:238 G:232 B:170 A:255. + + + Gets a system-defined color with the value R:152 G:251 B:152 A:255. + + + Gets a system-defined color with the value R:175 G:238 B:238 A:255. + + + Gets a system-defined color with the value R:219 G:112 B:147 A:255. + + + Gets a system-defined color with the value R:255 G:239 B:213 A:255. + + + Gets a system-defined color with the value R:255 G:218 B:185 A:255. + + + Gets a system-defined color with the value R:205 G:133 B:63 A:255. + + + Gets a system-defined color with the value R:255 G:192 B:203 A:255. + + + Gets a system-defined color with the value R:221 G:160 B:221 A:255. + + + Gets a system-defined color with the value R:176 G:224 B:230 A:255. + + + Gets a system-defined color with the value R:128 G:0 B:128 A:255. + + + Gets or sets the red component value of this Color. + + + Gets a system-defined color with the value R:255 G:0 B:0 A:255. + + + Gets a system-defined color with the value R:188 G:143 B:143 A:255. + + + Gets a system-defined color with the value R:65 G:105 B:225 A:255. + + + Gets a system-defined color with the value R:139 G:69 B:19 A:255. + + + Gets a system-defined color with the value R:250 G:128 B:114 A:255. + + + Gets a system-defined color with the value R:244 G:164 B:96 A:255. + + + Gets a system-defined color with the value R:46 G:139 B:87 A:255. + + + Gets a system-defined color with the value R:255 G:245 B:238 A:255. + + + Gets a system-defined color with the value R:160 G:82 B:45 A:255. + + + Gets a system-defined color with the value R:192 G:192 B:192 A:255. + + + Gets a system-defined color with the value R:135 G:206 B:235 A:255. + + + Gets a system-defined color with the value R:106 G:90 B:205 A:255. + + + Gets a system-defined color with the value R:112 G:128 B:144 A:255. + + + Gets a system-defined color with the value R:255 G:250 B:250 A:255. + + + Gets a system-defined color with the value R:0 G:255 B:127 A:255. + + + Gets a system-defined color with the value R:70 G:130 B:180 A:255. + + + Gets a system-defined color with the value R:210 G:180 B:140 A:255. + + + Gets a system-defined color with the value R:0 G:128 B:128 A:255. + + + Gets a system-defined color with the value R:216 G:191 B:216 A:255. + + + Gets a system-defined color with the value R:255 G:99 B:71 A:255. + + + Gets a string representation of this object. + + + Gets a three-component vector representation for this object. + + + Gets a four-component vector representation for this object. + + + Gets a system-defined color with the value R:0 G:0 B:0 A:0. + + + Gets a system-defined color with the value R:64 G:224 B:208 A:255. + + + Gets a system-defined color with the value R:238 G:130 B:238 A:255. + + + Gets a system-defined color with the value R:245 G:222 B:179 A:255. + + + Gets a system-defined color with the value R:255 G:255 B:255 A:255. + + + Gets a system-defined color with the value R:245 G:245 B:245 A:255. + + + Gets a system-defined color with the value R:255 G:255 B:0 A:255. + + + Gets a system-defined color with the value R:154 G:205 B:50 A:255. + + + Indicates the extent to which bounding volumes intersect or contain one another. + + + Indicates that one bounding volume completely contains the other. + + + Indicates there is no overlap between the bounding volumes. + + + Indicates that the bounding volumes partially overlap. + + + Stores an arbitrary collection of 2D CurveKey points, and provides methods for evaluating features of the curve they define. + + + Initializes a new instance of Curve. + + + Creates a copy of the Curve. + + + Computes both the TangentIn and the TangentOut for a CurveKey specified by its index. + The index of the CurveKey for which to compute tangents (in the Keys collection of the Curve). + The type of tangents to compute (one of the types specified in the CurveTangent enumeration). + + + Computes a specified type of TangentIn and a specified type of TangentOut for a given CurveKey. + The index of the CurveKey for which to compute tangents (in the Keys collection of the Curve). + The type of TangentIn to compute (one of the types specified in the CurveTangent enumeration). + The type of TangentOut to compute (one of the types specified in the CurveTangent enumeration). + + + Computes all tangents for all CurveKeys in this Curve, using a specified tangent type for both TangentIn and TangentOut. + The type of TangentOut and TangentIn to compute (one of the types specified in the CurveTangent enumeration). + + + Computes all tangents for all CurveKeys in this Curve, using different tangent types for TangentOut and TangentIn. + The type of TangentIn to compute (one of the types specified in the CurveTangent enumeration). + The type of TangentOut to compute (one of the types specified in the CurveTangent enumeration). + + + Finds the value at a position on the Curve. + The position on the Curve. + + + Gets a value indicating whether the curve is constant. + + + The points that make up the curve. + + + Specifies how to handle weighting values that are greater than the last control point in the curve. + + + Specifies how to handle weighting values that are less than the first control point in the curve. + + + Defines the continuity of CurveKeys on a Curve. + + + Interpolation can be used between this CurveKey and the next. + + + Interpolation cannot be used between this CurveKey and the next. Specifying a position between the two points returns this point. + + + Represents a point in a multi-point curve. + + + Initializes a new instance of CurveKey. + Position in the curve. + Value of the control point. + + + Initializes a new instance of CurveKey. + Position in the curve. + Value of the control point. + Tangent approaching point from the previous point in the curve. + Tangent leaving point toward next point in the curve. + + + Initializes a new instance of CurveKey. + Position in the curve. + Value of the control point. + Tangent approaching point from the previous point in the curve. + Tangent leaving point toward next point in the curve. + Enum indicating whether the curve is discrete or continuous. + + + Creates a copy of the CurveKey. + + + Compares this instance to another CurveKey and returns an indication of their relative values. + CurveKey to compare to. + + + Describes whether the segment between this point and the next point in the curve is discrete or continuous. + + + Determines whether the specified Object is equal to the CurveKey. + The Object to compare with the current CurveKey. + + + Returns a value that indicates whether the current instance is equal to a specified object. + Object with which to make the comparison. + + + Returns the hash code for this instance. + + + Determines whether two CurveKey instances are equal. + CurveKey on the left of the equal sign. + CurveKey on the right of the equal sign. + + + Determines whether two CurveKey instances are not equal. + CurveKey on the left of the equal sign. + CurveKey on the right of the equal sign. + + + Position of the CurveKey in the curve. + + + Describes the tangent when approaching this point from the previous point in the curve. + + + Describes the tangent when leaving this point to the next point in the curve. + + + Describes the value of this point. + + + Contains the CurveKeys making up a Curve. + + + Initializes a new instance of CurveKeyCollection. + + + Adds a CurveKey to the CurveKeyCollection. + The CurveKey to add. + + + Removes all CurveKeys from the CurveKeyCollection. + + + Creates a copy of the CurveKeyCollection. + + + Determines whether the CurveKeyCollection contains a specific CurveKey. + true if the CurveKey is found in the CurveKeyCollection; false otherwise. + + + Copies the CurveKeys of the CurveKeyCollection to an array, starting at the array index provided. + The destination of the CurveKeys copied from CurveKeyCollection. The array must have zero-based indexing. + The zero-based index in the array to start copying from. + + + Gets the number of elements contained in the CurveKeyCollection. + + + Returns an enumerator that iterates through the CurveKeyCollection. + + + Determines the index of a CurveKey in the CurveKeyCollection. + CurveKey to locate in the CurveKeyCollection. + + + Returns a value indicating whether the CurveKeyCollection is read-only. + + + Gets or sets the element at the specified index. + The array index of the element. + + + Removes the first occurrence of a specific CurveKey from the CurveKeyCollection. + The CurveKey to remove from the CurveKeyCollection. + + + Removes the CurveKey at the specified index. + The zero-based index of the item to remove. + + + Returns an enumerator that iterates through the CurveKeyCollection. + + + Defines how the value of a Curve will be determined for positions before the first point on the Curve or after the last point on the Curve. + + + The Curve will evaluate to its first key for positions before the first point in the Curve and to the last key for positions after the last point. + + + Positions specified past the ends of the curve will wrap around to the opposite side of the Curve. + + + Positions specified past the ends of the curve will wrap around to the opposite side of the Curve. The value will be offset by the difference between the values of the first and last CurveKey multiplied by the number of times the position wraps around. If the position is before the first point in the Curve, the difference will be subtracted from its value; otherwise, the difference will be added. + + + Linear interpolation will be performed to determine the value. + + + Positions specified past the ends of the Curve act as an offset from the same side of the Curve toward the opposite side. + + + Specifies different tangent types to be calculated for CurveKey points in a Curve. + + + A Flat tangent always has a value equal to zero. + + + A Linear tangent at a CurveKey is equal to the difference between its Value and the Value of the preceding or succeeding CurveKey. For example, in Curve MyCurve, where i is greater than zero and (i + 1) is less than the total number of CurveKeys in MyCurve, the linear TangentIn of MyCurve.Keys[i] is equal to: ( MyCurve.Keys[i].Value - MyCurve.Keys[i - 1].Value ) Similarly, the linear TangentOut is equal to: ( MyCurve.Keys[i + 1].Value - MyCurve.Keys[i].Value.) + + + A Smooth tangent smooths the inflection between a TangentIn and TangentOut by taking into account the values of both neighbors of the CurveKey. The smooth TangentIn of MyCurve.Keys[i] is equal to: ( ( MyCurve.Keys[i + 1].Value - MyCurve.Keys[i - 1].Value ) * ( ( MyCurve.Keys[i].Position - MyCurve.Keys[i - 1].Position ) / ( MyCurve.Keys[i + 1].Position - MyCurve.Keys[i-1].Position ) ) ) Similarly, the smooth TangentOut is equal to: ( ( MyCurve.Keys[i + 1].Value - MyCurve.Keys[i - 1].Value ) * ( ( MyCurve.Keys[i + 1].Position - MyCurve.Keys[i].Position ) / ( MyCurve.Keys[i + 1].Position - MyCurve.Keys[i - 1].Position ) ) ) + + + Defines the display orientation. + + + The default display orientation. + + + The display is rotated counterclockwise 90 degrees into a landscape orientation, where the width is greater than the height. + + + The display is rotated clockwise 90 degrees into a landscape orientation, where the width is greater than the height. + + + The orientation is a portrait, where the height is greater than the width. + + + Processes XNA Framework event messages. + + + Updates the status of various framework components (such as power state and media), and raises related events. + + + Contains commonly used precalculated values. + + + Returns the Cartesian coordinate for one axis of a point that is defined by a given triangle and two normalized barycentric (areal) coordinates. + The coordinate on one axis of vertex 1 of the defining triangle. + The coordinate on the same axis of vertex 2 of the defining triangle. + The coordinate on the same axis of vertex 3 of the defining triangle. + The normalized barycentric (areal) coordinate b2, equal to the weighting factor for vertex 2, the coordinate of which is specified in value2. + The normalized barycentric (areal) coordinate b3, equal to the weighting factor for vertex 3, the coordinate of which is specified in value3. + + + Performs a Catmull-Rom interpolation using the specified positions. + The first position in the interpolation. + The second position in the interpolation. + The third position in the interpolation. + The fourth position in the interpolation. + Weighting factor. + + + Restricts a value to be within a specified range. Reference page contains links to related code samples. + The value to clamp. + The minimum value. If value is less than min, min will be returned. + The maximum value. If value is greater than max, max will be returned. + + + Calculates the absolute value of the difference of two values. + Source value. + Source value. + + + Represents the mathematical constant e. + + + Performs a Hermite spline interpolation. + Source position. + Source tangent. + Source position. + Source tangent. + Weighting factor. + + + Linearly interpolates between two values. + Source value. + Source value. + Value between 0 and 1 indicating the weight of value2. + + + Represents the log base ten of e. + + + Represents the log base two of e. + + + Returns the greater of two values. + Source value. + Source value. + + + Returns the lesser of two values. + Source value. + Source value. + + + Represents the value of pi. + + + Represents the value of pi divided by two. + + + Represents the value of pi divided by four. + + + Interpolates between two values using a cubic equation. + Source value. + Source value. + Weighting value. + + + Converts radians to degrees. + The angle in radians. + + + Converts degrees to radians. + The angle in degrees. + + + Represents the value of pi times two. + + + Reduces a given angle to a value between π and -π. + The angle to reduce, in radians. + + + Defines a matrix. + + + Initializes a new instance of Matrix. + Value to initialize m11 to. + Value to initialize m12 to. + Value to initialize m13 to. + Value to initialize m14 to. + Value to initialize m21 to. + Value to initialize m22 to. + Value to initialize m23 to. + Value to initialize m24 to. + Value to initialize m31 to. + Value to initialize m32 to. + Value to initialize m33 to. + Value to initialize m34 to. + Value to initialize m41 to. + Value to initialize m42 to. + Value to initialize m43 to. + Value to initialize m44 to. + + + Adds a matrix to another matrix. + Source matrix. + Source matrix. + + + Adds a matrix to another matrix. + Source matrix. + Source matrix. + [OutAttribute] Resulting matrix. + + + Gets and sets the backward vector of the Matrix. + + + Creates a spherical billboard that rotates around a specified object position. + Position of the object the billboard will rotate around. + Position of the camera. + The up vector of the camera. + Optional forward vector of the camera. + + + Creates a spherical billboard that rotates around a specified object position. + Position of the object the billboard will rotate around. + Position of the camera. + The up vector of the camera. + Optional forward vector of the camera. + [OutAttribute] The created billboard matrix. + + + Creates a cylindrical billboard that rotates around a specified axis. + Position of the object the billboard will rotate around. + Position of the camera. + Axis to rotate the billboard around. + Optional forward vector of the camera. + Optional forward vector of the object. + + + Creates a cylindrical billboard that rotates around a specified axis. + Position of the object the billboard will rotate around. + Position of the camera. + Axis to rotate the billboard around. + Optional forward vector of the camera. + Optional forward vector of the object. + [OutAttribute] The created billboard matrix. + + + Creates a new Matrix that rotates around an arbitrary vector. + The axis to rotate around. + The angle to rotate around the vector. + + + Creates a new Matrix that rotates around an arbitrary vector. + The axis to rotate around. + The angle to rotate around the vector. + [OutAttribute] The created Matrix. + + + Creates a rotation Matrix from a Quaternion. + Quaternion to create the Matrix from. + + + Creates a rotation Matrix from a Quaternion. + Quaternion to create the Matrix from. + [OutAttribute] The created Matrix. + + + Creates a new rotation matrix from a specified yaw, pitch, and roll. + Angle of rotation, in radians, around the y-axis. + Angle of rotation, in radians, around the x-axis. + Angle of rotation, in radians, around the z-axis. + + + Fills in a rotation matrix from a specified yaw, pitch, and roll. + Angle of rotation, in radians, around the y-axis. + Angle of rotation, in radians, around the x-axis. + Angle of rotation, in radians, around the z-axis. + [OutAttribute] An existing matrix filled in to represent the specified yaw, pitch, and roll. + + + Creates a view matrix. + The position of the camera. + The target towards which the camera is pointing. + The direction that is "up" from the camera's point of view. + + + Creates a view matrix. + The position of the camera. + The target towards which the camera is pointing. + The direction that is "up" from the camera's point of view. + [OutAttribute] The created view matrix. + + + Builds an orthogonal projection matrix. + Width of the view volume. + Height of the view volume. + Minimum z-value of the view volume. + Maximum z-value of the view volume. + + + Builds an orthogonal projection matrix. + Width of the view volume. + Height of the view volume. + Minimum z-value of the view volume. + Maximum z-value of the view volume. + [OutAttribute] The projection matrix. + + + Builds a customized, orthogonal projection matrix. + Minimum x-value of the view volume. + Maximum x-value of the view volume. + Minimum y-value of the view volume. + Maximum y-value of the view volume. + Minimum z-value of the view volume. + Maximum z-value of the view volume. + + + Builds a customized, orthogonal projection matrix. + Minimum x-value of the view volume. + Maximum x-value of the view volume. + Minimum y-value of the view volume. + Maximum y-value of the view volume. + Minimum z-value of the view volume. + Maximum z-value of the view volume. + [OutAttribute] The projection matrix. + + + Builds a perspective projection matrix and returns the result by value. + Width of the view volume at the near view plane. + Height of the view volume at the near view plane. + Distance to the near view plane. + Distance to the far view plane. + + + Builds a perspective projection matrix and returns the result by reference. + Width of the view volume at the near view plane. + Height of the view volume at the near view plane. + Distance to the near view plane. + Distance to the far view plane. + [OutAttribute] The projection matrix. + + + Builds a perspective projection matrix based on a field of view and returns by value. + Field of view in the y direction, in radians. + Aspect ratio, defined as view space width divided by height. To match the aspect ratio of the viewport, the property AspectRatio. + Distance to the near view plane. + Distance to the far view plane. + + + Builds a perspective projection matrix based on a field of view and returns by reference. + Field of view in the y direction, in radians. + Aspect ratio, defined as view space width divided by height. To match the aspect ratio of the viewport, the property AspectRatio. + Distance to the near view plane. + Distance to the far view plane. + [OutAttribute] The perspective projection matrix. + + + Builds a customized, perspective projection matrix. + Minimum x-value of the view volume at the near view plane. + Maximum x-value of the view volume at the near view plane. + Minimum y-value of the view volume at the near view plane. + Maximum y-value of the view volume at the near view plane. + Distance to the near view plane. + Distance to of the far view plane. + + + Builds a customized, perspective projection matrix. + Minimum x-value of the view volume at the near view plane. + Maximum x-value of the view volume at the near view plane. + Minimum y-value of the view volume at the near view plane. + Maximum y-value of the view volume at the near view plane. + Distance to the near view plane. + Distance to of the far view plane. + [OutAttribute] The created projection matrix. + + + Creates a Matrix that reflects the coordinate system about a specified Plane. + The Plane about which to create a reflection. + + + Fills in an existing Matrix so that it reflects the coordinate system about a specified Plane. + The Plane about which to create a reflection. + [OutAttribute] A Matrix that creates the reflection. + + + Returns a matrix that can be used to rotate a set of vertices around the x-axis. + The amount, in radians, in which to rotate around the x-axis. Note that you can use ToRadians to convert degrees to radians. + + + Populates data into a user-specified matrix that can be used to rotate a set of vertices around the x-axis. + The amount, in radians, in which to rotate around the x-axis. Note that you can use ToRadians to convert degrees to radians. + [OutAttribute] The matrix in which to place the calculated data. + + + Returns a matrix that can be used to rotate a set of vertices around the y-axis. + The amount, in radians, in which to rotate around the y-axis. Note that you can use ToRadians to convert degrees to radians. + + + Populates data into a user-specified matrix that can be used to rotate a set of vertices around the y-axis. + The amount, in radians, in which to rotate around the y-axis. Note that you can use ToRadians to convert degrees to radians. + [OutAttribute] The matrix in which to place the calculated data. + + + Returns a matrix that can be used to rotate a set of vertices around the z-axis. + The amount, in radians, in which to rotate around the z-axis. Note that you can use ToRadians to convert degrees to radians. + + + Populates data into a user-specified matrix that can be used to rotate a set of vertices around the z-axis. + The amount, in radians, in which to rotate around the z-axis. Note that you can use ToRadians to convert degrees to radians. + [OutAttribute] The rotation matrix. + + + Creates a scaling Matrix. + Amounts to scale by on the x, y, and z axes. + + + Creates a scaling Matrix. + Amounts to scale by on the x, y, and z axes. + [OutAttribute] The created scaling Matrix. + + + Creates a scaling Matrix. + Amount to scale by. + + + Creates a scaling Matrix. + Value to scale by. + [OutAttribute] The created scaling Matrix. + + + Creates a scaling Matrix. + Value to scale by on the x-axis. + Value to scale by on the y-axis. + Value to scale by on the z-axis. + + + Creates a scaling Matrix. + Value to scale by on the x-axis. + Value to scale by on the y-axis. + Value to scale by on the z-axis. + [OutAttribute] The created scaling Matrix. + + + Creates a Matrix that flattens geometry into a specified Plane as if casting a shadow from a specified light source. + A Vector3 specifying the direction from which the light that will cast the shadow is coming. + The Plane onto which the new matrix should flatten geometry so as to cast a shadow. + + + Fills in a Matrix to flatten geometry into a specified Plane as if casting a shadow from a specified light source. + A Vector3 specifying the direction from which the light that will cast the shadow is coming. + The Plane onto which the new matrix should flatten geometry so as to cast a shadow. + [OutAttribute] A Matrix that can be used to flatten geometry onto the specified plane from the specified direction. + + + Creates a translation Matrix. + Amounts to translate by on the x, y, and z axes. + + + Creates a translation Matrix. + Amounts to translate by on the x, y, and z axes. + [OutAttribute] The created translation Matrix. + + + Creates a translation Matrix. + Value to translate by on the x-axis. + Value to translate by on the y-axis. + Value to translate by on the z-axis. + + + Creates a translation Matrix. + Value to translate by on the x-axis. + Value to translate by on the y-axis. + Value to translate by on the z-axis. + [OutAttribute] The created translation Matrix. + + + Creates a world matrix with the specified parameters. + Position of the object. This value is used in translation operations. + Forward direction of the object. + Upward direction of the object; usually [0, 1, 0]. + + + Creates a world matrix with the specified parameters. + Position of the object. This value is used in translation operations. + Forward direction of the object. + Upward direction of the object; usually [0, 1, 0]. + [OutAttribute] The created world matrix. + + + Extracts the scalar, translation, and rotation components from a 3D scale/rotate/translate (SRT) Matrix. Reference page contains code sample. + [OutAttribute] The scalar component of the transform matrix, expressed as a Vector3. + [OutAttribute] The rotation component of the transform matrix, expressed as a Quaternion. + [OutAttribute] The translation component of the transform matrix, expressed as a Vector3. + + + Calculates the determinant of the matrix. + + + Divides the components of a matrix by the corresponding components of another matrix. + Source matrix. + The divisor. + + + Divides the components of a matrix by a scalar. + Source matrix. + The divisor. + + + Divides the components of a matrix by the corresponding components of another matrix. + Source matrix. + The divisor. + [OutAttribute] Result of the division. + + + Divides the components of a matrix by a scalar. + Source matrix. + The divisor. + [OutAttribute] Result of the division. + + + Gets and sets the down vector of the Matrix. + + + Determines whether the specified Object is equal to the Matrix. + The Object to compare with the current Matrix. + + + Returns a value that indicates whether the current instance is equal to a specified object. + Object with which to make the comparison. + + + Gets and sets the forward vector of the Matrix. + + + Gets the hash code of this object. + + + Returns an instance of the identity matrix. + + + Calculates the inverse of a matrix. + Source matrix. + + + Calculates the inverse of a matrix. + The source matrix. + [OutAttribute] The inverse of matrix. The same matrix can be used for both arguments. + + + Gets and sets the left vector of the Matrix. + + + Linearly interpolates between the corresponding values of two matrices. + Source matrix. + Source matrix. + Interpolation value. + + + Linearly interpolates between the corresponding values of two matrices. + Source matrix. + Source matrix. + Interpolation value. + [OutAttribute] Resulting matrix. + + + Value at row 1 column 1 of the matrix. + + + Value at row 1 column 2 of the matrix. + + + Value at row 1 column 3 of the matrix. + + + Value at row 1 column 4 of the matrix. + + + Value at row 2 column 1 of the matrix. + + + Value at row 2 column 2 of the matrix. + + + Value at row 2 column 3 of the matrix. + + + Value at row 2 column 4 of the matrix. + + + Value at row 3 column 1 of the matrix. + + + Value at row 3 column 2 of the matrix. + + + Value at row 3 column 3 of the matrix. + + + Value at row 3 column 4 of the matrix. + + + Value at row 4 column 1 of the matrix. + + + Value at row 4 column 2 of the matrix. + + + Value at row 4 column 3 of the matrix. + + + Value at row 4 column 4 of the matrix. + + + Multiplies a matrix by another matrix. + Source matrix. + Source matrix. + + + Multiplies a matrix by a scalar value. + Source matrix. + Scalar value. + + + Multiplies a matrix by another matrix. + Source matrix. + Source matrix. + [OutAttribute] Result of the multiplication. + + + Multiplies a matrix by a scalar value. + Source matrix. + Scalar value. + [OutAttribute] The result of the multiplication. + + + Negates individual elements of a matrix. + Source matrix. + + + Negates individual elements of a matrix. + Source matrix. + [OutAttribute] Negated matrix. + + + Adds a matrix to another matrix. + Source matrix. + Source matrix. + + + Divides the components of a matrix by the corresponding components of another matrix. + Source matrix. + The divisor. + + + Divides the components of a matrix by a scalar. + Source matrix. + The divisor. + + + Compares a matrix for equality with another matrix. + Source matrix. + Source matrix. + + + Tests a matrix for inequality with another matrix. + The matrix on the left of the equal sign. + The matrix on the right of the equal sign. + + + Multiplies a matrix by another matrix. + Source matrix. + Source matrix. + + + Multiplies a matrix by a scalar value. + Source matrix. + Scalar value. + + + Multiplies a matrix by a scalar value. + Scalar value. + Source matrix. + + + Subtracts matrices. + Source matrix. + Source matrix. + + + Negates individual elements of a matrix. + Source matrix. + + + Gets and sets the right vector of the Matrix. + + + Subtracts matrices. + Source matrix. + Source matrix. + + + Subtracts matrices. + Source matrix. + Source matrix. + [OutAttribute] Result of the subtraction. + + + Retrieves a string representation of the current object. + + + Transforms a Matrix by applying a Quaternion rotation. + The Matrix to transform. + The rotation to apply, expressed as a Quaternion. + + + Transforms a Matrix by applying a Quaternion rotation. + The Matrix to transform. + The rotation to apply, expressed as a Quaternion. + [OutAttribute] An existing Matrix filled in with the result of the transform. + + + Gets and sets the translation vector of the Matrix. + + + Transposes the rows and columns of a matrix. + Source matrix. + + + Transposes the rows and columns of a matrix. + Source matrix. + [OutAttribute] Transposed matrix. + + + Gets and sets the up vector of the Matrix. + + + Defines a plane. + + + Creates a new instance of Plane. + One point of a triangle defining the Plane. + One point of a triangle defining the Plane. + One point of a triangle defining the Plane. + + + Creates a new instance of Plane. + The normal vector to the Plane. + The Plane's distance along its normal from the origin. + + + Creates a new instance of Plane. + Vector4 with X, Y, and Z components defining the normal of the Plane. The W component defines the distance of the Plane along the normal from the origin. + + + Creates a new instance of Plane. + X component of the normal defining the Plane. + Y component of the normal defining the Plane. + Z component of the normal defining the Plane. + Distance of the Plane along its normal from the origin. + + + The distance of the Plane along its normal from the origin. + + + Calculates the dot product of a specified Vector4 and this Plane. + The Vector4 to multiply this Plane by. + + + Calculates the dot product of a specified Vector4 and this Plane. + The Vector4 to multiply this Plane by. + [OutAttribute] The dot product of the specified Vector4 and this Plane. + + + Returns the dot product of a specified Vector3 and the Normal vector of this Plane plus the distance (D) value of the Plane. + The Vector3 to multiply by. + + + Returns the dot product of a specified Vector3 and the Normal vector of this Plane plus the distance (D) value of the Plane. + The Vector3 to multiply by. + [OutAttribute] The resulting value. + + + Returns the dot product of a specified Vector3 and the Normal vector of this Plane. + The Vector3 to multiply by. + + + Returns the dot product of a specified Vector3 and the Normal vector of this Plane. + The Vector3 to multiply by. + [OutAttribute] The resulting dot product. + + + Determines whether the specified Plane is equal to the Plane. + The Plane to compare with the current Plane. + + + Determines whether the specified Object is equal to the Plane. + The Object to compare with the current Plane. + + + Gets the hash code for this object. + + + Checks whether the current Plane intersects a specified BoundingBox. + The BoundingBox to test for intersection with. + + + Checks whether the current Plane intersects a BoundingBox. + The BoundingBox to check for intersection with. + [OutAttribute] An enumeration indicating whether the Plane intersects the BoundingBox. + + + Checks whether the current Plane intersects a specified BoundingFrustum. + The BoundingFrustum to check for intersection with. + + + Checks whether the current Plane intersects a specified BoundingSphere. + The BoundingSphere to check for intersection with. + + + Checks whether the current Plane intersects a BoundingSphere. + The BoundingSphere to check for intersection with. + [OutAttribute] An enumeration indicating whether the Plane intersects the BoundingSphere. + + + The normal vector of the Plane. + + + Changes the coefficients of the Normal vector of this Plane to make it of unit length. + + + Changes the coefficients of the Normal vector of a Plane to make it of unit length. + The Plane to normalize. + + + Changes the coefficients of the Normal vector of a Plane to make it of unit length. + The Plane to normalize. + [OutAttribute] An existing plane Plane filled in with a normalized version of the specified plane. + + + Determines whether two instances of Plane are equal. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Determines whether two instances of Plane are not equal. + The object to the left of the inequality operator. + The object to the right of the inequality operator. + + + Returns a String that represents the current Plane. + + + Transforms a normalized Plane by a Matrix. + The normalized Plane to transform. This Plane must already be normalized, so that its Normal vector is of unit length, before this method is called. + The transform Matrix to apply to the Plane. + + + Transforms a normalized Plane by a Quaternion rotation. + The normalized Plane to transform. This Plane must already be normalized, so that its Normal vector is of unit length, before this method is called. + The Quaternion rotation to apply to the Plane. + + + Transforms a normalized Plane by a Matrix. + The normalized Plane to transform. This Plane must already be normalized, so that its Normal vector is of unit length, before this method is called. + The transform Matrix to apply to the Plane. + [OutAttribute] An existing Plane filled in with the results of applying the transform. + + + Transforms a normalized Plane by a Quaternion rotation. + The normalized Plane to transform. This Plane must already be normalized, so that its Normal vector is of unit length, before this method is called. + The Quaternion rotation to apply to the Plane. + [OutAttribute] An existing Plane filled in with the results of applying the rotation. + + + Describes the intersection between a plane and a bounding volume. + + + There is no intersection, and the bounding volume is in the negative half-space of the Plane. + + + There is no intersection, and the bounding volume is in the positive half-space of the Plane. + + + The Plane is intersected. + + + Specifies the game controller associated with a player. + + + The fourth controller. + + + The first controller. + + + The third controller. + + + The second controller. + + + Defines a point in 2D space. + + + Initializes a new instance of Point. + The x-coordinate of the Point. + The y-coordinate of the Point. + + + Determines whether two Point instances are equal. + The Point to compare this instance to. + + + Determines whether two Point instances are equal. + The object to compare this instance to. + + + Gets the hash code for this object. + + + Determines whether two Point instances are equal. + Point on the left side of the equal sign. + Point on the right side of the equal sign. + + + Determines whether two Point instances are not equal. + The Point on the left side of the equal sign. + The Point on the right side of the equal sign. + + + Returns a String that represents the current Point. + + + Specifies the x-coordinate of the Point. + + + Specifies the y-coordinate of the Point. + + + Returns the point (0,0). + + + Defines a four-dimensional vector (x,y,z,w), which is used to efficiently rotate an object about the (x, y, z) vector by the angle theta, where w = cos(theta/2). + + + Initializes a new instance of Quaternion. + The vector component of the quaternion. + The rotation component of the quaternion. + + + Initializes a new instance of Quaternion. + The x-value of the quaternion. + The y-value of the quaternion. + The z-value of the quaternion. + The w-value of the quaternion. + + + Adds two Quaternions. + Quaternion to add. + Quaternion to add. + + + Adds two Quaternions. + Quaternion to add. + Quaternion to add. + [OutAttribute] Result of adding the Quaternions. + + + Concatenates two Quaternions; the result represents the value1 rotation followed by the value2 rotation. + The first Quaternion rotation in the series. + The second Quaternion rotation in the series. + + + Concatenates two Quaternions; the result represents the value1 rotation followed by the value2 rotation. + The first Quaternion rotation in the series. + The second Quaternion rotation in the series. + [OutAttribute] The Quaternion rotation representing the concatenation of value1 followed by value2. + + + Transforms this Quaternion into its conjugate. + + + Returns the conjugate of a specified Quaternion. + The Quaternion of which to return the conjugate. + + + Returns the conjugate of a specified Quaternion. + The Quaternion of which to return the conjugate. + [OutAttribute] An existing Quaternion filled in to be the conjugate of the specified one. + + + Creates a Quaternion from a vector and an angle to rotate about the vector. + The vector to rotate around. + The angle to rotate around the vector. + + + Creates a Quaternion from a vector and an angle to rotate about the vector. + The vector to rotate around. + The angle to rotate around the vector. + [OutAttribute] The created Quaternion. + + + Creates a Quaternion from a rotation Matrix. + The rotation Matrix to create the Quaternion from. + + + Creates a Quaternion from a rotation Matrix. + The rotation Matrix to create the Quaternion from. + [OutAttribute] The created Quaternion. + + + Creates a new Quaternion from specified yaw, pitch, and roll angles. + The yaw angle, in radians, around the y-axis. + The pitch angle, in radians, around the x-axis. + The roll angle, in radians, around the z-axis. + + + Creates a new Quaternion from specified yaw, pitch, and roll angles. + The yaw angle, in radians, around the y-axis. + The pitch angle, in radians, around the x-axis. + The roll angle, in radians, around the z-axis. + [OutAttribute] An existing Quaternion filled in to express the specified yaw, pitch, and roll angles. + + + Divides a Quaternion by another Quaternion. + Source Quaternion. + The divisor. + + + Divides a Quaternion by another Quaternion. + Source Quaternion. + The divisor. + [OutAttribute] Result of the division. + + + Calculates the dot product of two Quaternions. + Source Quaternion. + Source Quaternion. + + + Calculates the dot product of two Quaternions. + Source Quaternion. + Source Quaternion. + [OutAttribute] Dot product of the Quaternions. + + + Determines whether the specified Object is equal to the Quaternion. + The Quaternion to compare with the current Quaternion. + + + Returns a value that indicates whether the current instance is equal to a specified object. + Object to make the comparison with. + + + Get the hash code of this object. + + + Returns a Quaternion representing no rotation. + + + Returns the inverse of a Quaternion. + Source Quaternion. + + + Returns the inverse of a Quaternion. + Source Quaternion. + [OutAttribute] The inverse of the Quaternion. + + + Calculates the length of a Quaternion. + + + Calculates the length squared of a Quaternion. + + + Linearly interpolates between two quaternions. + Source quaternion. + Source quaternion. + Value indicating how far to interpolate between the quaternions. + + + Linearly interpolates between two quaternions. + Source quaternion. + Source quaternion. + Value indicating how far to interpolate between the quaternions. + [OutAttribute] The resulting quaternion. + + + Multiplies two quaternions. + The quaternion on the left of the multiplication. + The quaternion on the right of the multiplication. + + + Multiplies a quaternion by a scalar value. + Source quaternion. + Scalar value. + + + Multiplies two quaternions. + The quaternion on the left of the multiplication. + The quaternion on the right of the multiplication. + [OutAttribute] The result of the multiplication. + + + Multiplies a quaternion by a scalar value. + Source quaternion. + Scalar value. + [OutAttribute] The result of the multiplication. + + + Flips the sign of each component of the quaternion. + Source quaternion. + + + Flips the sign of each component of the quaternion. + Source quaternion. + [OutAttribute] Negated quaternion. + + + Divides each component of the quaternion by the length of the quaternion. + + + Divides each component of the quaternion by the length of the quaternion. + Source quaternion. + + + Divides each component of the quaternion by the length of the quaternion. + Source quaternion. + [OutAttribute] Normalized quaternion. + + + Adds two Quaternions. + Quaternion to add. + Quaternion to add. + + + Divides a Quaternion by another Quaternion. + Source Quaternion. + The divisor. + + + Compares two Quaternions for equality. + Source Quaternion. + Source Quaternion. + + + Compare two Quaternions for inequality. + Source Quaternion. + Source Quaternion. + + + Multiplies two quaternions. + Source quaternion. + Source quaternion. + + + Multiplies a quaternion by a scalar value. + Source quaternion. + Scalar value. + + + Subtracts a quaternion from another quaternion. + Source quaternion. + Source quaternion. + + + Flips the sign of each component of the quaternion. + Source quaternion. + + + Interpolates between two quaternions, using spherical linear interpolation. + Source quaternion. + Source quaternion. + Value that indicates how far to interpolate between the quaternions. + + + Interpolates between two quaternions, using spherical linear interpolation. + Source quaternion. + Source quaternion. + Value that indicates how far to interpolate between the quaternions. + [OutAttribute] Result of the interpolation. + + + Subtracts a quaternion from another quaternion. + Source quaternion. + Source quaternion. + + + Subtracts a quaternion from another quaternion. + Source quaternion. + Source quaternion. + [OutAttribute] Result of the subtraction. + + + Retireves a string representation of the current object. + + + Specifies the rotation component of the quaternion. + + + Specifies the x-value of the vector component of the quaternion. + + + Specifies the y-value of the vector component of the quaternion. + + + Specifies the z-value of the vector component of the quaternion. + + + Defines a ray. + + + Creates a new instance of Ray. + The starting point of the Ray. + Unit vector describing the direction of the Ray. + + + Unit vector specifying the direction the Ray is pointing. + + + Determines whether the specified Ray is equal to the current Ray. + The Ray to compare with the current Ray. + + + Determines whether two instances of Ray are equal. + The Object to compare with the current Ray. + + + Gets the hash code for this instance. + + + Checks whether the Ray intersects a specified BoundingBox. + The BoundingBox to check for intersection with the Ray. + + + Checks whether the current Ray intersects a BoundingBox. + The BoundingBox to check for intersection with. + [OutAttribute] Distance at which the ray intersects the BoundingBox or null if there is no intersection. + + + Checks whether the Ray intersects a specified BoundingFrustum. + The BoundingFrustum to check for intersection with the Ray. + + + Checks whether the Ray intersects a specified BoundingSphere. + The BoundingSphere to check for intersection with the Ray. + + + Checks whether the current Ray intersects a BoundingSphere. + The BoundingSphere to check for intersection with. + [OutAttribute] Distance at which the ray intersects the BoundingSphere or null if there is no intersection. + + + Determines whether this Ray intersects a specified Plane. + The Plane with which to calculate this Ray's intersection. + + + Determines whether this Ray intersects a specified Plane. + The Plane with which to calculate this Ray's intersection. + [OutAttribute] The distance at which this Ray intersects the specified Plane, or null if there is no intersection. + + + Determines whether two instances of Ray are equal. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Determines whether two instances of Ray are not equal. + The object to the left of the inequality operator. + The object to the right of the inequality operator. + + + Specifies the starting point of the Ray. + + + Returns a String that represents the current Ray. + + + Defines a rectangle. + + + Initializes a new instance of Rectangle. + The x-coordinate of the rectangle. + The y-coordinate of the rectangle. + Width of the rectangle. + Height of the rectangle. + + + Returns the y-coordinate of the bottom of the rectangle. + + + Gets the Point that specifies the center of the rectangle. + + + Determines whether this Rectangle contains a specified Point. + The Point to evaluate. + + + Determines whether this Rectangle contains a specified Point. + The Point to evaluate. + [OutAttribute] true if the specified Point is contained within this Rectangle; false otherwise. + + + Determines whether this Rectangle entirely contains a specified Rectangle. + The Rectangle to evaluate. + + + Determines whether this Rectangle entirely contains a specified Rectangle. + The Rectangle to evaluate. + [OutAttribute] On exit, is true if this Rectangle entirely contains the specified Rectangle, or false if not. + + + Determines whether this Rectangle contains a specified point represented by its x- and y-coordinates. + The x-coordinate of the specified point. + The y-coordinate of the specified point. + + + Returns a Rectangle with all of its values set to zero. + + + Determines whether the specified Object is equal to the Rectangle. + The Object to compare with the current Rectangle. + + + Returns a value that indicates whether the current instance is equal to a specified object. + Object to make the comparison with. + + + Gets the hash code for this object. + + + Specifies the height of the rectangle. + + + Pushes the edges of the Rectangle out by the horizontal and vertical values specified. + Value to push the sides out by. + Value to push the top and bottom out by. + + + Creates a Rectangle defining the area where one rectangle overlaps with another rectangle. + The first Rectangle to compare. + The second Rectangle to compare. + + + Creates a Rectangle defining the area where one rectangle overlaps with another rectangle. + The first Rectangle to compare. + The second Rectangle to compare. + [OutAttribute] The area where the two first parameters overlap. + + + Determines whether a specified Rectangle intersects with this Rectangle. + The Rectangle to evaluate. + + + Determines whether a specified Rectangle intersects with this Rectangle. + The Rectangle to evaluate + [OutAttribute] true if the specified Rectangle intersects with this one; false otherwise. + + + Gets a value that indicates whether the Rectangle is empty. + + + Returns the x-coordinate of the left side of the rectangle. + + + Gets or sets the upper-left value of the Rectangle. + + + Changes the position of the Rectangle. + The values to adjust the position of the Rectangle by. + + + Changes the position of the Rectangle. + Change in the x-position. + Change in the y-position. + + + Compares two rectangles for equality. + Source rectangle. + Source rectangle. + + + Compares two rectangles for inequality. + Source rectangle. + Source rectangle. + + + Returns the x-coordinate of the right side of the rectangle. + + + Returns the y-coordinate of the top of the rectangle. + + + Retrieves a string representation of the current object. + + + Creates a new Rectangle that exactly contains two other rectangles. + The first Rectangle to contain. + The second Rectangle to contain. + + + Creates a new Rectangle that exactly contains two other rectangles. + The first Rectangle to contain. + The second Rectangle to contain. + [OutAttribute] The Rectangle that must be the union of the first two rectangles. + + + Specifies the width of the rectangle. + + + Specifies the x-coordinate of the rectangle. + + + Specifies the y-coordinate of the rectangle. + + + Provides file stream access to the title's default storage location. + + + Returns a stream to an existing file in the default title storage location. + The name of the file to open. + + + Defines a vector with two components. + + + Creates a new instance of Vector2. + Value to initialize both components to. + + + Initializes a new instance of Vector2. + Initial value for the x-component of the vector. + Initial value for the y-component of the vector. + + + Adds two vectors. + Source vector. + Source vector. + + + Adds two vectors. + Source vector. + Source vector. + [OutAttribute] Sum of the source vectors. + + + Returns a Vector2 containing the 2D Cartesian coordinates of a point specified in barycentric (areal) coordinates relative to a 2D triangle. + A Vector2 containing the 2D Cartesian coordinates of vertex 1 of the triangle. + A Vector2 containing the 2D Cartesian coordinates of vertex 2 of the triangle. + A Vector2 containing the 2D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in value2). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in value3). + + + Returns a Vector2 containing the 2D Cartesian coordinates of a point specified in barycentric (areal) coordinates relative to a 2D triangle. + A Vector2 containing the 2D Cartesian coordinates of vertex 1 of the triangle. + A Vector2 containing the 2D Cartesian coordinates of vertex 2 of the triangle. + A Vector2 containing the 2D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in value2). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in value3). + [OutAttribute] The 2D Cartesian coordinates of the specified point are placed in this Vector2 on exit. + + + Performs a Catmull-Rom interpolation using the specified positions. + The first position in the interpolation. + The second position in the interpolation. + The third position in the interpolation. + The fourth position in the interpolation. + Weighting factor. + + + Performs a Catmull-Rom interpolation using the specified positions. + The first position in the interpolation. + The second position in the interpolation. + The third position in the interpolation. + The fourth position in the interpolation. + Weighting factor. + [OutAttribute] A vector that is the result of the Catmull-Rom interpolation. + + + Restricts a value to be within a specified range. + The value to clamp. + The minimum value. + The maximum value. + + + Restricts a value to be within a specified range. + The value to clamp. + The minimum value. + The maximum value. + [OutAttribute] The clamped value. + + + Calculates the distance between two vectors. + Source vector. + Source vector. + + + Calculates the distance between two vectors. + Source vector. + Source vector. + [OutAttribute] The distance between the vectors. + + + Calculates the distance between two vectors squared. + Source vector. + Source vector. + + + Calculates the distance between two vectors squared. + Source vector. + Source vector. + [OutAttribute] The distance between the vectors squared. + + + Divides the components of a vector by the components of another vector. + Source vector. + Divisor vector. + + + Divides a vector by a scalar value. + Source vector. + The divisor. + + + Divides the components of a vector by the components of another vector. + Source vector. + The divisor. + [OutAttribute] The result of the division. + + + Divides a vector by a scalar value. + Source vector. + The divisor. + [OutAttribute] The result of the division. + + + Calculates the dot product of two vectors. If the two vectors are unit vectors, the dot product returns a floating point value between -1 and 1 that can be used to determine some properties of the angle between two vectors. For example, it can show whether the vectors are orthogonal, parallel, or have an acute or obtuse angle between them. + Source vector. + Source vector. + + + Calculates the dot product of two vectors and writes the result to a user-specified variable. If the two vectors are unit vectors, the dot product returns a floating point value between -1 and 1 that can be used to determine some properties of the angle between two vectors. For example, it can show whether the vectors are orthogonal, parallel, or have an acute or obtuse angle between them. + Source vector. + Source vector. + [OutAttribute] The dot product of the two vectors. + + + Determines whether the specified Object is equal to the Vector2. + The Object to compare with the current Vector2. + + + Returns a value that indicates whether the current instance is equal to a specified object. + Object to make the comparison with. + + + Gets the hash code of the vector object. + + + Performs a Hermite spline interpolation. + Source position vector. + Source tangent vector. + Source position vector. + Source tangent vector. + Weighting factor. + + + Performs a Hermite spline interpolation. + Source position vector. + Source tangent vector. + Source position vector. + Source tangent vector. + Weighting factor. + [OutAttribute] The result of the Hermite spline interpolation. + + + Calculates the length of the vector. + + + Calculates the length of the vector squared. + + + Performs a linear interpolation between two vectors. + Source vector. + Source vector. + Value between 0 and 1 indicating the weight of value2. + + + Performs a linear interpolation between two vectors. + Source vector. + Source vector. + Value between 0 and 1 indicating the weight of value2. + [OutAttribute] The result of the interpolation. + + + Returns a vector that contains the highest value from each matching pair of components. + Source vector. + Source vector. + + + Returns a vector that contains the highest value from each matching pair of components. + Source vector. + Source vector. + [OutAttribute] The maximized vector. + + + Returns a vector that contains the lowest value from each matching pair of components. + Source vector. + Source vector. + + + Returns a vector that contains the lowest value from each matching pair of components. + Source vector. + Source vector. + [OutAttribute] The minimized vector. + + + Multiplies the components of two vectors by each other. + Source vector. + Source vector. + + + Multiplies a vector by a scalar value. + Source vector. + Scalar value. + + + Multiplies the components of two vectors by each other. + Source vector. + Source vector. + [OutAttribute] The result of the multiplication. + + + Multiplies a vector by a scalar value. + Source vector. + Scalar value. + [OutAttribute] The result of the multiplication. + + + Returns a vector pointing in the opposite direction. + Source vector. + + + Returns a vector pointing in the opposite direction. + Source vector. + [OutAttribute] Vector pointing in the opposite direction. + + + Turns the current vector into a unit vector. The result is a vector one unit in length pointing in the same direction as the original vector. + + + Creates a unit vector from the specified vector. The result is a vector one unit in length pointing in the same direction as the original vector. + Source Vector2. + + + Creates a unit vector from the specified vector, writing the result to a user-specified variable. The result is a vector one unit in length pointing in the same direction as the original vector. + Source vector. + [OutAttribute] Normalized vector. + + + Returns a Vector2 with both of its components set to one. + + + Adds two vectors. + Source vector. + Source vector. + + + Divides the components of a vector by the components of another vector. + Source vector. + Divisor vector. + + + Divides a vector by a scalar value. + Source vector. + The divisor. + + + Tests vectors for equality. + Source vector. + Source vector. + + + Tests vectors for inequality. + Vector to compare. + Vector to compare. + + + Multiplies the components of two vectors by each other. + Source vector. + Source vector. + + + Multiplies a vector by a scalar value. + Source vector. + Scalar value. + + + Multiplies a vector by a scalar value. + Scalar value. + Source vector. + + + Subtracts a vector from a vector. + Source vector. + source vector. + + + Returns a vector pointing in the opposite direction. + Source vector. + + + Determines the reflect vector of the given vector and normal. + Source vector. + Normal of vector. + + + Determines the reflect vector of the given vector and normal. + Source vector. + Normal of vector. + [OutAttribute] The created reflect vector. + + + Interpolates between two values using a cubic equation. + Source value. + Source value. + Weighting value. + + + Interpolates between two values using a cubic equation. + Source value. + Source value. + Weighting value. + [OutAttribute] The interpolated value. + + + Subtracts a vector from a vector. + Source vector. + Source vector. + + + Subtracts a vector from a vector. + Source vector. + Source vector. + [OutAttribute] The result of the subtraction. + + + Retrieves a string representation of the current object. + + + Transforms the vector (x, y, 0, 1) by the specified matrix. + The source vector. + The transformation matrix. + + + Transforms a single Vector2, or the vector normal (x, y, 0, 0), by a specified Quaternion rotation. + The vector to rotate. + The Quaternion rotation to apply. + + + Transforms a Vector2 by the given Matrix. + The source Vector2. + The transformation Matrix. + [OutAttribute] The Vector2 resulting from the transformation. + + + Transforms a Vector2, or the vector normal (x, y, 0, 0), by a specified Quaternion rotation. + The vector to rotate. + The Quaternion rotation to apply. + [OutAttribute] An existing Vector2 filled in with the result of the rotation. + + + Transforms an array of Vector2s by a specified Matrix. + The array of Vector2s to transform. + The transform Matrix to apply. + An existing array into which the transformed Vector2s are written. + + + Transforms an array of Vector2s by a specified Quaternion. + The array of Vector2s to transform. + The transform Matrix to use. + An existing array into which the transformed Vector2s are written. + + + Transforms a specified range in an array of Vector2s by a specified Matrix and places the results in a specified range in a destination array. + The source array. + The index of the first Vector2 to transform in the source array. + The Matrix to transform by. + The destination array into which the resulting Vector2s will be written. + The index of the position in the destination array where the first result Vector2 should be written. + The number of Vector2s to be transformed. + + + Transforms a specified range in an array of Vector2s by a specified Quaternion and places the results in a specified range in a destination array. + The source array. + The index of the first Vector2 to transform in the source array. + The Quaternion rotation to apply. + The destination array into which the resulting Vector2s are written. + The index of the position in the destination array where the first result Vector2 should be written. + The number of Vector2s to be transformed. + + + Transforms a 2D vector normal by a matrix. + The source vector. + The transformation matrix. + + + Transforms a vector normal by a matrix. + The source vector. + The transformation matrix. + [OutAttribute] The Vector2 resulting from the transformation. + + + Transforms an array of Vector2 vector normals by a specified Matrix. + The array of vector normals to transform. + The transform Matrix to apply. + An existing array into which the transformed vector normals are written. + + + Transforms a specified range in an array of Vector2 vector normals by a specified Matrix and places the results in a specified range in a destination array. + The source array. + The index of the first Vector2 to transform in the source array. + The Matrix to apply. + The destination array into which the resulting Vector2s are written. + The index of the position in the destination array where the first result Vector2 should be written. + The number of vector normals to be transformed. + + + Returns the unit vector for the x-axis. + + + Returns the unit vector for the y-axis. + + + Gets or sets the x-component of the vector. + + + Gets or sets the y-component of the vector. + + + Returns a Vector2 with all of its components set to zero. + + + Defines a vector with three components. + + + Initializes a new instance of Vector3. + A vector containing the values to initialize x and y components with. + Initial value for the z-component of the vector. + + + Creates a new instance of Vector3. + Value to initialize each component to. + + + Initializes a new instance of Vector3. + Initial value for the x-component of the vector. + Initial value for the y-component of the vector. + Initial value for the z-component of the vector. + + + Adds two vectors. + Source vector. + Source vector. + + + Adds two vectors. + Source vector. + Source vector. + [OutAttribute] Sum of the source vectors. + + + Returns a unit Vector3 designating backward in a right-handed coordinate system (0, 0, 1). + + + Returns a Vector3 containing the 3D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 3D triangle. + A Vector3 containing the 3D Cartesian coordinates of vertex 1 of the triangle. + A Vector3 containing the 3D Cartesian coordinates of vertex 2 of the triangle. + A Vector3 containing the 3D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in value2). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in value3). + + + Returns a Vector3 containing the 3D Cartesian coordinates of a point specified in barycentric (areal) coordinates relative to a 3D triangle. + A Vector3 containing the 3D Cartesian coordinates of vertex 1 of the triangle. + A Vector3 containing the 3D Cartesian coordinates of vertex 2 of the triangle. + A Vector3 containing the 3D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in value2). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in value3). + [OutAttribute] The 3D Cartesian coordinates of the specified point are placed in this Vector3 on exit. + + + Performs a Catmull-Rom interpolation using the specified positions. + The first position in the interpolation. + The second position in the interpolation. + The third position in the interpolation. + The fourth position in the interpolation. + Weighting factor. + + + Performs a Catmull-Rom interpolation using the specified positions. + The first position in the interpolation. + The second position in the interpolation. + The third position in the interpolation. + The fourth position in the interpolation. + Weighting factor. + [OutAttribute] A vector that is the result of the Catmull-Rom interpolation. + + + Restricts a value to be within a specified range. + The value to clamp. + The minimum value. + The maximum value. + + + Restricts a value to be within a specified range. + The value to clamp. + The minimum value. + The maximum value. + [OutAttribute] The clamped value. + + + Calculates the cross product of two vectors. + Source vector. + Source vector. + + + Calculates the cross product of two vectors. + Source vector. + Source vector. + [OutAttribute] The cross product of the vectors. + + + Calculates the distance between two vectors. + Source vector. + Source vector. + + + Calculates the distance between two vectors. + Source vector. + Source vector. + [OutAttribute] The distance between the vectors. + + + Calculates the distance between two vectors squared. + Source vector. + Source vector. + + + Calculates the distance between two vectors squared. + Source vector. + Source vector. + [OutAttribute] The distance between the two vectors squared. + + + Divides the components of a vector by the components of another vector. + Source vector. + Divisor vector. + + + Divides a vector by a scalar value. + Source vector. + The divisor. + + + Divides the components of a vector by the components of another vector. + Source vector. + The divisor. + [OutAttribute] The result of the division. + + + Divides a vector by a scalar value. + Source vector. + The divisor. + [OutAttribute] The result of the division. + + + Calculates the dot product of two vectors. If the two vectors are unit vectors, the dot product returns a floating point value between -1 and 1 that can be used to determine some properties of the angle between two vectors. For example, it can show whether the vectors are orthogonal, parallel, or have an acute or obtuse angle between them. + Source vector. + Source vector. + + + Calculates the dot product of two vectors and writes the result to a user-specified variable. If the two vectors are unit vectors, the dot product returns a floating point value between -1 and 1 that can be used to determine some properties of the angle between two vectors. For example, it can show whether the vectors are orthogonal, parallel, or have an acute or obtuse angle between them. + Source vector. + Source vector. + [OutAttribute] The dot product of the two vectors. + + + Returns a unit Vector3 designating down (0, −1, 0). + + + Determines whether the specified Object is equal to the Vector3. + The Vector3 to compare with the current Vector3. + + + Returns a value that indicates whether the current instance is equal to a specified object. + Object to make the comparison with. + + + Returns a unit Vector3 designating forward in a right-handed coordinate system(0, 0, −1). + + + Gets the hash code of the vector object. + + + Performs a Hermite spline interpolation. + Source position vector. + Source tangent vector. + Source position vector. + Source tangent vector. + Weighting factor. + + + Performs a Hermite spline interpolation. + Source position vector. + Source tangent vector. + Source position vector. + Source tangent vector. + Weighting factor. + [OutAttribute] The result of the Hermite spline interpolation. + + + Returns a unit Vector3 designating left (−1, 0, 0). + + + Calculates the length of the vector. + + + Calculates the length of the vector squared. + + + Performs a linear interpolation between two vectors. + Source vector. + Source vector. + Value between 0 and 1 indicating the weight of value2. + + + Performs a linear interpolation between two vectors. + Source vector. + Source vector. + Value between 0 and 1 indicating the weight of value2. + [OutAttribute] The result of the interpolation. + + + Returns a vector that contains the highest value from each matching pair of components. + Source vector. + Source vector. + + + Returns a vector that contains the highest value from each matching pair of components. + Source vector. + Source vector. + [OutAttribute] The maximized vector. + + + Returns a vector that contains the lowest value from each matching pair of components. + Source vector. + Source vector. + + + Returns a vector that contains the lowest value from each matching pair of components. + Source vector. + Source vector. + [OutAttribute] The minimized vector. + + + Multiplies the components of two vectors by each other. + Source vector. + Source vector. + + + Multiplies a vector by a scalar value. + Source vector. + Scalar value. + + + Multiplies the components of two vectors by each other. + Source vector. + Source vector. + [OutAttribute] The result of the multiplication. + + + Multiplies a vector by a scalar value. + Source vector. + Scalar value. + [OutAttribute] The result of the multiplication. + + + Returns a vector pointing in the opposite direction. + Source vector. + + + Returns a vector pointing in the opposite direction. + Source vector. + [OutAttribute] Vector pointing in the opposite direction. + + + Turns the current vector into a unit vector. The result is a vector one unit in length pointing in the same direction as the original vector. + + + Creates a unit vector from the specified vector. The result is a vector one unit in length pointing in the same direction as the original vector. + The source Vector3. + + + Creates a unit vector from the specified vector, writing the result to a user-specified variable. The result is a vector one unit in length pointing in the same direction as the original vector. + Source vector. + [OutAttribute] The normalized vector. + + + Returns a Vector3 with ones in all of its components. + + + Adds two vectors. + Source vector. + Source vector. + + + Divides the components of a vector by the components of another vector. + Source vector. + Divisor vector. + + + Divides a vector by a scalar value. + Source vector. + The divisor. + + + Tests vectors for equality. + Source vector. + Source vector. + + + Tests vectors for inequality. + Vector to compare. + Vector to compare. + + + Multiplies the components of two vectors by each other. + Source vector. + Source vector. + + + Multiplies a vector by a scalar value. + Source vector. + Scalar value. + + + Multiplies a vector by a scalar value. + Scalar value. + Source vector. + + + Subtracts a vector from a vector. + Source vector. + Source vector. + + + Returns a vector pointing in the opposite direction. + Source vector. + + + Returns the reflection of a vector off a surface that has the specified normal. Reference page contains code sample. + Source vector. + Normal of the surface. + + + Returns the reflection of a vector off a surface that has the specified normal. Reference page contains code sample. + Source vector. + Normal of the surface. + [OutAttribute] The reflected vector. + + + Returns a unit Vector3 pointing to the right (1, 0, 0). + + + Interpolates between two values using a cubic equation. + Source value. + Source value. + Weighting value. + + + Interpolates between two values using a cubic equation. + Source vector. + Source vector. + Weighting value. + [OutAttribute] The interpolated value. + + + Subtracts a vector from a vector. + Source vector. + Source vector. + + + Subtracts a vector from a vector. + Source vector. + Source vector. + [OutAttribute] The result of the subtraction. + + + Retrieves a string representation of the current object. + + + Transforms a 3D vector by the given matrix. + The source vector. + The transformation matrix. + + + Transforms a Vector3 by a specified Quaternion rotation. + The Vector3 to rotate. + The Quaternion rotation to apply. + + + Transforms a Vector3 by the given Matrix. + The source Vector3. + The transformation Matrix. + [OutAttribute] The transformed vector. + + + Transforms a Vector3 by a specified Quaternion rotation. + The Vector3 to rotate. + The Quaternion rotation to apply. + [OutAttribute] An existing Vector3 filled in with the results of the rotation. + + + Transforms a source array of Vector3s by a specified Matrix and writes the results to an existing destination array. + The source array. + The transform Matrix to apply. + An existing destination array into which the transformed Vector3s are written. + + + Transforms a source array of Vector3s by a specified Quaternion rotation and writes the results to an existing destination array. + The source array. + The Quaternion rotation to apply. + An existing destination array into which the transformed Vector3s are written. + + + Applies a specified transform Matrix to a specified range of an array of Vector3s and writes the results into a specified range of a destination array. + The source array. + The index in the source array at which to start. + The transform Matrix to apply. + The existing destination array. + The index in the destination array at which to start. + The number of Vector3s to transform. + + + Applies a specified Quaternion rotation to a specified range of an array of Vector3s and writes the results into a specified range of a destination array. + The source array. + The index in the source array at which to start. + The Quaternion rotation to apply. + The existing destination array. + The index in the destination array at which to start. + The number of Vector3s to transform. + + + Transforms a 3D vector normal by a matrix. + The source vector. + The transformation matrix. + + + Transforms a vector normal by a matrix. + The source vector. + The transformation Matrix. + [OutAttribute] The Vector3 resulting from the transformation. + + + Transforms an array of 3D vector normals by a specified Matrix. + The array of Vector3 normals to transform. + The transform matrix to apply. + An existing Vector3 array into which the results of the transforms are written. + + + Transforms a specified range in an array of 3D vector normals by a specified Matrix and writes the results to a specified range in a destination array. + The source array of Vector3 normals. + The starting index in the source array. + The transform Matrix to apply. + The destination Vector3 array. + The starting index in the destination array. + The number of vectors to transform. + + + Returns the x unit Vector3 (1, 0, 0). + + + Returns the y unit Vector3 (0, 1, 0). + + + Returns the z unit Vector3 (0, 0, 1). + + + Returns a unit vector designating up (0, 1, 0). + + + Gets or sets the x-component of the vector. + + + Gets or sets the y-component of the vector. + + + Gets or sets the z-component of the vector. + + + Returns a Vector3 with all of its components set to zero. + + + Defines a vector with four components. + + + Initializes a new instance of Vector4. + A vector containing the values to initialize x and y components with. + Initial value for the z-component of the vector. + Initial value for the w-component of the vector. + + + Initializes a new instance of Vector4. + A vector containing the values to initialize x, y, and z components with. + Initial value for the w-component of the vector. + + + Creates a new instance of Vector4. + Value to initialize each component to. + + + Initializes a new instance of Vector4. + Initial value for the x-component of the vector. + Initial value for the y-component of the vector. + Initial value for the z-component of the vector. + Initial value for the w-component of the vector. + + + Adds two vectors. + Source vector. + Source vector. + + + Adds two vectors. + Source vector. + Source vector. + [OutAttribute] Sum of the source vectors. + + + Returns a Vector4 containing the 4D Cartesian coordinates of a point specified in barycentric (areal) coordinates relative to a 4D triangle. + A Vector4 containing the 4D Cartesian coordinates of vertex 1 of the triangle. + A Vector4 containing the 4D Cartesian coordinates of vertex 2 of the triangle. + A Vector4 containing the 4D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in value2). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in value3). + + + Returns a Vector4 containing the 4D Cartesian coordinates of a point specified in Barycentric (areal) coordinates relative to a 4D triangle. + A Vector4 containing the 4D Cartesian coordinates of vertex 1 of the triangle. + A Vector4 containing the 4D Cartesian coordinates of vertex 2 of the triangle. + A Vector4 containing the 4D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in value2). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in value3). + [OutAttribute] The 4D Cartesian coordinates of the specified point are placed in this Vector4 on exit. + + + Performs a Catmull-Rom interpolation using the specified positions. + The first position in the interpolation. + The second position in the interpolation. + The third position in the interpolation. + The fourth position in the interpolation. + Weighting factor. + + + Performs a Catmull-Rom interpolation using the specified positions. + The first position in the interpolation. + The second position in the interpolation. + The third position in the interpolation. + The fourth position in the interpolation. + Weighting factor. + [OutAttribute] A vector that is the result of the Catmull-Rom interpolation. + + + Restricts a value to be within a specified range. + The value to clamp. + The minimum value. + The maximum value. + + + Restricts a value to be within a specified range. + The value to clamp. + The minimum value. + The maximum value. + [OutAttribute] The clamped value. + + + Calculates the distance between two vectors. + Source vector. + Source vector. + + + Calculates the distance between two vectors. + Source vector. + Source vector. + [OutAttribute] The distance between the vectors. + + + Calculates the distance between two vectors squared. + Source vector. + Source vector. + + + Calculates the distance between two vectors squared. + Source vector. + Source vector. + [OutAttribute] The distance between the two vectors squared. + + + Divides the components of a vector by the components of another vector. + Source vector. + Divisor vector. + + + Divides a vector by a scalar value. + Source vector. + The divisor. + + + Divides the components of a vector by the components of another vector. + Source vector. + The divisor. + [OutAttribute] The result of the division. + + + Divides a vector by a scalar value. + Source vector. + The divisor. + [OutAttribute] The result of the division. + + + Calculates the dot product of two vectors. + Source vector. + Source vector. + + + Calculates the dot product of two vectors. + Source vector. + Source vector. + [OutAttribute] The dot product of the two vectors. + + + Determines whether the specified Object is equal to the Vector4. + The Vector4 to compare with the current Vector4. + + + Returns a value that indicates whether the current instance is equal to a specified object. + Object with which to make the comparison. + + + Gets the hash code of this object. + + + Performs a Hermite spline interpolation. + Source position vector. + Source tangent vector. + Source position vector. + Source tangent vector. + Weighting factor. + + + Performs a Hermite spline interpolation. + Source position vector. + Source tangent vector. + Source position vector. + Source tangent vector. + Weighting factor. + [OutAttribute] The result of the Hermite spline interpolation. + + + Calculates the length of the vector. + + + Calculates the length of the vector squared. + + + Performs a linear interpolation between two vectors. + Source vector. + Source vector. + Value between 0 and 1 indicating the weight of value2. + + + Performs a linear interpolation between two vectors. + Source vector. + Source vector. + Value between 0 and 1 indicating the weight of value2. + [OutAttribute] The result of the interpolation. + + + Returns a vector that contains the highest value from each matching pair of components. + Source vector. + Source vector. + + + Returns a vector that contains the highest value from each matching pair of components. + Source vector. + Source vector. + [OutAttribute] The maximized vector. + + + Returns a vector that contains the lowest value from each matching pair of components. + Source vector. + Source vector. + + + Returns a vector that contains the lowest value from each matching pair of components. + Source vector. + Source vector. + [OutAttribute] The minimized vector. + + + Multiplies the components of two vectors by each other. + Source vector. + Source vector. + + + Multiplies a vector by a scalar. + Source vector. + Scalar value. + + + Multiplies the components of two vectors by each other. + Source vector. + Source vector. + [OutAttribute] The result of the multiplication. + + + Multiplies a vector by a scalar value. + Source vector. + Scalar value. + [OutAttribute] The result of the multiplication. + + + Returns a vector pointing in the opposite direction. + Source vector. + + + Returns a vector pointing in the opposite direction. + Source vector. + [OutAttribute] Vector pointing in the opposite direction. + + + Turns the current vector into a unit vector. + + + Creates a unit vector from the specified vector. + The source Vector4. + + + Returns a normalized version of the specified vector. + Source vector. + [OutAttribute] The normalized vector. + + + Returns a Vector4 with all of its components set to one. + + + Adds two vectors. + Source vector. + Source vector. + + + Divides the components of a vector by the components of another vector. + Source vector. + Divisor vector. + + + Divides a vector by a scalar value. + Source vector. + The divisor. + + + Tests vectors for equality. + Source vector. + Source vector. + + + Tests vectors for inequality. + Vector to compare. + Vector to compare. + + + Multiplies the components of two vectors by each other. + Source vector. + Source vector. + + + Multiplies a vector by a scalar. + Source vector. + Scalar value. + + + Multiplies a vector by a scalar. + Scalar value. + Source vector. + + + Subtracts a vector from a vector. + Source vector. + Source vector. + + + Returns a vector pointing in the opposite direction. + Source vector. + + + Interpolates between two values using a cubic equation. + Source value. + Source value. + Weighting value. + + + Interpolates between two values using a cubic equation. + Source vector. + Source vector. + Weighting factor. + [OutAttribute] The interpolated value. + + + Subtracts a vector from a vector. + Source vector. + Source vector. + + + Subtracts a vector from a vector. + Source vector. + Source vector. + [OutAttribute] The result of the subtraction. + + + Retrieves a string representation of the current object. + + + Transforms a Vector2 by the given Matrix. + The source Vector2. + The transformation Matrix. + + + Transforms a Vector2 by a specified Quaternion into a Vector4. + The Vector2 to transform. + The Quaternion rotation to apply. + + + Transforms a Vector2 by the given Matrix. + The source Vector2. + The transformation Matrix. + [OutAttribute] The Vector4 resulting from the transformation. + + + Transforms a Vector2 by a specified Quaternion into a Vector4. + The Vector2 to transform. + The Quaternion rotation to apply. + [OutAttribute] The Vector4 resulting from the transformation. + + + Transforms a Vector3 by the given Matrix. + The source Vector3. + The transformation Matrix. + + + Transforms a Vector3 by a specified Quaternion into a Vector4. + The Vector3 to transform. + The Quaternion rotation to apply. + + + Transforms a Vector3 by the given Matrix. + The source Vector3. + The transformation Matrix. + [OutAttribute] The Vector4 resulting from the transformation. + + + Transforms a Vector3 by a specified Quaternion into a Vector4. + The Vector3 to transform. + The Quaternion rotation to apply. + [OutAttribute] The Vector4 resulting from the transformation. + + + Transforms a Vector4 by the specified Matrix. + The source Vector4. + The transformation Matrix. + + + Transforms a Vector4 by a specified Quaternion. + The Vector4 to transform. + The Quaternion rotation to apply. + + + Transforms a Vector4 by the given Matrix. + The source Vector4. + The transformation Matrix. + [OutAttribute] The Vector4 resulting from the transformation. + + + Transforms a Vector4 by a specified Quaternion. + The Vector4 to transform. + The Quaternion rotation to apply. + [OutAttribute] The Vector4 resulting from the transformation. + + + Transforms an array of Vector4s by a specified Matrix. + The array of Vector4s to transform. + The transform Matrix to apply. + The existing destination array into which the transformed Vector4s are written. + + + Transforms an array of Vector4s by a specified Quaternion. + The array of Vector4s to transform. + The Quaternion rotation to apply. + The existing destination array into which the transformed Vector4s are written. + + + Transforms a specified range in an array of Vector4s by a specified Matrix into a specified range in a destination array. + The array of Vector4s containing the range to transform. + The index in the source array of the first Vector4 to transform. + The transform Matrix to apply. + The existing destination array of Vector4s into which to write the results. + The index in the destination array of the first result Vector4 to write. + The number of Vector4s to transform. + + + Transforms a specified range in an array of Vector4s by a specified Quaternion into a specified range in a destination array. + The array of Vector4s containing the range to transform. + The index in the source array of the first Vector4 to transform. + The Quaternion rotation to apply. + The existing destination array of Vector4s into which to write the results. + The index in the destination array of the first result Vector4 to write. + The number of Vector4s to transform. + + + Returns the Vector4 (0, 0, 0, 1). + + + Returns the Vector4 (1, 0, 0, 0). + + + Returns the Vector4 (0, 1, 0, 0). + + + Returns the Vector4 (0, 0, 1, 0). + + + Gets or sets the w-component of the vector. + + + Gets or sets the x-component of the vector. + + + Gets or sets the y-component of the vector. + + + Gets or sets the z-component of the vector. + + + Returns a Vector4 with all of its components set to zero. + + + Defines the number of channels in the audio data. + + + Indicates audio data is contained in one channel. + + + Indicates audio data contains two channels. + + + Reference page contains links to related code samples. + + + Initializes a new instance of this class. + + + Gets or sets a scalar applied to the level of Doppler effect calculated between this and any AudioListener. + + + Gets or sets the forward orientation vector for this emitter. + + + Gets or sets the position of this emitter. Reference page contains links to related code samples. + + + Gets or sets the upward orientation vector for this emitter. + + + Gets or sets the velocity vector of this emitter. + + + Reference page contains links to related code samples. + + + Initializes a new instance of this class. + + + Gets or sets the forward orientation vector for this listener. + + + Gets or sets the position of this listener. Reference page contains links to related code samples. + + + Gets or sets the upward orientation vector for this listener. + + + Gets or sets the velocity vector of this listener. + + + Provides properties, methods, and events for play back of the audio buffer. + + + Initializes a new instance of this class, which creates a dynamic sound effect based on the specified sample rate and audio channel. + Sample rate, in Hertz (Hz), of audio content. + Number of channels in the audio data. + + + Event that occurs when the number of audio capture buffers awaiting playback is less than or equal to two. + + + + Returns the sample duration based on the specified size of the audio buffer. + Size, in bytes, of the audio data. + + + Returns the size of the audio buffer required to contain audio samples based on the specified duration. + TimeSpan object that contains the duration of the audio sample. + + + Indicates whether the audio playback of the DynamicSoundEffectInstance object is looped. + + + Returns the number of audio buffers in the queue awaiting playback. + + + Begins or resumes audio playback. + + + Submits an audio buffer for playback. Playback starts at the beginning, and the buffer is played in its entirety. Reference page contains links to related conceptual articles. + Buffer that contains the audio data. The audio format must be PCM wave data. + + + Submits an audio buffer for playback. Playback begins at the specifed offset, and the byte count determines the size of the sample played. Reference page contains links to related conceptual articles. + Buffer that contains the audio data. The audio format must be PCM wave data. + Offset, in bytes, to the starting position of the data. + Amount, in bytes, of data sent. + + + The exception that is thrown when there is an attempt to play more than the platform specific maximum SoundEffectInstance sounds concurrently. Reference page contains links to related conceptual articles. + + + Initializes a new instance of the InstancePlayLimitException class. + + + Initializes a new instance of the InstancePlayLimitException class with a specified error message. + A String that describes the error. The content of message is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. + + + Initializes a new instance of the InstancePlayLimitException class with a specified error message and a reference to the inner exception that is the cause of this exception. + Error message that explains the reason for the exception. + Exception that is the cause of the current exception. If innerException is not null, the current exception is raised in a catch block that handles the inner exception. + + + Provides properties, methods, and fields and events for capturing audio data with microphones. + + + Returns the collection of all currently-available microphones. + + + Gets or sets audio capture buffer duration of the microphone. + + + Event that occurs when the audio capture buffer is ready to processed. + + + + Returns the default attached microphone. + + + Gets the latest recorded data from the microphone based on the audio capture buffer. Reference page contains links to related conceptual articles. + Buffer, in bytes, containing the captured audio data. The audio format must be PCM wave data. + + + Gets the latest captured audio data from the microphone based on the specified offset and byte count. Reference page contains links to related conceptual articles. + Buffer, in bytes, containing the captured audio data. The audio format must be PCM wave data. + Offset, in bytes, to the starting position of the data. + Amount, in bytes, of desired audio data. + + + Returns the duration of audio playback based on the size of the buffer. + Size, in bytes, of the audio data. + + + Returns the size of the byte array required to hold the specified duration of audio for this microphone object. + TimeSpan object that contains the duration of the audio sample. + + + Determines if the microphone is a wired headset or a Bluetooth device. + + + Returns the friendly name of the microphone. + + + Returns the sample rate at which the microphone is capturing audio data. + + + Starts microphone audio capture. + + + Returns the recording state of the Microphone object. + + + Stops microphone audio capture. + + + Current state of the Microphone audio capture (started or stopped). + + + The Microphone audio capture has started. + + + The Microphone audio capture has stopped. + + + The exception that is thrown when no audio hardware is present, or when audio hardware is installed, but the device drivers for the audio hardware are not present or enabled. + + + Initializes a new instance of this class. + + + Initializes a new instance of this class with a specified error message. + A message that describes the error. + + + Initializes a new instance of this class with a specified error message and a reference to the inner exception that is the cause of this exception. + A message that describes the error. + The exception that is the cause of the current exception. If the inner parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception. + + + The exception that is thrown when Microphone API calls are made on a disconnected microphone. + + + Initializes a new instance of the NoMicrophoneConnectedException class. + + + Initializes a new instance of the NoMicrophoneConnectedException class with a specified error message. + A String that describes the error. The content of message is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. + + + Initializes a new instance of the NoMicrophoneConnectedException class with a specified error message and a reference to the inner exception that is the cause of this exception. + A String that describes the error. The content of message is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. + Exception that is the cause of the current exception. If innerException is not null, the current exception is raised in a catch block that handles the inner exception. + + + Reference page contains links to related code samples. + + + Initializes a new instance of SoundEffect based on an audio buffer, sample rate, and number of audio channels. Reference page contains links to related conceptual articles. + Buffer that contains the audio data. The audio format must be PCM wave data. + Sample rate, in Hertz (Hz), of audio data. + Number of channels (mono or stereo) of audio data. + + + Initializes a new instance of SoundEffect with specified parameters such as audio sample rate, channels, looping criteria, and a buffer to hold the audio. Reference page contains links to related conceptual articles. + Buffer that contains the audio data. The audio format must be PCM wave data. + Offset, in bytes, to the starting position of the audio data. + Amount, in bytes, of audio data. + Sample rate, in Hertz (Hz), of audio data. + Number of channels (mono or stereo) of audio data. + Loop start in samples. + Loop length in samples. + + + Creates a new SoundEffectInstance for this SoundEffect. Reference page contains links to related code samples. + + + Releases the resources used by the SoundEffect. + + + Gets or sets a value that adjusts the effect of distance calculations on the sound (emitter). + + + Gets or sets a value that adjusts the effect of doppler calculations on the sound (emitter). + + + Gets the duration of the SoundEffect. + + + Creates a SoundEffect object based on the specified data stream. + Stream object that contains the data for this SoundEffect object. + + + Returns the sample duration based on the specified sample size and sample rate. + Size, in bytes, of audio data. + Sample rate, in Hertz (Hz), of audio content. The sampleRate must be between 8000 Hz and 48000 Hz. + Number of channels in the audio data. + + + Returns the size of the audio sample based on duration, sample rate, and audio channels. + TimeSpan object that contains the sample duration. + Sample rate, in Hertz (Hz), of audio content. The sampleRate parameter must be between 8,000 Hz and 48,000 Hz. + Number of channels in the audio data. + + + Gets a value that indicates whether the object is disposed. + + + Gets or sets the master volume that affects all SoundEffectInstance sounds. + + + Gets or sets the asset name of the SoundEffect. + + + Plays a sound. Reference page contains links to related code samples. + + + Plays a sound based on specified volume, pitch, and panning. Reference page contains links to related code samples. + Volume, ranging from 0.0f (silence) to 1.0f (full volume). 1.0f is full volume relative to SoundEffect.MasterVolume. + Pitch adjustment, ranging from -1.0f (down one octave) to 1.0f (up one octave). 0.0f is unity (normal) pitch. + Panning, ranging from -1.0f (full left) to 1.0f (full right). 0.0f is centered. + + + Returns the speed of sound: 343.5 meters per second. + + + Provides a single playing, paused, or stopped instance of a SoundEffect sound. + + + Applies 3D positioning to the sound using a single listener. Reference page contains links to related code samples. + Position of the listener. + Position of the emitter. + + + Applies 3D position to the sound using multiple listeners. Reference page contains links to related code samples. + Positions of each listener. + Position of the emitter. + + + Releases unmanaged resources held by this SoundEffectInstance. + + + Releases the unmanaged resources held by this SoundEffectInstance, and optionally releases the managed resources. + Pass true to release both the managed and unmanaged resources for this SoundEffectInstance. Passing false releases only the unmanaged resources. + + + Releases unmanaged resources and performs other cleanup operations before the SoundEffectInstance is reclaimed by garbage collection. + + + Gets a value that indicates whether the object is disposed. + + + Gets a value that indicates whether looping is enabled for the SoundEffectInstance. Reference page contains links to related code samples. + + + Gets or sets the panning for the SoundEffectInstance. + + + Pauses a SoundEffectInstance. + + + Gets or sets the pitch adjustment for the SoundEffectInstance. Reference page contains links to related code samples. + + + Plays or resumes a SoundEffectInstance. + + + Resumes playback for a SoundEffectInstance. + + + Gets the current state (playing, paused, or stopped) of the SoundEffectInstance. + + + Immediately stops playing a SoundEffectInstance. + + + Stops playing a SoundEffectInstance, either immediately or as authored. + Whether to stop playing immediately, or to break out of the loop region and play the release. Specify true to stop playing immediately, or false to break out of the loop region and play the release phase (the remainder of the sound). + + + Gets or sets the volume of the SoundEffectInstance. Reference page contains links to related code samples. + + + Current state (playing, paused, or stopped) of a SoundEffectInstance. + + + The SoundEffectInstance is paused. + + + The SoundEffectInstance is playing. + + + The SoundEffectInstance is stopped. + + + Exception used to report errors from the ContentManager.Load method. + + + Creates a new instance of ContentLoadException. + + + Creates a new instance of ContentLoadException. + Describes the value types that were being loaded when the exception occurred. + Describes the stream where the exception occurred. + + + Creates a new instance of ContentLoadException. + A message that describes the error. + + + Creates a new instance of ContentLoadException. + A message that describes the error. + The exception that is the cause of the current exception. If the innerException parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception. + + + The ContentManager is the run-time component which loads managed objects from the binary files produced by the design time content pipeline. It also manages the lifespan of the loaded objects, disposing the content manager will also dispose any assets which are themselves IDisposable. + + + Initializes a new instance of ContentManager. Reference page contains code sample. + The service provider that the ContentManager should use to locate services. + + + Initializes a new instance of ContentManager. Reference page contains code sample. + The service provider the ContentManager should use to locate services. + The root directory to search for content. + + + Releases all resources used by the ContentManager class. + + + Releases the unmanaged resources used by the ContentManager and optionally releases the managed resources. + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + Loads an asset that has been processed by the Content Pipeline. Reference page contains code sample. + Asset name, relative to the loader root directory, and not including the .xnb extension. + + + Opens a stream for reading the specified asset. Derived classes can replace this to implement pack files or asset compression. + The name of the asset being read. + + + Low-level worker method that reads asset data. + The name of the asset to be loaded from disk. + Delegate function for handling the disposition of assets. If recordDisposableObject is null, the default lifespan tracking and management is used, so unloading or disposing of the content manager frees everything that has been loaded through it. If recordDisposableObject specifies a valid delegate, that delegate is used instead of the default lifespan tracking and is called every time the loader encounters a type that implements IDisposable. You must use your own code to unload assets loaded in this fashion, since ContentManager's Unload method will not be aware of them. + + + Gets or sets the root directory associated with this ContentManager. + + + Gets the service provider associated with the ContentManager. + + + Disposes all data that was loaded by this ContentManager. + + + A worker object that implements most of ContentManager.Load. A new ContentReader is constructed for each asset loaded. + + + Gets the name of the asset currently being read by this ContentReader. + + + Gets the ContentManager associated with the ContentReader. + + + Reads a Color value from the currently open stream. + + + Reads a double value from the currently open stream. + + + Reads a link to an external file. + + + Reads a Matrix value from the currently open stream. + + + Reads a single managed object from the current stream. Can be called recursively. + + + Reads a single managed object from the current stream. Can be called recursively. + The ContentTypeReader to use to read the object. + + + Reads a single managed object from the current stream. Can be called recursively. + The ContentTypeReader to use to read the object. + An existing object to write into. + + + Reads a single managed object from the current stream. Can be called recursively. + An existing object to write into. + + + Reads a Quaternion value from the current stream. + + + Reads a single managed object from the current stream as an instance of the specified type. If you specify a base class of the actual object type, this method reads data only from the base type. + + + Reads a single managed object from the current stream as an instance of the specified type. If a base class of the actual object type is specified only data from the base type will be read. + The ContentTypeReader to use to read the object. + + + Reads a single managed object from the current stream as an instance of the specified type. If you specify a base class of the actual object type, this method reads data only from the base type. + The ContentTypeReader to use to read the object. + An existing object to write into. + + + Reads a single managed object from the current stream as an instance of the specified type. If you specify a base class of the actual object type, the method reads data only from the base type. + An existing object to write into. + + + Reads a shared resource ID, and records it for subsequent fix-up. + The fix-up action to perform. + + + Reads a float value from the currently open stream. + + + Reads a Vector2 value from the current stream. + + + Reads a Vector3 value from the current stream. + + + Reads a Vector4 value from the current stream. + + + A custom Attribute that marks a field or property to control how it is serialized or to indicate that protected or private data should be included in serialization. + + + Creates a new instance of ContentSerializerAttribute. Reference page contains code sample. + + + Get or set a value indicating whether this member can have a null value (default=true). Reference page contains code sample. + + + Creates a copy of the ContentSerializerAttribute. + + + Gets or sets the XML element name for each item in a collection (default = "Item"). Reference page contains code sample. + + + Gets or sets the XML element name (default=name of the managed type member). Reference page contains code sample. + + + Gets or sets a value idicating whether to write member contents directly into the current XML context rather than wrapping the member in a new XML element (default=false). Reference page contains code sample. + + + Indicates whether an explicit CollectionItemName string is being used or the default value. Reference page contains code sample. + + + Indicates whether to write this element if the member is null and skip past it if not found when deserializing XML (default=false). Reference page contains code sample. + + + Indicates whether this member is referenced from multiple parents and should be serialized as a unique ID reference (default=false). Reference page contains code sample. + + + A custom Attribute that marks a collection class to specify the XML element name for each item in the collection. + + + Creates a new instance of ContentSerializerCollectionItemNameAttribute. Reference page contains code sample. + The name for each item in the collection. + + + Gets the name that will be used for each item in the collection. + + + A custom Attribute that marks public fields or properties to prevent them from being serialized. + + + Creates a new instance of ContentSerializerIgnoreAttribute. Reference page contains code sample. + + + + + + Creates a new instance of ContentSerializerRuntimeTypeAttribute. + The run-time type name of the object. + + + Gets the run-time type for the object. + + + + + + Creates a new instance of ContentSerializerTypeVersionAttribute. + The run-time type version of the object. + + + Gets the run-time type version for the object. + + + Worker for reading a specific managed type from a binary format. + + + Creates a new instance of ContentTypeReader. + The type handled by this reader component. + + + Determines if deserialization into an existing object is possible. + + + Retrieves and caches nested type readers. Called by the framework at creation time. + The content manager. + + + Reads a strongly typed object from the current stream. + The ContentReader used to read the object. + The object receiving the data, or null if a new instance of the object should be created. + + + Gets the type handled by this reader component. + + + Gets a format version number for this type. + + + Worker for reading a specific managed type from a binary format. Derive from this class to add new data types to the content pipeline system. + + + Creates a new instance of ContentTypeReader. + + + Reads an object from the current stream. + The ContentReader used to read the object. + An existing object to read into. + + + Reads a strongly typed object from the current stream. + The ContentReader used to read the object. + An existing object to read into. + + + A manager that constructs and keeps track of type reader objects. + + + Looks up a reader for the specified type. + The type the reader will handle. + + + Subclass of ContentManager, which is specialized to read from .resx resource files rather than directly from individual files on disk. + + + Creates a new instance of ResourceContentManager. + The service provider the ContentManager should use to locate services. + The resource manager for the ResourceContentManager to read from. + + + Opens a stream for reading the specified resource. Derived classes can replace this to implement pack files or asset compression. + The name of the asset being read. + + + Provides a unified way of converting BoundingBox values to other types, as well as for accessing standard values and subproperties. + + + Initializes a new instance of the BoundingBoxConverter class. + + + Converts the given object to the type of this converter, using the specified context and culture information. + The format context. + The current culture. + The object to convert. + + + Converts the given value object to the specified type, using the specified context and culture information. + The format context. + The culture to use in the conversion. + The object to convert. + The destination type. + + + Creates an instance of the type that this BoundingBoxConverter is associated with, using the specified context, given a set of property values for the object. + The format context. + The new property values. + + + Provides a unified way of converting BoundingSphere values to other types, as well as for accessing standard values and subproperties. + + + Initializes a new instance of the BoundingSphereConverter class. + + + Converts the given object to the type of this converter, using the specified context and culture information. + The format context. + The current culture. + The object to convert. + + + Converts the given value object to the specified type, using the specified context and culture information. + The format context. + The culture to use in the conversion. + The object to convert. + The destination type. + + + Creates an instance of the type that this BoundingSphereConverter is associated with, using the specified context, given a set of property values for the object. + The format context. + The new property values. + + + Provides a unified way of converting Color values to other types, as well as for accessing standard values and subproperties. + + + Initializes a new instance of the ColorConverter class. + + + Converts the given value to the type of this converter. + The format context. + The current culture. + The object to convert. + + + Converts the given value object to the specified type, using the specified context and culture information. + The format context. + The culture to use in the conversion. + The object to convert. + The destination type. + + + Re-creates an object given a set of property values for the object. + The format context. + The new property values. + + + Provides a unified way of converting math type values to other types, as well as for accessing standard values and subproperties. + + + Initializes a new instance of the MathTypeConverter class. + + + Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context. + The format context. + The type you want to convert from. + + + Returns whether this converter can convert an object of one type to the type of this converter. + The format context. + The destination type. + + + Returns whether changing a value on this object requires a call to CreateInstance to create a new value, using the specified context. + The format context. + + + Returns a collection of properties for the type of array specified by the value parameter. + The format context. + The type of array for which to get properties. + An array to use as a filter. + + + Returns whether this object supports properties, using the specified context. + The format context. + + + Represents a collection of PropertyDescriptor objects. + + + Returns whether string conversion is supported. + + + Provides a unified way of converting Matrix values to other types, as well as for accessing standard values and subproperties. + + + Initializes a new instance of the MatrixConverter class. + + + Converts the given value object to the specified type, using the specified context and culture information. + The format context. + The culture to use in the conversion. + The object to convert. + The destination type. + + + Creates an instance of the type that this MatrixConverter is associated with, using the specified context, given a set of property values for the object. + The format context. + The new property values. + + + Provides a unified way of converting Plane values to other types, as well as for accessing standard values and subproperties. + + + Initializes a new instance of the PlaneConverter class. + + + Converts the given value object to the specified type, using the specified context and culture information. + The format context. + The culture to use in the conversion. + The object to convert. + The destination type. + + + Creates an instance of the type that this PlaneConverter is associated with, using the specified context, given a set of property values for the object. + The format context. + The new property values. + + + Provides a unified way of converting Point values to other types, as well as for accessing standard values and subproperties. + + + Initializes a new instance of the PointConverter class. + + + Converts the given object to the type of this converter, using the specified context and culture information. + The format context. + The current culture. + The object to convert. + + + Converts the given value object to the specified type, using the specified context and culture information. + The format context. + The culture to use in the conversion. + The object to convert. + The destination type. + + + Creates an instance of the type that this PointConverter is associated with, using the specified context, given a set of property values for the object. + The format context. + The new property values. + + + Provides a unified way of converting Quaternion values to other types, as well as for accessing standard values and subproperties. + + + Initializes a new instance of the QuaternionConverter class. + + + Converts the given object to the type of this converter, using the specified context and culture information. + The format context. + The current culture. + The object to convert. + + + Converts the given value object to the specified type, using the specified context and culture information. + The format context. + The culture to use in the conversion. + The object to convert. + The destination type. + + + Creates an instance of the type that this QuaternionConverter is associated with, using the specified context, given a set of property values for the object. + The format context. + The new property values. + + + Provides a unified way of converting Ray values to other types, as well as for accessing standard values and subproperties. + + + Initializes a new instance of the RayConverter class. + + + Converts the given object to the type of this converter, using the specified context and culture information. + The format context. + The current culture. + The object to convert. + + + Converts the given value object to the specified type, using the specified context and culture information. + The format context. + The culture to use in the conversion. + The object to convert. + The destination type. + + + Creates an instance of the type that this RayConverter is associated with, using the specified context, given a set of property values for the object. + The format context. + The new property values. + + + Provides a unified way of converting Rectangle values to other types, as well as for accessing standard values and subproperties. + + + Initializes a new instance of the RectangleConverter class. + + + Converts the given value object to the specified type, using the specified context and culture information. + The format context. + The culture to use in the conversion. + The object to convert. + The destination type. + + + Creates an instance of the type that this RectangleConverter is associated with, using the specified context, given a set of property values for the object. + The format context. + The new property values. + + + Provides a unified way of converting Vector2 values to other types, as well as for accessing standard values and subproperties. + + + Initializes a new instance of the Vector2Converter class. + + + Converts the given object to the type of this converter, using the specified context and culture information. + The format context. + The current culture. + The object to convert. + + + Converts the given value object to the specified type, using the specified context and culture information. + The format context. + The culture to use in the conversion. + The object to convert. + The destination type. + + + Creates an instance of the type that this Vector2Converter is associated with, using the specified context, given a set of property values for the object. + The format context. + The new property values. + + + Provides a unified way of converting Vector3 values to other types, as well as for accessing standard values and subproperties. + + + Initializes a new instance of the Vector3Converter class. + + + Converts the given object to the type of this converter, using the specified context and culture information. + The format context. + The current culture. + The object to convert. + + + Converts the given value object to the specified type, using the specified context and culture information. + The format context. + The culture to use in the conversion. + The object to convert. + The destination type. + + + Creates an instance of the type that this Vector3Converter is associated with, using the specified context, given a set of property values for the object. + The format context. + The new property values. + + + Provides a unified way of converting Vector4 values to other types, as well as for accessing standard values and subproperties. + + + Initializes a new instance of the Vector4Converter class. + + + Converts the given object to the type of this converter, using the specified context and culture information. + The format context. + The current culture. + The object to convert. + + + Converts the given value object to the specified type, using the specified context and culture information. + The format context. + The culture to use in the conversion. + The object to convert. + The destination type. + + + Creates an instance of the type that this Vector4Converter is associated with, using the specified context, given a set of property values for the object. + The format context. + The new property values. + + + Packed vector type containing a single 8 bit normalized W value in the range of 0 to 1. + + + Initializes a new instance of the Alpha8 structure. + The initial value for the Alpha8 structure. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Gets the hash code for the current instance. + + + Sets the packed representation from a Vector4. + The vector to create the packed representaion from. + + + Expands the packed representation into a Vector4. + + + Compares the current instance of a class to another instance to determine whether they are the same. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Compares the current instance of a class to another instance to determine whether they are different. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Directly gets or sets the packed representation of the value. + + + Expands the packed representation to a System.Single. + + + Returns a string representation of the current instance. + + + Packed vector type containing unsigned normalized values ranging from 0 to 1. The x and z components use 5 bits, and the y component uses 6 bits. + + + Initializes a new instance of the Bgr565 structure. + A vector containing the initial values for the components of the Bgr565 structure. + + + Initializes a new instance of the Bgr565 class. + Initial value for the x component. + Initial value for the y component. + Initial value for the z component. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Gets the hash code for the current instance. + + + Sets the packed representation from a Vector4. + The vector to create the packed representation from. + + + Expands the packed representation into a Vector4. + + + Compares the current instance of a class to another instance to determine whether they are the same. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Compares the current instance of a class to another instance to determine whether they are different. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Directly gets or sets the packed representation of the value. + + + Returns a string representation of the current instance. + + + Expands the packed representation into a Vector3. + + + Packed vector type containing unsigned normalized values, ranging from 0 to 1, using 4 bits each for x, y, z, and w. + + + Creates an instance of this object. + Input value for all four components (xyzw). + + + Creates an instance of this object. + Initial value for the x component. + Initial value for the y component. + Initial value for the z component. + Initial value for the w component. + + + Tests an object to see if it is equal to this object. + The object to test. + + + Tests an object to see if it is equal to this object. + The object to test. + + + Gets the hash code for this object. + + + Converts a four-component vector into the format for this object. + The four-component vector. + + + Equality operator, which compares two objects to see if they are equal. + The first object. + The second object. + + + Tests two objects to see if they are not equal. + The first object. + The second object. + + + Gets or sets the packed representation of the vector. + + + Returns a string representation. + + + Unpacks this object to a four-component vector. + + + Packed vector type containing unsigned normalized values, ranging from 0 to 1, using 5 bits each for x, y, and z, and 1 bit for w. + + + Initializes a new instance of the Bgra5551 structure. + A vector containing the initial values for the components of the Bgra5551 structure. + + + Initializes a new instance of the Bgra5551 class. + Initial value for the x component. + Initial value for the y component. + Initial value for the z component. + Initial value for the w component. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Gets the hash code for the current instance. + + + Sets the packed representation from a Vector4. + The vector to create the packed representation from. + + + Compares the current instance of a class to another instance to determine whether they are the same. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Compares the current instance of a class to another instance to determine whether they are different. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Directly gets or sets the packed representation of the value. + + + Returns a string representation of the current instance. + + + Expands the packed representation into a Vector4. + + + Packed vector type containing four 8-bit unsigned integer values, ranging from 0 to 255. + + + Initializes a new instance of the Byte4 structure. + A vector containing the initial values for the components of the Byte4 structure. + + + Initializes a new instance of the Byte4 class. + Initial value for the x component. + Initial value for the y component. + Initial value for the z component. + Initial value for the w component. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Gets the hash code for the current instance. + + + Sets the packed representation from a Vector4 + The vector to create packed representation from. + + + Compares the current instance of a class to another instance to determine whether they are the same. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Compares the current instance of a class to another instance to determine whether they are different. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Directly gets or sets the packed representation of the value. + + + Returns a string representation of the current instance. + + + Expands the packed representation into a Vector4. + + + Packed vector type containing a single 16 bit floating point value. + + + Initializes a new instance of the HalfSingle structure. + The initial value of the HalfSingle structure. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Gets the hash code for the current instance. + + + Sets the packed representation from a Vector4. + The vector to create the packed representation from. + + + Expands the packed representation into a Vector4. + + + Compares the current instance of a class to another instance to determine whether they are the same. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Compares the current instance of a class to another instance to determine whether they are different. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Directly gets or sets the packed representation of the value. + + + Expands the HalfSingle to a Single. + + + Returns a string representation of the current instance. + + + Packed vector type containing two 16-bit floating-point values. + + + Initializes a new instance of the HalfVector2 structure. + A vector containing the initial values for the components of the HalfVector2 structure. + + + Initializes a new instance of the HalfVector2 structure. + Initial value for the x component. + Initial value for the y component. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Gets the hash code for the current instance. + + + Sets the packed representation from a Vector4. + The vector to create the packed representation from. + + + Expands the packed representation into a Vector4. + + + Compares the current instance of a class to another instance to determine whether they are the same. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Compares the current instance of a class to another instance to determine whether they are different. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Directly gets or sets the packed representation of the value. + + + Returns a string representation of the current instance. + + + Expands the HalfVector2 to a Vector2. + + + Packed vector type containing four 16-bit floating-point values. + + + Initializes a new instance of the HalfVector4 structure. + A vector containing the initial values for the components of the HalfVector4 structure. + + + Initializes a new instance of the HalfVector4 class. + Initial value for the x component. + Initial value for the y component. + Initial value for the z component. + Initial value for the w component. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Gets the hash code for the current instance. + + + Sets the packed representation from a Vector4. + The vector to create the packed representation from. + + + Compares the current instance of a class to another instance to determine whether they are the same. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Compares the current instance of a class to another instance to determine whether they are different. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Directly gets or sets the packed representation of the value. + + + Returns a string representation of the current instance. + + + Expands the packed representation into a Vector4. + + + Interface that converts packed vector types to and from Vector4 values, allowing multiple encodings to be manipulated in a generic way. + + + Sets the packed representation from a Vector4. + The vector to create the packed representation from. + + + Expands the packed representation into a Vector4. + + + Converts packed vector types to and from Vector4 values. + + + Directly gets or sets the packed representation of the value. + + + Packed vector type containing two 8-bit signed normalized values, ranging from −1 to 1. + + + Initializes a new instance of the NormalizedByte2 structure. + A vector containing the initial values for the components of the NormalizedByte2 structure. + + + Initializes a new instance of the NormalizedByte2 class. + Initial value for the x component. + Initial value for the y component. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Gets the hash code for the current instance. + + + Sets the packed representation from a Vector4. + The vector to create the packed representation from. + + + Expands the packed representation into a Vector4. + + + Compares the current instance of a class to another instance to determine whether they are the same. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Compares the current instance of a class to another instance to determine whether they are different. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Directly gets or sets the packed representation of the value. + + + Returns a string representation of the current instance. + + + Expands the packed representation to a vector. + + + Packed vector type containing four 8-bit signed normalized values, ranging from −1 to 1. + + + Initializes a new instance of the NormalizedByte4 structure. + A vector containing the initial values for the components of the NormalizedByte4 structure. + + + Initializes a new instance of the NormalizedByte4 class. + Initial value for the x component. + Initial value for the y component. + Initial value for the z component. + Initial value for the w component. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Gets the hash code for the current instance. + + + Sets the packed representation from a Vector4. + The vector to create the packed representation from. + + + Compares the current instance of a class to another instance to determine whether they are the same. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Compares the current instance of a class to another instance to determine whether they are different. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Directly gets or sets the packed representation of the value. + + + Returns a string representation of the current instance. + + + Expands the packed representation into a Vector4. + + + Packed vector type containing two 16-bit signed normalized values, ranging from −1 to 1. + + + Initializes a new instance of the NormalizedShort2 structure. + A vector containing the initial values for the components of the NormalizedShort2 structure. + + + Initializes a new instance of the NormalizedShort2 class. + Initial value for the x component. + Initial value for the y component. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Gets the hash code for the current instance. + + + Sets the packed representation from a Vector4. + The vector to create the packed representation from. + + + Expands the packed representation into a Vector4. + + + Compares the current instance of a class to another instance to determine whether they are the same. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Compares the current instance of a class to another instance to determine whether they are different. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Directly gets or sets the packed representation of the value. + + + Returns a string representation of the current instance. + + + Expands the packed representation to a vector. + + + Packed vector type containing four 16-bit signed normalized values, ranging from −1 to 1. + + + Initializes a new instance of the NormalizedShort4 structure. + A vector containing the initial values for the components of the NormalizedShort4 structure. + + + Initializes a new instance of the NormalizedShort4 class. + Initial value for the x component. + Initial value for the y component. + Initial value for the z component. + Initial value for the w component. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Gets the hash code for the current instance. + + + Sets the packed representation from a Vector4. + The vector to create the packed representation from. + + + Compares the current instance of a class to another instance to determine whether they are the same. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Compares the current instance of a class to another instance to determine whether they are different. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Directly gets or sets the packed representation of the value. + + + Returns a string representation of the current instance. + + + Expands the packed representation into a Vector4. + + + Packed vector type containing two 16-bit unsigned normalized values, ranging from 0 to 1. + + + Initializes a new instance of the Rg32 structure. + The vector containing the initial values for the components of the Rg32 structure. + + + Initializes a new instance of the Rg32 structure. + Initial value for the x component. + Initial value for the y component. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Gets the hash code for the current instance. + + + Sets the packed representation from a Vector4 + The vector to create packed representation from. + + + Expands the packed representation into a Vector4. + + + Compares the current instance of a class to another instance to determine whether they are the same. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Compares the current instance of a class to another instance to determine whether they are different. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Directly gets or sets the packed representation of the value. + + + Returns a string representation of the current instance. + + + Expands the packed vector representation into a Vector2. + + + Packed vector type containing unsigned normalized values, ranging from 0 to 1, using 10 bits each for x, y, and z, and 2 bits for w. + + + Initializes a new instance of the Rgba1010102 structure. + A vector containing the initial values for the components of the Rgba1010102 structure. + + + Initializes a new instance of the Rgba1010102 class. + Initial value for the x component. + Initial value for the y component. + Initial value for the z component. + Initial value for the w component. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Gets the hash code for the current instance. + + + Sets the packed representation from a Vector4 + The vector to create the packed representation from. + + + Compares the current instance of a class to another instance to determine whether they are the same. + The object to the left of the equality operator. + The object to the left of the equality operator. + + + Compares the current instance of a class to another instance to determine whether they are different. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Directly gets or sets the packed representation of the value. + + + Returns a string representation of the current instance. + + + Expands the packed representation into a Vector4. + + + Packed vector type containing four 16-bit unsigned normalized values, ranging from 0 to 1. + + + Initializes a new instance of the Rgba64 structure. + A vector containing the initial values for the components of the Rgba64 structure. + + + Initializes a new instance of the Rgba64 structure. + Initial value for the x component. + Initial value for the y component. + Initial value for the z component. + Initial value for the w component. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Gets the hash code for the current instance. + + + Sets the packed representation from a Vector4. + The vector to create the packed representation from. + + + Compares the current instance of a class to another instance to determine whether they are the same. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Compares the current instance of a class to another instance to determine whether they are different. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Directly gets or sets the packed representation of the value. + + + Returns a string representation of the current instance. + + + Expands the packed representation into a Vector4. + + + Packed vector type containing two 16-bit signed integer values. + + + Initializes a new instance of the Short2 structure. + A vector containing the initial values for the components of the Short2 structure. + + + Initializes a new instance of the Short2 class. + Initial value for the x component. + Initial value for the y component. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Gets the hash code for the current instance. + + + Sets the packed representation from a Vector4. + The vector to create the packed representation from. + + + Expands the packed representation into a Vector4. + + + Compares the current instance of a class to another instance to determine whether they are the same. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Compares the current instance of a class to another instance to determine whether they are different. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Directly gets or sets the packed representation of the value. + + + Returns a string representation of the current instance. + + + Expands the packed representation to a vector. + + + Packed vector type containing four 16-bit signed integer values. + + + Initializes a new instance of the Short4 structure. + A vector containing the initial values for the components of the Short4 structure. + + + Initializes a new instance of the Short4 class. + Initial value for the x component. + Initial value for the y component. + Initial value for the z component. + Initial value for the w component. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Returns a value that indicates whether the current instance is equal to a specified object. + The object with which to make the comparison. + + + Gets the hash code for the current instance. + + + Sets the packed representation from a Vector4. + The vector to create the packed representation from. + + + Compares the current instance of a class to another instance to determine whether they are the same. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Compares the current instance of a class to another instance to determine whether they are different. + The object to the left of the equality operator. + The object to the right of the equality operator. + + + Directly gets or sets the packed representation of the value. + + + Returns a string representation of the current instance. + + + Expands the packed representation into a Vector4. + + + Enumerates input device buttons. + + + A button + + + B button + + + BACK button + + + Big button + + + Directional pad up + + + Directional pad left + + + Directional pad right + + + Directional pad down + + + Left bumper (shoulder) button + + + Left stick button (pressing the left stick) + + + Left stick is toward down + + + Left stick is toward the left + + + Left stick is toward the right + + + Left stick is toward up + + + Left trigger + + + Right bumper (shoulder) button + + + Right stick button (pressing the right stick) + + + Right stick is toward down + + + Right stick is toward the left + + + Right stick is toward the right + + + Right stick is toward up + + + Right trigger + + + START button + + + X button + + + Y button + + + Identifies the state of a controller button. + + + The button is pressed. + + + The button is released. + + + Allows retrieval of user interaction with an Xbox 360 Controller and setting of controller vibration motors. Reference page contains links to related code samples. + + + Retrieves the capabilities of an Xbox 360 Controller. + Index of the controller to query. + + + Gets the current state of a game pad controller. Reference page contains links to related code samples. + Player index for the controller you want to query. + + + Gets the current state of a game pad controller, using a specified dead zone on analog stick positions. Reference page contains links to related code samples. + Player index for the controller you want to query. + Enumerated value that specifies what dead zone type to use. + + + Sets the vibration motor speeds on an Xbox 360 Controller. Reference page contains links to related code samples. + Player index that identifies the controller to set. + The speed of the left motor, between 0.0 and 1.0. This motor is a low-frequency motor. + The speed of the right motor, between 0.0 and 1.0. This motor is a high-frequency motor. + + + Identifies whether buttons on an Xbox 360 Controller are pressed or released. Reference page contains links to related code samples. + + + Initializes a new instance of the GamePadButtons class, setting the specified buttons to pressed in. + Buttons to initialize as pressed. Specify a single button or combine multiple buttons using a bitwise OR operation. + + + Identifies if the A button on the Xbox 360 Controller is pressed. + + + Identifies if the B button on the Xbox 360 Controller is pressed. + + + Identifies if the BACK button on the Xbox 360 Controller is pressed. + + + Identifies if the BigButton button is pressed. + + + Returns a value that indicates if the current instance is equal to a specified object. + The object with which to make the comparison. + + + Gets the hash code for this instance. + + + Identifies if the left shoulder (bumper) button on the Xbox 360 Controller is pressed. + + + Identifies if the left stick button on the Xbox 360 Controller is pressed (the stick is "clicked" in). + + + Indicates if the two GamePadButton objects are equal. + The GamePadButtons instance on the left side of the equality. + The GamePadButtons instance on the right side of the equality. + + + Determines whether two GamePadButtons instances are not equal. + Object on the left of the equal sign. + Object on the right of the equal sign. + + + Identifies if the right shoulder (bumper) button on the Xbox 360 Controller is pressed. + + + Identifies if the right stick button on the Xbox 360 Controller is pressed (the stick is "clicked" in). + + + Identifies if the START button on the Xbox 360 Controller is pressed. + + + Retrieves a string representation of this object. + + + Identifies if the X button on the Xbox 360 Controller is pressed. + + + Identifies if the Y button on the Xbox 360 Controller is pressed. + + + Describes the capabilities of an Xbox 360 Controller, including controller type, and identifies if the controller supports voice. + + + Gets the type of controller. + + + Indicates whether the controller has an A button. + + + Indicates whether the controller has a BACK button. + + + Indicates whether the controller has a B button. + + + Indicates whether the controller has a BigButton button. + + + Indicates whether the controller has a directional pad DOWN button. + + + Indicates whether the controller has a directional pad LEFT button. + + + Indicates whether the controller has a directional pad RIGHT button. + + + Indicates whether the controller has a directional pad UP button. + + + Indicates whether the controller has a left bumper button. + + + Indicates whether the controller has a digital button control on the left analog stick. + + + Indicates whether the controller has a left analog trigger. + + + Indicates whether the controller has a low-frequency vibration motor. + + + Indicates whether the controller supports a left analog control with horizontal movement. + + + Indicates whether the controller supports a left analog control with vertical movement. + + + Indicates whether the controller has a right bumper button. + + + Indicates whether the controller has a digital button control on the right analog stick. + + + Indicates whether the controller has a right analog trigger. + + + Indicates whether the controller has a high-frequency vibration motor. + + + Indicates whether the controller supports a right analog control with horizontal movement. + + + Indicates whether the controller supports a right analog control with vertical movement. + + + Indicates whether the controller has a START button. + + + Indicates whether the controller supports voice. + + + Indicates whether the controller has an X button. + + + Indicates whether the controller has a Y button. + + + Indicates whether the Xbox 360 Controller is connected. + + + Specifies a type of dead zone processing to apply to Xbox 360 Controller analog sticks when calling GetState. + + + The combined X and Y position of each stick is compared to the dead zone. This provides better control than IndependentAxes when the stick is used as a two-dimensional control surface, such as when controlling a character's view in a first-person game. + + + The X and Y positions of each stick are compared against the dead zone independently. This setting is the default when calling GetState. + + + The values of each stick are not processed and are returned by GetState as "raw" values. This is best if you intend to implement your own dead zone processing. + + + Identifies which directions on the directional pad of an Xbox 360 Controller are being pressed. + + + Initializes a new instance of the GamePadDPad class. + Directional pad up button state. + Directional pad down button state. + Directional pad left button state. + Directional pad right button state. + + + Identifies whether the Down direction on the Xbox 360 Controller directional pad is pressed. + + + Returns a value that indicates whether the current instance is equal to a specified object. + Object with which to make the comparison. + + + Gets the hash code for this instance. + + + Identifies whether the Left direction on the Xbox 360 Controller directional pad is pressed. + + + Determines whether two GamePadDPad instances are equal. + Object on the left of the equal sign. + Object on the right of the equal sign. + + + Determines whether two GamePadDPad instances are not equal. + Object on the left of the equal sign. + Object on the right of the equal sign. + + + Identifies whether the Right direction on the Xbox 360 Controller directional pad is pressed. + + + Retrieves a string representation of this object. + + + Identifies whether the Up direction on the Xbox 360 Controller directional pad is pressed. + + + Represents specific information about the state of an Xbox 360 Controller, including the current state of buttons and sticks. Reference page contains links to related code samples. + + + Initializes a new instance of the GamePadState class using the specified GamePadThumbSticks, GamePadTriggers, GamePadButtons, and GamePadDPad. + Initial thumbstick state. + Initial trigger state. + Initial button state. + Initial directional pad state. + + + Initializes a new instance of the GamePadState class with the specified stick, trigger, and button values. + Left stick value. Each axis is clamped between −1.0 and 1.0. + Right stick value. Each axis is clamped between −1.0 and 1.0. + Left trigger value. This value is clamped between 0.0 and 1.0. + Right trigger value. This value is clamped between 0.0 and 1.0. + Array or parameter list of Buttons to initialize as pressed. + + + Returns a structure that identifies what buttons on the Xbox 360 controller are pressed. Reference page contains links to related code samples. + + + Returns a structure that identifies what directions of the directional pad on the Xbox 360 Controller are pressed. + + + Returns a value that indicates whether the current instance is equal to a specified object. + Object with which to make the comparison. + + + Gets the hash code for this instance. + + + Determines whether specified input device buttons are pressed in this GamePadState. + Buttons to query. Specify a single button, or combine multiple buttons using a bitwise OR operation. + + + Determines whether specified input device buttons are up (not pressed) in this GamePadState. + Buttons to query. Specify a single button, or combine multiple buttons using a bitwise OR operation. + + + Indicates whether the Xbox 360 Controller is connected. Reference page contains links to related code samples. + + + Determines whether two GamePadState instances are equal. + Object on the left of the equal sign. + Object on the right of the equal sign. + + + Determines whether two GamePadState instances are not equal. + Object on the left of the equal sign. + Object on the right of the equal sign. + + + Gets the packet number associated with this state. Reference page contains links to related code samples. + + + Returns a structure that indicates the position of the Xbox 360 Controller sticks (thumbsticks). + + + Retrieves a string representation of this object. + + + Returns a structure that identifies the position of triggers on the Xbox 360 controller. + + + Structure that represents the position of left and right sticks (thumbsticks) on an Xbox 360 Controller. + + + Initializes a new instance of the GamePadThumbSticks class. + Left stick value. Each axis is clamped between −1.0 and 1.0. + Right stick value. Each axis is clamped between −1.0 and 1.0. + + + Returns a value that indicates whether the current instance is equal to a specified object. + Object with which to make the comparison. + + + Gets the hash code for this instance. + + + Returns the position of the left Xbox 360 Controller stick (thumbstick) as a 2D vector. Reference page contains code sample. + + + Determines whether two GamePadThumbSticks instances are equal. + Object on the left of the equal sign. + Object on the right of the equal sign. + + + Determines whether two GamePadThumbSticks instances are not equal. + Object on the left of the equal sign. + Object on the right of the equal sign. + + + Returns the position of the right Xbox 360 Controller stick (thumbstick) as a 2D vector. + + + Retrieves a string representation of this object. + + + Structure that defines the position of the left and right triggers on an Xbox 360 Controller. + + + Initializes a new instance of the GamePadTriggers class. + Left trigger value. This value is clamped between 0.0 and 1.0. + Right trigger value. This value is clamped between 0.0 and 1.0. + + + Returns a value that indicates whether the current instance is equal to a specified object. + Object with which to make the comparison. + + + Gets the hash code for this instance. + + + Identifies the position of the left trigger on the Xbox 360 Controller. + + + Determines whether two GamePadTriggers instances are equal. + Object on the left of the equal sign. + Object on the right of the equal sign. + + + Determines whether two GamePadTriggers instances are not equal. + Object on the left of the equal sign. + Object on the right of the equal sign. + + + Identifies the position of the right trigger on the Xbox 360 Controller. + + + Retrieves a string representation of this object. + + + Describes the type of a specified Xbox 360 Controller. + + + Controller is an alternate guitar + + + Controller is an Arcade stick + + + Controller is a big button pad + + + Controller is a dance pad + + + Controller is a drum kit + + + Controller is a flight stick + + + Controller is the Xbox 360 Controller + + + Controller is a guitar + + + Controller is an unknown type + + + Controller is a wheel + + + Allows retrieval of keystrokes from a keyboard input device. Reference page contains links to related code samples. + + + Returns the current keyboard state. Reference page contains links to related code samples. + + + Returns the current Chatpad state for the specified player. Reference page contains links to related code samples. + Player index of the Chatpad to query. + + + Represents a state of keystrokes recorded by a keyboard input device. Reference page contains links to related code samples. + + + Initializes a new instance of the KeyboardState class. + Array or parameter list of Keys to initialize as pressed. + + + Returns a value that indicates whether the current instance is equal to a specified object. + Object to compare this object to. + + + Gets the hash code for this instance. + + + Gets an array of values that correspond to the keyboard keys that are currently being pressed. Reference page contains links to related code samples. + + + Returns whether a specified key is currently being pressed. Reference page contains links to related code samples. + Enumerated value that specifies the key to query. + + + Returns whether a specified key is currently not pressed. Reference page contains links to related code samples. + Enumerated value that specifies the key to query. + + + Returns the state of a particular key. Reference page contains links to related code samples. + Enumerated value representing the key to query. + + + Compares two objects to determine whether they are the same. + Object to the left of the equality operator. + Object to the right of the equality operator. + + + Compares two objects to determine whether they are different. + Object to the left of the inequality operator. + Object to the right of the inequality operator. + + + Identifies a particular key on a keyboard. + + + A key + + + Add key + + + Applications key + + + Attn key + + + B key + + + BACKSPACE key + + + Windows 2000/XP: Browser Back key + + + Windows 2000/XP: Browser Favorites key + + + Windows 2000/XP: Browser Forward key + + + Windows 2000/XP: Browser Start and Home key + + + Windows 2000/XP: Browser Refresh key + + + Windows 2000/XP: Browser Search key + + + Windows 2000/XP: Browser Stop key + + + C key + + + CAPS LOCK key + + + Green ChatPad key + + + Orange ChatPad key + + + CrSel key + + + D key + + + Used for miscellaneous characters; it can vary by keyboard. + + + Used for miscellaneous characters; it can vary by keyboard. + + + Used for miscellaneous characters; it can vary by keyboard. + + + Used for miscellaneous characters; it can vary by keyboard. + + + Used for miscellaneous characters; it can vary by keyboard. + + + Used for miscellaneous characters; it can vary by keyboard. + + + Used for miscellaneous characters; it can vary by keyboard. + + + Used for miscellaneous characters; it can vary by keyboard. + + + Used for miscellaneous characters; it can vary by keyboard. + + + Used for miscellaneous characters; it can vary by keyboard. + + + Decimal key + + + DEL key + + + Divide key + + + DOWN ARROW key + + + E key + + + END key + + + ENTER key + + + Erase EOF key + + + ESC key + + + EXECUTE key + + + ExSel key + + + F key + + + F1 key + + + F10 key + + + F11 key + + + F12 key + + + F13 key + + + F14 key + + + F15 key + + + F16 key + + + F17 key + + + F18 key + + + F19 key + + + F2 key + + + F20 key + + + F21 key + + + F22 key + + + F23 key + + + F24 key + + + F3 key + + + F4 key + + + F5 key + + + F6 key + + + F7 key + + + F8 key + + + F9 key + + + G key + + + H key + + + HELP key + + + HOME key + + + I key + + + IME Convert key + + + IME NoConvert key + + + INS key + + + J key + + + K key + + + Kana key on Japanese keyboards + + + Kanji key on Japanese keyboards + + + L key + + + Windows 2000/XP: Start Application 1 key + + + Windows 2000/XP: Start Application 2 key + + + Windows 2000/XP: Start Mail key + + + LEFT ARROW key + + + Left ALT key + + + Left CONTROL key + + + Left SHIFT key + + + Left Windows key + + + M key + + + Windows 2000/XP: Next Track key + + + Windows 2000/XP: Play/Pause Media key + + + Windows 2000/XP: Previous Track key + + + Windows 2000/XP: Stop Media key + + + Multiply key + + + N key + + + Reserved + + + NUM LOCK key + + + Numeric keypad 0 key + + + Numeric keypad 1 key + + + Numeric keypad 2 key + + + Numeric keypad 3 key + + + Numeric keypad 4 key + + + Numeric keypad 5 key + + + Numeric keypad 6 key + + + Numeric keypad 7 key + + + Numeric keypad 8 key + + + Numeric keypad 9 key + + + O key + + + Used for miscellaneous characters; it can vary by keyboard. + + + OEM Auto key + + + Windows 2000/XP: The OEM angle bracket or backslash key on the RT 102 key keyboard + + + CLEAR key + + + Windows 2000/XP: The OEM close bracket key on a US standard keyboard + + + Windows 2000/XP: For any country/region, the ',' key + + + OEM Copy key + + + OEM Enlarge Window key + + + Windows 2000/XP: For any country/region, the '-' key + + + Windows 2000/XP: The OEM open bracket key on a US standard keyboard + + + Windows 2000/XP: For any country/region, the '.' key + + + Windows 2000/XP: The OEM pipe key on a US standard keyboard + + + Windows 2000/XP: For any country/region, the '+' key + + + Windows 2000/XP: The OEM question mark key on a US standard keyboard + + + Windows 2000/XP: The OEM singled/double quote key on a US standard keyboard + + + Windows 2000/XP: The OEM Semicolon key on a US standard keyboard + + + Windows 2000/XP: The OEM tilde key on a US standard keyboard + + + P key + + + PA1 key + + + PAGE DOWN key + + + PAGE UP key + + + PAUSE key + + + Play key + + + PRINT key + + + PRINT SCREEN key + + + Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: IME PROCESS key + + + Q key + + + R key + + + RIGHT ARROW key + + + Right ALT key + + + Right CONTROL key + + + Right SHIFT key + + + Right Windows key + + + S key + + + SCROLL LOCK key + + + SELECT key + + + Windows 2000/XP: Select Media key + + + Separator key + + + Computer Sleep key + + + SPACEBAR + + + Subtract key + + + T key + + + TAB key + + + U key + + + UP ARROW key + + + V key + + + Windows 2000/XP: Volume Down key + + + Windows 2000/XP: Volume Mute key + + + Windows 2000/XP: Volume Up key + + + W key + + + X key + + + Y key + + + Z key + + + Zoom key + + + Identifies the state of a keyboard key. + + + Key is pressed. + + + Key is released. + + + Allows retrieval of position and button clicks from a mouse input device. Reference page contains links to related code samples. + + + Gets the current state of the mouse, including mouse position and buttons pressed. Reference page contains links to related code samples. + + + Sets the position of the mouse cursor relative to the upper-left corner of the window. + The horizontal position of the mouse cursor, relative to the left edge of the game window. + The vertical position of the mouse cursor, relative to the upper edge of the game window. + + + Gets or sets the window used for mouse processing. Mouse coordinates returned by GetState are relative to the upper-left corner of this window. Reference page contains links to related code samples. + + + Represents the state of a mouse input device, including mouse cursor position and buttons pressed. Reference page contains links to related code samples. + + + Initializes a new instance of the MouseState class. + Horizontal mouse position. + Vertical mouse position. + Mouse scroll wheel value. + Left mouse button state. + Middle mouse button state. + Right mouse button state. + XBUTTON1 state. + XBUTTON2 state. + + + Returns a value that indicates whether the current instance is equal to a specified object. + Object with which to make the comparison. + + + Gets the hash code for this instance. + + + Returns the state of the left mouse button. + + + Returns the state of the middle mouse button. + + + Determines whether two MouseState instances are equal. + Object on the left of the equal sign. + Object on the right of the equal sign. + + + Determines whether two MouseState instances are not equal. + Object on the left of the equal sign. + Object on the right of the equal sign. + + + Returns the state of the right mouse button. + + + Gets the cumulative mouse scroll wheel value since the game was started. + + + Retrieves a string representation of this object. + + + Specifies the horizontal position of the mouse cursor. Reference page contains links to related code samples. + + + Returns the state of XBUTTON1. + + + Returns the state of XBUTTON2. + + + Specifies the vertical position of the mouse cursor. Reference page contains links to related code samples. + + + Provides access to an album in the media library. + + + Gets the Artist of the Album. + + + Immediately releases the unmanaged resources used by this object. + + + Gets the duration of the Album. + + + Determines whether the specified Album is equal to this Album. + Album to compare with this instance. + + + Determines whether the specified Object is equal to this Album. + Object to compare with this instance. + + + Gets the Genre of the Album. + + + Returns the stream that contains the album art image data. + + + Gets the hash code for this instance. + + + Returns the stream that contains the album thumbnail image data. + + + Gets a value indicating whether the Album has associated album art. + + + Gets a value indicating whether the object is disposed. + + + Gets the name of the Album. + + + Determines whether the specified Album instances are equal. + Object to the left of the equality operator. + Object to the right of the equality operator. + + + Determines whether the specified Album instances are not equal. + Object to the left of the inequality operator. + Object to the right of the inequality operator. + + + Gets a SongCollection that contains the songs on the album. + + + Returns a String representation of this Album. + + + A collection of albums in the media library. + + + Gets the number of Album objects in the AlbumCollection. + + + Immediately releases the unmanaged resources used by this object. + + + Returns an enumerator that iterates through the AlbumCollection. + + + Gets a value indicating whether the object is disposed. + + + Gets the Album at the specified index in the AlbumCollection. + Index of the Album to get. + + + Returns an enumerator that iterates through the collection. + + + Provides access to artist information in the media library. + + + Gets the AlbumCollection for the Artist. + + + Immediately releases the unmanaged resources used by this object. + + + Determines whether the specified Artist is equal to this Artist. + Artist to compare with this instance. + + + Determines whether the specified Object is equal to this Artist. + Object to compare with this instance. + + + Gets the hash code for this instance. + + + Gets a value indicating whether the object is disposed. + + + Gets the name of the Artist. + + + Determines whether the specified Artist instances are equal. + Object to the left of the equality operator. + Object to the right of the equality operator. + + + Determines whether the specified Artist instances are not equal. + Object to the left of the inequality operator. + Object to the right of the inequality operator. + + + Gets the SongCollection for the Artist. + + + Returns a String representation of the Artist. + + + The collection of all artists in the media library. + + + Gets the number of Artist objects in the ArtistCollection. + + + Immediately releases the unmanaged resources used by this object. + + + Returns an enumerator that iterates through the ArtistCollection. + + + Gets a value indicating whether the object is disposed. + + + Gets the Artist at the specified index in the ArtistCollection. + Index of the Artist to get. + + + Returns an enumerator that iterates through the collection. + + + Provides access to genre information in the media library. + + + Gets the AlbumCollection for the Genre. + + + Immediately releases the unmanaged resources used by this object. + + + Determines whether the specified Genre is equal to this Genre. + Genre to compare with this instance. + + + Determines whether the specified Object is equal to this Genre. + Object to compare with this instance. + + + Gets the hash code for this instance. + + + Gets a value indicating whether the object is disposed. + + + Gets the name of the Genre. + + + Determines whether the specified Genre instances are equal. + Object to the left of the equality operator. + Object to the right of the equality operator. + + + Determines whether the specified Genre instances are not equal. + Object to the left of the inequality operator. + Object to the right of the inequality operator. + + + Gets the SongCollection for the Genre. + + + Returns a String representation of the Genre. + + + The collection of all genres in the media library. + + + Gets the number of Genre objects in the GenreCollection. + + + Immediately releases the unmanaged resources used by this object. + + + Returns an enumerator that iterates through the GenreCollection. + + + Gets a value indicating whether the object is disposed. + + + Gets the Genre at the specified index in the GenreCollection. + Index of the Genre to get. + + + Returns an enumerator that iterates through the collection. + + + Provides access to songs, playlists, and pictures in the device's media library. Reference page contains code sample. + + + Initializes a new instance of the MediaLibrary class. + + + Initializes a new instance of the MediaLibrary class, using a specific media source to create the new media library. Reference page contains code sample. + A media source that will be the source for the media library. + + + Gets the AlbumCollection that contains all albums in the media library. + + + Gets the ArtistCollection that contains all artists in the media library. + + + Releases the resources used by the MediaLibrary. + + + Gets the GenreCollection that contains all genres in the media library. + + + Retrieves a picture from the device's media library based on a picture token. Reference page contains links to related conceptual articles. + The picture token. This cannot be null + + + Gets a value indicating whether the object is disposed. + + + Gets the MediaSource with which this media library was constructed. + + + Gets the PictureCollection that contains all pictures in the media library. + + + Gets the PlaylistCollection that contains all playlists in the media library. + + + Gets the root PictureAlbum for all pictures in the media library. + + + Returns the collection of all saved pictures in the device's media library. + + + Saves the image to the media library, and then returns that saved image as a picture object. Reference page contains links to related conceptual articles. + Name of the image file saved to the media library. + Buffer that contains the image in the required JPEG file format. + + + Saves the image contained in the stream object to the media library, and then returns that saved image as a picture object. Reference page contains links to related conceptual articles. + Name of the image file that is saved to the media library. + Stream object that contains the image information in the required JPEG file format. + + + Gets the SongCollection that contains all songs in the media library. + + + Provides methods and properties to play, pause, resume, and stop songs. MediaPlayer also exposes shuffle, repeat, volume, play position, and visualization capabilities. Reference page contains links to related code samples. + + + Raised when the active song changes due to active playback or due to explicit calls to the MoveNext or MovePrevious methods. + + + + Determines whether the game has control of the background music. + + + Retrieves visualization (frequency and sample) data for the currently-playing song. Reference page contains code sample. + Visualization (frequency and sample) data for the currently playing song. + + + Gets or set the muted setting for the media player. + + + Gets or sets the repeat setting for the media player. + + + Gets or sets the shuffle setting for the media player. + + + Gets or sets the visualization enabled setting for the media player. + + + Raised when the media player play state changes. + + + + Moves to the next song in the queue of playing songs. + + + Moves to the previous song in the queue of playing songs. + + + Pauses the currently playing song. + + + Plays a Song. Reference page contains links to related code samples. + Song to play. + + + Plays a SongCollection. Reference page contains links to related code samples. + SongCollection to play. + + + Plays a SongCollection, starting with the Song at the specified index. Reference page contains links to related code samples. + SongCollection to play. + Index of the song in the collection at which playback should begin. + + + Gets the play position within the currently playing song. + + + Gets the media playback queue, MediaQueue. + + + Resumes a paused song. + + + Gets the media playback state, MediaState. + + + Stops playing a song. + + + Gets or sets the media player volume. + + + Provides methods and properties to access and control the queue of playing songs. + + + Gets the current Song in the queue of playing songs. + + + Gets or sets the index of the current (active) song in the queue of playing songs. + + + Gets the count of songs in the MediaQueue. + + + Gets the Song at the specified index in the MediaQueue. + + + + Provides methods and properties to access the source or sources from which the media will be read. + + + Gets the available media sources. Reference page contains code sample. + + + Gets the MediaSourceType of this media source. + + + Gets the name of this media source. + + + Returns the name of this media source. + + + Type of the media source. + + + A local device. + + + A Windows Media Connect device. + + + Media playback state (playing, paused, or stopped). + + + Media playback is paused. + + + Media is currently playing. + + + Media playback is stopped. + + + Provides access to a picture in the media library. + + + Gets the picture album that contains the picture. + + + Gets the picture's date. + + + Immediately releases the unmanaged resources used by this object. + + + Determines whether the specified Picture is equal to this Picture. + Picture to compare with this instance. + + + Determines whether the specified Object is equal to this Picture. + Object to compare with this instance. + + + Gets the hash code for this instance. + + + Returns the stream that contains the image data. + + + Returns the stream that contains the picture's thumbnail image data. + + + Gets the picture's height. + + + Gets a value indicating whether the object is disposed. + + + Gets the name of the Picture. + + + Determines whether the specified Picture instances are equal. + Object to the left of the equality operator. + Object to the right of the equality operator. + + + Determines whether the specified Picture instances are not equal. + Object to the left of the inequality operator. + Object to the right of the inequality operator. + + + Returns a String representation of the Picture. + + + Gets the picture's width. + + + Provides access to a picture album in the media library. + + + Gets the collection of picture albums that are contained within the picture album (that is, picture albums that are children of the picture album). + + + Immediately releases the unmanaged resources used by this object. + + + Determines whether the specified PictureAlbum is equal to this PictureAlbum. + PictureAlbum to compare with this instance. + + + Determines whether the specified Object is equal to this PictureAlbum. + Object to compare with this instance. + + + Gets the hash code for this instance. + + + Gets a value indicating whether the object is disposed. + + + Gets the name of the PictureAlbum. + + + Determines whether the specified PictureAlbum instances are equal. + Object to the left of the equality operator. + Object to the right of the equality operator. + + + Determines whether the specified PictureAlbum instances are not equal. + Object to the left of the inequality operator. + Object to the right of the inequality operator. + + + Gets the parent picture album. + + + Gets the collection of pictures in this picture album. + + + Returns a String representation of the PictureAlbum. + + + A collection of picture albums in the media library. + + + Gets the number of PictureAlbum objects in the PictureAlbumCollection. + + + Immediately releases the unmanaged resources used by this object. + + + Returns an enumerator that iterates through the PictureAlbumCollection. + + + Gets a value indicating whether the object is disposed. + + + Gets the PictureAlbum at the specified index in the PictureAlbumCollection. + + + + Returns an enumerator that iterates through the collection. + + + A collection of pictures in the media library. + + + Gets the number of Picture objects in the PictureCollection. + + + Immediately releases the unmanaged resources used by this object. + + + Returns an enumerator that iterates through the PictureCollection. + + + Gets a value indicating whether the object is disposed. + + + Gets the Picture at the specified index in the PictureCollection. + + + + Returns an enumerator that iterates through the collection. + + + Provides access to a playlist in the media library. + + + Immediately releases the unmanaged resources used by this object. + + + Gets the duration of the Playlist. + + + Determines whether the specified Playlist is equal to this Playlist. + Playlist to compare with this instance. + + + Determines whether the specified Object is equal to this Playlist. + Object to compare with this instance. + + + Gets the hash code for this instance. + + + Gets a value indicating whether the object is disposed. + + + Gets the name of the Playlist. + + + Determines whether the specified Playlist instances are equal. + Object to the left of the equality operator. + Object to the right of the equality operator. + + + Determines whether the specified Playlist instances are not equal. + Object to the left of the inequality operator. + Object to the right of the inequality operator. + + + Gets a SongCollection that contains the songs in the playlist. + + + Returns a String representation of the Playlist. + + + A collection of playlists in the media library. + + + Gets the number of Playlist objects in the PlaylistCollection. + + + Immediately releases the unmanaged resources used by this object. + + + Returns an enumerator that iterates through the PlaylistCollection. + + + Gets a value indicating whether the object is disposed. + + + Gets the Playlist at the specified index in the PlaylistCollection. + + + + Returns an enumerator that iterates through the collection. + + + Provides access to a song in the song library. + + + Gets the Album on which the Song appears. + + + Gets the Artist of the Song. + + + Immediately releases the unmanaged resources used by this object. + + + Gets the duration of the Song. + + + Determines whether the specified Song is equal to this Song. + Song to compare with this instance. + + + Determines whether the specified Object is equal to this Song. + Object to compare with this instance. + + + Constructs a new Song object based on the specified URI. + Name of the song. + Uri object that represents the URI. + + + Gets the Genre of the Song. + + + Gets the hash code for this instance. + + + Gets a value indicating whether the object is disposed. + + + Gets a value that indicates whether the song is DRM protected content. + + + Gets a value that indicates whether the song has been rated by the user. + + + Gets the name of the Song. + + + Determines whether the specified Song instances are equal. + Object to the left of the equality operator. + Object to the right of the equality operator. + + + Determines whether the specified Song instances are not equal. + Object to the left of the inequality operator. + Object to the right of the inequality operator. + + + Gets the song play count. + + + Gets the user's rating for the Song. + + + Returns a String representation of the Song. + + + Gets the track number of the song on the song's Album. + + + A collection of songs in the song library. + + + Gets the number of Song objects in the SongCollection. + + + Immediately releases the unmanaged resources used by this object. + + + Returns an enumerator that iterates through the SongCollection. + + + Gets a value indicating whether the object is disposed. + + + Gets the Song at the specified index in the SongCollection. + + + + Returns an enumerator that iterates through the collection. + + + Encapsulates visualization (frequency and sample) data for the currently-playing song. + + + Initializes a new instance of the VisualizationData class. + + + Returns a collection of floats that contain frequency data. + + + Returns a collection of floats that contain sample data. + + + \ No newline at end of file diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/WindowsGame2.exe b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/WindowsGame2.exe new file mode 100644 index 0000000000000000000000000000000000000000..7fdca2c7feb954a512371d3b787fd52faa261436 GIT binary patch literal 10240 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 H(7^u!xAvzg literal 0 HcmV?d00001 diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/WindowsGame2.pdb b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/WindowsGame2.pdb new file mode 100644 index 0000000000000000000000000000000000000000..1073bc4ce38c2de908482633309d37a7d682a1c1 GIT binary patch literal 13824 zcmeHNTWpj?6rNq6P@vdFtmVGkk;`@q@HT+hZP9E z5W@p6CXhhn35YQfUbrO07^21p1Y%4iQIQxRNP{7P7()HNxwJo7MrdXJ*cv zbLO16{_}6pjwIsActgrtSynlDvNu?_$UDpD_ZRgY5~vdZxBM4Fk=)BXV2C35=SvWQ zGi`b3&Jma`#NF=fe|Pu2-}mJ%i~%8vHA>Rf))Ta?tp}cYc$p*6S^s;`^ZEXNnR~s% zx4ph{*FPhdt#hGh$=9tn0-=W5lfK>8kB7EYm|El!op5RS^vohBJD=_%5$J6Gb5C^6 zf9B~F%jPEizJ1J%nfZ-YNOtyRvXo7lUi+yQoB*AeR!t1Lv0QlOJ~a2)Eu^yo=Ba& z_4rz)DFeM4_yy37OfOyje8|wte%Dc$PL=-A&uBD&1VG2vw#K|0aN#YM^q;BVL7W0K`Uy9`Ms?`OcOnOemDR6*{|08RC8)v zq5I^KWA$uzPz1okoI~u{2fViB9OPkJ$*I1qU?HGT5&6VzZb1Mk*_SmjJ7tHP><=vT z|6|yKP=CmBJkZWeJ!TGQJFhzIpj`z)W2ZJAjymH0G`9Nd>u7CKTEv=DP;YFlj5Rr} zJ&7$d7e3OqeA0?~6u{Poc3aKSaLN*M9~C<^mVISn*Aq%)8kg>jqp|m!w#V_JBMS0E8?LHbF2`Wtd9fNGw)funX1fmBs|UL9XT}KWSRi4p)`9k>=?9VRuLr7rbs@eA&`mOC%)vKldl4x6 z=Vt5uG-FwfJY%y2bSh{qsEQAFFCjc)ID8z_Zilf}{pph5(^&^|MaGZmI><9l=qu?X z_R2KBwXXr~i2Eq1?>5TWPuwdB^xX@r0HPgY6EF?j2RsHm2fPYIXhbP+3Jn2h-;BYF zvP6v&on&=}f)tBS*p7ji^`E{l4g~U@>p$zTExUokG@o^b2(R30kd_ohf=4A%&IjUK zk29xGzgWsB+n85w&MVh&rHB3cK9IoiVA{!;HOW#r57TT@5kkeWKLC{cS3rT(FZ+T0 zO&>_1o(-4%F-S~->;UA4NeY$(_SJ2qsEhguOb3uzZ3<-R^MCM8cSvE`t!6Z39wy5S zP&U!lvu4u*Qvlvd|j4Z z-YeVg6wgd&msh@L$~g0nl6Tg9Af4{Wc{`H1PI3BYg#}r;xnpwfV$YFlwI38~v{(#W z0jvjd&T>BQ1nvQHUCYDMM__~)VAf--^OZ}3lh;?pQi*Nrm&I+Kln07&lFxzS7U~6{ zM7-fB^Uw4Xrg3dob7S3U8-EypV{GeTGm&GFQZ$P>AJHz>M}+yy-Aw7s!Z1{ zM}<7(Bk%%6z>7J=G1?iJvjNX8eNc~k*%R+)of&xX%jo(`4eaBV!g6`1P}G=0O#)m42QJ8_*rMUZ)c7l=XJ7AUmA-Ul?yB9 zR8>`Jx$OG;i7Qy630I&ztA2UUE2?Jtt7a|q&k$2j_->i{=KVlvQcv<&K3*4^y38^i z0Gj)iOdik2<~=r(R}UVhlY~s(29%n2&`ciVXYL1_JU6rz$pTmVZ#4KFhjW&|J~otf z*?Ru*Y(@A#Zqjq8)A=bunC}(ZUF86ubW%ZIN4kTbPjwoBY`_1y42d#a&NkM>8sefX zhS&6@C`%?HWt*&U)Jkk8g{ z0N9K)m)}w#Bg6dxcZf1-{XqF%$4D`nj56+8c+bK+7I}Ze2=hMgHQ*qiSu>H$!!wA0 P+RLATp}dI~G6Mes`m1?8 literal 0 HcmV?d00001 diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/ContentPipeline-{58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08}.xml b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/ContentPipeline-{58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08}.xml new file mode 100644 index 00000000..624cc0d0 --- /dev/null +++ b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/ContentPipeline-{58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08}.xml @@ -0,0 +1,65 @@ + + + + + NoEffect.fx + NoEffect + EffectImporter + EffectProcessor + None + C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Content\NoEffect.xnb + + + + GreyScaleEffect.fx + GreyScaleEffect + EffectImporter + EffectProcessor + None + C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Content\GreyScaleEffect.xnb + + + true + + {58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08} + Windows + Reach + Debug + false + C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2Content\ + C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\ + C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\obj\x86\Debug\ + C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Content\ + + + + C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\Microsoft.Xna.Framework.Content.Pipeline.XImporter.dll + 2011-09-01T16:22:30-07:00 + + + C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\Microsoft.Xna.Framework.Content.Pipeline.VideoImporters.dll + 2011-09-01T16:22:30-07:00 + + + C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\Microsoft.Xna.Framework.Content.Pipeline.TextureImporter.dll + 2011-09-01T16:22:30-07:00 + + + C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\Microsoft.Xna.Framework.Content.Pipeline.FBXImporter.dll + 2011-09-01T16:22:30-07:00 + + + C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\Microsoft.Xna.Framework.Content.Pipeline.EffectImporter.dll + 2011-09-01T16:22:30-07:00 + + + C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\Microsoft.Xna.Framework.Content.Pipeline.AudioImporters.dll + 2011-09-01T16:22:30-07:00 + + + C:\Windows\Microsoft.Net\assembly\GAC_32\Microsoft.Xna.Framework.Content.Pipeline\v4.0_4.0.0.0__842cf8be1de50553\Microsoft.Xna.Framework.Content.Pipeline.dll + 2018-07-16T14:58:20.8638642-07:00 + + + + \ No newline at end of file diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/Microsoft.Xna.Framework.RuntimeProfile.txt b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/Microsoft.Xna.Framework.RuntimeProfile.txt new file mode 100644 index 00000000..4af32754 --- /dev/null +++ b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/Microsoft.Xna.Framework.RuntimeProfile.txt @@ -0,0 +1 @@ +Windows.v4.0.Reach diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.csproj.CoreCompileInputs.cache b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.csproj.CoreCompileInputs.cache new file mode 100644 index 00000000..b3f39e63 --- /dev/null +++ b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +195bd43c29a6ba026ccc6f6be4e6865b933bd563 diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.csproj.FileListAbsolute.txt b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..1736ccb3 --- /dev/null +++ b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.csproj.FileListAbsolute.txt @@ -0,0 +1,19 @@ +C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\WindowsGame2.exe +C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\WindowsGame2.pdb +C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Microsoft.Xna.Framework.dll +C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Microsoft.Xna.Framework.Game.dll +C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Microsoft.Xna.Framework.GamerServices.dll +C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Microsoft.Xna.Framework.Graphics.dll +C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Microsoft.Xna.Framework.Input.Touch.dll +C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Microsoft.Xna.Framework.xml +C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Microsoft.Xna.Framework.Game.xml +C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Microsoft.Xna.Framework.Graphics.xml +C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Microsoft.Xna.Framework.GamerServices.xml +C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Microsoft.Xna.Framework.Input.Touch.xml +C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\obj\x86\Debug\Microsoft.Xna.Framework.RuntimeProfile.txt +C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\obj\x86\Debug\WindowsGame2.csproj.CoreCompileInputs.cache +C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\obj\x86\Debug\WindowsGame2.csproj.CopyComplete +C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\obj\x86\Debug\WindowsGame2.exe +C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\obj\x86\Debug\WindowsGame2.pdb +C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Content\NoEffect.xnb +C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Content\GreyScaleEffect.xnb diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.exe b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.exe new file mode 100644 index 0000000000000000000000000000000000000000..7fdca2c7feb954a512371d3b787fd52faa261436 GIT binary patch literal 10240 zcmeHNd0dp$-aj)SC@KoJXE~y`7fVN6x@k#nm~m56aVgX6VR(R%VP<+}hQ&8i%cX_# zT3v6Jc1@-9(#?Ix4IzYBUXe&-2_=`@0A=6K`~97nfuXY7z4gcY`P}#5`JMIo?Z4l1 z<~dHD^JnJ97;{JEoU#3Asf-cum%$P&d-pl$&31Rm?z>+#DZB5CNWDd4R!k9!6s^%o zMx)8936(X9&8X2EH9^mYXrfJFvbKA7ul^3yQztMsN#({G`%HboNv({jRb5p9jCI4z zefHVLN6>0e$Dk6>pi$fTMo;ihEn9+$c`9l)W;tU$#lQB}F|==CTY&dj>W^XUp1U2B zuFXq!Hp~w**4uUdpY=72b#~d)8RMs2##*Z!XQeU8sByFozA+L-!`Mq&#iHmi61&*OvPORO~@)#0tu*UaS~+RWOa3d9tp)tSjOF zNbTQ4Y*ec)Sn^r~B<^Z|A9NLT%_d)3efS}!_U|QnQp~c6^qv!SdE{fERVbEln0ML!=Hh)dEBajs%Z;2w+Bo@}HTsh}+tqzwdA(~R58fYa4B zHdRAUtY+`3<1v#UMl0?)3l7z6ml&n8zG8IPF**UB)a;aFlq*L0j!_bWQ!($p3?-E{ zxlM6ILKHNmVjp3aU>9~4TJ-_+VD|!gu>pWR*$@Fo3OH84U;(EI_&ng9OcH&)fblF5 z7`C!autGd$JlImeKIrdr`vcp-y1Dm6pSX{QM?cKo#Oh#noP7;FtYv1mAoeMHQ5}rc z_aH?)Bkl`Xi)sctz_zNN#|%lJMR+X+?8V*yyq|pz*pF=od_=%uECu~11RT#!qW_HO zhY0urE5nQqUUDCMl({c)`V~|m3V9%To3qSk}R zAuDXW$!L|0*7l*nq%f_{3V1u0bRuFPFWlKlHb^f;7)=%{Jlr|uP@*;%R1}jrL{`Z2 zf3j>htgN)H+dU8ZK|EnQyu~6S$nLZjXH+?d&xS65ylg_8-g;ZM9g+$(&i*8m6z1&D zG#Xq+w-Y|tXtr5dkRrvhsRk)tR)URTavZb3TGLG?Ymi<6BPJ!DGDMH@%*2eyF|vR( z6>_9tz{Ql{XSN-D=^s(^*Ux9}8kMTEn}(@6q2uF2LvI3VcTbgXH=6Vfbk{K7=LyUc z<9VK*Zfc*&KGQsy3XO~vpJ@d2VmTO@%O_f(i|)K{;oMpG4ljGN^Rj{UM;^G)Da6gg zcP#3JPE4hGz`L``aT=aeA|Lcld@H#85%HT1Y-kKtpD&4(g=CzV?zdoKB@~JG<@jDfI%a40mBCkdrUX% z(V^0?@F9=t7?V|OfOg7+8ErXXpd&~E={z&gkpKh78}x8j@ala>+fK@Iu*DQ)y*`9O z)3%}+uCYI$aXe4&aR>ieaZZ{pOS;JJI0fP;<2dV6s_zY{5^xqwz=3LdNKnW#DHYd( z=7vu?q)oW8XYR|xN$By9&z)&OAkWnYX+o^FFz_`OX)DTVGS5XeRl?-hxvskUg@Gw_ z!Q8kJf5hWRxE=Os&0(R$-2c(?KaO)cv3G^~8tVPDIM4I;70R3w;$)Gs#EVjvwP6N2 zr{dS%ADCv0=(PiPaoP#MuPFM7@e*1(qy8B!{RTLO7L7}>pN8?GqZ?k_3PWl~-9sicw?9aN*{xi4Pe-C~o;4sRzkWh}|k5+>^236&v)L!^SLiOhg z=Um;|+Unle*x04Ew$|t7&71dKzkXeF?b@~eX!}-GRoz!pQ{zMHEiEnX*h{YdyA{IM z)YRk&8a;2^xY4J$xHzt`u<*sAqM|V+B_$)i|NeU|cwI*Y~9dh+DSIeB?`6U)lVhJd#R>gwuxKnI=hoZTsYqZS~Gie$QV z>(-qYFJ2t5dGqF~zkTwTTiF>$8<#9uT(xS|svnY*lmC9|)TxQk!$8>PF6{5}d+5Mb zcG$TOXzYxSkEv|B?QSh9%;2Z6;g65PPws~eync%f zNcYXn%^oBR*?r^2jWwG#uC30k;B_sGBc0y%*>-aEBgd5Dm=yOV1w|N zrne}H(z<2KmRG;}>Z_ThrKOKitdQ;;JgEQGcmREO_)*WRSFiTpx^?T#b?g3e>*UE~ zK|3>xd?WHES~V?%ivEA51DQFCT)u^Z?<29w{D37j7h% zqoq7W)x*)!8u2N31>cl!?m$c_Hk-9^=gzIo+1V+edyHpiQ$4|nj|&$|`N_0{JX|+N z*x=JoKizZa(4la|$}{KBpC5*}=?DM48+=fH^ri~Ec+(iQ7xINK^+{J0w@!VL{~(ro zr=_K3uUxsTGC6q%&&fF<^q!rS;-H_x^YgR#g$pHo`BF2Nb#v>NE?xS=rcIkZJ8qd$1*4`249yiH^H$pBP;j30u%`hd^7z)KI%?hHQ3?=@e3`DMkL zHLGu>rXS`xx#>JBGga`Ao0HB~B$OjA zcW&RleL3`DJ96ZRa`526ReSdA`8+8pDJL;8u>|$p{{8zCzyA8`=ZLqRq9S$mX0x%8@)N}eRg*Eg#So=$COzq-xs8iniK||^bV(JxOENPvqYyhI zVJ8jz;tu4Tean`;UYU`V)>>Ux$s3w(@|qgbcLPsP-^b@YH;T`j^EeNgKA3-=_^zN| zQ*#dfaE2!z+{WKpxsXRMc(E}e?1cuM^g=`E{Milj=1ggnUYyosLEhZF;e8QD*|{0@ z%a<>!Bp$x~_S>h)CqTa!=+M@esu->G?j1O_yJFN>lMD{{bhW|u0-UoG+tL*DfSSkK@Leu zN~|IJ@P|oc1JL(@&um?>a`_F4v2`CV<1fq%6IH#S!zcUSOB7t8pC%O(6&UOG=q{G@L6>eUVK z%L$PGzhM8Kpr5qzjTIH8=L`9~*`s;?`xqZS$d`Zm$zu54xBMSptmSXLZsZ$3UdAt; z`xZV>)kZh(bSlrzP2r7=4Px$Gc^)rDu097`g@w7ipdbgan=Rt_5Nwr@@J1E#=S9S8 zAnf0l@&tV0z1Ln_T6Ou#1-|@s6Ayf}H#dY&<*6x2h`SPg{c1TcgHP5p*?q72`UOF2 z@4+Pg)L4H$aohmD3A*RJiRWbRzY0pbbytkYU_3*z9 z$eV-7|0(|{6h4uGHZ^SzPujY^W!dYCtB@;B z<6QRya*-d|p7J2xVfS0D)|QVy{^%by(Cn?E-@kRL#7o-fIPpC94&_s0p)KE_j1_wk)OHuHqHm)}Ib zyb4<{g5Nz%xte6hyTFZF*dm^Eu=VesS7v_wRTI^(v(uZ;6c@BsUjCl%xL(R*&LnZu z?p6Htq7+_=d|Xj^nV-OWy09RV7nh#qdHI?ARBnclI}5oxJ^cXq`i#H-{#!M%u`%_? z)1M(nliu&6_kiP_q=F7SXbc`ciiwSBc2QVe;^%Fb{(aTR}I^?&o!^dqo&I;Zo);lp3@zpiOM=3EcF%foT8a zyhL-P3tC4NX9n;???`W)5$?Qn>C&=o+qPZ(?DNEma=e$WTq@zl-KBiiraZpplXTu^ z&~6^{Y9imT;e*$dY{%a&Fl#v2gh2e5Y_&UL-%9SgZVA=AG^+x0w2&k_%a)w`@# zOY7SSZ{OIxYg={lp*^(+jvQ?I;_sVkR;*ZBfwdOIw;8$hA^7<{pxvEpN;>^Hox9Tb zrM^QC^!t$XFxCPda8|8b^vWx@(AL^)wnpTTX2kYH@^L!T!EW6gey;j0w4Ho8cyK3q z;Ge$GZP1k~SHj_+)6gFZdHtZDUKGm?KO-OdiJv*~{W~pqXp0rd<_TW9fR-0(7xcXx z@(Q}YMrQ00rFk^o_B}YSchpKx&Z(ABh2_ei!DF~dKgJfLcI&YOS9GXuKd#3xkJ_Wm zUi;KDHd;JXhKDPGq#g)~kfZFM=DZtYjzZr?G#dL?3;Lp=V#U}q%H>z)D7WF*JBx*| z`G6DHbo7F8+dT#2V8EyBH{a~AdqpcfZ?A;jZi>;=MWGuS`-~V05G3Yi;WkSF9zE_p z@fjXpU&HYwmP&u|)C{ajn6+SC!uMId_)aS}uakkwS+$%AP<<{_Nj<#U(4&{9M+|f_^-tmBcvpg(e%N7(h_~CR?te&OFL(`qou{} zI8-W6Ghg7Cgi(Zenlxa>Js)u%!R+^JKb_Oyj!}cZq2Ol-8v#5I1B)vjyQRW_HyU^q z76nP10gm<>9&x@h3`IEa_wLf;*q z{jt`6tn(4#nX!<@B4i5%=kd_QKYPx9Ccd+}IDN&TqoYR0MH@6R_8X-@zaiQHKaFhE znZj^;66iN`##4hv_-QOw$rvUXOh!4-FJ89zjefGbS9h;blH=k|0~AI}pr1`KK5o%P z;g)mvCH`b>IpAB>{XH z@rgdrZ*u%tv)Q26iR(M9WH$Q^wqvj=Hj6db7;gHN{0#LI&w;i@*4c267Vj8iMv-5( zfloPXs-lm<)oFxm`IT6QIk9R`+VS9nwa!L&YLny`*`P5H4D^#M!NwRORPyC0-`~PBg H(7^u!xAvzg literal 0 HcmV?d00001 diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.pdb b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.pdb new file mode 100644 index 0000000000000000000000000000000000000000..1073bc4ce38c2de908482633309d37a7d682a1c1 GIT binary patch literal 13824 zcmeHNTWpj?6rNq6P@vdFtmVGkk;`@q@HT+hZP9E z5W@p6CXhhn35YQfUbrO07^21p1Y%4iQIQxRNP{7P7()HNxwJo7MrdXJ*cv zbLO16{_}6pjwIsActgrtSynlDvNu?_$UDpD_ZRgY5~vdZxBM4Fk=)BXV2C35=SvWQ zGi`b3&Jma`#NF=fe|Pu2-}mJ%i~%8vHA>Rf))Ta?tp}cYc$p*6S^s;`^ZEXNnR~s% zx4ph{*FPhdt#hGh$=9tn0-=W5lfK>8kB7EYm|El!op5RS^vohBJD=_%5$J6Gb5C^6 zf9B~F%jPEizJ1J%nfZ-YNOtyRvXo7lUi+yQoB*AeR!t1Lv0QlOJ~a2)Eu^yo=Ba& z_4rz)DFeM4_yy37OfOyje8|wte%Dc$PL=-A&uBD&1VG2vw#K|0aN#YM^q;BVL7W0K`Uy9`Ms?`OcOnOemDR6*{|08RC8)v zq5I^KWA$uzPz1okoI~u{2fViB9OPkJ$*I1qU?HGT5&6VzZb1Mk*_SmjJ7tHP><=vT z|6|yKP=CmBJkZWeJ!TGQJFhzIpj`z)W2ZJAjymH0G`9Nd>u7CKTEv=DP;YFlj5Rr} zJ&7$d7e3OqeA0?~6u{Poc3aKSaLN*M9~C<^mVISn*Aq%)8kg>jqp|m!w#V_JBMS0E8?LHbF2`Wtd9fNGw)funX1fmBs|UL9XT}KWSRi4p)`9k>=?9VRuLr7rbs@eA&`mOC%)vKldl4x6 z=Vt5uG-FwfJY%y2bSh{qsEQAFFCjc)ID8z_Zilf}{pph5(^&^|MaGZmI><9l=qu?X z_R2KBwXXr~i2Eq1?>5TWPuwdB^xX@r0HPgY6EF?j2RsHm2fPYIXhbP+3Jn2h-;BYF zvP6v&on&=}f)tBS*p7ji^`E{l4g~U@>p$zTExUokG@o^b2(R30kd_ohf=4A%&IjUK zk29xGzgWsB+n85w&MVh&rHB3cK9IoiVA{!;HOW#r57TT@5kkeWKLC{cS3rT(FZ+T0 zO&>_1o(-4%F-S~->;UA4NeY$(_SJ2qsEhguOb3uzZ3<-R^MCM8cSvE`t!6Z39wy5S zP&U!lvu4u*Qvlvd|j4Z z-YeVg6wgd&msh@L$~g0nl6Tg9Af4{Wc{`H1PI3BYg#}r;xnpwfV$YFlwI38~v{(#W z0jvjd&T>BQ1nvQHUCYDMM__~)VAf--^OZ}3lh;?pQi*Nrm&I+Kln07&lFxzS7U~6{ zM7-fB^Uw4Xrg3dob7S3U8-EypV{GeTGm&GFQZ$P>AJHz>M}+yy-Aw7s!Z1{ zM}<7(Bk%%6z>7J=G1?iJvjNX8eNc~k*%R+)of&xX%jo(`4eaBV!g6`1P}G=0O#)m42QJ8_*rMUZ)c7l=XJ7AUmA-Ul?yB9 zR8>`Jx$OG;i7Qy630I&ztA2UUE2?Jtt7a|q&k$2j_->i{=KVlvQcv<&K3*4^y38^i z0Gj)iOdik2<~=r(R}UVhlY~s(29%n2&`ciVXYL1_JU6rz$pTmVZ#4KFhjW&|J~otf z*?Ru*Y(@A#Zqjq8)A=bunC}(ZUF86ubW%ZIN4kTbPjwoBY`_1y42d#a&NkM>8sefX zhS&6@C`%?HWt*&U)Jkk8g{ z0N9K)m)}w#Bg6dxcZf1-{XqF%$4D`nj56+8c+bK+7I}Ze2=hMgHQ*qiSu>H$!!wA0 P+RLATp}dI~G6Mes`m1?8 literal 0 HcmV?d00001 diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/cachefile-{58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08}-targetpath.txt b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/cachefile-{58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08}-targetpath.txt new file mode 100644 index 00000000..f8506c6d --- /dev/null +++ b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/cachefile-{58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08}-targetpath.txt @@ -0,0 +1,2 @@ +Content\NoEffect.xnb +Content\GreyScaleEffect.xnb diff --git a/WindowsGame2/WindowsGame2/WindowsGame2Content/GreyScaleEffect.fx b/WindowsGame2/WindowsGame2/WindowsGame2Content/GreyScaleEffect.fx new file mode 100644 index 00000000..303d389e --- /dev/null +++ b/WindowsGame2/WindowsGame2/WindowsGame2Content/GreyScaleEffect.fx @@ -0,0 +1,21 @@ +sampler s0; +float4 PixelShaderFunction(float2 coords: TEXCOORD0) : COLOR0 +{ + float4 color = tex2D(s0, coords); //Get the default pixel color. + float r = color.r; + float g = color.g; + float b = color.b; + float a = color.a; + float Gray = (r * 0.3 + g * 0.59 + b * 0.11); + + color.rgb = Gray; + return color; +} + +technique Technique1 +{ + pass Pass1 + { + PixelShader = compile ps_2_0 PixelShaderFunction(); + } +} \ No newline at end of file diff --git a/WindowsGame2/WindowsGame2/WindowsGame2Content/NoEffect.fx b/WindowsGame2/WindowsGame2/WindowsGame2Content/NoEffect.fx new file mode 100644 index 00000000..e103bd34 --- /dev/null +++ b/WindowsGame2/WindowsGame2/WindowsGame2Content/NoEffect.fx @@ -0,0 +1,14 @@ +sampler s0; +float4 PixelShaderFunction(float2 coords: TEXCOORD0) : COLOR0 +{ + float4 color = tex2D(s0, coords); //Get the default pixel color. + return color; +} + +technique Technique1 +{ + pass Pass1 + { + PixelShader = compile ps_2_0 PixelShaderFunction(); + } +} \ No newline at end of file diff --git a/WindowsGame2/WindowsGame2/WindowsGame2Content/WindowsGame2Content.contentproj b/WindowsGame2/WindowsGame2/WindowsGame2Content/WindowsGame2Content.contentproj new file mode 100644 index 00000000..3b56ff1d --- /dev/null +++ b/WindowsGame2/WindowsGame2/WindowsGame2Content/WindowsGame2Content.contentproj @@ -0,0 +1,53 @@ + + + {58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08} + {96E2B04D-8817-42c6-938A-82C39BA4D311};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Debug + x86 + Library + Properties + v4.0 + v4.0 + bin\$(Platform)\$(Configuration) + Content + + + x86 + + + x86 + + + WindowsGame2Content + + + + + + + + + + + + NoEffect + EffectImporter + EffectProcessor + + + + + GreyScaleEffect + EffectImporter + EffectProcessor + + + + + \ No newline at end of file diff --git a/WindowsGame2/WindowsGame2/WindowsGame2Content/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/WindowsGame2/WindowsGame2/WindowsGame2Content/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000000000000000000000000000000000000..7332cfe62d855a15bb9edf59fc5c268b49e66d22 GIT binary patch literal 6668 zcmeHMUr!rH5VyfxFeE9aDIw6Lmnv@ewDZeIBgn1uqsgF z;<(jRu!`9BsG}{zT?g0ujF<&WltG2V@_tc*+Cm}n1uJ`8KpILGnj-5-h5EI%YY2XQ zbEk&5M%TyeY7tK_@h^_jU0kPBU23M809$dvKu%O0Wr;jk!amxz)RCMhcQMARf|t-j zw5mw~WhRxVw+F;=VG78EGbreyF)qw9)z$Qod+Zp*^Q+luCabPhrwO|UHXUuYF>qUO z8>Hl74Yg+q*Mu(D90E?x_Y|u@b4a(OhLz;BFChmd5a6MxjNla%`WYoX6fJIG7Hvoy z*0e}u80kbD(IfLzqTTWGv0#-g4xDTXspB3-rfyeFd}v=*N1J3 ziNiNx*Sr$UD<}1ew7GCuu^nRz|2xE%maIj4@oj2legWo|SN4-P>2XI@?S~!qdu!G^ zE-o4!xM)ATD2%3l2*2Y#)#CsfIA}k7XyBl|`f%Rl{)9xdUXb+IApXHj!>0KUybj=cAhG5q;wl)hPhD@H|7e3hnpiQv3d3vrr zL^;1jH{O{)ON5^$OX~#0!Bb`$k?hF(PDT^5SRn zbonhxDf(rSg`l*6z$pikyC)$^Zlff_w(KK_e?g0zKr+**f9o

(CO|K0)nzxIleD zn?!CbX#Wyx!#KP42rFa6GUn&zQ!DYW@ONY^K{lsHn<8S=m{)PM$5@XUj_YdEK@CnJ zLEA!mq0wF7cQO+KxiaE;J%IQ6OPu6Y+vfW2)|!crPDTn0$+$_=o9%VBOcz)u+%03* zvy5;t2>Svn8r!T2F7v=xqsvjYQsn~gDl*V==9X33ER_(MwsZ1A&1R-BiR(pYD`fTIMWb3*19kx!MePEuV^cv;evKTq% z+V{wxIV)V9Nvxl1KVW+=!1PO$^WZFJ)d(F@rtw^Rg{;Hg!|NjRF2L&qq2|EOud&jP gjSPS@%D$%~38td=@Lz)y=)e9YF*t$3RPp}!zms;S6#xJL literal 0 HcmV?d00001 diff --git a/WindowsGame2/WindowsGame2/WindowsGame2Content/obj/x86/Debug/WindowsGame2Content.contentproj.CoreCompileInputs.cache b/WindowsGame2/WindowsGame2/WindowsGame2Content/obj/x86/Debug/WindowsGame2Content.contentproj.CoreCompileInputs.cache new file mode 100644 index 00000000..fd3257bf --- /dev/null +++ b/WindowsGame2/WindowsGame2/WindowsGame2Content/obj/x86/Debug/WindowsGame2Content.contentproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +26d7de9b62fcad55b2171db2099ba5995f37a3ff diff --git a/WindowsGame2/WindowsGame2/WindowsGame2Content/obj/x86/Debug/WindowsGame2Content.contentproj.FileListAbsolute.txt b/WindowsGame2/WindowsGame2/WindowsGame2Content/obj/x86/Debug/WindowsGame2Content.contentproj.FileListAbsolute.txt new file mode 100644 index 00000000..9a9f46e8 --- /dev/null +++ b/WindowsGame2/WindowsGame2/WindowsGame2Content/obj/x86/Debug/WindowsGame2Content.contentproj.FileListAbsolute.txt @@ -0,0 +1 @@ +C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2Content\obj\x86\Debug\WindowsGame2Content.contentproj.CoreCompileInputs.cache From 50f84167aae97e62ecd07784fafbbf321c36ad8c Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Thu, 19 Jul 2018 21:33:50 -0700 Subject: [PATCH 028/110] Shader color upgrade+simple night shader. Added in better color shader with nighttime support. --- ShaderExample/ShaderExample/Class1.cs | 88 +++++++++++++----- .../Content/Shaders/GreyScaleEffect.xnb | Bin 1468 -> 2512 bytes .../Content/Shaders/NoEffect.xnb | Bin 752 -> 1020 bytes .../Framework/Drawers/Characters.cs | 25 +---- .../Debug/Content/Shaders/GreyScaleEffect.xnb | Bin 1468 -> 2512 bytes .../bin/Debug/Content/Shaders/NoEffect.xnb | Bin 752 -> 1020 bytes .../bin/Debug/ShaderExample 0.0.1.zip | Bin 112836 -> 113861 bytes .../ShaderExample/bin/Debug/ShaderExample.dll | Bin 24576 -> 25600 bytes .../ShaderExample/bin/Debug/ShaderExample.pdb | Bin 34304 -> 34304 bytes .../ShaderExample.csproj.FileListAbsolute.txt | 1 - .../ShaderExample/obj/Debug/ShaderExample.dll | Bin 24576 -> 25600 bytes .../ShaderExample/obj/Debug/ShaderExample.pdb | Bin 34304 -> 34304 bytes .../WindowsGame2/WindowsGame2.csproj | 2 +- .../bin/x86/Debug/Content/GreyScaleEffect.xnb | Bin 1468 -> 2512 bytes .../bin/x86/Debug/Content/NoEffect.xnb | Bin 1020 -> 1020 bytes .../bin/x86/Debug/WindowsGame2.exe | Bin 10240 -> 10240 bytes .../bin/x86/Debug/WindowsGame2.pdb | Bin 13824 -> 13824 bytes ...{58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08}.xml | 4 +- ...Microsoft.Xna.Framework.RuntimeProfile.txt | 2 +- .../obj/x86/Debug/WindowsGame2.exe | Bin 10240 -> 10240 bytes .../obj/x86/Debug/WindowsGame2.pdb | Bin 13824 -> 13824 bytes .../WindowsGame2Content/GreyScaleEffect.fx | 41 ++++++-- 22 files changed, 103 insertions(+), 60 deletions(-) diff --git a/ShaderExample/ShaderExample/Class1.cs b/ShaderExample/ShaderExample/Class1.cs index 5083f235..d2851828 100644 --- a/ShaderExample/ShaderExample/Class1.cs +++ b/ShaderExample/ShaderExample/Class1.cs @@ -40,12 +40,47 @@ namespace ShaderExample //StardewModdingAPI.Events.GraphicsEvents.OnPostRenderEvent += GraphicsEvents_OnPreRenderEvent1; effect = Helper.Content.Load(Path.Combine("Content", "Shaders", "GreyScaleEffect.xnb")); + } - + public void applyCurrentShader(bool ignoreOutdoorLight=false) + { + SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); + Class1.effect.CurrentTechnique.Passes[0].Apply(); + if (Game1.player.currentLocation != null && Game1.activeClickableMenu==null) + { + if (Game1.currentLocation.ignoreOutdoorLighting.Value == false&&ignoreOutdoorLight==false) + { + //Monitor.Log("WTF"); + Monitor.Log(Game1.outdoorLight.ToString()); + Matrix projection = Matrix.CreateOrthographicOffCenter(0,Game1.graphics.GraphicsDevice.Viewport.Width, Game1.graphics.GraphicsDevice.Viewport.Height, 0, 0, 1); + Matrix halfPixelOffset = Matrix.CreateTranslation(-0.5f, -0.5f, 0); + //effect.Parameters["MatrixTransform"].SetValue(halfPixelOffset * projection); + effect.Parameters["ambientRed"].SetValue(Game1.outdoorLight.R); + effect.Parameters["ambientGreen"].SetValue(Game1.outdoorLight.G); + effect.Parameters["ambientBlue"].SetValue(Game1.outdoorLight.B); + effect.Parameters["timeOfDay"].SetValue(Game1.timeOfDay); + } + else + { + //Set to 255 to symbolize a white effect. + effect.Parameters["ambientRed"].SetValue(255f); + effect.Parameters["ambientGreen"].SetValue(255f); + effect.Parameters["ambientBlue"].SetValue(255f); + effect.Parameters["timeOfDay"].SetValue(600f); + } + } + else + { + effect.Parameters["ambientRed"].SetValue(255f); + effect.Parameters["ambientGreen"].SetValue(255f); + effect.Parameters["ambientBlue"].SetValue(255f); + effect.Parameters["timeOfDay"].SetValue(600f); + } } private void GraphicsEvents_OnPreRenderEvent(object sender, EventArgs e) - { + { + try { @@ -58,8 +93,7 @@ namespace ShaderExample if (Game1.activeClickableMenu != null) { Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); - SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); - Class1.effect.CurrentTechnique.Passes[0].Apply(); + applyCurrentShader(); Game1.activeClickableMenu.draw(Game1.spriteBatch); Game1.spriteBatch.End(); } @@ -102,15 +136,13 @@ namespace ShaderExample //The perfect map draw order. Game1.spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); //drawMapPart2(); - SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); - Class1.effect.CurrentTechnique.Passes[0].Apply(); + applyCurrentShader(); AHHHH(); Game1.spriteBatch.End(); Game1.spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); - SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); - Class1.effect.CurrentTechnique.Passes[0].Apply(); + applyCurrentShader(); Game1.player.currentLocation.drawAboveFrontLayer(Game1.spriteBatch); if (Game1.currentLocation.Map.GetLayer("AlwaysFront") != null) { @@ -120,19 +152,18 @@ namespace ShaderExample } //Game1.currentLocation.drawAboveAlwaysFrontLayer(Game1.spriteBatch); Game1.player.currentLocation.drawAboveAlwaysFrontLayer(Game1.spriteBatch); - drawOverlays(); + Game1.spriteBatch.End(); + if (Game1.activeClickableMenu != null) { Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); - SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); - Class1.effect.CurrentTechnique.Passes[0].Apply(); + applyCurrentShader(); Game1.activeClickableMenu.draw(Game1.spriteBatch); Game1.spriteBatch.End(); Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); - SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); - Class1.effect.CurrentTechnique.Passes[0].Apply(); + applyCurrentShader(); if (Game1.activeClickableMenu is StardewValley.Menus.GameMenu) { if ((Game1.activeClickableMenu as StardewValley.Menus.GameMenu).currentTab == 3) return; @@ -300,17 +331,27 @@ namespace ShaderExample //Game1.spriteBatch.End(); Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); - SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); - Class1.effect.CurrentTechnique.Passes[0].Apply(); + applyCurrentShader(true); if(Game1.activeClickableMenu==null&& Game1.eventUp==false)getInvokeMethod(Program.gamePtr, "drawHUD", new object[] { }); - drawMouse(); + + if (Game1.hudMessages.Count > 0 && (!Game1.eventUp || Game1.isFestival())) + { + for (int i = Game1.hudMessages.Count - 1; i >= 0; --i) + Game1.hudMessages[i].draw(Game1.spriteBatch, i); + } + Game1.spriteBatch.End(); - Game1.spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); - SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); - Class1.effect.CurrentTechnique.Passes[0].Apply(); + Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + applyCurrentShader(true); drawMouse(); + Game1.spriteBatch.End(); + + + Game1.spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + //applyCurrentShader(); + //drawMouse(); } @@ -327,7 +368,7 @@ namespace ShaderExample public void drawMapPart1() { //Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); - SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); + applyCurrentShader(); foreach (var layer in Game1.player.currentLocation.map.Layers) { //do back and buildings @@ -421,7 +462,7 @@ namespace ShaderExample public void drawMapPart2() { //Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); - SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); + applyCurrentShader(); foreach (var layer in Game1.player.currentLocation.map.Layers) { //do front, and always front. @@ -518,9 +559,8 @@ namespace ShaderExample protected void drawOverlays() { SpriteBatch spriteBatch = Game1.spriteBatch; - // spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, (DepthStencilState)null, (RasterizerState)null); - SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); - effect.CurrentTechnique.Passes[0].Apply(); + // spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, (DepthStencilState)null, (RasterizerState)null); + applyCurrentShader(true); foreach(var v in Game1.onScreenMenus) { v.draw(spriteBatch); diff --git a/ShaderExample/ShaderExample/Content/Shaders/GreyScaleEffect.xnb b/ShaderExample/ShaderExample/Content/Shaders/GreyScaleEffect.xnb index 4920b794b9f2e306808d2b9a597282936c799dd7..cdcbb25673eb79d41e803779d8bf0e2d7575dfa9 100644 GIT binary patch literal 2512 zcmbtVKWrOS7=L%Rsndp}K=|7V4(Jf1$Z}1BQfNp?OdW|7LTrNvOXXrelT(~Kb9Yt} ziQy`BV8{>zOHl?79jc_NGBC7Kh7KTgh(rel#)2}GEel(f>+gH-opVI;0`K(Q@B4e- z_q~5t`E+U}r9JFpO#5EDV%1#7a~gi8Vw;)EuDQ%t9Cs-*?btrI{mjRW2Cw<^+^lnV z#OUQ+aLv}DRr5xSFSzSjjy*A&$dCj3 z`Dcy1xdxuTuY>YY(cr0PqW?Q+Uay$GYps@C)AkyUyDa8r5c=cae+Ifa)AP;)Y2He_ zwrE@5v^f-Hqw=C!DfSgmG|qv!6bZl*s1=jH1Aj9n-v$4BOnwYL8SDRB#S^q*{0}Oo z3SA|pk3JP*MEo8Vt%u=Z_?YFV%7tNwi)t|`bOZDz=toc*^Z<*n2gCIH)v|}}UA6K? z(QntWcdB{rE%{EXTJ%k~&R42mT6W!8@d`Lbx!!_0TvcqPwPMX|a(T)!ja9b2y-oEn z7KVFbA;NH9;S+`F6l1i0LkiCUpM#uLcv0aj@OkLJQrH5%069>&0UUzdQMdzq3G#h~ z4;4OAc%YCLo!0m?@KxYhpaC3KIIeI;VMXC0@GbbQ0^bH+2U6V|3O5z*0O`E#0&%gd z(VWl@)5HS<2K6CF7`_H3THQHol{brvbX#3++ch6o5uzwI36kSQ0UFL$7}EU_hPtr5 z9@D=e^t5XdqBq**I=-`jVg|Z4#%fN}aiKe&gO-Y-DIU{?A@k9ENBkLZQSO@KxOI=I z@5p+{lg>Z+)0e(R9=cPAr#I!LJ3~rx1~$>;O%V0^Grch4y8B8;`}q-wYCBN65hROZ zvobNe2+V`1pAwMbt^?OW6t)SZaSIs5-d4K1G2Jfs?$5&*o`1)fnJvy5a;1!EXSroH zxocd=!3~0ZK0zb zbELZ`bh7Tq?-%Ik=#$?A5DmJYX|3b2>R%!5@#A|@1jSy;SNbXLchPm()%6s55E&62gGZvFG#Wd4wMOWK)L{P*QtmrTFNO_ z?xffjh*2Ovnbn2f1bR@1| literal 1468 zcmb7EzfTiU9Di4emLFOM5*}Z%V z<*o9}G+f7X>b|yS>)O1lZ}XPpZfOO__POnAPwRDV_$yqmaW|n}^EyTnre}ITfWn%mVMo=@mBSfY1f>VSHcmdu2$s1 zR!c75EgQPU!xPr(JFM61Q9leFS7-=8OX3cYTHgcWXxKiGX4wT&pPzvvz;6>V-~12|g@A-?Uo{-dabf#A7up7eG1PY`3t>2pTl1Lok6hLc zdr*R!uaS>t7S?Bs@?)C=7R&(wQ(%fqgu%hNFF~f-RcUJj`+j@U)⁡)BHXH>Arji zAA|A7PUr`83hc+8N!#xM+d1UR2d+-9+*22p%1dfEWwqdJH%yDW>a3P}pv`7dS}L1P zV=KK2p|V2dNuJ)~A{D~@ru3v^-)a$vCmHO6>}fC&-YMoVjvna?so|}s)|3C=#*3g- zy!+wc;8AY$*5fawpE=5SCmc%~)eoiIVX=5OAG8yP{q&HAg@Z9 z?4R1$%Mflr-~+#Is7K)=$hV6G!MYN}_5BsfLGi&lUJLXfZ;+dG^zaXv>Wk1G3;Jx+ Ge~~|A`58+9 diff --git a/ShaderExample/ShaderExample/Content/Shaders/NoEffect.xnb b/ShaderExample/ShaderExample/Content/Shaders/NoEffect.xnb index 0fe921e4646622c5de647b8edf03262585695dc7..b734a007cb17e519c2539ca767ebe35ed56e12c9 100644 GIT binary patch literal 1020 zcmb7Cv2GJV5M4VCG6cyK6cmxzf+9%P$vJG~AY5RZI8s7n#SXYQDO~Q>^2wK5vwJ58 zi6SKh1&AL=?!Z4#Yggaz zC1$$hZpZUMX5Rr9fc4B?5VkR0K>~0IpqOR31*2-1eFOYx$)Bk#hAi|ClsF&9^LWhK&BG4u2`M3j=p(QSd;+MBI-K9Y zt!LJuMr$pv&3j?wVl-A;=y50~Rxh-bE2h>PFL32lcQ8WpW+NM{wJ+1r8pBgIn^7GM zmDZ^~a2rhb?}DkGw_y6^W9fRQ!tagfMQlfb6Jp$`eFZ2acR*NDJKZP`EuBHCJJOd5 z=lvT`xfk({l*-jCi^*T-OhRBS`bmBH0npxG=}&eA{tZwsi&^jPgVzD_m9bnuV!mL8B#v7(I4Ih>5Dc1&t= zASOtFiGdl+ngJx&fJGP>_ApHT$7CTd#^4;{=mc`1GDr#2|NkHg1Xvju6l5mXGFxi| ff;s#P7#JGt!BSwN!5(Nl69Wf-0|Ud81t5I@Q}8wS diff --git a/ShaderExample/ShaderExample/Framework/Drawers/Characters.cs b/ShaderExample/ShaderExample/Framework/Drawers/Characters.cs index e7ee880b..48775b63 100644 --- a/ShaderExample/ShaderExample/Framework/Drawers/Characters.cs +++ b/ShaderExample/ShaderExample/Framework/Drawers/Characters.cs @@ -10,30 +10,9 @@ namespace ShaderExample.Framework.Drawers { public class Characters { - ///

- /// Draw the farmer. - /// - /// - public static void drawFarmer() - { - //Game1.spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); - Class1.SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, ShaderExample.Class1.effect, "customEffect"); - Class1.effect.CurrentTechnique.Passes[0].Apply(); - Game1.player.currentLocation.draw(Game1.spriteBatch); - //Game1.spriteBatch.End(); - } - public static void drawCharacters() - { - //Game1.spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); - Class1.SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, ShaderExample.Class1.effect, "customEffect"); - Class1.effect.CurrentTechnique.Passes[0].Apply(); - foreach(var character in Game1.player.currentLocation.characters) - { - character.draw(Game1.spriteBatch); - } - //Game1.spriteBatch.End(); - } + + diff --git a/ShaderExample/ShaderExample/bin/Debug/Content/Shaders/GreyScaleEffect.xnb b/ShaderExample/ShaderExample/bin/Debug/Content/Shaders/GreyScaleEffect.xnb index 4920b794b9f2e306808d2b9a597282936c799dd7..cdcbb25673eb79d41e803779d8bf0e2d7575dfa9 100644 GIT binary patch literal 2512 zcmbtVKWrOS7=L%Rsndp}K=|7V4(Jf1$Z}1BQfNp?OdW|7LTrNvOXXrelT(~Kb9Yt} ziQy`BV8{>zOHl?79jc_NGBC7Kh7KTgh(rel#)2}GEel(f>+gH-opVI;0`K(Q@B4e- z_q~5t`E+U}r9JFpO#5EDV%1#7a~gi8Vw;)EuDQ%t9Cs-*?btrI{mjRW2Cw<^+^lnV z#OUQ+aLv}DRr5xSFSzSjjy*A&$dCj3 z`Dcy1xdxuTuY>YY(cr0PqW?Q+Uay$GYps@C)AkyUyDa8r5c=cae+Ifa)AP;)Y2He_ zwrE@5v^f-Hqw=C!DfSgmG|qv!6bZl*s1=jH1Aj9n-v$4BOnwYL8SDRB#S^q*{0}Oo z3SA|pk3JP*MEo8Vt%u=Z_?YFV%7tNwi)t|`bOZDz=toc*^Z<*n2gCIH)v|}}UA6K? z(QntWcdB{rE%{EXTJ%k~&R42mT6W!8@d`Lbx!!_0TvcqPwPMX|a(T)!ja9b2y-oEn z7KVFbA;NH9;S+`F6l1i0LkiCUpM#uLcv0aj@OkLJQrH5%069>&0UUzdQMdzq3G#h~ z4;4OAc%YCLo!0m?@KxYhpaC3KIIeI;VMXC0@GbbQ0^bH+2U6V|3O5z*0O`E#0&%gd z(VWl@)5HS<2K6CF7`_H3THQHol{brvbX#3++ch6o5uzwI36kSQ0UFL$7}EU_hPtr5 z9@D=e^t5XdqBq**I=-`jVg|Z4#%fN}aiKe&gO-Y-DIU{?A@k9ENBkLZQSO@KxOI=I z@5p+{lg>Z+)0e(R9=cPAr#I!LJ3~rx1~$>;O%V0^Grch4y8B8;`}q-wYCBN65hROZ zvobNe2+V`1pAwMbt^?OW6t)SZaSIs5-d4K1G2Jfs?$5&*o`1)fnJvy5a;1!EXSroH zxocd=!3~0ZK0zb zbELZ`bh7Tq?-%Ik=#$?A5DmJYX|3b2>R%!5@#A|@1jSy;SNbXLchPm()%6s55E&62gGZvFG#Wd4wMOWK)L{P*QtmrTFNO_ z?xffjh*2Ovnbn2f1bR@1| literal 1468 zcmb7EzfTiU9Di4emLFOM5*}Z%V z<*o9}G+f7X>b|yS>)O1lZ}XPpZfOO__POnAPwRDV_$yqmaW|n}^EyTnre}ITfWn%mVMo=@mBSfY1f>VSHcmdu2$s1 zR!c75EgQPU!xPr(JFM61Q9leFS7-=8OX3cYTHgcWXxKiGX4wT&pPzvvz;6>V-~12|g@A-?Uo{-dabf#A7up7eG1PY`3t>2pTl1Lok6hLc zdr*R!uaS>t7S?Bs@?)C=7R&(wQ(%fqgu%hNFF~f-RcUJj`+j@U)⁡)BHXH>Arji zAA|A7PUr`83hc+8N!#xM+d1UR2d+-9+*22p%1dfEWwqdJH%yDW>a3P}pv`7dS}L1P zV=KK2p|V2dNuJ)~A{D~@ru3v^-)a$vCmHO6>}fC&-YMoVjvna?so|}s)|3C=#*3g- zy!+wc;8AY$*5fawpE=5SCmc%~)eoiIVX=5OAG8yP{q&HAg@Z9 z?4R1$%Mflr-~+#Is7K)=$hV6G!MYN}_5BsfLGi&lUJLXfZ;+dG^zaXv>Wk1G3;Jx+ Ge~~|A`58+9 diff --git a/ShaderExample/ShaderExample/bin/Debug/Content/Shaders/NoEffect.xnb b/ShaderExample/ShaderExample/bin/Debug/Content/Shaders/NoEffect.xnb index 0fe921e4646622c5de647b8edf03262585695dc7..b734a007cb17e519c2539ca767ebe35ed56e12c9 100644 GIT binary patch literal 1020 zcmb7Cv2GJV5M4VCG6cyK6cmxzf+9%P$vJG~AY5RZI8s7n#SXYQDO~Q>^2wK5vwJ58 zi6SKh1&AL=?!Z4#Yggaz zC1$$hZpZUMX5Rr9fc4B?5VkR0K>~0IpqOR31*2-1eFOYx$)Bk#hAi|ClsF&9^LWhK&BG4u2`M3j=p(QSd;+MBI-K9Y zt!LJuMr$pv&3j?wVl-A;=y50~Rxh-bE2h>PFL32lcQ8WpW+NM{wJ+1r8pBgIn^7GM zmDZ^~a2rhb?}DkGw_y6^W9fRQ!tagfMQlfb6Jp$`eFZ2acR*NDJKZP`EuBHCJJOd5 z=lvT`xfk({l*-jCi^*T-OhRBS`bmBH0npxG=}&eA{tZwsi&^jPgVzD_m9bnuV!mL8B#v7(I4Ih>5Dc1&t= zASOtFiGdl+ngJx&fJGP>_ApHT$7CTd#^4;{=mc`1GDr#2|NkHg1Xvju6l5mXGFxi| ff;s#P7#JGt!BSwN!5(Nl69Wf-0|Ud81t5I@Q}8wS diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip b/ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip index a5a6de23640da2baa34d70b1d4fa8b18ee4ee0e8..8e09db6a796c3200afa561ddc5ea9ceb46488734 100644 GIT binary patch delta 91285 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

)=p<=n{Z^viE=5 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 BUqk=^ diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample.dll b/ShaderExample/ShaderExample/bin/Debug/ShaderExample.dll index 9e9b08e5ebc558d130c41fd804f6e6ebdf8fb0cb..245d473bed25d25cb786c8fb32697393454443ef 100644 GIT binary patch literal 25600 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 delta 8750 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 diff --git a/ShaderExample/ShaderExample/obj/Debug/ShaderExample.csproj.FileListAbsolute.txt b/ShaderExample/ShaderExample/obj/Debug/ShaderExample.csproj.FileListAbsolute.txt index 431856c8..3c8bcb21 100644 --- a/ShaderExample/ShaderExample/obj/Debug/ShaderExample.csproj.FileListAbsolute.txt +++ b/ShaderExample/ShaderExample/obj/Debug/ShaderExample.csproj.FileListAbsolute.txt @@ -9,4 +9,3 @@ C:\Users\iD Student\Desktop\Stardew\ShaderExample\ShaderExample\bin\Debug\Conten C:\Users\iD Student\Desktop\Stardew\ShaderExample\ShaderExample\bin\Debug\Netcode.dll C:\Users\iD Student\Desktop\Stardew\ShaderExample\ShaderExample\bin\Debug\Netcode.pdb C:\Users\iD Student\Desktop\Stardew\ShaderExample\ShaderExample\obj\Debug\ShaderExample.csproj.CopyComplete -C:\Users\iD Student\Desktop\Stardew\ShaderExample\ShaderExample\obj\Debug\ShaderExample.csprojResolveAssemblyReference.cache diff --git a/ShaderExample/ShaderExample/obj/Debug/ShaderExample.dll b/ShaderExample/ShaderExample/obj/Debug/ShaderExample.dll index 9e9b08e5ebc558d130c41fd804f6e6ebdf8fb0cb..245d473bed25d25cb786c8fb32697393454443ef 100644 GIT binary patch literal 25600 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 delta 8750 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 diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/WindowsGame2.csproj b/WindowsGame2/WindowsGame2/WindowsGame2/WindowsGame2.csproj index 90b71993..4c891c4a 100644 --- a/WindowsGame2/WindowsGame2/WindowsGame2/WindowsGame2.csproj +++ b/WindowsGame2/WindowsGame2/WindowsGame2/WindowsGame2.csproj @@ -12,7 +12,7 @@ Client v4.0 Windows - Reach + HiDef 6e015d12-6141-4a91-b036-a111000be29c Game Game.ico diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Content/GreyScaleEffect.xnb b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Content/GreyScaleEffect.xnb index 4920b794b9f2e306808d2b9a597282936c799dd7..cdcbb25673eb79d41e803779d8bf0e2d7575dfa9 100644 GIT binary patch literal 2512 zcmbtVKWrOS7=L%Rsndp}K=|7V4(Jf1$Z}1BQfNp?OdW|7LTrNvOXXrelT(~Kb9Yt} ziQy`BV8{>zOHl?79jc_NGBC7Kh7KTgh(rel#)2}GEel(f>+gH-opVI;0`K(Q@B4e- z_q~5t`E+U}r9JFpO#5EDV%1#7a~gi8Vw;)EuDQ%t9Cs-*?btrI{mjRW2Cw<^+^lnV z#OUQ+aLv}DRr5xSFSzSjjy*A&$dCj3 z`Dcy1xdxuTuY>YY(cr0PqW?Q+Uay$GYps@C)AkyUyDa8r5c=cae+Ifa)AP;)Y2He_ zwrE@5v^f-Hqw=C!DfSgmG|qv!6bZl*s1=jH1Aj9n-v$4BOnwYL8SDRB#S^q*{0}Oo z3SA|pk3JP*MEo8Vt%u=Z_?YFV%7tNwi)t|`bOZDz=toc*^Z<*n2gCIH)v|}}UA6K? z(QntWcdB{rE%{EXTJ%k~&R42mT6W!8@d`Lbx!!_0TvcqPwPMX|a(T)!ja9b2y-oEn z7KVFbA;NH9;S+`F6l1i0LkiCUpM#uLcv0aj@OkLJQrH5%069>&0UUzdQMdzq3G#h~ z4;4OAc%YCLo!0m?@KxYhpaC3KIIeI;VMXC0@GbbQ0^bH+2U6V|3O5z*0O`E#0&%gd z(VWl@)5HS<2K6CF7`_H3THQHol{brvbX#3++ch6o5uzwI36kSQ0UFL$7}EU_hPtr5 z9@D=e^t5XdqBq**I=-`jVg|Z4#%fN}aiKe&gO-Y-DIU{?A@k9ENBkLZQSO@KxOI=I z@5p+{lg>Z+)0e(R9=cPAr#I!LJ3~rx1~$>;O%V0^Grch4y8B8;`}q-wYCBN65hROZ zvobNe2+V`1pAwMbt^?OW6t)SZaSIs5-d4K1G2Jfs?$5&*o`1)fnJvy5a;1!EXSroH zxocd=!3~0ZK0zb zbELZ`bh7Tq?-%Ik=#$?A5DmJYX|3b2>R%!5@#A|@1jSy;SNbXLchPm()%6s55E&62gGZvFG#Wd4wMOWK)L{P*QtmrTFNO_ z?xffjh*2Ovnbn2f1bR@1| literal 1468 zcmb7EzfTiU9Di4emLFOM5*}Z%V z<*o9}G+f7X>b|yS>)O1lZ}XPpZfOO__POnAPwRDV_$yqmaW|n}^EyTnre}ITfWn%mVMo=@mBSfY1f>VSHcmdu2$s1 zR!c75EgQPU!xPr(JFM61Q9leFS7-=8OX3cYTHgcWXxKiGX4wT&pPzvvz;6>V-~12|g@A-?Uo{-dabf#A7up7eG1PY`3t>2pTl1Lok6hLc zdr*R!uaS>t7S?Bs@?)C=7R&(wQ(%fqgu%hNFF~f-RcUJj`+j@U)⁡)BHXH>Arji zAA|A7PUr`83hc+8N!#xM+d1UR2d+-9+*22p%1dfEWwqdJH%yDW>a3P}pv`7dS}L1P zV=KK2p|V2dNuJ)~A{D~@ru3v^-)a$vCmHO6>}fC&-YMoVjvna?so|}s)|3C=#*3g- zy!+wc;8AY$*5fawpE=5SCmc%~)eoiIVX=5OAG8yP{q&HAg@Z9 z?4R1$%Mflr-~+#Is7K)=$hV6G!MYN}_5BsfLGi&lUJLXfZ;+dG^zaXv>Wk1G3;Jx+ Ge~~|A`58+9 diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Content/NoEffect.xnb b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Content/NoEffect.xnb index e9765352f0d30732e405d3aaee65a44c717ca62a..b734a007cb17e519c2539ca767ebe35ed56e12c9 100644 GIT binary patch delta 22 dcmeyv{)e3{!q2Ikm2o4RAR{BgW(me8OaM-T1?~U< delta 22 dcmeyv{)e3{!q2Ikm0=^BAS0u|W(me8OaM;S1^oa3 diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/WindowsGame2.exe b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/WindowsGame2.exe index 7fdca2c7feb954a512371d3b787fd52faa261436..281daee8697095f197316572f87c7838166179b1 100644 GIT binary patch delta 97 zcmZn&Xb70l!EBQlxUt)pOCYsEbF*}bpYtZ6(!_JoE6X>(;A&(v_sDcfP2=Ta00N-G uXb{Z=#4?Nw3_V&v%)`JC6zmc_UG$K>ajTQh&MPc!42c>1n-}mTNCN=3tQ+hA delta 97 zcmZn&Xb70l!Td`;U}Lv0mq75oYnsmvd3vwkm9REDes28c7hH{u=0T~6$r-#{3_t)> u7!9JCfLMl+fuTnWhpD=cjci5dKxWw_q(a&&dBe{o;_3ghHL RMT5-_5=X@Gs5f}R3IM|o9GL(B delta 85 zcmZq3X~@~Y!X@!bJ|LQrfq}vM(EB$oF=;-#^?F`yjVUzQEW`DNm!m}DagKug6~@Vh RiUykEffectProcessor None C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Content\GreyScaleEffect.xnb - + true {58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08} Windows - Reach + HiDef Debug false C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2Content\ diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/Microsoft.Xna.Framework.RuntimeProfile.txt b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/Microsoft.Xna.Framework.RuntimeProfile.txt index 4af32754..afd78152 100644 --- a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/Microsoft.Xna.Framework.RuntimeProfile.txt +++ b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/Microsoft.Xna.Framework.RuntimeProfile.txt @@ -1 +1 @@ -Windows.v4.0.Reach +Windows.v4.0.HiDef diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.exe b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.exe index 7fdca2c7feb954a512371d3b787fd52faa261436..281daee8697095f197316572f87c7838166179b1 100644 GIT binary patch delta 97 zcmZn&Xb70l!EBQlxUt)pOCYsEbF*}bpYtZ6(!_JoE6X>(;A&(v_sDcfP2=Ta00N-G uXb{Z=#4?Nw3_V&v%)`JC6zmc_UG$K>ajTQh&MPc!42c>1n-}mTNCN=3tQ+hA delta 97 zcmZn&Xb70l!Td`;U}Lv0mq75oYnsmvd3vwkm9REDes28c7hH{u=0T~6$r-#{3_t)> u7!9JCfLMl+fuTnWhpD=cjci5dKxWw_q(a&&dBe{o;_3ghHL RMT5-_5=X@Gs5f}R3IM|o9GL(B delta 85 zcmZq3X~@~Y!X@!bJ|LQrfq}vM(EB$oF=;-#^?F`yjVUzQEW`DNm!m}DagKug6~@Vh RiUyk Date: Fri, 20 Jul 2018 00:33:59 -0700 Subject: [PATCH 029/110] Added in light glows!!!! --- ShaderExample/ShaderExample/Class1.cs | 83 +++++++++++------- .../Content/Shaders/GreyScaleEffect.xnb | Bin 2512 -> 3532 bytes .../Content/Shaders/NoEffect.xnb | Bin 1020 -> 1020 bytes .../Debug/Content/Shaders/GreyScaleEffect.xnb | Bin 2512 -> 3532 bytes .../bin/Debug/Content/Shaders/NoEffect.xnb | Bin 1020 -> 1020 bytes .../bin/Debug/ShaderExample 0.0.1.zip | Bin 113861 -> 114890 bytes .../ShaderExample/bin/Debug/ShaderExample.dll | Bin 25600 -> 26624 bytes .../ShaderExample/bin/Debug/ShaderExample.pdb | Bin 34304 -> 34304 bytes .../ShaderExample/obj/Debug/ShaderExample.dll | Bin 25600 -> 26624 bytes .../ShaderExample/obj/Debug/ShaderExample.pdb | Bin 34304 -> 34304 bytes .../bin/x86/Debug/Content/GreyScaleEffect.xnb | Bin 2512 -> 3532 bytes .../bin/x86/Debug/Content/NoEffect.xnb | Bin 1020 -> 1020 bytes .../bin/x86/Debug/WindowsGame2.exe | Bin 10240 -> 10240 bytes .../bin/x86/Debug/WindowsGame2.pdb | Bin 13824 -> 13824 bytes ...{58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08}.xml | 2 +- .../obj/x86/Debug/WindowsGame2.exe | Bin 10240 -> 10240 bytes .../obj/x86/Debug/WindowsGame2.pdb | Bin 13824 -> 13824 bytes .../WindowsGame2Content/GreyScaleEffect.fx | 25 +++++- 18 files changed, 72 insertions(+), 38 deletions(-) diff --git a/ShaderExample/ShaderExample/Class1.cs b/ShaderExample/ShaderExample/Class1.cs index d2851828..7fdbb013 100644 --- a/ShaderExample/ShaderExample/Class1.cs +++ b/ShaderExample/ShaderExample/Class1.cs @@ -42,8 +42,9 @@ namespace ShaderExample effect = Helper.Content.Load(Path.Combine("Content", "Shaders", "GreyScaleEffect.xnb")); } - public void applyCurrentShader(bool ignoreOutdoorLight=false) + public void applyCurrentShader(bool ignoreOutdoorLight = false,bool addLightGlow=false,int r=0, int g=0, int b=0,int a=0) { + SetInstanceField(typeof(SpriteBatch), Game1.spriteBatch, effect, "customEffect"); Class1.effect.CurrentTechnique.Passes[0].Apply(); if (Game1.player.currentLocation != null && Game1.activeClickableMenu==null) @@ -58,6 +59,14 @@ namespace ShaderExample effect.Parameters["ambientRed"].SetValue(Game1.outdoorLight.R); effect.Parameters["ambientGreen"].SetValue(Game1.outdoorLight.G); effect.Parameters["ambientBlue"].SetValue(Game1.outdoorLight.B); + + effect.Parameters["addLightGlow"].SetValue(addLightGlow); + + effect.Parameters["addedRed"].SetValue(r); + effect.Parameters["addedGreen"].SetValue(g); + effect.Parameters["addedBlue"].SetValue(b); + effect.Parameters["addedAlpha"].SetValue(b); + effect.Parameters["timeOfDay"].SetValue(Game1.timeOfDay); } else @@ -67,6 +76,13 @@ namespace ShaderExample effect.Parameters["ambientGreen"].SetValue(255f); effect.Parameters["ambientBlue"].SetValue(255f); effect.Parameters["timeOfDay"].SetValue(600f); + + effect.Parameters["addLightGlow"].SetValue(addLightGlow); + + effect.Parameters["addedRed"].SetValue(r); + effect.Parameters["addedGreen"].SetValue(g); + effect.Parameters["addedBlue"].SetValue(b); + effect.Parameters["addedAlpha"].SetValue(b); } } else @@ -75,6 +91,13 @@ namespace ShaderExample effect.Parameters["ambientGreen"].SetValue(255f); effect.Parameters["ambientBlue"].SetValue(255f); effect.Parameters["timeOfDay"].SetValue(600f); + + effect.Parameters["addLightGlow"].SetValue(addLightGlow); + + effect.Parameters["addedRed"].SetValue(r); + effect.Parameters["addedGreen"].SetValue(g); + effect.Parameters["addedBlue"].SetValue(b); + effect.Parameters["addedAlpha"].SetValue(b); } } @@ -108,32 +131,6 @@ namespace ShaderExample drawMapPart1(); Game1.spriteBatch.End(); - /* - Game1.spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); - Framework.Drawers.Characters.drawFarmer(); - Framework.Drawers.Characters.drawCharacters(); - - foreach (var v in Game1.player.currentLocation.terrainFeatures) - { - var value = v.Values; - var keys = v.Keys; - int index = 0; - foreach(var terrain in value) - { - terrain.draw(Game1.spriteBatch, keys.ElementAt(index)); - index++; - } - } - - Game1.spriteBatch.End(); - */ - - //Game1.spriteBatch.End(); - - //Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); - //drawFront(); - - //The perfect map draw order. Game1.spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); //drawMapPart2(); applyCurrentShader(); @@ -141,9 +138,13 @@ namespace ShaderExample Game1.spriteBatch.End(); + Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + applyCurrentShader(false); + Game1.player.currentLocation.drawAboveFrontLayer(Game1.spriteBatch); + Game1.spriteBatch.End(); + Game1.spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); applyCurrentShader(); - Game1.player.currentLocation.drawAboveFrontLayer(Game1.spriteBatch); if (Game1.currentLocation.Map.GetLayer("AlwaysFront") != null) { Game1.mapDisplayDevice.BeginScene(Game1.spriteBatch); @@ -333,15 +334,29 @@ namespace ShaderExample Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); applyCurrentShader(true); if(Game1.activeClickableMenu==null&& Game1.eventUp==false)getInvokeMethod(Program.gamePtr, "drawHUD", new object[] { }); - - if (Game1.hudMessages.Count > 0 && (!Game1.eventUp || Game1.isFestival())) - { - for (int i = Game1.hudMessages.Count - 1; i >= 0; --i) - Game1.hudMessages[i].draw(Game1.spriteBatch, i); - } + + if (Game1.hudMessages.Count > 0 && (!Game1.eventUp || Game1.isFestival())) + { + for (int i = Game1.hudMessages.Count - 1; i >= 0; --i) + Game1.hudMessages[i].draw(Game1.spriteBatch, i); + } Game1.spriteBatch.End(); + + for (int index = 0; index < Game1.currentLightSources.Count; ++index) + { + if (Utility.isOnScreen((Vector2)(Game1.currentLightSources.ElementAt(index).position), (int)((double)(float)(Game1.currentLightSources.ElementAt(index).radius) * 64.0 * 4.0))) + { + //Game1.spriteBatch.Draw(Game1.currentLightSources.ElementAt(index).lightTexture, Game1.GlobalToLocal(Game1.viewport, (Vector2)(Game1.currentLightSources.ElementAt(index).position)) / (float)(Game1.options.lightingQuality / 2), new Microsoft.Xna.Framework.Rectangle?(Game1.currentLightSources.ElementAt(index).lightTexture.Bounds), (Color)(Game1.currentLightSources.ElementAt(index).color), 0.0f, new Vector2((float)Game1.currentLightSources.ElementAt(index).lightTexture.Bounds.Center.X, (float)Game1.currentLightSources.ElementAt(index).lightTexture.Bounds.Center.Y), (float)(Game1.currentLightSources.ElementAt(index).radius) / (float)(Game1.options.lightingQuality / 2), SpriteEffects.None, 0.9f); + Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); + Color c = (Color)(Game1.currentLightSources.ElementAt(index).color); + applyCurrentShader(false,true,0,0,0); + Game1.spriteBatch.Draw(Game1.currentLightSources.ElementAt(index).lightTexture, Game1.GlobalToLocal(Game1.viewport, (Vector2)(Game1.currentLightSources.ElementAt(index).position)), new Microsoft.Xna.Framework.Rectangle?(Game1.currentLightSources.ElementAt(index).lightTexture.Bounds), (Color)(Game1.currentLightSources.ElementAt(index).color.Value), 0.0f, new Vector2((float)Game1.currentLightSources.ElementAt(index).lightTexture.Bounds.Center.X, (float)Game1.currentLightSources.ElementAt(index).lightTexture.Bounds.Center.Y), (float)(Game1.currentLightSources.ElementAt(index).radius/2), SpriteEffects.None, 0.9f); + Game1.spriteBatch.End(); + } + } + Game1.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); applyCurrentShader(true); diff --git a/ShaderExample/ShaderExample/Content/Shaders/GreyScaleEffect.xnb b/ShaderExample/ShaderExample/Content/Shaders/GreyScaleEffect.xnb index cdcbb25673eb79d41e803779d8bf0e2d7575dfa9..bd685b96f4ac87da91e86395261f26c9f7d79dff 100644 GIT binary patch literal 3532 zcmbtWO>7%Q6rQ!+Ha{(?AkYFu7)VhH!KB71X(4Tzq;(|H5*iySWT`mbb#2x0n)O;q zZX1b1js<#X5eFYQR7q9kz#)eoID}gzIP}m%4wk1-zf{$q(d$3)B1-N9#Ly2Zwf!H3 zR38_`7mc{e}HOC-6@@mQ@w$dy(K7H@nQ)+nF;} zX;^Je_q+J_(%&>KlZ=jbIQ0aiF&^e5bD+Os)Q&&i#h*2k@g8RM^X`L&hqUs^za67S@G2=e6^Ld=Nco zLl7nd1(-pvh4gjEKZW#d$oE3}Uyx$~X~+j5r$YKHWHY3%K)x2zZ$jP)=?77dRH!C3 zEz`ve$=_=Z^RUf@?Ak1Rv_Srbn>FJ5PyEBi%v3f#3^k{V$hcS0ljzsbd(iKoSQ*5e zK9S4TaYW?GGw}ttVdDME%~011C0+gKGwJwMSL56hk(p&SmU_HS&bQu zCh!RSR)FsS*MaW>uLDPbH-W>zZH+rX=6_#fOXDLTkK`EEI|UpBjsb^&$ABr|hrk() z^BQv+OTgzb?gH_VSmoOA%`xN;186TOz`yUama6&we0jyHER^`=IoqffTzpnAi*sY> zs=X(HJJa_QkbU1k_x<;!?E4XD_#8-^??-v8q8T`sqGAzbo@~lGN0`GZ$J)syeVbH<1H z4CZcY+Yaz9I?vn(K+anMDGyzq4~n4p5g5#EYTK=lZ3}Yy(h(oNa3nrEw=fr1yCObq zFV)Hw%ZVRPB#$MIk0ley@l*=wZ9ef`F`YR*#rwexJ`iUWbEXdN@$X=3(TvlH!+)dm z%pF9Jh~3f_hfLe3wC#Gzc0$_JJ`DWMNE`R35P|Kyw5fFoY+p(n-++$aWoc8j3H%(` zSQ7g2jAvVyetVvpi*I`8n*ngYGUYL-T~A%{a^25=YAk1b+eEnFD3fMB<~Me z)*hX!6mDPO5EFaBQRT=-ckTtX`laNh(f_ijpJC~G#X$3i8#hi)^c^^LJN@Ux;O+D& z+WTM^lhI#Qn%=23&-;k>e%i(4BzE3OH73OCTw)kd-7PI&6+HvZDOv6T*jrnor`2Ss z4YAMb6RjpDM3IdL8;|tnMY%PU-Y2rnKC#inzJgB#K0acIwhkG#tjBTeH#v?tavVDY zzF80NwH!C}IG!iRsSB|o=cxINpY?E@%JGPZVXlCll^i2@eniIG@RWZ{&g}(1<`5No z+T+ZRdQ`Neuj0MtuT>9d+h;ioBl66yj6&Jj#vJT9JT;Qzr7<9QFT37LKwUAtbeZ^-5 VHC8g$j%!bQd*5ISDGofj{{iV^Lze&m literal 2512 zcmbtVKWrOS7=L%Rsndp}K=|7V4(Jf1$Z}1BQfNp?OdW|7LTrNvOXXrelT(~Kb9Yt} ziQy`BV8{>zOHl?79jc_NGBC7Kh7KTgh(rel#)2}GEel(f>+gH-opVI;0`K(Q@B4e- z_q~5t`E+U}r9JFpO#5EDV%1#7a~gi8Vw;)EuDQ%t9Cs-*?btrI{mjRW2Cw<^+^lnV z#OUQ+aLv}DRr5xSFSzSjjy*A&$dCj3 z`Dcy1xdxuTuY>YY(cr0PqW?Q+Uay$GYps@C)AkyUyDa8r5c=cae+Ifa)AP;)Y2He_ zwrE@5v^f-Hqw=C!DfSgmG|qv!6bZl*s1=jH1Aj9n-v$4BOnwYL8SDRB#S^q*{0}Oo z3SA|pk3JP*MEo8Vt%u=Z_?YFV%7tNwi)t|`bOZDz=toc*^Z<*n2gCIH)v|}}UA6K? z(QntWcdB{rE%{EXTJ%k~&R42mT6W!8@d`Lbx!!_0TvcqPwPMX|a(T)!ja9b2y-oEn z7KVFbA;NH9;S+`F6l1i0LkiCUpM#uLcv0aj@OkLJQrH5%069>&0UUzdQMdzq3G#h~ z4;4OAc%YCLo!0m?@KxYhpaC3KIIeI;VMXC0@GbbQ0^bH+2U6V|3O5z*0O`E#0&%gd z(VWl@)5HS<2K6CF7`_H3THQHol{brvbX#3++ch6o5uzwI36kSQ0UFL$7}EU_hPtr5 z9@D=e^t5XdqBq**I=-`jVg|Z4#%fN}aiKe&gO-Y-DIU{?A@k9ENBkLZQSO@KxOI=I z@5p+{lg>Z+)0e(R9=cPAr#I!LJ3~rx1~$>;O%V0^Grch4y8B8;`}q-wYCBN65hROZ zvobNe2+V`1pAwMbt^?OW6t)SZaSIs5-d4K1G2Jfs?$5&*o`1)fnJvy5a;1!EXSroH zxocd=!3~0ZK0zb zbELZ`bh7Tq?-%Ik=#$?A5DmJYX|3b2>R%!5@#A|@1jSy;SNbXLchPm()%6s55E&62gGZvFG#Wd4wMOWK)L{P*QtmrTFNO_ z?xffjh*2Ovnbn2f1bR@1| diff --git a/ShaderExample/ShaderExample/Content/Shaders/NoEffect.xnb b/ShaderExample/ShaderExample/Content/Shaders/NoEffect.xnb index b734a007cb17e519c2539ca767ebe35ed56e12c9..76ec3ea10fa77812a566793bfcf7a9c1ed2376f9 100644 GIT binary patch delta 12 Ucmeyv{)c_SW5)j*pGYtR04tdWDgXcg delta 12 Tcmeyv{)c_SV@8IJPb8QDCY}W= diff --git a/ShaderExample/ShaderExample/bin/Debug/Content/Shaders/GreyScaleEffect.xnb b/ShaderExample/ShaderExample/bin/Debug/Content/Shaders/GreyScaleEffect.xnb index cdcbb25673eb79d41e803779d8bf0e2d7575dfa9..bd685b96f4ac87da91e86395261f26c9f7d79dff 100644 GIT binary patch literal 3532 zcmbtWO>7%Q6rQ!+Ha{(?AkYFu7)VhH!KB71X(4Tzq;(|H5*iySWT`mbb#2x0n)O;q zZX1b1js<#X5eFYQR7q9kz#)eoID}gzIP}m%4wk1-zf{$q(d$3)B1-N9#Ly2Zwf!H3 zR38_`7mc{e}HOC-6@@mQ@w$dy(K7H@nQ)+nF;} zX;^Je_q+J_(%&>KlZ=jbIQ0aiF&^e5bD+Os)Q&&i#h*2k@g8RM^X`L&hqUs^za67S@G2=e6^Ld=Nco zLl7nd1(-pvh4gjEKZW#d$oE3}Uyx$~X~+j5r$YKHWHY3%K)x2zZ$jP)=?77dRH!C3 zEz`ve$=_=Z^RUf@?Ak1Rv_Srbn>FJ5PyEBi%v3f#3^k{V$hcS0ljzsbd(iKoSQ*5e zK9S4TaYW?GGw}ttVdDME%~011C0+gKGwJwMSL56hk(p&SmU_HS&bQu zCh!RSR)FsS*MaW>uLDPbH-W>zZH+rX=6_#fOXDLTkK`EEI|UpBjsb^&$ABr|hrk() z^BQv+OTgzb?gH_VSmoOA%`xN;186TOz`yUama6&we0jyHER^`=IoqffTzpnAi*sY> zs=X(HJJa_QkbU1k_x<;!?E4XD_#8-^??-v8q8T`sqGAzbo@~lGN0`GZ$J)syeVbH<1H z4CZcY+Yaz9I?vn(K+anMDGyzq4~n4p5g5#EYTK=lZ3}Yy(h(oNa3nrEw=fr1yCObq zFV)Hw%ZVRPB#$MIk0ley@l*=wZ9ef`F`YR*#rwexJ`iUWbEXdN@$X=3(TvlH!+)dm z%pF9Jh~3f_hfLe3wC#Gzc0$_JJ`DWMNE`R35P|Kyw5fFoY+p(n-++$aWoc8j3H%(` zSQ7g2jAvVyetVvpi*I`8n*ngYGUYL-T~A%{a^25=YAk1b+eEnFD3fMB<~Me z)*hX!6mDPO5EFaBQRT=-ckTtX`laNh(f_ijpJC~G#X$3i8#hi)^c^^LJN@Ux;O+D& z+WTM^lhI#Qn%=23&-;k>e%i(4BzE3OH73OCTw)kd-7PI&6+HvZDOv6T*jrnor`2Ss z4YAMb6RjpDM3IdL8;|tnMY%PU-Y2rnKC#inzJgB#K0acIwhkG#tjBTeH#v?tavVDY zzF80NwH!C}IG!iRsSB|o=cxINpY?E@%JGPZVXlCll^i2@eniIG@RWZ{&g}(1<`5No z+T+ZRdQ`Neuj0MtuT>9d+h;ioBl66yj6&Jj#vJT9JT;Qzr7<9QFT37LKwUAtbeZ^-5 VHC8g$j%!bQd*5ISDGofj{{iV^Lze&m literal 2512 zcmbtVKWrOS7=L%Rsndp}K=|7V4(Jf1$Z}1BQfNp?OdW|7LTrNvOXXrelT(~Kb9Yt} ziQy`BV8{>zOHl?79jc_NGBC7Kh7KTgh(rel#)2}GEel(f>+gH-opVI;0`K(Q@B4e- z_q~5t`E+U}r9JFpO#5EDV%1#7a~gi8Vw;)EuDQ%t9Cs-*?btrI{mjRW2Cw<^+^lnV z#OUQ+aLv}DRr5xSFSzSjjy*A&$dCj3 z`Dcy1xdxuTuY>YY(cr0PqW?Q+Uay$GYps@C)AkyUyDa8r5c=cae+Ifa)AP;)Y2He_ zwrE@5v^f-Hqw=C!DfSgmG|qv!6bZl*s1=jH1Aj9n-v$4BOnwYL8SDRB#S^q*{0}Oo z3SA|pk3JP*MEo8Vt%u=Z_?YFV%7tNwi)t|`bOZDz=toc*^Z<*n2gCIH)v|}}UA6K? z(QntWcdB{rE%{EXTJ%k~&R42mT6W!8@d`Lbx!!_0TvcqPwPMX|a(T)!ja9b2y-oEn z7KVFbA;NH9;S+`F6l1i0LkiCUpM#uLcv0aj@OkLJQrH5%069>&0UUzdQMdzq3G#h~ z4;4OAc%YCLo!0m?@KxYhpaC3KIIeI;VMXC0@GbbQ0^bH+2U6V|3O5z*0O`E#0&%gd z(VWl@)5HS<2K6CF7`_H3THQHol{brvbX#3++ch6o5uzwI36kSQ0UFL$7}EU_hPtr5 z9@D=e^t5XdqBq**I=-`jVg|Z4#%fN}aiKe&gO-Y-DIU{?A@k9ENBkLZQSO@KxOI=I z@5p+{lg>Z+)0e(R9=cPAr#I!LJ3~rx1~$>;O%V0^Grch4y8B8;`}q-wYCBN65hROZ zvobNe2+V`1pAwMbt^?OW6t)SZaSIs5-d4K1G2Jfs?$5&*o`1)fnJvy5a;1!EXSroH zxocd=!3~0ZK0zb zbELZ`bh7Tq?-%Ik=#$?A5DmJYX|3b2>R%!5@#A|@1jSy;SNbXLchPm()%6s55E&62gGZvFG#Wd4wMOWK)L{P*QtmrTFNO_ z?xffjh*2Ovnbn2f1bR@1| diff --git a/ShaderExample/ShaderExample/bin/Debug/Content/Shaders/NoEffect.xnb b/ShaderExample/ShaderExample/bin/Debug/Content/Shaders/NoEffect.xnb index b734a007cb17e519c2539ca767ebe35ed56e12c9..76ec3ea10fa77812a566793bfcf7a9c1ed2376f9 100644 GIT binary patch delta 12 Ucmeyv{)c_SW5)j*pGYtR04tdWDgXcg delta 12 Tcmeyv{)c_SV@8IJPb8QDCY}W= diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip b/ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip index 8e09db6a796c3200afa561ddc5ea9ceb46488734..ace37fd8670a85a4fd01127c1537de40a1e36c2e 100644 GIT binary patch delta 24134 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 delta 23098 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 diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample.dll b/ShaderExample/ShaderExample/bin/Debug/ShaderExample.dll index 245d473bed25d25cb786c8fb32697393454443ef..ebfe6c6c7c48326890346212c9e8ab7613b935c8 100644 GIT binary patch literal 26624 zcmeHw4SZZxweLFT%y%Y}oH@y)NfR6@e-TU6}cc*lnz1LoQ?X}llYwfl7nJJySK1>=Bx$yUmH;C@RlRwP@{&_Hs=1}#$ zA^NKS(M9(tTOVE2Gn`0A$82kl9UqMj#8W9N6YV#n_IN6qNJTep>yD0EgJwfvVPJ{F zdiy4#t%^qR5AE2U9qk3Gi54g;iLL;~Be6fc2G1z|PUA08u_&ujZbmp{MBhdQc>ZW~ z#dS=||II#~Dx>h32H$O>K=g4|#Qe`EiGskjPZ3qlZ~JrgD3LF(-G_R6UcDh>9>}2n zlgk0nCg$qMjhgsGfo-tU_5f-^wrLc2q5APR@6(LsYOu|u1wxjUK8e4~YY2byKFvg} zc~w#TD(e*=mQ5u$eey!0&#fj>1oqz!{y^#}5A^6sL+OE-4nS%wjE7|a*x);613P9f z0*I9WS7rfOI}PAkLB>iCt-u^n)9LZ$D8wS5nJQzzBz6b)3-F4Iy0ri;Ryjb#s^H>6 z0E%I)0#+43T_AQA9wn!gS|t+jtbLFbGgS@LWRz(Z0n~f6h-feHuDu0=K;jypuUQOm zDgp|{g1th}rGSJca9D<-1^EJ248U-OU9q!K7&%kJ3T_bHvS4~ctQN>1*T0nm6srTW zP|m9!MPB+bs{th;OY9t!EI3BMnY*Bwm`l@mCYq1VrCD_*n$KrxTow#q&Jf44P43f1 z|8ce{xp3cPi# zk|Hv7K1imT07^=%wM?!?#3!b5fDt_;uXWs*&vrJ#AhZO1b!WXP%cf=wF1ns+yqH^r zGLCOjU_n{&7bH_--ZOPO(*ScOlnaY;Di_R~)ms`{1W#){y4tnusBc55O4lFUKqWu z;>4rpcA@av!7Hviw-SZhp1s7pU=bo@Ejj3hsipzcQTySKUitC`rP;RXpWk`+1-C1K(# zIfqI#9h9isa;V+4Hpcx*uD-ptAN8;2>YHl2P=7dAUsv0T`ZKxuIkl^*jDp(wg#fWK zfW;L6XEClEi&0xr4p3AH5a3q#0sv`yQx{^Mdf=*y@R-~RFp{lwqB74!W~tXr0*nYSsJApAmdZ=z(hO0|Z7nYutjRnPs*(!@#9qgSIPZ;!U^-ZO%dGt#^Z-P|K%?sp6 zmx7b9_fh@JHRS3si^g z;W+m%0csIYPc26x)eXI* ztS^Rj^29Dj%hhZ);mB22;IZ^VJu=DlzMk3sdc=aVU=L8wjx*~QIt)ZP>+gmAol&*) ze5v#_i$&5)9hT3&MV`?fW`0J_b4=puxh7FIr}3||jTx-=LSw<4#?R&&u{SR?%Jnj% zN(3#^tMmnYI18L|8E5Hd)m=q;xn5-r0y7T761z#YUR}2wbNLFmESPV9RZ?zgW3}sN zdz()0s2;6birx?Z#okzis0s1v)R*7uOB`naH(7Um_#dQhjNKj9km)K~rC5y$f9P51IP1Oq4}jt}h$sf)FZJ z3YR1Ph}bzff=+pBL(hAR7!uz6yfw+vN*b9Ci}INgrLy^nZ+&2D6usri*f?81yDl=7 z0>a)6l|_V!N`suTfVIY$wow;->b$YNsMacFICL8;^c8g*XqKw1�}f7InSWvOy?> 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 delta 12675 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 diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample.pdb b/ShaderExample/ShaderExample/bin/Debug/ShaderExample.pdb index 2b26f38a5fbd7288d162f0bb2045e882f635ba8c..feef0405becfbe36f447389418009352a271c952 100644 GIT binary patch delta 6313 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 delta 5792 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 diff --git a/ShaderExample/ShaderExample/obj/Debug/ShaderExample.dll b/ShaderExample/ShaderExample/obj/Debug/ShaderExample.dll index 245d473bed25d25cb786c8fb32697393454443ef..ebfe6c6c7c48326890346212c9e8ab7613b935c8 100644 GIT binary patch literal 26624 zcmeHw4SZZxweLFT%y%Y}oH@y)NfR6@e-TU6}cc*lnz1LoQ?X}llYwfl7nJJySK1>=Bx$yUmH;C@RlRwP@{&_Hs=1}#$ zA^NKS(M9(tTOVE2Gn`0A$82kl9UqMj#8W9N6YV#n_IN6qNJTep>yD0EgJwfvVPJ{F zdiy4#t%^qR5AE2U9qk3Gi54g;iLL;~Be6fc2G1z|PUA08u_&ujZbmp{MBhdQc>ZW~ z#dS=||II#~Dx>h32H$O>K=g4|#Qe`EiGskjPZ3qlZ~JrgD3LF(-G_R6UcDh>9>}2n zlgk0nCg$qMjhgsGfo-tU_5f-^wrLc2q5APR@6(LsYOu|u1wxjUK8e4~YY2byKFvg} zc~w#TD(e*=mQ5u$eey!0&#fj>1oqz!{y^#}5A^6sL+OE-4nS%wjE7|a*x);613P9f z0*I9WS7rfOI}PAkLB>iCt-u^n)9LZ$D8wS5nJQzzBz6b)3-F4Iy0ri;Ryjb#s^H>6 z0E%I)0#+43T_AQA9wn!gS|t+jtbLFbGgS@LWRz(Z0n~f6h-feHuDu0=K;jypuUQOm zDgp|{g1th}rGSJca9D<-1^EJ248U-OU9q!K7&%kJ3T_bHvS4~ctQN>1*T0nm6srTW zP|m9!MPB+bs{th;OY9t!EI3BMnY*Bwm`l@mCYq1VrCD_*n$KrxTow#q&Jf44P43f1 z|8ce{xp3cPi# zk|Hv7K1imT07^=%wM?!?#3!b5fDt_;uXWs*&vrJ#AhZO1b!WXP%cf=wF1ns+yqH^r zGLCOjU_n{&7bH_--ZOPO(*ScOlnaY;Di_R~)ms`{1W#){y4tnusBc55O4lFUKqWu z;>4rpcA@av!7Hviw-SZhp1s7pU=bo@Ejj3hsipzcQTySKUitC`rP;RXpWk`+1-C1K(# zIfqI#9h9isa;V+4Hpcx*uD-ptAN8;2>YHl2P=7dAUsv0T`ZKxuIkl^*jDp(wg#fWK zfW;L6XEClEi&0xr4p3AH5a3q#0sv`yQx{^Mdf=*y@R-~RFp{lwqB74!W~tXr0*nYSsJApAmdZ=z(hO0|Z7nYutjRnPs*(!@#9qgSIPZ;!U^-ZO%dGt#^Z-P|K%?sp6 zmx7b9_fh@JHRS3si^g z;W+m%0csIYPc26x)eXI* ztS^Rj^29Dj%hhZ);mB22;IZ^VJu=DlzMk3sdc=aVU=L8wjx*~QIt)ZP>+gmAol&*) ze5v#_i$&5)9hT3&MV`?fW`0J_b4=puxh7FIr}3||jTx-=LSw<4#?R&&u{SR?%Jnj% zN(3#^tMmnYI18L|8E5Hd)m=q;xn5-r0y7T761z#YUR}2wbNLFmESPV9RZ?zgW3}sN zdz()0s2;6birx?Z#okzis0s1v)R*7uOB`naH(7Um_#dQhjNKj9km)K~rC5y$f9P51IP1Oq4}jt}h$sf)FZJ z3YR1Ph}bzff=+pBL(hAR7!uz6yfw+vN*b9Ci}INgrLy^nZ+&2D6usri*f?81yDl=7 z0>a)6l|_V!N`suTfVIY$wow;->b$YNsMacFICL8;^c8g*XqKw1�}f7InSWvOy?> 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 delta 12675 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 diff --git a/ShaderExample/ShaderExample/obj/Debug/ShaderExample.pdb b/ShaderExample/ShaderExample/obj/Debug/ShaderExample.pdb index 2b26f38a5fbd7288d162f0bb2045e882f635ba8c..feef0405becfbe36f447389418009352a271c952 100644 GIT binary patch delta 6313 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 delta 5792 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 diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Content/GreyScaleEffect.xnb b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Content/GreyScaleEffect.xnb index cdcbb25673eb79d41e803779d8bf0e2d7575dfa9..bd685b96f4ac87da91e86395261f26c9f7d79dff 100644 GIT binary patch literal 3532 zcmbtWO>7%Q6rQ!+Ha{(?AkYFu7)VhH!KB71X(4Tzq;(|H5*iySWT`mbb#2x0n)O;q zZX1b1js<#X5eFYQR7q9kz#)eoID}gzIP}m%4wk1-zf{$q(d$3)B1-N9#Ly2Zwf!H3 zR38_`7mc{e}HOC-6@@mQ@w$dy(K7H@nQ)+nF;} zX;^Je_q+J_(%&>KlZ=jbIQ0aiF&^e5bD+Os)Q&&i#h*2k@g8RM^X`L&hqUs^za67S@G2=e6^Ld=Nco zLl7nd1(-pvh4gjEKZW#d$oE3}Uyx$~X~+j5r$YKHWHY3%K)x2zZ$jP)=?77dRH!C3 zEz`ve$=_=Z^RUf@?Ak1Rv_Srbn>FJ5PyEBi%v3f#3^k{V$hcS0ljzsbd(iKoSQ*5e zK9S4TaYW?GGw}ttVdDME%~011C0+gKGwJwMSL56hk(p&SmU_HS&bQu zCh!RSR)FsS*MaW>uLDPbH-W>zZH+rX=6_#fOXDLTkK`EEI|UpBjsb^&$ABr|hrk() z^BQv+OTgzb?gH_VSmoOA%`xN;186TOz`yUama6&we0jyHER^`=IoqffTzpnAi*sY> zs=X(HJJa_QkbU1k_x<;!?E4XD_#8-^??-v8q8T`sqGAzbo@~lGN0`GZ$J)syeVbH<1H z4CZcY+Yaz9I?vn(K+anMDGyzq4~n4p5g5#EYTK=lZ3}Yy(h(oNa3nrEw=fr1yCObq zFV)Hw%ZVRPB#$MIk0ley@l*=wZ9ef`F`YR*#rwexJ`iUWbEXdN@$X=3(TvlH!+)dm z%pF9Jh~3f_hfLe3wC#Gzc0$_JJ`DWMNE`R35P|Kyw5fFoY+p(n-++$aWoc8j3H%(` zSQ7g2jAvVyetVvpi*I`8n*ngYGUYL-T~A%{a^25=YAk1b+eEnFD3fMB<~Me z)*hX!6mDPO5EFaBQRT=-ckTtX`laNh(f_ijpJC~G#X$3i8#hi)^c^^LJN@Ux;O+D& z+WTM^lhI#Qn%=23&-;k>e%i(4BzE3OH73OCTw)kd-7PI&6+HvZDOv6T*jrnor`2Ss z4YAMb6RjpDM3IdL8;|tnMY%PU-Y2rnKC#inzJgB#K0acIwhkG#tjBTeH#v?tavVDY zzF80NwH!C}IG!iRsSB|o=cxINpY?E@%JGPZVXlCll^i2@eniIG@RWZ{&g}(1<`5No z+T+ZRdQ`Neuj0MtuT>9d+h;ioBl66yj6&Jj#vJT9JT;Qzr7<9QFT37LKwUAtbeZ^-5 VHC8g$j%!bQd*5ISDGofj{{iV^Lze&m literal 2512 zcmbtVKWrOS7=L%Rsndp}K=|7V4(Jf1$Z}1BQfNp?OdW|7LTrNvOXXrelT(~Kb9Yt} ziQy`BV8{>zOHl?79jc_NGBC7Kh7KTgh(rel#)2}GEel(f>+gH-opVI;0`K(Q@B4e- z_q~5t`E+U}r9JFpO#5EDV%1#7a~gi8Vw;)EuDQ%t9Cs-*?btrI{mjRW2Cw<^+^lnV z#OUQ+aLv}DRr5xSFSzSjjy*A&$dCj3 z`Dcy1xdxuTuY>YY(cr0PqW?Q+Uay$GYps@C)AkyUyDa8r5c=cae+Ifa)AP;)Y2He_ zwrE@5v^f-Hqw=C!DfSgmG|qv!6bZl*s1=jH1Aj9n-v$4BOnwYL8SDRB#S^q*{0}Oo z3SA|pk3JP*MEo8Vt%u=Z_?YFV%7tNwi)t|`bOZDz=toc*^Z<*n2gCIH)v|}}UA6K? z(QntWcdB{rE%{EXTJ%k~&R42mT6W!8@d`Lbx!!_0TvcqPwPMX|a(T)!ja9b2y-oEn z7KVFbA;NH9;S+`F6l1i0LkiCUpM#uLcv0aj@OkLJQrH5%069>&0UUzdQMdzq3G#h~ z4;4OAc%YCLo!0m?@KxYhpaC3KIIeI;VMXC0@GbbQ0^bH+2U6V|3O5z*0O`E#0&%gd z(VWl@)5HS<2K6CF7`_H3THQHol{brvbX#3++ch6o5uzwI36kSQ0UFL$7}EU_hPtr5 z9@D=e^t5XdqBq**I=-`jVg|Z4#%fN}aiKe&gO-Y-DIU{?A@k9ENBkLZQSO@KxOI=I z@5p+{lg>Z+)0e(R9=cPAr#I!LJ3~rx1~$>;O%V0^Grch4y8B8;`}q-wYCBN65hROZ zvobNe2+V`1pAwMbt^?OW6t)SZaSIs5-d4K1G2Jfs?$5&*o`1)fnJvy5a;1!EXSroH zxocd=!3~0ZK0zb zbELZ`bh7Tq?-%Ik=#$?A5DmJYX|3b2>R%!5@#A|@1jSy;SNbXLchPm()%6s55E&62gGZvFG#Wd4wMOWK)L{P*QtmrTFNO_ z?xffjh*2Ovnbn2f1bR@1| diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Content/NoEffect.xnb b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Content/NoEffect.xnb index b734a007cb17e519c2539ca767ebe35ed56e12c9..76ec3ea10fa77812a566793bfcf7a9c1ed2376f9 100644 GIT binary patch delta 12 Ucmeyv{)c_SW5)j*pGYtR04tdWDgXcg delta 12 Tcmeyv{)c_SV@8IJPb8QDCY}W= diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/WindowsGame2.exe b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/WindowsGame2.exe index 281daee8697095f197316572f87c7838166179b1..b0e14edc6445365aa893a2aeb1ad6aa3bd20943b 100644 GIT binary patch delta 85 zcmZn&Xb70l!Q|7wvCEH3VAk#1l41_)-S+Akv6tK~sNMX6tA|m?r#~>70SK6YScZ{- mp+^gdc^DXif?b0D_@3$P)Y|R5q3ub_voj?cn-}mTNCN=*NFDG1 delta 85 zcmZn&Xb70l!DN%TvCEH3Ahkksvvi4{^CqFv#BS5HeNeql;00Jf;mSJRI l=+OdV9tMV>V3*+OqKE8_Tb+D%USVltNX+2hynrV`8UT|K8N&bo diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/WindowsGame2.pdb b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/WindowsGame2.pdb index 80b26a345786132f79debc06ef89d2b799d86ab2..3da62fb70c9fe312ff28153f5b7fc60ce3040b3d 100644 GIT binary patch delta 85 zcmZq3X~@~Y!X@F;9~jNZz`*dw_e^J})^6twZBJUBohi}SEW`DNmt*m9!lRsgx*BQpR1 delta 85 zcmZq3X~@~Y!X;so7#PjSz`!tF^pL%AtCP>pD=cjci5dKxWw_q(a&&dBe{o;_3ghHL RMT5-_5=X@Gs5f}R3IM|o9GL(B diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/ContentPipeline-{58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08}.xml b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/ContentPipeline-{58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08}.xml index bd69f9b2..51f898cd 100644 --- a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/ContentPipeline-{58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08}.xml +++ b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/ContentPipeline-{58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08}.xml @@ -17,7 +17,7 @@ EffectProcessor None C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Content\GreyScaleEffect.xnb - + true diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.exe b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.exe index 281daee8697095f197316572f87c7838166179b1..b0e14edc6445365aa893a2aeb1ad6aa3bd20943b 100644 GIT binary patch delta 85 zcmZn&Xb70l!Q|7wvCEH3VAk#1l41_)-S+Akv6tK~sNMX6tA|m?r#~>70SK6YScZ{- mp+^gdc^DXif?b0D_@3$P)Y|R5q3ub_voj?cn-}mTNCN=*NFDG1 delta 85 zcmZn&Xb70l!DN%TvCEH3Ahkksvvi4{^CqFv#BS5HeNeql;00Jf;mSJRI l=+OdV9tMV>V3*+OqKE8_Tb+D%USVltNX+2hynrV`8UT|K8N&bo diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.pdb b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.pdb index 80b26a345786132f79debc06ef89d2b799d86ab2..3da62fb70c9fe312ff28153f5b7fc60ce3040b3d 100644 GIT binary patch delta 85 zcmZq3X~@~Y!X@F;9~jNZz`*dw_e^J})^6twZBJUBohi}SEW`DNmt*m9!lRsgx*BQpR1 delta 85 zcmZq3X~@~Y!X;so7#PjSz`!tF^pL%AtCP>pD=cjci5dKxWw_q(a&&dBe{o;_3ghHL RMT5-_5=X@Gs5f}R3IM|o9GL(B diff --git a/WindowsGame2/WindowsGame2/WindowsGame2Content/GreyScaleEffect.fx b/WindowsGame2/WindowsGame2/WindowsGame2Content/GreyScaleEffect.fx index 927d38a5..8492f3db 100644 --- a/WindowsGame2/WindowsGame2/WindowsGame2Content/GreyScaleEffect.fx +++ b/WindowsGame2/WindowsGame2/WindowsGame2Content/GreyScaleEffect.fx @@ -4,11 +4,16 @@ float ambientRed; float ambientGreen; float ambientBlue; +float addedRed; +float addedGreen; +float addedBlue; +float addedAlpha; + float timeOfDay; float4x4 MatrixTransform; - +bool addLightGlow; float4 PixelShaderFunction(float2 coords: TEXCOORD0) : COLOR0 { @@ -22,7 +27,6 @@ float4 PixelShaderFunction(float2 coords: TEXCOORD0) : COLOR0 float Gray = (r * 0.3 + g * 0.59 + b * 0.11); //.3,.59,.11 color.rgb = Gray; - return color; } else { float r = color.r*(ambientRed / 255); @@ -32,8 +36,23 @@ float4 PixelShaderFunction(float2 coords: TEXCOORD0) : COLOR0 float Gray = (r * 0.11 + g * 0.11 + b * 0.78); //.3,.59,.11 color.rgb = Gray; - return color; + //Used for night glow + [flatten]if (addLightGlow == true) { + color.r = color.r * 3; + color.g = color.g * 3; + color.b = color.b * 3; + color.a = color.a*0.25; + } + else { + + } } + + color.r = color.r + addedRed; + color.g = color.g + addedGreen; + color.b = color.b + addedBlue; + color.a = color.a + addedAlpha; + return color; } From 0cf9b68560143924cc071b9f9780110128806a5a Mon Sep 17 00:00:00 2001 From: Date: Sun, 5 Aug 2018 09:33:00 -0700 Subject: [PATCH 030/110] Rebuilt some mods for 1.3 compatability. In the process of fixing Happy Birthday glitches. --- GeneralMods/AutoSpeed/manifest.json | 2 +- GeneralMods/BillboardAnywhere/manifest.json | 2 +- GeneralMods/BuildEndurance/manifest.json | 2 +- GeneralMods/BuildHealth/manifest.json | 2 +- GeneralMods/HappyBirthday/HappyBirthday.cs | 7 ++- GeneralMods/MuseumRearranger/manifest.json | 2 +- GeneralMods/NameLocationIDK/Class1.cs | 12 +++++ .../NameLocationIDK/NameLocationIDK.csproj | 53 +++++++++++++++++++ .../Properties/AssemblyInfo.cs | 36 +++++++++++++ GeneralMods/NightOwl/manifest.json | 2 +- .../SimpleSoundManager/Framework/WavSound.cs | 1 + .../SimpleSoundManager.csproj | 10 ++-- 12 files changed, 119 insertions(+), 12 deletions(-) create mode 100644 GeneralMods/NameLocationIDK/Class1.cs create mode 100644 GeneralMods/NameLocationIDK/NameLocationIDK.csproj create mode 100644 GeneralMods/NameLocationIDK/Properties/AssemblyInfo.cs diff --git a/GeneralMods/AutoSpeed/manifest.json b/GeneralMods/AutoSpeed/manifest.json index 6bb4ca77..5dd4808f 100644 --- a/GeneralMods/AutoSpeed/manifest.json +++ b/GeneralMods/AutoSpeed/manifest.json @@ -1,7 +1,7 @@ { "Name": "Auto Speed", "Author": "Alpha_Omegasis", - "Version": "1.5.0", + "Version": "1.6.0", "Description": "Got to go fast!", "UniqueID": "Omegasis.AutoSpeed", "EntryDll": "AutoSpeed.dll", diff --git a/GeneralMods/BillboardAnywhere/manifest.json b/GeneralMods/BillboardAnywhere/manifest.json index ce7852f0..d8d45b95 100644 --- a/GeneralMods/BillboardAnywhere/manifest.json +++ b/GeneralMods/BillboardAnywhere/manifest.json @@ -1,7 +1,7 @@ { "Name": "Billboard Anywhere", "Author": "Alpha_Omegasis", - "Version": "1.5.0", + "Version": "1.6.0", "Description": "Lets you view the billboard from anywhere.", "UniqueID": "Omegasis.BillboardAnywhere", "EntryDll": "BillboardAnywhere.dll", diff --git a/GeneralMods/BuildEndurance/manifest.json b/GeneralMods/BuildEndurance/manifest.json index a9cb9d66..6829e663 100644 --- a/GeneralMods/BuildEndurance/manifest.json +++ b/GeneralMods/BuildEndurance/manifest.json @@ -1,7 +1,7 @@ { "Name": "Build Endurance", "Author": "Alpha_Omegasis", - "Version": "1.5.0", + "Version": "1.6.0", "Description": "Increase your health as you play.", "UniqueID": "Omegasis.BuildEndurance", "EntryDll": "BuildEndurance.dll", diff --git a/GeneralMods/BuildHealth/manifest.json b/GeneralMods/BuildHealth/manifest.json index 2d8b65a3..dff2d592 100644 --- a/GeneralMods/BuildHealth/manifest.json +++ b/GeneralMods/BuildHealth/manifest.json @@ -1,7 +1,7 @@ { "Name": "Build Health", "Author": "Alpha_Omegasis", - "Version": "1.5.0", + "Version": "1.6.0", "Description": "Increase your health as you play.", "UniqueID": "Omegasis.BuildHealth", "EntryDll": "BuildHealth.dll", diff --git a/GeneralMods/HappyBirthday/HappyBirthday.cs b/GeneralMods/HappyBirthday/HappyBirthday.cs index 162e05ed..b923fb56 100644 --- a/GeneralMods/HappyBirthday/HappyBirthday.cs +++ b/GeneralMods/HappyBirthday/HappyBirthday.cs @@ -189,8 +189,13 @@ namespace Omegasis.HappyBirthday { if (!Context.IsWorldReady || Game1.eventUp || Game1.isFestival()) return; + if (!this.HasChosenBirthday && Game1.activeClickableMenu == null) + { + Game1.activeClickableMenu = new BirthdayMenu(this.PlayerData.BirthdaySeason, this.PlayerData.BirthdayDay, this.SetBirthday); + this.CheckedForBirthday = false; + } - if (!this.CheckedForBirthday) + if (!this.CheckedForBirthday && Game1.activeClickableMenu==null) { this.CheckedForBirthday = true; diff --git a/GeneralMods/MuseumRearranger/manifest.json b/GeneralMods/MuseumRearranger/manifest.json index 4317e2eb..4f390cda 100644 --- a/GeneralMods/MuseumRearranger/manifest.json +++ b/GeneralMods/MuseumRearranger/manifest.json @@ -1,7 +1,7 @@ { "Name": "Museum Rearranger", "Author": "Alpha_Omegasis", - "Version": "1.5.0", + "Version": "1.6.0", "Description": "Lets you rearrange the museum without needing to donate something.", "UniqueID": "Omegasis.MuseumRearranger", "EntryDll": "MuseumRearranger.dll", diff --git a/GeneralMods/NameLocationIDK/Class1.cs b/GeneralMods/NameLocationIDK/Class1.cs new file mode 100644 index 00000000..d70ddd47 --- /dev/null +++ b/GeneralMods/NameLocationIDK/Class1.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NameLocationIDK +{ + public class Class1 + { + } +} diff --git a/GeneralMods/NameLocationIDK/NameLocationIDK.csproj b/GeneralMods/NameLocationIDK/NameLocationIDK.csproj new file mode 100644 index 00000000..d16e2747 --- /dev/null +++ b/GeneralMods/NameLocationIDK/NameLocationIDK.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + aedda6ae-c790-4179-af3a-62478ea2d777 + Library + Properties + NameLocationIDK + NameLocationIDK + v4.6.1 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + diff --git a/GeneralMods/NameLocationIDK/Properties/AssemblyInfo.cs b/GeneralMods/NameLocationIDK/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..905f42c5 --- /dev/null +++ b/GeneralMods/NameLocationIDK/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("NameLocationIDK")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("NameLocationIDK")] +[assembly: AssemblyCopyright("Copyright © 2018")] +[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("aedda6ae-c790-4179-af3a-62478ea2d777")] + +// 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/GeneralMods/NightOwl/manifest.json b/GeneralMods/NightOwl/manifest.json index d722a920..4d2c7593 100644 --- a/GeneralMods/NightOwl/manifest.json +++ b/GeneralMods/NightOwl/manifest.json @@ -1,7 +1,7 @@ { "Name": "Night Owl", "Author": "Alpha_Omegasis", - "Version": "1.5.1", + "Version": "1.6.0", "Description": "Lets you stay up all night.", "UniqueID": "Omegasis.NightOwl", "EntryDll": "NightOwl.dll", diff --git a/GeneralMods/SimpleSoundManager/Framework/WavSound.cs b/GeneralMods/SimpleSoundManager/Framework/WavSound.cs index 3c42ef29..2a2114d6 100644 --- a/GeneralMods/SimpleSoundManager/Framework/WavSound.cs +++ b/GeneralMods/SimpleSoundManager/Framework/WavSound.cs @@ -1,4 +1,5 @@ using Microsoft.Xna.Framework.Audio; +using SimpleSoundManager.Framework; using StardewModdingAPI; using StardewValley; using System; diff --git a/GeneralMods/SimpleSoundManager/SimpleSoundManager.csproj b/GeneralMods/SimpleSoundManager/SimpleSoundManager.csproj index 746852c3..76a17e0e 100644 --- a/GeneralMods/SimpleSoundManager/SimpleSoundManager.csproj +++ b/GeneralMods/SimpleSoundManager/SimpleSoundManager.csproj @@ -72,13 +72,13 @@ + + + + + - - - - - From 3af2da68fae217abed5efbe28ec85845789ccd27 Mon Sep 17 00:00:00 2001 From: Date: Mon, 6 Aug 2018 14:01:44 -0700 Subject: [PATCH 031/110] Tons of 1.3 updates. Also support for multiplayer custom objects in Stardust is slowly coming about! --- GeneralMods/HappyBirthday/HappyBirthday.cs | 12 ++- GeneralMods/HappyBirthday/manifest.json | 4 +- .../SaveAnywhere/API/SaveAnywhereAPI.cs | 15 ++- .../SaveAnywhere/Framework/SaveManager.cs | 15 ++- GeneralMods/SaveAnywhere/SaveAnywhere.cs | 8 +- GeneralMods/SaveAnywhere/manifest.json | 2 +- .../SimpleSoundManager/Framework/Sound.cs | 4 + .../Framework/SoundManager.cs | 102 ++++++++++++++++-- .../SimpleSoundManager/Framework/WavSound.cs | 19 ++-- .../SimpleSoundManager/Framework/XACTSound.cs | 14 +++ .../Framework/XactMusicPair.cs | 2 +- GeneralMods/SimpleSoundManager/manifest.json | 4 +- .../Framework/Menus/MusicManagerMenu.cs | 74 ++++++------- .../Framework/Music/MusicManager.cs | 1 + .../StardewSymphony.cs | 2 +- .../StardewSymphonyRemastered.csproj | 1 + GeneralMods/StardustCore/ModCore.cs | 9 +- .../StardustCore/NetCode/NetCoreObject.cs | 81 ++++++++++++++ .../NetCode/NetTexure2DExtended.cs | 69 ++++++++++++ .../StardustCore/Objects/CoreObject.cs | 16 ++- .../Objects/MultiTileComponent.cs | 17 +++ .../StardustCore/Objects/MultiTileObject.cs | 9 +- GeneralMods/StardustCore/StardustCore.csproj | 2 + GeneralMods/TimeFreeze/TimeFreeze.cs | 2 +- GeneralMods/TimeFreeze/manifest.json | 2 +- 25 files changed, 415 insertions(+), 71 deletions(-) create mode 100644 GeneralMods/StardustCore/NetCode/NetCoreObject.cs create mode 100644 GeneralMods/StardustCore/NetCode/NetTexure2DExtended.cs diff --git a/GeneralMods/HappyBirthday/HappyBirthday.cs b/GeneralMods/HappyBirthday/HappyBirthday.cs index b923fb56..28a5913f 100644 --- a/GeneralMods/HappyBirthday/HappyBirthday.cs +++ b/GeneralMods/HappyBirthday/HappyBirthday.cs @@ -189,7 +189,7 @@ namespace Omegasis.HappyBirthday { if (!Context.IsWorldReady || Game1.eventUp || Game1.isFestival()) return; - if (!this.HasChosenBirthday && Game1.activeClickableMenu == null) + if (!this.HasChosenBirthday && Game1.activeClickableMenu == null && Game1.player.Name.ToLower()!="unnamed farmhand") { Game1.activeClickableMenu = new BirthdayMenu(this.PlayerData.BirthdaySeason, this.PlayerData.BirthdayDay, this.SetBirthday); this.CheckedForBirthday = false; @@ -362,6 +362,16 @@ namespace Omegasis.HappyBirthday Random rnd2 = new Random(); int r2 = rnd2.Next(this.PossibleBirthdayGifts.Count); gift = this.PossibleBirthdayGifts.ElementAt(r2); + //Attempt to balance sapplings from being too OP as a birthday gift. + if (gift.Name.Contains("Sapling")) + { + gift.Stack = 1; //A good investment? + } + if(gift.Name.Contains("Rare Seed")) + { + gift.Stack = 2; //Still a little op but less so than 5. + } + if (Game1.player.isInventoryFull()) Game1.createItemDebris(gift, Game1.player.getStandingPosition(), Game1.player.getDirection()); else diff --git a/GeneralMods/HappyBirthday/manifest.json b/GeneralMods/HappyBirthday/manifest.json index bf199687..6a5a2101 100644 --- a/GeneralMods/HappyBirthday/manifest.json +++ b/GeneralMods/HappyBirthday/manifest.json @@ -3,8 +3,8 @@ "Author": "Alpha_Omegasis", "Version": { "MajorVersion": 1, - "MinorVersion": 6, - "PatchVersion": 0, + "MinorVersion": 7, + "PatchVersion": 1, "Build": null }, "MinimumApiVersion": "1.15", diff --git a/GeneralMods/SaveAnywhere/API/SaveAnywhereAPI.cs b/GeneralMods/SaveAnywhere/API/SaveAnywhereAPI.cs index ec34bb97..36aab4f2 100644 --- a/GeneralMods/SaveAnywhere/API/SaveAnywhereAPI.cs +++ b/GeneralMods/SaveAnywhere/API/SaveAnywhereAPI.cs @@ -9,11 +9,24 @@ namespace Omegasis.SaveAnywhere.API public event EventHandler AfterSave; public event EventHandler AfterLoad; + public SaveAnywhereAPI(SaveManager manager) { + BeforeSave = new EventHandler(empty); + AfterSave= new EventHandler(empty); + AfterLoad= new EventHandler(empty); manager.BeforeSave += (sender, e) => { BeforeSave.Invoke(sender, e); }; manager.AfterSave += (sender, e) => { AfterSave.Invoke(sender, e); }; manager.AfterLoad += (sender, e) => { AfterLoad.Invoke(sender, e); }; - } + } + + ///

+ /// Used to initialize empty event handlers. + /// + /// + /// + private void empty(object o, EventArgs args){ + + } } } diff --git a/GeneralMods/SaveAnywhere/Framework/SaveManager.cs b/GeneralMods/SaveAnywhere/Framework/SaveManager.cs index fc1a1ef4..3be29bc0 100644 --- a/GeneralMods/SaveAnywhere/Framework/SaveManager.cs +++ b/GeneralMods/SaveAnywhere/Framework/SaveManager.cs @@ -63,6 +63,16 @@ namespace Omegasis.SaveAnywhere.Framework this.Helper = helper; this.Reflection = reflection; this.OnLoaded = onLoaded; + + this.BeforeSave = new EventHandler(empty); + this.AfterSave = new EventHandler(empty); + this.AfterLoad = new EventHandler(empty); + + } + + private void empty(object o, EventArgs args) + { + } /// Perform any required update logic. @@ -87,8 +97,8 @@ namespace Omegasis.SaveAnywhere.Framework { currentSaveMenu.SaveComplete -= CurrentSaveMenu_SaveComplete; currentSaveMenu = null; - AfterSave.Invoke(this, EventArgs.Empty); + } /// Clear saved data. @@ -103,7 +113,7 @@ namespace Omegasis.SaveAnywhere.Framework { // Fire Event before saving data BeforeSave.Invoke(this, EventArgs.Empty); - + // save game data Farm farm = Game1.getFarm(); if (farm.shippingBin.Any()) @@ -155,6 +165,7 @@ namespace Omegasis.SaveAnywhere.Framework // Notify other mods that load is complete AfterLoad.Invoke(this, EventArgs.Empty); + } /// diff --git a/GeneralMods/SaveAnywhere/SaveAnywhere.cs b/GeneralMods/SaveAnywhere/SaveAnywhere.cs index 08463a61..e3a96d92 100644 --- a/GeneralMods/SaveAnywhere/SaveAnywhere.cs +++ b/GeneralMods/SaveAnywhere/SaveAnywhere.cs @@ -79,10 +79,12 @@ namespace Omegasis.SaveAnywhere return api; } + /*Notes. Mods that want to support save anywhere will get the api for Save anywhere and then add their clean up code to the events that happen for Before/After Save and Loading. + Example with pseudo code. + SaveAnywhere.api.BeforeSave+=StardustCore.Objects.CleanUpBeforeSave; + We then can use function wrapping (is that what it's called?) to just handle calling the actual function that deals with clean-up code. - - - + */ /********* ** Private methods *********/ diff --git a/GeneralMods/SaveAnywhere/manifest.json b/GeneralMods/SaveAnywhere/manifest.json index d53330f2..326d1e30 100644 --- a/GeneralMods/SaveAnywhere/manifest.json +++ b/GeneralMods/SaveAnywhere/manifest.json @@ -1,7 +1,7 @@ { "Name": "Save Anywhere", "Author": "Alpha_Omegasis", - "Version": "2.7.2", + "Version": "2.8.1", "Description": "Lets you save almost anywhere.", "UniqueID": "Omegasis.SaveAnywhere", "EntryDll": "SaveAnywhere.dll", diff --git a/GeneralMods/SimpleSoundManager/Framework/Sound.cs b/GeneralMods/SimpleSoundManager/Framework/Sound.cs index 7524e046..03fa9081 100644 --- a/GeneralMods/SimpleSoundManager/Framework/Sound.cs +++ b/GeneralMods/SimpleSoundManager/Framework/Sound.cs @@ -32,5 +32,9 @@ namespace SimpleSoundManager.Framework /// /// Sound clone(); + + string getSoundName(); + + bool isStopped(); } } diff --git a/GeneralMods/SimpleSoundManager/Framework/SoundManager.cs b/GeneralMods/SimpleSoundManager/Framework/SoundManager.cs index 8fd53482..3eb34171 100644 --- a/GeneralMods/SimpleSoundManager/Framework/SoundManager.cs +++ b/GeneralMods/SimpleSoundManager/Framework/SoundManager.cs @@ -9,18 +9,14 @@ using System.Threading.Tasks; namespace SimpleSoundManager.Framework { - - /// - /// TODO: - /// Play, stop, pause songs. - /// - class SoundManager + public class SoundManager { public Dictionary sounds; public Dictionary musicBanks; + public List currentlyPlayingSounds = new List(); /// /// Constructor for this class. /// @@ -28,6 +24,7 @@ namespace SimpleSoundManager.Framework { this.sounds = new Dictionary(); this.musicBanks = new Dictionary(); + currentlyPlayingSounds = new List(); } /// @@ -37,7 +34,7 @@ namespace SimpleSoundManager.Framework /// public void loadWavFile(string soundName,string pathToWav) { - WavSound wav = new WavSound(pathToWav); + WavSound wav = new WavSound(soundName,pathToWav); this.sounds.Add(soundName,wav); } @@ -49,7 +46,7 @@ namespace SimpleSoundManager.Framework /// public void loadWavFile(IModHelper helper,string soundName,string pathToWav) { - WavSound wav = new WavSound(helper ,pathToWav); + WavSound wav = new WavSound(helper ,soundName,pathToWav); this.sounds.Add(soundName,wav); } @@ -61,7 +58,7 @@ namespace SimpleSoundManager.Framework /// public void loadWavFile(IModHelper helper,string songName,List pathToWav) { - WavSound wav = new WavSound(helper,pathToWav); + WavSound wav = new WavSound(helper,songName,pathToWav); this.sounds.Add(songName,wav); } @@ -133,5 +130,92 @@ namespace SimpleSoundManager.Framework return null; } + /// + /// Play the sound with the given name. + /// + /// + public void playSound(string soundName) + { + foreach(var sound in this.sounds) + { + if (sound.Key == soundName) + { + var s=getSoundClone(soundName); + s.play(); + this.currentlyPlayingSounds.Add(s); + break; + } + } + } + + /// + /// Stop the sound that is playing. + /// + /// + public void stopSound(string soundName) + { + List removalList = new List(); + foreach (var sound in this.currentlyPlayingSounds) + { + if (sound.getSoundName() == soundName) + { + sound.stop(); + removalList.Add(sound); + } + } + foreach(var v in removalList) + { + this.currentlyPlayingSounds.Remove(v); + } + } + + /// + /// Pause the sound with this name? + /// + /// + public void pauseSound(string soundName) + { + List removalList = new List(); + foreach (var sound in this.currentlyPlayingSounds) + { + if (sound.getSoundName() == soundName) + { + sound.pause(); + removalList.Add(sound); + } + } + foreach (var v in removalList) + { + this.currentlyPlayingSounds.Remove(v); + } + } + + public void update() + { + List removalList = new List(); + foreach(Sound song in this.currentlyPlayingSounds) + { + if (song.isStopped()) + { + removalList.Add(song); + } + } + foreach(var v in removalList) + { + this.currentlyPlayingSounds.Remove(v); + } + } + + public void stopAllSounds() + { + foreach(var v in this.currentlyPlayingSounds) + { + v.stop(); + } + } + + + + } } diff --git a/GeneralMods/SimpleSoundManager/Framework/WavSound.cs b/GeneralMods/SimpleSoundManager/Framework/WavSound.cs index 2a2114d6..7478b5da 100644 --- a/GeneralMods/SimpleSoundManager/Framework/WavSound.cs +++ b/GeneralMods/SimpleSoundManager/Framework/WavSound.cs @@ -31,20 +31,20 @@ namespace SimpleSoundManager /// byte[] byteArray; - public List sounds; public string path; - + public string soundName; /// /// Get a raw disk path to the wav file. /// /// - public WavSound(string pathToWavFile) + public WavSound(string name,string pathToWavFile) { this.path = pathToWavFile; LoadWavFromFileToStream(); + this.soundName = name; } /// @@ -52,10 +52,11 @@ namespace SimpleSoundManager /// /// /// - public WavSound(IModHelper modHelper, string pathInModDirectory) + public WavSound(IModHelper modHelper,string name, string pathInModDirectory) { string path = Path.Combine(modHelper.DirectoryPath, pathInModDirectory); this.path = path; + this.soundName = name; } /// @@ -63,7 +64,7 @@ namespace SimpleSoundManager /// /// The mod helper for the mod you wish to use to load the music files from. /// The list of folders and files that make up a complete path. - public WavSound(IModHelper modHelper, List pathPieces) + public WavSound(IModHelper modHelper,string soundName, List pathPieces) { string s = modHelper.DirectoryPath; foreach(var str in pathPieces) @@ -71,6 +72,7 @@ namespace SimpleSoundManager s = Path.Combine(s, str); } this.path = s; + this.soundName = soundName; } /// @@ -224,7 +226,12 @@ namespace SimpleSoundManager public Sound clone() { - return new WavSound(this.path); + return new WavSound(this.getSoundName(),this.path); + } + + public string getSoundName() + { + return this.soundName; } public void restart() diff --git a/GeneralMods/SimpleSoundManager/Framework/XACTSound.cs b/GeneralMods/SimpleSoundManager/Framework/XACTSound.cs index 196d34d2..47f6c8f6 100644 --- a/GeneralMods/SimpleSoundManager/Framework/XACTSound.cs +++ b/GeneralMods/SimpleSoundManager/Framework/XACTSound.cs @@ -130,5 +130,19 @@ namespace SimpleSoundManager.Framework { return new XACTSound(this.waveBank, this.soundBank, this.soundName); } + + public string getSoundName() + { + return this.soundName; + } + + public bool isStopped() + { + if (this.song == null) return true; + if (this.song.IsStopped) return true; + return false; + } + + } } diff --git a/GeneralMods/SimpleSoundManager/Framework/XactMusicPair.cs b/GeneralMods/SimpleSoundManager/Framework/XactMusicPair.cs index 999a34af..fe3a77c2 100644 --- a/GeneralMods/SimpleSoundManager/Framework/XactMusicPair.cs +++ b/GeneralMods/SimpleSoundManager/Framework/XactMusicPair.cs @@ -10,7 +10,7 @@ using System.Threading.Tasks; namespace SimpleSoundManager { - class XACTMusicPair + public class XACTMusicPair { public WaveBank waveBank; public ISoundBank soundBank; diff --git a/GeneralMods/SimpleSoundManager/manifest.json b/GeneralMods/SimpleSoundManager/manifest.json index 9f93e023..e5e92fab 100644 --- a/GeneralMods/SimpleSoundManager/manifest.json +++ b/GeneralMods/SimpleSoundManager/manifest.json @@ -1,8 +1,8 @@ { "Name": "Simple Sound Manager", "Author": "Alpha_Omegasis", - "Version": "2.0.0", - "Description": "A simple framework to play sounds from wave banks.", + "Version": "2.0.1", + "Description": "A simple framework to play sounds from wave banks and wav files.", "UniqueID": "Omegasis.SimpleSoundManager", "EntryDll": "SimpleSoundManager.dll", "MinimumApiVersion": "2.0", diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs index aa5e8439..dc433087 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs @@ -112,7 +112,7 @@ namespace StardewSymphonyRemastered.Framework.Menus if (v.Value.musicPackInformation.getTexture() == null) { Texture2DExtended texture = StardewSymphony.textureManager.getTexture("MusicDisk"); - float scale = 1.00f / ((float)texture.texture.Width / 64f); + float scale = 1.00f / ((float)texture.getTexture().Width / 64f); this.musicAlbumButtons.Add(new Button(v.Key, new Rectangle(100 + (numOfButtons * 100), 125 + (rows * 100), 64, 64),texture, "", new Rectangle(0, 0, 16, 16), scale, new StardustCore.Animations.Animation(new Rectangle(0, 0, 16, 16)), StardustCore.IlluminateFramework.Colors.randomColor(), Color.White,new ButtonFunctionality(new DelegatePairing(null, new List { @@ -125,8 +125,8 @@ namespace StardewSymphonyRemastered.Framework.Menus } else { - float scale = 1.00f / ((float)v.Value.musicPackInformation.getTexture().texture.Width / 64f); - this.musicAlbumButtons.Add(new Button(v.Key, new Rectangle(100 + (numOfButtons * 100), 125 + (rows * 100), 64, 64), v.Value.musicPackInformation.getTexture(), "", new Rectangle(0, 0, v.Value.musicPackInformation.getTexture().texture.Width, v.Value.musicPackInformation.getTexture().texture.Height), scale, new StardustCore.Animations.Animation(new Rectangle(0, 0, 16, 16)), StardustCore.IlluminateFramework.LightColorsList.Black, StardustCore.IlluminateFramework.LightColorsList.Black, new ButtonFunctionality(new DelegatePairing(null, new List + float scale = 1.00f / ((float)v.Value.musicPackInformation.getTexture().getTexture().Width / 64f); + this.musicAlbumButtons.Add(new Button(v.Key, new Rectangle(100 + (numOfButtons * 100), 125 + (rows * 100), 64, 64), v.Value.musicPackInformation.getTexture(), "", new Rectangle(0, 0, v.Value.musicPackInformation.getTexture().getTexture().Width, v.Value.musicPackInformation.getTexture().getTexture().Height), scale, new StardustCore.Animations.Animation(new Rectangle(0, 0, 16, 16)), StardustCore.IlluminateFramework.LightColorsList.Black, StardustCore.IlluminateFramework.LightColorsList.Black, new ButtonFunctionality(new DelegatePairing(null, new List { (object)v } @@ -452,9 +452,9 @@ namespace StardewSymphonyRemastered.Framework.Menus //Allow 8 songs to be displayed per page. Texture2DExtended texture = StardewSymphony.textureManager.getTexture("MusicNote"); - float scale = 1.00f / ((float)texture.texture.Width / 64f); + float scale = 1.00f / ((float)texture.getTexture().Width / 64f); Song s = musicPackSongList.ElementAt(i); - Rectangle srcRect = new Rectangle(0, 0, texture.texture.Width, texture.texture.Height); + Rectangle srcRect = new Rectangle(0, 0, texture.getTexture().Width, texture.getTexture().Height); this.fancyButtons.Add(new Button(s.name, new Rectangle((int)placement2.X+25, (int)placement2.Y + ((i%6) * 100)+100, 64, 64), texture, s.name, srcRect, scale, new Animation(srcRect), Color.White, Color.White, new ButtonFunctionality(null, null, null))); } @@ -472,8 +472,8 @@ namespace StardewSymphonyRemastered.Framework.Menus //Allow 8 songs to be displayed per page. Texture2DExtended texture = StardewSymphony.textureManager.getTexture("GreenBallon"); - float scale = 1.00f / ((float)texture.texture.Height / 64f); - Rectangle srcRect = new Rectangle(0, 0, texture.texture.Width, texture.texture.Height); + float scale = 1.00f / ((float)texture.getTexture().Height / 64f); + Rectangle srcRect = new Rectangle(0, 0, texture.getTexture().Width, texture.getTexture().Height); this.fancyButtons.Add(new Button(SongSpecifics.festivals.ElementAt(i), new Rectangle((int)placement2.X + 50, (int)placement2.Y + ((i % 6) * 100) + 100, 64, 64), texture, SongSpecifics.festivals.ElementAt(i), srcRect, scale, new Animation(srcRect), Color.White, Color.White, new ButtonFunctionality(null, null, null))); } @@ -493,8 +493,8 @@ namespace StardewSymphonyRemastered.Framework.Menus //Allow 8 songs to be displayed per page. Texture2DExtended texture = StardewSymphony.textureManager.getTexture("MenuIcon"); - float scale = 1.00f / ((float)texture.texture.Width / 64f); - Rectangle srcRect = new Rectangle(0, 0, texture.texture.Width, texture.texture.Height); + float scale = 1.00f / ((float)texture.getTexture().Width / 64f); + Rectangle srcRect = new Rectangle(0, 0, texture.getTexture().Width, texture.getTexture().Height); this.fancyButtons.Add(new Button(SongSpecifics.menus.ElementAt(i), new Rectangle((int)placement2.X + 50, (int)placement2.Y + ((i % 6) * 100) + 100, 64, 64), texture, SongSpecifics.menus.ElementAt(i), srcRect, scale, new Animation(srcRect), Color.White, Color.White, new ButtonFunctionality(null, null, null))); } @@ -512,8 +512,8 @@ namespace StardewSymphonyRemastered.Framework.Menus //Allow 8 songs to be displayed per page. Texture2DExtended texture = StardewSymphony.textureManager.getTexture("StarIcon"); - float scale = 1.00f / ((float)texture.texture.Width / 64f); - Rectangle srcRect = new Rectangle(0, 0, texture.texture.Width, texture.texture.Height); + float scale = 1.00f / ((float)texture.getTexture().Width / 64f); + Rectangle srcRect = new Rectangle(0, 0, texture.getTexture().Width, texture.getTexture().Height); this.fancyButtons.Add(new Button(SongSpecifics.events.ElementAt(i), new Rectangle((int)placement2.X + 50, (int)placement2.Y + ((i % 6) * 100) + 100, 64, 64), texture, SongSpecifics.events.ElementAt(i), srcRect, scale, new Animation(srcRect), Color.White, Color.White, new ButtonFunctionality(null, null, null))); } @@ -538,8 +538,8 @@ namespace StardewSymphonyRemastered.Framework.Menus StardewSymphony.ModMonitor.Log("SPRING TEXTURE NULL!"); return; } - float scale = 1.00f / ((float)springTexture.texture.Width / 64f); - Rectangle srcRect = new Rectangle(0, 0, springTexture.texture.Width, springTexture.texture.Height); + float scale = 1.00f / ((float)springTexture.getTexture().Width / 64f); + Rectangle srcRect = new Rectangle(0, 0, springTexture.getTexture().Width, springTexture.getTexture().Height); this.fancyButtons.Add(new Button("SeasonIcon", new Rectangle((int)seasonPlacement.X, (int)seasonPlacement.Y, 64, 64), springTexture, "Spring Music", srcRect, scale, new Animation(srcRect), Color.White, Color.White, new ButtonFunctionality(null, null, null))); } if (Game1.currentSeason == "summer") @@ -552,8 +552,8 @@ namespace StardewSymphonyRemastered.Framework.Menus StardewSymphony.ModMonitor.Log("SUMMER TEXTURE NULL!"); return; } - float scale = 1.00f / ((float)summerTexture.texture.Width / 64f); - Rectangle srcRect = new Rectangle(0, 0, summerTexture.texture.Width, summerTexture.texture.Height); + float scale = 1.00f / ((float)summerTexture.getTexture().Width / 64f); + Rectangle srcRect = new Rectangle(0, 0, summerTexture.getTexture().Width, summerTexture.getTexture().Height); this.fancyButtons.Add(new Button("SeasonIcon", new Rectangle((int)seasonPlacement.X, (int)seasonPlacement.Y, 64, 64), summerTexture, "Summer Music", srcRect, scale, new Animation(srcRect), Color.White, Color.White, new ButtonFunctionality(null, null, null))); } if (Game1.currentSeason == "fall") @@ -566,8 +566,8 @@ namespace StardewSymphonyRemastered.Framework.Menus StardewSymphony.ModMonitor.Log("FALL TEXTURE NULL!"); return; } - float scale = 1.00f / ((float)fallTexture.texture.Width / 64f); - Rectangle srcRect = new Rectangle(0, 0, fallTexture.texture.Width, fallTexture.texture.Height); + float scale = 1.00f / ((float)fallTexture.getTexture().Width / 64f); + Rectangle srcRect = new Rectangle(0, 0, fallTexture.getTexture().Width, fallTexture.getTexture().Height); this.fancyButtons.Add(new Button("SeasonIcon", new Rectangle((int)seasonPlacement.X, (int)seasonPlacement.Y, 64, 64), fallTexture, "Fall Music", srcRect, scale, new Animation(srcRect), Color.White, Color.White, new ButtonFunctionality(null, null, null))); } if (Game1.currentSeason == "winter") @@ -580,8 +580,8 @@ namespace StardewSymphonyRemastered.Framework.Menus StardewSymphony.ModMonitor.Log("WINTER TEXTURE NULL!"); return; } - float scale = 1.00f / ((float)winterTexture.texture.Width / 64f); - Rectangle srcRect = new Rectangle(0, 0, winterTexture.texture.Width, winterTexture.texture.Height); + float scale = 1.00f / ((float)winterTexture.getTexture().Width / 64f); + Rectangle srcRect = new Rectangle(0, 0, winterTexture.getTexture().Width, winterTexture.getTexture().Height); this.fancyButtons.Add(new Button("SeasonIcon", new Rectangle((int)seasonPlacement.X, (int)seasonPlacement.Y, 64, 64), winterTexture, "Winter Music", srcRect, scale, new Animation(srcRect), Color.White, Color.White, new ButtonFunctionality(null, null, null))); } @@ -591,8 +591,8 @@ namespace StardewSymphonyRemastered.Framework.Menus //Festival Icon placement. Texture2DExtended festivalTexture = StardewSymphony.textureManager.getTexture("FestivalIcon"); - float festivalScale = 1.00f / ((float)festivalTexture.texture.Width / 64f); - Rectangle festivalSrcRect = new Rectangle(0, 0, festivalTexture.texture.Width, festivalTexture.texture.Height); + float festivalScale = 1.00f / ((float)festivalTexture.getTexture().Width / 64f); + Rectangle festivalSrcRect = new Rectangle(0, 0, festivalTexture.getTexture().Width, festivalTexture.getTexture().Height); this.fancyButtons.Add(new Button("FestivalIcon", new Rectangle((int)festivalPlacement.X, (int)festivalPlacement.Y, 64, 64), festivalTexture, "Festival Music", festivalSrcRect, festivalScale, new Animation(festivalSrcRect), Color.White, Color.White, new ButtonFunctionality(null, null, null))); if (festivalTexture == null) { @@ -603,8 +603,8 @@ namespace StardewSymphonyRemastered.Framework.Menus //Event Icon placement. Texture2DExtended eventTexture = StardewSymphony.textureManager.getTexture("EventIcon"); - float eventScale = 1.00f / ((float)eventTexture.texture.Width / 64f); - Rectangle eventSrcRectangle = new Rectangle(0, 0, eventTexture.texture.Width, eventTexture.texture.Height); + float eventScale = 1.00f / ((float)eventTexture.getTexture().Width / 64f); + Rectangle eventSrcRectangle = new Rectangle(0, 0, eventTexture.getTexture().Width, eventTexture.getTexture().Height); this.fancyButtons.Add(new Button("EventIcon", new Rectangle((int)eventPlacement.X, (int)eventPlacement.Y, 64, 64), eventTexture, "Event Music", eventSrcRectangle, eventScale, new Animation(eventSrcRectangle), Color.White, Color.White, new ButtonFunctionality(null, null, null))); if (eventTexture == null) @@ -616,8 +616,8 @@ namespace StardewSymphonyRemastered.Framework.Menus //Menu Icon placement. Texture2DExtended menuTexture = StardewSymphony.textureManager.getTexture("MenuIcon"); - float menuScale = 1.00f / ((float)menuTexture.texture.Width / 64f); - Rectangle menuSrcRectangle = new Rectangle(0, 0, menuTexture.texture.Width, menuTexture.texture.Height); + float menuScale = 1.00f / ((float)menuTexture.getTexture().Width / 64f); + Rectangle menuSrcRectangle = new Rectangle(0, 0, menuTexture.getTexture().Width, menuTexture.getTexture().Height); this.fancyButtons.Add(new Button("MenuIcon", new Rectangle((int)menuPlacement.X, (int)menuPlacement.Y, 64, 64), menuTexture, "Menu Music", menuSrcRectangle, menuScale, new Animation(menuSrcRectangle), Color.White, Color.White, new ButtonFunctionality(null, null, null))); if (menuTexture == null) @@ -705,8 +705,8 @@ namespace StardewSymphonyRemastered.Framework.Menus display = "Wedding Music"; } - float scale = 1.00f / ((float)texture.texture.Width / 64f); - Rectangle srcRect = new Rectangle(0, 0, texture.texture.Width, texture.texture.Height); + float scale = 1.00f / ((float)texture.getTexture().Width / 64f); + Rectangle srcRect = new Rectangle(0, 0, texture.getTexture().Width, texture.getTexture().Height); this.fancyButtons.Add(new Button(name, new Rectangle((int)placement2.X + 50, (int)placement2.Y + ((i % 7) * 100), 64, 64), texture, display, srcRect, scale, new Animation(srcRect), Color.White, Color.White, new ButtonFunctionality(null, null, null))); } @@ -742,8 +742,8 @@ namespace StardewSymphonyRemastered.Framework.Menus { StardewSymphony.ModMonitor.Log("HMM A TEXTURE IS NULL: " + i.ToString()); } - float scale = 1.00f / ((float)texture.texture.Width / 64f); - Rectangle srcRect = new Rectangle(0, 0, texture.texture.Width, texture.texture.Height); + float scale = 1.00f / ((float)texture.getTexture().Width / 64f); + Rectangle srcRect = new Rectangle(0, 0, texture.getTexture().Width, texture.getTexture().Height); this.fancyButtons.Add(new Button(name, new Rectangle((int)placement2.X + 50, (int)placement2.Y + ((i % 7) * 100), 64, 64), texture, display, srcRect, scale, new Animation(srcRect), Color.White, Color.White, new ButtonFunctionality(null, null, null))); } @@ -777,8 +777,8 @@ namespace StardewSymphonyRemastered.Framework.Menus numOfEmptyCabin++; } Texture2DExtended texture2 = StardewSymphony.textureManager.getTexture("HouseIcon"); - float scale2 = 1.00f / ((float)texture2.texture.Width / 64f); - Rectangle srcRect2 = new Rectangle(0, 0, texture2.texture.Width, texture2.texture.Height); + float scale2 = 1.00f / ((float)texture2.getTexture().Width / 64f); + Rectangle srcRect2 = new Rectangle(0, 0, texture2.getTexture().Width, texture2.getTexture().Height); this.fancyButtons.Add(new Button(locName, new Rectangle((int)placement2.X + 25, (int)placement2.Y + ((i % 6) * 100) + 100, 64, 64), texture2, displayName, srcRect2, scale2, new Animation(srcRect2), Color.White, Color.White, new ButtonFunctionality(null, null, null))); continue; } @@ -787,8 +787,8 @@ namespace StardewSymphonyRemastered.Framework.Menus string displayName = "Empty Cabin "+(numOfEmptyCabin); numOfEmptyCabin++; Texture2DExtended texture2 = StardewSymphony.textureManager.getTexture("HouseIcon"); - float scale2 = 1.00f / ((float)texture2.texture.Width / 64f); - Rectangle srcRect2 = new Rectangle(0, 0, texture2.texture.Width, texture2.texture.Height); + float scale2 = 1.00f / ((float)texture2.getTexture().Width / 64f); + Rectangle srcRect2 = new Rectangle(0, 0, texture2.getTexture().Width, texture2.getTexture().Height); this.fancyButtons.Add(new Button(locName, new Rectangle((int)placement2.X + 25, (int)placement2.Y + ((i % 6) * 100) + 100, 64, 64), texture2, displayName, srcRect2, scale2, new Animation(srcRect2), Color.White, Color.White, new ButtonFunctionality(null, null, null))); continue; } @@ -802,8 +802,8 @@ namespace StardewSymphonyRemastered.Framework.Menus //Allow 8 songs to be displayed per page. Texture2DExtended texture = StardewSymphony.textureManager.getTexture("HouseIcon"); - float scale = 1.00f / ((float)texture.texture.Width / 64f); - Rectangle srcRect = new Rectangle(0, 0, texture.texture.Width, texture.texture.Height); + float scale = 1.00f / ((float)texture.getTexture().Width / 64f); + Rectangle srcRect = new Rectangle(0, 0, texture.getTexture().Width, texture.getTexture().Height); this.fancyButtons.Add(new Button(locName, new Rectangle((int)placement2.X + 25, (int)placement2.Y + ((i % 6) * 100) + 100, 64, 64), texture, locName, srcRect, scale, new Animation(srcRect), Color.White, Color.White, new ButtonFunctionality(null, null, null))); } @@ -866,8 +866,8 @@ namespace StardewSymphonyRemastered.Framework.Menus display = "Saturday Music"; } - float scale = 1.00f / ((float)texture.texture.Width / 64f); - Rectangle srcRect = new Rectangle(0, 0, texture.texture.Width, texture.texture.Height); + float scale = 1.00f / ((float)texture.getTexture().Width / 64f); + Rectangle srcRect = new Rectangle(0, 0, texture.getTexture().Width, texture.getTexture().Height); this.fancyButtons.Add(new Button(name, new Rectangle((int)placement2.X + 50, (int)placement2.Y + ((i % 7) * 100), 64, 64), texture, display, srcRect, scale, new Animation(srcRect), Color.White, Color.White, new ButtonFunctionality(null, null, null))); } diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicManager.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicManager.cs index 3cfab832..0c7d6cfe 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicManager.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicManager.cs @@ -67,6 +67,7 @@ namespace StardewSymphonyRemastered.Framework public void updateTimer() { + if (this.currentMusicPack == null) return; if (this.currentMusicPack.isPlaying()) return; else { diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/StardewSymphony.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/StardewSymphony.cs index af54fc60..b97d366d 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/StardewSymphony.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/StardewSymphony.cs @@ -216,7 +216,7 @@ namespace StardewSymphonyRemastered /// private void ControlEvents_KeyPressed(object sender, StardewModdingAPI.Events.EventArgsKeyPressed e) { - if (e.KeyPressed.ToString() == Config.KeyBinding) + if (e.KeyPressed.ToString() == Config.KeyBinding && Game1.activeClickableMenu==null) { Game1.activeClickableMenu = new Framework.Menus.MusicManagerMenu(Game1.viewport.Width,Game1.viewport.Height); } diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/StardewSymphonyRemastered.csproj b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/StardewSymphonyRemastered.csproj index 69ded58c..26d3a58d 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/StardewSymphonyRemastered.csproj +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/StardewSymphonyRemastered.csproj @@ -240,6 +240,7 @@ + diff --git a/GeneralMods/StardustCore/ModCore.cs b/GeneralMods/StardustCore/ModCore.cs index fe44a221..babdddac 100644 --- a/GeneralMods/StardustCore/ModCore.cs +++ b/GeneralMods/StardustCore/ModCore.cs @@ -61,6 +61,7 @@ namespace StardustCore { SerializationManager.restoreAllModObjects(SerializationManager.trackedObjectList); List> objs = new List>(); + /* MultiTileComponent tile1 = new MultiTileComponent(0,"Tileobj1","A basic tile obj",new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png"))); MultiTileComponent tile2 = new MultiTileComponent(0,"Tileobj2", "A basic tile obj", new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test2.png"))); MultiTileComponent tile3 = new MultiTileComponent(0,"Tileobj3", "A basic tile obj", new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test3.png"))); @@ -69,8 +70,14 @@ namespace StardustCore objs.Add(new KeyValuePair(new Vector2(2, 0), tile3)); MultiTileObject collection= new MultiTileObject("MultiTest", "Trying to get multi object testing working", Vector2.Zero, new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test3.png")), objs, StardustCore.IlluminateFramework.Colors.invertColor(StardustCore.IlluminateFramework.LightColorsList.Purple), "MultiTest"); + */ - Game1.player.addItemToInventory(collection); + // Game1.player.addItemToInventory(collection); + CoreObject tile1 = new CoreObject(new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png")),0, Vector2.Zero,9); + tile1.description = "Hello"; + tile1.Name = "test"; + tile1.displayName = "test"; + Game1.player.addItemToInventory(tile1); } private void SaveEvents_AfterSave(object sender, EventArgs e) diff --git a/GeneralMods/StardustCore/NetCode/NetCoreObject.cs b/GeneralMods/StardustCore/NetCode/NetCoreObject.cs new file mode 100644 index 00000000..80e19a9c --- /dev/null +++ b/GeneralMods/StardustCore/NetCode/NetCoreObject.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.Serialization.Formatters.Binary; +using System.Text; +using System.Threading.Tasks; +using Netcode; +using StardustCore.UIUtilities; + +namespace StardustCore.NetCode +{ + class NetCoreObject : Netcode.NetField + { + + public NetTexture2DExtended texture; + public NetInt which; + public NetVector2 tilePos; + public NetInt InventoryMaxSize; + public NetRectangle sourceRect; + public NetRectangle boundingBox; + + public NetCoreObject() + { + + } + + public NetCoreObject(CoreObject value) : base(value) + { + } + + + protected override void ReadDelta(BinaryReader reader, NetVersion version) + { + texture = new NetTexture2DExtended(); + texture.Read(reader, version); + Value.setExtendedTexture(texture.Value); + + which = new NetInt(); + which.Read(reader, version); + Value.ParentSheetIndex = which.Value; + + tilePos = new NetVector2(); + tilePos.Read(reader, version); + Value.TileLocation = tilePos.Value; + + InventoryMaxSize = new NetInt(); + InventoryMaxSize.Read(reader, version); + Value.inventoryMaxSize = InventoryMaxSize.Value; + + sourceRect = new NetRectangle(); + sourceRect.Read(reader, version); + Value.sourceRect = sourceRect.Value; + + boundingBox = new NetRectangle(); + boundingBox.Read(reader, version); + Value.boundingBox.Value = boundingBox.Value; + } + + protected override void WriteDelta(BinaryWriter writer) + { + texture = new NetTexture2DExtended(Value.getExtendedTexture()); + texture.Write(writer); + + which = new NetInt(Value.ParentSheetIndex); + which.Write(writer); + + tilePos = new NetVector2(Value.TileLocation); + tilePos.Write(writer); + + InventoryMaxSize = new NetInt(Value.inventoryMaxSize); + InventoryMaxSize.Write(writer); + + sourceRect = new NetRectangle(Value.sourceRect); + sourceRect.Write(writer); + + boundingBox = new NetRectangle(Value.boundingBox.Value); + sourceRect.Write(writer); + } + } +} diff --git a/GeneralMods/StardustCore/NetCode/NetTexure2DExtended.cs b/GeneralMods/StardustCore/NetCode/NetTexure2DExtended.cs new file mode 100644 index 00000000..20cdba49 --- /dev/null +++ b/GeneralMods/StardustCore/NetCode/NetTexure2DExtended.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Netcode; +using StardewValley; +using StardustCore.UIUtilities; + +namespace StardustCore.NetCode +{ + public class NetTexture2DExtended : Netcode.NetField + { + + public string Name; + public Texture2D texture; + public string path; + public int width; + public int height; + + + public NetTexture2DExtended() + { + + } + + public NetTexture2DExtended(Texture2DExtended value) : base(value) + { + } + + protected override void ReadDelta(BinaryReader reader, NetVersion version) + { + int width = reader.ReadInt32(); + int height = reader.ReadInt32(); + Byte[] colorsOne = new byte[width*height*4]; + colorsOne = reader.ReadBytes(width*height*4); + texture = new Texture2D(Game1.graphics.GraphicsDevice,width,height); + texture.SetData(colorsOne); + + string Name = reader.ReadString(); + string path = reader.ReadString(); + + if (version.IsPriorityOver(this.ChangeVersion)) + { + this.CleanSet(new UIUtilities.Texture2DExtended(ModCore.ModHelper, path),true); + } + } + + protected override void WriteDelta(BinaryWriter writer) + { + + int size = base.Value.getTexture().Width * base.Value.getTexture().Height * 4; + writer.Write(base.Value.getTexture().Width); + writer.Write(base.Value.getTexture().Height); + //writer.Write(size); + texture = Value.getTexture(); + Byte[] colorsOne = new byte[size]; //The hard to read,1D array + texture.GetData(colorsOne); + writer.Write(colorsOne); + writer.Write(base.Value.Name); + writer.Write(base.Value.path); + } + + + } +} diff --git a/GeneralMods/StardustCore/Objects/CoreObject.cs b/GeneralMods/StardustCore/Objects/CoreObject.cs index c6ed6a00..feaadf7a 100644 --- a/GeneralMods/StardustCore/Objects/CoreObject.cs +++ b/GeneralMods/StardustCore/Objects/CoreObject.cs @@ -103,17 +103,21 @@ namespace StardustCore lightColor = Color.Black; thisType = this.GetType().ToString(); + + this.NetFields.AddField(new NetCode.NetCoreObject(this)); } public CoreObject() { this.updateDrawPosition(); + this.NetFields.AddField(new NetCode.NetCoreObject(this)); } public CoreObject(bool f) { //does nothng + this.NetFields.AddField(new NetCode.NetCoreObject(this)); } public CoreObject(Texture2DExtended texture,int which, Vector2 Tile, int InventoryMaxSize) @@ -1286,11 +1290,16 @@ namespace StardustCore { if (x == -1) { + //ERROR IS HERE?!?!?!?!? + if (TextureSheet == null) + { + ModCore.ModMonitor.Log("WHY IS EX TEXT NULL?????"); + } spriteBatch.Draw(TextureSheet.getTexture(), Game1.GlobalToLocal(Game1.viewport, this.drawPosition), new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, (this.Decoration_type == 12) ? 0f : ((float)(this.boundingBox.Bottom - 8) / 10000f)); } else { - spriteBatch.Draw(TextureSheet.getTexture(), Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(x * Game1.tileSize), (float)(y * Game1.tileSize - (this.sourceRect.Height * Game1.pixelZoom - this.boundingBox.Height)))), new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, (this.Decoration_type == 12) ? 0f : ((float)(this.boundingBox.Bottom - 8) / 10000f)); + spriteBatch.Draw(TextureSheet.getTexture(), Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(x * Game1.tileSize), (float)(y * Game1.tileSize))), new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, 0f); } if (this.heldObject.Value != null) { @@ -1492,6 +1501,11 @@ namespace StardustCore { return this.TextureSheet; } + + public virtual void setExtendedTexture(Texture2DExtended texture) + { + this.TextureSheet = texture; + } } } diff --git a/GeneralMods/StardustCore/Objects/MultiTileComponent.cs b/GeneralMods/StardustCore/Objects/MultiTileComponent.cs index 27a74cef..f9feb37a 100644 --- a/GeneralMods/StardustCore/Objects/MultiTileComponent.cs +++ b/GeneralMods/StardustCore/Objects/MultiTileComponent.cs @@ -15,6 +15,11 @@ namespace StardustCore.Objects //Pass in different function pointers that return bool to check if this default code will run. If not public MultiTileObject containerObject; + public MultiTileComponent() + { + //this.TextureSheet = new Texture2DExtended(); + this.NetFields.AddField(new NetCode.NetTexture2DExtended(this.getExtendedTexture())); + } public MultiTileComponent(CoreObject part) { @@ -28,6 +33,8 @@ namespace StardustCore.Objects } this.defaultBoundingBox = new Rectangle(0, 0, 16, 16); this.boundingBox.Value = new Rectangle((int)0 * Game1.tileSize, (int)0* Game1.tileSize, 1 * Game1.tileSize, 1 * Game1.tileSize); + + this.NetFields.AddField(new NetCode.NetTexture2DExtended(this.getExtendedTexture())); } public MultiTileComponent(int which,String name, String description, Texture2DExtended texture) @@ -44,6 +51,8 @@ namespace StardustCore.Objects this.defaultSourceRect = this.sourceRect; this.serializationName = this.GetType().ToString(); this.ParentSheetIndex = which; + + this.NetFields.AddField(new NetCode.NetTexture2DExtended(this.getExtendedTexture())); } public MultiTileComponent(int which,String name, String description, Animations.AnimationManager animationManager) @@ -61,6 +70,8 @@ namespace StardustCore.Objects this.defaultSourceRect = this.sourceRect; this.serializationName = this.GetType().ToString(); this.ParentSheetIndex = which; + + this.NetFields.AddField(new NetCode.NetTexture2DExtended(this.getExtendedTexture())); } public override bool clicked(Farmer who) @@ -148,6 +159,12 @@ namespace StardustCore.Objects //The actual planter box being drawn. if (animationManager == null) { + if (this.TextureSheet == null) + { + ModCore.ModMonitor.Log("Tex Extended is null???"); + + } + spriteBatch.Draw(this.TextureSheet.getTexture(), Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(x * Game1.tileSize), y * Game1.tileSize)), new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, 0); // Log.AsyncG("ANIMATION IS NULL?!?!?!?!"); } diff --git a/GeneralMods/StardustCore/Objects/MultiTileObject.cs b/GeneralMods/StardustCore/Objects/MultiTileObject.cs index 63085359..50642c70 100644 --- a/GeneralMods/StardustCore/Objects/MultiTileObject.cs +++ b/GeneralMods/StardustCore/Objects/MultiTileObject.cs @@ -4,7 +4,9 @@ using StardewValley; using StardustCore.UIUtilities; using System; using System.Collections.Generic; +using System.IO; using System.Linq; +using System.Runtime.Serialization.Formatters.Binary; using System.Text; using System.Threading.Tasks; @@ -16,6 +18,11 @@ namespace StardustCore.Objects public Color categoryColor; public String categoryName; + public MultiTileObject() + { + + } + public MultiTileObject(String Name, String Description,Vector2 tile, Texture2DExtended texture, List> Objects, Color CategoryColor, String CategoryName) :base(texture,0,tile,0) { this.objects = Objects; @@ -197,7 +204,7 @@ namespace StardustCore.Objects if (animationManager == null) { //FIX SCALE SIZE AND POSITION APPROPRIATELY DEPENDING ON # OF OBJECTS!!! - aosdkpoasdopjsa + //fsfsd spriteBatch.Draw(v.Value.getExtendedTexture().getTexture(), location+new Vector2(v.Key.X*16,v.Key.Y*16), this.defaultSourceRect, Color.White * transparency, 0f, new Vector2(0, 0), 1, SpriteEffects.None, layerDepth); } else diff --git a/GeneralMods/StardustCore/StardustCore.csproj b/GeneralMods/StardustCore/StardustCore.csproj index 7e5f69b9..fd8c09bd 100644 --- a/GeneralMods/StardustCore/StardustCore.csproj +++ b/GeneralMods/StardustCore/StardustCore.csproj @@ -89,6 +89,8 @@ + + diff --git a/GeneralMods/TimeFreeze/TimeFreeze.cs b/GeneralMods/TimeFreeze/TimeFreeze.cs index 5c41ca5a..1d0a7964 100644 --- a/GeneralMods/TimeFreeze/TimeFreeze.cs +++ b/GeneralMods/TimeFreeze/TimeFreeze.cs @@ -49,7 +49,7 @@ namespace Omegasis.TimeFreeze /// The location to check. private bool ShouldFreezeTime(StardewValley.Farmer player, GameLocation location) { - if (location.Name == "Mine" || location.Name == "SkullCave" || location.Name == "UndergroundMine" || location.IsOutdoors) + if (location.Name == "Mine" || location.Name == "SkullCave"|| location.Name.StartsWith("SkullCave") || location.Name.StartsWith("UndergroundMine") || location.IsOutdoors) return false; if (player.swimming.Value) { diff --git a/GeneralMods/TimeFreeze/manifest.json b/GeneralMods/TimeFreeze/manifest.json index 0352e8f2..d79ba422 100644 --- a/GeneralMods/TimeFreeze/manifest.json +++ b/GeneralMods/TimeFreeze/manifest.json @@ -1,7 +1,7 @@ { "Name": "Time Freeze", "Author": "Alpha_Omegasis", - "Version": "1.3.0", + "Version": "1.4.0", "Description": "Emulates old Harvest Moon-style games where time is frozen inside.", "UniqueID": "Omegasis.TimeFreeze", "EntryDll": "TimeFreeze.dll", From 2276faa610b3704cefb88ecf796f36d0d75498a8 Mon Sep 17 00:00:00 2001 From: Date: Mon, 6 Aug 2018 20:01:59 -0700 Subject: [PATCH 032/110] Wrote netcode to support Animations, AnimationManagers, and CoreObjects. --- .../StardustCore/Animations/Animation.cs | 27 +++--- .../Animations/AnimationManager.cs | 39 +++++++- GeneralMods/StardustCore/ModCore.cs | 2 + .../StardustCore/NetCode/NetAnimation.cs | 55 +++++++++++ .../NetCode/NetAnimationManager.cs | 94 +++++++++++++++++++ .../StardustCore/NetCode/NetCoreObject.cs | 59 +++++++++++- .../StardustCore/NetCode/NetKeyValuePair.cs | 24 +++++ .../StardustCore/Objects/CoreObject.cs | 6 -- .../Objects/MultiTileComponent.cs | 1 - .../StardustCore/Objects/MultiTileObject.cs | 2 - .../Serialization/Serialization.cs | 4 +- GeneralMods/StardustCore/StardustCore.csproj | 7 ++ 12 files changed, 290 insertions(+), 30 deletions(-) create mode 100644 GeneralMods/StardustCore/NetCode/NetAnimation.cs create mode 100644 GeneralMods/StardustCore/NetCode/NetAnimationManager.cs create mode 100644 GeneralMods/StardustCore/NetCode/NetKeyValuePair.cs diff --git a/GeneralMods/StardustCore/Animations/Animation.cs b/GeneralMods/StardustCore/Animations/Animation.cs index 58fb17c4..04f2561e 100644 --- a/GeneralMods/StardustCore/Animations/Animation.cs +++ b/GeneralMods/StardustCore/Animations/Animation.cs @@ -1,9 +1,11 @@ using Microsoft.Xna.Framework; +using Netcode; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Xml.Serialization; namespace StardustCore.Animations { @@ -12,18 +14,21 @@ namespace StardustCore.Animations /// public class Animation { - /// - /// The source rectangle on the texture to display. - /// + /// + /// The source rectangle on the texture to display. + /// public Rectangle sourceRectangle; - /// - /// The duration of the frame in length. - /// - public readonly int frameDuration; - /// - /// The duration until the next frame. - /// - public int frameCountUntilNextAnimation; + /// + /// The duration of the frame in length. + /// + public int frameDuration; + /// + /// The duration until the next frame. + /// + public int frameCountUntilNextAnimation; + + [XmlIgnore] + public NetFields NetFields { get; } = new NetFields(); diff --git a/GeneralMods/StardustCore/Animations/AnimationManager.cs b/GeneralMods/StardustCore/Animations/AnimationManager.cs index dfcb03b2..a93d818e 100644 --- a/GeneralMods/StardustCore/Animations/AnimationManager.cs +++ b/GeneralMods/StardustCore/Animations/AnimationManager.cs @@ -16,15 +16,17 @@ namespace StardustCore.Animations /// public class AnimationManager { - public Dictionary> animations = new Dictionary>(); + public Dictionary> animations = new SerializableDictionary>(); public string currentAnimationName; public int currentAnimationListIndex; public List currentAnimationList = new List(); private Texture2DExtended objectTexture; ///Might not be necessary if I use the CoreObject texture sheet. public Animation defaultDrawFrame; public Animation currentAnimation; - bool enabled; + public bool enabled; + + public string animationDataString; /// /// Constructor for Animation Manager class. /// @@ -38,16 +40,19 @@ namespace StardustCore.Animations this.defaultDrawFrame = DefaultFrame; this.enabled = EnabledByDefault; currentAnimation = this.defaultDrawFrame; + this.currentAnimationName = ""; + this.animationDataString = ""; } - public AnimationManager(Texture2DExtended ObjectTexture,Animation DefaultFrame ,Dictionary> animationsToPlay, string startingAnimationKey, int startingAnimationFrame=0,bool EnabledByDefault=true) + public AnimationManager(Texture2DExtended ObjectTexture,Animation DefaultFrame ,string animationString, string startingAnimationKey, int startingAnimationFrame=0,bool EnabledByDefault=true) { currentAnimationListIndex = 0; this.objectTexture = ObjectTexture; this.defaultDrawFrame = DefaultFrame; this.enabled = EnabledByDefault; - this.animations = animationsToPlay; + this.animationDataString = animationString; + this.animations = parseAnimationsFromXNB(animationString); bool f = animations.TryGetValue(startingAnimationKey, out currentAnimationList); if (f == true) { setAnimation(startingAnimationKey, startingAnimationFrame); @@ -55,6 +60,22 @@ namespace StardustCore.Animations else currentAnimation = this.defaultDrawFrame; } + public AnimationManager(Texture2DExtended ObjectTexture, Animation DefaultFrame, Dictionary> animationString, string startingAnimationKey, int startingAnimationFrame = 0, bool EnabledByDefault = true) + { + currentAnimationListIndex = 0; + this.objectTexture = ObjectTexture; + this.defaultDrawFrame = DefaultFrame; + this.enabled = EnabledByDefault; + + this.animations = animationString; + bool f = animations.TryGetValue(startingAnimationKey, out currentAnimationList); + if (f == true) + { + setAnimation(startingAnimationKey, startingAnimationFrame); + } + else currentAnimation = this.defaultDrawFrame; + } + /// /// Update the animation frame once after drawing the object. /// @@ -223,6 +244,16 @@ namespace StardustCore.Animations return this.objectTexture; } + public void setExtendedTexture(Texture2DExtended texture) + { + this.objectTexture = texture; + } + + public void setEnabled(bool enabled) + { + this.enabled = enabled; + } + public Texture2D getTexture() { return this.objectTexture.getTexture(); diff --git a/GeneralMods/StardustCore/ModCore.cs b/GeneralMods/StardustCore/ModCore.cs index babdddac..56298683 100644 --- a/GeneralMods/StardustCore/ModCore.cs +++ b/GeneralMods/StardustCore/ModCore.cs @@ -78,6 +78,8 @@ namespace StardustCore tile1.Name = "test"; tile1.displayName = "test"; Game1.player.addItemToInventory(tile1); + + } private void SaveEvents_AfterSave(object sender, EventArgs e) diff --git a/GeneralMods/StardustCore/NetCode/NetAnimation.cs b/GeneralMods/StardustCore/NetCode/NetAnimation.cs new file mode 100644 index 00000000..74e44e55 --- /dev/null +++ b/GeneralMods/StardustCore/NetCode/NetAnimation.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Netcode; + +namespace StardustCore.NetCode +{ + public class NetAnimation : Netcode.NetField + { + + public NetRectangle sourceRect; + public NetInt frameDuration; + public NetInt frameDurationUntilNextAnimation; + + public NetAnimation() + { + + } + public NetAnimation(Animations.Animation animation) : base(animation) + { + + } + + + protected override void ReadDelta(BinaryReader reader, NetVersion version) + { + sourceRect = new NetRectangle(); + sourceRect.Read(reader, version); + Value.sourceRectangle = sourceRect.Value; + + frameDuration = new NetInt(); + frameDuration.Read(reader, version); + Value.frameDuration = frameDuration.Value; + + frameDurationUntilNextAnimation = new NetInt(); + frameDurationUntilNextAnimation.Read(reader, version); + Value.frameDuration = frameDuration.Value; + } + + protected override void WriteDelta(BinaryWriter writer) + { + sourceRect = new NetRectangle(Value.sourceRectangle); + sourceRect.Write(writer); + + frameDuration = new NetInt(Value.frameDuration); + frameDuration.Write(writer); + + frameDurationUntilNextAnimation = new NetInt(Value.frameCountUntilNextAnimation); + frameDurationUntilNextAnimation.Write(writer); + } + } +} diff --git a/GeneralMods/StardustCore/NetCode/NetAnimationManager.cs b/GeneralMods/StardustCore/NetCode/NetAnimationManager.cs new file mode 100644 index 00000000..2b15bca4 --- /dev/null +++ b/GeneralMods/StardustCore/NetCode/NetAnimationManager.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Netcode; +using StardewValley; +using StardewValley.Network; + +namespace StardustCore.NetCode +{ + public class NetAnimationManager : Netcode.NetField + { + + public NetAnimationManager() + { + + } + + public NetAnimationManager(Animations.AnimationManager manager): base(manager) + { + + } + + public NetString currentAnimationName; + public NetInt currentAnimationListIndex; + public NetTexture2DExtended objectTexture; + public NetAnimation defaultDrawFrame; + public NetBool enabled; + public NetString animationDataString; + + protected override void ReadDelta(BinaryReader reader, NetVersion version) + { + NetString currentAnimationName = new NetString(); + currentAnimationName.Read(reader, version); + + NetInt currentIndex = new NetInt(); + currentIndex.Read(reader, version); + + NetTexture2DExtended text = new NetTexture2DExtended(); + text.Read(reader, version); + + NetAnimation defaultAnimation = new NetAnimation(); + defaultAnimation.Read(reader, version); + + NetBool enabled = new NetBool(); + enabled.Read(reader, version); + + NetString data = new NetString(); + data.Read(reader, version); + + Value.setExtendedTexture(text.Value); + Value.defaultDrawFrame = defaultAnimation.Value; + Value.enabled = enabled.Value; + //Try and prevent unnecessary parsing. + if (Value.animations == null && !String.IsNullOrEmpty(Value.animationDataString)) + { + Value.animations = Animations.AnimationManager.parseAnimationsFromXNB(data.Value); + } + if (!String.IsNullOrEmpty(data.Value)) + { + Value.setAnimation(currentAnimationName.Value, currentIndex.Value); + } + else + { + Value.currentAnimation = defaultDrawFrame.Value; + } + } + + protected override void WriteDelta(BinaryWriter writer) + { + NetString curentAnimationName = new NetString(Value.currentAnimationName); + currentAnimationName.Write(writer); + + + NetInt currentAnimationListIndex = new NetInt(Value.currentAnimationListIndex); + currentAnimationListIndex.Write(writer); + + NetTexture2DExtended texture = new NetTexture2DExtended(Value.getExtendedTexture()); + texture.Write(writer); + + NetAnimation defaultDrawFrame = new NetAnimation(Value.defaultDrawFrame); + defaultDrawFrame.Write(writer); + + NetBool enabled = new NetBool(Value.enabled); + enabled.Write(writer); + + NetString animationData = new NetString(Value.animationDataString); + animationData.Write(writer); + + } + } +} diff --git a/GeneralMods/StardustCore/NetCode/NetCoreObject.cs b/GeneralMods/StardustCore/NetCode/NetCoreObject.cs index 80e19a9c..5630514e 100644 --- a/GeneralMods/StardustCore/NetCode/NetCoreObject.cs +++ b/GeneralMods/StardustCore/NetCode/NetCoreObject.cs @@ -6,19 +6,53 @@ using System.Runtime.Serialization.Formatters.Binary; using System.Text; using System.Threading.Tasks; using Netcode; +using StardewValley; using StardustCore.UIUtilities; namespace StardustCore.NetCode { - class NetCoreObject : Netcode.NetField + public class NetCoreObject : Netcode.NetField { - public NetTexture2DExtended texture; + public NetInt which; public NetVector2 tilePos; - public NetInt InventoryMaxSize; - public NetRectangle sourceRect; + + public NetRectangle boundingBox; + + + + public NetVector2 position; + public NetInt Decoration_type; + public NetInt rotations; + public NetInt currentRotation; + public NetInt sourceIndexOffset; + public NetVector2 drawPosition; + public NetRectangle sourceRect; + public NetRectangle defaultSourceRect; + public NetRectangle defaultBoundingBox; + public NetString description; + public NetTexture2DExtended texture; + public NetBool flipped; + public NetBool flaggedForPickup; + public NetBool lightGlowAdded; + public NetObjectList inventory; + public NetInt InventoryMaxSize; + public NetBool itemReadyForHarvest; + public NetBool lightsOn; + public NetString locationName; + public NetColor lightColor; + public NetBool removable; + public NetColor drawColor; + public NetBool useXML; + public NetString serializationName; + + //Animation Manager..... + public NetAnimationManager animationManager; + + + public NetCoreObject() { @@ -55,6 +89,14 @@ namespace StardustCore.NetCode boundingBox = new NetRectangle(); boundingBox.Read(reader, version); Value.boundingBox.Value = boundingBox.Value; + + drawPosition = new NetVector2(); + drawPosition.Read(reader, version); + Value.drawPosition = drawPosition.Value; + + animationManager = new NetAnimationManager(); + animationManager.Read(reader, version); + Value.animationManager = animationManager.Value; } protected override void WriteDelta(BinaryWriter writer) @@ -76,6 +118,15 @@ namespace StardustCore.NetCode boundingBox = new NetRectangle(Value.boundingBox.Value); sourceRect.Write(writer); + + drawPosition = new NetVector2(Value.drawPosition); + drawPosition.Write(writer); + + if (Value.animationManager != null) + { + animationManager = new NetAnimationManager(Value.animationManager); + animationManager.Write(writer); + } } } } diff --git a/GeneralMods/StardustCore/NetCode/NetKeyValuePair.cs b/GeneralMods/StardustCore/NetCode/NetKeyValuePair.cs new file mode 100644 index 00000000..cd017001 --- /dev/null +++ b/GeneralMods/StardustCore/NetCode/NetKeyValuePair.cs @@ -0,0 +1,24 @@ +using Netcode; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StardustCore.NetCode +{ + public class NetKeyValuePair : NetField, NetKeyValuePair> where KField : NetField, new() where VField : NetField, new() + { + + protected override void ReadDelta(BinaryReader reader, NetVersion version) + { + throw new NotImplementedException(); + } + + protected override void WriteDelta(BinaryWriter writer) + { + throw new NotImplementedException(); + } + } +} diff --git a/GeneralMods/StardustCore/Objects/CoreObject.cs b/GeneralMods/StardustCore/Objects/CoreObject.cs index feaadf7a..9e7cc33f 100644 --- a/GeneralMods/StardustCore/Objects/CoreObject.cs +++ b/GeneralMods/StardustCore/Objects/CoreObject.cs @@ -51,8 +51,6 @@ namespace StardustCore public bool lightGlowAdded; - public string texturePath; - public List inventory; public int inventoryMaxSize; @@ -65,8 +63,6 @@ namespace StardustCore public Color lightColor; - public string thisType; - public bool removable; public string locationsName; @@ -102,7 +98,6 @@ namespace StardustCore lightsOn = false; lightColor = Color.Black; - thisType = this.GetType().ToString(); this.NetFields.AddField(new NetCode.NetCoreObject(this)); @@ -126,7 +121,6 @@ namespace StardustCore if (TextureSheet == null) { TextureSheet = texture; - this.texturePath = texture.path; } Dictionary dictionary = Game1.content.Load>("Data\\Furniture"); string[] array = dictionary[which].Split(new char[] diff --git a/GeneralMods/StardustCore/Objects/MultiTileComponent.cs b/GeneralMods/StardustCore/Objects/MultiTileComponent.cs index f9feb37a..ddce05ac 100644 --- a/GeneralMods/StardustCore/Objects/MultiTileComponent.cs +++ b/GeneralMods/StardustCore/Objects/MultiTileComponent.cs @@ -26,7 +26,6 @@ namespace StardustCore.Objects this.name = part.name; this.description = part.description; this.TextureSheet = part.getExtendedTexture(); - this.texturePath = this.TextureSheet.path; if (part.animationManager != null) { this.animationManager = part.animationManager; diff --git a/GeneralMods/StardustCore/Objects/MultiTileObject.cs b/GeneralMods/StardustCore/Objects/MultiTileObject.cs index 50642c70..2700b10c 100644 --- a/GeneralMods/StardustCore/Objects/MultiTileObject.cs +++ b/GeneralMods/StardustCore/Objects/MultiTileObject.cs @@ -27,7 +27,6 @@ namespace StardustCore.Objects { this.objects = Objects; this.TextureSheet = texture; - this.texturePath = texture.path; this.categoryColor = CategoryColor; this.categoryName = CategoryName; this.name = Name; @@ -51,7 +50,6 @@ namespace StardustCore.Objects this.animationManager = animationManager; this.objects = Objects; this.TextureSheet =animationManager.getExtendedTexture(); - this.texturePath = animationManager.getExtendedTexture().path; this.name = Name; this.displayName = Name; this.description = Description; diff --git a/GeneralMods/StardustCore/Serialization/Serialization.cs b/GeneralMods/StardustCore/Serialization/Serialization.cs index f59e351b..3d50ec25 100644 --- a/GeneralMods/StardustCore/Serialization/Serialization.cs +++ b/GeneralMods/StardustCore/Serialization/Serialization.cs @@ -390,7 +390,7 @@ namespace StardustCore.Serialization { //THE ERROR LIES HERE AS IT THINKS IT CAN TRY TO BE A CORE OBJECT WHEN IT IS NOT!!!! CoreObject core_obj = StardustCore.ModCore.ModHelper.ReadJsonFile(path); //FIND A WAY TO FIX THIS!!!! - type = (core_obj as CoreObject).thisType; + type = (core_obj as CoreObject).serializationName; //ModCore.ModMonitor.Log("UMM THIS CAN't BE RIGHT 1" + type); } @@ -705,7 +705,7 @@ namespace StardustCore.Serialization { //THE ERROR LIES HERE AS IT THINKS IT CAN TRY TO BE A CORE OBJECT WHEN IT IS NOT!!!! CoreObject core_obj = StardustCore.ModCore.ModHelper.ReadJsonFile(path); //FIND A WAY TO FIX THIS!!!! - type = (core_obj as CoreObject).thisType; + type = (core_obj as CoreObject).serializationName; //ModCore.ModMonitor.Log("UMM THIS CAN't BE RIGHT 1" + type); } diff --git a/GeneralMods/StardustCore/StardustCore.csproj b/GeneralMods/StardustCore/StardustCore.csproj index fd8c09bd..7fb4df71 100644 --- a/GeneralMods/StardustCore/StardustCore.csproj +++ b/GeneralMods/StardustCore/StardustCore.csproj @@ -89,7 +89,10 @@ + + + @@ -439,6 +442,10 @@ PreserveNewest + + + + From 9c070e91c5fe774dc2f53ed739702bb3d54e553c Mon Sep 17 00:00:00 2001 From: Date: Tue, 7 Aug 2018 10:07:33 -0700 Subject: [PATCH 033/110] Either rewrite multiplayer or erase all objects before players join. --- GeneralMods/StardustCore/ModCore.cs | 29 +- .../NetCode/Graphics/NetAnimation.cs | 55 + .../NetCode/Graphics/NetAnimationManager.cs | 94 + .../NetCode/Graphics/NetTexure2DExtended.cs | 143 ++ .../StardustCore/NetCode/NetAnimation.cs | 55 + .../NetCode/NetAnimationManager.cs | 94 + .../StardustCore/NetCode/NetCoreObject.cs | 8 +- .../StardustCore/NetCode/NetKeyValuePair.cs | 24 + .../NetPairs/NetVector2MultiTilePair.cs | 36 + .../NetCode/NetTexure2DExtended.cs | 103 +- .../NetCode/Objects/NetCoreObject.cs | 133 ++ .../NetCode/Objects/NetMultiTileComponent.cs | 114 + .../NetCode/Objects/NetMultiTileObject.cs | 63 + .../StardustCore/Objects/CoreObject.cs | 351 +--- .../UIUtilities/Texture2DExtended.cs | 5 + da[lda | 1847 +++++++++++++++++ 16 files changed, 2808 insertions(+), 346 deletions(-) create mode 100644 GeneralMods/StardustCore/NetCode/Graphics/NetAnimation.cs create mode 100644 GeneralMods/StardustCore/NetCode/Graphics/NetAnimationManager.cs create mode 100644 GeneralMods/StardustCore/NetCode/Graphics/NetTexure2DExtended.cs create mode 100644 GeneralMods/StardustCore/NetCode/NetAnimation.cs create mode 100644 GeneralMods/StardustCore/NetCode/NetAnimationManager.cs create mode 100644 GeneralMods/StardustCore/NetCode/NetKeyValuePair.cs create mode 100644 GeneralMods/StardustCore/NetCode/NetPairs/NetVector2MultiTilePair.cs create mode 100644 GeneralMods/StardustCore/NetCode/Objects/NetCoreObject.cs create mode 100644 GeneralMods/StardustCore/NetCode/Objects/NetMultiTileComponent.cs create mode 100644 GeneralMods/StardustCore/NetCode/Objects/NetMultiTileObject.cs create mode 100644 da[lda diff --git a/GeneralMods/StardustCore/ModCore.cs b/GeneralMods/StardustCore/ModCore.cs index babdddac..2008f0b5 100644 --- a/GeneralMods/StardustCore/ModCore.cs +++ b/GeneralMods/StardustCore/ModCore.cs @@ -51,14 +51,35 @@ namespace StardustCore SerializationManager.initializeDefaultSuportedTypes(); TextureManager = new TextureManager(); - - + + + StardewModdingAPI.Events.ControlEvents.KeyPressed += ControlEvents_KeyPressed; + + + StardewModdingAPI.Events.GameEvents.UpdateTick += GameEvents_UpdateTick; } - + private void GameEvents_UpdateTick(object sender, EventArgs e) + { + + + } + + private void ControlEvents_KeyPressed(object sender, StardewModdingAPI.Events.EventArgsKeyPressed e) + { + if (e.KeyPressed == Keys.V) + { + CoreObject tile1 = new CoreObject(new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png")), 3, Vector2.Zero, 9); + tile1.description = "Hello"; + tile1.Name = "test"; + tile1.displayName = "test"; + Game1.player.addItemToInventory(tile1); + } + } private void SaveEvents_AfterLoad(object sender, EventArgs e) { + SerializationManager.restoreAllModObjects(SerializationManager.trackedObjectList); List> objs = new List>(); /* @@ -73,7 +94,7 @@ namespace StardustCore */ // Game1.player.addItemToInventory(collection); - CoreObject tile1 = new CoreObject(new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png")),0, Vector2.Zero,9); + CoreObject tile1 = new CoreObject(new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png")),3, Vector2.Zero,9); tile1.description = "Hello"; tile1.Name = "test"; tile1.displayName = "test"; diff --git a/GeneralMods/StardustCore/NetCode/Graphics/NetAnimation.cs b/GeneralMods/StardustCore/NetCode/Graphics/NetAnimation.cs new file mode 100644 index 00000000..c10a8fb5 --- /dev/null +++ b/GeneralMods/StardustCore/NetCode/Graphics/NetAnimation.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Netcode; + +namespace StardustCore.NetCode.Graphics +{ + public class NetAnimation : Netcode.NetField + { + + public NetRectangle sourceRect; + public NetInt frameDuration; + public NetInt frameDurationUntilNextAnimation; + + public NetAnimation() + { + + } + public NetAnimation(Animations.Animation animation) : base(animation) + { + + } + + + protected override void ReadDelta(BinaryReader reader, NetVersion version) + { + sourceRect = new NetRectangle(); + sourceRect.Read(reader, version); + Value.sourceRectangle = sourceRect.Value; + + frameDuration = new NetInt(); + frameDuration.Read(reader, version); + Value.frameDuration = frameDuration.Value; + + frameDurationUntilNextAnimation = new NetInt(); + frameDurationUntilNextAnimation.Read(reader, version); + Value.frameDuration = frameDuration.Value; + } + + protected override void WriteDelta(BinaryWriter writer) + { + sourceRect = new NetRectangle(Value.sourceRectangle); + sourceRect.Write(writer); + + frameDuration = new NetInt(Value.frameDuration); + frameDuration.Write(writer); + + frameDurationUntilNextAnimation = new NetInt(Value.frameCountUntilNextAnimation); + frameDurationUntilNextAnimation.Write(writer); + } + } +} diff --git a/GeneralMods/StardustCore/NetCode/Graphics/NetAnimationManager.cs b/GeneralMods/StardustCore/NetCode/Graphics/NetAnimationManager.cs new file mode 100644 index 00000000..7ca7d234 --- /dev/null +++ b/GeneralMods/StardustCore/NetCode/Graphics/NetAnimationManager.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Netcode; +using StardewValley; +using StardewValley.Network; + +namespace StardustCore.NetCode.Graphics +{ + public class NetAnimationManager : Netcode.NetField + { + + public NetAnimationManager() + { + + } + + public NetAnimationManager(Animations.AnimationManager manager): base(manager) + { + + } + + public NetString currentAnimationName; + public NetInt currentAnimationListIndex; + public NetTexture2DExtended objectTexture; + public NetAnimation defaultDrawFrame; + public NetBool enabled; + public NetString animationDataString; + + protected override void ReadDelta(BinaryReader reader, NetVersion version) + { + NetString currentAnimationName = new NetString(); + currentAnimationName.Read(reader, version); + + NetInt currentIndex = new NetInt(); + currentIndex.Read(reader, version); + + NetTexture2DExtended text = new NetTexture2DExtended(); + text.Read(reader, version); + + NetAnimation defaultAnimation = new NetAnimation(); + defaultAnimation.Read(reader, version); + + NetBool enabled = new NetBool(); + enabled.Read(reader, version); + + NetString data = new NetString(); + data.Read(reader, version); + + Value.setExtendedTexture(text.Value); + Value.defaultDrawFrame = defaultAnimation.Value; + Value.enabled = enabled.Value; + //Try and prevent unnecessary parsing. + if (Value.animations == null && !String.IsNullOrEmpty(Value.animationDataString)) + { + Value.animations = Animations.AnimationManager.parseAnimationsFromXNB(data.Value); + } + if (!String.IsNullOrEmpty(data.Value)) + { + Value.setAnimation(currentAnimationName.Value, currentIndex.Value); + } + else + { + Value.currentAnimation = defaultDrawFrame.Value; + } + } + + protected override void WriteDelta(BinaryWriter writer) + { + NetString curentAnimationName = new NetString(Value.currentAnimationName); + currentAnimationName.Write(writer); + + + NetInt currentAnimationListIndex = new NetInt(Value.currentAnimationListIndex); + currentAnimationListIndex.Write(writer); + + NetTexture2DExtended texture = new NetTexture2DExtended(Value.getExtendedTexture()); + texture.Write(writer); + + NetAnimation defaultDrawFrame = new NetAnimation(Value.defaultDrawFrame); + defaultDrawFrame.Write(writer); + + NetBool enabled = new NetBool(Value.enabled); + enabled.Write(writer); + + NetString animationData = new NetString(Value.animationDataString); + animationData.Write(writer); + + } + } +} diff --git a/GeneralMods/StardustCore/NetCode/Graphics/NetTexure2DExtended.cs b/GeneralMods/StardustCore/NetCode/Graphics/NetTexure2DExtended.cs new file mode 100644 index 00000000..14830335 --- /dev/null +++ b/GeneralMods/StardustCore/NetCode/Graphics/NetTexure2DExtended.cs @@ -0,0 +1,143 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Netcode; +using StardewValley; +using StardustCore.UIUtilities; + +namespace StardustCore.NetCode.Graphics +{ + /* + public class NetTexture2DExtended : Netcode.NetField + { + + public string Name; + public Texture2D texture; + public string path; + + + public NetTexture2DExtended() + { + + } + + public NetTexture2DExtended(Texture2DExtended value) : base(value) + { + } + + public void ReadData(BinaryReader reader,NetVersion version) + { + ReadDelta(reader, version); + } + + public void WriteData(BinaryWriter writer) + { + WriteDelta(writer); + } + + protected override void ReadDelta(BinaryReader reader, NetVersion version) + { + /* + int width = reader.ReadInt32(); + int height = reader.ReadInt32(); + Byte[] colorsOne = new byte[width*height*4]; + colorsOne = reader.ReadBytes(width*height*4); + texture = new Texture2D(Game1.graphics.GraphicsDevice,width,height); + texture.SetData(colorsOne); + + + string Name = reader.ReadString(); + string path = reader.ReadString(); + string modID = reader.ReadString(); + Value.Name = Name; + Value.path = path; + Value.ModID = modID; + Value.setTexture(ModCore.getTextureFromManager(Value.ModID, Value.Name).getTexture()); + } + + protected override void WriteDelta(BinaryWriter writer) + { + /* + + int size = base.Value.getTexture().Width * base.Value.getTexture().Height * 4; + writer.Write(base.Value.getTexture().Width); + writer.Write(base.Value.getTexture().Height); + //writer.Write(size); + texture = Value.getTexture(); + Byte[] colorsOne = new byte[size]; //The hard to read,1D array + texture.GetData(colorsOne); + writer.Write(colorsOne); + + NetString name = new NetString(Value.Name); + name.Write(writer); + + NetString path = new NetString(Value.path); + path.Write(writer); + + NetString id = new NetString(Value.ModID); + id.Write(writer); + } + + + }*/ + + public class NetTexture2DExtended : Netcode.NetField + { + + public string Name; + public Texture2D texture; + public string path; + public int width; + public int height; + + + public NetTexture2DExtended() + { + + } + + public NetTexture2DExtended(Texture2DExtended value) : base(value) + { + } + + protected override void ReadDelta(BinaryReader reader, NetVersion version) + { + int width = reader.ReadInt32(); + int height = reader.ReadInt32(); + Byte[] colorsOne = new byte[width * height * 4]; + colorsOne = reader.ReadBytes(width * height * 4); + texture = new Texture2D(Game1.graphics.GraphicsDevice, width, height); + texture.SetData(colorsOne); + + string Name = reader.ReadString(); + string path = reader.ReadString(); + + if (version.IsPriorityOver(this.ChangeVersion)) + { + this.CleanSet(new UIUtilities.Texture2DExtended(ModCore.ModHelper,ModCore.Manifest, path), true); + } + } + + protected override void WriteDelta(BinaryWriter writer) + { + + int size = base.Value.getTexture().Width * base.Value.getTexture().Height * 4; + writer.Write(base.Value.getTexture().Width); + writer.Write(base.Value.getTexture().Height); + //writer.Write(size); + texture = Value.getTexture(); + Byte[] colorsOne = new byte[size]; //The hard to read,1D array + texture.GetData(colorsOne); + writer.Write(colorsOne); + writer.Write(base.Value.Name); + writer.Write(base.Value.path); + } + + + } +} diff --git a/GeneralMods/StardustCore/NetCode/NetAnimation.cs b/GeneralMods/StardustCore/NetCode/NetAnimation.cs new file mode 100644 index 00000000..74e44e55 --- /dev/null +++ b/GeneralMods/StardustCore/NetCode/NetAnimation.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Netcode; + +namespace StardustCore.NetCode +{ + public class NetAnimation : Netcode.NetField + { + + public NetRectangle sourceRect; + public NetInt frameDuration; + public NetInt frameDurationUntilNextAnimation; + + public NetAnimation() + { + + } + public NetAnimation(Animations.Animation animation) : base(animation) + { + + } + + + protected override void ReadDelta(BinaryReader reader, NetVersion version) + { + sourceRect = new NetRectangle(); + sourceRect.Read(reader, version); + Value.sourceRectangle = sourceRect.Value; + + frameDuration = new NetInt(); + frameDuration.Read(reader, version); + Value.frameDuration = frameDuration.Value; + + frameDurationUntilNextAnimation = new NetInt(); + frameDurationUntilNextAnimation.Read(reader, version); + Value.frameDuration = frameDuration.Value; + } + + protected override void WriteDelta(BinaryWriter writer) + { + sourceRect = new NetRectangle(Value.sourceRectangle); + sourceRect.Write(writer); + + frameDuration = new NetInt(Value.frameDuration); + frameDuration.Write(writer); + + frameDurationUntilNextAnimation = new NetInt(Value.frameCountUntilNextAnimation); + frameDurationUntilNextAnimation.Write(writer); + } + } +} diff --git a/GeneralMods/StardustCore/NetCode/NetAnimationManager.cs b/GeneralMods/StardustCore/NetCode/NetAnimationManager.cs new file mode 100644 index 00000000..2b15bca4 --- /dev/null +++ b/GeneralMods/StardustCore/NetCode/NetAnimationManager.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Netcode; +using StardewValley; +using StardewValley.Network; + +namespace StardustCore.NetCode +{ + public class NetAnimationManager : Netcode.NetField + { + + public NetAnimationManager() + { + + } + + public NetAnimationManager(Animations.AnimationManager manager): base(manager) + { + + } + + public NetString currentAnimationName; + public NetInt currentAnimationListIndex; + public NetTexture2DExtended objectTexture; + public NetAnimation defaultDrawFrame; + public NetBool enabled; + public NetString animationDataString; + + protected override void ReadDelta(BinaryReader reader, NetVersion version) + { + NetString currentAnimationName = new NetString(); + currentAnimationName.Read(reader, version); + + NetInt currentIndex = new NetInt(); + currentIndex.Read(reader, version); + + NetTexture2DExtended text = new NetTexture2DExtended(); + text.Read(reader, version); + + NetAnimation defaultAnimation = new NetAnimation(); + defaultAnimation.Read(reader, version); + + NetBool enabled = new NetBool(); + enabled.Read(reader, version); + + NetString data = new NetString(); + data.Read(reader, version); + + Value.setExtendedTexture(text.Value); + Value.defaultDrawFrame = defaultAnimation.Value; + Value.enabled = enabled.Value; + //Try and prevent unnecessary parsing. + if (Value.animations == null && !String.IsNullOrEmpty(Value.animationDataString)) + { + Value.animations = Animations.AnimationManager.parseAnimationsFromXNB(data.Value); + } + if (!String.IsNullOrEmpty(data.Value)) + { + Value.setAnimation(currentAnimationName.Value, currentIndex.Value); + } + else + { + Value.currentAnimation = defaultDrawFrame.Value; + } + } + + protected override void WriteDelta(BinaryWriter writer) + { + NetString curentAnimationName = new NetString(Value.currentAnimationName); + currentAnimationName.Write(writer); + + + NetInt currentAnimationListIndex = new NetInt(Value.currentAnimationListIndex); + currentAnimationListIndex.Write(writer); + + NetTexture2DExtended texture = new NetTexture2DExtended(Value.getExtendedTexture()); + texture.Write(writer); + + NetAnimation defaultDrawFrame = new NetAnimation(Value.defaultDrawFrame); + defaultDrawFrame.Write(writer); + + NetBool enabled = new NetBool(Value.enabled); + enabled.Write(writer); + + NetString animationData = new NetString(Value.animationDataString); + animationData.Write(writer); + + } + } +} diff --git a/GeneralMods/StardustCore/NetCode/NetCoreObject.cs b/GeneralMods/StardustCore/NetCode/NetCoreObject.cs index 80e19a9c..653102fe 100644 --- a/GeneralMods/StardustCore/NetCode/NetCoreObject.cs +++ b/GeneralMods/StardustCore/NetCode/NetCoreObject.cs @@ -32,8 +32,9 @@ namespace StardustCore.NetCode protected override void ReadDelta(BinaryReader reader, NetVersion version) { + texture = new NetTexture2DExtended(); - texture.Read(reader, version); + texture.ReadFull(reader, version); Value.setExtendedTexture(texture.Value); which = new NetInt(); @@ -55,12 +56,14 @@ namespace StardustCore.NetCode boundingBox = new NetRectangle(); boundingBox.Read(reader, version); Value.boundingBox.Value = boundingBox.Value; + } protected override void WriteDelta(BinaryWriter writer) { + texture = new NetTexture2DExtended(Value.getExtendedTexture()); - texture.Write(writer); + texture.WriteFull(writer); which = new NetInt(Value.ParentSheetIndex); which.Write(writer); @@ -76,6 +79,7 @@ namespace StardustCore.NetCode boundingBox = new NetRectangle(Value.boundingBox.Value); sourceRect.Write(writer); + } } } diff --git a/GeneralMods/StardustCore/NetCode/NetKeyValuePair.cs b/GeneralMods/StardustCore/NetCode/NetKeyValuePair.cs new file mode 100644 index 00000000..cd017001 --- /dev/null +++ b/GeneralMods/StardustCore/NetCode/NetKeyValuePair.cs @@ -0,0 +1,24 @@ +using Netcode; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StardustCore.NetCode +{ + public class NetKeyValuePair : NetField, NetKeyValuePair> where KField : NetField, new() where VField : NetField, new() + { + + protected override void ReadDelta(BinaryReader reader, NetVersion version) + { + throw new NotImplementedException(); + } + + protected override void WriteDelta(BinaryWriter writer) + { + throw new NotImplementedException(); + } + } +} diff --git a/GeneralMods/StardustCore/NetCode/NetPairs/NetVector2MultiTilePair.cs b/GeneralMods/StardustCore/NetCode/NetPairs/NetVector2MultiTilePair.cs new file mode 100644 index 00000000..4ffbfbe6 --- /dev/null +++ b/GeneralMods/StardustCore/NetCode/NetPairs/NetVector2MultiTilePair.cs @@ -0,0 +1,36 @@ +using Microsoft.Xna.Framework; +using Netcode; +using StardustCore.Objects; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StardustCore.NetCode.NetPairs +{ + class NetVector2MultiTilePair: NetKeyValuePair + { + + public NetVector2MultiTilePair() + { + + } + + public NetVector2MultiTilePair(KeyValuePair hello) + { + this.InitialSet(Value); + } + + public override void Read(BinaryReader reader, NetVersion version) + { + base.Read(reader, version); + } + + public override void Write(BinaryWriter writer) + { + base.Write(writer); + } + } +} diff --git a/GeneralMods/StardustCore/NetCode/NetTexure2DExtended.cs b/GeneralMods/StardustCore/NetCode/NetTexure2DExtended.cs index 20cdba49..47d8cfe6 100644 --- a/GeneralMods/StardustCore/NetCode/NetTexure2DExtended.cs +++ b/GeneralMods/StardustCore/NetCode/NetTexure2DExtended.cs @@ -15,11 +15,6 @@ namespace StardustCore.NetCode public class NetTexture2DExtended : Netcode.NetField { - public string Name; - public Texture2D texture; - public string path; - public int width; - public int height; public NetTexture2DExtended() @@ -31,37 +26,99 @@ namespace StardustCore.NetCode { } + public void ReadData(BinaryReader reader, NetVersion version) + { + ReadDelta(reader, version); + } + + public void WriteData(BinaryWriter writer) + { + WriteDelta(writer); + } + protected override void ReadDelta(BinaryReader reader, NetVersion version) { - int width = reader.ReadInt32(); - int height = reader.ReadInt32(); - Byte[] colorsOne = new byte[width*height*4]; - colorsOne = reader.ReadBytes(width*height*4); - texture = new Texture2D(Game1.graphics.GraphicsDevice,width,height); - texture.SetData(colorsOne); - string Name = reader.ReadString(); - string path = reader.ReadString(); + NetInt Width = new NetInt(); + Width.Read(reader,version); + int width = Width.Value; - if (version.IsPriorityOver(this.ChangeVersion)) + NetInt Height = new NetInt(); + Height.Read(reader, version); + int height = Height.Value; + + + NetString name = new NetString(); + name.Read(reader, version); + NetString path = new NetString(); + path.Read(reader, version); + + + NetInt count = new NetInt(); + count.Read(reader, version); + + List bytes = new List(); + //colorsOne = reader.ReadBytes(); + + for(int i=0; i < count.Value; i++) { - this.CleanSet(new UIUtilities.Texture2DExtended(ModCore.ModHelper, path),true); + NetColor col = new NetColor(); + col.Read(reader, version); + bytes.Add(col.Value); } + + ModCore.ModMonitor.Log("Finished length: "+bytes.Count.ToString()); + ModCore.ModMonitor.Log("W: " + width.ToString()); + ModCore.ModMonitor.Log("H: " + height.ToString()); + + + //Texture2D texture = new Texture2D(Game1.graphics.GraphicsDevice,width,height); + Texture2DExtended texture = new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png")); + this.Value = texture; + + //texture.SetData(bytes.ToArray()); + + //Value.Name = name.Value; + //Value.path = path.Value; + //Value.setTexure(texture); + } protected override void WriteDelta(BinaryWriter writer) { - int size = base.Value.getTexture().Width * base.Value.getTexture().Height * 4; - writer.Write(base.Value.getTexture().Width); - writer.Write(base.Value.getTexture().Height); + int size = Value.getTexture().Width * Value.getTexture().Height; + NetInt Width = new NetInt(Value.getTexture().Width); + Width.Write(writer); + + NetInt Height = new NetInt(Value.getTexture().Height); + Height.Write(writer); + + + NetString name = new NetString(Value.Name); + name.Write(writer); + + NetString path = new NetString(Value.path); + path.Write(writer); //writer.Write(size); - texture = Value.getTexture(); - Byte[] colorsOne = new byte[size]; //The hard to read,1D array + + Texture2D texture = Value.getTexture(); + Color[] colorsOne = new Color[size]; //The hard to read,1D array + texture.GetData(colorsOne); - writer.Write(colorsOne); - writer.Write(base.Value.Name); - writer.Write(base.Value.path); + + NetInt count = new NetInt(colorsOne.Length); + count.Write(writer); + + ModCore.ModMonitor.Log("Color length:" + count.ToString()); + + foreach(var v in colorsOne) + { + NetColor col = new NetColor(v); + col.Write(writer); + } + + } diff --git a/GeneralMods/StardustCore/NetCode/Objects/NetCoreObject.cs b/GeneralMods/StardustCore/NetCode/Objects/NetCoreObject.cs new file mode 100644 index 00000000..5d35c7c2 --- /dev/null +++ b/GeneralMods/StardustCore/NetCode/Objects/NetCoreObject.cs @@ -0,0 +1,133 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.Serialization.Formatters.Binary; +using System.Text; +using System.Threading.Tasks; +using Netcode; +using StardewValley; +using StardustCore.NetCode.Graphics; +using StardustCore.UIUtilities; + +namespace StardustCore.NetCode +{ + public class NetCoreObject : Netcode.NetField + { + + + public NetInt which; + public NetVector2 tilePos; + + + public NetRectangle boundingBox; + + + + public NetVector2 position; + public NetInt Decoration_type; + public NetInt rotations; + public NetInt currentRotation; + public NetInt sourceIndexOffset; + public NetVector2 drawPosition; + public NetRectangle sourceRect; + public NetRectangle defaultSourceRect; + public NetRectangle defaultBoundingBox; + public NetString description; + public NetTexture2DExtended texture; + public NetBool flipped; + public NetBool flaggedForPickup; + public NetBool lightGlowAdded; + public NetObjectList inventory; + public NetInt InventoryMaxSize; + public NetBool itemReadyForHarvest; + public NetBool lightsOn; + public NetString locationName; + public NetColor lightColor; + public NetBool removable; + public NetColor drawColor; + public NetBool useXML; + public NetString serializationName; + + //Animation Manager..... + public NetAnimationManager animationManager; + + + + + public NetCoreObject() + { + + } + + public NetCoreObject(CoreObject value) : base(value) + { + } + + + protected override void ReadDelta(BinaryReader reader, NetVersion version) + { + texture = new NetTexture2DExtended(); + texture.Read(reader, version); + Value.setExtendedTexture(texture.Value); + + which = new NetInt(); + which.Read(reader, version); + Value.ParentSheetIndex = which.Value; + + tilePos = new NetVector2(); + tilePos.Read(reader, version); + Value.TileLocation = tilePos.Value; + + InventoryMaxSize = new NetInt(); + InventoryMaxSize.Read(reader, version); + Value.inventoryMaxSize = InventoryMaxSize.Value; + + sourceRect = new NetRectangle(); + sourceRect.Read(reader, version); + Value.sourceRect = sourceRect.Value; + + boundingBox = new NetRectangle(); + boundingBox.Read(reader, version); + Value.boundingBox.Value = boundingBox.Value; + + drawPosition = new NetVector2(); + drawPosition.Read(reader, version); + Value.drawPosition = drawPosition.Value; + + animationManager = new NetAnimationManager(); + animationManager.Read(reader, version); + Value.animationManager = animationManager.Value; + } + + protected override void WriteDelta(BinaryWriter writer) + { + texture = new NetTexture2DExtended(Value.getExtendedTexture()); + texture.Write(writer); + + which = new NetInt(Value.ParentSheetIndex); + which.Write(writer); + + tilePos = new NetVector2(Value.TileLocation); + tilePos.Write(writer); + + InventoryMaxSize = new NetInt(Value.inventoryMaxSize); + InventoryMaxSize.Write(writer); + + sourceRect = new NetRectangle(Value.sourceRect); + sourceRect.Write(writer); + + boundingBox = new NetRectangle(Value.boundingBox.Value); + sourceRect.Write(writer); + + drawPosition = new NetVector2(Value.drawPosition); + drawPosition.Write(writer); + + if (Value.animationManager != null) + { + animationManager = new NetAnimationManager(Value.animationManager); + animationManager.Write(writer); + } + } + } +} \ No newline at end of file diff --git a/GeneralMods/StardustCore/NetCode/Objects/NetMultiTileComponent.cs b/GeneralMods/StardustCore/NetCode/Objects/NetMultiTileComponent.cs new file mode 100644 index 00000000..3fc17e3d --- /dev/null +++ b/GeneralMods/StardustCore/NetCode/Objects/NetMultiTileComponent.cs @@ -0,0 +1,114 @@ +using Netcode; +using StardustCore.NetCode.Graphics; +using StardustCore.Objects; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StardustCore.NetCode.Objects +{ + class NetMultiTileComponent : Netcode.NetField + { + private NetTexture2DExtended texture; + private NetInt which; + private NetVector2 tilePos; + private NetRectangle sourceRect; + private NetRectangle boundingBox; + private NetVector2 drawPosition; + private NetAnimationManager animationManager; + + public NetMultiTileComponent() + { + + } + + public NetMultiTileComponent(MultiTileComponent obj): base(obj) + { + + } + + public NetInt InventoryMaxSize { get; private set; } + + protected override void ReadDelta(BinaryReader reader, NetVersion version) + { + + texture = new NetTexture2DExtended(); + texture.Read(reader, version); + + which = new NetInt(); + which.Read(reader, version); + Value.ParentSheetIndex = which.Value; + + tilePos = new NetVector2(); + tilePos.Read(reader, version); + Value.TileLocation = tilePos.Value; + + InventoryMaxSize = new NetInt(); + InventoryMaxSize.Read(reader, version); + Value.inventoryMaxSize = InventoryMaxSize.Value; + + sourceRect = new NetRectangle(); + sourceRect.Read(reader, version); + Value.sourceRect = sourceRect.Value; + + boundingBox = new NetRectangle(); + boundingBox.Read(reader, version); + Value.boundingBox.Value = boundingBox.Value; + + drawPosition = new NetVector2(); + drawPosition.Read(reader, version); + Value.drawPosition = drawPosition.Value; + + animationManager = new NetAnimationManager(); + animationManager.Read(reader, version); + Value.animationManager = animationManager.Value; + //NetCoreObject obj = new NetCoreObject(); + //obj.ReadData(reader, version); + + /* + NetMultiTileObject hmm = new NetMultiTileObject(); + hmm.Read(reader,version); + Value.containerObject = hmm.Value; + */ + } + + protected override void WriteDelta(BinaryWriter writer) + { + //NetCoreObject obj = new NetCoreObject(Value); + //obj.WriteData(writer); + + texture = new NetTexture2DExtended(Value.getExtendedTexture()); + texture.Write(writer); + + which = new NetInt(Value.ParentSheetIndex); + which.Write(writer); + + tilePos = new NetVector2(Value.TileLocation); + tilePos.Write(writer); + + InventoryMaxSize = new NetInt(Value.inventoryMaxSize); + InventoryMaxSize.Write(writer); + + sourceRect = new NetRectangle(Value.sourceRect); + sourceRect.Write(writer); + + boundingBox = new NetRectangle(Value.boundingBox.Value); + sourceRect.Write(writer); + + drawPosition = new NetVector2(Value.drawPosition); + drawPosition.Write(writer); + + if (Value.animationManager != null) + { + animationManager = new NetAnimationManager(Value.animationManager); + animationManager.Write(writer); + } + + //NetMultiTileObject hmm = new NetMultiTileObject(Value.containerObject); + //hmm.Write(writer); + } + } +} diff --git a/GeneralMods/StardustCore/NetCode/Objects/NetMultiTileObject.cs b/GeneralMods/StardustCore/NetCode/Objects/NetMultiTileObject.cs new file mode 100644 index 00000000..2bbbc4c5 --- /dev/null +++ b/GeneralMods/StardustCore/NetCode/Objects/NetMultiTileObject.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Xna.Framework; +using Netcode; +using StardustCore.Objects; + +namespace StardustCore.NetCode.Objects +{ + class NetMultiTileObject : Netcode.NetField + { + public NetMultiTileObject() + { + + } + + public NetMultiTileObject(MultiTileObject obj): base(obj) + { + + } + + protected override void ReadDelta(BinaryReader reader, NetVersion version) + { + NetCoreObject obj = new NetCoreObject(); + obj.Read(reader, version); + //Values already taken care of in NetCoreObject + + NetList, NetKeyValuePair> netList = new NetList, NetKeyValuePair>(); + netList.Read(reader, version); + Value.objects = netList.ToList(); + + NetColor col = new NetColor(); + col.Read(reader, version); + Value.categoryColor = col.Value; + + NetString name = new NetString(); + name.Read(reader, version); + Value.categoryName = name.Value; + } + + protected override void WriteDelta(BinaryWriter writer) + { + NetCoreObject obj = new NetCoreObject(Value); + obj.Write(writer); + + NetList, NetKeyValuePair> netList = new NetList, NetKeyValuePair>(); + foreach (var v in Value.objects) + { + netList.Add(v); + } + netList.Write(writer); + + NetColor col = new NetColor(Value.categoryColor); + col.Write(writer); + + NetString catName = new NetString(Value.categoryName); + catName.Write(writer); + } + } +} diff --git a/GeneralMods/StardustCore/Objects/CoreObject.cs b/GeneralMods/StardustCore/Objects/CoreObject.cs index feaadf7a..f83f6d6f 100644 --- a/GeneralMods/StardustCore/Objects/CoreObject.cs +++ b/GeneralMods/StardustCore/Objects/CoreObject.cs @@ -1,5 +1,6 @@ using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; +using Netcode; using StardewModdingAPI; using StardewValley; using StardewValley.Locations; @@ -104,24 +105,46 @@ namespace StardustCore lightColor = Color.Black; thisType = this.GetType().ToString(); + base.initNetFields(); this.NetFields.AddField(new NetCode.NetCoreObject(this)); + } public CoreObject() { + base.initNetFields(); this.updateDrawPosition(); this.NetFields.AddField(new NetCode.NetCoreObject(this)); + } public CoreObject(bool f) { + base.initNetFields(); //does nothng this.NetFields.AddField(new NetCode.NetCoreObject(this)); + } - public CoreObject(Texture2DExtended texture,int which, Vector2 Tile, int InventoryMaxSize) + public CoreObject(Texture2DExtended texture,int which, Vector2 Tile, int InventoryMaxSize):base() { + var ok=Game1.getAllFarmers(); + foreach (var v in ok){ + this.owner.Value = v.UniqueMultiplayerID; + break; + } + this.Type = "Not Sure"; + this.CanBeSetDown = true; + this.CanBeGrabbed = true; + this.IsSpawnedObject = false; + this.questItem.Value = false; + this.questId.Value =0; + this.IsOn = false; + this.heldObject.Value = null; + this.Stack = 1; + + InitializeBasics(InventoryMaxSize, Tile); if (TextureSheet == null) { @@ -169,11 +192,20 @@ namespace StardustCore this.boundingBox.Value = new Rectangle((int)this.TileLocation.X * Game1.tileSize, (int)this.TileLocation.Y * Game1.tileSize, 1 * Game1.tileSize, 1 * Game1.tileSize); this.defaultBoundingBox = this.boundingBox.Value; } + + this.boundingBox.Value = new Rectangle(0, 0, Game1.tileSize, Game1.tileSize); this.updateDrawPosition(); this.rotations = Convert.ToInt32(array[4]); this.Price = Convert.ToInt32(array[5]); this.ParentSheetIndex = which; this.serializationName=this.GetType().ToString(); + + + this.drawPosition = Vector2.Zero; + this.TileLocation = tileLocation; + this.locationsName = ""; + this.position = this.TileLocation * (Game1.tileSize); + this.thisLocation = null; } public override string getDescription() @@ -248,82 +280,6 @@ namespace StardustCore return this.clicked(who); } - //DONT USE THIS BASE IT IS TERRIBLE - /* - public override bool clicked(StardewValley.Farmer who) - { - - // Game1.showRedMessage("THIS IS CLICKED!!!"); - Game1.haltAfterCheck = false; - - if (this.heldObject != null) - { - this.spillInventoryEverywhere(); - return false; - } - - if (this.heldObject == null && (who.ActiveObject == null || !(who.ActiveObject is CoreObject))) - { - if (Game1.player.currentLocation is FarmHouse) - { - // Game1.showRedMessage("Why2?"); - // this.spillInventoryEverywhere(); - - if (this.heldObject != null) Util.addItemToInventoryElseDrop(this.heldObject.getOne()); - this.heldObject = new CoreObject(parentSheetIndex, Vector2.Zero, this.inventoryMaxSize); - // Util.addItemToInventoryElseDrop(this.heldObject.getOne()); - this.heldObject = null; - this.flaggedForPickUp = true; - thisLocation = null; - return true; - } - else - { - // return true; - - this.flaggedForPickUp = true; - if (this is TV) - { - // this.heldObject = new TV(parentSheetIndex, Vector2.Zero); - } - else - { - - // Util.addItemToInventoryElseDrop(this.heldObject); - - var obj = new CoreObject(parentSheetIndex, Vector2.Zero, this.inventoryMaxSize); - // Util.addItemToInventoryElseDrop(obj); - // this.spillInventoryEverywhere(); - if (this.heldObject != null) this.heldObject.performRemoveAction(this.tileLocation, who.currentLocation); - - this.heldObject = null; - Game1.playSound("coin"); - thisLocation = null; - return true; - } - - } - } - if (this.heldObject != null && who.addItemToInventoryBool(this.heldObject, false)) - { - // Game1.showRedMessage("Why3?"); - // if(this.heldObject!=null) Game1.player.addItemByMenuIfNecessary((Item)this.heldObject); - // this.spillInventoryEverywhere(); - var obj = new CoreObject(parentSheetIndex, Vector2.Zero, this.inventoryMaxSize); - // Util.addItemToInventoryElseDrop(obj); - if (this.heldObject != null) this.heldObject.performRemoveAction(this.tileLocation, who.currentLocation); - this.heldObject = null; - Game1.playSound("coin"); - thisLocation = null; - return true; - } - - - - return false; - } - */ - public virtual bool RightClicked(StardewValley.Farmer who) { // StardewModdingAPI.Log.AsyncC(lightColor); @@ -732,72 +688,6 @@ namespace StardustCore return false; } - /* - public override bool canBePlacedHere(GameLocation l, Vector2 tile) - { - if ((l is FarmHouse)) - { - for (int i = 0; i < this.boundingBox.Width / Game1.tileSize; i++) - { - for (int j = 0; j < this.boundingBox.Height / Game1.tileSize; j++) - { - Vector2 vector = tile * (float)Game1.tileSize + new Vector2((float)i, (float)j) * (float)Game1.tileSize; - vector.X += (float)(Game1.tileSize / 2); - vector.Y += (float)(Game1.tileSize / 2); - foreach (KeyValuePair something in l.objects) - { - StardewValley.Object obj = something.Value; - if ((obj.GetType()).ToString().Contains("CoreObject")) - { - CoreObject current = (CoreObject)obj; - if (current.Decoration_type == 11 && current.getBoundingBox(current.tileLocation).Contains((int)vector.X, (int)vector.Y) && current.heldObject == null && this.getTilesWide() == 1) - { - bool result = true; - return result; - } - if ((current.Decoration_type != 12 || this.Decoration_type == 12) && current.getBoundingBox(current.tileLocation).Contains((int)vector.X, (int)vector.Y)) - { - bool result = false; - return result; - } - } - } - } - } - return Util.canBePlacedHere(this, l, tile); - } - else - { - // Game1.showRedMessage("NOT FARMHOUSE"); - for (int i = 0; i < this.boundingBox.Width / Game1.tileSize; i++) - { - for (int j = 0; j < this.boundingBox.Height / Game1.tileSize; j++) - { - Vector2 vector = tile * (float)Game1.tileSize + new Vector2((float)i, (float)j) * (float)Game1.tileSize; - vector.X += (float)(Game1.tileSize / 2); - vector.Y += (float)(Game1.tileSize / 2); - /* - foreach (CoreObject current in (l as FarmHouse).CoreObject) - { - if (current.Decoration_type == 11 && current.getBoundingBox(current.tileLocation).Contains((int)vector.X, (int)vector.Y) && current.heldObject == null && this.getTilesWide() == 1) - { - bool result = true; - return result; - } - if ((current.Decoration_type != 12 || this.Decoration_type == 12) && current.getBoundingBox(current.tileLocation).Contains((int)vector.X, (int)vector.Y)) - { - bool result = false; - return result; - } - } - - } - } - return Util.canBePlacedHere(this, l, tile); - } - } - */ - public virtual void updateDrawPosition() { @@ -814,174 +704,6 @@ namespace StardustCore return this.boundingBox.Height / Game1.tileSize; } - /* - public override bool placementAction(GameLocation location, int x, int y, StardewValley.Farmer who = null) - { - // Log.AsyncC(x); - // Log.AsyncM(y); - - if (location is FarmHouse) - { - Point point = new Point(x / Game1.tileSize, y / Game1.tileSize); - List walls = FarmHouse.getWalls((location as FarmHouse).upgradeLevel); - this.tileLocation = new Vector2((float)point.X, (float)point.Y); - bool flag = false; - if (this.Decoration_type == 6 || this.Decoration_type == 13 || this.parentSheetIndex == 1293) - { - int num = (this.parentSheetIndex == 1293) ? 3 : 0; - bool flag2 = false; - foreach (Rectangle current in walls) - { - if ((this.Decoration_type == 6 || this.Decoration_type == 13 || num != 0) && current.Y + num == point.Y && current.Contains(point.X, point.Y - num)) - { - flag2 = true; - break; - } - } - if (!flag2) - { - Game1.showRedMessage("Must be placed on wall"); - return false; - } - flag = true; - } - for (int i = point.X; i < point.X + this.getTilesWide(); i++) - { - for (int j = point.Y; j < point.Y + this.getTilesHigh(); j++) - { - if (location.doesTileHaveProperty(i, j, "NoFurniture", "Back") != null) - { - Game1.showRedMessage("Furniture can't be placed here"); - return false; - } - if (!flag && Utility.pointInRectangles(walls, i, j)) - { - Game1.showRedMessage("Can't place on wall"); - return false; - } - if (location.getTileIndexAt(i, j, "Buildings") != -1) - { - return false; - } - } - } - this.boundingBox = new Rectangle(x, y, this.boundingBox.Width, this.boundingBox.Height); - foreach (KeyValuePair c in location.objects) - { - StardewValley.Object ehh = c.Value; - if (((ehh.GetType()).ToString()).Contains("CoreObject")) - { - CoreObject current2 = (CoreObject)ehh; - if (current2.Decoration_type == 11 && current2.heldObject == null && current2.getBoundingBox(current2.tileLocation).Intersects(this.boundingBox)) - { - current2.performObjectDropInAction(this, false, (who == null) ? Game1.player : who); - bool result = true; - return result; - } - } - } - foreach (StardewValley.Farmer current3 in location.getStardewValley.Farmers()) - { - if (current3.GetBoundingBox().Intersects(this.boundingBox)) - { - Game1.showRedMessage("Can't place on top of a person."); - bool result = false; - return result; - } - } - this.updateDrawPosition(); - // Log.AsyncO(this.boundingBox); - // Log.AsyncO(x); - // Log.AsyncY(y); - for (int i = 0; i <= this.boundingBox.X / Game1.tileSize; i++) - { - base.placementAction(location, x + 1, y, who); - } - for (int i = 0; i <= this.boundingBox.Y / Game1.tileSize; i++) - { - base.placementAction(location, x, y + 1, who); - } - return true; - } - else - { - Point point = new Point(x / Game1.tileSize, y / Game1.tileSize); - // List walls = FarmHouse.getWalls((location as FarmHouse).upgradeLevel); - this.tileLocation = new Vector2((float)point.X, (float)point.Y); - bool flag = false; - if (this.Decoration_type == 6 || this.Decoration_type == 13 || this.parentSheetIndex == 1293) - { - int num = (this.parentSheetIndex == 1293) ? 3 : 0; - bool flag2 = false; - /* - foreach (Rectangle current in walls) - { - if ((this.Decoration_type == 6 || this.Decoration_type == 13 || num != 0) && current.Y + num == point.Y && current.Contains(point.X, point.Y - num)) - { - flag2 = true; - break; - } - } - - if (!flag2) - { - Game1.showRedMessage("Must be placed on wall"); - return false; - } - flag = true; - } - for (int i = point.X; i < point.X + this.getTilesWide(); i++) - { - for (int j = point.Y; j < point.Y + this.getTilesHigh(); j++) - { - if (location.doesTileHaveProperty(i, j, "NoFurniture", "Back") != null) - { - Game1.showRedMessage("Furniture can't be placed here"); - return false; - } - /* - if (!flag && Utility.pointInRectangles(walls, i, j)) - { - Game1.showRedMessage("Can't place on wall"); - return false; - } - - if (location.getTileIndexAt(i, j, "Buildings") != -1) - { - return false; - } - } - } - this.boundingBox = new Rectangle(x, y, this.boundingBox.Width, this.boundingBox.Height); - /* - foreach (Furniture current2 in (location as FarmHouse).furniture) - { - if (current2.furniture_type == 11 && current2.heldObject == null && current2.getBoundingBox(current2.tileLocation).Intersects(this.boundingBox)) - { - current2.performObjectDropInAction(this, false, (who == null) ? Game1.player : who); - bool result = true; - return result; - } - } - - foreach (StardewValley.Farmer current3 in location.getStardewValley.Farmers()) - { - if (current3.GetBoundingBox().Intersects(this.boundingBox)) - { - Game1.showRedMessage("Can't place on top of a person."); - bool result = false; - return result; - } - } - this.updateDrawPosition(); - thisLocation = Game1.player.currentLocation; - return base.placementAction(location, x, y, who); - } - - } - */ - - public override bool placementAction(GameLocation location, int x, int y, StardewValley.Farmer who = null) { @@ -1290,12 +1012,7 @@ namespace StardustCore { if (x == -1) { - //ERROR IS HERE?!?!?!?!? - if (TextureSheet == null) - { - ModCore.ModMonitor.Log("WHY IS EX TEXT NULL?????"); - } - spriteBatch.Draw(TextureSheet.getTexture(), Game1.GlobalToLocal(Game1.viewport, this.drawPosition), new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, (this.Decoration_type == 12) ? 0f : ((float)(this.boundingBox.Bottom - 8) / 10000f)); + spriteBatch.Draw(TextureSheet.getTexture(), Game1.GlobalToLocal(Game1.viewport, this.drawPosition), new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, 0f); } else { diff --git a/GeneralMods/StardustCore/UIUtilities/Texture2DExtended.cs b/GeneralMods/StardustCore/UIUtilities/Texture2DExtended.cs index 236a7b3a..49de1b8b 100644 --- a/GeneralMods/StardustCore/UIUtilities/Texture2DExtended.cs +++ b/GeneralMods/StardustCore/UIUtilities/Texture2DExtended.cs @@ -57,5 +57,10 @@ namespace StardustCore.UIUtilities { return this.texture; } + + public void setTexure(Texture2D text) + { + this.texture = text; + } } } diff --git a/da[lda b/da[lda new file mode 100644 index 00000000..6d457a52 --- /dev/null +++ b/da[lda @@ -0,0 +1,1847 @@ +commit 2276faa610b3704cefb88ecf796f36d0d75498a8 +Author: +Date: Mon Aug 6 20:01:59 2018 -0700 + + Wrote netcode to support Animations, AnimationManagers, and CoreObjects. + +commit 3af2da68fae217abed5efbe28ec85845789ccd27 +Author: +Date: Mon Aug 6 14:01:44 2018 -0700 + + Tons of 1.3 updates. Also support for multiplayer custom objects in Stardust is slowly coming about! + +commit 0cf9b68560143924cc071b9f9780110128806a5a +Author: +Date: Sun Aug 5 09:33:00 2018 -0700 + + Rebuilt some mods for 1.3 compatability. In the process of fixing Happy Birthday glitches. + +commit 808e44fff71b87f2bdf49f7010048591eb650f92 +Author: Joshua Navarro +Date: Fri Jul 20 00:33:59 2018 -0700 + + Added in light glows!!!! + +commit 50f84167aae97e62ecd07784fafbbf321c36ad8c +Author: Joshua Navarro +Date: Thu Jul 19 21:33:50 2018 -0700 + + Shader color upgrade+simple night shader. + + Added in better color shader with nighttime support. + +commit e545d4232db845affbfe5ff2cfc8293978e51062 +Author: Joshua Navarro +Date: Thu Jul 19 13:28:20 2018 -0700 + + Backup all my work thus far. + +commit f188c12f0ae09e41e700b6bba97de2ab6ee1cad2 +Author: Joshua Navarro +Date: Wed Jul 18 23:13:39 2018 -0700 + + Draw order fixed. + + Better greyscale shader and draw order fixed for drawing things to the screen. WOOT! + +commit c4f6f981c39cc517f128e20a966c909fa4a58b70 +Author: Joshua Navarro +Date: Wed Jul 18 17:41:38 2018 -0700 + + Crafting menus fixed! + +commit 2141c151ca5f66b8b5e46baff3d9adb900e9997a +Author: Joshua Navarro +Date: Wed Jul 18 16:06:15 2018 -0700 + + Fixed mouse cursor shader issue. + +commit a921b2ba780de30dc4b87ebc95d3e44cb2c7ca40 +Author: Joshua Navarro +Date: Wed Jul 18 14:57:58 2018 -0700 + + Add files via upload + +commit 0509259a2ee95f4f65d85d9c4c3cbd637f9d5d7a +Author: Joshua Navarro +Date: Wed Jul 18 11:48:37 2018 -0700 + + Social Page: NPC Shader + +commit 9c6b2efccd394ed143b54d130c877a2e6f5c0dfb +Author: Joshua Navarro +Date: Wed Jul 18 07:47:16 2018 -0700 + + Updated game menu fix + + Applied shader to more game menu components + +commit b127a000a52ebda9b2a2e5d9dd57d521100e3790 +Author: Joshua Navarro +Date: Tue Jul 17 22:38:15 2018 -0700 + + Made a mod. + + Shaders? + +commit b68643989e115f5b46b92af7c7b30168fef8bbac +Author: Joshua Navarro +Date: Fri Jul 13 23:18:17 2018 -0700 + + Finished dialogue scrape update. + + Ready for alpha testing. Need audio clips, putting audio clips in place, and quality of life features. + +commit 4b500182fa6b7acc4a1ba5bc57dedea8f6026646 +Author: Joshua Navarro +Date: Fri Jul 13 20:28:26 2018 -0700 + + Finished writing dialogue scraper. + + Needs to be tested. + +commit a3b3442c6f2877f5baf7513648106f88a90d3b03 +Author: Joshua Navarro +Date: Thu Jul 12 22:25:21 2018 -0700 + + Added Mod config, scrape npc dialogue and TVs. + + See todo list. Next is shops. + +commit 1497980aea8b4cfb2c8ad289024db8f4221953e1 +Author: Joshua Navarro +Date: Tue Jul 10 23:23:50 2018 -0700 + + Finished dictionary sanitization. + + See todo list for next task. + +commit fd5972d0b9e054a3c0136538d8879f7384b5b6b7 +Author: Joshua Navarro +Date: Sun Jul 8 14:11:06 2018 -0700 + + More sanitation work. + + Should work for the most part, just need to add in adjectives, nouns, and places. + +commit 2acd5f32a1e96b04345674405e5e2018f66568db +Author: Joshua Navarro +Date: Sun Jul 8 09:22:21 2018 -0700 + + Started work on translation update and sanitizing input. + + Translation update will allow for dialogue scraping of dictionaries for different supported languages. + + Sanitizing input will replace game variables with a generic string so that voice acting can be more flexible and not have to record a million lines. + +commit 4e10d7efc6f155630a9d0276b8a04af80c057c46 +Author: Joshua Navarro +Date: Sun Jul 8 01:40:46 2018 -0700 + + Updated vocalization with notes on what to do next. + +commit 32c4ba1d65815893bfcce267e46d629b74e51e89 +Author: Joshua Navarro +Date: Sun Jul 8 00:49:49 2018 -0700 + + Creating new voice acting mod at request of another author. + +commit c474ce1a8d4f0898c1621aac87499d23b41f9168 +Author: Joshua Navarro +Date: Sun Jul 8 00:48:13 2018 -0700 + + Updated SSM to allow for playing/stoping of sound files. + +commit 8f0f692a60d658aedc6f2b4a539d9d5b4d9a1620 +Author: +Date: Mon Jun 25 21:13:40 2018 -0700 + + Fixed Game1.shouldFarmerPassOut issue, need to test night owl, started fixing Happy bday, need to update SimpleSoundManager + +commit 349d053727a2ff088773714aa95aa9380ed8f321 +Merge: 71efefa 5e5c79c +Author: Joshua Navarro +Date: Mon Jun 25 20:09:30 2018 -0700 + + Merge pull request #39 from perkinslr/patch-1 + + Reset money to previous value before the save + +commit 71efefae3e59798cd5cdf1aec9f59caf37afe655 +Merge: 7018239 b620e4e +Author: Joshua Navarro +Date: Mon Jun 25 19:58:42 2018 -0700 + + Merge pull request #40 from DefenTheNation/master + + Add API for other mods to hook into Save Anywhere save events + +commit b620e4eaf5fb147b67b5ce7e5103e519100b893b +Author: DefenTheNation +Date: Sat Jun 23 00:31:40 2018 -0700 + + Add API for other mods to hook into Save Anywhere save events + +commit 701823925f3413c2204a4dd4efcec223f03e9ff7 +Author: +Date: Wed Jun 13 12:08:14 2018 -0700 + + Updated menu drawing. Now to fix the scale size of the object + +commit bcf76f9163daed6c475c5a97691087a4c83106cd +Author: +Date: Wed Jun 13 11:11:56 2018 -0700 + + Fixed draw issues with multi tile obects. Next up menu drawing and functionality. + +commit 4469fbd9b353e543f6d5fb1d437853142e6f431b +Author: +Date: Wed Jun 13 02:36:52 2018 -0700 + + Made multi tile objects that can be used in the future for things like machines and more furniture. Bigger things here we come. Need to edit sme click functionality however. + +commit a928f7d18e35f5f3316121b8c25a186297ae766a +Author: +Date: Tue Jun 12 23:25:36 2018 -0700 + + Added tool support for axe, hoe, watering can and pickaxe. + +commit 70106444987f57f8aed1dbbf50a341a40e237f16 +Author: +Date: Tue Jun 12 21:45:42 2018 -0700 + + Fixed serializing items to a chest. + +commit 19e6202e3a007960761e588a87cbe519bd642095 +Author: +Date: Tue Jun 12 18:42:31 2018 -0700 + + Rewrote the serialization fuctions of SDust Core to support custom tools. A huge pain but it should work. + +commit ad7f9754ef2b95e54c3caacaa65026dfbf3bc063 +Author: +Date: Fri Jun 8 11:40:23 2018 -0700 + + Console commands, bug fixes, and more! + +commit 5e5c79c0a0dfad170b18ea07f0708365d2ca4a01 +Author: Logan Perkins +Date: Fri Jun 8 09:47:34 2018 -0700 + + Reset money to previous value before the save + + So, if you let the timer run down to 6:00 A.M., you lose 10% of your cash, the game saves, the new day starts, and NightOwl resets your money to what it was at 5:59. There are two problems with this. First, if you quit to the title and reload, your money doesn't get reset again on load, so you lose the 10%. Second, if you shipped anything the day before, the cash reset wipes out the cash gained from shipping items. This fixes both. The first is fixed by resetting the cash value during the before save event, the second is fixed by reading the cash penalty amount from the mailbox before the mailbox is cleared, and adding the value rather than setting the total. + +commit c38f2599f2d0aec75030acb9997127761102a09d +Merge: 39e91bf 5b0de7f +Author: Joshua Navarro +Date: Thu Jun 7 14:02:55 2018 -0700 + + Merge pull request #38 from janavarro95/Development + + Development + +commit 5b0de7f73656a78452ccb84b6803ed2980ac8f66 +Author: +Date: Thu Jun 7 13:58:52 2018 -0700 + + Fixed SDust dynamic warning, and a glitch with the music menu when selecting an album. + +commit f2ed5c3acb20fef575f497c8bbf9eef052d20871 +Author: +Date: Wed Jun 6 01:00:59 2018 -0700 + + Fixed glitch pertaining to the music menu not being able to get a correct album index and crashing. + +commit 39e91bf962f5148e478c03120e16dfc0a5ce4c34 +Merge: fdebd3a fba0cd7 +Author: Joshua Navarro +Date: Mon Jun 4 19:04:44 2018 -0700 + + Merge pull request #37 from janavarro95/Development + + Added in an aesthetic feature that draws the add or delete button on … + +commit fba0cd75f128de02bdd596bd0b94fca3afb83069 +Author: +Date: Mon Jun 4 19:03:25 2018 -0700 + + Added in an aesthetic feature that draws the add or delete button on the music manager menu depending on whether or not you added the music to the music pack yet or not. + +commit fdebd3a8e838ab337dcc5bc71a29b4f8fdef68f0 +Merge: b35746f ba7d0ae +Author: Joshua Navarro +Date: Fri Jun 1 15:20:34 2018 -0700 + + Merge pull request #36 from janavarro95/Development + + Development + +commit ba7d0ae9b047b8c7f61f3ff03b401d722a8aa1cc +Author: +Date: Fri Jun 1 15:18:49 2018 -0700 + + Updated mod manifest files for nexus release + +commit f7ffec1799599246b0c5545b09bd09d9eb87b517 +Author: +Date: Fri Jun 1 14:43:47 2018 -0700 + + The beta of Stardew Symphony is complete! WOOO! + +commit 70885979ed9e57a95e8f2ae0a6f249904efda35f +Author: +Date: Fri Jun 1 12:09:50 2018 -0700 + + Mod config, log surpressing, menu/location music working, just need to polish the menu and I'll be done! + +commit 02d3ab39e5a5e08a8c77b4ca6b7fd92e11d6cf84 +Author: +Date: Thu May 31 14:38:24 2018 -0700 + + Updated SSM to be able to handle XWB and WAV files. + +commit 9fe6a075de9f27864d64860c62e63c057608c122 +Author: +Date: Wed May 30 18:14:06 2018 -0700 + + Repositioned menu elements and added options for generic festivals and events. + +commit 04dd0432f0a3d9547cabfab7e123517fbb7950e1 +Author: +Date: Wed May 30 13:58:14 2018 -0700 + + Almost done with symphony remastered menu. Needs some tweaks but works for the most part. + +commit 5e8f2ccdfdeb7bfe889d43a34a36386f3ff2dd80 +Author: +Date: Tue May 29 01:04:47 2018 -0700 + + More menu work for symphony. + +commit eb90e537a510e02c18b334300be544a99efbd6a6 +Author: +Date: Mon May 28 03:17:36 2018 -0700 + + Symphony can now add songs to triggers for changing location. Need to find a way to surpress always changing songs when changing location if it isn't location specific. + +commit 7c693c90514bd9f04f88f65cddccd1966cd448cc +Author: +Date: Sun May 27 19:08:01 2018 -0700 + + Created layout for menu selection options for standard selections. + +commit 6afca47caa8997bfa1c3e0270da3a00b0c63d8b3 +Author: +Date: Fri May 18 14:24:59 2018 -0700 + + Rename save backup, fix happy birthday, disable net core, add info to symphony for first page of icons. + +commit 651cd8a26b99fda535791695ed8f4c1b3693c4ec +Author: +Date: Thu May 10 00:16:05 2018 -0700 + + Updated ModNet to be compatable with SDV 1.3.10, which adds bug fixes for sprite errors. + +commit 0fb7e729c1f77625c425024721fe138623a9af90 +Author: +Date: Wed May 9 15:57:20 2018 -0700 + + Updated NetMod to prevent redundant messages and errors. + +commit bd656c444b945043ebd37809c91aa19fcc2201ad +Author: +Date: Wed May 9 14:23:42 2018 -0700 + + Fiexed some blaring error messages, gave Happy Birthday it's much needed multiplayer support. + +commit 11025947fb2d97d8180e519679c4099e2e85d4a0 +Author: +Date: Tue May 8 21:34:32 2018 -0700 + + added function to get all farmers except the current player. + +commit a0ddb5994b4012f682b654957a69049bf0487280 +Author: +Date: Tue May 8 18:18:53 2018 -0700 + + Made functionality to get first, second, third, and fourth player. + +commit 947e0c557fb307c3bd0532bb4335c19966548960 +Author: +Date: Tue May 8 17:21:59 2018 -0700 + + Added support to send a message to a specific farmer. + +commit 9c1314480c7a2fa925e8343b04d110af815e3e8a +Author: +Date: Tue May 8 10:45:26 2018 -0700 + + Added in network functionality so that clients can send data to server and other clients. + +commit 20f52e27071b6da95543f0ea8d72683670c586b8 +Author: +Date: Mon May 7 22:37:02 2018 -0700 + + Allowed for custom types to be added in how to process a class multiple ways. Also added support for SDV.HUDMessages + +commit b3a9cb7b0ab75736691c754a9779c74f2f11cb9b +Author: +Date: Mon May 7 05:41:16 2018 -0700 + + Updated network utils to be able to sync a custom class that can hold info to a different sync type of data. This allows for users to add in custom data types now. + +commit 62f07d731ccd316674ab51169b8906cdbcd02781 +Author: +Date: Sun May 6 19:31:10 2018 -0700 + + Changed BinaryReaderExtention files to be more split up. + Also added in function that simply logs which supported types are added for reading/saving. + +commit 42b039cf89a7074f81ab8130c10ddb63d46a19bd +Author: +Date: Sun May 6 19:11:24 2018 -0700 + + Added in functionality to read/write to List + +commit ea31aec34fdc37e938eed4d99178c25b1f0b3edd +Author: +Date: Sun May 6 18:23:45 2018 -0700 + + File cleanup + +commit b5a7d9797c93f6f1fa25b30ca2555971939cf8b6 +Author: +Date: Sun May 6 18:21:31 2018 -0700 + + Slowly updating mods. Managed to create mod that syncs mod data between clients and server. + +commit ccddf1d4239fac7a0b96d884717ee8306cdf77f5 +Author: +Date: Mon Apr 30 18:21:31 2018 -0700 + + The BIG 1.3 update. Everything has been touched and some mods have been reworked a bit. + +commit 7e5d4349caeac5861f2a18d8d311b854a1b9d4b9 +Author: +Date: Fri Apr 27 11:49:52 2018 -0700 + + Big update to Symphony Remastered. Added in support for festivals, events, and menus. Also added in support for adding in support for mods that use Symphony. + +commit e42e91e30d2c9562c8ccd22125dd02efb4686d79 +Author: +Date: Sat Mar 31 01:47:10 2018 -0700 + + Made the song selection menu. Can now click songs to play them. Now to make the selected songmenu where you can play the song or set triggers. + +commit 6ef666af6ef84e83d762e5581fcbb3e5a302e8d8 +Author: +Date: Fri Mar 30 05:46:24 2018 -0700 + + Colored background menus for UIUtilities, and a fancier menu for Symphony. + +commit dad514a6d63f5bf27d369f53824d1e23935546fd +Author: +Date: Wed Mar 21 13:02:50 2018 -0700 + + Symphony now takes priority over StardewValley music. Can be changed simply by adding in a StardewValley Music Pack. Also Music Album Icons! + +commit fd53797c5f4dd15cc5cf799fa840a8839863b4e0 +Author: +Date: Wed Mar 21 02:04:05 2018 -0700 + + Wav music packs now work correctly. WOOT! + +commit def22386c586027a66568cbe3b935ef90e7a87c4 +Author: +Date: Wed Mar 21 00:46:00 2018 -0700 + + Got wav music packs working! Just need to figure out the buffer size for the files now. + +commit 1bbf3f2503ebfc7c51304b1d2d7ca218b5564d1c +Author: +Date: Tue Mar 20 23:24:11 2018 -0700 + + Play some randome music and play wav packs. + +commit ed899b49d905c651a9898f64a9c3d441fecb8696 +Author: +Date: Tue Mar 20 16:45:07 2018 -0700 + + symphony menu is coming along. + +commit 67c110f282ed44258577080215e03f178e3c121a +Author: +Date: Tue Mar 20 03:10:02 2018 -0700 + + attempted rough implementation of farmers market. Needs a lot more work before rough prototype would be complete. + +commit 44d2f4e7e9de61f88afdb06c2c42f1bdbfce3984 +Author: +Date: Mon Mar 19 23:01:43 2018 -0700 + + Finished commenting on all functions in the mod. Now just to write up some documentation. + +commit a915a06460fcdce27400946ba9605fefa4e00da1 +Author: +Date: Mon Mar 19 03:32:00 2018 -0700 + + More comments round 2 + +commit fabef6ba82b03f0036ec1d1c61443a81fe692c3a +Author: +Date: Sun Mar 18 19:06:08 2018 -0700 + + Started the great comment update. + +commit 9834bbcf28ca2db1f429f2df6ae3f15061cb0a9f +Author: +Date: Sun Mar 18 16:06:49 2018 -0700 + + Fixed npc movment, npcs now correctly animate when moving, need to fix graphics for it though. + +commit 5c1f09b266d9fef91f8262f3fca375c9030a2f6a +Author: +Date: Sun Mar 18 03:20:06 2018 -0700 + + Fixed modular npc breathing. + +commit bd6e479b4fcc74d8e6248fe31c490ecc4da56cbe +Author: +Date: Sun Mar 18 01:48:01 2018 -0700 + + Finished the basics of the npc renderer. I have included the base art assets for generating a female npc and polished off all of the code. Base goal achived. + +commit 91620913298339e5dbdf493301769e7a83629e88 +Author: +Date: Sat Mar 17 21:49:22 2018 -0700 + + Fixed drawing glitches with the custom npc renderer. Now just have to get individual assets and make a nice compilation. + +commit f8517e37c362c2fc01bd3797a1806ecd9c482ba5 +Author: +Date: Sat Mar 17 04:39:46 2018 -0700 + + Implemented code for custom npc merchants. Pretty simple actually and the result is very pleasing. + +commit 07757dac1fedcecd09a194a5ea8a6f8da23e088d +Author: +Date: Sat Mar 17 04:18:35 2018 -0700 + + Discovered that the mod is now corectly rendering npcs. Issue: AnimatedSpriteCollection.draw functionality is inconsistent and needs to be fixed. + +commit 43573f0bbab3eded32c9140efa0d1a741645cff3 +Author: +Date: Sat Mar 17 04:04:04 2018 -0700 + + Fixed glitches pertaining to loading assets in and generating random npcs. Need to fix layer depth to see if NPC will properly render. + +commit 8d1eef7329c405b7be8dcd8f8e9d6f9e2c4e22d7 +Author: +Date: Mon Mar 5 23:46:24 2018 -0800 + + Cleaned up code regarding the Event System mod to prevent lots of redundant code. + +commit 16c77a1497310dd42164f0d694b84dd7f6429862 +Author: +Date: Mon Mar 5 23:06:39 2018 -0800 + + Ui buttons work, dialogue events now work for left click which could lead to some spicy mods. + +commit 4fc3466608153c51ca8f51b525d98b26cd4517d5 +Author: +Date: Mon Mar 5 20:46:45 2018 -0800 + + Made dialogue map event, and updated Button for UIUtilities to use Texture2DExtended. Spent awhile just fixing it. + +commit 68c831029b212706b736ca7d349f331222f1362d +Author: +Date: Sun Mar 4 15:21:39 2018 -0800 + + New constructors for ExtendedNPC that don't take a CharacterRenderer, just a basic Sprite. + +commit e17dd9ea7c3f8030edc5173805fffcc342b7564a +Author: +Date: Sun Mar 4 14:44:52 2018 -0800 + + Made a function to generate renderers. + +commit c73702459951b298c735724e87b5fb6d5dbeef79 +Author: +Date: Sun Mar 4 14:32:59 2018 -0800 + + The asset loader should now have all like assets bundled together. So all swimming animations will pull from the same body sprite as defined instead of always random. + +commit d5536b9e52d31fceaa07b265d5bd056d41880705 +Author: +Date: Sun Mar 4 13:23:40 2018 -0800 + + Getting closer to the finished product. Assets are grouped together now with .json holding all the info for the different animation types. + +commit 005ad14cfd45853792c45069d918c1e8e047fe54 +Author: +Date: Sun Mar 4 07:53:55 2018 -0800 + + I think the asset loader works this time. I can have 4 pngs assigned per .json file. Only way to know for sure is to start loading in a ton of art... + +commit b9e42ae256d3317e8fcc73bf7ea82a2928895590 +Author: +Date: Sun Mar 4 04:36:46 2018 -0800 + + Got the asset loaded up and running. Currently I can load in normal npc sprites using .json files. + +commit e6696d8bb09878042c35d4500377289b8961a69e +Author: +Date: Sun Mar 4 03:36:19 2018 -0800 + + Made a way to keep track of npcs so that way they can be safely removed before saving and NOT crash the game. + +commit aa8d59b67b2251d18df04c7077cd2e90b4b05f6e +Author: +Date: Sun Mar 4 03:05:01 2018 -0800 + + Updated the mainifest for Happy Birthday to reflect a new version of the mod. + +commit b35746f85e725d8d48782c9b3af5a7032c204dc8 +Merge: 6330b49 ded9895 +Author: janavarro95 +Date: Sun Mar 4 03:03:30 2018 -0800 + + Merge pull request #34 from janavarro95/Development + + Fixed Happy Birthday Spamming the SMAPI console when the player still… + +commit ded9895c12d0ea2563ca13620ae8aee60b34cb25 +Author: +Date: Sun Mar 4 03:02:54 2018 -0800 + + Fixed Happy Birthday Spamming the SMAPI console when the player still hasn't choosen their birthday. + +commit 6330b495f23be18eb5001d143599904109369215 +Merge: 93f863b e5808ee +Author: janavarro95 +Date: Sat Mar 3 19:25:40 2018 -0800 + + Merge pull request #33 from janavarro95/Development + + Development + +commit e5808eeb5cabfe45808ad9250634d5ba4f3a7bbb +Author: +Date: Sat Mar 3 19:24:36 2018 -0800 + + Yup. + +commit 93f863bcca0a207087889c894a733b3b3c681c09 +Merge: a745213 f6ac929 +Author: janavarro95 +Date: Sat Mar 3 19:19:50 2018 -0800 + + Merge pull request #32 from JohnsonNicholas/master + + Update to convert to SMAPI Content API + +commit f6ac9291f1987225c81910629b532abaf92e71cf +Author: Nicholas Johnson +Date: Fri Mar 2 16:28:07 2018 -0800 + + Update to convert to SMAPI Content API + +commit 4fb792db11ff7912f78ccc595bfd00ea9b3b6ba8 +Author: +Date: Sat Feb 24 01:36:41 2018 -0800 + + Fixed the default non-modular spriter renderer to draw normal npcs again. + +commit 45c5b69ba0e8c02939812f350b37d642337d1eaa +Author: +Date: Sat Feb 24 01:05:58 2018 -0800 + + Updated a constuctor to used the new character sprite class. + +commit fd9f5d97030ce0b2d4474fe7b26f5c8dfb4896e4 +Author: +Date: Sat Feb 24 01:04:35 2018 -0800 + + I think the integration is finished for the custom npc renderer. Who knows though. + +commit b19de2348741455d4f128b83e04c3c83ef2d4e0c +Author: +Date: Fri Feb 23 23:40:34 2018 -0800 + + integrated code to ExtendedNPC that needs to be overwritten to fix the this.sprite issue. + +commit b57a5f506fe9fa9e3bf0b6cd58766ace75d0662f +Author: +Date: Fri Feb 23 23:16:10 2018 -0800 + + Finished base code for basic renderer. Now all I have to do is create the character renderer and AssetManager... + +commit 1fc38b964c3ccc8db2d692313f2b6b8707c95fd8 +Author: +Date: Fri Feb 23 19:10:56 2018 -0800 + + Started work on custom npcs. Can load in new npcs from graphics. They don't do anything but stand there... + +commit 534eda1414c93ab51952cccc3bda3a52fde06ff3 +Author: +Date: Fri Feb 23 13:55:51 2018 -0800 + + finished work on warp events + +commit 44a5887e1b933a34a4165bafb17343b06c8da799 +Author: +Date: Thu Feb 22 15:30:35 2018 -0800 + + Working on mouse button events. + +commit bebcefa76517daa7778275af2df2f27f1657815a +Author: +Date: Thu Feb 22 11:43:18 2018 -0800 + + Started work on new mod to add map events with code. + +commit aa71ab8ec4562bec8889ad8de1986950f83c368e +Author: +Date: Wed Feb 21 13:41:43 2018 -0800 + + Started work on Hex32 class for color conversion because why not. + +commit 1b41fc47e92d2a4a9456e705fc419263a2c380cc +Author: +Date: Tue Feb 6 02:13:21 2018 -0800 + + Made layered texture to be able to have textures on textures. Might be used in the near future. + +commit 13e1d9591ad414f53e15605b37b19d2153fa154c +Author: +Date: Tue Feb 6 01:27:28 2018 -0800 + + Integrated StardustCore with UIUtilities a new framework that makes making menus easier. It adds buttons and TexturedFonts that are loaded in as individual images for each character. Colors can be applied to these chararacters for some nice graphical effects. + +commit ff6456d9ec52c37c8f823e80513259c8662782c5 +Author: +Date: Mon Feb 5 19:07:29 2018 -0800 + + Added in ability to save and load music packs. Needs lots of work. Next step, menus. + +commit 45bfa5731f8b59ab9fbcbf20192b78ab97bb68b1 +Author: +Date: Mon Feb 5 17:31:59 2018 -0800 + + Finished writing functionality for WAV music packs. fixed issue when loading in songs, made sure initial sound keys are propperly loaded, and have implemented support for custom title screen music. + +commit aed71ac4db43297582da31528f4c35e8b18f6674 +Author: +Date: Sat Feb 3 21:11:38 2018 -0800 + + Just some summary tags to explain some functions. + +commit b5b6c2083095cb33c81b0db8c0b89fc8b4e108bd +Author: +Date: Sat Feb 3 20:40:03 2018 -0800 + + Sucessfully loaded in songs with the WAV music packs. Just need to implement functionality in the WAV "packs" + +commit 1fb92f7cf7a1afed1db17d64bd8e231ed3d8c26c +Author: +Date: Sat Feb 3 11:50:56 2018 -0800 + + Finally got XACT music packs to load in again. Next up is loading in WAV files. + +commit a7452139900a589da7b76d3e5cb83dee8358fb2b +Author: janavarro95 +Date: Fri Feb 2 18:37:32 2018 -0800 + + Create ReadMe.md + +commit 575766a03dc89a7fe88d32216fcf9723800f77ec +Author: janavarro95 +Date: Fri Feb 2 18:36:06 2018 -0800 + + Delete Readme.txt + +commit 17cf699e1def6e9727df937996281a2d1c95c56a +Author: janavarro95 +Date: Fri Feb 2 18:35:36 2018 -0800 + + Create Readme.txt + +commit c21c6a4fc1d5e9a9960eb93982e8cbaf7f6c82f0 +Merge: c905457 5426a98 +Author: janavarro95 +Date: Fri Feb 2 18:34:49 2018 -0800 + + Merge pull request #31 from janavarro95/Development + + Development + +commit 5426a98885ef5b2c87a7c35ece0af7a23c1bf23a +Merge: fd962b5 930d982 +Author: +Date: Fri Feb 2 18:34:22 2018 -0800 + + Merge branch 'Development' of https://github.com/janavarro95/Stardew_Valley_Mods into Development + +commit fd962b562dfa85e02a18dc8fe496e6d937df2bbf +Author: +Date: Fri Feb 2 18:33:39 2018 -0800 + + Removed an accidental directory naming from going one level too deep. + +commit c9054570a972f9b2387671c9f0e174309b98218c +Merge: 74a7fa9 930d982 +Author: janavarro95 +Date: Fri Feb 2 18:31:58 2018 -0800 + + Merge pull request #30 from janavarro95/Development + + Merge from Development + +commit 930d982972ec418bfb9ca8ef03d8db209bbffca2 +Merge: b8965d7 74a7fa9 +Author: janavarro95 +Date: Fri Feb 2 18:31:35 2018 -0800 + + Merge branch 'master' into Development + +commit b8965d77e4708ad457270c3ea0da80394a06450b +Author: +Date: Fri Feb 2 18:15:00 2018 -0800 + + More work completed on Symphony remastered and close to finishing loading XACT music packs. Finished new mod CustomAssetModifier that essentially can modify ObjectInformation.xnb information without modifying .xnb files. + +commit 100f43f486739c2be91e04bd16a1b3472f9f7b52 +Author: +Date: Fri Feb 2 14:27:47 2018 -0800 + + Fixed a glitch where you could click the day buttons on the birthday select menu even if they weren't visable. + +commit b72de658a618e7273af3e536a77cf373b1c7d386 +Author: +Date: Tue Jan 30 12:46:04 2018 -0800 + + Work on SymponyRemasteered Music manager to be almost working, and fixed glitch with Happy Birthday when reading legacy save data. + +commit 5b894e32e8b61721111269b857bcb619db33006d +Author: +Date: Sun Jan 28 19:06:36 2018 -0800 + + Updated xwb music pack to be almost complete. Need to do wav and music manager. + +commit 1cd732cf4ed58e863f55829bbc836c99cc90da75 +Author: +Date: Tue Jan 23 01:54:08 2018 -0800 + + Started work on StardewSymphonyRemastered. New features, more options, and a UI are in the works. + +commit efe185e76df43afe5b6b26f8b2d4b7701095880d +Author: +Date: Tue Jan 16 14:34:10 2018 -0800 + + Fixed Revitalize to be compilable again so I can extract the code and make it into other smaller mods. + +commit 74a7fa97cb3483ee812cafa85dd6d340635f0284 +Merge: 8d1d091 c4e92f5 +Author: janavarro95 +Date: Thu Jan 11 15:22:18 2018 -0800 + + Merge pull request #29 from Pathoschild/update-code + + Update manifests + reflection API + +commit c4e92f5cf3b6f2f56cf37872ed9035ef34e108bb +Author: Jesse Plamondon-Willard +Date: Thu Jan 11 00:50:16 2018 -0500 + + update deprecated reflection API + +commit 402c27b29c24c5f01897d20804e70ed88a64fc84 +Author: Jesse Plamondon-Willard +Date: Thu Jan 11 00:43:32 2018 -0500 + + update manifest format + +commit 8d1d09114a297628c32ddfbaf6af8a7f441bcd19 +Merge: 928df83 34c3326 +Author: janavarro95 +Date: Wed Jan 10 13:25:03 2018 -0800 + + Merge pull request #28 from janavarro95/Development + + Forgot to update the manifest + +commit 34c3326dd6333f4984e688999fdce50f921e7119 +Author: +Date: Wed Jan 10 13:24:34 2018 -0800 + + Forgot to udate the manifest + +commit 928df83457a31888a567daa548a341edc31e3289 +Merge: ad2ba95 3b744a4 +Author: janavarro95 +Date: Wed Jan 10 13:17:42 2018 -0800 + + Merge pull request #27 from janavarro95/Development + + Development + +commit 3b744a4f5994ad786ab4362546c4093f1121d9db +Author: +Date: Wed Jan 10 13:14:19 2018 -0800 + + Updated SaveAnywhere to fix the shipping menu not closing leading to errors in saving, and players not swimming when reloading the game. + +commit 2591602239527c8f2ffef246164437c6575d6057 +Author: +Date: Wed Dec 13 20:35:28 2017 -0800 + + Doing live code updates can be bad. Lots of last minute hot-fixes before the project is due. + +commit 4b62f3746e19a37261ebc362498003911c83f27c +Author: +Date: Tue Dec 12 01:38:22 2017 -0800 + + TaskMetaData now displays info about goal and location of the task. + +commit 34d072e7a41d1e1e622d99d5745f9f97bf102430 +Author: +Date: Tue Dec 12 01:19:41 2017 -0800 + + Fixed an NAN error and glitching the interface logic. + +commit b7c76ee0d690f9f692d179b0cbcdad51a41c3050 +Author: +Date: Mon Dec 11 23:32:46 2017 -0800 + + Fixed one away error for debris, and added graphics for pathing. + +commit b4d82f972a4f7a1362e2167ffe02ed7db9bb765c +Author: +Date: Mon Dec 11 14:54:59 2017 -0800 + + Can now fall asleep and open the shipping menu if things have been shipped. + +commit ce355fd2c065ba7dfdd85b72ff75c9376ab44d7e +Author: +Date: Mon Dec 11 13:39:48 2017 -0800 + + Updated the AI to dig dirt and plant seeds. + +commit 2f6d4978da4589b129e3e97969de3575ce36dd47 +Author: +Date: Wed Dec 6 16:36:28 2017 -0800 + + Added functionality to buy seeds and started work on being able to dig out dirt. + +commit 79f2b2d038c333331a423a4b7237c3ca1a2f2bf3 +Author: +Date: Tue Dec 5 16:59:13 2017 -0800 + + hotfix to crop utility menu for component placement. + +commit eb3a1e15091d727560e727326db4e6c508fc6193 +Author: +Date: Tue Dec 5 16:39:34 2017 -0800 + + Made the AI utility functions and interface menu. AI's opinion will be calculated heaviest without user input and heavier the more user input is introduced. + +commit c9f1450ae84705ea371f719223b89f04eba590fa +Author: +Date: Mon Dec 4 23:08:31 2017 -0800 + + made crop utility counting function + +commit 5a03d2bb2bb57ed0c1f4c28b9563d733df15df07 +Author: +Date: Mon Dec 4 12:57:29 2017 -0800 + + Fixed more pathifinding glitches when recalculating paths. + +commit 29238793065b7ee95cd24d49c8a8a0960c21428c +Author: +Date: Sun Dec 3 22:55:23 2017 -0800 + + Updated debris logic for twigs/stones/weeds to use better path finding. + +commit 4fcef655a8bab1fd2a127191a6d110a40db45abe +Author: +Date: Sun Dec 3 17:44:31 2017 -0800 + + Waypoints, pathing in and out of buildings, to specific tiles, and returning home at the end of day. + +commit ea2e7c134f2514c8dae5470c382dc30b5a99b077 +Author: +Date: Sat Dec 2 21:53:30 2017 -0800 + + Fixed a really dumb stack overflow error on pathfinding across the world. THANK YOU. + +commit 31ddb0e7f15984834941f288626ff6998abfbb42 +Author: +Date: Sat Dec 2 15:13:31 2017 -0800 + + Reworked path calculation logic so it can now calculate costs of multiple paths. + +commit 58bb6cb285dc28de4f9ce04acd8051ad57ff3532 +Author: +Date: Fri Dec 1 21:42:44 2017 -0800 + + Made PathTo which allows me to get from one path to another. + +commit 4eea726db3512f4464eac123c382d41678236bf6 +Author: +Date: Fri Dec 1 02:18:37 2017 -0800 + + Pathfinding is now much faster on initial calculation after removing unused delay code. Also can path to adjacent maps. Needs work to chain the effect. + +commit 175a38597703896a9477f2a528fecb48f5ce8db9 +Author: +Date: Fri Dec 1 00:16:53 2017 -0800 + + Added functionality for shipping objects + +commit 3e9d7f6f49c011f324d03e0d60fe57eb47a3fc31 +Author: +Date: Thu Nov 30 16:59:21 2017 -0800 + + Can path to nearest water tile and also if I need to water crops and need water path, get water, and path back to where I was. + +commit 38af511cfd99aca2a56c2fcc13e2ffdd048dd8fc +Author: +Date: Thu Nov 30 16:06:19 2017 -0800 + + Now pathfinds to closest tree possible. Probably want to do the same for the other tasks. + +commit 992ef687e7629b62cd99fef6cf825ebd1719cdda +Author: +Date: Thu Nov 30 11:58:05 2017 -0800 + + Can cut weeds. + +commit 365808a50437f5b5d077e3db826f361cf191123a +Author: +Date: Thu Nov 30 10:45:43 2017 -0800 + + Changed some code to be in SDust Core and now the AI can break stones! + +commit eae0eb82bf72c232a3daff37630fbe9d9f7434df +Author: +Date: Wed Nov 29 23:51:44 2017 -0800 + + Upgraded pathfinding to try and find all 4 cardinal goals simultaneously and whichever one it finds first must be the shortest path. Saves a TON of time as long as there is a path that we can pathfind to and is 4 times faster if there isn't a path at all. + +commit e58ab6ba055fb1fb917772e65579643ec7f525aa +Author: +Date: Wed Nov 29 20:52:23 2017 -0800 + + Fixed overcalculating paths WAY TOO MUCH. + +commit b05ee04e2b8769bffc78d7ea7b6136c4702e744d +Author: +Date: Wed Nov 29 20:06:48 2017 -0800 + + Made the stick choping work and upgraded the pathfinding to store the cheapest path to prevent a TON of crashes and calculation time. + +commit 671eb1be49480afb21d59ef92345021c7f2fdf8a +Author: +Date: Wed Nov 29 18:34:53 2017 -0800 + + RIP can now chop sticks but took HOURS to figure out how. Also if I can't find the path my code becomes vunerable to crash. + +commit ad2ba9527bc86413da30bef0bd61c7bf3137e83d +Author: +Date: Mon Nov 27 23:38:12 2017 -0800 + + Path find through grass and made prereq for making sure I don't stay up too late. + +commit c748f64c2a5902ffbacd509c52663437a2cc37ab +Author: +Date: Mon Nov 27 14:25:31 2017 -0800 + + Made TaskMetaDataStatistics that will help calculate path cost and make isInventoryFull Pre-req + +commit edd769b151d52a52b031507294744923ccf2b961 +Author: +Date: Sun Nov 26 18:20:23 2017 -0800 + + Fixed minor glitch where I would calculate cheapest task too often. + +commit e44ec0ee5be78565306a351cd62d40949690d015 +Author: +Date: Sun Nov 26 18:11:04 2017 -0800 + + Updates execution of tasks, added taskMetaData, (which is a lot) some pre-requisites, and chests show seeds. + +commit 069a6a5e8bf250f80751988cf25a1346ae210dcf +Author: +Date: Fri Nov 24 20:05:34 2017 -0800 + + Forgot to include logic to get low grade seeds from chest. (Though I'm sure it would have worked fine anyways). + +commit de15a965f54d3ab4e68dcf50f381c086f9cc7f47 +Author: +Date: Fri Nov 24 19:56:10 2017 -0800 + + Added functionality to path to chest and pull seasonal seeds from it. + +commit cf3a77d9dee77d450e7180fcb40b0ba838b1518c +Author: +Date: Fri Nov 24 13:42:35 2017 -0800 + + Pathfind fixes + +commit 836d6861d89f13537b142ab82c9fa28f88cf5bc2 +Author: +Date: Fri Nov 24 13:12:36 2017 -0800 + + I guess fixing pathfind and spritebatch errors. + +commit e51a8fbac5d91e1bd78db5ae0d86a603875ef315 +Author: +Date: Fri Nov 24 11:21:03 2017 -0800 + + Changed from system tasks system to delegate system that made more sense but not really??? Also still dealing with nasty issue of sprite batch error but atleast now I can harvest crops. + +commit 0c860a1516b7f8de1fe9da1848733fc5528a8d6b +Author: +Date: Thu Nov 23 16:42:28 2017 -0800 + + Water all crops works correctly and now is stored in the execution list. Need to make some metadata for tasks and some statistics fr weights and stuff. + +commit e95ffa45db405bceb76366c4613ed5f3650b45a8 +Author: +Date: Thu Nov 23 12:56:49 2017 -0800 + + Working on watering functionality for AI + +commit b17d56a51b97970e7c9099460c8c32ccad277b15 +Merge: 1a2295e fefea5f +Author: +Date: Thu Nov 23 00:53:00 2017 -0800 + + Merge branch 'master' of https://github.com/janavarro95/Stardew_Valley_Mods + +commit 1a2295e84e55ffce62b289bf03237369255af245 +Author: +Date: Thu Nov 23 00:51:50 2017 -0800 + + Almost got crop watering code working. Need to get simulated presses working and proper tile targeting + +commit fefea5f26ad864d46b3a97fb473ec9da1ade8f18 +Author: janavarro95 +Date: Wed Nov 22 19:43:37 2017 -0800 + + Update README.md + +commit b28c253d0fba261250eed2671ac41afa6bff947b +Author: janavarro95 +Date: Wed Nov 22 19:38:39 2017 -0800 + + Update README.md + +commit c7c65e06decac2e8686232ac5ebaa16ca989099d +Author: +Date: Mon Nov 20 03:53:33 2017 -0800 + + Commit the good stuff. Fixed multipath finding recursing over goals. + +commit d4470e0ebb1364fa5ee6cc4bab87ceeb7b75a778 +Author: +Date: Mon Nov 20 01:54:33 2017 -0800 + + Changes to pathTo to work better than addTask for some reason. Not 100% sure but will figure it out. + +commit ac4a7e5a8a9d9b81646915b6a213452e3a947aa1 +Author: +Date: Mon Nov 20 01:03:21 2017 -0800 + + Fixed the large amounts of lag that happened during movement and key presses. + +commit 12ea388897cbdce5abba9cd853f8bd026b3a03c6 +Author: +Date: Sun Nov 19 22:32:24 2017 -0800 + + Started working on Execution task list that will queue up different tasks for the AI to do and execute them in order. + +commit 1d0b0a6b16bfbee40ed49db9c449d9fd9667908a +Author: +Date: Sun Nov 19 21:20:41 2017 -0800 + + Added functionality to add multiple goals and path to each on in sequence from one another. + +commit cd0ac16a2272f64adefec3218a78b7a85c893c7f +Author: +Date: Sun Nov 19 17:00:12 2017 -0800 + + Fined tuned some pathfinding stuff b adding pathTo and Delay functions. As long as I don't have to cross a bridge pathfinding works. + +commit d722144c21a5a6cf6c17ad8aa11bf0f71e6307d2 +Author: +Date: Fri Nov 17 02:50:22 2017 -0800 + + Finished BFS path finding and added in animations for the path. Also updated Animation Manager to be able to take multiple frames of animation per single animation set now. + +commit fa3c4389ae39cb1f5e0c6ff9344e54130e9bcd59 +Author: +Date: Thu Nov 16 23:07:30 2017 -0800 + + Added Illumination framework to stardust for different colors, and made BFS path finding work for StarAI! + +commit a12250b8cc06dab460ad119828c99041d84bebc0 +Author: +Date: Thu Nov 16 10:29:02 2017 -0800 + + Stared work on tileObject that will depict what is occuring with path finding and planning. + +commit 28421f07ffa389b2e42c6dabe3f4403b60bb01e0 +Author: +Date: Thu Nov 16 03:47:02 2017 -0800 + + Updated all mods to use most recent version of pathos netgu package and started work on StarAI for CS146 Game AI + +commit 170c12e750cc0424960205176e6301a50b2e4a09 +Merge: 71c846a 1868dd4 +Author: janavarro95 +Date: Wed Oct 11 18:14:28 2017 -0700 + + Merge pull request #24 from Pathoschild/update-code + + Update new mods for SMAPI 2.0, enable update checks + +commit 1868dd4bd95ba0e19b5c5db15ec706c4c056e531 +Author: Jesse Plamondon-Willard +Date: Wed Oct 11 16:20:46 2017 -0400 + + update for release + +commit 16d5461a4e7105fa14262e5e836a614e5146ee3f +Author: Jesse Plamondon-Willard +Date: Wed Oct 11 16:09:12 2017 -0400 + + standardise SimpleSoundManager entry class & prevent other mods from accessing its mod helper + +commit 3e01276c56d04cf8d16048deec0e40ffbb55a578 +Author: Jesse Plamondon-Willard +Date: Wed Oct 11 16:06:26 2017 -0400 + + add readme for SimpleSoundManager + +commit 344058de8866aeb9dcb0e23433fb876f46ecabf3 +Author: Jesse Plamondon-Willard +Date: Wed Oct 11 15:57:36 2017 -0400 + + enable update checks in SMAPI 2.0 + +commit 3ab404499519cbb3be546395a61686c0df647c60 +Author: Jesse Plamondon-Willard +Date: Wed Oct 11 15:55:59 2017 -0400 + + update deprecated code + +commit 76bd5b7f337fb8959718ccf233997bb020539c8f +Author: Jesse Plamondon-Willard +Date: Wed Oct 11 15:45:48 2017 -0400 + + fix project references + +commit 4393b6318c65d5af75325eb3e9f79947902cc52a +Author: Jesse Plamondon-Willard +Date: Wed Oct 11 15:45:29 2017 -0400 + + update to mod build package 2.0 + +commit 71c846acc5d6d8585977244fe9516ea2c277be69 +Author: +Date: Wed Sep 27 19:06:41 2017 -0700 + + Implemente correct interaction range with planter boxes. + +commit bce270d6ce599dda19552676d13ab2cb395465f0 +Author: +Date: Wed Sep 27 18:17:45 2017 -0700 + + Updated PlanterBox to correctly draw crops when held and in the menu. Planter boxes also are auto-watered by rain. + +commit a67a4d7380557994466661688d520ff194b03e4c +Author: +Date: Fri Sep 15 11:15:51 2017 -0700 + + Fixed animation glitch when harvesting crops, and now draw green + when crops are fully grown. + +commit f0e1e696f9f465e48d958735dbd1a6cee7b13537 +Author: +Date: Thu Sep 14 13:49:19 2017 -0700 + + Made Planter Boxes be a possible greenhouse, self watering, dead crops work again and are removed automatical per mod config, and dead crops can be removed by tools. + +commit 9888dacd22c089ec7a3a4d2c07361e04f2a43959 +Author: +Date: Wed Sep 13 17:11:05 2017 -0700 + + Stuff serializes into chests + +commit cf33b0228e3d4bb79f222a82fd0fd439e47b6e36 +Author: +Date: Wed Sep 13 13:53:12 2017 -0700 + + Changed serialization manager, all objects serialize in world and inventory. Next is chests. + +commit b3193b52fcd1c6712a43bad8eaf9b66d58ff899f +Author: +Date: Wed Sep 13 10:52:27 2017 -0700 + + Fixed regular crops to grow now, and now can propperly harvest crops that don't regrow. + +commit dcafabcaa0b4e429e019d81218fdf56578fb0269 +Author: +Date: Wed Sep 13 02:39:50 2017 -0700 + + Added in a custom shipping menu for coreObjects. Called before normal shipping menu. Modded crops can be harvested. Need to fix regular crops. + +commit 37fc678d449cbd77c617fc309dfa2d897d2b4e87 +Author: +Date: Tue Sep 12 17:00:36 2017 -0700 + + Added in the content to start being released with the mod. Still have some things to do such as crop growth/harvesting and serializing everything else. Also added in appropriate functionality for when planterboxes are watered. + +commit 2ebe3f981ae9102440a86e45263659c0397f4f81 +Author: +Date: Tue Sep 12 16:30:30 2017 -0700 + + Finished animation manager to work on animating things it is attached to. Serialize/Deserialize will be handled by each mod object. Changed files from AdditionalCrops to be hosted in R.F.CropsMod as proof that AdditionalCrops can be extended upon. + +commit a67baa4c095ec449cfd75dca1136a2c5c8831a54 +Author: +Date: Tue Sep 12 11:20:18 2017 -0700 + + Updates Stardust.metadata to work correctly in InventoryMenu, and ItemGrabMenu context. It shows the origin mod source of the item, and what class that item is. Hopefully will be useful for future modders. + +commit 3111f8bad09da020008f69154643bd41a4836a05 +Author: +Date: Mon Sep 11 23:39:59 2017 -0700 + + Updated Stardust with functionality to get MetaData about what mod an item belongs to. Useful for all modders and players who may wonder about origin of future objects. + +commit 28af12174800b668da086caabf7f7e72bd5d0575 +Author: +Date: Mon Sep 11 18:35:31 2017 -0700 + + Adding in Animation manager to animate objects. Also updating Stardust to be able to display info for objects from mods such as what mod an object is from. + +commit 6437efe2cf792d122ac644e2d5f0f967c60e60cb +Author: +Date: Mon Sep 11 12:58:46 2017 -0700 + + Updated AdditionalCropsFramework to properly serialize and deserialze the crops in the planterbox object. + +commit fa5970661b0aa907616533e5c38c6ea2855500a3 +Author: +Date: Tue Sep 5 04:13:42 2017 -0700 + + Moved around soem files, made a core library mod that will include a bunch of things in the future. For the moment, a custom serializer/deserializer. Implemented it with AdditionalCrops. Needs some more work. + +commit 4fd79dae21299f0f8f2b90cb8655cfbb1c199cfd +Author: +Date: Tue Aug 22 17:45:30 2017 -0700 + + Started AdditionalCropsFramework. Addedin proof for modded crop seeds, seed bags, (crop objects? needs testing) and planter boxes. Still more to do. + +commit 4c52e557177a841f53e3dcf856f11122c287abd8 +Author: janavarro95 +Date: Mon Aug 21 16:29:24 2017 -0700 + + Create Readme.txt + +commit 9aca5b19d3443f5360b1df24a6db4f5b31c98161 +Author: +Date: Mon Aug 21 16:28:41 2017 -0700 + + Small comment update + +commit 01c3822a8797faaf9882a9d2ba7d868e6c3941c9 +Author: +Date: Mon Aug 21 16:18:21 2017 -0700 + + Made SimpleSoundManager for allowing mods to be able to use custom sounds when things happen. Also made an example mod for it. + +commit 3ed8072436cbe76054837427d43b651165cf20ce +Author: +Date: Sun Aug 20 10:38:59 2017 -0700 + + Fixed glitch with Save Anywhere where saving in a building on a farm wouldn't warp you correctly back to the location when loading again. + +commit c4d7e7500b807e1b802c8d1e7120097280147267 +Author: +Date: Sun Aug 6 01:21:18 2017 -0700 + + Updating revitalize. Modular furniture can be placed. Now how to remove it... + +commit 7089475d46488cd47012f9bf883d0a9818211886 +Merge: 80c4633 5396d11 +Author: janavarro95 +Date: Sat Aug 5 21:59:33 2017 -0700 + + Merge pull request #22 from Pathoschild/save-anywhere-fixes + + Overhaul Save Anywhere file format, various fixes + +commit 5396d11675df03e215f576421d36bda206ac77e3 +Author: Jesse Plamondon-Willard +Date: Sat Aug 5 23:46:29 2017 -0400 + + add missing release note + +commit cf5a01bf413b764491c44880fa3f9cec66af5466 +Author: Jesse Plamondon-Willard +Date: Sat Aug 5 23:38:07 2017 -0400 + + fix bug in non-vanilla save detection + +commit 146d79d3b75a544717de064e57fa244e9e110f3b +Author: Jesse Plamondon-Willard +Date: Sat Aug 5 23:23:46 2017 -0400 + + add a few missing release notes + +commit 3a9bfd177d3d4402a0619ce2b6d97763d6c370b9 +Author: Jesse Plamondon-Willard +Date: Sat Aug 5 23:22:15 2017 -0400 + + fix save crash in the community center when Junimos are present (#11) + +commit fad849f80062a6a93f76e9177b6990140ef2b563 +Author: Jesse Plamondon-Willard +Date: Sat Aug 5 23:20:48 2017 -0400 + + migrate Save Anywhere to SMAPI's config API + +commit c980d587a8dfc123492477ea46ff083196cc510d +Author: Jesse Plamondon-Willard +Date: Sat Aug 5 23:19:38 2017 -0400 + + overhaul Save Anywhere data format, add facing direction + +commit 26aa5530ca09d74b02b74d479f7e98cf835c6261 +Author: Jesse Plamondon-Willard +Date: Sat Aug 5 23:17:51 2017 -0400 + + fix issue where loading a game after sleeping warps player back to last custom save (#12, #15) + +commit 80c4633e9968422c712b218908fbc5b300b205de +Merge: 6ed1bf6 e43f3bf +Author: janavarro95 +Date: Sat Aug 5 20:15:45 2017 -0700 + + Merge pull request #21 from Pathoschild/reimplement-no-more-pets + + Reimplement NoMorePets + +commit 6ed1bf61a40a432b557a5492babff0cb229648ed +Merge: fec79ee 81af6a4 +Author: janavarro95 +Date: Sat Aug 5 20:15:30 2017 -0700 + + Merge pull request #20 from Pathoschild/fix-autospeed-default + + Tweak AutoSpeed's default speed + +commit fec79eee5801d1f1cbbf71f18260c22d32b2181f +Merge: f5069f8 cec3523 +Author: janavarro95 +Date: Sat Aug 5 20:15:15 2017 -0700 + + Merge pull request #19 from Pathoschild/fix-exit-to-title + + Fix exit to title + +commit e43f3bf160a19733d1786808cab5d9727c60a3a1 +Author: Jesse Plamondon-Willard +Date: Sat Aug 5 23:08:42 2017 -0400 + + reimplement NoMorePets to simplify code & fix bugs + +commit 81af6a4767b7753c2e743b340b2fe8c4bec5673b +Author: Jesse Plamondon-Willard +Date: Sat Aug 5 23:08:11 2017 -0400 + + fix AutoSpeed config defaulting to normal walking speed + +commit cec352336cf8bdfa937adedd014d7d5f9faa93db +Author: Jesse Plamondon-Willard +Date: Sat Aug 5 23:00:37 2017 -0400 + + fix issues when player exits to title + +commit f5069f8ca56acca5e38ef830b9f4adfe74fd9ca7 +Merge: 21d3a16 2a5c17f +Author: janavarro95 +Date: Sat Aug 5 16:27:18 2017 -0700 + + Merge pull request #18 from Pathoschild/simplify-config + + Simplify config/data parsing using SMAPI APIs + +commit 2a5c17ff2fafe9285d239b4095076da75077446a +Author: Jesse Plamondon-Willard +Date: Sat Aug 5 15:51:44 2017 -0400 + + replace manual file parsing with SMAPI's APIs + +commit 9257605595c8e6a172a9db3087ca0ba8b3e4822d +Author: Jesse Plamondon-Willard +Date: Sat Aug 5 15:49:27 2017 -0400 + + replace manual JSON parsing with SMAPI's config API + +commit 21d3a165a50c6634355d61ecc586843b47d5d989 +Merge: fc7aff3 b201863 +Author: janavarro95 +Date: Sat Aug 5 12:47:41 2017 -0700 + + Merge pull request #17 from Pathoschild/update-code + + Update for SMAPI 2.0 and simplify code using new APIs + +commit b201863cd27d18b3ab66cf1be57eff0de7f0fab0 +Author: Jesse Plamondon-Willard +Date: Sat Aug 5 15:36:00 2017 -0400 + + bump mod versions for release + +commit 69798daae10e226ae4a429b460eb62c3f8b016bb +Author: Jesse Plamondon-Willard +Date: Sat Aug 5 15:24:01 2017 -0400 + + use SMAPI's reflection API to access private fields & methods + + It takes care of caching, validation, etc. + +commit 9526d90dbf19223ad4a1fd42e7fee1bfa8a2f287 +Author: Jesse Plamondon-Willard +Date: Sat Aug 5 15:23:33 2017 -0400 + + fix uses of Console.WriteLine + +commit 8fd29a88715aa4a7289710821d6915469c6b8bc0 +Author: Jesse Plamondon-Willard +Date: Sat Aug 5 15:23:10 2017 -0400 + + simplify context checks using new SMAPI features + +commit a03da96aa83a8c9b7f968f85fd82ae7bdb823169 +Author: Jesse Plamondon-Willard +Date: Sat Aug 5 15:20:46 2017 -0400 + + fix compatibility with SMAPI 2.0 + +commit 0f333877561111819060ac3bc78d4b99b280c7f5 +Author: Jesse Plamondon-Willard +Date: Sat Aug 5 15:20:15 2017 -0400 + + update release notes + +commit dc62581ddfa2d8bc57504bbd8789ff9e35311ed5 +Author: Jesse Plamondon-Willard +Date: Sat Aug 5 15:19:45 2017 -0400 + + correct manifest versions + +commit 0af7cf45620df579fdc07e74bfafbdd7a852f559 +Author: Jesse Plamondon-Willard +Date: Sat Aug 5 15:19:24 2017 -0400 + + standardise manifests + +commit fc7aff35645235bb31957d7a80168027777b999c +Merge: c5f2ae0 23270ed +Author: janavarro95 +Date: Sat Aug 5 10:02:24 2017 -0700 + + Merge pull request #16 from Pathoschild/refactor + + Refactor mod code & add READMEs + +commit 23270ed54328b1f557262c20c14506e2941edd29 +Author: Jesse Plamondon-Willard +Date: Thu Aug 3 21:05:48 2017 -0400 + + disable new log message in Save Anywhere that spams errors + +commit 7d84f5d64f6ffcaa338ff2c63504b61c347e92f5 +Author: Jesse Plamondon-Willard +Date: Thu Aug 3 19:43:40 2017 -0400 + + minor cleanup in Stardew Symphony code + +commit 7fe227bd78a3eb3cbd03007d6541b6d75328be93 +Author: Jesse Plamondon-Willard +Date: Mon Jul 31 01:24:31 2017 -0400 + + add GlobalAssemblyInfo.cs + +commit 962360579e381bd5878d5bc10b77a13c4b776cc3 +Author: Jesse Plamondon-Willard +Date: Mon Jul 31 01:15:45 2017 -0400 + + clean up config/data file parsing a bit, fix redundant code + +commit cf86505338ea87035d7d3b259ce2d19d29fd5aab +Author: Jesse Plamondon-Willard +Date: Mon Jul 31 01:01:26 2017 -0400 + + remove unneeded build output + +commit 3c43972fdbd0ec36a14ab1f9c5fbed9eabee2f61 +Author: Jesse Plamondon-Willard +Date: Mon Jul 31 00:56:32 2017 -0400 + + add main README and per-mod READMEs + +commit 9d363573956d3892734da302a20274c9bf01c621 +Author: Jesse Plamondon-Willard +Date: Sun Jul 30 23:10:15 2017 -0400 + + remove compiled file + +commit 49f2c0e8d03db319108b7a2648f97aa1b5d6db89 +Author: Jesse Plamondon-Willard +Date: Sun Jul 30 23:09:39 2017 -0400 + + move Revitalize readme into its folder + +commit e214952305226170976bcb99ab835e76cf6aae02 +Author: Jesse Plamondon-Willard +Date: Sun Jul 30 23:07:07 2017 -0400 + + update filenames to class type names, move internal code into framework namespace + +commit 62bc47d02db4ed9a7409d756fc0ac8ec69cfb700 +Author: Jesse Plamondon-Willard +Date: Sun Jul 30 22:55:58 2017 -0400 + + refactor SaveAnywhere's main class + + This commit formats/documents/simplifies code, standardises naming conventions, removes unused code, decouples classes, etc. + +commit c14f7c8b2424041aa69b2e804f40e24f06f47b54 +Author: Jesse Plamondon-Willard +Date: Sun Jul 30 21:58:48 2017 -0400 + + refactor SaveAnywhere utilities & simplify save/load logic + + This commit formats/documents/simplifies code, standardises naming conventions, removes unused code, decouples classes, etc. + +commit e88bc4615b154e3a58515c42fa32ef7d27f20e83 +Author: Jesse Plamondon-Willard +Date: Sun Jul 30 18:26:22 2017 -0400 + + reimplement SaveAnywhere's shipping menu to avoid duplicating game logic + +commit 9fc6a3c3f92aa80fef553c2e91e68f5fc38b1c12 +Author: Jesse Plamondon-Willard +Date: Sun Jul 30 17:57:00 2017 -0400 + + make SaveAnywhere's utilities non-static + +commit 5a7bac7ea55ba1a2f2936ddef3ef5eda45e72169 +Author: Jesse Plamondon-Willard +Date: Sun Jul 30 17:42:15 2017 -0400 + + unify SaveAnywhere's save utilities + +commit d99a45144ed18e699faa48ca7df15d26fc52b680 +Author: Jesse Plamondon-Willard +Date: Sun Jul 30 02:45:00 2017 -0400 + + fix some mod files not being deployed + +commit 1846b7e570b63cb60ee0915c758e7147daf54618 +Author: Jesse Plamondon-Willard +Date: Sun Jul 30 02:43:37 2017 -0400 + + refactor StardewSymphony to unify duplicated per-season logic + +commit 698f5d84986e089b2fd55b27b469c52c7ad6bf0b +Author: Jesse Plamondon-Willard +Date: Sun Jul 30 01:44:38 2017 -0400 + + refactor StardewSymphony + + This commit formats/documents/simplifies code, standardises naming conventions, removes unused code, etc. + +commit 916722fe4ce5647110dc072181c82238cf8daa24 +Author: Jesse Plamondon-Willard +Date: Sat Jul 29 22:55:10 2017 -0400 + + refactor TimeFreeze + + This commit formats/documents/simplifies code, standardises naming conventions, etc. + +commit 8f836be9972876ed74a545b1384c325ca39db75d +Author: Jesse Plamondon-Willard +Date: Sat Jul 29 20:53:26 2017 -0400 + + refactor SaveBackup + + This commit formats/documents/simplifies code, standardises naming conventions, etc. + +commit db9cda9e8b6ef7238c3aad4044b742fe827739e2 +Author: Jesse Plamondon-Willard +Date: Sat Jul 29 20:03:22 2017 -0400 + + refactor NoMorePets + + This commit formats/documents/simplifies code, standardises naming conventions, etc. + +commit a71aeb5147399233f675eb82d7a00c6dce7c609a +Author: Jesse Plamondon-Willard +Date: Sat Jul 29 19:59:16 2017 -0400 + + refactor NightOwl + + This commit formats/documents/simplifies code, standardises naming conventions, removes redundant code, etc. + +commit 022f12e1ed56cb2b6278b5dc5b819e8a229cfbf2 +Author: Jesse Plamondon-Willard +Date: Sat Jul 29 18:16:23 2017 -0400 + + refactor MoreRain + + This commit formats/documents/simplifies code, standardises naming conventions, etc. + +commit 62dc662da416de1eb96cb03d9f40cc6b366453f6 +Author: Jesse Plamondon-Willard +Date: Sat Jul 29 18:02:49 2017 -0400 + + refactor HappyBirthday + + This commit formats/documents/simplifies code, standardises naming conventions, removes unused code, comments out unreachable code, etc. + +commit a6f27c1c72429cf6041ab5d724defdcf684236c0 +Author: Jesse Plamondon-Willard +Date: Sat Jul 29 14:29:05 2017 -0400 + + refactor Fall28SnowDay + + This commit formats/documents/simplifies code, standardises naming conventions, etc. + +commit fa36c03028078fc4df6f86beca86799f75ba0329 +Author: Jesse Plamondon-Willard +Date: Sat Jul 29 14:28:23 2017 -0400 + + refactor DailyQuestAnywhere + + This commit formats/documents/simplifies code, standardises naming conventions, etc. + +commit a498fcd62a2a0816e2d324b0dd97dab6e59dd4a0 +Author: Jesse Plamondon-Willard +Date: Sat Jul 29 14:24:47 2017 -0400 + + refactor CustomShopsRedux GUI + + This commit formats/documents/simplifies code, standardises naming conventions, comments out unused code, etc. + +commit 6c2555d7484ef05c8225fd3814bb427a5a1773dd +Author: Jesse Plamondon-Willard +Date: Sat Jul 29 14:18:46 2017 -0400 + + refactor BuyBackCollectables + + This commit formats/documents/simplifies code, standardises naming conventions, removes unused code, etc. + +commit 18fc258f8009f7a3eaf4294fce29732d830357d9 +Author: Jesse Plamondon-Willard +Date: Sat Jul 29 14:05:24 2017 -0400 + + refactor BuildEndurance and BuildHealth + + This commit formats/documents/simplifies code, standardises naming conventions, splits Config into its own file, etc. + +commit 935ad499afed403314c7d33802250e613292cac3 +Author: Jesse Plamondon-Willard +Date: Sat Jul 29 13:54:26 2017 -0400 + + refactor BillboardAnywhere + + This commit formats/documents/simplifies code, standardises naming conventions, etc. + +commit bd07b482d61a7df0e927f97aff7611c90de73bb9 +Author: Jesse Plamondon-Willard +Date: Sat Jul 29 13:47:19 2017 -0400 + + refactor AutoSpeed + + This commit formats/documents/simplifies code, standardises naming conventions, etc. + +commit 7d7f7abe2ef3582618c8e39b779e3961b59bff58 +Author: Jesse Plamondon-Willard +Date: Sat Jul 29 13:30:04 2017 -0400 + + refactor Museum Rearranger + + This commit simplifies the code by overriding the base MuseumMenu instead of redefining it, formats/documents/simplifies code, standardises naming conventions, etc. + +commit c5f2ae0cbdf4a81efb0825ffe2bed91437dafa90 +Merge: 2f3a1df 0ac43b2 +Author: janavarro95 +Date: Thu Jul 27 21:54:36 2017 -0700 + + Merge pull request #14 from Pathoschild/revamp-project-structure + + Revamp general mods structure, and simplify editing & deployment + +commit 0ac43b2541cdde76ca44952a42a7f62333472730 +Author: Jesse Plamondon-Willard +Date: Fri Jul 28 00:45:36 2017 -0400 + + only create release zips when building in release mode + +commit 87729915480b703d8b4937cd9e6fa5af01b20e7a +Author: Jesse Plamondon-Willard +Date: Fri Jul 28 00:26:09 2017 -0400 + + replace packaging script with new build config package feature + +commit f907a18d63090fcc2ad0c1cfe36a863b98480173 +Author: Jesse Plamondon-Willard +Date: Fri Jul 28 00:16:26 2017 -0400 + + centralise deploy configuration + +commit f94936b76f7d3376e74d8c06dd2af72fbbdf7086 +Author: Jesse Plamondon-Willard +Date: Thu Jul 27 20:28:39 2017 -0400 + + standardise namespaces + +commit 9d141837962553e65e7ac4e77f2653534328eab8 +Author: Jesse Plamondon-Willard +Date: Thu Jul 27 20:21:29 2017 -0400 + + fix hardcoded reference to Json.NET + +commit f5f32206f5e682f256696b1d82a1bb34f4171825 +Author: Jesse Plamondon-Willard +Date: Thu Jul 27 20:18:36 2017 -0400 + + use latest mod build config package, simplify references & deployment + +commit 2470bbc361d4ecbfc124834e1dc9e46e79124a49 +Author: Jesse Plamondon-Willard +Date: Thu Jul 27 20:18:19 2017 -0400 + + simplify project structure & unify mod solutions + + This commit combines the general mods into one solution, removes compiled/generated files, and standardises the project names. + +commit 2f3a1df33f2fe3c2889975b65edf916b7ad821f9 +Author: janavarro95 +Date: Thu Jul 13 20:30:57 2017 -0700 + + Update README.md + +commit 4e5505552b001a1d32196f570e8e1c8ea1385352 +Author: +Date: Thu Jul 13 20:27:48 2017 -0700 + + A big boring update to attempt tp streamline my own personal modding in the future. Also renames some files because the old names were awful. From 644e95f3b4360f5528abce4a892a64acd3ba6a90 Mon Sep 17 00:00:00 2001 From: Date: Wed, 8 Aug 2018 00:12:31 -0700 Subject: [PATCH 034/110] Tears, sweat, and lots of code hacks later, StardustCore supports multiplayer custom objects and tools..... --- GeneralMods/StardustCore/ModCore.cs | 79 +++- .../StardustCore/NetCode/ModdedClient.cs | 165 +++++++ .../StardustCore/NetCode/ModdedGameServer.cs | 424 ++++++++++++++++++ .../NetCode/NetBufferReadStream.cs | 99 ++++ .../NetCode/NetBufferWriteStream.cs | 97 ++++ .../StardustCore/NetCode/NetCoreObject.cs | 2 +- .../NetCode/NetTexure2DExtended.cs | 68 +-- .../StardustCore/Objects/CoreObject.cs | 69 ++- .../Serialization/Serialization.cs | 6 + GeneralMods/StardustCore/StardustCore.csproj | 8 + .../UIUtilities/Texture2DExtended.cs | 2 +- .../UIUtilities/TextureManager.cs | 2 +- 12 files changed, 945 insertions(+), 76 deletions(-) create mode 100644 GeneralMods/StardustCore/NetCode/ModdedClient.cs create mode 100644 GeneralMods/StardustCore/NetCode/ModdedGameServer.cs create mode 100644 GeneralMods/StardustCore/NetCode/NetBufferReadStream.cs create mode 100644 GeneralMods/StardustCore/NetCode/NetBufferWriteStream.cs diff --git a/GeneralMods/StardustCore/ModCore.cs b/GeneralMods/StardustCore/ModCore.cs index 2008f0b5..3ac57511 100644 --- a/GeneralMods/StardustCore/ModCore.cs +++ b/GeneralMods/StardustCore/ModCore.cs @@ -3,7 +3,9 @@ using Microsoft.Xna.Framework.Input; using StardewModdingAPI; using StardewValley; using StardewValley.Menus; +using StardewValley.Network; using StardustCore.ModInfo; +using StardustCore.NetCode; using StardustCore.Objects; using StardustCore.Objects.Tools; using StardustCore.Serialization; @@ -13,6 +15,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using System.Reflection; using System.Text; using System.Threading.Tasks; @@ -25,6 +28,9 @@ namespace StardustCore public static Serialization.SerializationManager SerializationManager; public static UIUtilities.TextureManager TextureManager; + public static Multiplayer multiplayer; + bool serverHack; + public static string ContentDirectory; public override void Entry(IModHelper helper) { @@ -51,18 +57,88 @@ namespace StardustCore SerializationManager.initializeDefaultSuportedTypes(); TextureManager = new TextureManager(); - + TextureManager.addTexture("Test1.png", new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png"))); StardewModdingAPI.Events.ControlEvents.KeyPressed += ControlEvents_KeyPressed; StardewModdingAPI.Events.GameEvents.UpdateTick += GameEvents_UpdateTick; + serverHack = false; + + } + + /// + /// Returns the value of the data snagged by reflection. + /// + /// + /// + /// + /// + public static object GetInstanceField(Type type, object instance, string fieldName) + { + BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static; + FieldInfo field = type.GetField(fieldName, bindFlags); + /* + FieldInfo[] meh = type.GetFields(bindFlags); + foreach(var v in meh) + { + if (v.Name == null) + { + continue; + } + Monitor.Log(v.Name); + } + */ + return field.GetValue(instance); + } + + public static void SetInstanceField(Type type, object instance, object value, string fieldName) + { + BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic + | BindingFlags.Static; + FieldInfo field = type.GetField(fieldName, bindFlags); + field.SetValue(instance, value); + return; } private void GameEvents_UpdateTick(object sender, EventArgs e) { + if (Game1.activeClickableMenu != null) + { + if(Game1.activeClickableMenu is StardewValley.Menus.TitleMenu) + { + if (TitleMenu.subMenu == null) return; + if (TitleMenu.subMenu.GetType() == typeof(FarmhandMenu)) + { + if ((TitleMenu.subMenu as FarmhandMenu).client.GetType() != typeof(ModdedClient)) + { + ModCore.ModMonitor.Log("OK!"); + multiplayer = (Multiplayer)GetInstanceField(typeof(Game1), Program.gamePtr, "multiplayer"); + ModCore.ModMonitor.Log("CODE!!!!!!!"); + string address = (string)GetInstanceField(typeof(LidgrenClient), (TitleMenu.subMenu as FarmhandMenu).client, "address"); + (TitleMenu.subMenu as FarmhandMenu).client = new NetCode.ModdedClient(address); + } + } + } + } + if (Game1.server!=null&& serverHack==false) + { + ModCore.ModMonitor.Log("OK!"); + multiplayer = (Multiplayer)GetInstanceField(typeof(Game1), Program.gamePtr, "multiplayer"); + //List servers = Helper.Reflection.GetField>(Game1.server, "servers", true).GetValue(); + NetCode.GameServer server = new NetCode.GameServer(); + Game1.server.stopServer(); + Game1.server = server; + server.startServer(); + + serverHack = true; + } + if (Game1.client !=null && serverHack == false) + { + + } } private void ControlEvents_KeyPressed(object sender, StardewModdingAPI.Events.EventArgsKeyPressed e) @@ -95,6 +171,7 @@ namespace StardustCore // Game1.player.addItemToInventory(collection); CoreObject tile1 = new CoreObject(new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png")),3, Vector2.Zero,9); + tile1.description = "Hello"; tile1.Name = "test"; tile1.displayName = "test"; diff --git a/GeneralMods/StardustCore/NetCode/ModdedClient.cs b/GeneralMods/StardustCore/NetCode/ModdedClient.cs new file mode 100644 index 00000000..23f5bdcd --- /dev/null +++ b/GeneralMods/StardustCore/NetCode/ModdedClient.cs @@ -0,0 +1,165 @@ +using System; +using System.IO; +using Lidgren.Network; +using StardewValley; +using StardewValley.Network; + +namespace StardustCore.NetCode +{ + public class ModdedClient : Client + { + private string address; + private NetClient client; + private bool serverDiscovered; + + public ModdedClient(string address) + { + this.address = address; + } + + public override string getUserID() + { + return ""; + } + + protected override string getHostUserName() + { + return this.client.ServerConnection.RemoteEndPoint.Address.ToString(); + } + + protected override void connectImpl() + { + NetPeerConfiguration config = new NetPeerConfiguration("StardewValley"); + config.EnableMessageType(NetIncomingMessageType.DiscoveryResponse); + config.ConnectionTimeout = 30f; + config.PingInterval = 5f; + config.MaximumTransmissionUnit = 1200; + this.client = new NetClient(config); + this.client.Start(); + int serverPort = 24642; + if (this.address.Contains(":")) + { + string[] strArray = this.address.Split(':'); + this.address = strArray[0]; + serverPort = Convert.ToInt32(strArray[1]); + } + this.client.DiscoverKnownPeer(this.address, serverPort); + } + + public override void disconnect(bool neatly = true) + { + if (this.client.ConnectionStatus != NetConnectionStatus.Disconnected && this.client.ConnectionStatus != NetConnectionStatus.Disconnecting) + { + if (neatly) + this.sendMessage(new OutgoingMessage((byte)19, Game1.player, new object[0])); + this.client.FlushSendQueue(); + this.client.Disconnect(""); + this.client.FlushSendQueue(); + } + this.connectionMessage = (string)null; + } + + protected virtual bool validateProtocol(string version) + { + return version ==ModCore.multiplayer.protocolVersion; + } + + protected override void receiveMessagesImpl() + { + NetIncomingMessage netIncomingMessage; + while ((netIncomingMessage = this.client.ReadMessage()) != null) + { + switch (netIncomingMessage.MessageType) + { + case NetIncomingMessageType.StatusChanged: + this.statusChanged(netIncomingMessage); + continue; + case NetIncomingMessageType.Data: + this.parseDataMessageFromServer(netIncomingMessage); + continue; + case NetIncomingMessageType.DiscoveryResponse: + Console.WriteLine("Found server at " + (object)netIncomingMessage.SenderEndPoint); + if (this.validateProtocol(netIncomingMessage.ReadString())) + { + this.serverName = netIncomingMessage.ReadString(); + this.receiveHandshake(netIncomingMessage); + this.serverDiscovered = true; + continue; + } + this.connectionMessage = "Strings\\UI:CoopMenu_FailedProtocolVersion"; + this.client.Disconnect(""); + continue; + case NetIncomingMessageType.DebugMessage: + case NetIncomingMessageType.WarningMessage: + case NetIncomingMessageType.ErrorMessage: + string str = netIncomingMessage.ReadString(); + Console.WriteLine("{0}: {1}", (object)netIncomingMessage.MessageType, (object)str); + Game1.debugOutput = str; + continue; + default: + continue; + } + } + if (this.client.ServerConnection == null || DateTime.Now.Second % 2 != 0) + return; + Game1.debugOutput = "Ping: " + (object)(float)((double)this.client.ServerConnection.AverageRoundtripTime * 1000.0) + "ms"; + } + + private void receiveHandshake(NetIncomingMessage msg) + { + this.client.Connect(msg.SenderEndPoint.Address.ToString(), msg.SenderEndPoint.Port); + } + + private void statusChanged(NetIncomingMessage message) + { + switch ((NetConnectionStatus)message.ReadByte()) + { + case NetConnectionStatus.Disconnecting: + case NetConnectionStatus.Disconnected: + this.clientRemotelyDisconnected(); + break; + } + } + + private void clientRemotelyDisconnected() + { + this.timedOut = true; + } + + public override void sendMessage(OutgoingMessage message) + { + NetOutgoingMessage message1 = this.client.CreateMessage(); + using (NetBufferWriteStream bufferWriteStream = new NetBufferWriteStream((NetBuffer)message1)) + { + using (BinaryWriter writer = new BinaryWriter((Stream)bufferWriteStream)) + message.Write(writer); + } + int num = (int)this.client.SendMessage(message1, NetDeliveryMethod.ReliableOrdered); + } + + private void parseDataMessageFromServer(NetIncomingMessage dataMsg) + { + using (IncomingMessage message = new IncomingMessage()) + { + using (NetBufferReadStream bufferReadStream = new NetBufferReadStream((NetBuffer)dataMsg)) + { + using (BinaryReader reader = new BinaryReader((Stream)bufferReadStream)) + { + while ((long)dataMsg.LengthBits - dataMsg.Position >= 8L) + { + message.Read(reader); + try + { + this.processIncomingMessage(message); + } + catch(Exception err) + { + + } + } + } + } + } + } + } +} diff --git a/GeneralMods/StardustCore/NetCode/ModdedGameServer.cs b/GeneralMods/StardustCore/NetCode/ModdedGameServer.cs new file mode 100644 index 00000000..6868e7fd --- /dev/null +++ b/GeneralMods/StardustCore/NetCode/ModdedGameServer.cs @@ -0,0 +1,424 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Xml.Serialization; +using Microsoft.Xna.Framework; +using Netcode; +using StardewValley; +using StardewValley.Buildings; +using StardewValley.Locations; +using StardewValley.Minigames; +using StardewValley.Network; + +namespace StardustCore.NetCode +{ + public class GameServer : IGameServer + { + public List servers = new List(); + public List pendingGameAvailableActions = new List(); + + public GameServer() + { + this.servers.Add(ModCore.multiplayer.InitServer((Server)new LidgrenServer((IGameServer)this))); + if (Program.sdk.Networking == null) + return; + this.servers.Add(Program.sdk.Networking.CreateServer((IGameServer)this)); + } + + public int connectionsCount + { + get + { + return this.servers.Sum((Func)(s => s.connectionsCount)); + } + } + + public string getInviteCode() + { + foreach (Server server in this.servers) + { + string inviteCode = server.getInviteCode(); + if (inviteCode != null) + return inviteCode; + } + return (string)null; + } + + public string getUserName(long farmerId) + { + foreach (Server server in this.servers) + { + if (server.getUserName(farmerId) != null) + return server.getUserName(farmerId); + } + return (string)null; + } + + protected void initialize() + { + foreach (Server server in this.servers) + server.initialize(); + this.updateLobbyData(); + } + + public void setPrivacy(ServerPrivacy privacy) + { + foreach (Server server in this.servers) + server.setPrivacy(privacy); + } + + public void stopServer() + { + foreach (Server server in this.servers) + server.stopServer(); + } + + public void receiveMessages() + { + foreach (Server server in this.servers) + { + if (server == null) + { + ModCore.ModMonitor.Log("ERROR"); + continue; + } + server.receiveMessages(); + } + if (!this.isGameAvailable()) + return; + foreach (Action gameAvailableAction in this.pendingGameAvailableActions) + gameAvailableAction(); + this.pendingGameAvailableActions.Clear(); + } + + public void sendMessage(long peerId, OutgoingMessage message) + { + foreach (Server server in this.servers) + server.sendMessage(peerId, message); + } + + public bool canAcceptIPConnections() + { + return this.servers.Select((Func)(s => s.canAcceptIPConnections())).Aggregate(false, (Func)((a, b) => a | b)); + } + + public bool canOfferInvite() + { + return this.servers.Select((Func)(s => s.canOfferInvite())).Aggregate(false, (Func)((a, b) => a | b)); + } + + public void offerInvite() + { + foreach (Server server in this.servers) + { + if (server.canOfferInvite()) + server.offerInvite(); + } + } + + public bool connected() + { + foreach (Server server in this.servers) + { + if (!server.connected()) + return false; + } + return true; + } + + public void sendMessage(long peerId, byte messageType, Farmer sourceFarmer, params object[] data) + { + this.sendMessage(peerId, new OutgoingMessage(messageType, sourceFarmer, data)); + } + + public void sendMessages() + { + foreach (Farmer farmer in (IEnumerable)Game1.otherFarmers.Values) + { + foreach (OutgoingMessage message in (IEnumerable)farmer.messageQueue) + this.sendMessage(farmer.UniqueMultiplayerID, message); + farmer.messageQueue.Clear(); + } + } + + public void startServer() + { + Console.WriteLine("Starting server. Protocol version: " + ModCore.multiplayer.protocolVersion); + this.initialize(); + if ((NetFieldBase>)Game1.serverHost == (NetRef)null) + Game1.serverHost = new NetFarmerRoot(); + Game1.serverHost.Value = Game1.player; + Game1.serverHost.MarkClean(); + Game1.serverHost.Clock.InterpolationTicks = ModCore.multiplayer.defaultInterpolationTicks; + if ((NetFieldBase>)Game1.netWorldState == (NetRef)null) + Game1.netWorldState = new NetRoot((IWorldState)new NetWorldState()); + Game1.netWorldState.Clock.InterpolationTicks = 0; + Game1.netWorldState.Value.UpdateFromGame1(); + } + + public void sendServerIntroduction(long peer) + { + this.sendLocation(peer, (GameLocation)Game1.getFarm()); + this.sendLocation(peer, Game1.getLocationFromName("FarmHouse")); + ModCore.SerializationManager.cleanUpInventory(); + ModCore.SerializationManager.cleanUpWorld(); + ModCore.SerializationManager.cleanUpStorageContainers(); + ModCore.ModMonitor.Log("HELLO LOVE!!!"); + this.sendMessage(peer, new OutgoingMessage((byte)1, Game1.serverHost.Value, new object[3] + { + (object)ModCore.multiplayer.writeObjectFullBytes((NetRoot)Game1.serverHost, new long?(peer)), + (object)ModCore.multiplayer.writeObjectFullBytes(Game1.player.teamRoot, new long?(peer)), + (object)ModCore.multiplayer.writeObjectFullBytes(Game1.netWorldState, new long?(peer)) + })); + foreach (KeyValuePair> root in Game1.otherFarmers.Roots) + { + if (root.Key != Game1.player.UniqueMultiplayerID && root.Key != peer) + this.sendMessage(peer, new OutgoingMessage((byte)2, root.Value.Value, new object[2] + { + (object)this.getUserName(root.Value.Value.UniqueMultiplayerID), + (object)ModCore.multiplayer.writeObjectFullBytes(root.Value, new long?(peer)) + })); + } + ModCore.SerializationManager.restoreAllModObjects(ModCore.SerializationManager.trackedObjectList); + } + + public void playerDisconnected(long disconnectee) + { + Farmer sourceFarmer = (Farmer)null; + Game1.otherFarmers.TryGetValue(disconnectee, out sourceFarmer); + ModCore.multiplayer.playerDisconnected(disconnectee); + if (sourceFarmer == null) + return; + OutgoingMessage message = new OutgoingMessage((byte)19, sourceFarmer, new object[0]); + foreach (long key in (IEnumerable)Game1.otherFarmers.Keys) + { + if (key != disconnectee) + this.sendMessage(key, message); + } + } + + public bool isGameAvailable() + { + bool flag1 = Game1.currentMinigame is Intro || Game1.Date.DayOfMonth == 0; + bool flag2 = Game1.CurrentEvent != null && Game1.CurrentEvent.isWedding; + bool flag3 = Game1.newDaySync != null && !Game1.newDaySync.hasFinished(); + bool flag4 = Game1.player.team.buildingLock.IsLocked(); + if (!Game1.isFestival() && !flag2 && (!flag1 && !flag3)) + return !flag4; + return false; + } + + public bool whenGameAvailable(Action action) + { + if (this.isGameAvailable()) + { + action(); + return true; + } + this.pendingGameAvailableActions.Add(action); + return false; + } + + private void rejectFarmhandRequest(string userID, NetFarmerRoot farmer, Action sendMessage) + { + this.sendAvailableFarmhands(userID, sendMessage); + Console.WriteLine("Rejected request for farmhand " + (farmer.Value != null ? farmer.Value.UniqueMultiplayerID.ToString() : "???")); + } + + private IEnumerable cabins() + { + if (Game1.getFarm() != null) + { + foreach (Building building in Game1.getFarm().buildings) + { + if ((int)((NetFieldBase)building.daysOfConstructionLeft) <= 0 && building.indoors.Value is Cabin) + yield return building.indoors.Value as Cabin; + } + } + } + + private bool authCheck(string userID, Farmer farmhand) + { + if (!Game1.options.enableFarmhandCreation && !(bool)((NetFieldBase)farmhand.isCustomized)) + return false; + if (!(userID == "") && !(farmhand.userID.Value == "")) + return farmhand.userID.Value == userID; + return true; + } + + private Cabin findCabin(Farmer farmhand) + { + foreach (Cabin cabin in this.cabins()) + { + if (cabin.getFarmhand().Value.UniqueMultiplayerID == farmhand.UniqueMultiplayerID) + return cabin; + } + return (Cabin)null; + } + + private Farmer findOriginalFarmhand(Farmer farmhand) + { + return this.findCabin(farmhand)?.getFarmhand().Value; + } + + public void checkFarmhandRequest(string userID, NetFarmerRoot farmer, Action sendMessage, Action approve) + { + if (farmer.Value == null) + { + this.rejectFarmhandRequest(userID, farmer, sendMessage); + } + else + { + long id = farmer.Value.UniqueMultiplayerID; + if (this.whenGameAvailable((Action)(() => + { + Farmer originalFarmhand = this.findOriginalFarmhand(farmer.Value); + if (originalFarmhand == null) + { + Console.WriteLine("Rejected request for farmhand " + (object)id + ": doesn't exist"); + this.rejectFarmhandRequest(userID, farmer, sendMessage); + } + else if (!this.authCheck(userID, originalFarmhand)) + { + Console.WriteLine("Rejected request for farmhand " + (object)id + ": authorization failure"); + this.rejectFarmhandRequest(userID, farmer, sendMessage); + } + else if (Game1.otherFarmers.ContainsKey(id) && !ModCore.multiplayer.isDisconnecting(id) || Game1.serverHost.Value.UniqueMultiplayerID == id) + { + Console.WriteLine("Rejected request for farmhand " + (object)id + ": already in use"); + this.rejectFarmhandRequest(userID, farmer, sendMessage); + } + else if (this.findCabin(farmer.Value).isInventoryOpen()) + { + Console.WriteLine("Rejected request for farmhand " + (object)id + ": inventory in use"); + this.rejectFarmhandRequest(userID, farmer, sendMessage); + } + else + { + Console.WriteLine("Approved request for farmhand " + (object)id); + approve(); + ModCore.multiplayer.addPlayer(farmer); + ModCore.multiplayer.broadcastPlayerIntroduction(farmer); + this.sendServerIntroduction(id); + this.updateLobbyData(); + } + }))) + return; + Console.WriteLine("Postponing request for farmhand " + (object)id); + sendMessage(new OutgoingMessage((byte)11, Game1.player, new object[1] + { + (object)"Strings\\UI:Client_WaitForHostAvailability" + })); + } + } + + public void sendAvailableFarmhands(string userID, Action sendMessage) + { + List> netRefList = new List>(); + Game1.getFarm(); + foreach (Cabin cabin in this.cabins()) + { + NetRef farmhand = cabin.getFarmhand(); + if ((!farmhand.Value.isActive() || ModCore.multiplayer.isDisconnecting(farmhand.Value.UniqueMultiplayerID)) && (this.authCheck(userID, farmhand.Value) && !cabin.isInventoryOpen())) + netRefList.Add(farmhand); + } + using (MemoryStream memoryStream = new MemoryStream()) + { + using (BinaryWriter writer = new BinaryWriter((Stream)memoryStream)) + { + writer.Write(Game1.year); + writer.Write(Utility.getSeasonNumber(Game1.currentSeason)); + writer.Write(Game1.dayOfMonth); + writer.Write((byte)netRefList.Count); + foreach (NetRef netRef in netRefList) + { + try + { + netRef.Serializer = SaveGame.farmerSerializer; + netRef.WriteFull(writer); + } + finally + { + netRef.Serializer = (XmlSerializer)null; + } + } + memoryStream.Seek(0L, SeekOrigin.Begin); + sendMessage(new OutgoingMessage((byte)9, Game1.player, new object[1] + { + (object)memoryStream.ToArray() + })); + } + } + } + + private void sendLocation(long peer, GameLocation location) + { + this.sendMessage(peer, (byte)3, Game1.serverHost.Value, (object)ModCore.multiplayer.writeObjectFullBytes(ModCore.multiplayer.locationRoot(location), new long?(peer))); + } + + private void warpFarmer(Farmer farmer, short x, short y, string name, bool isStructure) + { + GameLocation locationFromName = Game1.getLocationFromName(name, isStructure); + locationFromName.hostSetup(); + farmer.currentLocation = locationFromName; + farmer.Position = new Vector2((float)((int)x * 64), (float)((int)y * 64 - (farmer.Sprite.getHeight() - 32) + 16)); + this.sendLocation(farmer.UniqueMultiplayerID, locationFromName); + } + + public void processIncomingMessage(IncomingMessage message) + { + switch (message.MessageType) + { + case 2: + message.Reader.ReadString(); + ModCore.multiplayer.processIncomingMessage(message); + break; + case 5: + this.warpFarmer(message.SourceFarmer, message.Reader.ReadInt16(), message.Reader.ReadInt16(), message.Reader.ReadString(), message.Reader.ReadByte() == (byte)1); + break; + default: + ModCore.multiplayer.processIncomingMessage(message); + break; + } + if (!ModCore.multiplayer.isClientBroadcastType(message.MessageType)) + return; + this.rebroadcastClientMessage(message); + } + + private void rebroadcastClientMessage(IncomingMessage message) + { + OutgoingMessage message1 = new OutgoingMessage(message); + foreach (long key in (IEnumerable)Game1.otherFarmers.Keys) + { + if (key != message.FarmerID) + this.sendMessage(key, message1); + } + } + + private void setLobbyData(string key, string value) + { + foreach (Server server in this.servers) + server.setLobbyData(key, value); + } + + private bool unclaimedFarmhandsExist() + { + foreach (Cabin cabin in this.cabins()) + { + if (cabin.farmhand.Value == null || cabin.farmhand.Value.userID.Value == "") + return true; + } + return false; + } + + public void updateLobbyData() + { + this.setLobbyData("farmName", Game1.player.farmName.Value); + this.setLobbyData("farmType", Convert.ToString(Game1.whichFarm)); + this.setLobbyData("date", Convert.ToString(new WorldDate(Game1.year, Game1.currentSeason, Game1.dayOfMonth).TotalDays)); + this.setLobbyData("farmhands", string.Join(",", Game1.getAllFarmhands().Select((Func)(farmhand => farmhand.userID.Value)).Where((Func)(user => user != "")))); + this.setLobbyData("newFarmhands", Convert.ToString(Game1.options.enableFarmhandCreation && this.unclaimedFarmhandsExist())); + } + } +} diff --git a/GeneralMods/StardustCore/NetCode/NetBufferReadStream.cs b/GeneralMods/StardustCore/NetCode/NetBufferReadStream.cs new file mode 100644 index 00000000..0b24e59a --- /dev/null +++ b/GeneralMods/StardustCore/NetCode/NetBufferReadStream.cs @@ -0,0 +1,99 @@ +using System; +using System.IO; +using Lidgren.Network; + +namespace StardustCore.NetCode +{ + public class NetBufferReadStream : Stream + { + private long offset; + public NetBuffer Buffer; + + public NetBufferReadStream(NetBuffer buffer) + { + this.Buffer = buffer; + this.offset = buffer.Position; + } + + public override bool CanRead + { + get + { + return true; + } + } + + public override bool CanSeek + { + get + { + return true; + } + } + + public override bool CanWrite + { + get + { + return false; + } + } + + public override long Length + { + get + { + return ((long)this.Buffer.LengthBits - this.offset) / 8L; + } + } + + public override long Position + { + get + { + return (this.Buffer.Position - this.offset) / 8L; + } + set + { + this.Buffer.Position = this.offset + value * 8L; + } + } + + public override void Flush() + { + } + + public override int Read(byte[] buffer, int offset, int count) + { + this.Buffer.ReadBytes(buffer, offset, count); + return count; + } + + public override long Seek(long offset, SeekOrigin origin) + { + switch (origin) + { + case SeekOrigin.Begin: + this.Position = offset; + break; + case SeekOrigin.Current: + this.Position += offset; + break; + case SeekOrigin.End: + this.Position = this.Length + offset; + break; + } + return this.Position; + } + + public override void SetLength(long value) + { + throw new NotSupportedException(); + } + + public override void Write(byte[] buffer, int offset, int count) + { + throw new NotSupportedException(); + } + } +} diff --git a/GeneralMods/StardustCore/NetCode/NetBufferWriteStream.cs b/GeneralMods/StardustCore/NetCode/NetBufferWriteStream.cs new file mode 100644 index 00000000..e3b62d41 --- /dev/null +++ b/GeneralMods/StardustCore/NetCode/NetBufferWriteStream.cs @@ -0,0 +1,97 @@ +using System; +using System.IO; +using Lidgren.Network; + +namespace StardustCore.NetCode +{ + public class NetBufferWriteStream : Stream + { + private int offset; + public NetBuffer Buffer; + + public NetBufferWriteStream(NetBuffer buffer) + { + this.Buffer = buffer; + this.offset = buffer.LengthBits; + } + + public override bool CanRead + { + get + { + return false; + } + } + + public override bool CanSeek + { + get + { + return true; + } + } + + public override bool CanWrite + { + get + { + return true; + } + } + + public override long Length + { + get + { + throw new NotSupportedException(); + } + } + + public override long Position + { + get + { + return (long)((this.Buffer.LengthBits - this.offset) / 8); + } + set + { + this.Buffer.LengthBits = (int)((long)this.offset + value * 8L); + } + } + + public override void Flush() + { + } + + public override int Read(byte[] buffer, int offset, int count) + { + throw new NotSupportedException(); + } + + public override long Seek(long offset, SeekOrigin origin) + { + switch (origin) + { + case SeekOrigin.Begin: + this.Position = offset; + break; + case SeekOrigin.Current: + this.Position += offset; + break; + case SeekOrigin.End: + throw new NotSupportedException(); + } + return this.Position; + } + + public override void SetLength(long value) + { + throw new NotSupportedException(); + } + + public override void Write(byte[] buffer, int offset, int count) + { + this.Buffer.Write(buffer, offset, count); + } + } +} diff --git a/GeneralMods/StardustCore/NetCode/NetCoreObject.cs b/GeneralMods/StardustCore/NetCode/NetCoreObject.cs index 653102fe..47bfdf7f 100644 --- a/GeneralMods/StardustCore/NetCode/NetCoreObject.cs +++ b/GeneralMods/StardustCore/NetCode/NetCoreObject.cs @@ -63,7 +63,7 @@ namespace StardustCore.NetCode { texture = new NetTexture2DExtended(Value.getExtendedTexture()); - texture.WriteFull(writer); + texture.Write(writer); which = new NetInt(Value.ParentSheetIndex); which.Write(writer); diff --git a/GeneralMods/StardustCore/NetCode/NetTexure2DExtended.cs b/GeneralMods/StardustCore/NetCode/NetTexure2DExtended.cs index 47d8cfe6..4b3905f9 100644 --- a/GeneralMods/StardustCore/NetCode/NetTexure2DExtended.cs +++ b/GeneralMods/StardustCore/NetCode/NetTexure2DExtended.cs @@ -38,86 +38,20 @@ namespace StardustCore.NetCode protected override void ReadDelta(BinaryReader reader, NetVersion version) { - - NetInt Width = new NetInt(); - Width.Read(reader,version); - int width = Width.Value; - - NetInt Height = new NetInt(); - Height.Read(reader, version); - int height = Height.Value; - - NetString name = new NetString(); name.Read(reader, version); - NetString path = new NetString(); - path.Read(reader, version); - - - NetInt count = new NetInt(); - count.Read(reader, version); - - List bytes = new List(); - //colorsOne = reader.ReadBytes(); - - for(int i=0; i < count.Value; i++) - { - NetColor col = new NetColor(); - col.Read(reader, version); - bytes.Add(col.Value); - } - - ModCore.ModMonitor.Log("Finished length: "+bytes.Count.ToString()); - ModCore.ModMonitor.Log("W: " + width.ToString()); - ModCore.ModMonitor.Log("H: " + height.ToString()); //Texture2D texture = new Texture2D(Game1.graphics.GraphicsDevice,width,height); - Texture2DExtended texture = new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png")); + Texture2DExtended texture = ModCore.TextureManager.getTexture(name.Value); this.Value = texture; - - //texture.SetData(bytes.ToArray()); - - //Value.Name = name.Value; - //Value.path = path.Value; - //Value.setTexure(texture); } protected override void WriteDelta(BinaryWriter writer) { - - int size = Value.getTexture().Width * Value.getTexture().Height; - NetInt Width = new NetInt(Value.getTexture().Width); - Width.Write(writer); - - NetInt Height = new NetInt(Value.getTexture().Height); - Height.Write(writer); - - NetString name = new NetString(Value.Name); name.Write(writer); - - NetString path = new NetString(Value.path); - path.Write(writer); - //writer.Write(size); - - Texture2D texture = Value.getTexture(); - Color[] colorsOne = new Color[size]; //The hard to read,1D array - - texture.GetData(colorsOne); - - NetInt count = new NetInt(colorsOne.Length); - count.Write(writer); - - ModCore.ModMonitor.Log("Color length:" + count.ToString()); - - foreach(var v in colorsOne) - { - NetColor col = new NetColor(v); - col.Write(writer); - } - } diff --git a/GeneralMods/StardustCore/Objects/CoreObject.cs b/GeneralMods/StardustCore/Objects/CoreObject.cs index f83f6d6f..19abd983 100644 --- a/GeneralMods/StardustCore/Objects/CoreObject.cs +++ b/GeneralMods/StardustCore/Objects/CoreObject.cs @@ -1,6 +1,7 @@ using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using Netcode; +using Newtonsoft.Json; using StardewModdingAPI; using StardewValley; using StardewValley.Locations; @@ -11,6 +12,7 @@ using StardustCore.Interfaces; using StardustCore.UIUtilities; using System; using System.Collections.Generic; +using System.IO; using System.Xml.Serialization; namespace StardustCore @@ -42,7 +44,7 @@ namespace StardustCore public string description; - [XmlIgnore] + protected Texture2DExtended TextureSheet; public new bool flipped; @@ -80,6 +82,7 @@ namespace StardustCore public string serializationName; + public string textureName; public override string Name { @@ -130,10 +133,6 @@ namespace StardustCore public CoreObject(Texture2DExtended texture,int which, Vector2 Tile, int InventoryMaxSize):base() { var ok=Game1.getAllFarmers(); - foreach (var v in ok){ - this.owner.Value = v.UniqueMultiplayerID; - break; - } this.Type = "Not Sure"; this.CanBeSetDown = true; this.CanBeGrabbed = true; @@ -1223,6 +1222,66 @@ namespace StardustCore { this.TextureSheet = texture; } + + + /// + /// Serializes the said item properly. + /// + /// + public static void Serialize(Item I) + { + String savePath = ModCore.SerializationManager.playerInventoryPath; + String fileName = I.Name + ".json"; + String resultPath = Path.Combine(savePath, fileName); + int count = 0; + while (File.Exists(resultPath)) + { + resultPath = Serialization.SerializationManager.getValidSavePathIfDuplicatesExist(I, savePath, count); + count++; + } + JsonSerializerSettings settings = new JsonSerializerSettings(); + settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; + (I as CoreObject).textureName = (I as CoreObject).TextureSheet.Name; + string json = JsonConvert.SerializeObject(I, Formatting.Indented,settings); + System.IO.File.WriteAllText(resultPath, json); + //StardustCore.ModCore.ModHelper.WriteJsonFile(resultPath, (CoreObject)I); + } + + /// + /// Serializes the said item to a chest. + /// + /// + /// + public static void SerializeToContainer(Item I, string s) + { + String savePath = s; + String fileName = I.Name + ".json"; + String resultPath = Path.Combine(savePath, fileName); + int count = 0; + while (File.Exists(resultPath)) + { + resultPath = Serialization.SerializationManager.getValidSavePathIfDuplicatesExist(I, savePath, count); + count++; + } + JsonSerializerSettings settings = new JsonSerializerSettings(); + settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; + (I as CoreObject).textureName = (I as CoreObject).TextureSheet.Name; + string json = JsonConvert.SerializeObject(I, Formatting.Indented, settings); + System.IO.File.WriteAllText(resultPath, json); + //StardustCore.ModCore.ModHelper.WriteJsonFile(resultPath, (CoreObject)I); + } + + /// + /// Deserializes the object from a .json. + /// + /// + /// + public static CoreObject Deserialize(string data) + { + CoreObject obj = ModCore.ModHelper.ReadJsonFile(data); + obj.TextureSheet = ModCore.TextureManager.getTexture(obj.textureName); + return obj; + } } } diff --git a/GeneralMods/StardustCore/Serialization/Serialization.cs b/GeneralMods/StardustCore/Serialization/Serialization.cs index f59e351b..1b858e0b 100644 --- a/GeneralMods/StardustCore/Serialization/Serialization.cs +++ b/GeneralMods/StardustCore/Serialization/Serialization.cs @@ -842,6 +842,12 @@ public string ParseXMLType(string path) public void initializeDefaultSuportedTypes() { initializeSupportedToolTypes(); + initializeSupportedObjectTypes(); + } + + private void initializeSupportedObjectTypes() + { + this.acceptedTypes.Add(typeof(CoreObject).ToString(), new SerializerDataNode(CoreObject.Serialize, CoreObject.Deserialize, new SerializerDataNode.WorldParsingFunction(CoreObject.Serialize), new SerializerDataNode.SerializingToContainerFunction(CoreObject.SerializeToContainer))); } /// diff --git a/GeneralMods/StardustCore/StardustCore.csproj b/GeneralMods/StardustCore/StardustCore.csproj index fd8c09bd..e07c8a51 100644 --- a/GeneralMods/StardustCore/StardustCore.csproj +++ b/GeneralMods/StardustCore/StardustCore.csproj @@ -71,6 +71,10 @@ MinimumRecommendedRules.ruleset + + False + ..\..\..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Lidgren.Network.dll + ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll @@ -89,6 +93,10 @@ + + + + diff --git a/GeneralMods/StardustCore/UIUtilities/Texture2DExtended.cs b/GeneralMods/StardustCore/UIUtilities/Texture2DExtended.cs index 49de1b8b..08a31641 100644 --- a/GeneralMods/StardustCore/UIUtilities/Texture2DExtended.cs +++ b/GeneralMods/StardustCore/UIUtilities/Texture2DExtended.cs @@ -12,7 +12,7 @@ namespace StardustCore.UIUtilities public class Texture2DExtended { public string Name; - private Texture2D texture; + public Texture2D texture; public string path; IModHelper helper; diff --git a/GeneralMods/StardustCore/UIUtilities/TextureManager.cs b/GeneralMods/StardustCore/UIUtilities/TextureManager.cs index c4c0402a..33071a4d 100644 --- a/GeneralMods/StardustCore/UIUtilities/TextureManager.cs +++ b/GeneralMods/StardustCore/UIUtilities/TextureManager.cs @@ -29,7 +29,7 @@ namespace StardustCore.UIUtilities { foreach(var v in textures) { - if (v.Key == name) return v.Value; + if (v.Key == name) return v.Value.Copy(); } return null; } From 21234d06efc98e37b85b78a22afa04aeacba649a Mon Sep 17 00:00:00 2001 From: Date: Wed, 8 Aug 2018 00:18:12 -0700 Subject: [PATCH 035/110] Init textureName on object creation --- GeneralMods/StardustCore/Objects/CoreObject.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/GeneralMods/StardustCore/Objects/CoreObject.cs b/GeneralMods/StardustCore/Objects/CoreObject.cs index 19abd983..14abe0d9 100644 --- a/GeneralMods/StardustCore/Objects/CoreObject.cs +++ b/GeneralMods/StardustCore/Objects/CoreObject.cs @@ -205,6 +205,8 @@ namespace StardustCore this.locationsName = ""; this.position = this.TileLocation * (Game1.tileSize); this.thisLocation = null; + + this.textureName = this.TextureSheet.Name; } public override string getDescription() From 298b7c4a2482174fffc353a0f9cb0e4b4965778a Mon Sep 17 00:00:00 2001 From: Date: Wed, 8 Aug 2018 01:39:13 -0700 Subject: [PATCH 036/110] Updatd timefreeze with multiplayer checks. Also surpressed NetAnimationManager glitch. --- .../StardustCore/NetCode/NetCoreObject.cs | 9 +- GeneralMods/TimeFreeze/Framework/ModConfig.cs | 25 ++++ GeneralMods/TimeFreeze/TimeFreeze.cs | 110 +++++++++++++++++- GeneralMods/TimeFreeze/manifest.json | 2 +- 4 files changed, 139 insertions(+), 7 deletions(-) diff --git a/GeneralMods/StardustCore/NetCode/NetCoreObject.cs b/GeneralMods/StardustCore/NetCode/NetCoreObject.cs index 69a07b64..61ff4821 100644 --- a/GeneralMods/StardustCore/NetCode/NetCoreObject.cs +++ b/GeneralMods/StardustCore/NetCode/NetCoreObject.cs @@ -69,7 +69,7 @@ namespace StardustCore.NetCode { texture = new NetTexture2DExtended(); - texture.ReadFull(reader, version); + texture.ReadData(reader, version); Value.setExtendedTexture(texture.Value); which = new NetInt(); @@ -95,10 +95,11 @@ namespace StardustCore.NetCode drawPosition = new NetVector2(); drawPosition.Read(reader, version); Value.drawPosition = drawPosition.Value; - + /* animationManager = new NetAnimationManager(); animationManager.Read(reader, version); Value.animationManager = animationManager.Value; + */ } @@ -106,7 +107,7 @@ namespace StardustCore.NetCode { texture = new NetTexture2DExtended(Value.getExtendedTexture()); - texture.Write(writer); + texture.WriteData(writer); which = new NetInt(Value.ParentSheetIndex); which.Write(writer); @@ -126,11 +127,13 @@ namespace StardustCore.NetCode drawPosition = new NetVector2(Value.drawPosition); drawPosition.Write(writer); + /* if (Value.animationManager != null) { animationManager = new NetAnimationManager(Value.animationManager); animationManager.Write(writer); } + */ } } } diff --git a/GeneralMods/TimeFreeze/Framework/ModConfig.cs b/GeneralMods/TimeFreeze/Framework/ModConfig.cs index 4b3cdde3..a6b5be12 100644 --- a/GeneralMods/TimeFreeze/Framework/ModConfig.cs +++ b/GeneralMods/TimeFreeze/Framework/ModConfig.cs @@ -8,5 +8,30 @@ /// Whether time should be unfrozen while the player is swimming in the vanilla bathhouse. public bool PassTimeWhileSwimmingInBathhouse { get; set; } = true; + + /// + /// Whether time passes normally inside the mine. + /// + public bool PassTimeWhileInsideMine { get; set; } = true; + + /// + /// Whether time passes normally inside the skull cavern. + /// + public bool PassTimeWhileInsideSkullCave { get; set; } = true; + + /// + /// Checks if just one player meets the conditions to freeze time, and then freeze time. + /// + public bool freezeIfEvenOnePlayerMeetsTimeFreezeConditions { get; set; } = false; + + /// + /// Checks if the majority of players can freeze time and then freeze time. + /// + public bool freezeIfMajorityPlayersMeetsTimeFreezeConditions { get; set; } = false; + + /// + /// Checks if all players can freeze time and if so, do so. + /// + public bool freezeIfAllPlayersMeetTimeFreezeConditions { get; set; } = false; } } diff --git a/GeneralMods/TimeFreeze/TimeFreeze.cs b/GeneralMods/TimeFreeze/TimeFreeze.cs index 1d0a7964..0380fd0a 100644 --- a/GeneralMods/TimeFreeze/TimeFreeze.cs +++ b/GeneralMods/TimeFreeze/TimeFreeze.cs @@ -16,6 +16,8 @@ namespace Omegasis.TimeFreeze /// The mod configuration. private ModConfig Config; + public int oldInterval; + /********* ** Public methods @@ -40,8 +42,92 @@ namespace Omegasis.TimeFreeze if (!Context.IsWorldReady) return; - if (this.ShouldFreezeTime(Game1.player, Game1.player.currentLocation)) - Game1.gameTimeInterval = 0; + if (Game1.gameTimeInterval != 0) + { + oldInterval = Game1.gameTimeInterval; + } + + if (Game1.IsMultiplayer) + { + if (Config.freezeIfEvenOnePlayerMeetsTimeFreezeConditions) + { + bool isAnyFarmerSuitable = false; + foreach (Farmer farmer in Game1.getAllFarmers()) + { + if (this.ShouldFreezeTime(farmer, farmer.currentLocation)) + { + Game1.gameTimeInterval = 0; + isAnyFarmerSuitable = true; + } + } + if (isAnyFarmerSuitable == false) + { + Game1.gameTimeInterval = oldInterval; + } + } + + else if (Config.freezeIfMajorityPlayersMeetsTimeFreezeConditions) + { + int freezeCount = 0; + int playerCount = 0; + foreach (Farmer farmer in Game1.getAllFarmers()) + { + playerCount++; + if (this.ShouldFreezeTime(farmer, farmer.currentLocation)) + { + //Game1.gameTimeInterval = 0; + freezeCount++; + } + } + if (freezeCount >= (playerCount / 2)) + { + Game1.gameTimeInterval = 0; + + } + else + { + Game1.gameTimeInterval = oldInterval; + } + } + + else if (Config.freezeIfAllPlayersMeetTimeFreezeConditions) + { + int freezeCount = 0; + int playerCount = 0; + foreach (Farmer farmer in Game1.getAllFarmers()) + { + playerCount++; + if (this.ShouldFreezeTime(farmer, farmer.currentLocation)) + { + //Game1.gameTimeInterval = 0; + freezeCount++; + } + } + if (freezeCount >= playerCount) + { + Game1.gameTimeInterval = 0; + + } + else + { + Game1.gameTimeInterval = oldInterval; + } + } + + + } + else + { + Farmer player = Game1.player; + if (this.ShouldFreezeTime(player, player.currentLocation)) + { + Game1.gameTimeInterval = 0; + } + else + { + Game1.gameTimeInterval = oldInterval; + } + } } /// Get whether time should be frozen for the player at the given location. @@ -49,8 +135,26 @@ namespace Omegasis.TimeFreeze /// The location to check. private bool ShouldFreezeTime(StardewValley.Farmer player, GameLocation location) { - if (location.Name == "Mine" || location.Name == "SkullCave"|| location.Name.StartsWith("SkullCave") || location.Name.StartsWith("UndergroundMine") || location.IsOutdoors) + + if (Config.PassTimeWhileInsideMine==false) + { + if(location.Name == "Mine" || location.Name.StartsWith("UndergroundMine")) + { + return true; + } + } + + if (Config.PassTimeWhileInsideSkullCave==false) + { + if (location.Name == "SkullCave" || location.Name.StartsWith("SkullCave")) + { + return true; + } + } + + if (location.IsOutdoors) return false; + if (player.swimming.Value) { if (this.Config.PassTimeWhileSwimmingInBathhouse && location is BathHousePool) diff --git a/GeneralMods/TimeFreeze/manifest.json b/GeneralMods/TimeFreeze/manifest.json index d79ba422..e905b074 100644 --- a/GeneralMods/TimeFreeze/manifest.json +++ b/GeneralMods/TimeFreeze/manifest.json @@ -1,7 +1,7 @@ { "Name": "Time Freeze", "Author": "Alpha_Omegasis", - "Version": "1.4.0", + "Version": "1.5.0", "Description": "Emulates old Harvest Moon-style games where time is frozen inside.", "UniqueID": "Omegasis.TimeFreeze", "EntryDll": "TimeFreeze.dll", From 36b33af55b26be953d11f8137fca9378bb03df3a Mon Sep 17 00:00:00 2001 From: Date: Wed, 8 Aug 2018 09:18:05 -0700 Subject: [PATCH 037/110] Fixed time freeze issues. --- GeneralMods/TimeFreeze/TimeFreeze.cs | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/GeneralMods/TimeFreeze/TimeFreeze.cs b/GeneralMods/TimeFreeze/TimeFreeze.cs index 0380fd0a..977920dd 100644 --- a/GeneralMods/TimeFreeze/TimeFreeze.cs +++ b/GeneralMods/TimeFreeze/TimeFreeze.cs @@ -29,6 +29,7 @@ namespace Omegasis.TimeFreeze this.Config = helper.ReadConfig(); GameEvents.UpdateTick += this.GameEvents_UpdateTick; + //oldInterval = 7; } /********* @@ -42,17 +43,22 @@ namespace Omegasis.TimeFreeze if (!Context.IsWorldReady) return; + /* if (Game1.gameTimeInterval != 0) { oldInterval = Game1.gameTimeInterval; + if (oldInterval < 3) + { + oldInterval = 7; + } } - + */ if (Game1.IsMultiplayer) { if (Config.freezeIfEvenOnePlayerMeetsTimeFreezeConditions) { bool isAnyFarmerSuitable = false; - foreach (Farmer farmer in Game1.getAllFarmers()) + foreach (Farmer farmer in Game1.getOnlineFarmers()) { if (this.ShouldFreezeTime(farmer, farmer.currentLocation)) { @@ -62,7 +68,7 @@ namespace Omegasis.TimeFreeze } if (isAnyFarmerSuitable == false) { - Game1.gameTimeInterval = oldInterval; + // Game1.gameTimeInterval += Game1.currentGameTime.ElapsedGameTime.Milliseconds; } } @@ -70,7 +76,7 @@ namespace Omegasis.TimeFreeze { int freezeCount = 0; int playerCount = 0; - foreach (Farmer farmer in Game1.getAllFarmers()) + foreach (Farmer farmer in Game1.getOnlineFarmers()) { playerCount++; if (this.ShouldFreezeTime(farmer, farmer.currentLocation)) @@ -86,7 +92,7 @@ namespace Omegasis.TimeFreeze } else { - Game1.gameTimeInterval = oldInterval; + // Game1.gameTimeInterval += Game1.currentGameTime.ElapsedGameTime.Milliseconds; } } @@ -94,7 +100,7 @@ namespace Omegasis.TimeFreeze { int freezeCount = 0; int playerCount = 0; - foreach (Farmer farmer in Game1.getAllFarmers()) + foreach (Farmer farmer in Game1.getOnlineFarmers()) { playerCount++; if (this.ShouldFreezeTime(farmer, farmer.currentLocation)) @@ -110,7 +116,7 @@ namespace Omegasis.TimeFreeze } else { - Game1.gameTimeInterval = oldInterval; + // Game1.gameTimeInterval = oldInterval; } } @@ -125,7 +131,7 @@ namespace Omegasis.TimeFreeze } else { - Game1.gameTimeInterval = oldInterval; + // Game1.gameTimeInterval = oldInterval; } } } @@ -152,8 +158,8 @@ namespace Omegasis.TimeFreeze } } - if (location.IsOutdoors) - return false; + if (location.IsOutdoors==false) + return true; if (player.swimming.Value) { @@ -162,7 +168,7 @@ namespace Omegasis.TimeFreeze if (this.Config.PassTimeWhileSwimming) return false; } - return true; + return false; } } } From 1888ad5fa7dbe5b27e01c7ecb96b85aa51c5be7a Mon Sep 17 00:00:00 2001 From: Date: Wed, 8 Aug 2018 09:32:02 -0700 Subject: [PATCH 038/110] Fixed custom serialization issues for FarmHands --- GeneralMods/StardustCore/ModCore.cs | 36 +++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/GeneralMods/StardustCore/ModCore.cs b/GeneralMods/StardustCore/ModCore.cs index 9bcfe760..52b4bc92 100644 --- a/GeneralMods/StardustCore/ModCore.cs +++ b/GeneralMods/StardustCore/ModCore.cs @@ -31,6 +31,8 @@ namespace StardustCore public static Multiplayer multiplayer; bool serverHack; + private Type lastMenuType; + public static string ContentDirectory; public override void Entry(IModHelper helper) { @@ -49,6 +51,8 @@ namespace StardustCore StardewModdingAPI.Events.SaveEvents.AfterSave += SaveEvents_AfterSave; StardewModdingAPI.Events.SaveEvents.BeforeSave += SaveEvents_BeforeSave; StardewModdingAPI.Events.SaveEvents.AfterLoad += SaveEvents_AfterLoad; + StardewModdingAPI.Events.MenuEvents.MenuChanged += MenuEvents_MenuChanged; + StardewModdingAPI.Events.MenuEvents.MenuClosed += MenuEvents_MenuClosed; IlluminateFramework.Colors.initializeColors(); ContentDirectory = Path.Combine(ModHelper.DirectoryPath, "Content"); @@ -67,6 +71,38 @@ namespace StardustCore } + private void MenuEvents_MenuClosed(object sender, StardewModdingAPI.Events.EventArgsClickableMenuClosed e) + { + if (Game1.IsMasterGame == false) + { + if (this.lastMenuType == null) + { + return; + } + else + { + if (lastMenuType == typeof(StardewValley.Menus.SaveGameMenu) ||lastMenuType==typeof(StardewValley.Menus.ReadyCheckDialog)) + { + SerializationManager.restoreAllModObjects(SerializationManager.trackedObjectList); + } + } + } + } + + private void MenuEvents_MenuChanged(object sender, StardewModdingAPI.Events.EventArgsClickableMenuChanged e) + { + if (Game1.IsMasterGame == false) + { + if (Game1.activeClickableMenu.GetType() == typeof(StardewValley.Menus.ReadyCheckDialog)) + { + SerializationManager.cleanUpInventory(); + SerializationManager.cleanUpWorld(); + SerializationManager.cleanUpStorageContainers(); + } + } + lastMenuType = Game1.activeClickableMenu.GetType(); + } + /// /// Returns the value of the data snagged by reflection. /// From 32b3e9e6252b62af03c602a8942c4d461560603a Mon Sep 17 00:00:00 2001 From: Date: Wed, 8 Aug 2018 10:44:44 -0700 Subject: [PATCH 039/110] Nightfishing AssetEditor, Night owl update, and more bug fixes for Stardust --- GeneralMods/NightOwl/Framework/ModConfig.cs | 6 ++ .../NightOwl/Framework/NightFishing.cs | 91 +++++++++++++++++++ GeneralMods/NightOwl/NightOwl.cs | 5 + GeneralMods/NightOwl/NightOwl.csproj | 1 + GeneralMods/StardustCore/ModCore.cs | 13 +-- .../StardustCore/NetCode/ModdedClient.cs | 9 +- .../StardustCore/NetCode/NetCoreObject.cs | 23 +++-- 7 files changed, 121 insertions(+), 27 deletions(-) create mode 100644 GeneralMods/NightOwl/Framework/NightFishing.cs diff --git a/GeneralMods/NightOwl/Framework/ModConfig.cs b/GeneralMods/NightOwl/Framework/ModConfig.cs index d161c911..7dfcbed4 100644 --- a/GeneralMods/NightOwl/Framework/ModConfig.cs +++ b/GeneralMods/NightOwl/Framework/ModConfig.cs @@ -23,5 +23,11 @@ /// Whether to keep stamina as-is after the player collapses. public bool KeepStaminaAfterCollapse { get; set; } = true; + + + /// + /// Whether or not to use the internal NightFish asset editor. When false, it will just use the Fish.xnb file. + /// + public bool UseInternalNightFishAssetEditor { get; set; } = true; } } diff --git a/GeneralMods/NightOwl/Framework/NightFishing.cs b/GeneralMods/NightOwl/Framework/NightFishing.cs new file mode 100644 index 00000000..79541d6b --- /dev/null +++ b/GeneralMods/NightOwl/Framework/NightFishing.cs @@ -0,0 +1,91 @@ +using StardewModdingAPI; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Omegasis.NightOwl.Framework +{ + class NightFishing : IAssetEditor + { + public bool CanEdit(IAssetInfo asset) + { + return asset.AssetNameEquals(@"Data\Fish"); + } + + public void Edit(IAssetData asset) + { + Dictionary nightFish=new Dictionary // (T)(object) is a trick to cast anything to T if we know it's compatible + { + [128] = "Pufferfish/80/floater/1/36/1200 1600/summer/sunny/690 .4 685 .1/4/.3/.5/0", + [129] = "Anchovy/30/dart/1/16/600 3000/spring fall/both/682 .2/1/.25/.3/0", + [130] = "Tuna/70/smooth/12/60/600 1900/summer winter/both/689 .35 681 .1/3/.15/.55/0", + [131] = "Sardine/30/dart/1/12/600 1900/spring summer fall winter/both/683 .3/1/.65/.1/0", + [132] = "Bream/35/smooth/12/30/1800 3000/spring summer fall winter/both/684 .35/1/.45/.1/0", + [136] = "Largemouth Bass/50/mixed/11/30/600 1900/spring summer fall winter/both/685 .35/3/.4/.2/0", + [137] = "Smallmouth Bass/28/mixed/12/24/600 3000/spring fall/both/682 .2/1/.45/.1/0", + [138] = "Rainbow Trout/45/mixed/10/25/600 1900/summer/sunny/684 .35/2/.35/.3/0", + [139] = "Salmon/50/mixed/24/65/600 1900/fall/both/684 .35/3/.4/.2/0", + [140] = "Walleye/45/smooth/10/40/1200 3000/fall winter/rainy/680 .35/2/.4/.15/0", + [141] = "Perch/35/dart/10/24/600 3000/winter/both/683 .2/1/.45/.1/0", + [142] = "Carp/15/mixed/15/50/600 3000/spring summer fall/both/682 .2/1/.45/.1/0", + [143] = "Catfish/75/mixed/12/72/600 2400/spring fall winter/rainy/689 .4 680 .1/4/.4/.1/0", + [144] = "Pike/60/dart/15/60/600 3000/summer winter/both/690 .3 681 .1/3/.4/.15/0", + [145] = "Sunfish/30/mixed/5/15/600 1900/spring summer/sunny/683 .2/1/.45/.1/0", + [146] = "Red Mullet/55/smooth/8/22/600 1900/summer winter/both/680 .25/2/.4/.15/0", + [147] = "Herring/25/dart/8/20/600 3000/spring winter/both/685 .2/1/.45/.1/0", + [148] = "Eel/70/smooth/12/80/1600 3000/spring fall/rainy/689 .35 680 .1/3/.55/.1/0", + [149] = "Octopus/95/sinker/12/48/600 1300/summer/both/688 .6 684 .1/5/.1/.08/0", + [150] = "Red Snapper/40/mixed/8/25/600 1900/summer fall winter/rainy/682 .25/2/.45/.1/0", + [151] = "Squid/75/sinker/12/48/1800 3000/winter/both/690 .35 680 .1/3/.35/.3/0", + [152] = "Seaweed/5/floater/5/30/600 3000/spring summer fall winter/both/-1/0/.3/0/0", + [153] = "Green Algae/5/floater/5/30/600 3000/spring summer fall winter/both/-1/0/.3/0/0", + [154] = "Sea Cucumber/40/sinker/3/20/600 1900/fall winter/both/683 .2 689 .4/3/.25/.25/0", + [155] = "Super Cucumber/80/sinker/12/36/1800 3000/summer winter/both/683 .2 689 .4/4/.1/.25/0", + [156] = "Ghostfish/50/mixed/10/35/600 3000/spring summer fall winter/both/684 .35/2/.3/.3/0", + [157] = "White Algae/5/floater/5/30/600 3000/spring summer fall winter/both/-1/0/.3/0/0", + [158] = "Stonefish/65/sinker/15/15/600 3000/spring summer fall winter/both/689 .2/2/.1/.1/3", + [159] = "Crimsonfish/95/mixed/20/20/600 2000/winter/both/690 .15/4/.1/.1/5", + [160] = "Angler/85/smooth/18/18/600 3000/spring summer fall winter/both/690 .1/4/.05/.1/3", + [161] = "Ice Pip/85/dart/8/8/600 3000/spring summer fall winter/both/682 .1/2/.05/.1/5", + [162] = "Lava Eel/90/mixed/32/32/600 3000/spring summer fall winter/both/684 .1/2/.05/.1/7", + [163] = "Legend/110/mixed/50/50/600 2000/spring summer fall winter/rainy/688 .05/5/0/.1/10", + [164] = "Sandfish/65/mixed/8/24/600 2000/spring summer fall winter/both/682 .2/1/.65/.1/0", + [165] = "Scorpion Carp/90/dart/12/32/600 2000/spring summer fall winter/both/683 .4/2/.15/.1/4", + [372] = "Clam/trap/.15/681 .35/ocean/1/5", + [682] = "Mutant Carp/80/dart/36/36/600 3000/spring summer fall winter/both/688 .1/5/0/.02/0", + [698] = "Sturgeon/78/mixed/12/60/600 1900/summer winter/both/689 .35 682 .1/3/.35/.2/0", + [699] = "Tiger Trout/60/dart/10/20/600 1900/spring summer fall winter/both/688 .45 685 .2/3/.2/.1/0", + [700] = "Bullhead/46/smooth/12/30/600 3000/spring summer fall winter/both/681 .25/2/.35/.2/0", + [701] = "Tilapia/50/mixed/11/30/600 1400/summer fall/both/683 .35/3/.4/.2/0", + [702] = "Chub/35/dart/12/24/600 3000/spring summer fall winter/both/684 .35/1/.45/.1/0", + [704] = "Dorado/78/mixed/24/32/600 1900/summer/both/689 .35 681 .1/3/.15/.1/0", + [705] = "Albacore/60/mixed/20/40/600 1100 1800 3000/fall winter/both/685 .35/3/.3/.15/0", + [706] = "Shad/45/smooth/20/48/900 3000/spring summer fall/rainy/684 .35/2/.35/.2/0", + [707] = "Lingcod/85/mixed/30/50/600 3000/winter/both/690 .4 685 .2/3/.3/.05/0", + [708] = "Halibut/50/sinker/10/33/600 1100 1900 3000/spring summer winter/both/681 .35/3/.4/.2/0", + [715] = "Lobster/trap/.05/688 .45 689 .35 690 .35/ocean/2/20", + [716] = "Crayfish/trap/.35/682 .4/freshwater/1/8", + [717] = "Crab/trap/.1/684 .45/ocean/1/20", + [718] = "Cockle/trap/.3/680 .2/ocean/1/5", + [719] = "Mussel/trap/.35/683 .15/ocean/1/5", + [720] = "Shrimp/trap/.2/681 .35/ocean/1/3", + [721] = "Snail/trap/.25/680 .35/freshwater/1/5", + [722] = "Periwinkle/trap/.55/681 .35/freshwater/1/3", + [723] = "Oyster/trap/.15/682 .35/ocean/1/5", + [734] = "Woodskip/50/mixed/11/30/600 3000/spring summer fall winter/both/685 .35/3/.2/.1/0", + [775] = "Glacierfish/100/mixed/27/27/600 2000/winter/sunny/688 .1/5/0/.02/7", + [795] = "Void Salmon/80/mixed/24/65/600 3000/spring summer fall winter/both/685 .35/2/.33/.1/0", + [796] = "Slimejack/55/dart/8/25/600 3000/spring summer fall winter/both/685 .35/3/.4/.1/0", + [798] = "Midnight Squid/55/sinker/8/25/600 3000/spring summer fall winter/both/685 .35/3/.4/.1/0", + [799] = "Spook Fish/60/dart/8/25/600 3000/spring summer fall winter/both/685 .35/3/.4/.1/0", + [800] = "Blobfish/75/floater/8/25/600 3000/spring summer fall winter/both/685 .35/3/.4/.1/0", + }; + foreach (KeyValuePair pair in nightFish) { + asset.AsDictionary().Set(pair.Key, pair.Value); + } + } + + } +} diff --git a/GeneralMods/NightOwl/NightOwl.cs b/GeneralMods/NightOwl/NightOwl.cs index d0a354fd..748496f0 100644 --- a/GeneralMods/NightOwl/NightOwl.cs +++ b/GeneralMods/NightOwl/NightOwl.cs @@ -95,8 +95,13 @@ namespace Omegasis.NightOwl /// Provides simplified APIs for writing mods. public override void Entry(IModHelper helper) { + this.Config = helper.ReadConfig(); + if (Config.UseInternalNightFishAssetEditor) + { + this.Helper.Content.AssetEditors.Add(new NightFishing()); + } TimeEvents.TimeOfDayChanged += this.TimeEvents_TimeOfDayChanged; TimeEvents.AfterDayStarted += this.TimeEvents_AfterDayStarted; SaveEvents.AfterLoad += this.SaveEvents_AfterLoad; diff --git a/GeneralMods/NightOwl/NightOwl.csproj b/GeneralMods/NightOwl/NightOwl.csproj index dc159ab2..1500fca6 100644 --- a/GeneralMods/NightOwl/NightOwl.csproj +++ b/GeneralMods/NightOwl/NightOwl.csproj @@ -76,6 +76,7 @@ Properties\GlobalAssemblyInfo.cs + diff --git a/GeneralMods/StardustCore/ModCore.cs b/GeneralMods/StardustCore/ModCore.cs index 52b4bc92..d972c896 100644 --- a/GeneralMods/StardustCore/ModCore.cs +++ b/GeneralMods/StardustCore/ModCore.cs @@ -179,21 +179,13 @@ namespace StardustCore private void ControlEvents_KeyPressed(object sender, StardewModdingAPI.Events.EventArgsKeyPressed e) { - if (e.KeyPressed == Keys.V) - { - CoreObject tile1 = new CoreObject(new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png")), 3, Vector2.Zero, 9); - tile1.description = "Hello"; - tile1.Name = "test"; - tile1.displayName = "test"; - Game1.player.addItemToInventory(tile1); - } } private void SaveEvents_AfterLoad(object sender, EventArgs e) { SerializationManager.restoreAllModObjects(SerializationManager.trackedObjectList); - List> objs = new List>(); + //List> objs = new List>(); /* MultiTileComponent tile1 = new MultiTileComponent(0,"Tileobj1","A basic tile obj",new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png"))); MultiTileComponent tile2 = new MultiTileComponent(0,"Tileobj2", "A basic tile obj", new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test2.png"))); @@ -206,13 +198,14 @@ namespace StardustCore */ // Game1.player.addItemToInventory(collection); + CoreObject tile1 = new CoreObject(new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png")),3, Vector2.Zero,9); tile1.description = "Hello"; tile1.Name = "test"; tile1.displayName = "test"; Game1.player.addItemToInventory(tile1); - + } diff --git a/GeneralMods/StardustCore/NetCode/ModdedClient.cs b/GeneralMods/StardustCore/NetCode/ModdedClient.cs index 23f5bdcd..5ede46b4 100644 --- a/GeneralMods/StardustCore/NetCode/ModdedClient.cs +++ b/GeneralMods/StardustCore/NetCode/ModdedClient.cs @@ -148,14 +148,7 @@ namespace StardustCore.NetCode while ((long)dataMsg.LengthBits - dataMsg.Position >= 8L) { message.Read(reader); - try - { - this.processIncomingMessage(message); - } - catch(Exception err) - { - - } + this.processIncomingMessage(message); } } } diff --git a/GeneralMods/StardustCore/NetCode/NetCoreObject.cs b/GeneralMods/StardustCore/NetCode/NetCoreObject.cs index 61ff4821..0f3062ef 100644 --- a/GeneralMods/StardustCore/NetCode/NetCoreObject.cs +++ b/GeneralMods/StardustCore/NetCode/NetCoreObject.cs @@ -95,11 +95,15 @@ namespace StardustCore.NetCode drawPosition = new NetVector2(); drawPosition.Read(reader, version); Value.drawPosition = drawPosition.Value; - /* + + NetBool isNull = new NetBool(); + isNull.Read(reader, version); + if (isNull.Value) return; + animationManager = new NetAnimationManager(); animationManager.Read(reader, version); Value.animationManager = animationManager.Value; - */ + } @@ -127,13 +131,14 @@ namespace StardustCore.NetCode drawPosition = new NetVector2(Value.drawPosition); drawPosition.Write(writer); - /* - if (Value.animationManager != null) - { - animationManager = new NetAnimationManager(Value.animationManager); - animationManager.Write(writer); - } - */ + + NetBool isNull = new NetBool(Value.animationManager == null); + isNull.Write(writer); + if (isNull.Value == true) return; + + animationManager = new NetAnimationManager(Value.animationManager); + animationManager.Write(writer); + } } } From 079b9cf9ea46a61ba43caa1158ba2c26eeab5230 Mon Sep 17 00:00:00 2001 From: Date: Wed, 8 Aug 2018 13:18:51 -0700 Subject: [PATCH 040/110] Final fixes to Stardew Symphony Remastered for release. Also fixed TextureManagers by reenabling them. --- .../Framework/Music/MusicPackMetaData.cs | 6 +- .../StardewSymphony.cs | 79 +++++++++--------- .../StardewSymphonyRemastered/manifest.json | 2 +- GeneralMods/StardustCore/ModCore.cs | 13 ++- .../NetCode/NetTexure2DExtended.cs | 7 +- .../StardustCore/Objects/CoreObject.cs | 6 +- .../StardustCore/Objects/Tools/ExtendedAxe.cs | 2 +- .../StardustCore/Objects/Tools/ExtendedHoe.cs | 2 +- .../Objects/Tools/ExtendedPickaxe.cs | 2 +- .../Objects/Tools/ExtendedWateringCan.cs | 2 +- .../UIUtilities/Texture2DExtended.cs | 20 ++++- GeneralMods/StardustCore/manifest.json | 2 +- Images/ModBanners/StardewSymphony.pdn | Bin 0 -> 41655 bytes Images/ModBanners/StardewSymphony.png | Bin 0 -> 13541 bytes Images/ModBanners/StardustCore.png | Bin 0 -> 15364 bytes .../Original/Lavender/capitalS.png | Bin 0 -> 1599 bytes .../Original/Lavender/lowercaseA.png | Bin 0 -> 1036 bytes .../Original/Lavender/lowercaseD.png | Bin 0 -> 1215 bytes .../Original/Lavender/lowercaseE.png | Bin 0 -> 869 bytes .../Original/Lavender/lowercaseR.png | Bin 0 -> 942 bytes .../Original/Lavender/lowercaseT.png | Bin 0 -> 875 bytes .../Original/Lavender/lowercaseW.png | Bin 0 -> 1195 bytes .../Original/Starlight Yellow/capitalS.png | Bin 0 -> 1624 bytes .../Original/Starlight Yellow/lowercaseH.png | Bin 0 -> 1296 bytes .../Original/Starlight Yellow/lowercaseM.png | Bin 0 -> 1293 bytes .../Original/Starlight Yellow/lowercaseN.png | Bin 0 -> 1094 bytes .../Original/Starlight Yellow/lowercaseO.png | Bin 3223 -> 808 bytes .../Original/Starlight Yellow/lowercaseP.png | Bin 0 -> 1022 bytes .../Original/Starlight Yellow/lowercaseY.png | Bin 0 -> 1248 bytes .../Original/lowercaseH.png | Bin 0 -> 254 bytes .../Original/lowercaseM.png | Bin 0 -> 245 bytes .../Original/lowercaseN.png | Bin 0 -> 236 bytes .../Original/lowercaseO.png | Bin 240 -> 0 bytes .../Original/lowercaseP.png | Bin 0 -> 258 bytes .../Original/lowercaseW.png | Bin 0 -> 249 bytes .../Original/lowercaseY.png | Bin 0 -> 245 bytes 36 files changed, 84 insertions(+), 59 deletions(-) create mode 100644 Images/ModBanners/StardewSymphony.pdn create mode 100644 Images/ModBanners/StardewSymphony.png create mode 100644 Images/ModBanners/StardustCore.png create mode 100644 Images/VanillaStardewFont/Original/Lavender/capitalS.png create mode 100644 Images/VanillaStardewFont/Original/Lavender/lowercaseA.png create mode 100644 Images/VanillaStardewFont/Original/Lavender/lowercaseD.png create mode 100644 Images/VanillaStardewFont/Original/Lavender/lowercaseE.png create mode 100644 Images/VanillaStardewFont/Original/Lavender/lowercaseR.png create mode 100644 Images/VanillaStardewFont/Original/Lavender/lowercaseT.png create mode 100644 Images/VanillaStardewFont/Original/Lavender/lowercaseW.png create mode 100644 Images/VanillaStardewFont/Original/Starlight Yellow/capitalS.png create mode 100644 Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseH.png create mode 100644 Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseM.png create mode 100644 Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseN.png create mode 100644 Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseP.png create mode 100644 Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseY.png create mode 100644 Images/VanillaStardewFont/Original/lowercaseH.png create mode 100644 Images/VanillaStardewFont/Original/lowercaseM.png create mode 100644 Images/VanillaStardewFont/Original/lowercaseN.png delete mode 100644 Images/VanillaStardewFont/Original/lowercaseO.png create mode 100644 Images/VanillaStardewFont/Original/lowercaseP.png create mode 100644 Images/VanillaStardewFont/Original/lowercaseW.png create mode 100644 Images/VanillaStardewFont/Original/lowercaseY.png diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicPackMetaData.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicPackMetaData.cs index b274c831..5617926b 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicPackMetaData.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicPackMetaData.cs @@ -37,7 +37,7 @@ namespace StardewSymphonyRemastered.Framework this.pathToMusicPackIcon = PathToMusicPackIcon; try { - this.Icon = new Texture2DExtended(StardewSymphony.ModHelper, this.pathToMusicPackIcon+".png"); + this.Icon = new Texture2DExtended(StardewSymphony.ModHelper, StardewSymphony.Manifest,this.pathToMusicPackIcon+".png"); } catch(Exception err) { @@ -67,12 +67,12 @@ namespace StardewSymphonyRemastered.Framework { try { - meta.Icon = new Texture2DExtended(StardewSymphony.ModHelper, StardewSymphony.getRelativeDirectory(Path.Combine(path, meta.pathToMusicPackIcon + ".png"))); + meta.Icon = new Texture2DExtended(StardewSymphony.ModHelper,StardewSymphony.Manifest, StardewSymphony.getRelativeDirectory(Path.Combine(path, meta.pathToMusicPackIcon + ".png"))); } catch(Exception errr) { errr.ToString(); - meta.Icon = new Texture2DExtended(StardewSymphony.ModHelper, StardewSymphony.getRelativeDirectory(Path.Combine(path, meta.pathToMusicPackIcon))); + meta.Icon = new Texture2DExtended(StardewSymphony.ModHelper,StardewSymphony.Manifest ,StardewSymphony.getRelativeDirectory(Path.Combine(path, meta.pathToMusicPackIcon))); } } catch(Exception err) diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/StardewSymphony.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/StardewSymphony.cs index b97d366d..457e3a4d 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/StardewSymphony.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/StardewSymphony.cs @@ -34,6 +34,7 @@ namespace StardewSymphonyRemastered public static IModHelper ModHelper; public static IMonitor ModMonitor; + public static IManifest Manifest; public static MusicManager musicManager; @@ -53,6 +54,7 @@ namespace StardewSymphonyRemastered public static Config Config; + public static TextureManager textureManager; @@ -67,6 +69,7 @@ namespace StardewSymphonyRemastered DefaultWaveBank = Game1.waveBank; ModHelper = helper; ModMonitor = Monitor; + Manifest = ModManifest; StardewModdingAPI.Events.SaveEvents.AfterLoad += SaveEvents_AfterLoad; // StardewModdingAPI.Events.EventArgsLocationsChanged += LocationEvents_CurrentLocationChanged; @@ -311,46 +314,46 @@ namespace StardewSymphonyRemastered string stopButton = Path.Combine(path, "StopButton.png"); string backButton = Path.Combine(path, "BackButton.png"); - textureManager.addTexture("MusicNote",new Texture2DExtended(ModHelper,StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", musicNote))); - textureManager.addTexture("MusicDisk", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", musicCD))); - textureManager.addTexture("MusicCD", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", musicCD))); - textureManager.addTexture("OutlineBox", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", outlineBox))); - textureManager.addTexture("AddIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", addIcon))); - textureManager.addTexture("DeleteIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", deleteButton))); - textureManager.addTexture("GreenBallon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", greenBallon))); - textureManager.addTexture("RedBallon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", redBallon))); - textureManager.addTexture("StarIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", starIcon))); - textureManager.addTexture("MenuIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", menuIcon))); - textureManager.addTexture("DayIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", dayIcon))); - textureManager.addTexture("NightIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", nightIcon))); - textureManager.addTexture("EventIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", eventIcon))); - textureManager.addTexture("FestivalIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", festivalIcon))); - textureManager.addTexture("SunnyIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", sunnyIcon))); - textureManager.addTexture("RainyIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", rainyIcon))); - textureManager.addTexture("DebrisSpringIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", debrisIconSpring))); - textureManager.addTexture("DebrisSummerIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", debrisIconSummer))); - textureManager.addTexture("DebrisFallIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", debrisIconFall))); - textureManager.addTexture("WeatherFestivalIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", weatherFestivalIcon))); - textureManager.addTexture("SnowIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", snowIcon))); - textureManager.addTexture("StormIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", stormIcon))); - textureManager.addTexture("WeddingIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", weddingIcon))); - textureManager.addTexture("SpringIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", springIcon))); - textureManager.addTexture("SummerIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", summerIcon))); - textureManager.addTexture("FallIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", fallIcon))); - textureManager.addTexture("WinterIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", winterIcon))); - textureManager.addTexture("MondayIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", mondayIcon))); - textureManager.addTexture("TuesdayIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", tuesdayIcon))); - textureManager.addTexture("WednesdayIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", wednesdayIcon))); - textureManager.addTexture("ThursdayIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", thursdayIcon))); - textureManager.addTexture("FridayIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", fridayIcon))); - textureManager.addTexture("SaturdayIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", saturdayIcon))); - textureManager.addTexture("SundayIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", sundayIcon))); + textureManager.addTexture("MusicNote",new Texture2DExtended(ModHelper,Manifest.UniqueID,StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", musicNote))); + textureManager.addTexture("MusicDisk", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", musicCD))); + textureManager.addTexture("MusicCD", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", musicCD))); + textureManager.addTexture("OutlineBox", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", outlineBox))); + textureManager.addTexture("AddIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", addIcon))); + textureManager.addTexture("DeleteIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", deleteButton))); + textureManager.addTexture("GreenBallon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", greenBallon))); + textureManager.addTexture("RedBallon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", redBallon))); + textureManager.addTexture("StarIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", starIcon))); + textureManager.addTexture("MenuIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", menuIcon))); + textureManager.addTexture("DayIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", dayIcon))); + textureManager.addTexture("NightIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", nightIcon))); + textureManager.addTexture("EventIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", eventIcon))); + textureManager.addTexture("FestivalIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", festivalIcon))); + textureManager.addTexture("SunnyIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", sunnyIcon))); + textureManager.addTexture("RainyIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", rainyIcon))); + textureManager.addTexture("DebrisSpringIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", debrisIconSpring))); + textureManager.addTexture("DebrisSummerIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", debrisIconSummer))); + textureManager.addTexture("DebrisFallIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", debrisIconFall))); + textureManager.addTexture("WeatherFestivalIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", weatherFestivalIcon))); + textureManager.addTexture("SnowIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", snowIcon))); + textureManager.addTexture("StormIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", stormIcon))); + textureManager.addTexture("WeddingIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", weddingIcon))); + textureManager.addTexture("SpringIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", springIcon))); + textureManager.addTexture("SummerIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", summerIcon))); + textureManager.addTexture("FallIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", fallIcon))); + textureManager.addTexture("WinterIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", winterIcon))); + textureManager.addTexture("MondayIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", mondayIcon))); + textureManager.addTexture("TuesdayIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", tuesdayIcon))); + textureManager.addTexture("WednesdayIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", wednesdayIcon))); + textureManager.addTexture("ThursdayIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", thursdayIcon))); + textureManager.addTexture("FridayIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", fridayIcon))); + textureManager.addTexture("SaturdayIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", saturdayIcon))); + textureManager.addTexture("SundayIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", sundayIcon))); - textureManager.addTexture("HouseIcon", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", houseIcon))); + textureManager.addTexture("HouseIcon", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", houseIcon))); - textureManager.addTexture("PlayButton", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", playButton))); - textureManager.addTexture("StopButton", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", stopButton))); - textureManager.addTexture("BackButton", new Texture2DExtended(ModHelper, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", backButton))); + textureManager.addTexture("PlayButton", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", playButton))); + textureManager.addTexture("StopButton", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", stopButton))); + textureManager.addTexture("BackButton", new Texture2DExtended(ModHelper, Manifest.UniqueID, StardustCore.Utilities.getRelativeDirectory("StardewSymphonyRemastered", backButton))); if (!Directory.Exists(MusicPath)) Directory.CreateDirectory(MusicPath); diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json index d367e1ee..469b0bb0 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json @@ -1,7 +1,7 @@ { "Name": "Stardew Symphony Remastered", "Author": "Alpha_Omegasis", - "Version": "2.0.0", + "Version": "2.0.2", "Description": "Adding more music to the game one beep at a time. Now with streaming!", "UniqueID": "Omegasis.StardewSymphonyRemastered", "EntryDll": "StardewSymphonyRemastered.dll", diff --git a/GeneralMods/StardustCore/ModCore.cs b/GeneralMods/StardustCore/ModCore.cs index d972c896..2bd4a4d6 100644 --- a/GeneralMods/StardustCore/ModCore.cs +++ b/GeneralMods/StardustCore/ModCore.cs @@ -25,8 +25,11 @@ namespace StardustCore { public static IModHelper ModHelper; public static IMonitor ModMonitor; + public static IManifest Manifest; public static Serialization.SerializationManager SerializationManager; public static UIUtilities.TextureManager TextureManager; + public static Dictionary TextureManagers; + public static Multiplayer multiplayer; bool serverHack; @@ -38,6 +41,7 @@ namespace StardustCore { ModHelper = Helper; ModMonitor = Monitor; + Manifest = ModManifest; //Unused MetaData information. Works in player inventory but not in chests. Besides who really care where an object is from anyways. Also doesn't work 100% like I intended since it only gets base mod object that this runs from, not extensions? // StardewModdingAPI.Events.GraphicsEvents.OnPostRenderGuiEvent += Metadata.GameEvents_UpdateTick; @@ -60,9 +64,10 @@ namespace StardustCore SpriteFonts.initialize(); SerializationManager.initializeDefaultSuportedTypes(); + TextureManagers = new Dictionary(); TextureManager = new TextureManager(); - TextureManager.addTexture("Test1.png", new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png"))); - + TextureManager.addTexture("Test1.png", new Texture2DExtended(ModCore.ModHelper, Manifest,Path.Combine("Content", "Graphics", "MultiTest", "Test1.png"))); + TextureManagers.Add(ModManifest.UniqueID, TextureManager); StardewModdingAPI.Events.ControlEvents.KeyPressed += ControlEvents_KeyPressed; @@ -198,14 +203,14 @@ namespace StardustCore */ // Game1.player.addItemToInventory(collection); - + /* CoreObject tile1 = new CoreObject(new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png")),3, Vector2.Zero,9); tile1.description = "Hello"; tile1.Name = "test"; tile1.displayName = "test"; Game1.player.addItemToInventory(tile1); - + */ } diff --git a/GeneralMods/StardustCore/NetCode/NetTexure2DExtended.cs b/GeneralMods/StardustCore/NetCode/NetTexure2DExtended.cs index 4b3905f9..c035f33d 100644 --- a/GeneralMods/StardustCore/NetCode/NetTexure2DExtended.cs +++ b/GeneralMods/StardustCore/NetCode/NetTexure2DExtended.cs @@ -41,9 +41,11 @@ namespace StardustCore.NetCode NetString name = new NetString(); name.Read(reader, version); + NetString iD = new NetString(); + iD.Read(reader, version); //Texture2D texture = new Texture2D(Game1.graphics.GraphicsDevice,width,height); - Texture2DExtended texture = ModCore.TextureManager.getTexture(name.Value); + Texture2DExtended texture = ModCore.TextureManagers[iD.Value].getTexture(name.Value); this.Value = texture; } @@ -52,6 +54,9 @@ namespace StardustCore.NetCode { NetString name = new NetString(Value.Name); name.Write(writer); + + NetString iD = new NetString(Value.modID); + iD.Write(writer); } diff --git a/GeneralMods/StardustCore/Objects/CoreObject.cs b/GeneralMods/StardustCore/Objects/CoreObject.cs index 491f1c91..db9fdd48 100644 --- a/GeneralMods/StardustCore/Objects/CoreObject.cs +++ b/GeneralMods/StardustCore/Objects/CoreObject.cs @@ -1052,7 +1052,7 @@ namespace StardustCore /// public virtual Item getOne(IModHelper helper) { - Texture2DExtended texture = new Texture2DExtended(helper, this.TextureSheet.path); + Texture2DExtended texture = new Texture2DExtended(helper, this.TextureSheet.modID,this.TextureSheet.path); CoreObject CoreObject = new CoreObject(texture,this.ParentSheetIndex, this.TileLocation, this.inventoryMaxSize); CoreObject.drawPosition = this.drawPosition; @@ -1179,12 +1179,12 @@ namespace StardustCore public virtual void resetTexture(IModHelper helper) { - TextureSheet = new Texture2DExtended(helper, TextureSheet.path); + TextureSheet = new Texture2DExtended(helper, this.TextureSheet.modID,TextureSheet.path); } public virtual void resetTexture() { - TextureSheet = new Texture2DExtended(TextureSheet.getHelper(), TextureSheet.path); + TextureSheet = new Texture2DExtended(TextureSheet.getHelper(),TextureSheet.modID, TextureSheet.path); } public override string getCategoryName() diff --git a/GeneralMods/StardustCore/Objects/Tools/ExtendedAxe.cs b/GeneralMods/StardustCore/Objects/Tools/ExtendedAxe.cs index 43fec26c..95b6f9fd 100644 --- a/GeneralMods/StardustCore/Objects/Tools/ExtendedAxe.cs +++ b/GeneralMods/StardustCore/Objects/Tools/ExtendedAxe.cs @@ -26,7 +26,7 @@ namespace StardustCore.Objects.Tools /// public ExtendedAxe() : base() { - this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content","Graphics","Tools","CustomAxe.png")); + this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper, ModCore.Manifest,Path.Combine("Content","Graphics","Tools","CustomAxe.png")); } public ExtendedAxe(BasicToolInfo info, Texture2DExtended texture) diff --git a/GeneralMods/StardustCore/Objects/Tools/ExtendedHoe.cs b/GeneralMods/StardustCore/Objects/Tools/ExtendedHoe.cs index 393f3daf..67edd662 100644 --- a/GeneralMods/StardustCore/Objects/Tools/ExtendedHoe.cs +++ b/GeneralMods/StardustCore/Objects/Tools/ExtendedHoe.cs @@ -26,7 +26,7 @@ namespace StardustCore.Objects.Tools /// public ExtendedHoe() : base() { - this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png")); + this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper,ModCore.Manifest ,Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png")); } public ExtendedHoe(BasicToolInfo info, Texture2DExtended texture) diff --git a/GeneralMods/StardustCore/Objects/Tools/ExtendedPickaxe.cs b/GeneralMods/StardustCore/Objects/Tools/ExtendedPickaxe.cs index 0f67e793..c03720f2 100644 --- a/GeneralMods/StardustCore/Objects/Tools/ExtendedPickaxe.cs +++ b/GeneralMods/StardustCore/Objects/Tools/ExtendedPickaxe.cs @@ -26,7 +26,7 @@ namespace StardustCore.Objects.Tools /// public ExtendedPickaxe() : base() { - this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png")); + this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper, ModCore.Manifest,Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png")); } public ExtendedPickaxe(BasicToolInfo info, Texture2DExtended texture) diff --git a/GeneralMods/StardustCore/Objects/Tools/ExtendedWateringCan.cs b/GeneralMods/StardustCore/Objects/Tools/ExtendedWateringCan.cs index 84fbd868..48b90d38 100644 --- a/GeneralMods/StardustCore/Objects/Tools/ExtendedWateringCan.cs +++ b/GeneralMods/StardustCore/Objects/Tools/ExtendedWateringCan.cs @@ -26,7 +26,7 @@ namespace StardustCore.Objects.Tools /// public ExtendedWateringCan() : base() { - this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper, Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png")); + this.texture = new Texture2DExtended(StardustCore.ModCore.ModHelper, ModCore.Manifest,Path.Combine("Content", "Graphics", "Tools", "CustomAxe.png")); this.waterCanMax = 30; this.WaterLeft = 0; } diff --git a/GeneralMods/StardustCore/UIUtilities/Texture2DExtended.cs b/GeneralMods/StardustCore/UIUtilities/Texture2DExtended.cs index 08a31641..e8880033 100644 --- a/GeneralMods/StardustCore/UIUtilities/Texture2DExtended.cs +++ b/GeneralMods/StardustCore/UIUtilities/Texture2DExtended.cs @@ -15,6 +15,7 @@ namespace StardustCore.UIUtilities public Texture2D texture; public string path; IModHelper helper; + public string modID; /// /// Empty/null constructor. @@ -25,23 +26,34 @@ namespace StardustCore.UIUtilities this.texture = null; this.path = ""; this.helper = null; + this.modID = ""; } /// /// Constructor. /// /// The relative path to file on disk. See StardustCore.Utilities.getRelativePath(modname,path); - public Texture2DExtended(IModHelper helper,string path) + public Texture2DExtended(IModHelper helper,IManifest manifest,string path) { - this.Name = Path.GetFileName(path); + this.Name = Path.GetFileNameWithoutExtension(path); this.path = path; this.texture = helper.Content.Load(path); this.helper = helper; + this.modID = manifest.UniqueID; } - + + public Texture2DExtended(IModHelper helper, string modID, string path) + { + this.Name = Path.GetFileNameWithoutExtension(path); + this.path = path; + this.texture = helper.Content.Load(path); + this.helper = helper; + this.modID = modID; + } + public Texture2DExtended Copy() { - return new Texture2DExtended(this.helper,this.path); + return new Texture2DExtended(this.helper,this.modID,this.path); } public IModHelper getHelper() diff --git a/GeneralMods/StardustCore/manifest.json b/GeneralMods/StardustCore/manifest.json index 7fbf7b09..df4e3a6d 100644 --- a/GeneralMods/StardustCore/manifest.json +++ b/GeneralMods/StardustCore/manifest.json @@ -1,7 +1,7 @@ { "Name": "StardustCore", "Author": "Alpha_Omegasis", - "Version": "2.0.0", + "Version": "2.0.1", "Description": "A core mod that allows for other mods of mine to be run.", "UniqueID": "Omegasis.StardustCore", "EntryDll": "StardustCore.dll", diff --git a/Images/ModBanners/StardewSymphony.pdn b/Images/ModBanners/StardewSymphony.pdn new file mode 100644 index 0000000000000000000000000000000000000000..5c9d4b630477bc4c60324346b9e52256056f3427 GIT binary patch literal 41655 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 bZ&e2M`%!(0X3Dgh{s9u7m~r$`#<>0kE7?)M literal 0 HcmV?d00001 diff --git a/Images/ModBanners/StardewSymphony.png b/Images/ModBanners/StardewSymphony.png new file mode 100644 index 0000000000000000000000000000000000000000..b97e0f6307dd46a05bf237f0d01705a47a308dfe GIT binary patch literal 13541 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 Mj5agL+wVyHH#=2U0RR91 literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/Lavender/capitalS.png b/Images/VanillaStardewFont/Original/Lavender/capitalS.png new file mode 100644 index 0000000000000000000000000000000000000000..888b079a2cb3a1172823fac9ecea31063dd7eb81 GIT binary patch literal 1599 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I4M=vMPuB%fEa{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJq(MA#*AN1M417 z7srr_xVN($`|g;Dus-+OH&1^;c7^DH-ETIXR(oEg!XmF|x0-XJ($%hATq~wZD|@X^ zTPRoG*+B$2A^o%L$o=}?U$eiTm;Y{fZp-euAAdVOO-m?WAhu!@Tc0 z2r*2v(^)FMDZbc3yn25rx{*~jMFf0PEyW1 zl&RbD4SiV+^I6+WvU>ay_ntO7_O?evT2s7H zu{W#X5_g-)Dxg6UmsYT8>`m}kEVbZElVYz_{_LkOQuaIzGT5xUe)rsoNy@-&(=ca7QdaH^3Rwk>88@XKq{9<7 zW+KKZ^5H-CKTe(7za~fgx&7|j&6~jdX2H#BeEZYA?b)Y24R)+y{Fh$&{`S_VDiSf< zOg}tw1g8GiHJf8=_RF)gP0!`sQz5{kciZZIj`;oe$AJ!rX4aQuX+FK}ocZme-+vbZ zjk|WBoBiN}O=~}&E&KSlP6od*fsgA$-%tBKCHBv?{~*m3KTKjQ&q3UE?I$pr-ZM6z zK6ZHd!&8OZ&YxogSp>{}HT)7WW^(^#J`9t(zWlT7)<2cEZIfRtm;-dkF$0r1jHe_a zdDhkytn?Z~yp}r9No+rYEIHYx12gC;uuu1e_%$6&eO$f1NTul5?H4)FB4fY%#)(Bj zJbKv;`co%^N~M~WK$DqYJ`6uLL*&qI9p%Nw`+-Rwm^PO{6RX=QXksNo;MC&#;&ChQ zzrQQp)w^V(7BB@Zyx}3W5|r&kp3a@p?!5TEXQhS7FJhU3NZ_Z!zJ31~kAI&xt!nY} RXkcN_;OXk;vd$@?2>_fg(0~8{ literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/Lavender/lowercaseA.png b/Images/VanillaStardewFont/Original/Lavender/lowercaseA.png new file mode 100644 index 0000000000000000000000000000000000000000..ef51b711bb8d8db833b2f153bfae209e877728cd GIT binary patch literal 1036 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I4M=vMPuB%fEa{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJq(MA#*AN19PXR zi(^Pd+}k^bS@P}@#}e-zX?bA6DDF2|&HOYgkEQFX2J7;dm!8C&`^U+B+FU6pLVPV z|6>i0RhNFd?=V5{$BnN0g0{b<`TK0k_dT9}dtaI!YQQgi_&#eTC>+2g)?YCz6#Z3Vgn6f$vl3q@}4zC5!% zY|i>U( literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/Lavender/lowercaseD.png b/Images/VanillaStardewFont/Original/Lavender/lowercaseD.png new file mode 100644 index 0000000000000000000000000000000000000000..e0d07da388643f0a9e1a85531b5a6b41bf333ba9 GIT binary patch literal 1215 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I4M=vMPuB%fEa{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJq(MA#*CwARA8? z$B>G+w|5M?WZfBDFW&5AZWeA9R*#!wuJA!iL~@R0@UkPXC;gYtxUy&GehuHVv-LWw zAGijY-(97Bt)4zRh*N=bq`^(3#*6#}Mznyo};?qA`5iHH8Wd$V{+>>IPZmneG zaQ0Vin!A9=nM(Hrkq1A&-+iZPd-y>S+X^urz48|4#IxrZTn%>2VO+)9d|Glr)L>!$ z`|;uNxuVVTLSL>)*S@&$=G^z)d%Mk=p`Lzc;b8UPZhAvC%qNhb0(%MzGr!gT)~T~~ z&6VGz5AFZ=>3ID2zke?0%NHGAf7ku`wz9hZ+t#n=CKOmQhj0VKjIWLFovC%w?z_K_ z+CP3S@$%L+o)1!3!W?@{+_O4x+jjYdt!pJ8n9?yY_m(!?KUnWo^)ZHjnJdV#@_yYQ z>+R-qFR7K_~GFe4q$9QIGicSHvRWJd*xph%YMI@*)RLP;{MyY znr5>w^c;M_|Nm&;;Uxm=Zdn>trQLd=AJekRRYaPXU#nb3sI}ngxsMl&FY|o(8<1mS zv*J#nhsdE&>*LPneWdrg-|_F(Fq4uC$tx)c*KIoZ{9Nxn<#)>=n$4|ttQI@?p!m7l zd%^FQmAZP{*r!U%-U;na_^`8h@%N73nSw{%4mY3b<$Jfv)!@gSofoT*{N2)#wD_Up zQ@42AxUD}{iO#n+uj=11Un~%8^@|7VqF9>G&&6qRxl`b~Es-U?Ob1uGcSZk+fPe*Q|Tp(oEwL59?g9SntbeFD8`T s(%Cg_+1U$Px# literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/Lavender/lowercaseE.png b/Images/VanillaStardewFont/Original/Lavender/lowercaseE.png new file mode 100644 index 0000000000000000000000000000000000000000..00894042daec51c3aa6c833d3441070b742bacfc GIT binary patch literal 869 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I4M=vMPuB%fEa{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJq(MA#*AN1Jff< z7srr_xVLuy-S|8r*YD`F2vhvZfI}NuDgwC8f;}dh;qSZ#@oi*>($9LYj|E&G6 z{4VQvp9^O%@B{524IBuvlYe=8`tjpy=f_{qw7DEs^^AMtjFKgq%uBqjE?u$s^?a@l43xYk%pY{*3zC|It#1 z_HEC%tGQM6_to9w&&}eJwf7#+0NWDy^Uy5m&gRuXO^+UAJ@$Bc;CyC}#@_1}za{&; zFUh(B_>bR!6;;_(Z%6M>mID@&HFEc{|}pn5Af77LZZLYmA^ zq6jfoe#|Vc|5E)t_`@xTiEJmfLKz;@O-@aH^yJdT@UF?;?(v#_da|`kEq0cC!6OLD gJq!#D|4$q~ET55-c>n&jt-T--Pgg&ebxsLQ0AIOv4*&oF literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/Lavender/lowercaseR.png b/Images/VanillaStardewFont/Original/Lavender/lowercaseR.png new file mode 100644 index 0000000000000000000000000000000000000000..7c2606fe035caea1370bdfd8052957d64e3e08d1 GIT binary patch literal 942 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I4M=vMPuB%fEa{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJq(MA#*AN1GBcL zi(^Pd+}k^jT~{4MS|8q`9%PmCK3rEmeTRokOs?&- z_wtW(-8a^xS^ZkK`(ErLrNV-(yW0w`@Ai&S;agXBUEp0+d1v>LgIC{49g2OgS2)pP z$E{fB9k1`I>It!jzy5ps#rpU4zr&p)>g{Ud@|7VfW-%Ih%fy^zn5oK_x8+*GwZeT{ zWnEWaTTuPFw*0U2w`-qv7fiHRa`9U7Jjp}bzCOSF{Oh&f>lp7T^JQ-NIwOtbHGT?`h&A$LzJt-^1Dj?n|!y`uEgs z8y}mDwWSa4of3Fty?E=s_{!<+o$PD3^4*D+bgD_;a_zhJ`%eZR7i_)OSgq~c@xJHU zueztPa%ys0u2~i2r*eFpdok+%`aP!)A8Ec8#r|$BkK#V#sMo)zmRHWGxDfUFz}~5f zN6Ouz|L?v3t=IIw+=rV$`(GPg-cWVBPib$V8gtElJOW8S&%}NF-BPjql3}@|!saE( z?~EMMJdfW=Z8$TjZ|7-X7|Rw<2Zp!RGd<>%X(eZ3*-q%ZoUxl{LL^+nuEK_zg2Dn* zpuEKnq_|m^)^G+GiN+3Toz1I(W&>jxs12AvfJTt4eCxIUdoRuYzql0`;7I0L3(8D# zD^ash>3!i-;30K!=7R|)i;NE{X1b&|IbZ5H$I`w;a4sjGr?QnWSRt-N-N66g=~I5b VRKEnbkJ>pPRi3VXF6*2UngAB~oSXmv literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/Lavender/lowercaseT.png b/Images/VanillaStardewFont/Original/Lavender/lowercaseT.png new file mode 100644 index 0000000000000000000000000000000000000000..6df4e01ca295d2d3e5339058da47d80b4e42f05d GIT binary patch literal 875 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I4M=vMPuB%fEa{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJq(MA#*AN1Jesn z7srr_xVLu<`>r@hv|QXPeEl&~OfyGkPft%vv958qPUO?5%v;aIb$-taxw*nNsJ>I! zo)Ks|L2%$~yZg7Nmp^~5y>CDNe%Z0w?ZyvXdG*vCmR)&J6zyWaf9`#|W4C91Sj0A6 zSRpv8z>?8u>0n{5&hpslZg2JF@$2_nH^|)uI{vNX?MKRP^71nOXGq2PHTbMN_;j0h z{=q+M-zM+*dt5A98X?YdVhT(Nn0YSR0M&cx+mBv6R8{i(L|*!*`KuM@&Si)Ub+)o* z+_b8#q>L#gl=tNumJ_R_F5Tpu5Nf()v#MkOhUg literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/Lavender/lowercaseW.png b/Images/VanillaStardewFont/Original/Lavender/lowercaseW.png new file mode 100644 index 0000000000000000000000000000000000000000..6cbd3062118adf330a7aa5b6177cdd5c1580f1c2 GIT binary patch literal 1195 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I4M=vMPuB%fEa{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJq(MA#*CwAPr9! z$B>G+x3_HjWZVT@9`2pIZaMc0sZA^=Cae4RopU`a)hp>@Z8 zw0i!9>_RD*slsxU)92 zrS-Iqgp8O<@z(cmzPbtjUd6#ZJ<`BJ$KzSn{hP0Q)xL!ais@}mD2SMF=IXx9*QI^m ztcIC4b9HU{dh=N~!d)YF04+~+Gz$NHE-v3>zT(`!;v)y^N%I(Zq*F z+-&WvCu81PSMR-eWS`cdL#b&z@8;Xjuatch+Gqb?`I_|E*H!)71A*2R+gR|Xm~7@Y z1}fdN?t6taNc-{T%MNATtaG@zr*CXHA8}ykh6136daw)Z{1tmIJME9|=l`b)zn#Bu zx9`Y%0gzWC4y5Zmh>6(I!&-BU>0E1T^Mm@_)IP zeTRAxg)c{mUK*J0D zMquP_Sf9rRqykt#$ztCwNu3zQ#V>AqT@m5kJSp%?u4-0S zTjWWNU)zLCT@SBG5vh&toV6%1%&2SMS{L7o2HKLY_rn$~%a}2>XHmX(V6e#@YHN>fEK2A;!zan{uQVSg6CM0%q_%SvFu!r0#LT=By}Z;C1rt33 zJtM=93Yk+G7+6nux;TbZ#J!z$apDsb2{wIkCk2@%1x6+%4Y`$%rtL8OAIv|sXnNhjm_K_;a(QHr6!*_M|Ka}g$&(*21TxoD+F5e) z3FPt_-Tr$(M7s02+}6tdzdxV!ENI9mo^bOW`?4DzHs4pA{e5@7zh4ux%k1VeW%dR~ z-5%|9&%O8lUrmvajKVFMlx@EoHO++1+h%>P`wlkw;xmQKclmubPONwrIQ#o<`}uQN z*gMSFXTGgV=;{SJ;a1J-`~P%j+G(pFWL)&~VX(nw-D7^&A(pXK$XYm<*w=8SZ9977 zZ-O6NgAve4JCyz9%jH{NMgT z&WC>vJ2|R;Ol8wpy`Vil6Bv(GKUDtyTy1pRIZ?K>`^RaeW2fFuSMp4+TzH44t9OZ^ zcCn1ewLsnvix=GRklJi?+%fU&wvLJCJ~{1_6p{8!4wG8&#cAV2leDFbUi#Pto|#`( z;wz~>y>vrg)E^tG)7($f0&-M(BQqN=aUXTNGz07wjrOx210vk-D*fBkQF!C+boH6% zJU&hW#^|LLl_gxSLGhU2vH00V%{Aqb&;$pPW7F6R6b8DXNwGHzXkMGiDxf=n5ZwGguPH8xYobuy@wt1qo@pkN!&)On&<9^kkp( zDYF|DduO>XPe{vd=x1=2GVS*}xCa;@C2l(7eWE=d<75`u*3!U`IyrgRRX#9nXHI?fzD0&&Q*8OQzzjf<(-g%6&K2?Y-a6 z+}v%(9%s$LCZ0Ple_QtZ?~j2w2ahp*yZ)|!rQcn>D(3gK|Aj!4|9r^Yku(S5u4g~{ zvKsOko4bJt^|0vUCFjqv0gXRj9>QG14a}PMe~b^WE!k~1_x*~a=e@u8ENm_k0+u4j z7e3?(@M}2e`q{$dPO!;=?La2)hovC7tOot5lRY){=0@*kRQYyF_ted5I#{VCm`B)swx!%}fz!k(zb z8&I{7IDtu9fOfA6|G-9wf)tTSqJtx%9Q` d$iM%O(em@8liaesz#4#o!PC{xWt~$(69BL|>}LP~ literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseH.png b/Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseH.png new file mode 100644 index 0000000000000000000000000000000000000000..cf7847be3bcd806ceee167320a588cecd7c02f57 GIT binary patch literal 1296 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I4M=vMPuB%fEa{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJq(MA#*Cwpk7ZG z$B>G+w|5WrJ`NLcxyW}+(#HyDhQ$KTQ{K$?tePcnxe3qu6dO?UN2{-ZKOp)OXQ;I4 zg}d^TR6GfzEkBD??*IGo^!EOrpRa%ZS#xaK+nM|2d+y2b={;uH%EhO*x&Ouc_0K;W z9D6&{#Hd%k;N*7OPRtd_) zr0Gv?D>dN@U|^qq^YoI$ySDtvckH-(dl!ixJeVr8AdE<|?iHilU&bH(_8YEsKX_nN z?HTgn?qi00UZAPoi<<7Mf=t~U$Aa6*AgAr`op!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJq(MA#*Cwpe|1r z$B>G+w|5Sned;2>@X%huNI|wqfq_X$qt7GeWP+ra?diPfYbI77TUP#R@~ds(TFb z>OBb9QLypt|aWJt%NYf`r8J;;BH* zvkfd_CftAo)W;arhlh@;@$iYOltF^TCfpO~c+Td-tes>Tv+eKg-FNf1_x;!7ub01F z=l%V4Zh8ARAGkHonEw3$`d*l=om;4wvAzakS+PQlN=IFF)}d+*PIghC3vJjJr7nK4 zeYx76_DKZ+Aomn2M45FB1|>|*hpUfs?Kxfqbk|U4pZ@ReoqzoQ^wSv??;{$&NAU4! zg(VbVWnYYbp*Qo3z^@-O?>Uv9T+)8w`1vnlyS&wGTkPtVZNCs}^iuK5N8`P%?a^u? R4`9*7;OXk;vd$@?2>=LNW%U36 literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseN.png b/Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseN.png new file mode 100644 index 0000000000000000000000000000000000000000..f6001789885f89bb79a464f7f3c3ac0e0ec0384f GIT binary patch literal 1094 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I4M=vMPuB%fEa{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJq(MA#*AN1M^`| z7srr_xVLu?=BkE@umrF>vn_EJU~zC@IV#ktE6H|AyzjpY`a*VB#%{_x zdq{gfBhUiU!1N!5{`>xXJ3M{;&%etbSN=aX?d|OSZ%)SUjo#rQ8}n?P;+?CzTf46u zOqDzS=kxW)l~PB)oh|!P|8(6w-IyhOdd1fT-o3he$o16&qjKJd_yjlq-hR=(?w|Vo zOpbo@x7F3f3(C30S2mxPPzVNUW;-#(YRBTA1qSaQ|FQO8{KG(=w<`bJw|)QBZ*Tgm z1GMR7hTL%*38%LwdA@9#QT5}@0f8+4v<1_T zUOAl3))r80#JpE$nVg-m!Kl&H36RP^M^7$KuCu!T@9HW1vGu3(&DDGJIQ3V_e)jp6 zm4CiP{AypNTJ_fL>4&)c1HT9 z@ak%{JuAx27~fpI*H$<##QNDxRO48{d9UGr!}jg_8Q4x_U0t|vQvgWJ)78&qol`;+ E0G&qe_y7O^ literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseO.png b/Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseO.png index 706b0222c63e1c260541e53927ed20ad33f00fa1..6392fd1b68d9e2b0aaf7995f08e54865d3fc09e9 100644 GIT binary patch literal 808 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I4M=vMPuB%fEa{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJq(MA#*AN1JhDZ z7srr_xVLv4vxEyJjy;Sy(t2U)0`Ag>$7WY>@IPSXl3UVVq`BiOo2jvp;@|pwh2T%T zmp|EjSm!mX@jbh4<2Rs1M1%FW`m?|Nc>S*M-uwK&(f3~O_@X0zjC*Qdq?*I7CCSs~ zKKk+d!v4(?mp8{q=!aOP&185v2`0xmLGR^^RHh}~=)zm=VmGh0Px$xw@Bbi!^xvO; zzI(of|NXr?{n7i(boYMS@^tUArRkC1zA$H(sj->+HI#H7?6sCPZvD`syHR$3`A@@2 zx#X(1ujU@D`19|L4^Q44hL=Lk(&`SojyyO9wA64%A<$B6!rS>iJpR2se)-bxQ6QVj zzOwAdR&6k0ytI^M0?U~z`^2N&&^7d{%aS0gW){~RG zy^re%D`YRdap{ubX_gaFn%lONoH1hD6xOAyE4$gJVa-(RN;a*w*WYt=Ufn+N`RYA$ zJvT00nmmnj!q%XiOh}w{6?GrfIlA#^!n8*>k_@~Ha|~xJwb&+cCP*flCrz_Ymu<7i oak1veu4ITZE)e-c@Ne9i)o z$YKTtzC$3)D5~Mr02Gugag8Vm&QB{TPb^AhC`ioAE78kKEm1JhGte_K{HTyQm4Sgr z#M8wwq$2L^m4j=Yy^CB98amuNvDeT;?<9BShpVf%TfJ~K4P>wsbkNhc@>F;o4>WcN zf&UNx{XO~T^Zx%|&({aNvajITu)@v4Pqs7O?=O2lqu5oB<13Xvo?iL?f#HEgQV%Uk zRq8Ci%GnNu{9p5NhVHDE$5$r)c>e$2b915nYY{>xl0Wr!-VghKFuB3i z^ibg|k0*vdj~&ThjWF%gjGE*}+ppGtkVpvZEtq2^ROz$N@Z)VHhuEmypYbCXVW*4S zOX0&Ru_$M?!@Cyq=gAMW960Y(ku0*{@8}>*r1j9=0UMq zA9In-S`u_WZ^^EZN4Jq}^jx~{u1D$0Bim8jEckeTzEAJ3$19V8 z0{+LXgdSg!zPU8$ex1c~<${UrIkTi59uGdgMCks!zRDBJR+?|}Ub^pZfuH*WCH|Wx zric2M_j#)Bvz7fk!8bTRWx7}G?}u~x4!Fu~%FJq!_m`dQRa0&COmX(Idnfd!{`z*< zQns<%Cgt)K4*PjlYEyrFD>>tA=DT-dtk&1J?ZsA1;vg#opZzcwiuF4VQYU>gRr%u6 z5*EErK=YN)Y|K;HH3#aB({77SzvPH{0yNxhM)F;c5=)pPdR?Yp7Tj?HXmYQ?@m&*N z6v12|-KhujRAOH#$Y7}TWR|WUwL7+h5(vZi4KC z`lWac$lzq4pI`O9*#xo==8=dY=#i^GRT2J^`38(*P>6V!)_DTs2^vuCw$Pvrnj0Sk zjCN>zcgL*HJjew12##|q_dlfW&UPcuSZ-R=#U z?o|^FYPobSgd4LRj zG(8w4jL77>mWtF{GSt8F_*2C257?A^%J2u&>}32A?EYvv^9N8%ll_4|uvN-;V7`^m rewhY)P(zd&8c1%c|6u(8>-vA@3u{c>`gTe~DWM4fxjUe} diff --git a/Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseP.png b/Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseP.png new file mode 100644 index 0000000000000000000000000000000000000000..77b27a2dbd583341169d2c4ec52d80175b454df2 GIT binary patch literal 1022 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I4M=vMPuB%fEa{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJq(MA#*AN19P>f zi(^Pd+}k_8Su*S*t%12mnj75OQYKV9@GP6;n!x)L z$lrqKIn3oM-}(3O=a^5D1KNcT+<3TNxBA!jk1s3#|25qIbgQ5D`=_UVI4(`z#yLUr z<&4~HnfQM*@4NQA+#4flzoO)f8KaS^>}KBvAJ5}C!V1Bc3~#fXn1U``{dZgHZ2N?N zf1dyMJ{a@nar^Q8=YK!_yW79?^!0Pz{juBkT&sM!SEu@CqiMMsTe!NzvLg>(T}xgj z5Vuiv+vVcz`_=T5efsb2?UwLAe|~P~!K*;G81AqFS`AYSv{WKyF2hWr=G8z~Bo&l0 zrFikIdv}fT->=X9`{z%O%l>(*^5w?e>IZgTWAXqhiDJkED&bZDx;&F{3D7*<1`|f3 zrK}Uw9F}cixCAs$%wZP8%uAFizH8-RKjnxLes}sc_y9cxRJvbzmMhP?Jliy`hoZs? z-4Zc(tImiV(pGa2Gu*N3>kQ47_glM9_`TowH~Q159mYfjff{4p-#dA)ZH3B}xh@gKHtvpJr*{JGD@r5}$SeeepAIIInB zsJfPd-zaW WuiJ9c!P$$9Kti6belF{r5}E*Ps-s5$ literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseY.png b/Images/VanillaStardewFont/Original/Starlight Yellow/lowercaseY.png new file mode 100644 index 0000000000000000000000000000000000000000..df55ac023772f7a3566079ae86fd2e657c06d9a0 GIT binary patch literal 1248 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I4M=vMPuB%fEa{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJq(MA#*Cwpjb~A z$B>G+w|5WbiX@7#B(giREpZlLad2QcD%hzlIpgbs$hFm6#>u(-{@%4gvLBovQ{vK13#RRH$o%nK!>0*4Ne6n=f7< z9rAEp+rjqpT+RoqBS)EoFC2bsT7D>&x4HQ=Foq7Mw(gc{95c-W55FB?^vB!Pymc|Aip5|@Ph}N?*7ky+JAok@81Fi1vkH* zzi|Eb?bl!fEgiN#cwof7LQF=ch56(?nKM@BrsuhROv~r3$~TXH|4Gu6r?>ae!PM)= zmnm8}FiJ_cHlJSC@9X>{-15N1j2sa@z2XL|u48TwL53{GE^zzr=R)^puz5rd2<*QiPr@#HD_e1Xf)_1vkzY5h(+xm5L{H{N-CcrR7sI=ht zFBnu-TOxI4?`}!S+G+Mn5`mtxeWnKSC5en>ckT7}xUa9@*FK;9l7Wd?mt65=<|~0v tMhJKBr=BIOy^o0|;Kjlh`O2zatlW!z8P?QVzX6s;44$rjF6*2UngDc?IFbMW literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/lowercaseH.png b/Images/VanillaStardewFont/Original/lowercaseH.png new file mode 100644 index 0000000000000000000000000000000000000000..b113029a8d64c074043339be634f76d33d307b92 GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwsy?=IAP*qC8I*#}EtuyAvF_4j6E-{0-heeSdUsX2j;WCAOsr9!4D(x>oJm)FXTP z#>O65%Z`{bzc+R^3iAT_wjJ2|`v~(R&Zh!3yA*2M)TcOa5LdX?E}v0#MqmoJSmivY tf`800GoEX*)JJTnxsgB1-r0Yu^f&3Y8*{DwUjc1q@O1TaS?83{1OSVGRx|(r literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/lowercaseM.png b/Images/VanillaStardewFont/Original/lowercaseM.png new file mode 100644 index 0000000000000000000000000000000000000000..37a4fa1bb67ed498f70e64a5565a08fe7168c978 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwsy?=IAP*qEt^8#}Etuy*-Rv2NZaiKdbNGzQ5eB#Kf$*^&nGw)e!|HJH@5VQ}}|c zJYFh*7+!r07N06p@2&LjSG?5TUa+5I!PnxH-rU7^^qbgkeYM;z_fGsEv$j3IPf=d@ guiXU`KiM`4Pw_f0eNAn07SKWlPgg&ebxsLQ0G`oMLI3~& literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/lowercaseN.png b/Images/VanillaStardewFont/Original/lowercaseN.png new file mode 100644 index 0000000000000000000000000000000000000000..28995f2e7a865c4499349cfe4c9b069c0ca667c4 GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwsy?=IAP*q8LvX#}EtuyM2ya42nF=znA}=SO5OnE4`yn5nmELLYVE%eS=uWf5%Ka;j7w{)NX=9!|Z~yw+cZ_%T-{$u1 Wy5xMUse1;{9tKZWKbLh*2~7Y8LQ%^A literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/lowercaseO.png b/Images/VanillaStardewFont/Original/lowercaseO.png deleted file mode 100644 index 02eb070e0a636870843e81220f625dd316fd08df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwsy?=IAP*q6AMD#}Etuwf&BK4GKIgzt#62zn{&jIPqMgtJzG3$)&<)@76a4F)n5D zVx7XJAsV2yAxE=NzViOg?n`gFHm6CQik))5v9SM%-l@aP)%y)y eC+n2gJMKPRdPiG{IVlck7lWs(pUXO@geCwX-%m3D diff --git a/Images/VanillaStardewFont/Original/lowercaseP.png b/Images/VanillaStardewFont/Original/lowercaseP.png new file mode 100644 index 0000000000000000000000000000000000000000..32d00957421d03e8cec0791014733abe9178d9c5 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwsy?=IAP*q9RWh#}EtuwG*QG4k&Q2?45l5^|cf8P8`ewwg|Im-pgExi6-q`&=lF7CEmt>2e zxP{TP1s?CkHwsK`KD6%5^}Z+TzG?52mooo;cFCVlN8X+S+RotV>gTe~DWM4fU;1DD literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/lowercaseW.png b/Images/VanillaStardewFont/Original/lowercaseW.png new file mode 100644 index 0000000000000000000000000000000000000000..a86f673c70b921b72a0baa3eb87523b3d5069c2c GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwsy?=IAP*qD)U0#}Etuwf%v74GKKYKP~0p8XqKkz&(3?VR#MdC>}>r3{{~elF{r5}E+niB>8A literal 0 HcmV?d00001 diff --git a/Images/VanillaStardewFont/Original/lowercaseY.png b/Images/VanillaStardewFont/Original/lowercaseY.png new file mode 100644 index 0000000000000000000000000000000000000000..818b656e78f542da3def4c879de881e71548aae1 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwsy?=IAP*qEt^8#}EtuyZw$_2NZZ%J}<9ZU+ Date: Mon, 13 Aug 2018 12:41:11 -0700 Subject: [PATCH 041/110] Updated Stardew Symphony and Timefreeze --- .../AdditionalCropsFramework.csproj | 6 +- .../AdditionalCropsFramework/packages.config | 2 +- .../AdvancedSaveBackup.csproj | 6 +- .../AdvancedSaveBackup/packages.config | 2 +- GeneralMods/AutoSpeed/AutoSpeed.csproj | 6 +- GeneralMods/AutoSpeed/packages.config | 2 +- .../BillboardAnywhere.csproj | 6 +- GeneralMods/BillboardAnywhere/packages.config | 2 +- .../BuildEndurance/BuildEndurance.csproj | 6 +- GeneralMods/BuildEndurance/packages.config | 2 +- GeneralMods/BuildHealth/BuildHealth.csproj | 6 +- GeneralMods/BuildHealth/packages.config | 2 +- .../BuyBackCollectables.csproj | 6 +- .../BuyBackCollectables/packages.config | 2 +- .../CustomNPCFramework.csproj | 16 +- .../CustomNPCFramework/packages.config | 2 +- .../CustomShopsRedux/CustomShopsRedux.csproj | 6 +- GeneralMods/CustomShopsRedux/packages.config | 2 +- .../DailyQuestAnywhere.csproj | 6 +- .../DailyQuestAnywhere/packages.config | 2 +- .../DebugSandBoxAndReferences.csproj | 6 +- .../DebugSandBoxAndReferences/packages.config | 2 +- .../Fall28SnowDay/Fall28SnowDay.csproj | 6 +- GeneralMods/Fall28SnowDay/packages.config | 2 +- .../FarmersMarketStall.csproj | 6 +- .../FarmersMarketStall/packages.config | 2 +- .../HappyBirthday/HappyBirthday.csproj | 6 +- GeneralMods/HappyBirthday/packages.config | 2 +- GeneralMods/MapEvents/EventSystem.csproj | 6 +- GeneralMods/MapEvents/packages.config | 2 +- GeneralMods/MoreRain/MoreRain.csproj | 6 +- GeneralMods/MoreRain/packages.config | 2 +- .../MuseumRearranger/MuseumRearranger.csproj | 6 +- GeneralMods/MuseumRearranger/packages.config | 2 +- GeneralMods/NightOwl/NightOwl.csproj | 6 +- GeneralMods/NightOwl/manifest.json | 2 +- GeneralMods/NightOwl/packages.config | 2 +- GeneralMods/NoMorePets/NoMorePets.csproj | 6 +- GeneralMods/NoMorePets/packages.config | 2 +- GeneralMods/SaveAnywhere/SaveAnywhere.csproj | 6 +- GeneralMods/SaveAnywhere/packages.config | 2 +- .../SimpleSoundManager.csproj | 6 +- .../SimpleSoundManager/packages.config | 2 +- .../StardewSymphonyRemastered/Config.cs | 25 +- .../Framework/Menus/MusicManagerMenu.cs | 298 +- .../Framework/Music/MusicManager.cs | 64 +- .../Framework/Music/MusicPack.cs | 6 +- .../Framework/Music/SongSpecifics.cs | 129 +- .../Framework/Music/WavMusicPack.cs | 5 +- .../Framework/Music/XACTMusicPack.cs | 1 - .../StardewSymphony.cs | 100 +- .../StardewSymphonyRemastered.csproj | 13 +- .../StardewSymphonyRemastered/manifest.json | 2 +- .../StardewSymphonyRemastered/packages.config | 2 +- GeneralMods/StardustCore/ModCore.cs | 4 +- GeneralMods/StardustCore/StardustCore.csproj | 10 +- .../CharacterSheets/VanillaCharacterSheet.cs | 373 +- .../Fonts/Components/TexturedCharacter.cs | 3 +- GeneralMods/StardustCore/Utilities.cs | 22 - GeneralMods/StardustCore/manifest.json | 2 +- GeneralMods/StardustCore/packages.config | 2 +- .../SundropMapEvents/SundropMapEvents.csproj | 6 +- GeneralMods/SundropMapEvents/packages.config | 2 +- GeneralMods/TimeFreeze/Framework/ModConfig.cs | 2 +- GeneralMods/TimeFreeze/TimeFreeze.cs | 19 +- GeneralMods/TimeFreeze/TimeFreeze.csproj | 6 +- GeneralMods/TimeFreeze/manifest.json | 2 +- GeneralMods/TimeFreeze/packages.config | 2 +- Vocalization/Vocalization.sln | 50 +- Vocalization/Vocalization/Vocalization.cs | 3365 ++++++++--------- ...ocalization.csproj.CoreCompileInputs.cache | 2 +- 71 files changed, 2513 insertions(+), 2184 deletions(-) diff --git a/GeneralMods/AdditionalCropsFramework/AdditionalCropsFramework.csproj b/GeneralMods/AdditionalCropsFramework/AdditionalCropsFramework.csproj index 8f97cf5f..7fce171c 100644 --- a/GeneralMods/AdditionalCropsFramework/AdditionalCropsFramework.csproj +++ b/GeneralMods/AdditionalCropsFramework/AdditionalCropsFramework.csproj @@ -100,15 +100,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/GeneralMods/AdditionalCropsFramework/packages.config b/GeneralMods/AdditionalCropsFramework/packages.config index 58156b73..6766c23b 100644 --- a/GeneralMods/AdditionalCropsFramework/packages.config +++ b/GeneralMods/AdditionalCropsFramework/packages.config @@ -1,5 +1,5 @@  - + \ No newline at end of file diff --git a/GeneralMods/AdvancedSaveBackup/AdvancedSaveBackup.csproj b/GeneralMods/AdvancedSaveBackup/AdvancedSaveBackup.csproj index 8303620d..32b1ccda 100644 --- a/GeneralMods/AdvancedSaveBackup/AdvancedSaveBackup.csproj +++ b/GeneralMods/AdvancedSaveBackup/AdvancedSaveBackup.csproj @@ -87,15 +87,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/GeneralMods/AdvancedSaveBackup/packages.config b/GeneralMods/AdvancedSaveBackup/packages.config index d7988130..87b1c41e 100644 --- a/GeneralMods/AdvancedSaveBackup/packages.config +++ b/GeneralMods/AdvancedSaveBackup/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/GeneralMods/AutoSpeed/AutoSpeed.csproj b/GeneralMods/AutoSpeed/AutoSpeed.csproj index 61862471..f73cb848 100644 --- a/GeneralMods/AutoSpeed/AutoSpeed.csproj +++ b/GeneralMods/AutoSpeed/AutoSpeed.csproj @@ -85,15 +85,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/GeneralMods/AutoSpeed/packages.config b/GeneralMods/AutoSpeed/packages.config index d7988130..87b1c41e 100644 --- a/GeneralMods/AutoSpeed/packages.config +++ b/GeneralMods/AutoSpeed/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/GeneralMods/BillboardAnywhere/BillboardAnywhere.csproj b/GeneralMods/BillboardAnywhere/BillboardAnywhere.csproj index 84f69494..ca00eaec 100644 --- a/GeneralMods/BillboardAnywhere/BillboardAnywhere.csproj +++ b/GeneralMods/BillboardAnywhere/BillboardAnywhere.csproj @@ -87,15 +87,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/GeneralMods/BillboardAnywhere/packages.config b/GeneralMods/BillboardAnywhere/packages.config index d7988130..87b1c41e 100644 --- a/GeneralMods/BillboardAnywhere/packages.config +++ b/GeneralMods/BillboardAnywhere/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/GeneralMods/BuildEndurance/BuildEndurance.csproj b/GeneralMods/BuildEndurance/BuildEndurance.csproj index 3b3d4da7..2d297b06 100644 --- a/GeneralMods/BuildEndurance/BuildEndurance.csproj +++ b/GeneralMods/BuildEndurance/BuildEndurance.csproj @@ -86,15 +86,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/GeneralMods/BuildEndurance/packages.config b/GeneralMods/BuildEndurance/packages.config index d7988130..87b1c41e 100644 --- a/GeneralMods/BuildEndurance/packages.config +++ b/GeneralMods/BuildEndurance/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/GeneralMods/BuildHealth/BuildHealth.csproj b/GeneralMods/BuildHealth/BuildHealth.csproj index c6a2c774..bd14989f 100644 --- a/GeneralMods/BuildHealth/BuildHealth.csproj +++ b/GeneralMods/BuildHealth/BuildHealth.csproj @@ -86,15 +86,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/GeneralMods/BuildHealth/packages.config b/GeneralMods/BuildHealth/packages.config index d7988130..87b1c41e 100644 --- a/GeneralMods/BuildHealth/packages.config +++ b/GeneralMods/BuildHealth/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/GeneralMods/BuyBackCollectables/BuyBackCollectables.csproj b/GeneralMods/BuyBackCollectables/BuyBackCollectables.csproj index aa476ed7..f664e01b 100644 --- a/GeneralMods/BuyBackCollectables/BuyBackCollectables.csproj +++ b/GeneralMods/BuyBackCollectables/BuyBackCollectables.csproj @@ -88,15 +88,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/GeneralMods/BuyBackCollectables/packages.config b/GeneralMods/BuyBackCollectables/packages.config index d7988130..87b1c41e 100644 --- a/GeneralMods/BuyBackCollectables/packages.config +++ b/GeneralMods/BuyBackCollectables/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/GeneralMods/CustomNPCFramework/CustomNPCFramework.csproj b/GeneralMods/CustomNPCFramework/CustomNPCFramework.csproj index 4ae89c3a..9eeded7f 100644 --- a/GeneralMods/CustomNPCFramework/CustomNPCFramework.csproj +++ b/GeneralMods/CustomNPCFramework/CustomNPCFramework.csproj @@ -109,25 +109,25 @@ - - - - - - {0756D36A-95C8-480D-8EA6-4584C03010C6} StardustCore + + + + + + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + _p0VY(GR8*er^5m)ohsNBokw03S zle-nWVQ4|sq{TJ*;;OkN85Q+Qs%sY3SC!N(o?l;ES5;9zL$9t`#`iUB<#CNYW5(hk s+5WqJEx)5NgvGk90{{YCQUCw| diff --git a/Vocalization/Vocalization/bin/Debug/Vocalization.pdb b/Vocalization/Vocalization/bin/Debug/Vocalization.pdb index 4e1c9ca2eb288fafda19cdf1aae0e2864fad5a23..f3cb97c0e8edf8c747f9f1a3fc45e8a0603fb7b8 100644 GIT binary patch literal 65024 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 z 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 C?UaB3 diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.FileListAbsolute.txt b/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.FileListAbsolute.txt index aa52d96f..d7e4a876 100644 --- a/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.FileListAbsolute.txt +++ b/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.FileListAbsolute.txt @@ -1,11 +1,19 @@ -C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\bin\Debug\Vocalization.dll -C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\bin\Debug\Vocalization.pdb -C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\obj\Debug\Vocalization.csproj.CoreCompileInputs.cache -C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\obj\Debug\Vocalization.dll -C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\obj\Debug\Vocalization.pdb -C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\bin\Debug\Netcode.dll -C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\bin\Debug\Netcode.pdb -C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\obj\Debug\Vocalization.csproj.CopyComplete -C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\bin\Debug\SimpleSoundManager.dll -C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\bin\Debug\SimpleSoundManager.pdb -C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\obj\Debug\Vocalization.csprojResolveAssemblyReference.cache +C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\bin\Debug\Vocalization.dll +C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\bin\Debug\Vocalization.pdb +C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\obj\Debug\Vocalization.csproj.CoreCompileInputs.cache +C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\obj\Debug\Vocalization.dll +C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\obj\Debug\Vocalization.pdb +C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\bin\Debug\Netcode.dll +C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\bin\Debug\Netcode.pdb +C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\obj\Debug\Vocalization.csproj.CopyComplete +C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\bin\Debug\SimpleSoundManager.dll +C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\bin\Debug\SimpleSoundManager.pdb +C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\obj\Debug\Vocalization.csprojResolveAssemblyReference.cache +C:\Users\owner\Documents\Visual Studio 2015\Projects\github\StardewValleyMods\Vocalization\Vocalization\bin\Debug\Vocalization.dll +C:\Users\owner\Documents\Visual Studio 2015\Projects\github\StardewValleyMods\Vocalization\Vocalization\bin\Debug\Vocalization.pdb +C:\Users\owner\Documents\Visual Studio 2015\Projects\github\StardewValleyMods\Vocalization\Vocalization\bin\Debug\Netcode.pdb +C:\Users\owner\Documents\Visual Studio 2015\Projects\github\StardewValleyMods\Vocalization\Vocalization\bin\Debug\SimpleSoundManager.pdb +C:\Users\owner\Documents\Visual Studio 2015\Projects\github\StardewValleyMods\Vocalization\Vocalization\obj\Debug\Vocalization.csprojResolveAssemblyReference.cache +C:\Users\owner\Documents\Visual Studio 2015\Projects\github\StardewValleyMods\Vocalization\Vocalization\obj\Debug\Vocalization.csproj.CoreCompileInputs.cache +C:\Users\owner\Documents\Visual Studio 2015\Projects\github\StardewValleyMods\Vocalization\Vocalization\obj\Debug\Vocalization.dll +C:\Users\owner\Documents\Visual Studio 2015\Projects\github\StardewValleyMods\Vocalization\Vocalization\obj\Debug\Vocalization.pdb diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.csprojResolveAssemblyReference.cache b/Vocalization/Vocalization/obj/Debug/Vocalization.csprojResolveAssemblyReference.cache index 769f1e75fb3e7e20fd4a74cb17a7b994d0d58c94..c197cb7ca2fc2d83ae90767fa6f19bcfa4dc374e 100644 GIT binary patch literal 127397 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 literal 94587 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 XR0@UgFduao$rT#;qmCo171sQJ%yYZO diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.dll b/Vocalization/Vocalization/obj/Debug/Vocalization.dll index 605be4ac619a2312d825f66abf9e3b2f04c3f624..45cc7edd10f2c42e7778d6221f8a35596de79d59 100644 GIT binary patch delta 12270 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 Nb#e1c?fP2J{{ryr8RP%} delta 8259 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 s+5WqJEx)5NgvGk90{{YCQUCw| diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.pdb b/Vocalization/Vocalization/obj/Debug/Vocalization.pdb index 4e1c9ca2eb288fafda19cdf1aae0e2864fad5a23..f3cb97c0e8edf8c747f9f1a3fc45e8a0603fb7b8 100644 GIT binary patch literal 65024 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 z zJQn}`Q1O(C`}wO3k4HY%vZnQ~W#tC28sQCLb=by+r&u`^vNrd+LdDbHhMxtQE9^R_ zJ?n-ZxbC=KIGsa^RXBF*2&3z3Cn9SdRL!YtzLraRPLesE>R8)T^-V!dwYwK@zv#dkP*r=i#S zFyiZRn0kEUBR%y`G1ucev#}Ts^;@E3pQxMDM7?+N_e(4%Zvk7N>k2PP-leQ%j!^bPc19gha9K929Wb-Pq}Uc z+gR$Fi1fQ!S!=q+gr5eR!n0vAJjXJ;mXp8Ma(oQPtmRt3i;!6ln6+CgxEZ-Mywlo0 z1eM;iupR!oCej|h2RlHnx0rBU3po|}YuFKLZPp2vrr@37F|Z4)3|Vh@$HH!~4(tw_ z!XA+Gd8a2#hAMYQsPsACb$TK9hpN9();|aKM)uFqM$opJH`;_y8#VGCE@cfhsqd3ZH^!BXEP zSHAvYWv%D0A$$)c4RhUX9sJsc{|u$C>uwwH*ScQ$(t2M04dHdjy8dTsxrw*aymfD3sk;_&9O~RQ}Gh{<>aATY9tLlW;bC3eJJ5 zw-r$K>){`fZ-Re<_gnw%kUro&3h4vhW0ty(C%ady{1)6v_}lPB_$_=H>iV4Y%E4EV z%fnY;75Ex#25_kw1l9;Ww}wEX%dfp71y*y%S+C zyc z>5qov@IM7fyjk!l|$}oB@+88$szev2q)DKH+WQg|IWc z2=;~^90+H^k#H6q2WP|aQ1RwN#WxeqL7oNY!r4&eS#HDE!THEHLe?7IR_p%=T#URO zE`g6)K5xTcwz9rae+l7l!KLtj;H6N1C`jp-h0Bo3!R7E+$Qs6L09V1bPfW~mz$N@tdp7sK_0FM%82mGC-v zl?}fUO8*{s1OE3ysq-Pyo>N;csJ|??}0<0;y)AKi#!V62Q%STI2}F+XIRdH(w}4HOW;F< zFNNFS4n78Nf{(*H;SPA0<%3Z1JZ$AB;S+>E1)qekLe`w#Yc~8{DE)o#8T`M5 z%GZz9|Hz|Rw;@-6&%vXi>OL>U;Z=U*Kij623`rjg*QT_e;fP``F6M;ZiU~&=iraF=`gyYMH%--8F>XV59l@e`JUKfu!Ph>BbnhsQ$BHM}ZN@z#clFBz7>zd7U_#A^YS z@6I-S04$IHP{=(8FU$Jp!V1U};n8rC^FKTLk%=S>6U%32uUw;Z}Go zd=@G{FTg6uJ7HD$IXn)21*^e07e+WI^2%6NgtDt@wVlcB!vUKfsqoLhN?kb5ZJA7DdxHB|iTVI$-Xurb^Oo50&(Gq?qEPUhWXxedy0 zyOp1ToU3_%ge~AJuqAxe@@**n-B$htwj%sf*c$GKZQ%DdyfhaTrGG4Ji+>fU^lMxH zWY`Y5IaGahvi|*Hd*p#o?UQExC%{vY&x4)dZ0o-Wc1B(dyTB!uSJ?1ttb7wpC43|7 z3b(^<@Q<)Nd=2)1pFrjNbJ!F4udo+9@>s6z!HTditPA_YCXi=Oyc9SP_JpUyA#e~p z2M&h0kaJycqUBVmbS|*+95{^dxo`wr3eSL-!%^@`cow|M@_H!y8?Af?Vgo;mp48r15l(`=;AE)pwsUUpje_|w6BfWpunAwyCfd4yC>3?edzlRqi z{|%}g^(}Yl9}hj`>QMc!f%R_(XCZflbKpShKOD|Q9s%dUGb}T0c#f6x;e5gi-~zZ9 za*xwn4Hv=na53Bhl@ERUbqVtQ@DlhMTncx=Wl-N?T?s$8{1(b?zm?tNSdS4NgO|Z0 z;pMOj_g11BI-2*ow-wSVs+ufINS_tz`J2X zDE;Pe3vvs1FKlVq!G?FSavyjf;e8?3n7kqI0eBXC2%ZZS-z4}javt0Ur@}{|2e-qS zmW!bDmsoi<avfB9H(2>z z_-DfJgMWd0Z1`UI2J+|dE%+7O4a-&c?e#|v-$kwr--9Q@_hECm2ez>63YA`WD-VMo z5I!7!2*<;ZpuTgy2Tp_1Uj#o!UJO5hOQ6bejSasOeu{h-RK4u5{;$Km$h+Vd@PDj7 zk6}6ckX`r{tPPb;11mR$U*q4*vV#rpVr6~9{u{#ez0hyrSoj?*fZs!XpHuOzfPX_? z34egsz#rje_!GR-@-Zm=9aer7{!I95@BsW6I!AEav*G)p^p8A&=ZEn>3UUq9s{obn z+EC%GU@81t!_u&gWmg;C%gSfKBM2V}d4|Hvfn{JJEDPsBuC03WE!RNBf2Eagg zHo+s|Hh2_##D+f)rT;Fhfd6|?`T55Bm#N7*0=XUWrv^NJff|tU^a6N1SH(1^crLS*I z%Ku5oGpF8DkY`T4KSQ2r@&01N_5DZb{|I@;#rp}ifIma!yCOG@6@D^oiCho1hV`N9 zH^qjZ2KhU#UVqEc)_<&(3t(Hq3nACky=AaH+yMF8vff?r6!;=kdVhu;kpBWtg+D<4 zuBoS6=v;&MYQnCt6_kD_*bTWe>;b!24zl6Htvn9)Bz!#V4fQ>3uHkzNVLx~+RD3tV z(~vhpp6&7OhFs(Ko`3`4la{YTlV2-;3Qs5eGdKwT1P8;PZFq$wUq1;B!M_e13QvN{ zcN?hqdc$GJ{UP@fybS9<364b0gJ;5dkY|p(%ivk?9w_^VVH)x_I2yhK&xU&-_ar=S zPdj6wYgrk}?szLVgc*c4f;_|Ib%5jGX)qg(fZWsYvf;Tf$MSrrcrLW^C2#`aOJOct z2PeYyHheRb{^KwY{~b{Idd>QO0w*JX2J_)wsDAdd4X<<(>rCXza0;vqr^1$S8uahk z_vXI1o;hlX8-*i~&3{It8u#W;HF6E^ocs6ebx-~j#IJ`nE202x2IaW;)Yl^!l~!TW#gI>V{c=h%(DaaNUM?4&9I$)WG zq#kB^ZH!)9o)7TT%ltdj>vUM@{r{w)`cxeU&pYUuiN@qxTXFrL9jSjk+ok&Nd06?Y zW81ES)7`ei7}$_n?{4fH(+}#<2kOxm>XEkgTiNF=qHPe(ulh`7a;&Ym|NNu#-^IkA z$}>#=$h!9P-YSy!Xy1?4y`JA+NdNw|{(i7JK6w2muG_Ye{2gxHCNa8(8rzd-XMc>g zCf}WK1954l3@!D+3AXw?H|USq4u-)qgR<-4^fEe$^Vh_L{qMDXM-zW1^5D-Szr9{n z2E7xa?eONRzb}o%_0!0tTUHjwcds5Yx1ggukKui(|bj8;lcA#ojR<}n!)GkFdwIW@2?&F@!Shp zW4s?OiJ8m~JBbyAAAb0AU1QcI+GH1uE9JBJ_*|Le-QgTF4qfJ|taYmLJg)CffpU^- zGFzW+@=(jvnd+)JPVcno-LNE{xJ@zPbvW+&TSGc9HYe!_8kK0E55dz zYiJASSM^e|?hZG<|Csvn(@!+-{NvU~{#riK@j~yd9(+F3`;^-Jc`{KRgLRzW$NX`x zbF9NZrl|bk`R$j-xkT%PUmJUen{R(j`;W-C-ajp_t260SdjEHT@$<*tm3B-X`Z)7j z)-i{wJIx;znBOWe8iMD|>+-Cr|2;Rp`w%l(Gc8;Ve{C0YUhYDkee}2uXU_kt!kNfi z)^}z>jiA|3Ej}0O%uUw`v@)NEtRvohIMVu`1s5Qv!G&--Tm)yp#qfN130wvh&q}xy zc@?}A-UFAxd*KTBCn&ua;Y#F};41hvTn)d0mqV9=Nbd-^200F|fG5H$VJ)~8Hi6P> z4tbW-YXPr;z2UX658MFLp!71}b;z0UdN>~50JAM;K; zM7{#v4A)uz>)|cPH^5urHn<7$E~j%Fd=kq3kMMTnXW<=i58MntfOkSYhkh5_3-5-! zn`iQ==h0;!X7>GSGULqJ)bDSp zA)PF1=U*G}k7s$-FC70_)~`dzHb^t9SDSRIk&CWIuZDB7Nw=z<)BQQBp$YTH+gQe* z=JsFuNw+GaQTeaSu|b=k{}YSG$`+oN@W0*X7JUzJ0Cl$!e{GLYSBTDbSO)HZRiNs& z8hiqoTNKWdP%G1?pw48ThMLj-2zAtwzE)Y!A`gPk!Ljg9un;~Er@)FqhHLCd-T=RW_rU*w8Z)wg9Da+u1AYfzhWnw$%HN>I$`9}( zsB|?}#9*xahbcp>EdPVXYixlr-UxAHPrh4AH&=fAz+9Sz=xaE?R19v%-LhSebN0~kI970)wP zehF45oagPG8t_ec0({Gc^BlX;=Xr96_e?#W6L)ye)cXO}hNU@PB*7zK9TkBF~4K_$OPL=PsSb z`19PR(*(|jP2n6H&U2AQpXU^vX85m%JRfh~$>#ZZ?^fiNkmm)RR`52c{PMhk20evaT@Xcx}QtP8<0FIF9fK;dscgz{!Tp zB{NnX-uLiMg!z!M zW5O95P60Aw!E(0i}00oQu2#V&gprvGM){7r{56^xlDsk$1yO;C{Fieh-(yG8~AdcO+bn zd=y*(>%x_=9$XDuL+Q1Lmm%x>WozIdcm*5`uY%`5>1DvR$eHjOcp>Iz$DY3GWLZf@j$9v*5$XX>c1H2Oojs;iGU0R5~-@W60;j$Kf2f1I~p{!j({Z zm&2!!*TARY2KWrT4n7O-gwneQ(r3JTA$`W%4xfjQ!kzF1D7}~Ai^#9Qm*Cs*W%v$! z6@Ct-_a%G{`78K3{1NVgKfyo4pP}mKDBih{{t56+}{_X$e{*_s67w5Ac`Kf7S z|9WvUatkB-=M8#ix+8x6_o_~I>N_WJ<-oVsia025J6qQ9_2mxMuP@a7W665Y->;|Q z_xu}}c>MJAEhl|T%Fjdbx1<`H>l?whq@?TX``6rcUQqJ;01Zu?#oq_`Wf~2*kEyK| z=P3SpiT{15;9R3PjYdV~uSM>)Ri+lS`R7aePJ(|Q!p~Dpu50x&;kCFL=EtpXiuvE# z2;MK3uI$^=PfoPoKKNz4IxFE>8+85m;QQEkgZJP&6vZ1{8$G;u{dNlCZDQ}6>k6x% zUtJgR^Ba7(?C|3CuOSEVHZ6+RZ$G_*AH>_pDK6VD>wyQZ*xH(JP^f;x?Wb>AsQruW z^=-F<`-RJTy44G}SEBg(TRp$8`sEp%AdNsToR?qv)u10}^XpdMlk17o_t1{x?!YOO zu6WG(X|*tEsa{%go%MvGxkcY7)fn>oZt)oM`@3)3*yi(p-%t4qkGop*e7~GE?AT~# zcmi75^j+29I@cCt|2w~~eG)|B9CM|}_91ht3qOML*W6nXevHiH^v)+xCHxdB)z4sC zC_P>G+KYS&{2UIFKO79dfWzTF=+E8tk%F;&n#r&7S?s6zOV{bD7v;Sy8S}s8>lS?< zSl1PPG*+Cq61VdHH>m3jKf)yVGgNO>9@VoBAe)vi!}%4m3wy&-PW=y@ ztJxO#Fu%vrR4J*ntE6P}`D8|XsYB-WG=4J* z_!|Tqrxb4Xle^~;o>7>?-w#gioi!;dKPQ70EDrC>q1lhm*YBS*={%Au;b%T3jbDwB z-LUNZtn|#BN#m1;r58*npjzY1Po+yg)8*4A?>_Ujz7N$a7klv5En^hd0PYCr&ZgQ% z<D!v1@1RMb|sDE%IT0Y47;U1M%?xx_f3v>^+J@#PByMm@YrrLB4)gDRc?!u*#)*nLpL{p;f{tvf@ zn?zpSG5$9v{}kAABHd39iA z*c6h6xfjWN?@=7qyZ*QP(KYuTsar1t|Jv|em;@(4;_y_qlOTsd&d|7i2kXN5upTVO zxq#Q)LJB1$2BA!RCIRdX}+aQ zrd+g-*9uwdt~QXhoLPIamh(Vtb@ran@k+L^X3Q6JrrDH|&Uzdm|G)kiO=H6CkRQy+ccImkhM zpkwNzA5?vu22~&Zq3T2Fs6NDSeGEYM>m%9JN9CgP4XtYruRa>ly0z_jX1G55`89EU zP!>}kgQ5DzP^kJC4#WLp1hVSm45$LcZXlV}l|Emw(EA;2L;=kchgLr$WQ?QLAUG0vCs*h}_ zb2qUXR69#wavhihPlAknk1=k@STcHyAtR?i<^*#tmka4bCY(OvOhl%S@TGL_r$E+W z=KG41q575LB@LsmdQ^DUB$!qIP}en{}WrH_U{LHFzAX{iPd(|6gx^f4Vusw13d&ci4tW4VAef zW&TT0=7Pyt=}g{Q3-3qALtnZXnn5HBf)))IV=lGGU$YdGl}i zn_p@V*5odEbll_JPBETnQ-2PwRdiG*XRGJK{8qxI1`8ik)bz~E9-(vk4!_}C-KHJW zaWO^)lx{bBUjC*{mv8P>XW0R$G%w;YYo&Ixg6U5Iz{VqJqM|K zW~boV8h_0*8*zSrah+85wW$u*nmvClthOOelMlL{ITxYoiq;&=HD=9P6L!JBAxwo$ zU^hq^^mdzh_Nxa($E;QTyfq*{x;Dy8#^$e~dK&us@3O|MR+Qg4==lA`E$T<*@KZf% z>r4E~Z$Ef6)S84oX4bm2xmoL0fu|E*6%K+Y!@;mF90L7(HAf2aQ_bef{|36kRd>@F zw0<9Q^*u?m_2E}*32j=JDlb}>DsAOOX^uqZ9L=mx8^BS>Dex>v{&^dW`=3zj(J_#< zmUkWu)>rtM^;J5YhyPf(1ZKdit=>AAiM$@tkwr78{q}WH^B>`u2EkEpMigXFF@9u-n&rg z>-jd1|9ZY{Cj1W0fdU~#H5pp-U7!HNh zy?LJPQaB2E8PxM^%b}iITLIU=mGFMJ8uHy(=W@t*Tb(sf&zW5T_e0vy_Q6`ze$WR` zVH~93^u730(;q9BxQ`O}F+&vD`1i;w+qJVlo^+4gzsI0AU5jc<;fz(6<1S0ejxUUly+_?u0-C#n4Cd-?iCzV7#@;&e~N|C>Qt z50=HfNjqvwk}J)69@if?2B&AdR^j+2i}MQZ_wC=S1`e>*DA)YUF|;w?rRJQ^UndM_ zU(Nn1Z7MQ%8?LwhKUuy=pu*FwULDK-VSbiB-zYY`!P?7DuAJ3#ZTM;{A3>nP`L>vE zXXEK){WTXVoNx9SR=4)ct^Xx9{;jAf)URCSwqL1o9w?l_3hY@=dSw(-K5_V|&!w7dgKYvL| z$=_0g9jF`}M*hjrKVYM-qFZs=#d~3$#J*O;3u~6#_iMJKUjoTfe`Pc3MK+%CGe0pW zwOBaB-cf{A!_~#Lz_I4z{aOFqa}1n=;}~bwh#TP++;*JS61#AFaQkpS;&jck3N8t! zXX8_Fx}K$LU0Mrd4UudoGcd3LAt(*Ri%K`Ywf^W=dyco368FW!Jw8 z-*=Kqul5Sk_Vuj&DLQxc?Q=N+B<+a3{`h#woE&PR4%P-r@AvILvj&2Gb2AhW!1wc5u*)1%KE* zr0@G%eMU@po-1uHWCw9;?kny1x-FTjf^lC{$3cJG7eCw+O2ZGgcFa?Oot`!E?Mgm~ z5~SycTRY~cz)sIZ_;w{9m;kO$w-=79wd&y$*CjMg5doRSwM0~g{TXYAEJLq+ zj?mNc@+TyB4<2zbONQ<|L)Wca`%}8N>tT~Ds;9)|I$G~~m~Hyur#U2RvYxe?$g(VW zyeB24ZM&A;dN9v4dm#DCAny#pUu+7KKiAyM7U)XQ{)0H3qiBnUmBJ%fOGLx;cler9 zhD3JVC}Wx}XVgxA@9<#Wai{0 zwQA9_ZQ7vxymMLI7o?5PDa@WSHm$@X$;>erg=U?D3&|M;|Fm?Arj4{;4&i@hK8mK` ze`cb^h5yBzsciiG#m`@;JD4tE`-S?3=~(JO2M!z++BZSJ{~TTotV(X_UbXkUvsA6` zTyoFn^FMmF$FgUix%P#!-`v!XvD%ym?kL97y z3BJcT?sgY6&*+dgB{WDgiw5abe~=c02I=I;AT99U8<=X|8H zFs?`UD-Z93I+AK%i-MDIWpUcHfY2#};?efz;MU=}!1w(9_czu6m#Ca1oW9|a0(no_ zkX>hp&PS=^H1@-;A@cR>9rJ+Xg@g~HiE5&&a|OPgZ`KyvPu4wT(~8`K)_rGl9Or(s zX~7Cmz2O*~){Saq^#rxNdH_p5)7q7x&PSBbsyLm09FMDp(|Je@+zGgvxD#=@n_C-~ zgsX#74>}oF7pL`9eOv>a%Fqbc7}o@+yz5?#?v^&kX&uZdr=ImNZ?({TN918@Uz zr{f0U2IGd{hT?|dhT}%yv_>6?I}Yd|V-J3hwvqKdS~Vq&OG-XBFx9()@-R_ghH0e@A0VN~>A|b&f6h+TX=z<6ch#o4S zVnYSRj*547@x}F6_ zdR}gR?!l2cMDSFD>l++mBE|4u%;dtG@rPOgtXe*X(fVEev5 zw%>CJbSl+`f6pcH`#knTpJ?NnHc*v@Ajek2*|)DO+_$fck^lJl?=68u^o@#sloG_^bB^9DE1&3+Ij;|E7xgL*`(x)n zrvwt6{~8Iy{l8=#QI!8VNBKui_g4ac)c^iU=J(;hcfzo4kCc0^+Opx!_90ir)<4vH zz@;C5@NBhZ-F*4b%jcg~ZQ^s)?rYBVfBF9ReO9aXzSD20I%vW7x&71Uv>#u?7Sr-x z&o(=}^YM@GiWgRY@vV5nlN*h{|MyXX|Jg_RTh;%a^Jb@Pygc*EnXg`V)x@*27j(R& zZO8xYlKFk){?*DGuRriefeU#vT_EG*;^*?jup=Bz} zd2(UH72PX-vipaR?iv5-?EmbN`F-VnqwTE&{=Sa>_j|NIefiUux{$wt=R8iYE@MaL zXXfRP%}PxgUNAi)GpAr|YG(eFg4}6ihZm&fWn|7AJ1RFlEj#O+w1TYMoYKOe+>Bni zITN!cC8zVWD80+r>3&=pN%=Oe3>#OzjcZ0Yu2RC(+>G?%xc^%}USgH9hm+&+5eD$kT(!XDIS?Kl0xy=O<@Q z%T7zroJwOEUXYiSGb#VK%z9o)?D-|JSEI3hfE%b*Yqx>Hj-^`lporfWc(%ta$E_i( zLL~h6Cm#7uid&Y_n7-m4pYA^Ld6(UPY14h8I8Js=t))u08T*R6))U*F9m~E-T{Wbz zOsglT1_Rv>{!w?ZbX7~zRajV8H6G}`x}{>ibXAMeRajV8H6Q4x6P9tAN-R`!K&$K|F;$6VyAWAn$C)spXWZCc6|or5l7-bQ)J1IsEMW zg3PH-{gVCUUb)%XndurZ@{{{!=49q&r8|d(!ut<#oa!NYU{=mqN<8d0B6C)O{OX4E zMoiAjOv|9hNgk1wKP8`hDSdxzVK7oikD>j8czpj+Y2<}t@Z$;lB@fEXnXY9Hepsnt zqqv`DIYiuP>y$0~c(+d;x$V>!`)_MfA$ISLTgS_8kdsQ7K=o4vT~*Du=z~uM%;q z9Nx2Ws~qe(QCv6Sau`7Ym&YcL_{U(c{HPqNN74(*VIlfu(a$10!|E%I!=w6|_1L&{ zzcO4#6OEj>Y+fhs&j~-2bd(pxeMH2bY0q@LOu5yLhNWd?2mO}XPn}43wA>Vb-H1+5 zhpMj{PEOoIDj-^4wE;ttDH7ODn&8yOF7}3d@ zmTt=E=!k##7N zLbSg;S8-N#PmOsOyM?XYLN8YMs5`f5eBKyW|L>2@edb1%9%wrpu^Wea!ZSMI8M^a%&Yb!Is6b2AdAQ0zaxdCo3nbfKKO}%+#zr2G-nA zU$TUL_IXZF*#`PLr)9<|QheS`NXyS0npQAb{z0D^4(IBtfWFPBD4e1yWuG=ZBP-WN zpm1zUg_}CJ;mrxBxt0nqz9b2HPwCPjs=jw{4Abb$R$w#Q9<$nr>OY*v?A&ytzl@GD z8~xJ>&kyOV{|xI79@@+3Zzo_f`f5MRt-g*y<8)ZRATKQ^KigdC8oS-tWnicC?J{ep zbLG&8UGcHm<4@H0>KNZ6u146_VPEyCJgD#er92d1vkRww;%IB9enWk7*lxrqKk*># zpj=0DkV^B+P@3wK!?w}m{)qHOV5cDJV%2xem*fyHxPSWd&osP4nwF~lAKY#UAUF4Aj^ zozl27l;%+pyZxoP)~2~Hl%~d#UrMtjHfwB}hDC*fv_WHL&q)nm2^fJSJkdzceRvBF{nh z+fbU#BDT>q7m{8EcITk?Qz*@2BX(2h(D9-#ORCm95;lp`NM+h0>YqC!GcPAsQ!-Ou zEu-P|kr~s{OjxT(*woy-ye#_k=y|f1ys8d9<$O~+P=4A*Y%{X_u{`KQc3PYEwB5j_ z!+va(-mAZ2?B7Iu?h)<~*IVg&FS~{F;zfPkqQ3E>C2rA@c+pEP|L1gz&u#ANe^Gp1 zD_8&L#pm~T^?!YQ!4OyfuZ=Hku_@c6|{*R3>ddubi1;@oN*zWRwaqalx)vo@3 z5nqzy>i;9|h27i>Z+Dk=ahGn3UDPdh(VEyrpU0Q2a+j@&Eqf!rqNTf{Wo*SPQ=VPy zwd5vEj@iysq1cV?GM;D4$;sy0tw(nDD9wTUWM%83LuGmwbBt7MWf$mbEK?MW)y4CK zP+P;&x7~wncWib2w9KZXwxc=1er!#eDGW4Su{#F4HP-GJ>^PrF*%gnUCez#vAk)h8 zWb8X(|2g`%h1!9pN#S(WcBFqD`t8wwkMM1wd@^*G(l>LNUfEgGI6{>H1EP?jFRk&?&~&v^?5Y=QnnLqyvp-v^dG{Vh|c?=JhS^V z8=F+A^Gj*|h<$zZGwA=+EOdU+MU=AVCa|$nnzBiuoQ_0iZpemHE}>0uK8HEsUq9cR z_QdZ_hsGt=gOQB!yB{qDTO;ze(|{GZb?Ht$Y%ejRr~Yo!;o`|j;9X8S}J zWOk!Y;;-BMJNfB(Y15b>oBK{_W`?X|-OO=TYVF$vx%Ly$R7))9ZRnvQb`@~bv}wNtgZu z+>Py2bkDQ4I!5&=VcYOARz?3aTn0MxL+NQ=7`6$HF)897J;sKS@I=R$N_rpRbc}a| z($w4{oM!YGgMKSGCpS}|%_yKwG#-_c+G~?Y9MN;~N7CJd-Ph<%wRSq+nnvt0?9D;- z1Hn0|`CK@ELGuislkI5)*Af3xbhp^}RR=91w&6NhiOtp6%tPlMYol|rWyB_^gH{p$ zXdNU+!V}fOW2Cu`G*#vg~9QU7~vH6wygkZ=Vr=OX8o4?y=-i z<)L~zK4KfLw}CX^X4uR|r>(V7y>*S)1od`8#6MbZnmdHcGEu#Gq}iA>b?%%UO0!4A z_CV*(U34fPV^g1gQOBw}NR7l1t%FXayA`|J&>L>;R0n+`c8TghbE)vLC8~pI#J`#N z)qnlT#;-c)AF&PB!A@*8VWa+QfwfT`oD{JM>R>>`KUxO^BjJhape*TKhf^Kg8A@|- z#P&dS(3J~!)xjx@Ye5|hi^LJFgKebS3A@|STVm~02g4(FiRxfPL?=-l>>>X4#IHKI z)5fnl7!|P%*TD#GT%=&5I@oS)R0pR-Y=Sx%9r2IW!Ksn(M0K!`G+UCU>R@*$%`p+% z1J%LR40MlD_{$h~gE}}p5=XQSx|8lY?DS0hVQZ&47$31qR0nAhokVpoi}>$i&{khm zf$>WDQXQy#!{<=A4qnD)D>k#yscvml2bmF@pbjQR{G)X+DH5Kj4l0q}W}NEa)KHpd zMr@;Xpz%bYW~we!u6YsL=rIQ4UNBeLlSG|jbFGa-{q6Kf9MN`m9qI1It_Z!?t)1H0%!pm0 zb~Y=blc=5TBL2^aU*lCd#=oGQofEMQx3li(e}rp?PE~88@=&`A*IQ5r=SKXab#PuJ zyi^?!7L;Sapgd11o8@>~$H3CeR}#6Mb|iz4Br$}``;j(UhR zCzGby^y#5A7e{Ol)TV!A^7sihniT3-RR@~)hRZTq2j`ORUhKA_*TLGU4wgmi64k-- zh)$w9*h>6+h+lOu-o~%K^WunYxDINdzZ<7I$g(!7gOw4Rpbl0={G)ZSIuf3!4*HSa zXE@ctrJ*#}L~IXK2VN7u4(c*)2X$~+B#vkuIE@|WTtGEw1=y$#=2#om!Mcb|PzUQH{?R(v5D8CI2Rle}8fmHy zZVRP(b;R~Sb+Gdozi-z(D5!&LBXLCQU@qzIz^(|rMb=JraDBusQ61b6(MePX+lc=$ z;_r&?RvW+SU{l04TnF{ge+Z|({XT1>I=Crf6V$=Y5&vi%+!6^dRR@FxeR{y4Z(qj6 z^1!kzYi5oRl;@U6T+#A;o_sICt`>HhTgXo3d0WITTAnHsod<`6?jh#o<`&>(>~D{R zB`WJmO_{54b3k<&W4@rY74O{<+i+Pg#KyzsY;+E_HY)3TA~r!;-y87{m$k}m8}Xe> zd?%yV#>S`Pzb|4}st)XUPzk$PIGqPWLV0;0Vw>nZP}(~FZO3w5j(%n46v6TTHDX`t z_(|_BY+gsFmbKCGKNPVEj{o6^|Idz}__h+?O7yyi^6+THE`M4s%iH~NuoC*4aVoPy zYojuIB4U%M%(`Q@38yl^9?62Ai#|^73NDHc=S_$G?zs zHUs@C4NH#y<%oT$<0rkj*o;A^wzbi`TL(Mov>BC-5JWurxDxz)mymk%D1NesDrM|&48KHejbS@T6aT9 zyDWCSFz9XVl=m+pc8Til%ZN_6?siAQ64l*8(soF@5PWFU*4VQrVjHfzvdKJa#LYrS z^IjdN>h9Z!O;C5=Mf{_6*NM3H;#7Av8~gF;`1eNa64l*8?DpVPckQgL^74;}?Jw1x z>MyzM0oFLjs3Q)v67jNY)>!KysawlE-Sysx6}5~P6}UwOu{jsGb3SnAc8<++RaNMoaOR=O$T?)RQJ+8 zu{GDlFRS9}e^G4hjQHAH+_ksFE`Qv;qKSLO%-EGZ;_J$|`v0iAZlAj$7F*vXzF~{I zVN2|qa`9{Wx!3fIZ9K!>c&~eH#rSpYT>byvy}q@3{Uh-krn)ywjcrPaZz^y%6~t~@ z>fZE;dvn+LE#qANZ?5TX?(c4XIlg74yJcqV)}P|Hb#ia(6ua#Uck4;+*0r(QbK`f^ zb@l&E_s&}GonOc9ydr+rrS4sq#_nklzh{=q|9iW-_ZGO@D#W*KcDHSg-9IjV|0?(X zRj~&)x!axY<@Iw)e7n=56MO#8ZuWXM*3V6`?M~`6LR0TVOuZAa_f+;iud!!-hFr_n(Pg$$==Dk*gJU_w!<%GZ}^w|j5v{ik;gs0;0jG>+@08J4 zoZ18N)N>I}Js0t`)$E=2H9uog2^iaiJ^$wo_QqAy&t(LhF`m6M#$z#lHhbfhtF%`9 zq?gAp?P7k?pF%IA2tV_a*@wN%KM^o7&fdhCgibn!y-CO5mnE|^%j0+EB>c?Jlosqw zNyjhyQTDPQMP+IqesaD;%*`cWnj)B{2=dI&kND+}!O#2@G+?jb6haGRF?|xDGitFn zqZWHJSFvY)W>sZx)(HG&eWSf^*gK~Sd;ZTJ_Gb6w=e$ZpHG3mJ=RJeUpBCU}e$Ma4 z-ud|ioUaJHv4j?uVUL9d+nu5{?3tfABiWm?k)L@vD9^3P&-`(yEI1rL|K~~V?IU2} z`RpxxpU_21*ju!OKA_|shl2Kw*{aep1X~6Ah({XxeVLP=riHs&w(GxG&_73SJ(xLM zYCHNA>}4D1Ydo8ae|h|`A;M$1Hc=m|ez`o1hpsi!bElidU9wq=O<8R6(CHDfsTj4H zoRyt{pN=7LzhWJStHX{}jd`EP3Y*1>4v7`*h|Sp$n>#W#?<9BLn)tk}?!2wB`G>{k zr^OaDs^yxrPO|Hlx_8BxZ5#y^Y~(ZkqRscu%B)Xb?$lDNI{Z2KEHY8)ct4)NR%?qC zXSq;0P0P*C&zg{3Tm|`rYm8C3hV?RR6%E%qg#0$9%vG&no!mSVYR2|5k+6wbIceE` zun8|43D3)%nmZ#cdtg?6fvNw8$p2>@xOaix>0E;-KN`O@&VvPGA95as8@&D6M539p`*>#~oXeR*i@)Wnl8Qn{<|-Ka%jXt-j{UwIcew z_chHgFTYNbuvv&xyjO4p z$9fU{XdWNJt|fNLW1mnuT)vhn_x>FNO3QMfB4$&P-T-(>nQiOJQCflwXsGZIHL;Nhce9<*h?VpVP3^u>^T5 zi|%Bc@;1rptNl^UrSx;?m+(rMzp9=6{A~}V$8IV6Ab$mQ}$B&LH@2r zzdZWN-}j;XF~u#VZ{A(TFH!s3Z1XpiM1t~b6R{8SR|DNmHh&{S`fVfnLH<(Fy$+}R zEwK73KTfq$`3vqdB+B2qF0^$zrCp))sK!$ELH@Rq)>`!UaUdUs^eLuN`a%BQLw^nW zeF$H{ygE4kUJ?BQWSy@y&|Qhs@%-89>v&S5`dJKkYzpfg2_x+h3JxD@xIcKF_#eQg zCY2cEr~l96F!n(oQl2qE=k`BCHp3z|;d49L{T1_nGUFcQUa-Pl+)l3rU9~ReT@ovt z6)PGPn{#w*&iApoJ7V+JyYoME7bL|Nbc-!m6`TKNY*CxoqL<@~KX4a+5L?pRW!`^b z+`TX!UwWRq^t{;8d)$l0#4lRy@_+dtclnyw^2g#UD!MBw#+IkL7msr)Kepb9{}XS$bMY)!@Znj!9*A+by5yO&<&Uiy0M zvcqDRy%ziPt+BNi#x9=_yCNla#WS%hH^*rk`nuiEEc zwJ&yc@7UE3#;!RbcFogJD?wFXjGgep-EBvQD-r#-dmG*c!#^R0fH~v^~yvgZ$IqO%wH~Td)Zp9H5ZQU(? zCtKtDbvSJ|IF6^|z7ZY{H$nC9H$n9Sx4@ooGaLlBz*FF@FbxvFHwE4Sr^CCT<^*@c z3*bGl0&g!@c823dT6Z)|!u7))k86Y*h&u+?nlCC;G;89rvDdw3<-H%&#yrLuuN}6( z5V!LF5LEd+43+0EzWmAKG&i!QhL7Oi7d{I8yeK`50^Bd+jfcvVZjh$Z@!w%~i{EW7 zi=X1r_B3%Q&7F|8;yeSZz-No&ZcKa)i{mR#hW+=A-QxF_SEB!8oFBGVZG5l6ipa`) zRrorx8tEIb9^{^#$27x)D=%*$tLf~5%JbWBD0~N=4i%3&$#;<_!uO!s`TOu3_yJr9 zKZ6&+&*2*Q1-u4+38`aeH&lQ572E;8hEG|(2$jyuRwfV5H-wW1=Ua%a^Bw#L{2o@M z;G};T+>2ZV66V!`KfrqMpYSO76FeU7gSrRC^L0=6F=KErR6b6HicjAhpw7H3$bA)0 z?;{)nr@?aYELa}ShSERZ%5x!k@~*W08{whI*TPEhHdq;MgXGzJ0?PgwNZ!3?VO97F zr1S7Tgw(b71*`#ofHh(H7~>nP36FqB!`hI==nlv3b%k}|36_1J(&=aAVem-8Plom3 z1lRy(!z6evl)eWWA{W9&a4~EQmqOl`@GgQ);kA&ps-E6qZw~d|b_;k9R6ZVtitl;Y z68Qz#3cd(=&)fUThVO-KkpB+b!9&V0?}LqCN7x)52U}RShl;nOmAk=Cgm;IX;Q-hL z>Roo(odTsl5q3qM3QvHuVNZA=>;*4@sqk7T{TpF#<1^n zESL_bLB(4DGmxjlOt=D0gcrj}a5bcDduuE&g=ZqKg;U^0m<{iMitipc75QG63m=A@ z1KwjW4?Yg_;oGnPehsI?Z{SS02c8YTh37!OuVf;|R++DDRCBuHGK^e}FKg7~t@)a~ zgetw$WiSGpC zSI0RPDxYm|%4bX5{_;8iyI;y{VZyvBO+UYyQEL*SG8~WdaBXn)7y;dVZRtja^Niu9w8u*V>K2 zu9?yG%P0-m&v#AAs5v#~r}0Z^pIs_#)k`qG4lEzMQ|=bOn|=$ab;n;DgDd|Xrw~?x zMX)xU0~Ysk6rN_O)*-z!t*r6!BEk#c zGN}2CI3G%Hp_P}z<@m3FE8qrrG28@KLgr4!?k*@h<{i!|{2zl#|2gZ=7;eIM!PWS` z4Rsuhy~dw0(eOujDgKO&hKxnVzbce}9e5e63;zu1+nu$rExa7kHygbZq4Gmt=d8nj zu;m%nKh4VYG0u9z>0_J?@N9S$qz;^`A$4HvDJv7-74Ta8HI9m#t^ci7z87AHzsAw) z;S=x%_&mH3z5r#n3o3tK!kdwITe^%d@-GABUkTmevEvHmH%wz4e%5EZ?gVdtb7;z z6#u_k|3|I-H%Qy{p0?a&!{4#;r;s-7eFndRdu{lSR@QfDzQ+F$sCe{U9p$e9{0=$E z@>uKN!piO8_k?$Vdtnb7-rLH9;NS5d3>D9*HhePt2eLoTAIJEaitB~zgVQyVSi@;( z$Ld;)dj1$&+i7gRQl)35Np>8o#|V~652b7AR(32IL3l5-pKRmM_|uTMgH7?(CyroK zddJ$Uty+wEetJDfqrKTb#*R&i^?IV$_8{~W-@)h&K(F0F#Fu)Idi@SkZ}36t^*Tts z-Uq4YmrFI~PSvQ*YRoOFF{h~J^u=|+DV}IOXf)IQw3lE`(VqU%fB)Pqeuupku{FbA8{>z^P~tFt zc)F%83#(h!fjYgmXRY)J6UV zG9G%GGt`4+Iq;)k6<8luhe_~o*bp{^T#tG!VI$ZIHipSi$K4ew{Q;2i)m)3K{7$p} zS&;G8_93IFTb;ihNL}}IgY!3?c2gUvlku-h4^T1>t;d{FrK^797~5~0OusP*H_pgS ziBX$B-|Y!~eSdyD3O&u&Pc*u|UskcKbdILC(x!G7^dCXn$tK8uhubZF54;@X&UoL% zX~nT|hz{54rtPG_CdkY!yw0#490@x>-Dgo*Wy6lhQ(-5VV>#P~dsbcqI}?5Z>;gAH z?ge-^L&bAD;ebDR5%2x?uWvWa2OnA8J;)F|4jUuTbX&|aHx4Bb1d&1t3MAa zzboM={8vHclewkwzZIT>%-qWv10S~j%pIJu$jmVu=4c*s48xafICB6aGsZh-5Y8Cy zq(R0|X98qQbkZT`vq`5Sl&pDVCOjNYgq$bNB*=MU*c2+i$6C29oJ=@%?qtCp@JvWu z7=6mj=#y86IixoZD!)^#|2c3f^7-&Ac%k)Q3G%QExJi{SlM?_szMS@X*k@KMX1HeB;f`M(J-hHpX2+SB(EDQoX5cnOS^ z_0x?*$-3WjDXao7gLU9qSl6-C~cx!kC>3~ zL*?%*>+ivNL%yt?ZDe%Gk7=b2o>K6@E+t7;WpUKvY!pt{8Rp; zAZ^t<1wH`B!|hPtnR^hP0~Oz&tn5MBw6_30441=4;0nt>L+M{`<&E%B!movo!Q0{E z@D3aPAe8=2_$2<%K;`Q#>;DDZfxH`X?s#9po$za@a^w+^v9AK3MXm{7fK9D`GJFxa zHGB!CSe{_Rds=w_@ ztOU!KXD$INSXPIMr-qe}g7leQeOLvygjHcH8{P>@zb~wge?O>v4Y&Ri;Ni&Wum;S4 zDvvxHUI=U9zW~xFdzV`Ob+9h-dUzzShCVkhMHVQ2V(<(D@6D=Ys4GUjX;kPgc>Ot^lXO!{J%5Da?l*p!B-J0^}3m40xhtUmM=v$|u8_gb#;j!?ExjmE*W za24`ta5c<;JOlJ*!OP&;mPJtd`Ua!?FNA-FOX2145_kn%2iL=E;Rd(`UIlNpyca5- z`>gy3yqfSw;Wh9DxDmc+!{3I|-wm(B|0}5Uf3*IG9>%;4xiY*F9tKq&^`Pupz*~@8 zT6VVnCtA5L+)Q{sxCM@fx58{F`+RsCask{5{{(M`E8t!5VoQBPQTkU{`C524;n%@? z;TE_J-UA__;injq&e97Q!=U0D3ArZoM!^bj9IOZ@LB6l< zO}0D>N}yAyKl>fL4e zAXIvPwek*_Likg#4SWr@g|FN2525tGgYEGD9`bC)+Y5CZ@x%S_ny>?MEvRy7Z2jB8 z9E{u)4uQ=q+t~1SR_+Ri5`F?42K&I1;ULJp1yA2_8UaUJra{G@ zZslw^lJKdJXJp=NcnUn%hA)89Ukyj&e+g86Hdy~H@Koem;c4(T`E#B>Xv25HG59}Y z`KI-M*UF#4v4npP$H7Bta-R%VfoH%Y;dqz~m5;VC4Y?hh0EfbKI1)~TS&+3g-b^U{ zKfyDR&xhI2vs`4umstHpc{|0-}c)OQe-@A^>Tt>C%Ht>K?w3RL-? zXu}7=^N|NzjKTqw;^9DUrZG$@vcQiL4{AUn)7Sfz`uiEPJ zM8ba-qGug?q7ba*8Obw@MYtZu&tHqv*crgOBW=g{RXNx6Xezlh5uv^ZhN$+RuAi6L(48qisK0 z_FAX6i1vM;_P)O|-hcTfF53=~{2grBCUJHRH?~Jp&wd+eN4`(MX+7gua|~^Gp04c} z)H}6mHpS>an#W`Tz7Lkzg$19Bk3P({Ty81_iO7!{dwZ@YW}P8 z`#*6$Dvv+!n-8Y`=2JI~8M{W9V>yO1$UnE*)3$=~@Zj56Z#zy#^W*nlEq_&c{Z{R( zq+R>{NXeWb+HY#kpf%S6O@96Ja1G_6ab07Xzy9LD=cnHv_~Vu45(hW7OFuf6)iHmO zF6a~dx*Ew}S^DL+)Qp^tGRL5`A$~r5TYnDImOOPg;l6wt^P0)H6#B3M#=k9nkyb0W zqE8dM*fnL+S9~3qn`sN@*YCr^Wp}Xo{cXz2Pd`zg^xKUmiRYebM_R|PHS_&Vxv1Z$ z^L`;wzdH0c%C|oU_^tD;bGI^c z?#i^pV9ilu)*C$1n0rh7s~R)KZA!N`{@QNl8iFM&&MlBzC+3=kOGRfhGM84)7O2*H zD^zK3g_>pR+D5a8+mSWvzXOi8{$t>s$YbGMa2C89o(=DT=fG`n8B{zM!~2j|!u#Rv z@Bw%Sd=NebrS}Z{3-Yt@ukaiA5ZnVFfi4Fky+h!m$Z_}>JPJMz>%%8u3n;zTa0hY< zd-4BC1#`MeD{QMtPe6Hy482aDhaErh1F^ICe4u5T5P*#Y}mypNv&Nr}z{3+Yoa1U}F z_$|~d`a7su*Y{Ap$={(y4CxPn|3DrJe}EIx~=SPt%l{H;>&9mrZ6?_GE(+zq9#bBMox>U|3_WP;fatnJKj)O6Apt%z|*1hC&1dsI+yCe>5#we=`Daq!iA8v z=iXu{{R<&$(7mOwA=LW4qv2W`u5(B72G|JR4jV(AGqUHM1*Zw}L+}{L8h@uL)Vac% zc5|*YhaVy;vzE zec}C0;~AiniTsq6dFJO#MCMtaGYP&5C&Q0y_-BwcWggGQoHHT!rVV)(W#V&L z=O%xi9XV4V&yJjIcqE((8^avf1WGRjD*xSJE^>D`4fcS_7taU`hePR|2J`VBXXP_s z0rGe_9dd8lnE|;cZ1m5CGm+1Ovmp0)4Y?<2!k1h5GI%!O+}m_mE9cz^XG6w+=Um9R zZ|t^1<>P619{xKaYwA44Pm?dkJ441DqxT6cB>ZzL)0a9$$h+YjNT2A;h4fWMUw@N% z9x{EBGau3?8FH?gaQX%#H-`%d*Lx}p;qh=0uDO01Tb%GZW&aoN!e7FqRgUcatJFF4(*4Xg1@M2`G6I=IKK^8FHCio6?M2ET&J*Y}oX;=W!*NSa<{D_6Jj;qXfQkAmxA z3mdNWgBy^we(-A84_*WN!)xIwQ0b3>*CCIEH^2gTBb*Lzf^(qs7Qma47sAa@>jpVy zZ#}#X-U6j}8{CS#72W}Nz&qhn@NTH}fzo>mQdZtBxDD=w_rbrz2Vgk{V(A?Uw=)&;(VybZnr|7!gohOZ(&0$+n#H~2by3%&tAf^Wi)q3m{B zYJH&6kFj3vE&LCGZ^Jlz2Udaa!m99ns1LBIT^wQA2+F=W{1E>(@MGB4vWpGxW@W7# z{DkoS@Kbn-4IcwPLmmr1hx(haU%*L_w(3onOgd*n+N^gDWR0sg7k&fh!EfQkPfH{1K)wV12)Dz3!Uy3#_%u{}&p{{7c?DhgCXB(iU|IM% zl-^hH5ah369R3K)!GFT?@F%G9sl>WF=^qIX#lN0q6YJm9$||ZyW$Q-;Ye*Qc3jhKfY$sH2kUNhq0xH{Tn4c`mvV*UCgF$5mK=LE`~1bvQ$6k}^)Y(&ohCMJec!-;?=g7CNV>{* z2inO|_Wie?$E&Ln+8eqmm*(8j)K>B?RF~p-OP*gHOuT+Q1@X49&-m(d<>r@#zR}?4 zH~5yq!R5D=$zKp}%i?(b`qO(@LA=L0CCB#ja;R(K>0sV3)H{aZ`qO)ts{ayu-JjaO zU-(#uSUvw9x1Y~M@eQRP=%OoB;JHLAW?wbKw;rFS&c zS=R{mg-xKIzDaKsJO)`$$9W&an+%)5EZ7{*fYQ@_F6LR@Y}gVmfvw<$ka?H+rb8R( z-+$@G@pQoXb+6;B#`AZvv|m^2=eI*&?*!|YR9qg7NyGoHm#ZbxX4CQO*tK2mDBV_$ zuKUa5*2t4>v=3SZdBzRJ>G+iQt8tIvcHznrSv_1=+z8w(+%nu&Du+fw&Bu zu5*8jjmrbx{B6$aH{w@1YzuvuU+!VXzip@coovbGb7q_sWva<;7f!lCICp}ojT~N( zmY0z^b5vS(Hh=n+uYt+$?0mkvNxxXUpWG{#aPzl$^OO5#=49q&rBgE{;r$uD{P>J* zGJgg7ERrhaXFl$RU)_-1h{<`GX&L-g*yIsu`BU;Kwm9eT0lxjl!RdIa;<(IYD`)IF z+H%o70c{ufFu#XWF6XtkvB3`bKOnevF@{ zUc+I0lQBDY()3J%jV+f)rED{2@dev_HP4c72oF9`d6O}<_e#X2_Qkx>Nn+piesT*R za*N8iMXlYUG`DDetmx@j;Wot`{N3mFswlQ_U2ty2%XJ9V#b7=<8Y$E3NOKnlF1tYY zVC&;OY*`y@>Z6@a=a=du30>A4JKag^_>ex)lq$Rb!}Z}Nkym%DTiD1goZuENbqlw< zh406Tl4FH+O6s-JqBh%!dYp!>>;m0`t&ak1x#wf* zl8eZ0)Mq;0Ve z^IMDhIFiQzDj!FE)o}C2YlL8SC?{pmYY2(k%wy>1&GS0?7_TS(v~6z? zMAtl@I|8O7H-KltBsc{Uho@sZ8Zr!W6~jF)*cdK=O<)D)&%Wyd+v8HKlibd_#!%nj ztdDDeOTvY|QRxQbi(A|$lGoySS~Jo?MOQ%Pn_Mj+PW9upg_>8jhs@PHP7Td;J+0tq z1N%dC%rh0H0G`?ay5{>BveR*6<7Ggq+8i&>HqCc3I>7?`mCh{7c~EwXAWy11|F|>< zeUWnauXFwRR|{l)!$jAQx_0ox{Q0x4f&FW!X3Xt$t)(qIZ}t24#N}}U>8d<c2Rf!aPJ*ic0g&NQt2#`1C>@oD z7%mUmlr4{BQy$fe=j58V9$a}G%M7!Dy%r0Xhu^;@E)R~yl*cewiF^%*Dvyyc+&)Gj zt2~&aoAMY9RUW58mB(pN?E_b;JjNoceK40X<#9Sxc~EAiJd}>gLkyS4cx1nQw5B{> zqQ;LxE4Zfr_2r@GX@37!@=aY`&8DhRuuUXg?M{L!kIAsIWo@W>mcINO!Ys%+?r`pV zoa2U^OGb}#$jF@_eS+5+W<%PL38#(dZyTCtm^o1MJ?3HNJ2cav+LhuZ4WqAeQ~Elu z&cc5>R6fqP{);RxfV90(drEX)N9$0PGp+CO@6+fzhT8n=;Le6R*MfT&3e))++{=-y zI@$xvH@=4BaoV(&CpZor>7 zdurcx;Ng(--)jtyggVz5ojBKyH0OfuGgsz5OJ(}v@VQ}64RfBXquujv=l_W#zIx*UgG6tP{R&KJj0;URHfDCwHq7pL>LRLX1^k zYR|#FimqzpY)yQaUv%R`g5ycc$Vd%c(|7sT(~fCej1j5Q?P>3kylm4gv{b^?NVgzJ zH%ou|C@q`6e$+c>Qg&AU3`!mED+%K@lAJh5A-yAADF;@6ctmvfJ zoT{-oe~ZoS8JqiXY#sw+aE{MH&u^cuT}A4TRgA-CYe|*r9B&16jweIv-^_jd>osWYyF@mC*n9nNnnuG5`;Z7RRDX3w7ot8Eac z$p`0?xen1hm43&J_w+MnzFH49PNm|Njz=2mHNKK>Kn5||Dzw|eVf z2J(7HBR1dLp9t?l*4*)NsQ7lk$;eN^EchnWobF4gIpMc38k+rsxy7Vr9T$g&fcX$rm z02SXxI2-v|crMia=kp-nnB}X~JO_r%H@&x^^tJxWJ-6$LfR5{^jL2K z>r!WwrPl&3fa<3f!f}xKs+R*PWAlBr3!#U+90unX#bnz^XWDBgoW5z<-S}0v*MNR| z4*WQii*5X8z18jf*4NXsUjIJ7X1FD~?L+bE%n#DlxUP4(bk+raLA=L={MupfKX0vW z*G-1=I`w@{J&*SDt>e`^tUOM2tt|=1HxtbL%e}BtS@Z6=(;be+dAMJ@ z?PIH3q4ig~F4BE&oj*!;5c?wEC^O{zHGJF3&k(3^t)mjPzDrzh$v4`Je2ukJm>l1- zFm!Erp|wARK!sPfGT$aK@(I>o=YhhPThd01taX0!uVeLf-bsGj%EK(PEHkaX&I9S4 zYSX*h$|EiLW|Il$8wrM-yM|4yejOX$#)iLb!&_NCXv1Cf+1>A^JnTPQp^gR$(Hs@AbD!1Y(~A< z#xs8AC+2i75q@E>5@EG*jd7YsFwUFR0=m|qKUQC9{*K&QcpYvlZaYrn$IH0)aJz9o z;`D5`1}+Jw^}?NSx__Z_SpC1&(W~G0a7%D&a986tL0JZArvzYPI_c# zj|wjC^qkkvuODvhjw?xXGn3MolW(qbivPr!NwFkNU&q>Z(tE~!n)-XN*e3pivD8(N zwy$UHxxtuh?e+Iie{TQtKc4za9d|G{Q2Y2}`|m7)pdI<`#kQj~UFX_%$Uv329Yy|d zAH@^IrN7@7b8K7_lY(

n+Oq=V-}7j8LBZa6gSUoLhmN?os=8r56nZ>G|Q-j&mxo)AMWJuJpt0z|If1cJxDm zou0G$cBLP}26le9wWALTmxY_4EVy&&_s?xg>y}BNTPD!WEYaOd8I^JTn_NL2d_Nm6 z7qzU9Gvk5g4P~6tH;@7wKg{Nv2~N zE>+7lXyv8VovSksXMYnOTEEniecd|Ia<*G<8+f~?$}fFVW=(Q>r1tEX+BTIFoGpkiar~8?HM%Lp_Sk>} z#2-$~Y15;3O7D)x_4aLlIgP6NrnA|2|Mi!Tp-&$3lbN}BQ<8fHOB~FUp%-hYdiFf7 zbFYr6Hpv4V*I~}~RTPtG)d(0D4-vS4{fr%oL@w&|HlAJpoeF-tW?q))}3LGQvdnF9hH(~X63A9Dy)Zcyh zga@Q5u%Y!x% zjx)v)RW^m;(w6-*Xd}AiZH5Csu`HvWYB5Hx^t?^~Hkn-VUJ4wH>(yoK$o$N_{IOZ7 zNy7`KXV8epre@|(Daf5R)-Ed@8$N~iFC?eu|C_NDpT=W7u z37nCXZ%^P1djjYC>%zy*2o3n9g{iq2>1Om-yEV!D7O{rY`%NRB7!34di`O!m2fyjl zGyjLu$txM$^ZljfN{Aa9JeTm#@VB+Y_6)9~b(%yRjVq7SromP-u?o0qIN5imri0P# z^|IE`q9mBD>=C~F( zOo;aFyuI6hgDkE;UX&tMc-JAKJE<;Ylb;EVX^}zMS z^}?m%dgJ=w`r`WG`r}T*4Zsb=4Z;n^4Z#h?4a1#`8;%=+8;Ki*I|VlycPdWLvB%(4 zKjUzxrKxD4Dx+$3DE&%j}rK!1b#Oq@c#h+ C?UaB3 From 626299583455f25c3f83b4e5931e88854991d3c7 Mon Sep 17 00:00:00 2001 From: Date: Wed, 15 Aug 2018 13:22:31 -0700 Subject: [PATCH 043/110] Vocalization works, but I need to figure out the weird looping issue??? --- .../Framework/SoundManager.cs | 10 ++ .../SimpleSoundManager/Framework/WavSound.cs | 9 +- .../SimpleSoundManagerMod.cs | 2 + .../Framework/CharacterVoiceCue.cs | 117 ++++++++++++++- Vocalization/Vocalization/Vocalization.cs | 88 +++++++++-- Vocalization/Vocalization/Vocalization.csproj | 139 +++++++++--------- .../Vocalization/bin/Debug/Netcode.pdb | Bin 241152 -> 0 bytes .../bin/Debug/SimpleSoundManager.dll | Bin 10240 -> 10752 bytes .../bin/Debug/SimpleSoundManager.pdb | Bin 32256 -> 34304 bytes .../bin/Debug/Vocalization 0.0.1.zip | Bin 135160 -> 81988 bytes .../Vocalization/bin/Debug/Vocalization.dll | Bin 33792 -> 36864 bytes .../Vocalization/bin/Debug/Vocalization.pdb | Bin 65024 -> 71168 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 7920 -> 8072 bytes ...ocalization.csproj.CoreCompileInputs.cache | 2 +- .../Vocalization.csproj.FileListAbsolute.txt | 6 +- ...ation.csprojResolveAssemblyReference.cache | Bin 127397 -> 95937 bytes .../Vocalization/obj/Debug/Vocalization.dll | Bin 33792 -> 36864 bytes .../Vocalization/obj/Debug/Vocalization.pdb | Bin 65024 -> 71168 bytes 18 files changed, 280 insertions(+), 93 deletions(-) delete mode 100644 Vocalization/Vocalization/bin/Debug/Netcode.pdb diff --git a/GeneralMods/SimpleSoundManager/Framework/SoundManager.cs b/GeneralMods/SimpleSoundManager/Framework/SoundManager.cs index 3eb34171..dfe2c8a9 100644 --- a/GeneralMods/SimpleSoundManager/Framework/SoundManager.cs +++ b/GeneralMods/SimpleSoundManager/Framework/SoundManager.cs @@ -35,6 +35,7 @@ namespace SimpleSoundManager.Framework public void loadWavFile(string soundName,string pathToWav) { WavSound wav = new WavSound(soundName,pathToWav); + SimpleSoundManagerMod.ModMonitor.Log("Getting sound file:" + soundName); this.sounds.Add(soundName,wav); } @@ -47,6 +48,7 @@ namespace SimpleSoundManager.Framework public void loadWavFile(IModHelper helper,string soundName,string pathToWav) { WavSound wav = new WavSound(helper ,soundName,pathToWav); + SimpleSoundManagerMod.ModMonitor.Log("Getting sound file:" + soundName); this.sounds.Add(soundName,wav); } @@ -59,6 +61,7 @@ namespace SimpleSoundManager.Framework public void loadWavFile(IModHelper helper,string songName,List pathToWav) { WavSound wav = new WavSound(helper,songName,pathToWav); + SimpleSoundManagerMod.ModMonitor.Log("Getting sound file:" + songName); this.sounds.Add(songName,wav); } @@ -136,10 +139,12 @@ namespace SimpleSoundManager.Framework /// public void playSound(string soundName) { + SimpleSoundManagerMod.ModMonitor.Log("Trying to play sound: " + soundName); foreach(var sound in this.sounds) { if (sound.Key == soundName) { + SimpleSoundManagerMod.ModMonitor.Log("Time to play sound: " + soundName); var s=getSoundClone(soundName); s.play(); this.currentlyPlayingSounds.Add(s); @@ -190,6 +195,11 @@ namespace SimpleSoundManager.Framework } } + public void swapSounds(string newSong) + { + this.playSound(newSong); + } + public void update() { List removalList = new List(); diff --git a/GeneralMods/SimpleSoundManager/Framework/WavSound.cs b/GeneralMods/SimpleSoundManager/Framework/WavSound.cs index 7478b5da..9d24bf86 100644 --- a/GeneralMods/SimpleSoundManager/Framework/WavSound.cs +++ b/GeneralMods/SimpleSoundManager/Framework/WavSound.cs @@ -113,7 +113,9 @@ namespace SimpleSoundManager dynamicSound = new DynamicSoundEffectInstance(sampleRate, (AudioChannels)channels); - count = dynamicSound.GetSampleSizeInBytes(TimeSpan.FromMilliseconds(10000)); + count = dynamicSound.GetSampleSizeInBytes(TimeSpan.FromMilliseconds(1000)); + + dynamicSound.BufferNeeded += new EventHandler(DynamicSound_BufferNeeded); } @@ -125,7 +127,7 @@ namespace SimpleSoundManager } catch (Exception err) { - + SimpleSoundManagerMod.ModMonitor.Log(err.ToString()); } position += count; @@ -150,7 +152,8 @@ namespace SimpleSoundManager public void play() { if (this.isPlaying() == true) return; - dynamicSound.BufferNeeded += new EventHandler(DynamicSound_BufferNeeded); + LoadWavFromFileToStream(); + SimpleSoundManagerMod.ModMonitor.Log("OK NOW WE ACTUALLY PLAY THE SONG"); dynamicSound.Play(); } diff --git a/GeneralMods/SimpleSoundManager/SimpleSoundManagerMod.cs b/GeneralMods/SimpleSoundManager/SimpleSoundManagerMod.cs index 3e4eb435..b93be9b0 100644 --- a/GeneralMods/SimpleSoundManager/SimpleSoundManagerMod.cs +++ b/GeneralMods/SimpleSoundManager/SimpleSoundManagerMod.cs @@ -5,10 +5,12 @@ namespace SimpleSoundManager public class SimpleSoundManagerMod : Mod { internal static IModHelper ModHelper; + internal static IMonitor ModMonitor; public override void Entry(IModHelper helper) { ModHelper = helper; + ModMonitor = Monitor; } } } diff --git a/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs b/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs index a9bfa309..2ef49bb6 100644 --- a/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs +++ b/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs @@ -1,5 +1,7 @@ -using System; +using StardewValley; +using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -139,6 +141,119 @@ namespace Vocalization.Framework stringsFileNames.Add("SpeechBubbles.xnb"); } + else if (name == "Temp") + { + Vocalization.ModMonitor.Log("Scraping dialogue file: Temp.xnb", StardewModdingAPI.LogLevel.Debug); + //dataFileNames.Add(Path.Combine("Events", "Temp.xnb")); + + Dictionary meh = Game1.content.Load>(Path.Combine("Data", "Events", "Temp.xnb")); + + foreach(KeyValuePair pair in meh) + { + if(pair.Key== "decorate") + { + string dia = pair.Value; + Vocalization.ModMonitor.Log(dia); + string[]values = dia.Split('\"'); + + foreach(var v in values) + { + Vocalization.ModMonitor.Log(v); + Vocalization.ModMonitor.Log("HELLO?"); + } + + List goodValues = new List(); + goodValues.Add(values.ElementAt(1)); + goodValues.Add(values.ElementAt(3)); + goodValues.Add(values.ElementAt(5)); + + foreach(var sentence in goodValues) + { + List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence); + foreach(var cleanSentence in clean) + { + this.dialogueCues.Add(cleanSentence, ""); + } + } + + } + + if (pair.Key == "leave") + { + string dia = pair.Value; + string[] values = dia.Split('\"'); + List goodValues = new List(); + goodValues.Add(values.ElementAt(1)); + goodValues.Add(values.ElementAt(3)); + goodValues.Add(values.ElementAt(5)); + + foreach (var sentence in goodValues) + { + List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence); + foreach (var cleanSentence in clean) + { + this.dialogueCues.Add(cleanSentence, ""); + } + } + + } + + if (pair.Key == "tooBold") + { + string dia = pair.Value; + string[] values = dia.Split('\"'); + List goodValues = new List(); + goodValues.Add(values.ElementAt(1)); + + foreach (var sentence in goodValues) + { + List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence); + foreach (var cleanSentence in clean) + { + this.dialogueCues.Add(cleanSentence, ""); + } + } + } + + if (pair.Key == "poppy" || pair.Key=="heavy" || pair.Key=="techno"|| pair.Key=="honkytonk") + { + string dia = pair.Value; + string[] values = dia.Split('\"'); + List goodValues = new List(); + goodValues.Add(values.ElementAt(1)); + goodValues.Add(values.ElementAt(3)); + goodValues.Add(values.ElementAt(5)); + goodValues.Add(values.ElementAt(7)); + goodValues.Add(values.ElementAt(9)); + goodValues.Add(values.ElementAt(11)); + goodValues.Add(values.ElementAt(13)); + goodValues.Add(values.ElementAt(15)); + goodValues.Add(values.ElementAt(17)); + goodValues.Add(values.ElementAt(19)); + + foreach (var sentence in goodValues) + { + List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence); + foreach (var cleanSentence in clean) + { + try + { + this.dialogueCues.Add(cleanSentence, ""); + } + catch (Exception err) + { + + } + } + } + + } + } + + + + } + else { dialogueFileNames.Add(name + ".xnb"); diff --git a/Vocalization/Vocalization/Vocalization.cs b/Vocalization/Vocalization/Vocalization.cs index 1f0af7f9..7e7e0f55 100644 --- a/Vocalization/Vocalization/Vocalization.cs +++ b/Vocalization/Vocalization/Vocalization.cs @@ -142,7 +142,7 @@ namespace Vocalization /// -NPC Gift tastes (done) /// speech bubbles (done) /// -temp - /// -ui + /// -ui (not needed???) /// /// /// ///

@@ -204,9 +204,10 @@ namespace Vocalization private void MenuEvents_MenuClosed(object sender, StardewModdingAPI.Events.EventArgsClickableMenuClosed e) { //Clean out my previous dialogue when I close any sort of menu. + + if (String.IsNullOrEmpty(previousDialogue) || soundManager.sounds[previousDialogue]==null) return; + soundManager.stopSound(previousDialogue); previousDialogue = ""; - if (String.IsNullOrEmpty(soundManager.previousSound.Key) || soundManager.previousSound.Value == null) return; - soundManager.stopPreviousSound(); } /// @@ -244,6 +245,7 @@ namespace Vocalization /// private void GameEvents_UpdateTick(object sender, EventArgs e) { + soundManager.update(); if (Game1.player != null) { if (Game1.player.currentLocation != null) { foreach (NPC v in Game1.currentLocation.characters) @@ -296,21 +298,30 @@ namespace Vocalization List tries = new List(); tries.Add(speakerName); + tries.Add("ExtraDialogue"); tries.Add("Events"); tries.Add("CharactersStrings"); tries.Add("LocationDialogue"); tries.Add("Utility"); tries.Add("Quests"); tries.Add("NPCGiftTastes"); + tries.Add("Temp"); foreach (var v in tries) { CharacterVoiceCue voice; DialogueCues.TryGetValue(v, out voice); currentDialogue = sanitizeDialogueInGame(currentDialogue); //If contains the stuff in the else statement, change things up. + + if (voice == null) + { + ModMonitor.Log("WHY IS MY VOICE NULL??"); + } if (voice.dialogueCues.ContainsKey(currentDialogue)) { //Not variable messages. Aka messages that don't contain words the user can change such as farm name, farmer name etc. voice.speak(currentDialogue); + ModMonitor.Log("SPEAK????"); + return; } else { @@ -470,6 +481,12 @@ namespace Vocalization } } + //Create all of the necessary folders for different translations. + foreach (var dir in config.translations) + { + if (!Directory.Exists(Path.Combine(voicePath,dir))) Directory.CreateDirectory(Path.Combine(voicePath, dir)); + } + //Add in folder for TV Shows foreach (var translation in config.translations) { @@ -570,22 +587,23 @@ namespace Vocalization characterDialoguePaths.Add(extra); } + + foreach (var translation in config.translations) + { + string extra = Path.Combine(translation, "Temp"); + characterDialoguePaths.Add(extra); + } + if (!Directory.Exists(contentPath)) Directory.CreateDirectory(contentPath); if (!Directory.Exists(audioPath)) Directory.CreateDirectory(audioPath); if (!Directory.Exists(voicePath)) Directory.CreateDirectory(voicePath); - //Create all of the necessary folders for different translations. - foreach(var dir in config.translations) - { - if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); - } - //Create a list of new directories if the corresponding character directory doesn't exist. //Note: A modder could also manually add in their own character directory for voice lines instead of having to add it via code. foreach (var dir in characterDialoguePaths) { - if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); + if (!Directory.Exists(Path.Combine(voicePath, dir))) Directory.CreateDirectory(Path.Combine(voicePath, dir)); } } @@ -603,10 +621,12 @@ namespace Vocalization //get a list of all characters supported in this translation and load their voice cue file. foreach (var dir in characterVoiceLines) { + ModMonitor.Log(dir); + + string[] clips = Directory.GetFiles(dir,"*.wav"); - List audioClips = Directory.GetFiles(dir, ".wav").ToList(); //For every .wav file in every character voice clip directory load in the voice clip. - foreach (var file in audioClips) + foreach (var file in clips) { string fileName = Path.GetFileNameWithoutExtension(file); soundManager.loadWavFile(ModHelper, fileName, file); @@ -623,11 +643,29 @@ namespace Vocalization CharacterVoiceCue cue = new CharacterVoiceCue(characterName); cue.initializeEnglishScrape(); scrapeDictionaries(voiceCueFile,cue); + ///??? DO I NEVER ACTUALLY ADD IT IN??? + try + { + DialogueCues.Add(characterName, cue); + } + catch(Exception err) + { + + } } else { CharacterVoiceCue cue = ModHelper.ReadJsonFile(voiceCueFile); - scrapeDictionaries(voiceCueFile,cue); + //scrapeDictionaries(voiceCueFile,cue); + try + { + DialogueCues.Add(characterName, cue); + } + catch (Exception err) + { + + } + ///??? DO I ACTUALLY NEVER ADD IT IN??? } } } @@ -1086,7 +1124,7 @@ namespace Vocalization else if (cue.name == "Quests") { - foreach (var fileName in cue.stringsFileNames) + foreach (var fileName in cue.dataFileNames) { ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); string dialoguePath2 = Path.Combine(stringsPath, fileName); @@ -1518,7 +1556,7 @@ namespace Vocalization /// /// /// - public List sanitizeDialogueFromDictionaries(string dialogue) + public static List sanitizeDialogueFromDictionaries(string dialogue) { List possibleDialogues = new List(); @@ -1599,6 +1637,8 @@ namespace Vocalization //Split across choices List orSplit = new List(); + List quoteSplit = new List(); + //Split across genders List finalSplit = new List(); @@ -1619,8 +1659,24 @@ namespace Vocalization } } + foreach(var dia in orSplit) + { + if (dia.Contains("\"")) //If I can split my string do so and add all the split strings into my orSplit list. + { + List tempSplits = dia.Split('\"').ToList(); + foreach (var v in tempSplits) + { + quoteSplit.Add(v); + } + } + else + { + quoteSplit.Add(dia); //If I can't split the list just add the dialogue and keep processing. + } + } + //split across ^ symbol - foreach (var dia in orSplit) + foreach (var dia in quoteSplit) { if (dia.Contains("^")) //If I can split my string do so and add all the split strings into my orSplit list. { diff --git a/Vocalization/Vocalization/Vocalization.csproj b/Vocalization/Vocalization/Vocalization.csproj index b406aa9b..47f50aa5 100644 --- a/Vocalization/Vocalization/Vocalization.csproj +++ b/Vocalization/Vocalization/Vocalization.csproj @@ -1,70 +1,71 @@ - - - - - Debug - AnyCPU - {1651701C-DB36-43C7-B66D-2700171DD9A9} - Library - Properties - Vocalization - Vocalization - v4.6.1 - 512 - - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Netcode.dll - - - ..\..\Stardew_Valley_Mods-Development\GeneralMods\SimpleSoundManager\bin\Debug\SimpleSoundManager.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - + + + + + Debug + AnyCPU + {1651701C-DB36-43C7-B66D-2700171DD9A9} + Library + Properties + Vocalization + Vocalization + v4.6.1 + 512 + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Netcode.dll + + + False + ..\..\GeneralMods\SimpleSoundManager\bin\Release\SimpleSoundManager.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + \ No newline at end of file diff --git a/Vocalization/Vocalization/bin/Debug/Netcode.pdb b/Vocalization/Vocalization/bin/Debug/Netcode.pdb deleted file mode 100644 index 8e128c4ebc1fd3dce702932da8cf69852ecd9fcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241152 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 z zevU8m_$!=V2b~|{2utGU$Hd^<030#w9(+V!!pQYO;(s zaP~UNIFxeBD&ikRsc%S?5TES7Z0yb6M=pR@x+xq$Uea$4a$Mx`#ZCu6|0nTT`wr@0 z-&33~1fOG$rmzfl4qNECH**X7DW72abSKpm+|~>7Wu+gC(FHYzEJQ z1K=3o(eYG&PzkC*3)ld*fj!_bI0*{xO{Ge}I4~P50qx*1@H{vGj)60v7=x67N-!Jz zIE6e48|UltNd>iq7=D(abq)c3dxg z7#TI)AmaxpT>;D{*=JeQj>^11`DwdfCaULU^;LkF&dQmcb0yPV48LqII*z%>?c9lq z=}h3VuP(d(J#jbkQxihN|_uc<>LXe?iXZ?6WM!FI40yaqlAKfV@F`;TigOWX`` z-WLvOy#IWgxBo8Q|M^RQjw8xB2~q{PiHyfydTh*7DEr@lt(!# z&*bLw-WM;*iEAp`T#nju3_OckFeWLdi~FWWS+S4i+0+m&i-Mqe$hs-Y>cTy(&NBA8 zjGGfO@{uvUlMG$w7s0y`h&P@O*Z;(A0GAVgzo*mMh)mTdu{Lrcdv0~syG#>nLT@AC zuLhr=ih6h9J?+ji4!exu2^l;$T(B|9NUV*N!@CWLH=dVm<`MTK(EK$UUxHcqc2L4L z4IGno!1=7hMV(`N+oVQLi0xay@uPy>8J#=sv#e|D1*8#wTYRQ!e5MtgEAXucmqFJzQgxr|PGET2KA8q$bA^29Yi zhSE@n$|v~sa;v`!(eJG5$2v|Xd?#2^5o*z=8Rw#hWz)n2E#!zcR~-X|zH z?Xpw!W63gYM7Ltnh(GeEtb2(sB3|nX|IgEYT=fyh!ni;vABcf>APPz+dVSdDTT%T` zC)3eU_l1-u@=1R!jO+&*L$dMKPtpuCZS6wso@oO;P2(w1aVYO?6pW3!C+->L!K=jr z@y7Ggc?@ydLwq#xQ$1bmBfC@QXz%HM-K{!~fejK1Rz;oh|BrL;)6qP`q=3lGJTmnu z(?n}cG4S3?!OupWbQg5x-4E)VY&MfJ=pK*wBTuM*;`RgibvC~H>p%7->s)Ux6ElJL zX$p2lz1fbjVNpH3y7qGJy4whQX(XBJuUl0L)xM+I+28GeteE8|JD<<1;3c(-*7Z4E*Aa=jCT7h_4`?%be83ldPYL{X1h^xAim8 zHhFINu1nIcyt`NM zRMe%@zFA$V!{}cX#a3Kzg5h8gvi^IN)x~ElVwtoiRR(NbAoqPD=1T2-c$z(~U)i;N z_TFU=&qK7^!2JzbUcJ4i`Dgv*)C#`!jcDY zls|3-3U`oR`HSij=T4}6U?x;|H12|yK&6LDKAU67odd0c((kp;g^F*!)5TEYD6j6C zYmX0oEA-~Xy`eHJtNWirKcKJdSyH9GKld6dGQ!#{_i@NSyN}d#(v^F&(meiS}&Xl&7a#tQ6Fip5Goob-uxxRaQNs>~+y!dY8eQQayu zk(b)dQmAxkhRWAlpqjHUgO)&Bq1Qm$pd+BtNxJD+KEDDw*^g)W`TL$u^kLz=?D|t2+xyd3bEHYZP@V<38Ox1Er_Y2wK{D<7E8Dh`GO61Rb*JNE(yWJm z8meQ-k}mS~pW%22WmB+n4*WnlYdB}uM%jI?RIb>bzfK-KI98r{(4XV@Q&7drZ$wpB z8==Ye-1+@)bo1++bhzf>5I@QKi&e9F+>CDyrp4O3=%4A=GED~>ZDs4Q22wuZ}*_}tl??gyI{hH*gTDwWe^7ntSpC)?LsdWfq3Y9KfzI^v z_d&&913f_e1JHxetFe;875Kl}sQOj)C3BG?$ax4S!8*)vpbo4Co56Ol7aRsBK_MM*2^a@vgC(FHJO-Wz2f#6K z7W8Fsr~uPJ4Oj^_f$d-~I1Jtac?_Zh!5A7|uXD1=N6*U=#Qx zbiW1i$TD6_(+)yVUm8Or*A4H}5yzt9{fhGpn7AnMYEdty=m8Cm0_tRG=J-0Qj|+u>Kxr7G&u4eikCDceSp z?eJdwUF}e`C)ZDL9YgKZY@cQhXF;mQc8KfKPAW3(&}^5Lk>veC;LWx}D_ib%h_8iq zSRc|13G<;`?QjEaZ7bLb4uKP(YysETU^e(9T$lxNwSSGFF*Nh+jviD9?%Rd-Kh>Z8 ziG9p|&p7&;4qM5t3>l?S#)Azj;|<938Rt8fWwXm+Y|DgJl!r!l; z_+@`+;(7sB17>CG?E66kE`2&Yxh zIpMs%9-zI~BelI|8#!<7HTOFq_mNiXT=SqR<9z64(4T-_31yBE)-tvK?^uq%0JXgq z_58lx1=Bv<+M_1B9#ICLwcm86U8^gJWA37m$BZ!Ms*KjQvfqJF)rY!)E`e9`n+E7- zpkIWle!dj)(E76Or)2l{R61)f=~M~76_WKqe;?KZ>661+8T}^Z(K^iFOnt~^=I2?R zq(co*&|bkhrp*MK;g{`KaJ&ktb-0J1vcYPobX@~A8Kub4x_#WAJNqt!^fuqluD>Pq zUP~TD@O%v_JN|UYQ~8C5{HTl9yhCeTvs0%!%}qor>Nrv zj+=2E!2Be8Z6L8~=L&;qkGlR4{S19!8EXMCoz;Er>x3cj%O6F{=*RTTjM6DztIynh z=(X_o=1EoYs;!%?v)|y6-&XBGx1{h#_Qvt91B z-Wy4$z6d`=2kZAc_dn&F@5{}>a!>`TK_l1zo&>wWA@C0PID_mE+kd6|@?{BuB~04> zU{c5SAJ_l#;1_Q^pIra@sCB;oNPGTiUV6Uki|W5@KI`AVblY8?uw5w(2RhmAeCFq} zz3FB$;gOEz(&IYn37B{!k1T29 zWsqeilp|wflo9M^f-b}l^c=o|-HEo}?3Z2e=TXk0)_N`nt5>zucgbe4JS$yJa@=4) z?t*`eax}IDDe6Ohi1m5ei2B9Ob~~Cw4*Pu<{7aM*#wQbWA#%3*-0vPUS@=5~Iokg? zG+&;q44Z*+C9OX07(+<}lgsV&%%?D$-s?9-_+Q8dk%`@Gi3Qm=0`?lHDIQkGMGh9_;eV zpaY4&208?KEi}%(^|jN3^D7^Nj4X zT6BGxHKoy{QCC6zhc%2b(4ic&#uJ{+()~>3r)Ledmr(K6d{UWU)^}$J)_hCua36F{37vcS~pa*>%Ws>dmeUj{6E;hHwURP<{iR)st71G%AxAI|| zA7puZ5Qh(iun1nwHR?i|>|P+Ula1x+Fs_R^X{ROd%XhvA9Sr>v6h8`k?2LypoVU|N z!!wV!L-kw~HVe-__QhMY)@R?q(04HGyR)3m_^$lU#^UVvxsrajoc!f0ZBW(Im!bG? zkaIH>{jtFa-j%wO{HaYsY!}Mg#?0&*Su*dhkyd402Q7xKhpOFgfXc>Shg!X=PW0^) zyDz6UtopSvGMjg@et({{%6pUNxjB=UzB6NeNe$<1T+4ntMYfjS3bLiz#WzSh47!#7 zRnQkWo(SE;Ba!o<`#6T6<4p4I>$>*M*a01U3`&RbNW8rOaC zg6UuhXa`%tPH+Gm1E~j)4JyENPy;>*SqtRxGhQRtd9-{ohI6bF9%W!kE20bcfB%y7 zHdp%a{a^kcJb%}XGIH(z@~_DF-`yZXeWBWm*(CQ`Cu_W63=!4+uwk^vn9jp z_+@+1&ilWZ?zz*kZWq#t4rg{Tftf^XhZ`;;LxTGEmH7Tfunp`6hrluLN%--#fZBh& zCg~d*dDzD>W01)--lp5V{p-5P*L&g`@KHE9or*m1y6N+Y>!!u_otKa@t|cVTFI~|z zv30S&%~Hav%i*0FO-n-HyFn|OSkYu&6xJukL5~29kH74C>0L;63h$uEW}WU6mdg;TPLf5^s76ZGuQ$&EniB5$D~hWH~-)RCb$QwPcVQ@S&xTSB@|k#4|rvxCy9 z4wC6&-4Wd_by4hn*e6~eoEx;eeyZ~r zW{~N(qkbb7Eoy6S?UD?Qjaz~BA?eVcNQPu-{-~hmLoSBi3DsCO6M7}|F6a=bp8dEE zs%JlRy{0+7=F0bQtm`Jl-|F0M+|!dfvhI`_wgr zu8H+MblZ=0Cw$g6)0uYNo4D;jVKI5A+3Puw%b|J>M0VkxdbqxCgpTHzd(!PULiK!y z=J~P@)1h!Y399EkbSa3Kcv4C`rn9`AFBSZami*+ttDu!NBdOE8hZa<^^o1C z*Vv=g0A1GNnWJ(Jaw-F!~*TXu-oV;VotKESopBG$*iOi%|_gUw(kH~>xnEuQoT z6<|8}B>dO2KpsVkVJneruvU#d=#(#GKR~!ZXQzV_1}f-|6U(* z{jV`B2Ch2_ZtMmbaW2J}7lQiP82TZjD$3||-|YZQT&uHkn@UBVI1e71m`h#AGg;9N zQODO@M~x9NT!D`3qmGIDYv(hsjB;X|uIgdAXD0I;ei}KuqnzfJFU)9aX>3^3&?e3c zk@aj2SzHGdyz()~nthR#YmAZbcL1{fD$45g9+CR0=h1H<>69k&#W^!^854cEwsA#0 zJm))Sj<&zg@1bfRMFq_XW4IC>FB$CZ>0^BVDC!d1c9j}B;UOd8?`P1ZU(}@w?;k}O zac#@`iR`oDa)&aPS4H2a`IBfFUKZa!(ps9e{oMC)Cc>|InCSJ4RO4CSlDz4_+G;wq zTMknyqUN>=wB<1Wp9WPN{OwbqcR+h{cPHLgjC0i*&RN^betSK6Z{n_yj_U|$UwG$0 zHCL^M4usByYM#wnIr(c%Tyr(uL(x66n=faYbb#Gw_RM#A)^PSLpGP2E2vum75J)1&0yRW0` zBJ-nk#=qqAH9(=&WiE$~;K;`8@vYI0p%E_3RHt1w~$AHZ}a|& zYw8e^{na@-!He#T^S{Mxm>iyeSgu*%s4-z07}mR#kJb;BHuC?6o(Fp0o9i3U-7ya| z8{}>~zk`3@L{Av~_@tRV_;e#axamjehspYlp=KWoajL4PBW3$M?yijQuV{br=I{B?VvW1{rZ~9q0dApNZj7WPCl! z_>lR(_#;o8|Ff2snHOHj{6E?u>KNz$y`zFq)`|+YM;*I3|BrIizBIS8y36)M$vN3S zrR_eY=s?ETp{zi~bXFg^?>C-;Up^w*`8hAMU+(uTxNi{By${vg>Hk7C2l*GM-cjp3 zCzJkWkKA)Z?&*fPArp1d+qz@yE8=@zCFF68e&P%$UQC|@DnT`91RKDQbNHzCzZRd| zGyLOi|6fDKA9aI_*tT-Df8GZy__HYE-)R4lC$|5|Kf?CU8g;?jQO9m-|5kUo+yC#< zehP4Y(a!DP>LYji{~z#QOghod?ceN|yZ!&Zr`rux`+otd_WuV^&G&P)f3rvK_Ww=N z6_Ng1A${)mtV%flByD^rH~@}y3gI$JPiNEq!Uf{HD$zEedd1uQ}^e3v)ZHi%yeM3 z&fPCD?+P-0395c+GgST3mXL>@;r-zIpJuz<{nF#4D|4$*~(I}%+n>>Jl)h^X0 zBTsCT`0S5t{@;#{zY}%rrZ#DHm%B|qiGQk1igs?3Rv)?B73W)y{qss&=*=`eE~bvq$cB_AKd&NdH_&pSzuvaDFCjs0OSA8^JcP2fPMOf*+2Ab<=BOcZ$ud?$NUQ`$2^}KB+K!8$oP#YL*?kAjMyLVbs5QWa4k^q za+INR+}}{w#<+JrYl*Q=qMUNS-^*wa%$8G5OjYohCf8kXU2NFS9vD$5N`eXJ>S>4Jo|IV z*@K+xl5(n>TcpE<_(4U!l_FW57m+hQDQ8l1TU&F}1<83Vha9d+3#KRK%&dQ~?E=fg za(M{J@^H;taDP(HJ;B|&RG!$U)w!I^ga@g6k@H}bbMN_oZ?Cft)M(;B(6g8^yo8Le zL>ZmtW=qg%IBCQmd9L*5T)8KkQI)k>dh`@;A=$g?ozBsNX?|zVmv=hnJ%XKAlk0Te zTiE$O574>n`@QT_rHqGfQ}*ADW$&grpN-eK=X^Xv9p-$Zr97Q}9q+BhHD4QpbIB@kOtGV|t?+5?otSv_wHa=$G5!KM3JQS{gS95UD%gMiryZ%vz zjd{6cT-iy6ja|8Ae8y#nc9vn|QEnL}fj_%GZevPr8Ko{m^m1%f$^GkC4jUtK%eW@+ zUz@R&_4B!9TBl6d?+Jf#|#5ICDGBT^-vv!?*K1IWY zu8|a~$wQsjT|Z;0K^b^Q>YusVevh2V3&q>=ru!Ozxx;%jD*3;3)0kJnHA{d$u<2QuON)Yo_J z@%q=dkngHrDL;wNejnhs_#@B1=QBTgu4G#3Bi{96z)+brPH61VlsAt_Utg$-ulIC# zPK|T+jLJ%WTiMc~oE+M7I{HD-`y5L1ZJt%p+$Fvb@<$xs;m33Qe63U2Zy)C&iT900 z=#XCCzICLrEBbwWhgWT2D?Y!o8~t9k$jtwx0KuoJ;rB!g@%h`m{=2aLTS9u-GRoK= zay1+J&(tIs>bpUP=06p{^vym0Wu3QObuQX@A4=09_xyJ}{IZMaVBU4A;0e}PKk?lf z`P2dG<|sG=ik1@bA3S_i{g0z=7Eb$k>wi2l>bgNjd}o)s4PjKm_O~FTG0MH0Yot?PS7 z#d587Sp%XV=mcc_tvM0)FWAA7b1(fcL>RO&S#M| zGWJ2?Iy`H{uE>hMxG#sSDr8Ojpe)}B?)>Ic(T=h2v$mSM@4LwRKGC6!Gb6cniRrBU z>fInJ;JeG)kr$ z0Ka_X%8>5HOgde|nO~-vJ6ljcs+l)~v3w^SESNV;FCL zkew^FU_n2uh}N|vv!(aji7bMe64KRIcQRcnLMjMk-aP9Jmi~hm=bhfhtTa{ zFE|Fyf`N<#V?cEn5n%cxbgKoD?f&TB`!)8^os9)=2-vT0I&EX zkLpn4{5qg(o@t&|b*O6^hV)FGx70SY5*6xBb$CAgp59AUnjer}vP^zD=%PG(f|dF~ z(3-63>HE~nEq+|-$J3#IO}tDmzEvLo81yLdTRk3<8XR_Wlb>o&qWOx#Pwlxw{f_l| zQU?T$Y0r}JzJG^$4GR1ae^mc*?t8-d<2AGn)lMGrb{O~njP3n-&WksmKcD%2=WB)J zT>syi|Etc=Z;qeJ%<<(bs&CUbyH+3@$R89~ZfY-p!WZVYGoXDrW-XuN@zi?>(0<>! z+wl?V`s9D$`c@f};a>??_PpV}=gSytnGlVo@oK!zpKEmNc%uVG7@cvm(YF>GUC%nV z_?t*C`ZC56o%o>92@8xazoR;#SkNDQ#X!O+^jLsisbcEA> z{p~n?h0#YC9F%St6(#z(=l7QLzs};U;-9HAdhUMbb9p_h?D%0X*Mu>4{3bVdlx{+c z(bp$C{gj`d?Z-UGEWQC>FuKCiKkaSjg`O5)>-Kt^$(Z=xzt`wf*j~p?{1H9w_Ib~* z2_K%}{B){1KamTsz(Lc*ao8$yxdQ*(4h45X_%sKTxay=hsg)`gE1iQFJ6q7oRzO+Wp|5`|F!t zZ(H2%^WAU9`f>g>mcF0cY1BMBe#U93*Z*m^(+(ygl2`A3Jl6GC;q@_~!p=9j|IYPx z`3A$6()INEd&d2_kC*Ei_vfiz{x{r@AL(i7o~SX}$Mt_C+R5uD-~DU8`}GL-%R%n1 z6FuF~YRhMt^X+hdeZt$vu-oi>KeyXkO?G^Gw$ZijUvGFjIe3-DA9R0z-2J_``^kt! zcK%J*Z-(2wXNkohcmIDp`v0{SU+?@2y&b$=VDS^Z9lYXxKiB>KwEO4VWybf4`~M2B z*DYSo`IGGY{Ed6Jk;s??%xNUj{Tyice={$Jj?0B-j6MGdeH6ml+!*=kGmaTa(~(4^wkF} z|EHa~!})cx?Z_v=Hw9lk%x(j9dAl+zVXXE+_?bYX?@k8(Qb20MOlq|sO0 zU-F&4G2G&7uQ&SowML(Dx}(&N*E?NywH;4&`j+=gYd>xAbDa)zy4Ks#T&FACf6~2; z|Meoz&*=cC{oIe|6x#WrPUrTpW4;p?+Bd}x^a(#c=j~^Q_fxZq?fjrTqhq~)Z18?@ zK)J<__wvqdvEx-<|E1n8UiNy~;pLrBV0?4wWcZ)jagEWnPWyR#n{}hb51VeZ&uvDZ z_>9pPFEhH!^J^Mr$HUw|XL!Ag^>Oa~+wJ^Y6O68PI@J5GXS}~&<#d9}dEE7Q!~OgT z_w!emSUwZ)GWvx3`Md5H69!xSOP>F(#dbWQ%;@<0jZU3r^a<}DxAe2)N42h|A|_o z6TH6ief&P|^85LCI>^W25$@lQ+->Rl`Ei4vUlZl|e4yU_YKHsMGWVxft1NxP#YW%r z`d;t#{kYe6gSYn=-3~8%eLds#^+LU+-{tl8y7TpO`@ZP@wdPjidvvVP88;Z6>i#h6 zN;_WV^|Q+P&h@eQ`XNSNE;ahfT%+$lXmpMDclCvKJl5;G!TsRHIG%VtXh(RpkC$A} z7u+7lXIlK5?q5&cV#iNa7#-#P*__#S{HT|AZnGV4aX)y|{i5FMZ&!_-Z}9pb<@LS_ z9i+!I-VYx1_?NxhFZ=lkp8r#q8~-kEA5GpK2Q9StmnIq=<^5>SOYC@!+ojg~n>lU= zEgDJwEZ6gW_nSfPNAumkUYuck>%IS2<@$}!xA-k3Mjv-ST<`w0s@&pV@^o8V&I|7U z6Fz0<-*vjhX>aeB>)lUYaeu7+qVb>ptkDtPU%%k-v#Kn9y~j7XzrN)8HaMN?^?cm* z=;QH^cs`|`&wS74xW}*Z_#IL17?XF-?ce16(H3u4@46p8KE(JQFEx7F{r9-r<-PkX zeqp82H(l?C-S2k9{&#?%_kRCzuh+M|o@>4RJnnu!*Zad)yuQb~-@ogAKh@>E>T=#3 zVfmMO|2D|=?Ct(OY_gpn;q79r_Yb4Io)>yMd&2AgU2m6f-fijLpJa5Qr$6WApX2$Y zJ)aSt&p~fbO;=gEo;5~~_cXd@snPWvg1)V7(M6pxyJj^ zh2EZyyFVRte|pvX)fXEq-K(zGaktC4MvH&i&%eFIj^AHwbb`}&>+E=!+vO?mH|DsU z(-ZCd3+@N??g!6#JDlMDwXDeab`%<&dymny`}Y&$?6}nZ`Niw)_!+O~H8EfJ->I(e ztL~>G+kkGS6T?#FZ7k0-hxjdDMF-OsOZKYGsn;kf6&rP%U&+36GRPrDXb{0o;FU3-zy z9qw0s+#lY^v-m!xMhCgPq3&OAxqm(E{+#drHR3wsKR4RwyI$Y#`FM5Q^;qcs_JsSv zQ1{2)H(9zz+^>3jeZO~)#gA}%Hh6u{^7?M_dfwsnJi+~EmDl%p&nMs8>HB{EE!Xp$ z>)+t@{kr?@EU)i(eID^htZ&z2nb-T!*{0ufpEf$d{kp;HJ>TnPyx050p2jzSiqTT{ zyEzl=xVPJ1G*S zILc^~>&5#xLElH+o-cYmu5~|u-TQ?%t}wn?9{;%4W1s03Kg{j&s{6|e-hV#h_Iqxo z@y)->=)>{6+v&L5q15}OiSD0GZl`{=mTrC8=oT+O`xgZL*Sa6S;PUI2TKp)t*E4RH z(^VF~@HV3}{QR&x?fA6YEA950KiT46@qXvUYwh?Yx7P&s_ov-XTfCljx%{c#|Ge+{ zO?0`B-fa0iJ>2LZZ(nN$+VMp9_jB%-V?E!AZtruS_VjMAgG20isJFM{e*Aj1#lPbH z(26hG@e?j@sN4M+Pj@=@L-oej)BB%%_nU*gEPjR8&-@}gPP^X>^Zw;wx7+(}x8vR} zUh;Z)!|5{<2&yC`=fpA z_))h*ll#pGum54U+xZDzul>CJKH>VtZ!)d-cJ`*%`&jqa{4z^_y42{wMMitOzdqxB zaL)Cc;eK%XOU75~d{4PO4&Gw%JG`Hp;r2ZDfW@!(cKMY1!3Zz^1owkdkMHB{vuT;7 zo9p`Z^zo))qQwvMet1jl4}83u;r05I`$N9Bn*naO(h^Jm(jcP;-5*A{pT3!I@w+_z z`#~_lVo|1-JVvZkI>gE>we!2X3D&Zl7H~ZuNG5 zdoR!U-f+9T<#wr${_gg9-0ky}+h@MpV~6YYZoTF6_D>k?>GVDKgQs2J9k<%~^*;Yt zm$$de zJLlz{rRj&M7!aldTvbfxYerCyFVzGV3fb2_NZj+c3TuKAQ5AAHd0 zDzAqoxBuf_e{UDr`6t|8&S7)eeU|Gnf3O`7>tnRu>tlzfpX>hDwz25rWW&DqNIo8(N@hZ>%IrrBmnk@b$&wu?@c0AO_ z?^nG)ddjKFD2$k9bm|pG-|~82JJgOR4lw$L=li1DcZd7I+kU?OKI5C~?dA!u&$SaR z{sphkxBUG3v7fot&o>&~)x+r1E@zI{#2|X z!SM$yzPJ11uu?ldc#+YUyuYsZbG@CcDe-*0-d-B+>Ak!!dwbpG{&3Livya!) zE8d>+hi*vs>Xnz8l3$f7yo_(pR6U<6X-`#E6%S6emlT)euP-dr`MhCO#f3f6sfw!h z*(L2T6hFZEii-UF!qnG$O-$vbOH#c!-yeHav=JCO5Ybu^~dJ(s(3$mZB452@;|OD=5rMr+XCkC`{?SmL7#AsjB{{mfF+{NrfftJxcOvALX1V?vbAt&KJ`Kq}o%( zlgOaG0LkfeVUG<;UpT3p^h%!EfF@OF+T$YfPxn{CR1so0UqMk*8?eOQRCzn8@_Ev+ z2T@f#$+;obUPX&hK-2cpy_`>{zTK-wRj6LnEFu4Ns&5a{QyY6z#rdfoq|Yl!5x!QK zS9tWXz*<#Y1@mtgD}4$1>wNpP!Y5NRHjyCR{`KPNdBKuOXYZ3#Kp9?BG{NvKk`ffv zUVu};63`B|f#<<~@D4Zw^iJ(SP!6g<9cTd?z-FNDTI~k=z!8wbr~894Py<$ibzm#l z3l4*mpfHd3>cDKU1Z)K5SZfTZ0(Ib7un(L7DSW>SRD*S36W9v2gT3G|I0?>z!i#NR ztSQjhU;)rW%G<#6;5Bdt;osjDUhOnD+85aI;aMXU?tcDc7na&05}Yefx^qt0qg<$ z!E4|Q$YZP-2*!XaPzPGTYOn!33-*CS-~`Y^u>CoCPJ! zdxnGApbcyU+rS=h6r2HhCFlSKf^skh%mnj59cTg1g5BT9oPi6f}LP5H~@};li)1qI~4uFI4}jw z25sOdcn6#T#n+%G7z3)nJkSDGgAL$Gup8_HN5CmibS?UUGEfPsK_gfR)`6{HCul3j zMqnG*16~8~fV^SI1Yf<~|sYy$d*$xd(p90n&r zA@i-iU^o~DW`ozjQSc5p19snl3~&UT0D6h0KPUs!K@DgGXF=al)EO8DW`hObHSi8N z1ByrE^I#090y9A!XaTFi2Jj@<4Gw`Lpy)>Afl4qPG=i;QJJ<>OjzNDg4om?Hz!K07 zwt?rt9D%x3xX{DqJtZ(b_! zR@_KEUg^9`LO#4Zc31sZX4kWcEFq?`bDoAei)onkq0{a4Z8Mt})izc)Ec#M5jh*u} zH*0t>omx7jX{uk|R?CCWQI?(ebmOvRIU3S+lwonsJ3h-hrHAwi?}ujcwK(Ukm7b>0 z_Q0EcnLFxX@y?G;Bfsk4@>J#>+f4ozANWU&!LE^?_b%brCcxpH+zh|PJ3ltP&h_D& z51#)F?d99j+*sRItjfp{((uN2Lvoz{BgCy~)`og}DmOeVcYjMuY93qyz{9?&z$n-lDF=J;t z=V_Q%#QZmhG*;+XW{Y!P<`S_l)V1#AsaY%9c$YqDSBrQ4MBlloQ2YFX`QSKb z@y?HbM*gZI$(XuqMQvk;wrcUle-l0$`L}%tzr{O0ei?nOu(y{Xh-heAmGCt?=V=oD z*%s5xSXwW|lq#0n&UqUAGs-y{(%}Dm7In$w=DMU$+c{5zpT;qm=FBv{a>nv|8=6)$ zw$(1JZ(gzd{)VVxyBpv7=1H!6x(bGeQ?NQc5D5j`nvkMNvlHYvFue5(;APb zMX{K6b4)v}xv{bNE19&~$|I&V9#5O-SESFCo%()@vvQ83eMO(sysk5^#W`Eobx8y<5|W++G1?G)%oHL z{pO4&Hjs`sw|M8L9Y+2=f&YX3pv60XVvJB7m4-Ri-TxMK znrm6U6Epd0u9e|U__gL!mT#8V;#`N?tiD>~F74C?EY5io{;7RxJM&tc^WvYep5F<) z8oxTWUyFDCx@`O1M5UIR&t>*WjJ{;&JPqwA+FE{abtl~|&Up2VN92_sbmp}<=S|pJ zesFd0xp^5|Tb%PIY%M>yI`~|c*W#QvVQcw;T;QG&|>MLVsoR@H*=9>KuKs#XCR!P3((HsD!IOq%Q58rFkGR z2T;9D{E+pDiPj!Q*JGdPU*aGAA^fAAU+Y#;C-LWpIt?3~hsA*CUv@6&R56D7ifLLx zn&n)7e=v=m^E3&)j&zihsb`CKe(ElcE4p`;ueu8&?rm;f+Hw8F&U?DLtZvVDNEh~N z&&aZKo+eR`jnsX9j=tLBoj);dXgtYJ&8ltvQcy0Fzr`EBt~FwvRN^PbAI5_Wzr{O$ zV(i!!__>Vv!adE+ZOX^SM~ip<#Mp5p@T)#L@>{&~C+2T`saUJ?%r?Lo8FtRoB>ZG` zNFx~^Ok?Lf4dX-flVceDbobS_F6T-bKaKXb^PUbLi}k5{lfgIL6p`QJoge>-`sHzr7WgMGX=tpo zM9UL$?7XML&tkfDAzfH=>yR?av-6ft*A3C`y7!r%Vqv2}JFJDInKIcqPlL}zS-MBs zDNU=MO^&kcyr)ZCKO7C|I&SnF)7UvrlbDap=( ziaz8z*v@$x{5z&O@NcBCbDjnp#WdsSvx?Ntr!HO5RNq>w6{zSpcFxl1z4Tk$7u5e1 zrS4s|ysf@zKC=qVwaDc;h8+pSU<93mYF;)t>=l~NBdV$F-0lX=o5Zman76Q zXH|zo!dN*24YGb?@y1`5xK=B~{zJkXs3X6{J3sTQ*srt%e)ap4n^!E&uFY7y^E1ba zHawi=uWhMa6fXFq4egw#sm-=?t=W4SmTMMz_tM5y6f0vVJMZc6y=bTBLpu8qLX=@~ z&Wqng-oDh+kWT(@an6geBkzG6ycXxY_*t}%>SYN2zr5igVzWA1yz?je&w2UcpSpDU ziq`tc84G38*?CJ>kDo=I1{Nq?N1w1b=S}!ed*BV-OU8y4=e!C3ITm=QH8eKfwIX>f zYw^xcKN-urmHvN7YI1YSs%fo!vM-ar#XCQJWz@TxzIaHd`L4w|Fa2W7dw1Z~eXovr zTfFlp`oMYg!_sAGTW!Nq2CwJ?7VrEC-`Ddqrh9dBvaT%N`4hgsl74!K`h$B|BMxtdk{Ir=m^=V|c&C}U4ZGh=C8{mQ#>-Hc8a@BE22&~}Mr%vid-zLl9_mfzx? zpNyhUEV$IlT^nSYO)buNAH?sYE_*Y)9oIuF-uV;r)bir2O_RDkMxwvy`76rT+&Z;((Gr`cWo%;SJWZmVl=oGd53V^|yz?in!|5{Fv9Dvl zZE?ms3g3#payIaGT$8gn=S}!k4P(zGoz~`E7BDtl@*(wO=R8f~nrDAV zQyC1dIc9Qg+Rk~J|G&L+fwQ}+?)^UmLIQ~f2@nLr5FiN2SFHED_FC(I z_Stj(|BT$*^nPyHx;UBjTWhcVSbOc)|NKuBTctlb3)YvNw!Tcy1da*oke<Ela1#0xisoA zNla0m$>NLN&aw~IGSvF6@=ZSSN7(}(BXjBo7P9n_w}HDZ1LAPgYSayVJG19KuRyothN4?EPr-ibPat@Q1Q+XyE&HZv$Nxejt ztJRIUyz)&xI#;9_vb__ZP+pL2YK+RUzK*Q&Og1WqoK5Z>eB#t$S>$^AD&ORz*xHI8 z@2!0u6kJ~UCQoej_#kEM$d(NZaTO(F9T&@OC>C^@W$yKTw(yr`%dQ+7**tu9cmuj> zx-G?3Z!KkuZA}SvIqTAqO`8VT>eSfcnR0nnsj(6Na(}sj`XoA)t-NxbBILR%W4id7 z_jfB}Z%QV%sCu;7CmC~EzRJkv?y<1}I?3BXG1H0W z%=2g_7L3x=JGaYQZ&P>+( zW+PW}JBpbO@z?8dRnQSTt2S~=ncGml$rFR!#vIoCWzOrO1}zrWeKMZ9z|Lad;4&Hz?oa89!dOUiKJfM-?I)ikS}M z#@p^s=MhV-Jax}!6gRzStlppNF?A8)y|0yT^3hmbOzc%V`nx7HS+1j) z>d3jWx2v3?El$owlxMQhx=FqRl*%g4WTQ3wwjf)3hN3)^WlVZ|PA4WWu5%8de3NH9 z`WW6+BVW4?P|S3qG5NUZY}#6TcA=H{>-}tyUp=;!BNcnZG4Ef+Ooy?s)aEVuj@058xyMyq%aifqJ|p9H zew}eUU&n3JAU^4RD`RfH_*ZgQr2LR~(-8jX^78yjRle%K$~XDQC*^E&ezHeUp2gzR3?&ZAkwe zq-{UpnFqy8hmqrT5I<|JQ{PsbAG)Hot;o(!o;^~Y=G%g-$K#olWw!XFOzHXWzf^rq zanpYZ&cUvjMgx6t~4i^ zqm*Z|QH+$fJ0#5gD~C5+vRSH@$4JFgr;D-fZ892kYR@l}XR=XSKU_yvc_tgpIkLw* zq|Usie3PfWJ@(xe=AWj zk1)SlH&AUuY3Ni|d0K{b#2asK@tsswc_vGoaakz?zot`jwxqlu+t^NfRKCg69xi`Xke_%*sC<*BO}yWq z$mJ*cxMHR=RE>EnXf&%s-8HDK_gqT;4UT*&({=*c4u;hGn|-E{@N$wy=B375yeT~>J}8_oN&4x5(T0V>aAqq$>< zz4x>_&!a2fOE@r^#d|Mz+D z`XK+}?v_+n^X!bq$!zWkr3~@CpYlvLS{FYVWNYtGlxMQh73QN z$92YBYPM>g|53ilNAu76AU`pG<(quuYYzwc+VzX_Og37-^wQbW6CYNd$r87{ja~?{ ztHw4C4v*6@mu-}X0_8D_ajBcmJt||m#Ble2IU|{#%+1O(*~rhPGk;F6GoL8mkD7csS1RA+iD#aFCv&URAzec$-{hlM_H2-!IJYX_(CrL8^I?+CJ7yW4vXm`5j^p{b1OO8jwuXk`AGSLeII$~Sp>&Y!IwqBG`Y zJzK_jQhal*Nxs(?p3TksSY<5_;*md>a2NAS{XEXvG|VNf`-sY!ezfLVGfnilowWMW zY`KnNrW3^|`EK;QI_HtfH+f=|$K`v8D8=dl&|uGQJXy$0wyj?I*C-*PK zOozDQv1>MCBGOSqk)GnFH&C^8O|4$<$Y6CXtC;Dmt;Ub1f=+F`Q=Z8VR%KVxu``m` zs63OUuRSK*6J*QRe=1|TkxxF%_?(dq;>eqaL#st~S4?$=qBY58#^j8!2B>|uSotO& zt$Q08k28|^raY64)+6!^(Ts53U7NS^O&-7X{%d9I&dB#<6TiEpxar})9?KsKdg0NY z+((pWvXSrJ&l+q-7G%S@Jx!GBC}ukNu9r*BKWJCpt1uRt)l267sJQ7x>l0ab%^l3$7Uq^1Lc`)$ zPJqk55acJW3zcv3i~%qIy{w^TWcBY~6*HY^ZGPTt(V6(Xx$;dun)~G4kuwVRPl}mN z6vtQXBRbLt8*09nu6&b^=DzJgUgojWcx}VTCLYhpeNHjciQ=rhcXEc_W93TjbBdWx zEOF=Yxn(BXME%674iV(x>1SfRXxQ`FY@EfL2up22A(-`CAX!R>CmnouUq#Q zTbFMc-oo>fgBvg7l{va!kL;<8>EhR}+i-yBZWOwid9o=_c+ z+E@7|AI$^T@-9*vi+Nut&tw@(p7)bg*_wT)@=cyGwA7!ct~`~M@5^{OFj-`hIMGQ{gr33(U_RYeg?miJzVY+$}`z$Oi0YxGa3KN zQ`t`Z)yuHHj;!)b7C&{_hw8{G&t&mSZ)>r)pdcPDusAPsn9EDtTTl=WbNMI^N$k`7 zYwsDAAIj4#cdH)Pml5ZzJax~m6gR!7-Q_%JLDH7WGuf!!XA-wkS>>5*6pQW;vbFQO z@=TUkp?!f&r!a~NAYEQkY{`*-^*6M$q!ZYmwUDavZhMp zm2dLI7a#vCh%XCl-=2PtTQSp#V$ANuj0JUKjPg}J{!YsFAWt3YJcFW`=|sN2k{Gj~ z&b^xQO&;I(cHNygvw(B!p%E@+88<#3Dc|Jrd6&N-$WQ#!eRf^>CLj6#DCaWXXYrk#@=ZSS|LL5yEJ)(D@=P}J z|Iw;!&0a$JCXfFwwY|inLH@<x|`QzhWKbeD;yvX{guH_lc0c)t=l4L)qJd=&)bgAF| zb?Udj?d96(3-4>GLn^DhkZ+T;v5!TW>-W#rja-$)Pvx6@)XuGxdH-Z?QJ%?0?R;yH zt$(+snCV1uO7oFIgz`;3>8t(f^woaeR|BZnyu62xxodoU&17hOhLhYQ~4&(+~xj!SCH5HvejER(aKeSR?KvwIcyFcurTzoYPb#MoBTl4C**ws z3w3@B3NEjFlgIDehn@`bJi)`O)MW$j^2#@Pe9r6eLDq;1v!UUtMzs!#na)tPFRo$T zw@}agD+A-h{*|-bmg1_{62+LOg5DTwkE)uNPchSpV$5pRjM`qcF-G|&AH|s2)AROH zg{V&yGo7g49|}4X*F?%U`6$M0V$EoMQWIm8Z}LfuIkL`}JJMpzI@;F9r^J&~R(T=c zrghO+mN=5iD$it@XWTDv3!deWI@bD~^0myZ(RiE7cvkt7hIt+5$e=m6_m|?PNBg^- z`-5JHNj3hee3Pf`eOyc2KU)2}#*o`l-1O)J_uDy)J<}6A;ej~UQOtCrwdu7%hqY2t z7v-BgZ-|0J=ezTuU$o*USCePURGD%w=mo1a`B7`GgIRW-EDW*CdjBoF6;m@k$ z8?($en&=ak6+cL2l^61DYKrmiv>zsn8^uf~>VwCEPW|`j zD`qHtQ>qV{sRoC*2`s#_0XYCqS zc_vF7_A^E4*WN7L3Ft#E;t@@)6W$xrYxAzefLQnVY+3T6bv?0<{ponq9YoiCMC=}1 z$Da;1f9g!uo~f+(lgq}>LyO-WT;NZ+JnI4PXYrYXOZ+LmwQ}zR_>>bgbSIU{nDo@Ma5yccK z`vE2E$UJ}i)ZN~ei*_Chd_^_8<{A_MP*%ecr`1>-_R}FQ_-e6^4oA_BOD`n4RBmb2$Hq?36 zG?$HHc_Za+sPn98E*trlJXfmuR-YeLp4Ls?x#45z`8?mMtny4YTF1z9rJC=#BSU;8 z)?QH zst>%7+v(w2r1qXjG1I~4-Oq+_0xjF>ns=Zm-{kRk_p^s``O3!4n>St-*F`bY!SCIM z{06StSUJ3o+I#yd-{d3Tzb%(PGc=dWE8pa!_`Uly$-j1Qqdb)zjLr_$2U%JF)vlwJ zZ}L(69%9|yP%y3(GadXtp0}D<|JaM%!wcE#-7`1oIBS;QarCy5F?nLaciT@idHL}f z_j8dys?Hcb%4A!UF`UZE7|vy*F)aBms*~>`%eN(o$OjrXdZhH8* z>s=f4=<=FcRefD?)1&`f@0p+%_6gNO(njv{ikluj?|SDk))%Q?20bsR>nW~!t@wZJ zFS~^{soIdf-c9?pv57W!+3B?3ZfYYhkMcskjZL(*`|W6uop`pZe3Pf0<1x~nt_z#x zmx*f2)o%VafWNu!RmhmGKGZCOtEI6s+{T%F+X~{3cs%)9`tG3 zw8;IX_nF8qt21twSvw9gkG+)sXSM*>Kob&fn_Wx{;&HwSNwBNIUNHfYcc$^X&0t(} zO-O>h2W-Cyi0XY3Y))P52fzL@*nx&k$$s!_7n6T~4~)kYLrSrqgApR?VBGN#D|xgp zB*gM0w(72H9`l-Q{L`ofx~tiP|fv#qn0U4*7`8_U9P#*5_R42lvP z@{B9bW)F;QUDK8|^>#G3xAd~B(Nu1uGm|?8Nl!v0Ho}})W2mL0xw*Nm$2+{-&Z6wL z$=Q)F=tgFmv$jfKYgcC(%IYD-rCOGDXBc~Q?p*n zTh?VIdCQL$$e1u29ZkJG?Y;7Tz@6JTGHW#(i_2|Hw(rjCwDmH*)E2=+0O z=3=9${L%OhHkxRqp04h$j-Jkb)!tbz6liDpOZl5CovoF&zTU}||5e%JCb(@f`G=7~glcYV?P>38@wi!DhXb?g zZDQ>u=$F(Xzmn5L@^(3W(s^&(IGS~K_B6M4$uEyiChvnL z+a~>^8wWOL9c@jO=HBkgr1Cy)vU&Gz+#+x3?(6F7BurYADQ}ZkPqt0M%ON`ZdwVM_ z?VJiurcGKic?X#!nX^jz@~q8c@*~}q_NGdIr824bzBD`77INFBmFDg5p02cX_VPQj zJ)u11Z89&D_hL$tcOaIOTi-d|*5B0E+}W);?`&+InLWgrmZaxcH@$GUST@sLvt%WzWb*kFOv!N%@NQ)|a0eSO7bZAeTM z3t3NhPo<;1GRfFg$y#S?+skw6CGDeY@w3)5qAsxu|7YtyM!P$z}&Zg1)AXzQ}zP~Nx4W)0T2&+a_$+Py6I;4|G*&UbJVA`rPAEpE$7>k%Injc$@3hNCT*v>i_9(dw>DNZWUPJ#!4F%VWWv<<~yPmn=JBFl+7Y?dY$x`DU!Vp0CWNTYKJ8Vv~J< z{h+8?=xSn8YMIPUCht&j&B+r*xED7Q*ljl7Tn&})XzbH zRj|B%4SAd1R$f0l!&tJc<|&L5hWMgmN7mln-rv>PZJx8Uew?4(XLa6*&8o+&X{uwG zZwhra^|bf&_xoW)d0iVbxto!6JyhgB^kp>u+Lrj&s_om(%{`Uow$2Wnwae|b<@ThH zCu{HYEt@al2RQso;7whDJ=^w0tuVQ@u%&P5YOC~4ZjX6_TpWiqL|d1{sC*4yr)TBO0Tnj3%^h7j zrIy$A#BlB{M(=@Mq)qYSj_yide{0KR+IMBP$_(vf4v-%qjONqkut2I*T3gtlc87-I zKjrm%ZSF@q>C1_>CN5T*vZj{yj?R{FfpP5Tmi)W7*K#jR^eLF|`TEv`B-rWDf(eNB z!4~-E6krd+=T#LGlH~a>(BcV*=D9xt^9wL}w(nI1*f?0x9q5}%uy=yZDaiA7Fuwf@0SDPzs?0ZHN3VsoY18$?mcX;pe9nkHNCNN!HR->F8>dN4P^Ow|8## zs8oh@KV<(5f6IS};o+W>&($OT)`zykppxx3)JmH%_wLhh-n+ySb7YqH^N`c@ldk>@M##(UfA> zg3T?!ZUtLdfPJY1`%wutYmaIyNXxPq%=b1awifKDg0j3Ftg!(5JeZG_G|xxC>`L3G zv5w?Ev%VFH-CqCD?bt zyez5Sb6_4LQ*1YU>EMEL&I9BBA<@lwk~TXMV7_ru>?AO+LyF0Fn|{AQ??+kv_S zFiwg?O7px3Y+(WRW-$I=SMMDFn5>K4QlfWTiQercdUt}kpQLs81eiaslVT5m9bQn* zAA|XPo9gYwx!myudMAOof2Mk`Ex|4WJFFnjo4}4N!2S$O{64bEM4($*P|i!iipp{wn2-0=-uu8j zE~VHuu%dSPA=q^VWf`V&vM!XA=J^${euXArGuR-=K1fok*9S(^gp^`ufO#F5e)1&a z?>sQ~i4>FfOcY`3!Mxu+Z^>Blyc*2Ql45TG^Kq17H=R%kl=WqPD&n%*RTq_kJ+v`KJ_3 z`sl-8MP>OESWz8*2v$^*^g2c60%D8kp}N(mY4N{;oi; z!o*mlcM+KTOPc4kU`1v5cuAgr3Fa|5&GR3?iuz$LN~;R$upSII3@Od?^Pi1 z{~l~*L7qo37?u=Z=Ymmi<_EKzmLv?Lai`{hb95A2P z_sVYgwHut0-E{FmU~VtP4lmI=x=@dGRHV0eR!vgBE-<&3V%=cP$Vf`D@rG)ANwK$q z`J9tte_Vpy1?KT3)q4QU+bqSt1-3fVREyno@!^NbZ%=EQnY48anEOkLEeGo>(0enO z`*o_f9n9;VVqYu4z6;h`VDDv2eqQ%9&;7uzuB(@2?*u!_Ft4ZlIR)Ad#&jG~ihUEz zdHyMaqW3*8pF2|Q=@RT0C3)`7VV39RpKfoT5^NrruTfIHW-wpRdwD(2bHI+2KS(L| zda%U`O~5`1wxa;M1Y<)5*n?nRzSQ1hU~etZyO=`y+?eWJ4krB}DaFRX&Q&On&GM(n ze+{fb{vdhWmVXQOG??@J)3N8l+^=h~AN+d8f~qggPQK4~D45IFVys=jn07+)yxrcZ zCD?i}9}nI>uD21)<5`MbS)%s_uw%6-d7FElcY=8vr+NN47|ZC8QtX>xzK=_>r@z)(DarF1 zu;pTal3K{SIVsCmz`QIe_8{0^B1lTH?|`w)3@OEa2IhX9V)8{>Uo*IGNG4L2 z*%hD$9xuEszX#@JNwIfD_EPNb$X<%w z7uoZ%=Jvi4*-NnpBYP?KbYw5Z{v)#I{o(e09ob86xgByd$X5R*R82uE10jB{L{;M z2AJ19#WsR@{Zj1pU>=K8?4}aE_m=2=0_A*6O<^QoZBByj@ak4VbqJMmgv1uqIXbRbq|!*;ph^qs{~t7f}LA} ztpoG*OInsI!CobeOG>dn1?y920``l@UW3WVhxF03_G(@Y!n7pVkzl?zY;b^2!Q`P; zFGGr*Rid}HMDI-{dN-Ho-3{h`otEV@VD8r`_C>J8)J0N5_^h~{TzJ^Y*7b5Ji zMDJw;I-eI(>}W8Cbx0|8A=p_3*garxE5Md^R@bd*o}0kjUsCK&FtQCP#eM+BaY9JG zhmt?0Kznvo_bVxOESSfM6qDafcfU@tQ^0l$)~b6px3?0^+bq?4BN$UeNGbLyFpsS% z_9d`u3iMvJwE7OCRBs&YgaW-!f%&>6)q4oc{Vc_v2RpMM&r|3;_uW+QOtAe5^ezEA zz5v?>c3uJY0+`Posl7v&71!ZZusH>JUJT~rD9!V7u%bSCBN%QNQmXe^un!bq=TPy3 z3b4ydup7Y+DA2nd?EM8;Hx9v8HKeqhmx3KwfL&jLy${UeS(@jz61^{g6^*~IMR|H3 zOVMOZKMdx6mST^UU{6GOa!i^h$@8Bhy%hUN3HA%Hxt5d1Ao)}BeEEsh_Dr!wU|#nW zYX#e_AkTI%_s>*s1(?Uk6ni7stb#mm1oQEp>TL&GU!d2pyxI?`-Xbs`?UdA}+Q524Nvd;*{3-pn70kzbs`pl~B?Wq)2J>}D zs&_w_kFgZ{`x1LUF2Q~YHdIiS3oFHKb}d+uPrRc9doP%e_p}ZlD$)BSSdq_v4$S@9 z&ljaiQ=o^y_O<$@*!RJFyr$UHo@)Q4*gjzHFDZ6B*y#oKZUp21A*FiX0ywk)`!_Ie z>s0SoCD?SF)92e%@3mko4eFNV-C*u#soq^B*jK?`Q;_GpzAXDl0d_wa({V_tz2AUc zRDfOBU-hMhCL~Fw)-IMD5E7&0gdV8H*Jkz%)iEhxzIb6{5#V2!6_*_8#@ zN5Kv+z`hRVF`484JV_rt4#xjOO0fl}7VC9_`PfYLE(G&_NU@O;Y)c9DCNPc@>X!2} zU>*yOF&X)g`aKACnDJ8V8L*;qJ`ctgDWp`dd1bY4Q|v@AU-zWgAAz~Qq}YeSJZ7cX z7fb9t2d2ZBu(eNu`Y7U>l z6Q$S_V27D}SE4uN4A%Q%nB?PE{w=JlS%7(*@HLKO?*wz7XPciV(fbgX_nYr`L_n}d zz&u|2y27y)XYoaA`GdsvD^H^LH(|4CeLy@ zPh#);VD2v|Huaop-?D_wlj!XQ_F?0&q|DQ9%XRJ1(=>5<9Uix6!log0uM@#_yR{FA*!RIczKe|U+NND$DUX@e7j%l*|NO~+{)DL` ztiALF0m^=PgT`rri0--t(pHe!S^ZdpvdeqSJ4CeCf^adb)D( zlfpCvRA{F*|O<0PoAmjvF5vJZ^pX-J-Rl8wW2{#=4Qw;ql`JmtL^t|LP>Y zPABON`qG{Y$UFRW^MLgIy6|#V>HAQmT~h)|GG_5(7hBcQwQG%T48Nc<9^TqKY7u(Z zmf*j~>bj9(){(p3wSwJUZ+7?!ej4(>!K^JWcCAMZ<-ex0>uWr?k*!DgF`r#;dthvA zVCyb6J3_e3W464NdDjN(wc)pC#==~6<=6+(R`%bs`20TmV>uU+JmmaqANVu*l=lMe&F3rm6dieQ zm^_Q}ujD(M&ojux&zgX;LGqD2&gYMP`TPy}yo^stkDt*J%A|k&*ZlWlvTcAqNG0Sv z?H5DU=Uo1S3f)I}E`a}HXc2mH(IfASzmH3u?fiQi?QnxM42`-Hn~SL7v(Sw+<`AFq zuCX=qv+OQDckuTuG`9R^#CB93fY#7>a+Y)#jdT_HNPcoAwiz3nk-vezuj1d&z}p?U z=jS2I=Nvj(eyiXXWbWW_@E$&|LiP?m=a8q!-o=GZC%hf}yO**_-p`>U*ka0iGqSVc z%e(n@NdDkLA}61#X)ob#2VVoNqz?B=zL4myht7i@U!v!?)5kJSzOwA=@E(L7g1!Nv zmVJazvGX42z0e;+@_QxkgWeB)0Qw;GA?QyadFSLd=)=$-LGlc<)a_%?$Duo+yP!`% zpM>s)qzyg={VDWk(7n*7q0c~{g`^&T4t);#JS6X~l(U&HLSKTUfBpjcGV~Sbe(0;v zUqXKcJpg?TqRGOY-dsNAE<^6kANREbR|9K!-u|p~Imgpd+CL&_ZYtbQE+nBzGQ*p<^MsBAoR%^4SD6LoJY; zowq^lkepA;*pM@2IXjj!;$@JW`O4X@oZ&8qx}gfx1NB0EP(O4Mv;yJ^FWjlgS?o&a zH0ae3$KBx_5ohpuCd3hNxW_%4PmWH*cQeo9^EJ?Gq4Oabj~7B0K{AHdKm*WPXb>8L zhM{%PCD3|k1bQ8GDKrXQ25o>gLYtt=AzU&Whc-i7perD`Tf7R|3SAAo9=Znl9q0|v z8=-5VH$m4yzYARty%~B7^j7Ew==Y$vL2rj{gx&$&1icfw8G0A=`_Q|gTcAIH{t)^j z=vL@G(0idjhHiu22fZKq0Q5oVL(rc7y2~x8R)ancIeNc&q1Gu?t{JneG&Q+v;+DJ=*!Sop!=b(LVpSU74!h~ zHR$WmgV00JH=u7q-+~^7z70JB{WbI`^d0DLpudG4gZ>WsF7!R=%e}KLZJpuhA z^aJRJ(38+VK|g~28F~tO8u}OL$Ivs-ze4{8{RDaz`giE3(9fXfpr1qk0sR7c9{MHp zzo1`1FF?PB{uBBQluhCP&~DIFXm@B2Xd1L9G##1&?FH=(&4lEh;APOuq1n(r&?}&Q zp*hfgki6IT0BA0BASCnZL6E$!`w(azbSTsS9R|&Z4u_6_j)WFK3!z2OQP9!QG0!CM8Z-L$l-2nX_^fu`2(2dYLpqrp~LN`P2f_@)*H*^d12hblv sFQxyw7WgLZ`z`2U=-bdE&`as17I>)zUTT4tTHvJ?c&P>c|89Z*4a{^DSpWb4 diff --git a/Vocalization/Vocalization/bin/Debug/SimpleSoundManager.dll b/Vocalization/Vocalization/bin/Debug/SimpleSoundManager.dll index ab698f9605f5995e5082f8791ebf503f28fe2a28..958848743b6c7f5aaf1cdec87f19581b861226dc 100644 GIT binary patch literal 10752 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 B4^IF9 literal 10240 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 UK(7aSJ<#icUJvwo;HW+D|Gr-I00000 literal 32256 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ÝQ}rYwo)Ddb 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 delta 102130 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 mum&C^f3O0||6u$_kQmm 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 literal 33792 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 L|9<}eL*TywTH1AF diff --git a/Vocalization/Vocalization/bin/Debug/Vocalization.pdb b/Vocalization/Vocalization/bin/Debug/Vocalization.pdb index f3cb97c0e8edf8c747f9f1a3fc45e8a0603fb7b8..f07ed38078404d1214f438846bede92b0ce20281 100644 GIT binary patch literal 71168 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 literal 65024 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 z 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 delta 661 zcmeCM|6sde3Aak2vsFxJacWUFM!!z?z^2>{3d^3}a@{9A+O7#3vOJWj>i&Jxxaw=oo z9i8KijV255OUTERndlkB12G83$6J^fC8t>=r5dKBni`mz8Uxix8l~jqu*otoFtjp~ zV6-d|MyqM{l47KkT2W#_MrLv`VMj|@L6z!(94}9*<0X|N5|c{^TO&DHTA+l{V{(9~ zZ748=lk-zj!4@h3Eo=sPjZj*ErHS~k#GIVe%6Q-Wlww_%)Uwo^{DNFy+L@dvsKV-! ZnpB#;xks>yOT~i-GePNVbH0ouGXV8u+t2_2 diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.CoreCompileInputs.cache b/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.CoreCompileInputs.cache index 1e1813e7..05f7f549 100644 --- a/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.CoreCompileInputs.cache +++ b/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -d2f6ea8ff6eabfbcaf9442f44d54892bdeabe452 +3b7bd19887cca12ff75f6ac1abe1ec154bb35718 diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.FileListAbsolute.txt b/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.FileListAbsolute.txt index d7e4a876..55038ef2 100644 --- a/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.FileListAbsolute.txt +++ b/Vocalization/Vocalization/obj/Debug/Vocalization.csproj.FileListAbsolute.txt @@ -11,9 +11,9 @@ C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\bin\Debug\SimpleSo C:\Users\iD Student\Desktop\Stardew\Vocalization\Vocalization\obj\Debug\Vocalization.csprojResolveAssemblyReference.cache C:\Users\owner\Documents\Visual Studio 2015\Projects\github\StardewValleyMods\Vocalization\Vocalization\bin\Debug\Vocalization.dll C:\Users\owner\Documents\Visual Studio 2015\Projects\github\StardewValleyMods\Vocalization\Vocalization\bin\Debug\Vocalization.pdb -C:\Users\owner\Documents\Visual Studio 2015\Projects\github\StardewValleyMods\Vocalization\Vocalization\bin\Debug\Netcode.pdb -C:\Users\owner\Documents\Visual Studio 2015\Projects\github\StardewValleyMods\Vocalization\Vocalization\bin\Debug\SimpleSoundManager.pdb -C:\Users\owner\Documents\Visual Studio 2015\Projects\github\StardewValleyMods\Vocalization\Vocalization\obj\Debug\Vocalization.csprojResolveAssemblyReference.cache C:\Users\owner\Documents\Visual Studio 2015\Projects\github\StardewValleyMods\Vocalization\Vocalization\obj\Debug\Vocalization.csproj.CoreCompileInputs.cache C:\Users\owner\Documents\Visual Studio 2015\Projects\github\StardewValleyMods\Vocalization\Vocalization\obj\Debug\Vocalization.dll C:\Users\owner\Documents\Visual Studio 2015\Projects\github\StardewValleyMods\Vocalization\Vocalization\obj\Debug\Vocalization.pdb +C:\Users\owner\Documents\Visual Studio 2015\Projects\github\StardewValleyMods\Vocalization\Vocalization\bin\Debug\SimpleSoundManager.dll +C:\Users\owner\Documents\Visual Studio 2015\Projects\github\StardewValleyMods\Vocalization\Vocalization\bin\Debug\SimpleSoundManager.pdb +C:\Users\owner\Documents\Visual Studio 2015\Projects\github\StardewValleyMods\Vocalization\Vocalization\obj\Debug\Vocalization.csprojResolveAssemblyReference.cache diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.csprojResolveAssemblyReference.cache b/Vocalization/Vocalization/obj/Debug/Vocalization.csprojResolveAssemblyReference.cache index c197cb7ca2fc2d83ae90767fa6f19bcfa4dc374e..f81aa8ab455adc3bab024cc9d8d9d78c1802dbb6 100644 GIT binary patch literal 95937 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 Q;tP~JjyjI47Fgr|0Zco@h5!Hn literal 127397 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 diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.dll b/Vocalization/Vocalization/obj/Debug/Vocalization.dll index 45cc7edd10f2c42e7778d6221f8a35596de79d59..6b6913d9e5385714113f8f987c4a7b4617cf583e 100644 GIT binary patch literal 36864 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 literal 33792 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 L|9<}eL*TywTH1AF diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.pdb b/Vocalization/Vocalization/obj/Debug/Vocalization.pdb index f3cb97c0e8edf8c747f9f1a3fc45e8a0603fb7b8..f07ed38078404d1214f438846bede92b0ce20281 100644 GIT binary patch literal 71168 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 literal 65024 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 z zJQn}`Q1O(C`}wO3k4HY%vZnQ~W#tC28sQCLb=by+r&u`^vNrd+LdDbHhMxtQE9^R_ zJ?n-ZxbC=KIGsa^RXBF*2&3z3Cn9SdRL!YtzLraRPLesE>R8)T^-V!dwYwK@zv#dkP*r=i#S zFyiZRn0kEUBR%y`G1ucev#}Ts^;@E3pQxMDM7?+N_e(4%Zvk7N>k2PP-leQ%j!^bPc19gha9K929Wb-Pq}Uc z+gR$Fi1fQ!S!=q+gr5eR!n0vAJjXJ;mXp8Ma(oQPtmRt3i;!6ln6+CgxEZ-Mywlo0 z1eM;iupR!oCej|h2RlHnx0rBU3po|}YuFKLZPp2vrr@37F|Z4)3|Vh@$HH!~4(tw_ z!XA+Gd8a2#hAMYQsPsACb$TK9hpN9();|aKM)uFqM$opJH`;_y8#VGCE@cfhsqd3ZH^!BXEP zSHAvYWv%D0A$$)c4RhUX9sJsc{|u$C>uwwH*ScQ$(t2M04dHdjy8dTsxrw*aymfD3sk;_&9O~RQ}Gh{<>aATY9tLlW;bC3eJJ5 zw-r$K>){`fZ-Re<_gnw%kUro&3h4vhW0ty(C%ady{1)6v_}lPB_$_=H>iV4Y%E4EV z%fnY;75Ex#25_kw1l9;Ww}wEX%dfp71y*y%S+C zyc z>5qov@IM7fyjk!l|$}oB@+88$szev2q)DKH+WQg|IWc z2=;~^90+H^k#H6q2WP|aQ1RwN#WxeqL7oNY!r4&eS#HDE!THEHLe?7IR_p%=T#URO zE`g6)K5xTcwz9rae+l7l!KLtj;H6N1C`jp-h0Bo3!R7E+$Qs6L09V1bPfW~mz$N@tdp7sK_0FM%82mGC-v zl?}fUO8*{s1OE3ysq-Pyo>N;csJ|??}0<0;y)AKi#!V62Q%STI2}F+XIRdH(w}4HOW;F< zFNNFS4n78Nf{(*H;SPA0<%3Z1JZ$AB;S+>E1)qekLe`w#Yc~8{DE)o#8T`M5 z%GZz9|Hz|Rw;@-6&%vXi>OL>U;Z=U*Kij623`rjg*QT_e;fP``F6M;ZiU~&=iraF=`gyYMH%--8F>XV59l@e`JUKfu!Ph>BbnhsQ$BHM}ZN@z#clFBz7>zd7U_#A^YS z@6I-S04$IHP{=(8FU$Jp!V1U};n8rC^FKTLk%=S>6U%32uUw;Z}Go zd=@G{FTg6uJ7HD$IXn)21*^e07e+WI^2%6NgtDt@wVlcB!vUKfsqoLhN?kb5ZJA7DdxHB|iTVI$-Xurb^Oo50&(Gq?qEPUhWXxedy0 zyOp1ToU3_%ge~AJuqAxe@@**n-B$htwj%sf*c$GKZQ%DdyfhaTrGG4Ji+>fU^lMxH zWY`Y5IaGahvi|*Hd*p#o?UQExC%{vY&x4)dZ0o-Wc1B(dyTB!uSJ?1ttb7wpC43|7 z3b(^<@Q<)Nd=2)1pFrjNbJ!F4udo+9@>s6z!HTditPA_YCXi=Oyc9SP_JpUyA#e~p z2M&h0kaJycqUBVmbS|*+95{^dxo`wr3eSL-!%^@`cow|M@_H!y8?Af?Vgo;mp48r15l(`=;AE)pwsUUpje_|w6BfWpunAwyCfd4yC>3?edzlRqi z{|%}g^(}Yl9}hj`>QMc!f%R_(XCZflbKpShKOD|Q9s%dUGb}T0c#f6x;e5gi-~zZ9 za*xwn4Hv=na53Bhl@ERUbqVtQ@DlhMTncx=Wl-N?T?s$8{1(b?zm?tNSdS4NgO|Z0 z;pMOj_g11BI-2*ow-wSVs+ufINS_tz`J2X zDE;Pe3vvs1FKlVq!G?FSavyjf;e8?3n7kqI0eBXC2%ZZS-z4}javt0Ur@}{|2e-qS zmW!bDmsoi<avfB9H(2>z z_-DfJgMWd0Z1`UI2J+|dE%+7O4a-&c?e#|v-$kwr--9Q@_hECm2ez>63YA`WD-VMo z5I!7!2*<;ZpuTgy2Tp_1Uj#o!UJO5hOQ6bejSasOeu{h-RK4u5{;$Km$h+Vd@PDj7 zk6}6ckX`r{tPPb;11mR$U*q4*vV#rpVr6~9{u{#ez0hyrSoj?*fZs!XpHuOzfPX_? z34egsz#rje_!GR-@-Zm=9aer7{!I95@BsW6I!AEav*G)p^p8A&=ZEn>3UUq9s{obn z+EC%GU@81t!_u&gWmg;C%gSfKBM2V}d4|Hvfn{JJEDPsBuC03WE!RNBf2Eagg zHo+s|Hh2_##D+f)rT;Fhfd6|?`T55Bm#N7*0=XUWrv^NJff|tU^a6N1SH(1^crLS*I z%Ku5oGpF8DkY`T4KSQ2r@&01N_5DZb{|I@;#rp}ifIma!yCOG@6@D^oiCho1hV`N9 zH^qjZ2KhU#UVqEc)_<&(3t(Hq3nACky=AaH+yMF8vff?r6!;=kdVhu;kpBWtg+D<4 zuBoS6=v;&MYQnCt6_kD_*bTWe>;b!24zl6Htvn9)Bz!#V4fQ>3uHkzNVLx~+RD3tV z(~vhpp6&7OhFs(Ko`3`4la{YTlV2-;3Qs5eGdKwT1P8;PZFq$wUq1;B!M_e13QvN{ zcN?hqdc$GJ{UP@fybS9<364b0gJ;5dkY|p(%ivk?9w_^VVH)x_I2yhK&xU&-_ar=S zPdj6wYgrk}?szLVgc*c4f;_|Ib%5jGX)qg(fZWsYvf;Tf$MSrrcrLW^C2#`aOJOct z2PeYyHheRb{^KwY{~b{Idd>QO0w*JX2J_)wsDAdd4X<<(>rCXza0;vqr^1$S8uahk z_vXI1o;hlX8-*i~&3{It8u#W;HF6E^ocs6ebx-~j#IJ`nE202x2IaW;)Yl^!l~!TW#gI>V{c=h%(DaaNUM?4&9I$)WG zq#kB^ZH!)9o)7TT%ltdj>vUM@{r{w)`cxeU&pYUuiN@qxTXFrL9jSjk+ok&Nd06?Y zW81ES)7`ei7}$_n?{4fH(+}#<2kOxm>XEkgTiNF=qHPe(ulh`7a;&Ym|NNu#-^IkA z$}>#=$h!9P-YSy!Xy1?4y`JA+NdNw|{(i7JK6w2muG_Ye{2gxHCNa8(8rzd-XMc>g zCf}WK1954l3@!D+3AXw?H|USq4u-)qgR<-4^fEe$^Vh_L{qMDXM-zW1^5D-Szr9{n z2E7xa?eONRzb}o%_0!0tTUHjwcds5Yx1ggukKui(|bj8;lcA#ojR<}n!)GkFdwIW@2?&F@!Shp zW4s?OiJ8m~JBbyAAAb0AU1QcI+GH1uE9JBJ_*|Le-QgTF4qfJ|taYmLJg)CffpU^- zGFzW+@=(jvnd+)JPVcno-LNE{xJ@zPbvW+&TSGc9HYe!_8kK0E55dz zYiJASSM^e|?hZG<|Csvn(@!+-{NvU~{#riK@j~yd9(+F3`;^-Jc`{KRgLRzW$NX`x zbF9NZrl|bk`R$j-xkT%PUmJUen{R(j`;W-C-ajp_t260SdjEHT@$<*tm3B-X`Z)7j z)-i{wJIx;znBOWe8iMD|>+-Cr|2;Rp`w%l(Gc8;Ve{C0YUhYDkee}2uXU_kt!kNfi z)^}z>jiA|3Ej}0O%uUw`v@)NEtRvohIMVu`1s5Qv!G&--Tm)yp#qfN130wvh&q}xy zc@?}A-UFAxd*KTBCn&ua;Y#F};41hvTn)d0mqV9=Nbd-^200F|fG5H$VJ)~8Hi6P> z4tbW-YXPr;z2UX658MFLp!71}b;z0UdN>~50JAM;K; zM7{#v4A)uz>)|cPH^5urHn<7$E~j%Fd=kq3kMMTnXW<=i58MntfOkSYhkh5_3-5-! zn`iQ==h0;!X7>GSGULqJ)bDSp zA)PF1=U*G}k7s$-FC70_)~`dzHb^t9SDSRIk&CWIuZDB7Nw=z<)BQQBp$YTH+gQe* z=JsFuNw+GaQTeaSu|b=k{}YSG$`+oN@W0*X7JUzJ0Cl$!e{GLYSBTDbSO)HZRiNs& z8hiqoTNKWdP%G1?pw48ThMLj-2zAtwzE)Y!A`gPk!Ljg9un;~Er@)FqhHLCd-T=RW_rU*w8Z)wg9Da+u1AYfzhWnw$%HN>I$`9}( zsB|?}#9*xahbcp>EdPVXYixlr-UxAHPrh4AH&=fAz+9Sz=xaE?R19v%-LhSebN0~kI970)wP zehF45oagPG8t_ec0({Gc^BlX;=Xr96_e?#W6L)ye)cXO}hNU@PB*7zK9TkBF~4K_$OPL=PsSb z`19PR(*(|jP2n6H&U2AQpXU^vX85m%JRfh~$>#ZZ?^fiNkmm)RR`52c{PMhk20evaT@Xcx}QtP8<0FIF9fK;dscgz{!Tp zB{NnX-uLiMg!z!M zW5O95P60Aw!E(0i}00oQu2#V&gprvGM){7r{56^xlDsk$1yO;C{Fieh-(yG8~AdcO+bn zd=y*(>%x_=9$XDuL+Q1Lmm%x>WozIdcm*5`uY%`5>1DvR$eHjOcp>Iz$DY3GWLZf@j$9v*5$XX>c1H2Oojs;iGU0R5~-@W60;j$Kf2f1I~p{!j({Z zm&2!!*TARY2KWrT4n7O-gwneQ(r3JTA$`W%4xfjQ!kzF1D7}~Ai^#9Qm*Cs*W%v$! z6@Ct-_a%G{`78K3{1NVgKfyo4pP}mKDBih{{t56+}{_X$e{*_s67w5Ac`Kf7S z|9WvUatkB-=M8#ix+8x6_o_~I>N_WJ<-oVsia025J6qQ9_2mxMuP@a7W665Y->;|Q z_xu}}c>MJAEhl|T%Fjdbx1<`H>l?whq@?TX``6rcUQqJ;01Zu?#oq_`Wf~2*kEyK| z=P3SpiT{15;9R3PjYdV~uSM>)Ri+lS`R7aePJ(|Q!p~Dpu50x&;kCFL=EtpXiuvE# z2;MK3uI$^=PfoPoKKNz4IxFE>8+85m;QQEkgZJP&6vZ1{8$G;u{dNlCZDQ}6>k6x% zUtJgR^Ba7(?C|3CuOSEVHZ6+RZ$G_*AH>_pDK6VD>wyQZ*xH(JP^f;x?Wb>AsQruW z^=-F<`-RJTy44G}SEBg(TRp$8`sEp%AdNsToR?qv)u10}^XpdMlk17o_t1{x?!YOO zu6WG(X|*tEsa{%go%MvGxkcY7)fn>oZt)oM`@3)3*yi(p-%t4qkGop*e7~GE?AT~# zcmi75^j+29I@cCt|2w~~eG)|B9CM|}_91ht3qOML*W6nXevHiH^v)+xCHxdB)z4sC zC_P>G+KYS&{2UIFKO79dfWzTF=+E8tk%F;&n#r&7S?s6zOV{bD7v;Sy8S}s8>lS?< zSl1PPG*+Cq61VdHH>m3jKf)yVGgNO>9@VoBAe)vi!}%4m3wy&-PW=y@ ztJxO#Fu%vrR4J*ntE6P}`D8|XsYB-WG=4J* z_!|Tqrxb4Xle^~;o>7>?-w#gioi!;dKPQ70EDrC>q1lhm*YBS*={%Au;b%T3jbDwB z-LUNZtn|#BN#m1;r58*npjzY1Po+yg)8*4A?>_Ujz7N$a7klv5En^hd0PYCr&ZgQ% z<D!v1@1RMb|sDE%IT0Y47;U1M%?xx_f3v>^+J@#PByMm@YrrLB4)gDRc?!u*#)*nLpL{p;f{tvf@ zn?zpSG5$9v{}kAABHd39iA z*c6h6xfjWN?@=7qyZ*QP(KYuTsar1t|Jv|em;@(4;_y_qlOTsd&d|7i2kXN5upTVO zxq#Q)LJB1$2BA!RCIRdX}+aQ zrd+g-*9uwdt~QXhoLPIamh(Vtb@ran@k+L^X3Q6JrrDH|&Uzdm|G)kiO=H6CkRQy+ccImkhM zpkwNzA5?vu22~&Zq3T2Fs6NDSeGEYM>m%9JN9CgP4XtYruRa>ly0z_jX1G55`89EU zP!>}kgQ5DzP^kJC4#WLp1hVSm45$LcZXlV}l|Emw(EA;2L;=kchgLr$WQ?QLAUG0vCs*h}_ zb2qUXR69#wavhihPlAknk1=k@STcHyAtR?i<^*#tmka4bCY(OvOhl%S@TGL_r$E+W z=KG41q575LB@LsmdQ^DUB$!qIP}en{}WrH_U{LHFzAX{iPd(|6gx^f4Vusw13d&ci4tW4VAef zW&TT0=7Pyt=}g{Q3-3qALtnZXnn5HBf)))IV=lGGU$YdGl}i zn_p@V*5odEbll_JPBETnQ-2PwRdiG*XRGJK{8qxI1`8ik)bz~E9-(vk4!_}C-KHJW zaWO^)lx{bBUjC*{mv8P>XW0R$G%w;YYo&Ixg6U5Iz{VqJqM|K zW~boV8h_0*8*zSrah+85wW$u*nmvClthOOelMlL{ITxYoiq;&=HD=9P6L!JBAxwo$ zU^hq^^mdzh_Nxa($E;QTyfq*{x;Dy8#^$e~dK&us@3O|MR+Qg4==lA`E$T<*@KZf% z>r4E~Z$Ef6)S84oX4bm2xmoL0fu|E*6%K+Y!@;mF90L7(HAf2aQ_bef{|36kRd>@F zw0<9Q^*u?m_2E}*32j=JDlb}>DsAOOX^uqZ9L=mx8^BS>Dex>v{&^dW`=3zj(J_#< zmUkWu)>rtM^;J5YhyPf(1ZKdit=>AAiM$@tkwr78{q}WH^B>`u2EkEpMigXFF@9u-n&rg z>-jd1|9ZY{Cj1W0fdU~#H5pp-U7!HNh zy?LJPQaB2E8PxM^%b}iITLIU=mGFMJ8uHy(=W@t*Tb(sf&zW5T_e0vy_Q6`ze$WR` zVH~93^u730(;q9BxQ`O}F+&vD`1i;w+qJVlo^+4gzsI0AU5jc<;fz(6<1S0ejxUUly+_?u0-C#n4Cd-?iCzV7#@;&e~N|C>Qt z50=HfNjqvwk}J)69@if?2B&AdR^j+2i}MQZ_wC=S1`e>*DA)YUF|;w?rRJQ^UndM_ zU(Nn1Z7MQ%8?LwhKUuy=pu*FwULDK-VSbiB-zYY`!P?7DuAJ3#ZTM;{A3>nP`L>vE zXXEK){WTXVoNx9SR=4)ct^Xx9{;jAf)URCSwqL1o9w?l_3hY@=dSw(-K5_V|&!w7dgKYvL| z$=_0g9jF`}M*hjrKVYM-qFZs=#d~3$#J*O;3u~6#_iMJKUjoTfe`Pc3MK+%CGe0pW zwOBaB-cf{A!_~#Lz_I4z{aOFqa}1n=;}~bwh#TP++;*JS61#AFaQkpS;&jck3N8t! zXX8_Fx}K$LU0Mrd4UudoGcd3LAt(*Ri%K`Ywf^W=dyco368FW!Jw8 z-*=Kqul5Sk_Vuj&DLQxc?Q=N+B<+a3{`h#woE&PR4%P-r@AvILvj&2Gb2AhW!1wc5u*)1%KE* zr0@G%eMU@po-1uHWCw9;?kny1x-FTjf^lC{$3cJG7eCw+O2ZGgcFa?Oot`!E?Mgm~ z5~SycTRY~cz)sIZ_;w{9m;kO$w-=79wd&y$*CjMg5doRSwM0~g{TXYAEJLq+ zj?mNc@+TyB4<2zbONQ<|L)Wca`%}8N>tT~Ds;9)|I$G~~m~Hyur#U2RvYxe?$g(VW zyeB24ZM&A;dN9v4dm#DCAny#pUu+7KKiAyM7U)XQ{)0H3qiBnUmBJ%fOGLx;cler9 zhD3JVC}Wx}XVgxA@9<#Wai{0 zwQA9_ZQ7vxymMLI7o?5PDa@WSHm$@X$;>erg=U?D3&|M;|Fm?Arj4{;4&i@hK8mK` ze`cb^h5yBzsciiG#m`@;JD4tE`-S?3=~(JO2M!z++BZSJ{~TTotV(X_UbXkUvsA6` zTyoFn^FMmF$FgUix%P#!-`v!XvD%ym?kL97y z3BJcT?sgY6&*+dgB{WDgiw5abe~=c02I=I;AT99U8<=X|8H zFs?`UD-Z93I+AK%i-MDIWpUcHfY2#};?efz;MU=}!1w(9_czu6m#Ca1oW9|a0(no_ zkX>hp&PS=^H1@-;A@cR>9rJ+Xg@g~HiE5&&a|OPgZ`KyvPu4wT(~8`K)_rGl9Or(s zX~7Cmz2O*~){Saq^#rxNdH_p5)7q7x&PSBbsyLm09FMDp(|Je@+zGgvxD#=@n_C-~ zgsX#74>}oF7pL`9eOv>a%Fqbc7}o@+yz5?#?v^&kX&uZdr=ImNZ?({TN918@Uz zr{f0U2IGd{hT?|dhT}%yv_>6?I}Yd|V-J3hwvqKdS~Vq&OG-XBFx9()@-R_ Date: Wed, 15 Aug 2018 23:59:39 -0700 Subject: [PATCH 044/110] Vocalization works, made some fixes to wav files for Symphony and SimpleSoundManager. Lots of hacks later a voice acting mod seems to be working well. --- .../Framework/SoundManager.cs | 27 +- .../SimpleSoundManager/Framework/WavSound.cs | 26 +- GeneralMods/StardewMods.sln | 17 ++ .../Framework/Music/WavMusicPack.cs | 17 +- .../Vocalization}/Vocalization.sln | 0 .../Framework/CharacterVoiceCue.cs | 12 +- .../Framework/ReplacementStrings.cs | 236 ++++++++--------- .../Vocalization}/Vocalization/ModConfig.cs | 64 ++--- .../Vocalization/Properties/AssemblyInfo.cs | 72 +++--- .../Vocalization/Vocalization.cs | 123 +++++---- .../Vocalization/Vocalization.csproj | 7 +- .../Vocalization}/Vocalization/manifest.json | 0 .../Vocalization/packages.config | 6 +- SimpleSoundManager/Framework/Sound.cs | 36 --- SimpleSoundManager/Framework/SoundManager.cs | 216 ---------------- SimpleSoundManager/Framework/WavSound.cs | 237 ------------------ SimpleSoundManager/Framework/XACTSound.cs | 134 ---------- SimpleSoundManager/Framework/XactMusicPair.cs | 34 --- SimpleSoundManager/Properties/AssemblyInfo.cs | 36 --- SimpleSoundManager/README.md | 24 -- SimpleSoundManager/SimpleSoundManager.csproj | 100 -------- .../SimpleSoundManager.csproj.user | 6 - SimpleSoundManager/SimpleSoundManagerMod.cs | 14 -- .../bin/Debug/SimpleSoundManager 2.0.zip | Bin 11561 -> 0 bytes .../bin/Debug/SimpleSoundManager.dll | Bin 10240 -> 0 bytes .../bin/Debug/SimpleSoundManager.pdb | Bin 32256 -> 0 bytes SimpleSoundManager/manifest.json | 10 - ...gnTimeResolveAssemblyReferencesInput.cache | Bin 7460 -> 0 bytes ...oundManager.csproj.CoreCompileInputs.cache | 1 - ...leSoundManager.csproj.FileListAbsolute.txt | 5 - .../obj/Debug/SimpleSoundManager.dll | Bin 10240 -> 0 bytes .../obj/Debug/SimpleSoundManager.pdb | Bin 32256 -> 0 bytes SimpleSoundManager/packages.config | 4 - .../Vocalization/Vocalization.csproj.user | 6 - .../Vocalization/bin/Debug/Netcode.dll | Bin 76800 -> 0 bytes .../bin/Debug/SimpleSoundManager.dll | Bin 10752 -> 0 bytes .../bin/Debug/SimpleSoundManager.pdb | Bin 34304 -> 0 bytes .../bin/Debug/Vocalization 0.0.1.zip | Bin 81988 -> 0 bytes .../Vocalization/bin/Debug/Vocalization.dll | Bin 36864 -> 0 bytes .../Vocalization/bin/Debug/Vocalization.pdb | Bin 71168 -> 0 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 8072 -> 0 bytes ...ocalization.csproj.CoreCompileInputs.cache | 1 - .../Vocalization.csproj.FileListAbsolute.txt | 19 -- ...ation.csprojResolveAssemblyReference.cache | Bin 95937 -> 0 bytes .../Vocalization/obj/Debug/Vocalization.dll | Bin 36864 -> 0 bytes .../Vocalization/obj/Debug/Vocalization.pdb | Bin 71168 -> 0 bytes ...oschild.Stardew.ModBuildConfig.2.0.2.nupkg | Bin 11531 -> 0 bytes ...Pathoschild.Stardew.ModBuildConfig.targets | 144 ----------- .../StardewModdingAPI.ModBuildConfig.dll | Bin 16384 -> 0 bytes 49 files changed, 348 insertions(+), 1286 deletions(-) rename {Vocalization => GeneralMods/Vocalization}/Vocalization.sln (100%) rename {Vocalization => GeneralMods/Vocalization}/Vocalization/Framework/CharacterVoiceCue.cs (96%) rename {Vocalization => GeneralMods/Vocalization}/Vocalization/Framework/ReplacementStrings.cs (97%) rename {Vocalization => GeneralMods/Vocalization}/Vocalization/ModConfig.cs (95%) rename {Vocalization => GeneralMods/Vocalization}/Vocalization/Properties/AssemblyInfo.cs (97%) rename {Vocalization => GeneralMods/Vocalization}/Vocalization/Vocalization.cs (96%) rename {Vocalization => GeneralMods/Vocalization}/Vocalization/Vocalization.csproj (90%) rename {Vocalization => GeneralMods/Vocalization}/Vocalization/manifest.json (100%) rename {Vocalization => GeneralMods/Vocalization}/Vocalization/packages.config (91%) delete mode 100644 SimpleSoundManager/Framework/Sound.cs delete mode 100644 SimpleSoundManager/Framework/SoundManager.cs delete mode 100644 SimpleSoundManager/Framework/WavSound.cs delete mode 100644 SimpleSoundManager/Framework/XACTSound.cs delete mode 100644 SimpleSoundManager/Framework/XactMusicPair.cs delete mode 100644 SimpleSoundManager/Properties/AssemblyInfo.cs delete mode 100644 SimpleSoundManager/README.md delete mode 100644 SimpleSoundManager/SimpleSoundManager.csproj delete mode 100644 SimpleSoundManager/SimpleSoundManager.csproj.user delete mode 100644 SimpleSoundManager/SimpleSoundManagerMod.cs delete mode 100644 SimpleSoundManager/bin/Debug/SimpleSoundManager 2.0.zip delete mode 100644 SimpleSoundManager/bin/Debug/SimpleSoundManager.dll delete mode 100644 SimpleSoundManager/bin/Debug/SimpleSoundManager.pdb delete mode 100644 SimpleSoundManager/manifest.json delete mode 100644 SimpleSoundManager/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache delete mode 100644 SimpleSoundManager/obj/Debug/SimpleSoundManager.csproj.CoreCompileInputs.cache delete mode 100644 SimpleSoundManager/obj/Debug/SimpleSoundManager.csproj.FileListAbsolute.txt delete mode 100644 SimpleSoundManager/obj/Debug/SimpleSoundManager.dll delete mode 100644 SimpleSoundManager/obj/Debug/SimpleSoundManager.pdb delete mode 100644 SimpleSoundManager/packages.config delete mode 100644 Vocalization/Vocalization/Vocalization.csproj.user delete mode 100644 Vocalization/Vocalization/bin/Debug/Netcode.dll delete mode 100644 Vocalization/Vocalization/bin/Debug/SimpleSoundManager.dll delete mode 100644 Vocalization/Vocalization/bin/Debug/SimpleSoundManager.pdb delete mode 100644 Vocalization/Vocalization/bin/Debug/Vocalization 0.0.1.zip delete mode 100644 Vocalization/Vocalization/bin/Debug/Vocalization.dll delete mode 100644 Vocalization/Vocalization/bin/Debug/Vocalization.pdb delete mode 100644 Vocalization/Vocalization/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache delete mode 100644 Vocalization/Vocalization/obj/Debug/Vocalization.csproj.CoreCompileInputs.cache delete mode 100644 Vocalization/Vocalization/obj/Debug/Vocalization.csproj.FileListAbsolute.txt delete mode 100644 Vocalization/Vocalization/obj/Debug/Vocalization.csprojResolveAssemblyReference.cache delete mode 100644 Vocalization/Vocalization/obj/Debug/Vocalization.dll delete mode 100644 Vocalization/Vocalization/obj/Debug/Vocalization.pdb delete mode 100644 Vocalization/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/Pathoschild.Stardew.ModBuildConfig.2.0.2.nupkg delete mode 100644 Vocalization/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/Pathoschild.Stardew.ModBuildConfig.targets delete mode 100644 Vocalization/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/StardewModdingAPI.ModBuildConfig.dll diff --git a/GeneralMods/SimpleSoundManager/Framework/SoundManager.cs b/GeneralMods/SimpleSoundManager/Framework/SoundManager.cs index dfe2c8a9..71324687 100644 --- a/GeneralMods/SimpleSoundManager/Framework/SoundManager.cs +++ b/GeneralMods/SimpleSoundManager/Framework/SoundManager.cs @@ -36,7 +36,14 @@ namespace SimpleSoundManager.Framework { WavSound wav = new WavSound(soundName,pathToWav); SimpleSoundManagerMod.ModMonitor.Log("Getting sound file:" + soundName); - this.sounds.Add(soundName,wav); + try + { + this.sounds.Add(soundName, wav); + } + catch(Exception err) + { + + } } /// @@ -49,7 +56,14 @@ namespace SimpleSoundManager.Framework { WavSound wav = new WavSound(helper ,soundName,pathToWav); SimpleSoundManagerMod.ModMonitor.Log("Getting sound file:" + soundName); - this.sounds.Add(soundName,wav); + try + { + this.sounds.Add(soundName, wav); + } + catch(Exception err) + { + //Sound already added so no need to worry? + } } /// @@ -62,7 +76,14 @@ namespace SimpleSoundManager.Framework { WavSound wav = new WavSound(helper,songName,pathToWav); SimpleSoundManagerMod.ModMonitor.Log("Getting sound file:" + songName); - this.sounds.Add(songName,wav); + try + { + this.sounds.Add(songName, wav); + } + catch(Exception err) + { + + } } /// diff --git a/GeneralMods/SimpleSoundManager/Framework/WavSound.cs b/GeneralMods/SimpleSoundManager/Framework/WavSound.cs index 9d24bf86..18db692b 100644 --- a/GeneralMods/SimpleSoundManager/Framework/WavSound.cs +++ b/GeneralMods/SimpleSoundManager/Framework/WavSound.cs @@ -36,15 +36,19 @@ namespace SimpleSoundManager public string soundName; + + public bool loop; + /// /// Get a raw disk path to the wav file. /// /// - public WavSound(string name,string pathToWavFile) + public WavSound(string name,string pathToWavFile,bool Loop=false) { this.path = pathToWavFile; LoadWavFromFileToStream(); this.soundName = name; + this.loop = Loop; } /// @@ -52,11 +56,12 @@ namespace SimpleSoundManager /// /// /// - public WavSound(IModHelper modHelper,string name, string pathInModDirectory) + public WavSound(IModHelper modHelper,string name, string pathInModDirectory,bool Loop=false) { string path = Path.Combine(modHelper.DirectoryPath, pathInModDirectory); this.path = path; this.soundName = name; + this.loop = Loop; } /// @@ -64,7 +69,7 @@ namespace SimpleSoundManager /// /// The mod helper for the mod you wish to use to load the music files from. /// The list of folders and files that make up a complete path. - public WavSound(IModHelper modHelper,string soundName, List pathPieces) + public WavSound(IModHelper modHelper,string soundName, List pathPieces,bool Loop=false) { string s = modHelper.DirectoryPath; foreach(var str in pathPieces) @@ -73,6 +78,7 @@ namespace SimpleSoundManager } this.path = s; this.soundName = soundName; + this.loop = Loop; } /// @@ -113,7 +119,7 @@ namespace SimpleSoundManager dynamicSound = new DynamicSoundEffectInstance(sampleRate, (AudioChannels)channels); - count = dynamicSound.GetSampleSizeInBytes(TimeSpan.FromMilliseconds(1000)); + count = byteArray.Length;//dynamicSound.GetSampleSizeInBytes(TimeSpan.FromMilliseconds(1000)); dynamicSound.BufferNeeded += new EventHandler(DynamicSound_BufferNeeded); @@ -127,13 +133,21 @@ namespace SimpleSoundManager } catch (Exception err) { - SimpleSoundManagerMod.ModMonitor.Log(err.ToString()); + //SimpleSoundManagerMod.ModMonitor.Log(err.ToString()); } position += count; if (position + count > byteArray.Length) { - position = 0; + + if (loop) + { + position = 0; + } + else + { + //this.stop(); + } } } diff --git a/GeneralMods/StardewMods.sln b/GeneralMods/StardewMods.sln index c34679cd..577b29d2 100644 --- a/GeneralMods/StardewMods.sln +++ b/GeneralMods/StardewMods.sln @@ -74,6 +74,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdditionalCropsFramework", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdvancedSaveBackup", "AdvancedSaveBackup\AdvancedSaveBackup.csproj", "{12984468-2B79-4B3B-B045-EE917301DEE0}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Vocalization", "Vocalization\Vocalization\Vocalization.csproj", "{1651701C-DB36-43C7-B66D-2700171DD9A9}" + ProjectSection(ProjectDependencies) = postProject + {7B1E9A54-ED9E-47AA-BBAA-98A6E7CB527A} = {7B1E9A54-ED9E-47AA-BBAA-98A6E7CB527A} + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -384,6 +389,18 @@ Global {12984468-2B79-4B3B-B045-EE917301DEE0}.x86|Any CPU.Build.0 = x86|Any CPU {12984468-2B79-4B3B-B045-EE917301DEE0}.x86|x86.ActiveCfg = x86|x86 {12984468-2B79-4B3B-B045-EE917301DEE0}.x86|x86.Build.0 = x86|x86 + {1651701C-DB36-43C7-B66D-2700171DD9A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1651701C-DB36-43C7-B66D-2700171DD9A9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1651701C-DB36-43C7-B66D-2700171DD9A9}.Debug|x86.ActiveCfg = Debug|Any CPU + {1651701C-DB36-43C7-B66D-2700171DD9A9}.Debug|x86.Build.0 = Debug|Any CPU + {1651701C-DB36-43C7-B66D-2700171DD9A9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1651701C-DB36-43C7-B66D-2700171DD9A9}.Release|Any CPU.Build.0 = Release|Any CPU + {1651701C-DB36-43C7-B66D-2700171DD9A9}.Release|x86.ActiveCfg = Release|Any CPU + {1651701C-DB36-43C7-B66D-2700171DD9A9}.Release|x86.Build.0 = Release|Any CPU + {1651701C-DB36-43C7-B66D-2700171DD9A9}.x86|Any CPU.ActiveCfg = Release|Any CPU + {1651701C-DB36-43C7-B66D-2700171DD9A9}.x86|Any CPU.Build.0 = Release|Any CPU + {1651701C-DB36-43C7-B66D-2700171DD9A9}.x86|x86.ActiveCfg = Release|Any CPU + {1651701C-DB36-43C7-B66D-2700171DD9A9}.x86|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/WavMusicPack.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/WavMusicPack.cs index f7fd3025..5df7df4e 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/WavMusicPack.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/WavMusicPack.cs @@ -35,18 +35,21 @@ namespace StardewSymphonyRemastered.Framework /// byte[] byteArray; + + bool loop; + /// /// Constructor. /// /// - public WavMusicPack(string directoryToMusicPack) + public WavMusicPack(string directoryToMusicPack, bool Loop = false) { this.directory = directoryToMusicPack; this.setModDirectoryFromFullDirectory(); this.songsDirectory = Path.Combine(this.directory, "Songs"); this.songInformation = new SongSpecifics(); this.musicPackInformation = MusicPackMetaData.readFromJson(directoryToMusicPack); - + this.loop = Loop; /* if (this.musicPackInformation == null) { @@ -115,7 +118,7 @@ namespace StardewSymphonyRemastered.Framework dynamicSound = new DynamicSoundEffectInstance(sampleRate, (AudioChannels)channels); - count = dynamicSound.GetSampleSizeInBytes(TimeSpan.FromMilliseconds(10000)); + count = byteArray.Length;//dynamicSound.GetSampleSizeInBytes(TimeSpan.FromMilliseconds(10000)); dynamicSound.BufferNeeded += new EventHandler(DynamicSound_BufferNeeded); this.currentSong = new Song(p); @@ -141,7 +144,13 @@ namespace StardewSymphonyRemastered.Framework position += count; if (position + count > byteArray.Length) { - position = 0; + if (loop) + { + position = 0; + } + else + { + } } } diff --git a/Vocalization/Vocalization.sln b/GeneralMods/Vocalization/Vocalization.sln similarity index 100% rename from Vocalization/Vocalization.sln rename to GeneralMods/Vocalization/Vocalization.sln diff --git a/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs b/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs similarity index 96% rename from Vocalization/Vocalization/Framework/CharacterVoiceCue.cs rename to GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs index 2ef49bb6..efb2cdd5 100644 --- a/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs @@ -62,7 +62,8 @@ namespace Vocalization.Framework bool exists = dialogueCues.TryGetValue(dialogueString, out voiceFileName); if (exists) { - Vocalization.soundManager.swapSounds(voiceFileName); + Vocalization.soundManager.stopAllSounds(); + Vocalization.soundManager.playSound(voiceFileName); } else { @@ -97,6 +98,7 @@ namespace Vocalization.Framework else if (name == "Shops") { stringsFileNames.Add("StringsFromCSFiles.xnb"); + this.addDialogue("Welcome to Pierre's! Need some supplies?", ""); } else if (name == "ExtraDialogue") { @@ -169,7 +171,7 @@ namespace Vocalization.Framework foreach(var sentence in goodValues) { - List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence); + List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence,this); foreach(var cleanSentence in clean) { this.dialogueCues.Add(cleanSentence, ""); @@ -189,7 +191,7 @@ namespace Vocalization.Framework foreach (var sentence in goodValues) { - List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence); + List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence,this); foreach (var cleanSentence in clean) { this.dialogueCues.Add(cleanSentence, ""); @@ -207,7 +209,7 @@ namespace Vocalization.Framework foreach (var sentence in goodValues) { - List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence); + List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence,this); foreach (var cleanSentence in clean) { this.dialogueCues.Add(cleanSentence, ""); @@ -233,7 +235,7 @@ namespace Vocalization.Framework foreach (var sentence in goodValues) { - List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence); + List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence,this); foreach (var cleanSentence in clean) { try diff --git a/Vocalization/Vocalization/Framework/ReplacementStrings.cs b/GeneralMods/Vocalization/Vocalization/Framework/ReplacementStrings.cs similarity index 97% rename from Vocalization/Vocalization/Framework/ReplacementStrings.cs rename to GeneralMods/Vocalization/Vocalization/Framework/ReplacementStrings.cs index 3bc36c07..d15603b5 100644 --- a/Vocalization/Vocalization/Framework/ReplacementStrings.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/ReplacementStrings.cs @@ -1,118 +1,118 @@ - -using StardewValley; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Vocalization.Framework -{ - public class ReplacementStrings - { - - public string farmerName = ""; - public string bandName = ""; - public string bookName = ""; - public string rivalName = ""; - public string petName = ""; - public string farmName = ""; - public string favoriteThing = ""; - public string kid1Name = ""; - public string kid2Name = ""; - - public List adjStrings; - public List nounStrings; - public List placeStrings; - public List spouseNames; - - - public ReplacementStrings() - { - loadAdjStrings(); - loadNounStrings(); - loadPlaceStrings(); - loadSpouseStrings(); - } - - public void loadAdjStrings() - { - //load in adj strings from StringsFromCS and add them to this list. Then in sanitizaion is where you make all of the possible combinations for input. - adjStrings = new List(); - - Dictionary extraStrings = Vocalization.ModHelper.Content.Load>(Path.Combine("Strings", "StringsFromCSFiles.xnb"),StardewModdingAPI.ContentSource.GameContent); - - for(int i = 679; i <= 698; i++) - { - string d = "Dialogue.cs."; - string combo = d + i.ToString(); - string dialogue = ""; - bool exists = extraStrings.TryGetValue(combo, out dialogue); - if (exists) - { - adjStrings.Add(dialogue); - } - } - - } - - public void loadNounStrings() - { - nounStrings = new List(); - - Dictionary extraStrings = Vocalization.ModHelper.Content.Load>(Path.Combine("Strings", "StringsFromCSFiles.xnb"),StardewModdingAPI.ContentSource.GameContent); - - for (int i = 699; i <= 721; i++) - { - string d = "Dialogue.cs."; - string combo = d + i.ToString(); - string dialogue = ""; - bool exists = extraStrings.TryGetValue(combo, out dialogue); - if (exists) - { - adjStrings.Add(dialogue); - } - } - } - - public void loadPlaceStrings() - { - placeStrings = new List(); - - Dictionary extraStrings = Vocalization.ModHelper.Content.Load>(Path.Combine("Strings", "StringsFromCSFiles.xnb"), StardewModdingAPI.ContentSource.GameContent); - - for (int i = 735; i <= 759; i++) - { - string d = "Dialogue.cs."; - string combo = d + i.ToString(); - string dialogue = ""; - bool exists = extraStrings.TryGetValue(combo, out dialogue); - if (exists) - { - adjStrings.Add(dialogue); - } - } - } - - /// - /// Load all associated spouse names. - /// - public void loadSpouseStrings() - { - spouseNames = new List(); - foreach(var loc in Game1.locations) - { - foreach(var character in loc.characters) - { - if (character.datable.Value) - { - spouseNames.Add(character.Name); - } - } - } - } - - - } -} + +using StardewValley; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Vocalization.Framework +{ + public class ReplacementStrings + { + + public string farmerName = ""; + public string bandName = ""; + public string bookName = ""; + public string rivalName = ""; + public string petName = ""; + public string farmName = ""; + public string favoriteThing = ""; + public string kid1Name = ""; + public string kid2Name = ""; + + public List adjStrings; + public List nounStrings; + public List placeStrings; + public List spouseNames; + + + public ReplacementStrings() + { + loadAdjStrings(); + loadNounStrings(); + loadPlaceStrings(); + loadSpouseStrings(); + } + + public void loadAdjStrings() + { + //load in adj strings from StringsFromCS and add them to this list. Then in sanitizaion is where you make all of the possible combinations for input. + adjStrings = new List(); + + Dictionary extraStrings = Vocalization.ModHelper.Content.Load>(Path.Combine("Strings", "StringsFromCSFiles.xnb"),StardewModdingAPI.ContentSource.GameContent); + + for(int i = 679; i <= 698; i++) + { + string d = "Dialogue.cs."; + string combo = d + i.ToString(); + string dialogue = ""; + bool exists = extraStrings.TryGetValue(combo, out dialogue); + if (exists) + { + adjStrings.Add(dialogue); + } + } + + } + + public void loadNounStrings() + { + nounStrings = new List(); + + Dictionary extraStrings = Vocalization.ModHelper.Content.Load>(Path.Combine("Strings", "StringsFromCSFiles.xnb"),StardewModdingAPI.ContentSource.GameContent); + + for (int i = 699; i <= 721; i++) + { + string d = "Dialogue.cs."; + string combo = d + i.ToString(); + string dialogue = ""; + bool exists = extraStrings.TryGetValue(combo, out dialogue); + if (exists) + { + adjStrings.Add(dialogue); + } + } + } + + public void loadPlaceStrings() + { + placeStrings = new List(); + + Dictionary extraStrings = Vocalization.ModHelper.Content.Load>(Path.Combine("Strings", "StringsFromCSFiles.xnb"), StardewModdingAPI.ContentSource.GameContent); + + for (int i = 735; i <= 759; i++) + { + string d = "Dialogue.cs."; + string combo = d + i.ToString(); + string dialogue = ""; + bool exists = extraStrings.TryGetValue(combo, out dialogue); + if (exists) + { + adjStrings.Add(dialogue); + } + } + } + + /// + /// Load all associated spouse names. + /// + public void loadSpouseStrings() + { + spouseNames = new List(); + foreach(var loc in Game1.locations) + { + foreach(var character in loc.characters) + { + if (character.datable.Value) + { + spouseNames.Add(character.Name); + } + } + } + } + + + } +} diff --git a/Vocalization/Vocalization/ModConfig.cs b/GeneralMods/Vocalization/Vocalization/ModConfig.cs similarity index 95% rename from Vocalization/Vocalization/ModConfig.cs rename to GeneralMods/Vocalization/Vocalization/ModConfig.cs index 1d3b9ac3..31234815 100644 --- a/Vocalization/Vocalization/ModConfig.cs +++ b/GeneralMods/Vocalization/Vocalization/ModConfig.cs @@ -1,32 +1,32 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Vocalization -{ - /// - /// The configuration file for the mod. - /// - public class ModConfig - { - /// - /// A list of all of the translations currently supported by this mod. - /// - public List translations; - /// - /// The currently selected translation to use. - /// - public string currentTranslation; - - public ModConfig() - { - translations = new List(); - translations.Add("English"); - currentTranslation = "English"; - } - - - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Vocalization +{ + /// + /// The configuration file for the mod. + /// + public class ModConfig + { + /// + /// A list of all of the translations currently supported by this mod. + /// + public List translations; + /// + /// The currently selected translation to use. + /// + public string currentTranslation; + + public ModConfig() + { + translations = new List(); + translations.Add("English"); + currentTranslation = "English"; + } + + + } +} diff --git a/Vocalization/Vocalization/Properties/AssemblyInfo.cs b/GeneralMods/Vocalization/Vocalization/Properties/AssemblyInfo.cs similarity index 97% rename from Vocalization/Vocalization/Properties/AssemblyInfo.cs rename to GeneralMods/Vocalization/Vocalization/Properties/AssemblyInfo.cs index 1218eb86..aea8f3c6 100644 --- a/Vocalization/Vocalization/Properties/AssemblyInfo.cs +++ b/GeneralMods/Vocalization/Vocalization/Properties/AssemblyInfo.cs @@ -1,36 +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("Vocalization")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Vocalization")] -[assembly: AssemblyCopyright("Copyright © 2018")] -[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("1651701c-db36-43c7-b66d-2700171dd9a9")] - -// 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")] +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("Vocalization")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Vocalization")] +[assembly: AssemblyCopyright("Copyright © 2018")] +[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("1651701c-db36-43c7-b66d-2700171dd9a9")] + +// 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/Vocalization/Vocalization/Vocalization.cs b/GeneralMods/Vocalization/Vocalization/Vocalization.cs similarity index 96% rename from Vocalization/Vocalization/Vocalization.cs rename to GeneralMods/Vocalization/Vocalization/Vocalization.cs index 7e7e0f55..1b5ba95b 100644 --- a/Vocalization/Vocalization/Vocalization.cs +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.cs @@ -204,10 +204,15 @@ namespace Vocalization private void MenuEvents_MenuClosed(object sender, StardewModdingAPI.Events.EventArgsClickableMenuClosed e) { //Clean out my previous dialogue when I close any sort of menu. - - if (String.IsNullOrEmpty(previousDialogue) || soundManager.sounds[previousDialogue]==null) return; - soundManager.stopSound(previousDialogue); - previousDialogue = ""; + try + { + soundManager.stopAllSounds(); + previousDialogue = ""; + } + catch(Exception err) + { + previousDialogue = ""; + } } /// @@ -251,7 +256,8 @@ namespace Vocalization foreach (NPC v in Game1.currentLocation.characters) { string text = (string)GetInstanceField(typeof(NPC), v, "textAboveHead"); - if (text == null) continue; + int timer = (int)GetInstanceField(typeof(NPC), v, "textAboveHeadTimer"); + if (text == null || timer<=0) continue; string currentDialogue = text; if (previousDialogue != currentDialogue) { @@ -365,6 +371,9 @@ namespace Vocalization { //Not variable messages. Aka messages that don't contain words the user can change such as farm name, farmer name etc. voice.speak(currentDialogue); + + ModMonitor.Log("SPEAK THE TELLE"); + return; } else { @@ -415,36 +424,49 @@ namespace Vocalization { var menu = (StardewValley.Menus.ShopMenu)Game1.activeClickableMenu; - string currentDialogue = menu.potraitPersonDialogue; //Check this string to the dict of voice cues + string shopDialogue = menu.potraitPersonDialogue; //Check this string to the dict of voice cues + + shopDialogue = shopDialogue.Replace(Environment.NewLine, ""); + NPC npc = menu.portraitPerson; - - previousDialogue = currentDialogue; //Update my previously read dialogue so that I only read the new string once when it appears. - ModMonitor.Log(currentDialogue); //Print out my dialogue. + + if (previousDialogue == shopDialogue) return; + previousDialogue = shopDialogue; //Update my previously read dialogue so that I only read the new string once when it appears. + ModMonitor.Log(shopDialogue); //Print out my dialogue. //Add in support for Shops - CharacterVoiceCue voice=new CharacterVoiceCue(""); - try + CharacterVoiceCue voice; + //character shops + bool f=DialogueCues.TryGetValue("Shops", out voice); + if (f == false) { - //character shops - bool f=DialogueCues.TryGetValue(Path.Combine("Shops"), out voice); - if (f == false) - { ModMonitor.Log("Can't find the dialogue for the shop: " + npc.Name); - } } - catch(Exception err) { + shopDialogue = sanitizeDialogueInGame(shopDialogue); //If contains the stuff in the else statement, change things up. + + //I have no clue why the parsing adds in an extra character sometimes but I guess I have to do this in some cases.... + if (!voice.dialogueCues.ContainsKey(shopDialogue)) + { + shopDialogue = shopDialogue.Substring(0, shopDialogue.Length - 1); } - currentDialogue = sanitizeDialogueInGame(currentDialogue); //If contains the stuff in the else statement, change things up. - if (voice.dialogueCues.ContainsKey(currentDialogue)) + + + if (voice.dialogueCues.ContainsKey(shopDialogue)) { //Not variable messages. Aka messages that don't contain words the user can change such as farm name, farmer name etc. - voice.speak(currentDialogue); + voice.speak(shopDialogue); } else { - ModMonitor.Log("New unregistered dialogue detected saying: " + currentDialogue, LogLevel.Alert); + foreach(var v in voice.dialogueCues) + { + ModMonitor.Log(v.Key + " " + v.Value); + } + + + ModMonitor.Log("New unregistered dialogue detected saying: " + shopDialogue, LogLevel.Alert); ModMonitor.Log("Make sure to add this to their respective VoiceCue.json file if you wish for this dialogue to have voice acting associated with it!", LogLevel.Alert); } @@ -663,7 +685,7 @@ namespace Vocalization } catch (Exception err) { - + ModMonitor.Log("WHY NO ADD IN???"+err.ToString()); } ///??? DO I ACTUALLY NEVER ADD IT IN??? } @@ -711,7 +733,7 @@ namespace Vocalization string cookingDialogue = splitDialogues.ElementAt(1); //If the key contains the character's name. List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(cookingDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(cookingDialogue,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -733,7 +755,7 @@ namespace Vocalization if (key != "intro") continue; //If the key contains the character's name. List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -754,7 +776,7 @@ namespace Vocalization string rawDialogue = pair.Value; List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -785,7 +807,7 @@ namespace Vocalization if (!key.Contains("TV")) continue; //If the key contains the character's name. List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { @@ -828,13 +850,14 @@ namespace Vocalization //If the key contains the character's name. List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } + continue; } //For moddablity add a generic scrape here! @@ -865,7 +888,7 @@ namespace Vocalization //If the key contains the character's name. List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -899,7 +922,7 @@ namespace Vocalization //If the key contains the character's name. List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -934,7 +957,7 @@ namespace Vocalization //If the key contains the character's name. if (!key.Contains("Event")) continue; List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -951,7 +974,7 @@ namespace Vocalization string rawDialogue = pair.Value; //If the key contains the character's name. List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -1013,7 +1036,7 @@ namespace Vocalization //If the key contains the character's name. List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -1049,7 +1072,7 @@ namespace Vocalization //If the key contains the character's name. List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -1079,7 +1102,7 @@ namespace Vocalization //If the key contains the character's name. List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -1113,9 +1136,13 @@ namespace Vocalization string rawDialogue = pair.Value; //If the key contains the character's name. - string cleanDialogue = ""; - cleanDialogue = sanitizeDialogueFromMailDictionary(rawDialogue); - cue.addDialogue(cleanDialogue, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty + List cleanDialogue = new List(); + cleanDialogue = sanitizeDialogueFromDictionaries(rawDialogue,cue); + + foreach (var v in cleanDialogue) + { + cue.addDialogue(v, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty + } } } } @@ -1158,7 +1185,7 @@ namespace Vocalization List cleanDialogues = new List(); foreach (var dia in strippedFreshQuestDialogue) { - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -1231,7 +1258,7 @@ namespace Vocalization List cleanDialogues = new List(); foreach (var dia in strippedFreshQuestDialogue) { - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -1301,7 +1328,7 @@ namespace Vocalization if (key.Contains(cue.name)) { List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -1337,7 +1364,7 @@ namespace Vocalization if (key.Contains(cue.name)) { List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -1362,7 +1389,7 @@ namespace Vocalization if (key.Contains(cue.name)) { List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -1374,7 +1401,7 @@ namespace Vocalization { string rawDialogue = pair.Value; List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -1408,7 +1435,7 @@ namespace Vocalization if (key.Contains(cue.name)) { List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -1443,7 +1470,7 @@ namespace Vocalization if (key.Contains("NPC")) { List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -1471,7 +1498,7 @@ namespace Vocalization string rawDialogue = pair.Value; //If the key contains the character's name. List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -1556,7 +1583,7 @@ namespace Vocalization /// /// /// - public static List sanitizeDialogueFromDictionaries(string dialogue) + public static List sanitizeDialogueFromDictionaries(string dialogue,CharacterVoiceCue cue) { List possibleDialogues = new List(); @@ -1661,7 +1688,7 @@ namespace Vocalization foreach(var dia in orSplit) { - if (dia.Contains("\"")) //If I can split my string do so and add all the split strings into my orSplit list. + if (dia.Contains("\"") && cue.name.StartsWith("Temp")) //If I can split my string do so and add all the split strings into my orSplit list. { List tempSplits = dia.Split('\"').ToList(); foreach (var v in tempSplits) diff --git a/Vocalization/Vocalization/Vocalization.csproj b/GeneralMods/Vocalization/Vocalization/Vocalization.csproj similarity index 90% rename from Vocalization/Vocalization/Vocalization.csproj rename to GeneralMods/Vocalization/Vocalization/Vocalization.csproj index 47f50aa5..c98332ae 100644 --- a/Vocalization/Vocalization/Vocalization.csproj +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.csproj @@ -33,11 +33,10 @@ - ..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Netcode.dll + ..\..\..\..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Netcode.dll - - False - ..\..\GeneralMods\SimpleSoundManager\bin\Release\SimpleSoundManager.dll + + ..\..\SimpleSoundManager\bin\Release\SimpleSoundManager.dll diff --git a/Vocalization/Vocalization/manifest.json b/GeneralMods/Vocalization/Vocalization/manifest.json similarity index 100% rename from Vocalization/Vocalization/manifest.json rename to GeneralMods/Vocalization/Vocalization/manifest.json diff --git a/Vocalization/Vocalization/packages.config b/GeneralMods/Vocalization/Vocalization/packages.config similarity index 91% rename from Vocalization/Vocalization/packages.config rename to GeneralMods/Vocalization/Vocalization/packages.config index 96d0f73b..33db9a9b 100644 --- a/Vocalization/Vocalization/packages.config +++ b/GeneralMods/Vocalization/Vocalization/packages.config @@ -1,4 +1,4 @@ - - - + + + \ No newline at end of file diff --git a/SimpleSoundManager/Framework/Sound.cs b/SimpleSoundManager/Framework/Sound.cs deleted file mode 100644 index 7524e046..00000000 --- a/SimpleSoundManager/Framework/Sound.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SimpleSoundManager.Framework -{ - /// - /// Interface used for common sound functionality; - /// - public interface Sound - { - /// - /// Handles playing a sound. - /// - void play(); - /// - /// Handles pausing a song. - /// - void pause(); - /// - /// Handles stopping a song. - /// - void stop(); - /// - /// Handles restarting a song. - /// - void restart(); - /// - /// Handles getting a clone of the song. - /// - /// - Sound clone(); - } -} diff --git a/SimpleSoundManager/Framework/SoundManager.cs b/SimpleSoundManager/Framework/SoundManager.cs deleted file mode 100644 index df7d79be..00000000 --- a/SimpleSoundManager/Framework/SoundManager.cs +++ /dev/null @@ -1,216 +0,0 @@ -using Microsoft.Xna.Framework.Audio; -using StardewModdingAPI; -using StardewValley; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SimpleSoundManager.Framework -{ - - /// - /// TODO: - /// Pause sounds. - /// - public class SoundManager - { - - public Dictionary sounds; - public Dictionary musicBanks; - public KeyValuePair previousSound; - - - /// - /// Constructor for this class. - /// - public SoundManager() - { - this.sounds = new Dictionary(); - this.musicBanks = new Dictionary(); - this.previousSound = new KeyValuePair("", null); - } - - /// - /// Constructor for wav files. - /// - /// - /// - public void loadWavFile(string soundName,string pathToWav) - { - WavSound wav = new WavSound(pathToWav); - this.sounds.Add(soundName,wav); - } - - /// - /// Constructor for wav files. - /// - /// - /// - /// - public void loadWavFile(IModHelper helper,string soundName,string pathToWav) - { - WavSound wav = new WavSound(helper ,pathToWav); - this.sounds.Add(soundName,wav); - } - - /// - /// Constructor for wav files. - /// - /// - /// - /// - public void loadWavFile(IModHelper helper,string songName,List pathToWav) - { - WavSound wav = new WavSound(helper,pathToWav); - this.sounds.Add(songName,wav); - } - - /// - /// Constructor for XACT files. - /// - /// - /// - /// - public void loadXACTFile(WaveBank waveBank, ISoundBank soundBank, string songName) - { - XACTSound xactSound = new XACTSound(waveBank, soundBank, songName); - this.sounds.Add(songName, xactSound); - } - - /// - /// Constructor for XACT files based on already added music packs. - /// - /// - /// - public void loadXACTFile(string pairName, string songName) - { - XACTMusicPair musicPair = getMusicPack(pairName); - if (pairName == null) - { - return; - } - loadXACTFile(musicPair.waveBank, musicPair.soundBank, songName); - } - - - /// - /// Creates a music pack pair that holds .xwb and .xsb music files. - /// - /// The mod's helper that will handle the path of the files. - /// The name of this music pack pair. - /// The relative path to the .xwb file - /// The relative path to the .xsb file - public void loadXACTMusicBank(IModHelper helper,string pairName,string wavName, string soundName) - { - this.musicBanks.Add(pairName,new XACTMusicPair(helper, wavName, soundName)); - } - - /// - /// Gets the music pack pair from the sound pool. - /// - /// - /// - public XACTMusicPair getMusicPack(string name) - { - foreach(var pack in this.musicBanks) - { - if (name == pack.Key) return pack.Value; - } - return null; - } - - /// - /// Gets a clone of the loaded sound. - /// - /// - /// - public Sound getSoundClone(string name) - { - foreach(var sound in this.sounds) - { - if (sound.Key == name) return sound.Value.clone(); - } - return null; - } - - /// - /// Returns the sound with the associated name. - /// - /// - /// - public Sound getSound(string name) - { - Sound s; - bool exists=this.sounds.TryGetValue(name,out s); - if (exists) - { - return s; - } - else - { - return null; - } - } - - /// - /// Plays the sound with the associated name. - /// - /// - public void playSound(string name) - { - Sound s; - bool exists = this.sounds.TryGetValue(name, out s); - if (exists) - { - s.play(); - previousSound = new KeyValuePair(name, s); - } - } - - /// - /// Stops the sound with the associated name. - /// - /// - public void stopSound(string name) - { - Sound s; - bool exists = this.sounds.TryGetValue(name, out s); - if (exists) - { - s.stop(); - } - } - - /// - /// Stops the previously playing sound. - /// - public void stopPreviousSound() - { - if (previousSound.Key != "") - { - previousSound.Value.stop(); - previousSound = new KeyValuePair("", null); - } - } - - /// - /// Stops the previously playing sound and plays a new sound. - /// - /// - public void swapSounds(string name) - { - if (previousSound.Key == "") - { - playSound(name); - } - else - { - stopSound(previousSound.Key); - playSound(name); - } - } - - } -} diff --git a/SimpleSoundManager/Framework/WavSound.cs b/SimpleSoundManager/Framework/WavSound.cs deleted file mode 100644 index eb3e7137..00000000 --- a/SimpleSoundManager/Framework/WavSound.cs +++ /dev/null @@ -1,237 +0,0 @@ -using Microsoft.Xna.Framework.Audio; -using SimpleSoundManager.Framework; -using StardewModdingAPI; -using StardewValley; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SimpleSoundManager.Framework -{ - public class WavSound : Sound - { - - /// - /// Used to actually play the song. - /// - DynamicSoundEffectInstance dynamicSound; - /// - /// Used to keep track of where in the song we are. - /// - int position; - /// - /// ??? - /// - int count; - /// - /// Used to store the info for the song. - /// - byte[] byteArray; - - public List sounds; - - public string path; - - - - /// - /// Get a raw disk path to the wav file. - /// - /// - public WavSound(string pathToWavFile) - { - this.path = pathToWavFile; - LoadWavFromFileToStream(); - } - - /// - /// A constructor that takes a mod helper and a relative path to a wav file. - /// - /// - /// - public WavSound(IModHelper modHelper, string pathInModDirectory) - { - string path = Path.Combine(modHelper.DirectoryPath, pathInModDirectory); - this.path = path; - } - - /// - /// Constructor that is more flexible than typing an absolute path. - /// - /// The mod helper for the mod you wish to use to load the music files from. - /// The list of folders and files that make up a complete path. - public WavSound(IModHelper modHelper, List pathPieces) - { - string s = modHelper.DirectoryPath; - foreach(var str in pathPieces) - { - s = Path.Combine(s, str); - } - this.path = s; - } - - /// - /// Loads the .wav file from disk and plays it. - /// - public void LoadWavFromFileToStream() - { - // Create a new SpriteBatch, which can be used to draw textures. - - string file = this.path; - System.IO.Stream waveFileStream = File.OpenRead(file); //TitleContainer.OpenStream(file); - - BinaryReader reader = new BinaryReader(waveFileStream); - - int chunkID = reader.ReadInt32(); - int fileSize = reader.ReadInt32(); - int riffType = reader.ReadInt32(); - int fmtID = reader.ReadInt32(); - int fmtSize = reader.ReadInt32(); - int fmtCode = reader.ReadInt16(); - int channels = reader.ReadInt16(); - int sampleRate = reader.ReadInt32(); - int fmtAvgBPS = reader.ReadInt32(); - int fmtBlockAlign = reader.ReadInt16(); - int bitDepth = reader.ReadInt16(); - - if (fmtSize == 18) - { - // Read any extra values - int fmtExtraSize = reader.ReadInt16(); - reader.ReadBytes(fmtExtraSize); - } - - int dataID = reader.ReadInt32(); - int dataSize = reader.ReadInt32(); - - byteArray = reader.ReadBytes(dataSize); - - - dynamicSound = new DynamicSoundEffectInstance(sampleRate, (AudioChannels)channels); - count = dynamicSound.GetSampleSizeInBytes(TimeSpan.FromMilliseconds(10000)); - - } - - void DynamicSound_BufferNeeded(object sender, EventArgs e) - { - try - { - dynamicSound.SubmitBuffer(byteArray, position, count); - } - catch (Exception err) - { - - } - - position += count; - if (position + count > byteArray.Length) - { - position = 0; - } - } - - /// - /// Used to pause the current song. - /// - public void pause() - { - if (dynamicSound != null) dynamicSound.Pause(); - } - - /// - /// Used to play a song. - /// - /// - public void play() - { - if (this.isPlaying() == true) return; - dynamicSound.BufferNeeded += new EventHandler(DynamicSound_BufferNeeded); - dynamicSound.Play(); - } - - - /// - /// Used to resume the currently playing song. - /// - public void resume() - { - if (dynamicSound == null) return; - dynamicSound.Resume(); - } - - /// - /// Used to stop the currently playing song. - /// - public void stop() - { - - if (dynamicSound != null) - { - dynamicSound.Stop(true); - dynamicSound.BufferNeeded -= new EventHandler(DynamicSound_BufferNeeded); - position = 0; - count = 0; - byteArray = new byte[0]; - } - } - - /// - /// Used to change from one playing song to another; - /// - /// - public void swap(string pathToNewWavFile) - { - this.stop(); - this.path = pathToNewWavFile; - this.play(); - } - - /// - /// Checks if the song is currently playing. - /// - /// - public bool isPlaying() - { - if (this.dynamicSound == null) return false; - if (this.dynamicSound.State == SoundState.Playing) return true; - else return false; - } - - /// - /// Checks if the song is currently paused. - /// - /// - public bool isPaused() - { - if (this.dynamicSound == null) return false; - if (this.dynamicSound.State == SoundState.Paused) return true; - else return false; - } - - /// - /// Checks if the song is currently stopped. - /// - /// - public bool isStopped() - { - if (this.dynamicSound == null) return false; - if (this.dynamicSound.State == SoundState.Stopped) return true; - else return false; - } - - public Sound clone() - { - return new WavSound(this.path); - } - - public void restart() - { - this.stop(); - this.play(); - } - - } -} diff --git a/SimpleSoundManager/Framework/XACTSound.cs b/SimpleSoundManager/Framework/XACTSound.cs deleted file mode 100644 index 196d34d2..00000000 --- a/SimpleSoundManager/Framework/XACTSound.cs +++ /dev/null @@ -1,134 +0,0 @@ -using Microsoft.Xna.Framework.Audio; -using StardewModdingAPI; -using StardewValley; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SimpleSoundManager.Framework -{ - public class XACTSound : Sound - { - public WaveBank waveBank; - public ISoundBank soundBank; - public string soundName; - WaveBank vanillaWaveBank; - ISoundBank vanillaSoundBank; - Cue song; - - /// - /// Make a new Sound Manager to play and manage sounds in a modded wave bank. - /// - /// The reference to the wave bank in the mod's asset folder. - /// The reference to the sound bank in the mod's asset folder. - public XACTSound(WaveBank newWaveBank, ISoundBank newSoundBank,string soundName) - { - this.waveBank = newWaveBank; - this.soundBank = newSoundBank; - - vanillaSoundBank = Game1.soundBank; - vanillaWaveBank = Game1.waveBank; - this.soundName = soundName; - song = this.soundBank.GetCue(this.soundName); - } - - /// - /// Play a sound from the mod's wave bank. - /// - /// The name of the sound in the mod's wave bank. This will fail if the sound doesn't exists. This is also case sensitive. - public void play(string soundName) - { - Game1.waveBank = this.waveBank; - Game1.soundBank = this.soundBank; - - if (this.song == null) return; - - this.song.Play(); - - Game1.waveBank = this.vanillaWaveBank; - Game1.soundBank = this.vanillaSoundBank; - } - - /// - /// Pauses the first instance of this sound. - /// - /// - public void pause(string soundName) - { - if (this.song == null) return; - this.song.Pause(); - } - - /// - /// Resume the first instance of the sound that has this name. - /// - public void resume(string soundName) - { - if (this.song == null) return; - this.song.Resume(); - } - - - /// - /// Stop the first instance of the sound that has this name. - /// - /// - public void stop(string soundName) - { - if (this.song == null) return; - this.song.Stop(AudioStopOptions.Immediate); - } - - /// - /// Resumes a paused song. - /// - public void resume() - { - this.resume(soundName); - } - - /// - /// Plays this song. - /// - public void play() - { - this.play(this.soundName); - } - - /// - /// Pauses this song. - /// - public void pause() - { - this.pause(this.soundName); - } - - /// - /// Stops this somg. - /// - public void stop() - { - this.stop(this.soundName); - } - - /// - /// Restarts this song. - /// - public void restart() - { - this.stop(); - this.play(); - } - - /// - /// Gets a clone of this song. - /// - /// - public Sound clone() - { - return new XACTSound(this.waveBank, this.soundBank, this.soundName); - } - } -} diff --git a/SimpleSoundManager/Framework/XactMusicPair.cs b/SimpleSoundManager/Framework/XactMusicPair.cs deleted file mode 100644 index 970f9fbe..00000000 --- a/SimpleSoundManager/Framework/XactMusicPair.cs +++ /dev/null @@ -1,34 +0,0 @@ -using Microsoft.Xna.Framework.Audio; -using StardewModdingAPI; -using StardewValley; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SimpleSoundManager.Framework -{ - public class XACTMusicPair - { - public WaveBank waveBank; - public ISoundBank soundBank; - - /// - /// Create a xwb and xsb music pack pair. - /// - /// The mod helper from the mod that will handle loading in the file. - /// A relative path to the .xwb file in the mod helper's mod directory. - /// A relative path to the .xsb file in the mod helper's mod directory. - public XACTMusicPair(IModHelper helper,string wavBankPath, string soundBankPath) - { - wavBankPath = Path.Combine(helper.DirectoryPath, wavBankPath); - soundBankPath = Path.Combine(helper.DirectoryPath, soundBankPath); - - - waveBank = new WaveBank(Game1.audioEngine, wavBankPath); - soundBank = new SoundBankWrapper(new SoundBank(Game1.audioEngine, soundBankPath)); - } - } -} diff --git a/SimpleSoundManager/Properties/AssemblyInfo.cs b/SimpleSoundManager/Properties/AssemblyInfo.cs deleted file mode 100644 index 58a4d762..00000000 --- a/SimpleSoundManager/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -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("SimpleSoundManager")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("SimpleSoundManager")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[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("7b1e9a54-ed9e-47aa-bbaa-98a6e7cb527a")] - -// 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/SimpleSoundManager/README.md b/SimpleSoundManager/README.md deleted file mode 100644 index 72949ec6..00000000 --- a/SimpleSoundManager/README.md +++ /dev/null @@ -1,24 +0,0 @@ -**SimpleSoundManager** is a [Stardew Valley](http://stardewvalley.net/) mod which lets SMAPI mods -use custom wave/sound banks for their mods. This allows for things such as playing music/sounds at -a time of day, when an object is interacted with, etc. - -Compatible with Stardew Valley 1.2+ on Linux, Mac, and Windows. - -## Installation -1. [Install the latest version of SMAPI](https://github.com/Pathoschild/SMAPI/releases). -2. Install [this mod from Nexus mods](https://www.nexusmods.com/stardewvalley/mods/1410). -3. Run the game using SMAPI. - -## Usage -1. Download this mod and reference it when making your mod. -2. Create new wave/sound banks using XACT. -3. Create a new SoundManager in your mod. -4. Play sounds to your heart's content. - -## Versions -1.0: -* Initial release. - -1.0.1: -* Enabled update checks in SMAPI 2.0+. -* Fixed compatibility with SMAPI 2.0. diff --git a/SimpleSoundManager/SimpleSoundManager.csproj b/SimpleSoundManager/SimpleSoundManager.csproj deleted file mode 100644 index 9e859b3f..00000000 --- a/SimpleSoundManager/SimpleSoundManager.csproj +++ /dev/null @@ -1,100 +0,0 @@ - - - - - Debug - AnyCPU - {7B1E9A54-ED9E-47AA-BBAA-98A6E7CB527A} - Library - Properties - SimpleSoundManager - SimpleSoundManager - v4.5 - 512 - - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - bin\x86\ - TRACE - true - pdbonly - AnyCPU - prompt - MinimumRecommendedRules.ruleset - - - true - bin\x86\Debug\ - DEBUG;TRACE - full - x86 - prompt - MinimumRecommendedRules.ruleset - - - bin\x86\Release\ - TRACE - true - pdbonly - x86 - prompt - MinimumRecommendedRules.ruleset - - - bin\x86\x86\ - TRACE - true - pdbonly - x86 - prompt - MinimumRecommendedRules.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - \ No newline at end of file diff --git a/SimpleSoundManager/SimpleSoundManager.csproj.user b/SimpleSoundManager/SimpleSoundManager.csproj.user deleted file mode 100644 index 2f196a36..00000000 --- a/SimpleSoundManager/SimpleSoundManager.csproj.user +++ /dev/null @@ -1,6 +0,0 @@ - - - - ShowAllFiles - - \ No newline at end of file diff --git a/SimpleSoundManager/SimpleSoundManagerMod.cs b/SimpleSoundManager/SimpleSoundManagerMod.cs deleted file mode 100644 index 3e4eb435..00000000 --- a/SimpleSoundManager/SimpleSoundManagerMod.cs +++ /dev/null @@ -1,14 +0,0 @@ -using StardewModdingAPI; - -namespace SimpleSoundManager -{ - public class SimpleSoundManagerMod : Mod - { - internal static IModHelper ModHelper; - - public override void Entry(IModHelper helper) - { - ModHelper = helper; - } - } -} diff --git a/SimpleSoundManager/bin/Debug/SimpleSoundManager 2.0.zip b/SimpleSoundManager/bin/Debug/SimpleSoundManager 2.0.zip deleted file mode 100644 index ab56470caf277b99e5e8ea6d4d9dcff86816a300..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11561 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 diff --git a/SimpleSoundManager/bin/Debug/SimpleSoundManager.dll b/SimpleSoundManager/bin/Debug/SimpleSoundManager.dll deleted file mode 100644 index ab698f9605f5995e5082f8791ebf503f28fe2a28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10240 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 Rc>niP-T21q{e-f0`acQ5z{>yt diff --git a/SimpleSoundManager/obj/Debug/SimpleSoundManager.csproj.CoreCompileInputs.cache b/SimpleSoundManager/obj/Debug/SimpleSoundManager.csproj.CoreCompileInputs.cache deleted file mode 100644 index 604b2e56..00000000 --- a/SimpleSoundManager/obj/Debug/SimpleSoundManager.csproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -1ef37e74c2d3c9be63fcc5fc24c5b0b4a4b35324 diff --git a/SimpleSoundManager/obj/Debug/SimpleSoundManager.csproj.FileListAbsolute.txt b/SimpleSoundManager/obj/Debug/SimpleSoundManager.csproj.FileListAbsolute.txt deleted file mode 100644 index e3de2ab3..00000000 --- a/SimpleSoundManager/obj/Debug/SimpleSoundManager.csproj.FileListAbsolute.txt +++ /dev/null @@ -1,5 +0,0 @@ -C:\Users\iD Student\Desktop\Stardew\Stardew_Valley_Mods-Development\GeneralMods\SimpleSoundManager\obj\Debug\SimpleSoundManager.csproj.CoreCompileInputs.cache -C:\Users\iD Student\Desktop\Stardew\Stardew_Valley_Mods-Development\GeneralMods\SimpleSoundManager\bin\Debug\SimpleSoundManager.dll -C:\Users\iD Student\Desktop\Stardew\Stardew_Valley_Mods-Development\GeneralMods\SimpleSoundManager\bin\Debug\SimpleSoundManager.pdb -C:\Users\iD Student\Desktop\Stardew\Stardew_Valley_Mods-Development\GeneralMods\SimpleSoundManager\obj\Debug\SimpleSoundManager.dll -C:\Users\iD Student\Desktop\Stardew\Stardew_Valley_Mods-Development\GeneralMods\SimpleSoundManager\obj\Debug\SimpleSoundManager.pdb diff --git a/SimpleSoundManager/obj/Debug/SimpleSoundManager.dll b/SimpleSoundManager/obj/Debug/SimpleSoundManager.dll deleted file mode 100644 index ab698f9605f5995e5082f8791ebf503f28fe2a28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10240 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 - - - \ No newline at end of file diff --git a/Vocalization/Vocalization/Vocalization.csproj.user b/Vocalization/Vocalization/Vocalization.csproj.user deleted file mode 100644 index 2f196a36..00000000 --- a/Vocalization/Vocalization/Vocalization.csproj.user +++ /dev/null @@ -1,6 +0,0 @@ - - - - ShowAllFiles - - \ No newline at end of file diff --git a/Vocalization/Vocalization/bin/Debug/Netcode.dll b/Vocalization/Vocalization/bin/Debug/Netcode.dll deleted file mode 100644 index d3ab5f0e7de37fb2567343b1390b28fe124d7477..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76800 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 B4^IF9 diff --git a/Vocalization/Vocalization/bin/Debug/SimpleSoundManager.pdb b/Vocalization/Vocalization/bin/Debug/SimpleSoundManager.pdb deleted file mode 100644 index d1885aee3abce9ad6c7ad9597f055d3c7e7a7743..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34304 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 UK(7aSJ<#icUJvwo;HW+D|Gr-I00000 diff --git a/Vocalization/Vocalization/bin/Debug/Vocalization 0.0.1.zip b/Vocalization/Vocalization/bin/Debug/Vocalization 0.0.1.zip deleted file mode 100644 index 842a3e968856e555c6a0c1624157b27e69b97ee6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81988 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 diff --git a/Vocalization/Vocalization/bin/Debug/Vocalization.dll b/Vocalization/Vocalization/bin/Debug/Vocalization.dll deleted file mode 100644 index 6b6913d9e5385714113f8f987c4a7b4617cf583e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36864 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 diff --git a/Vocalization/Vocalization/bin/Debug/Vocalization.pdb b/Vocalization/Vocalization/bin/Debug/Vocalization.pdb deleted file mode 100644 index f07ed38078404d1214f438846bede92b0ce20281..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71168 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 diff --git a/Vocalization/Vocalization/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Vocalization/Vocalization/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100644 index 512a1f1b46fad3b1b100c1e504c7e6a1a0eb28e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8072 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 Q;tP~JjyjI47Fgr|0Zco@h5!Hn diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.dll b/Vocalization/Vocalization/obj/Debug/Vocalization.dll deleted file mode 100644 index 6b6913d9e5385714113f8f987c4a7b4617cf583e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36864 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 diff --git a/Vocalization/Vocalization/obj/Debug/Vocalization.pdb b/Vocalization/Vocalization/obj/Debug/Vocalization.pdb deleted file mode 100644 index f07ed38078404d1214f438846bede92b0ce20281..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71168 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 diff --git a/Vocalization/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/Pathoschild.Stardew.ModBuildConfig.2.0.2.nupkg b/Vocalization/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/Pathoschild.Stardew.ModBuildConfig.2.0.2.nupkg deleted file mode 100644 index 1b4cc5db0b96b50cac07e5e5af22c042ab1d514c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11531 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 MRrP(o^76BRNFMERJ5 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 diff --git a/Vocalization/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/Pathoschild.Stardew.ModBuildConfig.targets b/Vocalization/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/Pathoschild.Stardew.ModBuildConfig.targets deleted file mode 100644 index b49d646d..00000000 --- a/Vocalization/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/Pathoschild.Stardew.ModBuildConfig.targets +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - $(DeployModFolderName) - $(DeployModZipTo) - - - $(MSBuildProjectName) - $(TargetDir) - True - True - - - - - - - - $(HOME)/GOG Games/Stardew Valley/game - $(HOME)/.local/share/Steam/steamapps/common/Stardew Valley - - - /Applications/Stardew Valley.app/Contents/MacOS - $(HOME)/Library/Application Support/Steam/steamapps/common/Stardew Valley/Contents/MacOS - - - - - C:\Program Files (x86)\GalaxyClient\Games\Stardew Valley - C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley - $([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\GOG.com\Games\1453375253', 'PATH', null, RegistryView.Registry32)) - $([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 413150', 'InstallLocation', null, RegistryView.Registry64, RegistryView.Registry32)) - - - - - - - - - - - - false - - - false - - - false - - - false - - - $(GamePath)\Stardew Valley.exe - false - - - $(GamePath)\StardewModdingAPI.exe - false - - - $(GamePath)\xTile.dll - false - False - - - - - - Program - $(GamePath)\StardewModdingAPI.exe - $(GamePath) - - - - - - - $(GamePath)\MonoGame.Framework.dll - false - False - - - $(GamePath)\StardewValley.exe - false - - - $(GamePath)\StardewModdingAPI.exe - false - - - $(GamePath)\xTile.dll - false - - - - - - - - - - - - - - - - - - - - - - diff --git a/Vocalization/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/StardewModdingAPI.ModBuildConfig.dll b/Vocalization/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/StardewModdingAPI.ModBuildConfig.dll deleted file mode 100644 index e8e4c16849c86c5aeec79ea2d99a46d032bef259..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 From 5d35edea2be09d264e5b79eb85ac53442c4638fd Mon Sep 17 00:00:00 2001 From: Date: Thu, 16 Aug 2018 11:50:50 -0700 Subject: [PATCH 045/110] Volume options, dialogue complexity options, and speech bubble fixes? --- .../SimpleSoundManager/Framework/Sound.cs | 2 + .../Framework/SoundManager.cs | 25 +++++- .../SimpleSoundManager/Framework/WavSound.cs | 16 +++- .../SimpleSoundManager/Framework/XACTSound.cs | 8 ++ .../Framework/CharacterVoiceCue.cs | 20 ++--- .../Framework/VoiceAudioOptions.cs | 51 ++++++++++++ .../Vocalization/Vocalization/ModConfig.cs | 38 +++++++++ .../Vocalization/Vocalization/Vocalization.cs | 80 ++++++++++++------- .../Vocalization/Vocalization.csproj | 1 + 9 files changed, 199 insertions(+), 42 deletions(-) create mode 100644 GeneralMods/Vocalization/Vocalization/Framework/VoiceAudioOptions.cs diff --git a/GeneralMods/SimpleSoundManager/Framework/Sound.cs b/GeneralMods/SimpleSoundManager/Framework/Sound.cs index 03fa9081..3f3d5b44 100644 --- a/GeneralMods/SimpleSoundManager/Framework/Sound.cs +++ b/GeneralMods/SimpleSoundManager/Framework/Sound.cs @@ -15,6 +15,8 @@ namespace SimpleSoundManager.Framework /// Handles playing a sound. /// void play(); + + void play(float volume); /// /// Handles pausing a song. /// diff --git a/GeneralMods/SimpleSoundManager/Framework/SoundManager.cs b/GeneralMods/SimpleSoundManager/Framework/SoundManager.cs index 71324687..a9ce5a58 100644 --- a/GeneralMods/SimpleSoundManager/Framework/SoundManager.cs +++ b/GeneralMods/SimpleSoundManager/Framework/SoundManager.cs @@ -15,6 +15,7 @@ namespace SimpleSoundManager.Framework public Dictionary sounds; public Dictionary musicBanks; + public float volume; public List currentlyPlayingSounds = new List(); /// @@ -25,6 +26,7 @@ namespace SimpleSoundManager.Framework this.sounds = new Dictionary(); this.musicBanks = new Dictionary(); currentlyPlayingSounds = new List(); + this.volume = 1.0f; } /// @@ -167,7 +169,28 @@ namespace SimpleSoundManager.Framework { SimpleSoundManagerMod.ModMonitor.Log("Time to play sound: " + soundName); var s=getSoundClone(soundName); - s.play(); + s.play(this.volume); + this.currentlyPlayingSounds.Add(s); + break; + } + } + } + + /// + /// Play the sound with the given name and volume. + /// + /// + /// + public void playSound(string soundName,float volume=1.0f) + { + SimpleSoundManagerMod.ModMonitor.Log("Trying to play sound: " + soundName); + foreach (var sound in this.sounds) + { + if (sound.Key == soundName) + { + SimpleSoundManagerMod.ModMonitor.Log("Time to play sound: " + soundName); + var s = getSoundClone(soundName); + s.play(volume); this.currentlyPlayingSounds.Add(s); break; } diff --git a/GeneralMods/SimpleSoundManager/Framework/WavSound.cs b/GeneralMods/SimpleSoundManager/Framework/WavSound.cs index 18db692b..6926b528 100644 --- a/GeneralMods/SimpleSoundManager/Framework/WavSound.cs +++ b/GeneralMods/SimpleSoundManager/Framework/WavSound.cs @@ -122,7 +122,7 @@ namespace SimpleSoundManager count = byteArray.Length;//dynamicSound.GetSampleSizeInBytes(TimeSpan.FromMilliseconds(1000)); dynamicSound.BufferNeeded += new EventHandler(DynamicSound_BufferNeeded); - + } void DynamicSound_BufferNeeded(object sender, EventArgs e) @@ -167,7 +167,19 @@ namespace SimpleSoundManager { if (this.isPlaying() == true) return; LoadWavFromFileToStream(); - SimpleSoundManagerMod.ModMonitor.Log("OK NOW WE ACTUALLY PLAY THE SONG"); + dynamicSound.Play(); + } + + /// + /// Used to play a song. + /// + /// + /// How lound the sound is when playing. 0~1.0f + public void play(float volume) + { + if (this.isPlaying() == true) return; + LoadWavFromFileToStream(); + dynamicSound.Volume = volume; dynamicSound.Play(); } diff --git a/GeneralMods/SimpleSoundManager/Framework/XACTSound.cs b/GeneralMods/SimpleSoundManager/Framework/XACTSound.cs index 47f6c8f6..b3bfad14 100644 --- a/GeneralMods/SimpleSoundManager/Framework/XACTSound.cs +++ b/GeneralMods/SimpleSoundManager/Framework/XACTSound.cs @@ -97,6 +97,14 @@ namespace SimpleSoundManager.Framework this.play(this.soundName); } + /// + /// Plays this song. + /// + public void play(float volume) + { + this.play(this.soundName); + } + /// /// Pauses this song. /// diff --git a/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs b/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs index efb2cdd5..c78e9e7b 100644 --- a/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs @@ -36,7 +36,7 @@ namespace Vocalization.Framework /// /// A dictionary of dialogue strings that correspond to audio files. /// - public Dictionary dialogueCues; + public Dictionary dialogueCues; /// @@ -46,7 +46,7 @@ namespace Vocalization.Framework public CharacterVoiceCue(string name) { this.name = name; - this.dialogueCues = new Dictionary(); + this.dialogueCues = new Dictionary(); this.stringsFileNames = new List(); this.dialogueFileNames = new List(); this.dataFileNames = new List(); @@ -58,12 +58,12 @@ namespace Vocalization.Framework /// The current dialogue string to play audio for. public void speak(string dialogueString) { - string voiceFileName = ""; + VoiceAudioOptions voiceFileName =new VoiceAudioOptions(); bool exists = dialogueCues.TryGetValue(dialogueString, out voiceFileName); if (exists) { Vocalization.soundManager.stopAllSounds(); - Vocalization.soundManager.playSound(voiceFileName); + Vocalization.soundManager.playSound(voiceFileName.getAudioClip()); } else { @@ -72,7 +72,7 @@ namespace Vocalization.Framework } } - public void addDialogue(string key, string value) + public void addDialogue(string key, VoiceAudioOptions value) { if (dialogueCues.ContainsKey(key)) { @@ -98,7 +98,7 @@ namespace Vocalization.Framework else if (name == "Shops") { stringsFileNames.Add("StringsFromCSFiles.xnb"); - this.addDialogue("Welcome to Pierre's! Need some supplies?", ""); + this.addDialogue("Welcome to Pierre's! Need some supplies?", new VoiceAudioOptions()); } else if (name == "ExtraDialogue") { @@ -174,7 +174,7 @@ namespace Vocalization.Framework List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence,this); foreach(var cleanSentence in clean) { - this.dialogueCues.Add(cleanSentence, ""); + this.dialogueCues.Add(cleanSentence, new VoiceAudioOptions()); } } @@ -194,7 +194,7 @@ namespace Vocalization.Framework List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence,this); foreach (var cleanSentence in clean) { - this.dialogueCues.Add(cleanSentence, ""); + this.dialogueCues.Add(cleanSentence, new VoiceAudioOptions()); } } @@ -212,7 +212,7 @@ namespace Vocalization.Framework List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence,this); foreach (var cleanSentence in clean) { - this.dialogueCues.Add(cleanSentence, ""); + this.dialogueCues.Add(cleanSentence, new VoiceAudioOptions()); } } } @@ -240,7 +240,7 @@ namespace Vocalization.Framework { try { - this.dialogueCues.Add(cleanSentence, ""); + this.dialogueCues.Add(cleanSentence, new VoiceAudioOptions()); } catch (Exception err) { diff --git a/GeneralMods/Vocalization/Vocalization/Framework/VoiceAudioOptions.cs b/GeneralMods/Vocalization/Vocalization/Framework/VoiceAudioOptions.cs new file mode 100644 index 00000000..cf2472f0 --- /dev/null +++ b/GeneralMods/Vocalization/Vocalization/Framework/VoiceAudioOptions.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Vocalization.Framework +{ + /// + /// Deals with determining what mode should play at the current moment. + /// + public class VoiceAudioOptions + { + /// + /// The audio clip that plays when the current voice mode is "Simple". + /// + public string simple; + + /// + /// The audio clip that plays when the current voice mode is "Full". + /// + public string full; + + /// + /// The audio clip that plays when the current voice mode is "HeartEvents". + /// + public string heartEvents; + + /// + /// The audio clip that plays when the current voice mode is "SimpleAndHeartEvents". + /// + public string simpleAndHeartEvents; + + public VoiceAudioOptions() + { + simple = ""; + full = ""; + heartEvents = ""; + simpleAndHeartEvents = ""; + } + + public string getAudioClip() + { + if (Vocalization.config.currentMode == "Simple") return simple; + if (Vocalization.config.currentMode == "Full") return full; + if (Vocalization.config.currentMode == "HeartEvents") return heartEvents; + if (Vocalization.config.currentMode == "SimpleAndHeartEvents") return simpleAndHeartEvents; + return ""; //The current mode must not have been valid for some reason??? + } + } +} diff --git a/GeneralMods/Vocalization/Vocalization/ModConfig.cs b/GeneralMods/Vocalization/Vocalization/ModConfig.cs index 31234815..73654972 100644 --- a/GeneralMods/Vocalization/Vocalization/ModConfig.cs +++ b/GeneralMods/Vocalization/Vocalization/ModConfig.cs @@ -20,11 +20,49 @@ namespace Vocalization /// public string currentTranslation; + /// + /// Keeps track of the voice modes for determining how much audio is played. + /// + public List modes; + + /// + /// The curent mode for the mod. + /// + public string currentMode; + + /// + /// The volume at which the sound for voices is played at. + /// + public float voiceVolume; + public ModConfig() { translations = new List(); + modes = new List(); + + modes.Add("Simple"); + modes.Add("Full"); + modes.Add("HeartEvents"); + modes.Add("SimpleAndHeartEvents"); + currentMode = "Full"; + + translations.Add("English"); currentTranslation = "English"; + + this.voiceVolume = 1.0f; + } + + /// + /// Validates + /// + public void verifyValidMode() + { + if (!modes.Contains(currentMode)) + { + Vocalization.ModMonitor.Log("Invalid configuration: " + currentMode + ". Changing to Full voiced mode."); + currentMode = "Full"; + } } diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.cs b/GeneralMods/Vocalization/Vocalization/Vocalization.cs index 1b5ba95b..5be98cdc 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.cs +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.cs @@ -172,7 +172,9 @@ namespace Vocalization public static ModConfig config; - + + public List onScreenSpeechBubbleDialogues; + /// /// A dictionary that keeps track of all of the npcs whom have voice acting for their dialogue. /// @@ -188,12 +190,16 @@ namespace Vocalization DialogueCues = new Dictionary(); replacementStrings = new ReplacementStrings(); + onScreenSpeechBubbleDialogues = new List(); + previousDialogue = ""; soundManager = new SimpleSoundManager.Framework.SoundManager(); - config = new ModConfig(); - ModHelper.ReadConfig(); + config = ModHelper.ReadConfig(); + + config.verifyValidMode(); //Make sure the current mode is valid. + soundManager.volume = config.voiceVolume; //Set the volume for voices. } /// @@ -257,9 +263,12 @@ namespace Vocalization { string text = (string)GetInstanceField(typeof(NPC), v, "textAboveHead"); int timer = (int)GetInstanceField(typeof(NPC), v, "textAboveHeadTimer"); - if (text == null || timer<=0) continue; + if (text == null) continue; string currentDialogue = text; - if (previousDialogue != currentDialogue) + + if (onScreenSpeechBubbleDialogues.Contains(currentDialogue) && timer > 0) continue; //If I have already added this dialogue and the timer has not run out, do nothing. + + if (!onScreenSpeechBubbleDialogues.Contains(currentDialogue) && timer>0) //If I have not added this dialogue and the timer has not run out, add it. { List tries = new List(); tries.Add("SpeechBubbles"); @@ -272,6 +281,8 @@ namespace Vocalization { //Not variable messages. Aka messages that don't contain words the user can change such as farm name, farmer name etc. voice.speak(currentDialogue); + onScreenSpeechBubbleDialogues.Add(currentDialogue); + return; } else { @@ -281,6 +292,17 @@ namespace Vocalization } } } + else + { + if (timer <= 0 && onScreenSpeechBubbleDialogues.Contains(currentDialogue)) //If the timer has run out and I still contain the dialogue, remove it. + { + onScreenSpeechBubbleDialogues.Remove(currentDialogue); + } + if(timer<=0 && !onScreenSpeechBubbleDialogues.Contains(currentDialogue)) //If the timer has run out and I no longer contain the dialogue, continue on. + { + continue; + } + } } } } @@ -736,7 +758,7 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(cookingDialogue,cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } @@ -758,7 +780,7 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } @@ -779,7 +801,7 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } @@ -812,7 +834,7 @@ namespace Vocalization foreach (var str in cleanDialogues) { string ahh = sanitizeDialogueFromMailDictionary(str); - cue.addDialogue(ahh, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(ahh, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } @@ -853,7 +875,7 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } @@ -891,7 +913,7 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } @@ -925,7 +947,7 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } @@ -960,7 +982,7 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } } @@ -977,7 +999,7 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } } @@ -1007,7 +1029,7 @@ namespace Vocalization string cleanDialogue = ""; cleanDialogue = sanitizeDialogueFromMailDictionary(rawDialogue); - cue.addDialogue(cleanDialogue, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty + cue.addDialogue(cleanDialogue, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty } } } @@ -1039,7 +1061,7 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } @@ -1075,7 +1097,7 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } @@ -1105,7 +1127,7 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } @@ -1141,7 +1163,7 @@ namespace Vocalization foreach (var v in cleanDialogue) { - cue.addDialogue(v, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty + cue.addDialogue(v, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty } } } @@ -1188,7 +1210,7 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } } @@ -1261,7 +1283,7 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } } @@ -1290,7 +1312,7 @@ namespace Vocalization string key = pair.Key; string rawDialogue = pair.Value; string cleanString = sanitizeDialogueFromSpeechBubblesDictionary(rawDialogue); - cue.addDialogue(cleanString, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(cleanString, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } continue; } @@ -1331,7 +1353,7 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } } @@ -1367,7 +1389,7 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } } @@ -1392,7 +1414,7 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } } @@ -1404,7 +1426,7 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } } @@ -1438,7 +1460,7 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } } @@ -1473,7 +1495,7 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } } @@ -1501,7 +1523,7 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, ""); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } } diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.csproj b/GeneralMods/Vocalization/Vocalization/Vocalization.csproj index c98332ae..c2f392e1 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.csproj +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.csproj @@ -50,6 +50,7 @@ + From 5852fc2ea0c6ae319666b2921d24654db3287bcd Mon Sep 17 00:00:00 2001 From: Date: Thu, 16 Aug 2018 17:32:40 -0700 Subject: [PATCH 046/110] Initialized a better data scrape for speech bubbles. --- .../Vocalization/Vocalization/Vocalization.cs | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.cs b/GeneralMods/Vocalization/Vocalization/Vocalization.cs index 5be98cdc..d67cf612 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.cs +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.cs @@ -156,6 +156,8 @@ namespace Vocalization /// public static string previousDialogue; + List characterDialoguePaths = new List(); + /// /// Simple Sound Manager class that handles playing and stoping dialogue. /// @@ -510,7 +512,7 @@ namespace Vocalization VoicePath = voicePath; //Set a static reference to my voice files directory. - List characterDialoguePaths = new List(); + //Get a list of all characters in the game and make voice directories for them in each supported translation of the mod. foreach (var loc in Game1.locations) @@ -1293,7 +1295,7 @@ namespace Vocalization else if (cue.name == "SpeechBubbles") { - foreach (var fileName in cue.dataFileNames) + foreach (var fileName in cue.stringsFileNames) { ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); string dialoguePath2 = Path.Combine(stringsPath, fileName); @@ -1316,6 +1318,35 @@ namespace Vocalization } continue; } + + string basePath = ModHelper.DirectoryPath; + string contentPath = Path.Combine(basePath, "Content"); + string audioPath = Path.Combine(contentPath, "Audio"); + string voicePath = Path.Combine(audioPath, "VoiceFiles"); + string[] dirs = Directory.GetDirectories(Path.Combine(voicePath,"English")); + //Some additional scraping to put together better options for speech bubbles. + foreach (var v in dirs) + { + string name = Path.GetFileName(v); + cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4068", (object)name), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4065") + ", " + Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4066", (object)name), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4071", (object)name), new VoiceAudioOptions()); + } + + cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4060"), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4072"), new VoiceAudioOptions()); + + cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4063"), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4064"), new VoiceAudioOptions()); + + cue.addDialogue("Hey it's farmer, " + replacementStrings.farmerName,new VoiceAudioOptions()); + + cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4062"), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4061"), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4060"), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4059"), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4058"), new VoiceAudioOptions()); + } From 14b8166ec5e418f83c4b08d4d2641a81e4f02dce Mon Sep 17 00:00:00 2001 From: Date: Fri, 17 Aug 2018 11:23:08 -0700 Subject: [PATCH 047/110] Better scrape for NPCs and Speech Bubbles. Also fixed NPCGiftTastes and Quests not being scraped. --- .../Framework/CharacterVoiceCue.cs | 8 +- .../Vocalization/Vocalization/Vocalization.cs | 141 ++++++++++++++---- 2 files changed, 121 insertions(+), 28 deletions(-) diff --git a/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs b/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs index c78e9e7b..e8343446 100644 --- a/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs @@ -122,6 +122,7 @@ namespace Vocalization.Framework else if (name == "Characters") { stringsFileNames.Add("Characters.xnb"); + stringsFileNames.Add("StringsFromCSFiles.xnb"); } else if (name == "Notes") { @@ -133,7 +134,7 @@ namespace Vocalization.Framework stringsFileNames.Add("StringsFromCSFiles.xnb"); } - else if (name == "GiftTastes") + else if (name == "NPCGiftTastes") { dataFileNames.Add("NPCGiftTastes.xnb"); } @@ -143,6 +144,11 @@ namespace Vocalization.Framework stringsFileNames.Add("SpeechBubbles.xnb"); } + else if (name == "Quests") + { + dataFileNames.Add("Quests.xnb"); + } + else if (name == "Temp") { Vocalization.ModMonitor.Log("Scraping dialogue file: Temp.xnb", StardewModdingAPI.LogLevel.Debug); diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.cs b/GeneralMods/Vocalization/Vocalization/Vocalization.cs index d67cf612..62430177 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.cs +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.cs @@ -1069,6 +1069,14 @@ namespace Vocalization } continue; } + + if (fileName.Contains("StringsFromCSFiles")) + { + //do nothing.....for now..... + //FORTUNE TELLER DIALOGUE SCRAPE GOES HERE!!!! + } + + //!!!!!!!!!!!!If I ever want to make this moddable add a generic scrape here. } } @@ -1178,30 +1186,33 @@ namespace Vocalization foreach (var fileName in cue.dataFileNames) { ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); - string dialoguePath2 = Path.Combine(stringsPath, fileName); + string dialoguePath2 = Path.Combine(dataPath, fileName); string root = Game1.content.RootDirectory;///////USE THIS TO CHECK FOR EXISTENCE!!!!! if (!File.Exists(Path.Combine(root, dialoguePath2))) { ModMonitor.Log("Dialogue file not found for:" + fileName + ". This might not necessarily be a mistake just a safety check."); continue; //If the file is not found for some reason... } - var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); + var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); //Scrape the whole dictionary looking for the character's name. - foreach (KeyValuePair pair in DialogueDict) + foreach (KeyValuePair pair in DialogueDict) { //Get the key in the dictionary - string key = pair.Key; + string key = pair.Key.ToString(); string rawDialogue = pair.Value; //If the key contains the character's name. - List strippedRawQuestDialogue = new List(); + ModMonitor.Log(rawDialogue); + + int count = rawDialogue.Split('/').Length-1; + string[] strippedRawQuestDialogue = new string[count]; List strippedFreshQuestDialogue = new List(); - strippedRawQuestDialogue = rawDialogue.Split('/').ToList(); + strippedRawQuestDialogue = rawDialogue.Split('/'); string prompt = strippedRawQuestDialogue.ElementAt(2); - string response = strippedRawQuestDialogue.ElementAt(strippedRawQuestDialogue.Count - 1); + string response = strippedRawQuestDialogue.ElementAt(strippedRawQuestDialogue.Length - 1); strippedFreshQuestDialogue.Add(prompt); - if (response != "true" || response != "false") + if (response != "true" && response != "false") { strippedFreshQuestDialogue.Add(response); } @@ -1209,7 +1220,7 @@ namespace Vocalization List cleanDialogues = new List(); foreach (var dia in strippedFreshQuestDialogue) { - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); + cleanDialogues = sanitizeDialogueFromDictionaries(dia,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -1222,12 +1233,13 @@ namespace Vocalization } } + //ADD THIS TO THE ACTUAL NPC???? else if (cue.name == "NPCGiftTastes") { foreach (var fileName in cue.dataFileNames) { ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); - string dialoguePath2 = Path.Combine(stringsPath, fileName); + string dialoguePath2 = Path.Combine(dataPath, fileName); string root = Game1.content.RootDirectory;///////USE THIS TO CHECK FOR EXISTENCE!!!!! if (!File.Exists(Path.Combine(root, dialoguePath2))) { @@ -1263,9 +1275,16 @@ namespace Vocalization if (ignore) continue; - List strippedRawQuestDialogue = new List(); - List strippedFreshQuestDialogue = new List(); - strippedRawQuestDialogue = rawDialogue.Split('/').ToList(); + string[]strippedRawQuestDialogue = new string[20]; + ListstrippedFreshQuestDialogue = new List(); + ModMonitor.Log(rawDialogue); + strippedRawQuestDialogue = rawDialogue.Split(new string[] {"/" },StringSplitOptions.None); + + foreach(var v in strippedRawQuestDialogue) + { + ModMonitor.Log("I AM SO CONFUSED: " + v); + } + string prompt1 = strippedRawQuestDialogue.ElementAt(0); string prompt2 = strippedRawQuestDialogue.ElementAt(2); @@ -1282,7 +1301,7 @@ namespace Vocalization List cleanDialogues = new List(); foreach (var dia in strippedFreshQuestDialogue) { - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); + cleanDialogues = sanitizeDialogueFromDictionaries(dia,cue); foreach (var str in cleanDialogues) { cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. @@ -1328,24 +1347,24 @@ namespace Vocalization foreach (var v in dirs) { string name = Path.GetFileName(v); - cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4068", (object)name), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4065") + ", " + Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4066", (object)name), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4071", (object)name), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4068"), (object)name), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4065")) + ", " + Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4066"), (object)name), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4071"), (object)name), new VoiceAudioOptions()); } - cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4060"), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4072"), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4060")), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4072")), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4063"), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4064"), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4063")), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4064")), new VoiceAudioOptions()); - cue.addDialogue("Hey it's farmer, " + replacementStrings.farmerName,new VoiceAudioOptions()); + //cue.addDialogue("Hey, it's farmer, " + replacementStrings.farmerName,new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4062"), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4061"), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4060"), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4059"), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.4058"), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4062")), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4061")), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4060")), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4059")), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4058")), new VoiceAudioOptions()); } @@ -1513,12 +1532,40 @@ namespace Vocalization //Load in super generic dialogue for this npc. This may or may not be a good idea.... if (fileName.Contains("StringsFromCSFiles")) { + //Have a list of generic dialogue that I won't scrape since I do a more specific scrape after the main scrape. + List ignoreKeys = new List(); + ignoreKeys.Add("NPC.cs.3955"); + ignoreKeys.Add("NPC.cs.3969"); + ignoreKeys.Add("NPC.cs.3981"); + ignoreKeys.Add("NPC.cs.3985"); + ignoreKeys.Add("NPC.cs.3987"); + ignoreKeys.Add("NPC.cs.4066"); + ignoreKeys.Add("NPC.cs.4068"); + ignoreKeys.Add("NPC.cs.4071"); + ignoreKeys.Add("NPC.cs.4440"); + ignoreKeys.Add("NPC.cs.4441"); + ignoreKeys.Add("NPC.cs.4444"); + ignoreKeys.Add("NPC.cs.4445"); + ignoreKeys.Add("NPC.cs.4447"); + ignoreKeys.Add("NPC.cs.4448"); + ignoreKeys.Add("NPC.cs.4463"); + ignoreKeys.Add("NPC.cs.4465"); + ignoreKeys.Add("NPC.cs.4466"); + ignoreKeys.Add("NPC.cs.4486"); //Scrape the whole dictionary looking for the character's name. foreach (KeyValuePair pair in DialogueDict) { //Get the key in the dictionary string key = pair.Key; + if (ignoreKeys.Contains(key)) continue; string rawDialogue = pair.Value; + + //This helps eliminate the fortune teller dialogue from more specific npcs. + if(rawDialogue.Contains("{0}") && !ignoreKeys.Contains(key)) + { + continue; + } + //If the key contains the character's name. if (key.Contains("NPC")) { @@ -1530,6 +1577,46 @@ namespace Vocalization } } } + //Scrape dialogue more specifically and replace some generic {0}'s and {1}'s + cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.3955"), (object)cue.name), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.3969"), (object)cue.name), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.3981"), (object)cue.name), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.3987"), (object)cue.name,"2"),new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4066"), (object)replacementStrings.farmerName), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4068"), (object)replacementStrings.farmerName), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4071"), (object)replacementStrings.farmerName), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4440"), (object)replacementStrings.farmerName),cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4441"), (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4444"), (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4445"), (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4447"), (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4448"), (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4463"), (object)replacementStrings.petName), cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4465"), (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4466"), (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4486"), (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + for (int i = 4507; i <= 4523; i++) + { + cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4465"), (object)Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.")+i.ToString())), cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4466"), (object)Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.") + i.ToString())), cue).ElementAt(0), new VoiceAudioOptions()); + } + + + //DO PARSE LOGIC HERE + //cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.3985", (object)cue.name), new VoiceAudioOptions()); + + string basePath = ModHelper.DirectoryPath; + string contentPath = Path.Combine(basePath, "Content"); + string audioPath = Path.Combine(contentPath, "Audio"); + string voicePath = Path.Combine(audioPath, "VoiceFiles"); + string[] dirs = Directory.GetDirectories(Path.Combine(voicePath, "English")); + //Some additional scraping to put together better options for speech bubbles. + foreach (var v in dirs) + { + string name = Path.GetFileName(v); + cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.3985"), (object)name), cue).ElementAt(0), new VoiceAudioOptions()); + } + continue; } From 025162262791c4b2955e299689617790b963e1b2 Mon Sep 17 00:00:00 2001 From: Date: Fri, 17 Aug 2018 15:01:30 -0700 Subject: [PATCH 048/110] Need to finish vocabulary edits and generic item word scrape. --- .../Vocalization/Framework/Vocabulary.cs | 49 +++ .../Vocalization/Vocalization/Vocalization.cs | 302 +++++++++++++++++- 2 files changed, 337 insertions(+), 14 deletions(-) create mode 100644 GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs diff --git a/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs b/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs new file mode 100644 index 00000000..161a116e --- /dev/null +++ b/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs @@ -0,0 +1,49 @@ +using StardewValley; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Vocalization.Framework +{ + public class Vocabulary + { + + public static string[] getRandomNegativeItemSlanderNouns() + { + string[] strArray = Game1.content.LoadString(Path.Combine("Strings","Lexicon:RandomNegativeItemNoun")).Split('#'); + return strArray; + } + + public static string[] getRandomDeliciousAdjectives(NPC n = null) + { + string[] strArray; + if (n != null && n.Age == 2) + strArray = Game1.content.LoadString("Strings\\Lexicon:RandomDeliciousAdjective_Child").Split('#'); + else + strArray = Game1.content.LoadString("Strings\\Lexicon:RandomDeliciousAdjective").Split('#'); + return strArray; + } + + public static string[] getRandomNegativeFoodAdjectives(NPC n = null) + { + string[] strArray; + if (n != null && n.Age == 2) + strArray = Game1.content.LoadString("Strings\\Lexicon:RandomNegativeFoodAdjective_Child").Split('#'); + else if (n != null && n.Manners == 1) + strArray = Game1.content.LoadString("Strings\\Lexicon:RandomNegativeFoodAdjective_Polite").Split('#'); + else + strArray = Game1.content.LoadString("Strings\\Lexicon:RandomNegativeFoodAdjective").Split('#'); + return strArray; + } + + public static string[] getRandomSlightlyPositiveAdjectivesForEdibleNoun(NPC n = null) + { + string[] strArray = Game1.content.LoadString("Strings\\Lexicon:RandomSlightlyPositiveFoodAdjective").Split('#'); + return strArray; + } + + } +} diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.cs b/GeneralMods/Vocalization/Vocalization/Vocalization.cs index 62430177..fd1afecb 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.cs +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.cs @@ -5,9 +5,12 @@ using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; +using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; +using Netcode; using StardewModdingAPI; using StardewValley; +using StardewValley.BellsAndWhistles; using StardewValley.Menus; using Vocalization.Framework; @@ -901,24 +904,107 @@ namespace Vocalization { string dialoguePath2 = Path.Combine(dataPath, fileName); var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); - - //Scraping the CookingChannel dialogue - //Scrape the whole dictionary looking for the character's name. - foreach (KeyValuePair pair in DialogueDict) + foreach (KeyValuePair pair in DialogueDict) { - //Get the key in the dictionary - string key = pair.Key; - string rawDialogue = pair.Value; - //If the key contains the character's name. + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; - List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); - foreach (var str in cleanDialogues) + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); + foreach (var str in cleanDialogues) + { + + if(key== "NewChild_Adoption") { + cue.addDialogue(Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:"+key),replacementStrings.kid1Name), new VoiceAudioOptions()); + cue.addDialogue(Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), replacementStrings.kid2Name), new VoiceAudioOptions()); + continue; + } + if(key== "NewChild_FirstChild") { - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + cue.addDialogue(Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), replacementStrings.kid1Name), new VoiceAudioOptions()); + continue; } + if(key== "Farm_RobinWorking_ReadyTomorrow" || key== "Robin_NewConstruction_Festival"||key== "Robin_NewConstruction" || key== "Robin_Instant") + { + string buildingsPath = Path.Combine(dataPath, "Blueprints.xnb"); + var BuildingDict = ModHelper.Content.Load>(buildingsPath, ContentSource.GameContent); + + foreach(KeyValuePair pair2 in BuildingDict) + { + List cleanedDialogues = sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), pair2.Key),cue); + foreach (var clean_str in cleanedDialogues) { + cue.addDialogue(clean_str, new VoiceAudioOptions()); + } + } + continue; + } + + if (key == "Farm_RobinWorking1" || key== "Farm_RobinWorking2") + { + string buildingsPath = Path.Combine(dataPath, "Blueprints.xnb"); + var BuildingDict = ModHelper.Content.Load>(buildingsPath, ContentSource.GameContent); + + foreach (KeyValuePair pair2 in BuildingDict) + { + for (int i = 1; i <= 3; i++) + { + cue.addDialogue(Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), pair2.Key,i.ToString()), new VoiceAudioOptions()); + } + } + continue; + } + + //Generate all possible tool combinations for clint. + if(key== "Clint_StillWorking") + { + List tools = new List(); + tools.Add("Hoe"); + tools.Add("Pickaxe"); + tools.Add("Axe"); + tools.Add("Watering Can"); + + List levels = new List(); + levels.Add("Copper "); + levels.Add("Steel "); + levels.Add("Gold "); + levels.Add("Iridium "); + + foreach(var tool in tools) + { + foreach(var lvl in levels) + { + cue.addDialogue(Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), lvl+tool), new VoiceAudioOptions()); + } + } + continue; + } + + if(key== "Morris_WeekendGreeting_MembershipAvailable" || key=="Morris_FirstGreeting_MembershipAvailable") + { + List cleanedDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); + foreach(var dia in cleanedDialogues) + { + if (dia.Contains("{0}")) + { + string actual = dia.Replace("{0}", "5000"); + cue.addDialogue(actual, new VoiceAudioOptions()); + } + else + { + cue.addDialogue(dia, new VoiceAudioOptions()); + } + continue; + } + continue; + } + + + cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } } + } } @@ -1648,12 +1734,184 @@ namespace Vocalization continue; } } + + //LOad item dictionary, pass in item and npc, sanitize the output string using the sanitizationDictionary function, and add in the cue! + Dictionary objDict = Game1.content.Load>(Path.Combine("Data", "ObjectInformation.xnb")); + foreach(KeyValuePair pair in objDict) + { + for(int i=0; i<=3; i++) { + StardewValley.Object obj = new StardewValley.Object(pair.Key,1,false,-1,i); + + string[] strArray = Game1.content.LoadString(Path.Combine("Strings","Lexicon:GenericPlayerTerm")).Split('^'); + string str2 = strArray[0]; + if (strArray.Length > 1 && !(bool)((NetFieldBase)Game1.player.isMale)) + str2 = strArray[1]; + string str3 = Game1.player.Name; + + List rawScrape = getPurchasedItemDialogueForNPC(obj, cue.name,str3); + + foreach (string raw in rawScrape) + { + + List cleanDialogues = sanitizeDialogueFromDictionaries(raw, cue); + foreach (var dia in cleanDialogues) + { + ModMonitor.Log(dia); + cue.addDialogue(dia, new VoiceAudioOptions()); + } + } + + str3 = str2; + List rawScrape2 = getPurchasedItemDialogueForNPC(obj, cue.name, str3); + foreach (string raw in rawScrape2) + { + List cleanDialogues2 = sanitizeDialogueFromDictionaries(raw, cue); + foreach (var dia in cleanDialogues2) + { + cue.addDialogue(dia, new VoiceAudioOptions()); + } + } + } + } } ModHelper.WriteJsonFile(path,cue); DialogueCues.Add(cue.name, cue); } + + /// + /// Function taken from game code to satisfy all dialogue options. + /// + /// + /// + /// + public List getPurchasedItemDialogueForNPC(StardewValley.Object i, string npcName, string str3) + { + NPC n = Game1.getCharacterFromName(npcName); + if (n == null) return new List(); + List dialogueReturn = new List(); + + if (n.Age != 0) + str3 = Game1.player.Name; + string str4 = LocalizedContentManager.CurrentLanguageCode == LocalizedContentManager.LanguageCode.en ? Lexicon.getProperArticleForWord(i.name) : ""; + if ((i.Category == -4 || i.Category == -75 || i.Category == -79) && Game1.random.NextDouble() < 0.5) + str4 = Game1.content.LoadString(Path.Combine("Strings", "StringsFromCSFiles:SeedShop.cs.9701")); + + for (int v = 0; v <= 5; v++) + { + int num = v; + + switch (num) + { + case 0: + if (i.quality.Value == 1) + { + foreach (string str in Vocabulary.getRandomDeliciousAdjectives(n)) + { + string str19 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_1_QualityHigh"), (object)str3, (object)str4, (object)i.DisplayName, (object)str); + dialogueReturn.Add(str19); + } + //break; + } + if (i.quality.Value == 0) + { + foreach (string str in Vocabulary.getRandomNegativeFoodAdjectives(n)) + { + string str18 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_1_QualityLow"), (object)str3, (object)str4, (object)i.DisplayName, (object)str); + dialogueReturn.Add(str18); + } + } + break; + case 1: + string str2 = (i.quality.Value) != 0 ? (!n.Name.Equals("Jodi") ? Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_2_QualityHigh"), (object)str3, (object)str4, (object)i.DisplayName) : Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_2_QualityHigh_Jodi"), (object)str3, (object)str4, (object)i.DisplayName)) : Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_2_QualityLow"), (object)str3, (object)str4, (object)i.DisplayName); + dialogueReturn.Add(str2); + break; + case 2: + if (n.Manners == 2) + { + if (i.quality.Value != 2) + { + string str17 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_3_QualityLow_Rude"), (object)str3, (object)str4, (object)i.DisplayName, (object)(i.salePrice() / 2), (object)Vocabulary.getRandomNegativeFoodAdjective(n), (object)Vocabulary.getRandomNegativeItemSlanderNoun()); + dialogueReturn.Add(str17); + break; + } + string str10 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_3_QualityHigh_Rude"), (object)str3, (object)str4, (object)i.DisplayName, (object)(i.salePrice() / 2), (object)Vocabulary.getRandomSlightlyPositiveAdjectiveForEdibleNoun(n)); + dialogueReturn.Add(str10); + break; + } + string str11 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_3_NonRude"), (object)str3, (object)str4, (object)i.DisplayName, (object)(i.salePrice() / 2)); + dialogueReturn.Add(str11); + break; + case 3: + string str12 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_4"), (object)str3, (object)str4, (object)i.DisplayName); + dialogueReturn.Add(str12); + break; + case 4: + if (i.Category == -75 || i.Category == -79) + { + string str13 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_5_VegetableOrFruit"), (object)str3, (object)str4, (object)i.DisplayName); + dialogueReturn.Add(str13); + break; + } + if (i.Category == -7) + { + string forEventOrPerson = Vocabulary.getRandomPositiveAdjectiveForEventOrPerson(n); + string str14 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_5_Cooking"), (object)str3, (object)str4, (object)i.DisplayName, (object)Vocabulary.getProperArticleForWord(forEventOrPerson), (object)forEventOrPerson); + dialogueReturn.Add(str14); + break; + } + string str15 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_5_Foraged"), (object)str3, (object)str4, (object)i.DisplayName); + dialogueReturn.Add(str15); + break; + } + } + if (n.Age == 1) { + string str16 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Teen"), (object)str3, (object)str4, (object)i.DisplayName); + dialogueReturn.Add(str16); + } + + string name = n.Name; + string str1 = ""; + if (name == "Alex") + { + str1 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Alex"), (object)str3, (object)str4, (object)i.DisplayName); + } + if (name == "Caroline") + { + str1 = (int)((NetFieldBase)i.quality) != 0 ? Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Caroline_QualityHigh"), (object)str3, (object)str4, (object)i.DisplayName) : Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Caroline_QualityLow"), (object)str3, (object)str4, (object)i.DisplayName); + } + if (name == "Pierre") + { + str1 = (int)((NetFieldBase)i.quality) != 0 ? Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Pierre_QualityHigh"), (object)str3, (object)str4, (object)i.DisplayName) : Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Pierre_QualityLow"), (object)str3, (object)str4, (object)i.DisplayName); + } + + + if (name == "Abigail") + { + if (i.quality.Value == 0) + { + str1 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Abigail_QualityLow"), (object)str3, (object)str4, (object)i.DisplayName, (object)Vocabulary.getRandomNegativeItemSlanderNoun()); + } + else { + str1 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Abigail_QualityHigh"), (object)str3, (object)str4, (object)i.DisplayName); + } + + } + + + if (name == "Haley") + str1 = Game1.content.LoadString(Path.Combine("Data","ExtraDialogue:PurchasedItem_Haley"), (object)str3, (object)str4, (object)i.DisplayName); + if (name == "Elliott") + str1 = Game1.content.LoadString(Path.Combine("Data","ExtraDialogue:PurchasedItem_Elliott"), (object)str3, (object)str4, (object)i.DisplayName); + if (name == "Leah") + str1 = Game1.content.LoadString(Path.Combine("Data","ExtraDialogue:PurchasedItem_Leah"), (object)str3, (object)str4, (object)i.DisplayName); + + dialogueReturn.Add(str1); + return dialogueReturn; + } + + /// /// Removes a lot of variables that would be hard to voice act from dkialogue strings such as player's name, pet names, farm names, etc. /// @@ -1741,6 +1999,12 @@ namespace Vocalization dialogue = dialogue.Replace(" ", " "); //Remove awkward spacing. } + if (dialogue.Contains("$b")) + { + dialogue = dialogue.Replace("$b", ""); + dialogue = dialogue.Replace(" ", " "); //Remove awkward spacing. + } + if (dialogue.Contains("$s")) { dialogue = dialogue.Replace("$s", ""); @@ -1798,8 +2062,17 @@ namespace Vocalization dialogue = dialogue.Replace("%fork", ""); } - //split across # symbol - List dialogueSplits1 = dialogue.Split('#').ToList(); //Returns an element size of 1 if # isn't found. + + string[] split = dialogue.Split('#'); + List dialogueSplits1 = new List(); //Returns an element size of 1 if # isn't found. + + foreach (var s in split) + { + ModMonitor.Log(s); + dialogueSplits1.Add(s); + } + + //Split across choices List orSplit = new List(); @@ -1812,6 +2085,7 @@ namespace Vocalization //split across | symbol foreach(var dia in dialogueSplits1) { + ModMonitor.Log(dia); if (dia.Contains("|")) //If I can split my string do so and add all the split strings into my orSplit list. { List tempSplits = dia.Split('|').ToList(); From e43b120f4b18649df3deacf75877640184d61986 Mon Sep 17 00:00:00 2001 From: Date: Fri, 17 Aug 2018 16:06:56 -0700 Subject: [PATCH 049/110] Finished generic scrape of Extra Dialogue which pieces together all possibiities of generic I bought x dialogue. --- .../Vocalization/Framework/Vocabulary.cs | 30 ++++++++ .../Vocalization/Vocalization/Vocalization.cs | 76 ++++++++++--------- .../Vocalization/Vocalization.csproj | 1 + 3 files changed, 71 insertions(+), 36 deletions(-) diff --git a/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs b/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs index 161a116e..d05d5b1c 100644 --- a/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs @@ -45,5 +45,35 @@ namespace Vocalization.Framework return strArray; } + public static string[] getRandomNegativeAdjectivesForEventOrPerson(NPC n = null) + { + Random random = new Random((int)Game1.stats.DaysPlayed + (int)Game1.uniqueIDForThisGame / 2); + string[] strArray; + if (n != null && n.Age != 0) + strArray = Game1.content.LoadString("Strings\\Lexicon:RandomNegativeAdjective_Child").Split('#'); + else if (n != null && n.Gender == 0) + strArray = Game1.content.LoadString("Strings\\Lexicon:RandomNegativeAdjective_AdultMale").Split('#'); + else if (n != null && n.Gender == 1) + strArray = Game1.content.LoadString("Strings\\Lexicon:RandomNegativeAdjective_AdultFemale").Split('#'); + else + strArray = Game1.content.LoadString("Strings\\Lexicon:RandomNegativeAdjective_PlaceOrEvent").Split('#'); + return strArray; + } + + public static string[] getRandomPositiveAdjectivesForEventOrPerson(NPC n = null) + { + Random random = new Random((int)Game1.stats.DaysPlayed + (int)Game1.uniqueIDForThisGame / 2); + string[] strArray; + if (n != null && n.Age != 0) + strArray = Game1.content.LoadString("Strings\\Lexicon:RandomPositiveAdjective_Child").Split('#'); + else if (n != null && n.Gender == 0) + strArray = Game1.content.LoadString("Strings\\Lexicon:RandomPositiveAdjective_AdultMale").Split('#'); + else if (n != null && n.Gender == 1) + strArray = Game1.content.LoadString("Strings\\Lexicon:RandomPositiveAdjective_AdultFemale").Split('#'); + else + strArray = Game1.content.LoadString("Strings\\Lexicon:RandomPositiveAdjective_PlaceOrEvent").Split('#'); + return strArray; + } + } } diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.cs b/GeneralMods/Vocalization/Vocalization/Vocalization.cs index fd1afecb..04db0ce2 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.cs +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.cs @@ -321,9 +321,9 @@ namespace Vocalization string currentDialogue = dialogueBox.getCurrentString(); if (previousDialogue != currentDialogue) { - ModMonitor.Log(speakerName); + //ModMonitor.Log(speakerName); previousDialogue = currentDialogue; //Update my previously read dialogue so that I only read the new string once when it appears. - ModMonitor.Log(currentDialogue); //Print out my dialogue. + //ModMonitor.Log(currentDialogue); //Print out my dialogue. //Do logic here to figure out what audio clips to play. //Sanitize input here! @@ -345,15 +345,10 @@ namespace Vocalization DialogueCues.TryGetValue(v, out voice); currentDialogue = sanitizeDialogueInGame(currentDialogue); //If contains the stuff in the else statement, change things up. - if (voice == null) - { - ModMonitor.Log("WHY IS MY VOICE NULL??"); - } if (voice.dialogueCues.ContainsKey(currentDialogue)) { //Not variable messages. Aka messages that don't contain words the user can change such as farm name, farmer name etc. voice.speak(currentDialogue); - ModMonitor.Log("SPEAK????"); return; } else @@ -399,7 +394,7 @@ namespace Vocalization //Not variable messages. Aka messages that don't contain words the user can change such as farm name, farmer name etc. voice.speak(currentDialogue); - ModMonitor.Log("SPEAK THE TELLE"); + //ModMonitor.Log("SPEAK THE TELLE"); return; } else @@ -426,7 +421,6 @@ namespace Vocalization } previousDialogue = currentDialogue; //Update my previously read dialogue so that I only read the new string once when it appears. - ModMonitor.Log(currentDialogue); //Print out my dialogue. //Add in support for TV Shows @@ -459,7 +453,6 @@ namespace Vocalization if (previousDialogue == shopDialogue) return; previousDialogue = shopDialogue; //Update my previously read dialogue so that I only read the new string once when it appears. - ModMonitor.Log(shopDialogue); //Print out my dialogue. //Add in support for Shops @@ -487,10 +480,6 @@ namespace Vocalization } else { - foreach(var v in voice.dialogueCues) - { - ModMonitor.Log(v.Key + " " + v.Value); - } ModMonitor.Log("New unregistered dialogue detected saying: " + shopDialogue, LogLevel.Alert); @@ -690,7 +679,11 @@ namespace Vocalization if (!File.Exists(voiceCueFile)) { CharacterVoiceCue cue = new CharacterVoiceCue(characterName); - cue.initializeEnglishScrape(); + //Change this up for different translations??? + if (translation == "English") + { + cue.initializeEnglishScrape(); + } scrapeDictionaries(voiceCueFile,cue); ///??? DO I NEVER ACTUALLY ADD IT IN??? try @@ -1288,8 +1281,6 @@ namespace Vocalization string rawDialogue = pair.Value; //If the key contains the character's name. - ModMonitor.Log(rawDialogue); - int count = rawDialogue.Split('/').Length-1; string[] strippedRawQuestDialogue = new string[count]; List strippedFreshQuestDialogue = new List(); @@ -1363,14 +1354,8 @@ namespace Vocalization string[]strippedRawQuestDialogue = new string[20]; ListstrippedFreshQuestDialogue = new List(); - ModMonitor.Log(rawDialogue); strippedRawQuestDialogue = rawDialogue.Split(new string[] {"/" },StringSplitOptions.None); - foreach(var v in strippedRawQuestDialogue) - { - ModMonitor.Log("I AM SO CONFUSED: " + v); - } - string prompt1 = strippedRawQuestDialogue.ElementAt(0); string prompt2 = strippedRawQuestDialogue.ElementAt(2); @@ -1756,7 +1741,6 @@ namespace Vocalization List cleanDialogues = sanitizeDialogueFromDictionaries(raw, cue); foreach (var dia in cleanDialogues) { - ModMonitor.Log(dia); cue.addDialogue(dia, new VoiceAudioOptions()); } } @@ -1832,12 +1816,20 @@ namespace Vocalization { if (i.quality.Value != 2) { - string str17 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_3_QualityLow_Rude"), (object)str3, (object)str4, (object)i.DisplayName, (object)(i.salePrice() / 2), (object)Vocabulary.getRandomNegativeFoodAdjective(n), (object)Vocabulary.getRandomNegativeItemSlanderNoun()); - dialogueReturn.Add(str17); + foreach (var word1 in Vocabulary.getRandomNegativeFoodAdjectives(n)) + { + foreach (string word2 in Vocabulary.getRandomNegativeItemSlanderNouns()) { + string str17 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_3_QualityLow_Rude"), (object)str3, (object)str4, (object)i.DisplayName, (object)(i.salePrice() / 2), (object)word1, (object)word2); + dialogueReturn.Add(str17); + } + } break; } - string str10 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_3_QualityHigh_Rude"), (object)str3, (object)str4, (object)i.DisplayName, (object)(i.salePrice() / 2), (object)Vocabulary.getRandomSlightlyPositiveAdjectiveForEdibleNoun(n)); - dialogueReturn.Add(str10); + foreach (string word1 in Vocabulary.getRandomSlightlyPositiveAdjectivesForEdibleNoun(n)) + { + string str10 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_3_QualityHigh_Rude"), (object)str3, (object)str4, (object)i.DisplayName, (object)(i.salePrice() / 2), (object)word1); + dialogueReturn.Add(str10); + } break; } string str11 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_3_NonRude"), (object)str3, (object)str4, (object)i.DisplayName, (object)(i.salePrice() / 2)); @@ -1856,9 +1848,11 @@ namespace Vocalization } if (i.Category == -7) { - string forEventOrPerson = Vocabulary.getRandomPositiveAdjectiveForEventOrPerson(n); - string str14 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_5_Cooking"), (object)str3, (object)str4, (object)i.DisplayName, (object)Vocabulary.getProperArticleForWord(forEventOrPerson), (object)forEventOrPerson); - dialogueReturn.Add(str14); + foreach (string forEventOrPerson in Vocabulary.getRandomPositiveAdjectivesForEventOrPerson(n)) + { + string str14 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_5_Cooking"), (object)str3, (object)str4, (object)i.DisplayName, (object)Lexicon.getProperArticleForWord(forEventOrPerson), (object)forEventOrPerson); + dialogueReturn.Add(str14); + } break; } string str15 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_5_Foraged"), (object)str3, (object)str4, (object)i.DisplayName); @@ -1891,7 +1885,11 @@ namespace Vocalization { if (i.quality.Value == 0) { - str1 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Abigail_QualityLow"), (object)str3, (object)str4, (object)i.DisplayName, (object)Vocabulary.getRandomNegativeItemSlanderNoun()); + foreach (string word1 in Vocabulary.getRandomNegativeItemSlanderNouns()) + { + string str12 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Abigail_QualityLow"), (object)str3, (object)str4, (object)i.DisplayName, (object)word1); + dialogueReturn.Add(str12); + } } else { str1 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Abigail_QualityHigh"), (object)str3, (object)str4, (object)i.DisplayName); @@ -1906,8 +1904,10 @@ namespace Vocalization str1 = Game1.content.LoadString(Path.Combine("Data","ExtraDialogue:PurchasedItem_Elliott"), (object)str3, (object)str4, (object)i.DisplayName); if (name == "Leah") str1 = Game1.content.LoadString(Path.Combine("Data","ExtraDialogue:PurchasedItem_Leah"), (object)str3, (object)str4, (object)i.DisplayName); - - dialogueReturn.Add(str1); + if (str1 != "") + { + dialogueReturn.Add(str1); + } return dialogueReturn; } @@ -2035,6 +2035,12 @@ namespace Vocalization dialogue = dialogue.Replace(" ", " "); //Remove awkward spacing. } + if (dialogue.Contains("$e")) + { + dialogue = dialogue.Replace("$e", ""); + dialogue = dialogue.Replace(" ", " "); //Remove awkward spacing. + } + //This is probably the worst possible way to do this but I don't have too much a choice. for (int i=0; i<=100; i++) @@ -2068,7 +2074,6 @@ namespace Vocalization foreach (var s in split) { - ModMonitor.Log(s); dialogueSplits1.Add(s); } @@ -2085,7 +2090,6 @@ namespace Vocalization //split across | symbol foreach(var dia in dialogueSplits1) { - ModMonitor.Log(dia); if (dia.Contains("|")) //If I can split my string do so and add all the split strings into my orSplit list. { List tempSplits = dia.Split('|').ToList(); diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.csproj b/GeneralMods/Vocalization/Vocalization/Vocalization.csproj index c2f392e1..23a96896 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.csproj +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.csproj @@ -50,6 +50,7 @@ + From ba64890e60f830da33ac0a601163b12ff7295273 Mon Sep 17 00:00:00 2001 From: Date: Sat, 18 Aug 2018 10:12:22 -0700 Subject: [PATCH 050/110] Minor fix to symphony. --- .../Framework/Menus/MusicManagerMenu.cs | 8 ++++---- .../Framework/Music/SongSpecifics.cs | 1 + .../StardewSymphonyRemastered/manifest.json | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs index 9cab2cfd..ba47da50 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs @@ -1255,26 +1255,26 @@ namespace StardewSymphonyRemastered.Framework.Menus Vector2 position = new Vector2(this.width * .1f + 64, this.height * .05f + 320); if (button.name == "SeasonIcon") { - //this.currentlySelectedOption = button.clone(position); + this.currentlySelectedOption = button.clone(position); this.drawMode = DrawMode.SeasonSelection; buttonSelected = true; } if (button.name == "FestivalIcon") { - //this.currentlySelectedOption = button.clone(position); + this.currentlySelectedOption = button.clone(position); this.drawMode = DrawMode.FestivalSelection; buttonSelected = true; } if (button.name == "EventIcon") { - //this.currentlySelectedOption = button.clone(position); + this.currentlySelectedOption = button.clone(position); this.drawMode = DrawMode.EventSelection; buttonSelected = true; } if (button.name == "MenuIcon") { - //this.currentlySelectedOption = button.clone(position); + this.currentlySelectedOption = button.clone(position); this.drawMode = DrawMode.MenuSelection; buttonSelected = true; } diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/SongSpecifics.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/SongSpecifics.cs index 45cc9c64..2d314b74 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/SongSpecifics.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/SongSpecifics.cs @@ -174,6 +174,7 @@ namespace StardewSymphonyRemastered.Framework var farm = (Farm)Game1.getLocationFromName("Farm"); foreach(var building in farm.buildings) { + if (locations.Contains(building.nameOfIndoors)) continue; locations.Add(building.nameOfIndoors); if (StardewSymphony.Config.EnableDebugLog) StardewSymphony.ModMonitor.Log("Adding in song triggers for location: " + building.nameOfIndoors); diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json index 1a2867c8..30b1050a 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json @@ -1,7 +1,7 @@ { "Name": "Stardew Symphony Remastered", "Author": "Alpha_Omegasis", - "Version": "2.1.0", + "Version": "2.1.1", "Description": "Adding more music to the game one beep at a time. Now with streaming!", "UniqueID": "Omegasis.StardewSymphonyRemastered", "EntryDll": "StardewSymphonyRemastered.dll", From 8a0f669a284610d51f33e07eaa22bcd9e498c102 Mon Sep 17 00:00:00 2001 From: Date: Sat, 18 Aug 2018 19:17:48 -0700 Subject: [PATCH 051/110] Translation in the works. --- .../Framework/CharacterVoiceCue.cs | 55 ++- .../Vocalization/Framework/TranslationInfo.cs | 358 ++++++++++++++++++ .../Vocalization/Vocalization/ModConfig.cs | 16 +- .../Vocalization/Vocalization/Vocalization.cs | 214 ++++++----- .../Vocalization/Vocalization.csproj | 1 + 5 files changed, 527 insertions(+), 117 deletions(-) create mode 100644 GeneralMods/Vocalization/Vocalization/Framework/TranslationInfo.cs diff --git a/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs b/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs index e8343446..79e9e7bf 100644 --- a/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs @@ -180,7 +180,14 @@ namespace Vocalization.Framework List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence,this); foreach(var cleanSentence in clean) { - this.dialogueCues.Add(cleanSentence, new VoiceAudioOptions()); + try + { + this.dialogueCues.Add(cleanSentence, new VoiceAudioOptions()); + } + catch(Exception err) + { + + } } } @@ -200,7 +207,15 @@ namespace Vocalization.Framework List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence,this); foreach (var cleanSentence in clean) { - this.dialogueCues.Add(cleanSentence, new VoiceAudioOptions()); + try + { + this.dialogueCues.Add(cleanSentence, new VoiceAudioOptions()); + } + catch(Exception err) + { + + } + } } @@ -254,12 +269,8 @@ namespace Vocalization.Framework } } } - } } - - - } else @@ -278,5 +289,37 @@ namespace Vocalization.Framework } + + + /// + /// Change all of the files to the ones that are appropriate for that translation version. + /// + /// + public void initializeForTranslation(string translation) + { + for (int i = 0; i < this.dataFileNames.Count; i++) + { + string s = dataFileNames.ElementAt(i); + s=dataFileNames.ElementAt(i).Replace(".xnb", Vocalization.config.translationInfo.getFileExtentionForTranslation(translation)); + dataFileNames[i] = s; + } + + for (int i = 0; i < this.dialogueFileNames.Count; i++) + { + string s = dialogueFileNames.ElementAt(i); + s=dialogueFileNames.ElementAt(i).Replace(".xnb", Vocalization.config.translationInfo.getFileExtentionForTranslation(translation)); + dialogueFileNames[i] = s; + } + + for (int i = 0; i < this.stringsFileNames.Count; i++) + { + string s = stringsFileNames.ElementAt(i); + s=stringsFileNames.ElementAt(i).Replace(".xnb", Vocalization.config.translationInfo.getFileExtentionForTranslation(translation)); + stringsFileNames[i] = s; + } + } + + + } } diff --git a/GeneralMods/Vocalization/Vocalization/Framework/TranslationInfo.cs b/GeneralMods/Vocalization/Vocalization/Framework/TranslationInfo.cs new file mode 100644 index 00000000..f5140504 --- /dev/null +++ b/GeneralMods/Vocalization/Vocalization/Framework/TranslationInfo.cs @@ -0,0 +1,358 @@ +using StardewValley; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Vocalization.Framework +{ + /// + /// A class which deals with handling different translations for Vocalization should other voice teams ever wish to voice act for that language. + /// + public class TranslationInfo + { + /// + /// The list of all supported translations by this mod. + /// + public List translations; + + /// + /// The current translation mode for the mod, so that it knows what files to load at the beginning of the game. + /// + public string currentTranslation; + + /// + /// Holds the info for what translation has what file extension. + /// + public Dictionary translationFileInfo; + + /// + /// Default constructor. + /// + public TranslationInfo() + { + translations = new List(); + + translationFileInfo = new Dictionary(); + + translations.Add("English"); + translations.Add("Spanish"); + translations.Add("Chinese"); + translations.Add("Japanese"); + translations.Add("Russian"); + translations.Add("German"); + translations.Add("Brazillian Portuguese"); + + currentTranslation = "English"; + + translationFileInfo.Add("English", ".xnb"); + translationFileInfo.Add("Spanish", ".es - ES.xnb"); + translationFileInfo.Add("Chinese", ".zh-CN.xnb"); + translationFileInfo.Add("Japanese", ".ja-JP.xnb"); + translationFileInfo.Add("Russian", ".ru-RU.xnb"); + translationFileInfo.Add("German", ".de-DE.xnb"); + translationFileInfo.Add("Brazillian Portuguese", ".pt-BR.xnb"); + + + } + + /// + /// Gets the proper file extension for the current translation. + /// + /// + /// + public string getFileExtentionForTranslation(string translation) + { + bool f = translationFileInfo.TryGetValue(translation, out string value); + if (f == false) return ".xnb"; + else return value; + } + + /// + /// Gets the proper XNB for Buildings (aka Blueprints) from the data folder. + /// + /// + /// + public string getBuildingXNBForTranslation(string translation) + { + string buildings = "Blueprints"; + return buildings + getFileExtentionForTranslation(translation); + } + + /// + /// Gets the proper XNB file for the name passed in. Combines the file name with it's proper translation extension. + /// + /// + /// + /// + public string getXNBForTranslation(string xnbFileName, string translation) + { + return xnbFileName + translation; + } + + /// + /// Loads a coresponding string from a data file in Content/Strings + /// + /// + /// + /// + /// + public string LoadStringFromStringsFile(string xnbFileName,string key,string translation) + { + string str = "Strings"; + string xnb = xnbFileName + getFileExtentionForTranslation(translation); + string path = Path.Combine(str, xnbFileName); + Dictionary loadedDict = Game1.content.Load>(path); + return loadedDict[key]; + } + + public string LoadStringFromStringsFile(string xnbFileName, string key, string translation, object sub1) + { + string loaded = LoadStringFromStringsFile(xnbFileName, key, translation); + try + { + return string.Format(loaded, sub1); + } + catch (Exception err) + { + return loaded; + } + } + + public string LoadStringFromStringsFile(string xnbFileName, string key, string translation, object sub1, object sub2) + { + string loaded = LoadStringFromStringsFile(xnbFileName, key, translation); + try + { + return string.Format(loaded, sub1,sub2); + } + catch (Exception err) + { + return loaded; + } + } + + public string LoadStringFromStringsFile(string xnbFileName, string key, string translation, object sub1, object sub2, object sub3) + { + string loaded = LoadStringFromStringsFile(xnbFileName, key, translation); + try + { + return string.Format(loaded, sub1, sub2,sub3); + } + catch (Exception err) + { + return loaded; + } + } + + /// + /// Loads a corresponding string from a data file in Content/Data + /// + /// + /// + /// + /// + public string LoadStringFromDataFile(string xnbFileName, string key, string translation) + { + string str = "Data"; + string xnb = xnbFileName + getFileExtentionForTranslation(translation); + string path = Path.Combine(str, xnbFileName); + Dictionary loadedDict = Game1.content.Load>(path); + string loaded = loadedDict[key]; + return loaded; + } + + public string LoadStringFromDataFile(string xnbFileName, string key, string translation, object sub1) + { + string loaded = LoadStringFromDataFile(xnbFileName, key, translation); + try + { + return string.Format(loaded, sub1); + } + catch (Exception err) + { + return loaded; + } + } + + public string LoadStringFromDataFile(string xnbFileName, string key, string translation, object sub1, object sub2) + { + string loaded = LoadStringFromDataFile(xnbFileName, key, translation); + try + { + return string.Format(loaded, sub1,sub2); + } + catch (Exception err) + { + return loaded; + } + } + + public string LoadStringFromDataFile(string xnbFileName, string key, string translation, object sub1, object sub2, object sub3) + { + string loaded = LoadStringFromDataFile(xnbFileName, key, translation); + try + { + return string.Format(loaded, sub1,sub2,sub3); + } + catch (Exception err) + { + return loaded; + } + } + + public virtual string LoadString(string path, string translation,object sub1, object sub2, object sub3) + { + string assetName; + string key; + this.parseStringPath(path, out assetName, out key); + + string[] split = path.Split(new string[]{ Environment.NewLine },StringSplitOptions.None); + string folder = split[0]; + if (folder == "Data") + { + if (sub3 != null) { + return LoadStringFromDataFile(assetName, key, translation, sub1, sub2, sub3); + } + if (sub2 != null) + { + return LoadStringFromDataFile(assetName, key, translation, sub1, sub2); + } + + if (sub1 != null) + { + return LoadStringFromDataFile(assetName, key, translation, sub1); + } + return LoadStringFromDataFile(assetName, key, translation); + } + if (folder == "Strings") + { + if (sub3 != null) + { + return LoadStringFromStringsFile(assetName, key, translation, sub1, sub2, sub3); + } + if (sub2 != null) + { + return LoadStringFromStringsFile(assetName, key, translation, sub1, sub2); + } + + if (sub1 != null) + { + return LoadStringFromStringsFile(assetName, key, translation, sub1); + } + return LoadStringFromStringsFile(assetName, key, translation); + } + return ""; + } + + public virtual string LoadString(string path, string translation, object sub1, object sub2) + { + string assetName; + string key; + this.parseStringPath(path, out assetName, out key); + + string[] split = path.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); + string folder = split[0]; + if (folder == "Data") + { + if (sub2 != null) + { + return LoadStringFromDataFile(assetName, key, translation, sub1, sub2); + } + + if (sub1 != null) + { + return LoadStringFromDataFile(assetName, key, translation, sub1); + } + return LoadStringFromDataFile(assetName, key, translation); + } + if (folder == "Strings") + { + if (sub2 != null) + { + return LoadStringFromStringsFile(assetName, key, translation, sub1, sub2); + } + + if (sub1 != null) + { + return LoadStringFromStringsFile(assetName, key, translation, sub1); + } + return LoadStringFromStringsFile(assetName, key, translation); + } + return ""; + } + + public virtual string LoadString(string path, string translation, object sub1) + { + string assetName; + string key; + this.parseStringPath(path, out assetName, out key); + + string[] split = path.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); + string folder = split[0]; + if (folder == "Data") + { + + if (sub1 != null) + { + return LoadStringFromDataFile(assetName, key, translation, sub1); + } + return LoadStringFromDataFile(assetName, key, translation); + } + if (folder == "Strings") + { + if (sub1 != null) + { + return LoadStringFromStringsFile(assetName, key, translation, sub1); + } + return LoadStringFromStringsFile(assetName, key, translation); + } + return ""; + } + + public virtual string LoadString(string path, string translation) + { + string assetName; + string key; + this.parseStringPath(path, out assetName, out key); + + string[] split = path.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); + string folder = split[0]; + if (folder == "Data") + { + return LoadStringFromDataFile(assetName, key, translation); + } + if (folder == "Strings") { + + return LoadStringFromStringsFile(assetName, key, translation); + } + return ""; + } + + public virtual string LoadString(string path,string translation, params object[] substitutions) + { + string format = this.LoadString(path,translation); + if (substitutions.Length != 0) + { + try + { + return string.Format(format, substitutions); + } + catch (Exception ex) + { + } + } + return format; + } + + + private void parseStringPath(string path, out string assetName, out string key) + { + int length = path.IndexOf(':'); + assetName = path.Substring(0, length); + key = path.Substring(length + 1, path.Length - length - 1); + } + } +} diff --git a/GeneralMods/Vocalization/Vocalization/ModConfig.cs b/GeneralMods/Vocalization/Vocalization/ModConfig.cs index 73654972..5c8f0527 100644 --- a/GeneralMods/Vocalization/Vocalization/ModConfig.cs +++ b/GeneralMods/Vocalization/Vocalization/ModConfig.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Vocalization.Framework; namespace Vocalization { @@ -11,14 +12,11 @@ namespace Vocalization /// public class ModConfig { + /// - /// A list of all of the translations currently supported by this mod. + /// Handles all of the translation information and parsing. /// - public List translations; - /// - /// The currently selected translation to use. - /// - public string currentTranslation; + public TranslationInfo translationInfo; /// /// Keeps track of the voice modes for determining how much audio is played. @@ -37,7 +35,6 @@ namespace Vocalization public ModConfig() { - translations = new List(); modes = new List(); modes.Add("Simple"); @@ -46,9 +43,8 @@ namespace Vocalization modes.Add("SimpleAndHeartEvents"); currentMode = "Full"; + translationInfo = new TranslationInfo(); - translations.Add("English"); - currentTranslation = "English"; this.voiceVolume = 1.0f; } @@ -66,5 +62,7 @@ namespace Vocalization } + + } } diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.cs b/GeneralMods/Vocalization/Vocalization/Vocalization.cs index 04db0ce2..20c25ad5 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.cs +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.cs @@ -511,7 +511,7 @@ namespace Vocalization { foreach(var NPC in loc.characters) { - foreach (var translation in config.translations) + foreach (var translation in config.translationInfo.translations) { string characterPath = Path.Combine(translation, NPC.Name); characterDialoguePaths.Add(characterPath); @@ -520,82 +520,82 @@ namespace Vocalization } //Create all of the necessary folders for different translations. - foreach (var dir in config.translations) + foreach (var dir in config.translationInfo.translations) { if (!Directory.Exists(Path.Combine(voicePath,dir))) Directory.CreateDirectory(Path.Combine(voicePath, dir)); } //Add in folder for TV Shows - foreach (var translation in config.translations) + foreach (var translation in config.translationInfo.translations) { string TVPath = Path.Combine(translation, "TV"); characterDialoguePaths.Add(TVPath); } //Add in folder for shop support - foreach (var translation in config.translations) + foreach (var translation in config.translationInfo.translations) { string shop = Path.Combine(translation, "Shops"); //Used to hold NPC Shops characterDialoguePaths.Add(shop); } //Add in folder for Mail support. - foreach (var translation in config.translations) + foreach (var translation in config.translationInfo.translations) { string mail = Path.Combine(translation, "Mail"); characterDialoguePaths.Add(mail); } //Add in folder for ExtraDiaogue.yaml - foreach (var translation in config.translations) + foreach (var translation in config.translationInfo.translations) { string extra = Path.Combine(translation, "ExtraDialogue"); characterDialoguePaths.Add(extra); } - foreach (var translation in config.translations) + foreach (var translation in config.translationInfo.translations) { string extra = Path.Combine(translation, "Events"); characterDialoguePaths.Add(extra); } - foreach (var translation in config.translations) + foreach (var translation in config.translationInfo.translations) { string extra = Path.Combine(translation, "Characters"); characterDialoguePaths.Add(extra); } - foreach (var translation in config.translations) + foreach (var translation in config.translationInfo.translations) { string extra = Path.Combine(translation, "LocationDialogue"); characterDialoguePaths.Add(extra); } - foreach (var translation in config.translations) + foreach (var translation in config.translationInfo.translations) { string extra = Path.Combine(translation, "Notes"); characterDialoguePaths.Add(extra); } - foreach (var translation in config.translations) + foreach (var translation in config.translationInfo.translations) { string extra = Path.Combine(translation, "Utility"); characterDialoguePaths.Add(extra); } - foreach (var translation in config.translations) + foreach (var translation in config.translationInfo.translations) { string extra = Path.Combine(translation, "NPCGiftTastes"); characterDialoguePaths.Add(extra); } - foreach (var translation in config.translations) + foreach (var translation in config.translationInfo.translations) { string extra = Path.Combine(translation, "SpeechBubbles"); characterDialoguePaths.Add(extra); } - foreach (var translation in config.translations) + foreach (var translation in config.translationInfo.translations) { string kent = Path.Combine(translation, "Kent"); characterDialoguePaths.Add(kent); @@ -619,14 +619,14 @@ namespace Vocalization - foreach (var translation in config.translations) + foreach (var translation in config.translationInfo.translations) { string extra = Path.Combine(translation, "Quests"); characterDialoguePaths.Add(extra); } - foreach (var translation in config.translations) + foreach (var translation in config.translationInfo.translations) { string extra = Path.Combine(translation, "Temp"); characterDialoguePaths.Add(extra); @@ -637,6 +637,7 @@ namespace Vocalization if (!Directory.Exists(voicePath)) Directory.CreateDirectory(voicePath); + //Create a list of new directories if the corresponding character directory doesn't exist. //Note: A modder could also manually add in their own character directory for voice lines instead of having to add it via code. foreach (var dir in characterDialoguePaths) @@ -680,15 +681,16 @@ namespace Vocalization { CharacterVoiceCue cue = new CharacterVoiceCue(characterName); //Change this up for different translations??? - if (translation == "English") - { - cue.initializeEnglishScrape(); - } - scrapeDictionaries(voiceCueFile,cue); + cue.initializeEnglishScrape(); + cue.initializeForTranslation(translation); + scrapeDictionaries(voiceCueFile,cue,translation); ///??? DO I NEVER ACTUALLY ADD IT IN??? try { - DialogueCues.Add(characterName, cue); + if (translation == config.translationInfo.currentTranslation) + { + DialogueCues.Add(characterName, cue); + } } catch(Exception err) { @@ -701,7 +703,10 @@ namespace Vocalization //scrapeDictionaries(voiceCueFile,cue); try { - DialogueCues.Add(characterName, cue); + if (translation == config.translationInfo.currentTranslation) + { + DialogueCues.Add(characterName, cue); + } } catch (Exception err) { @@ -717,7 +722,7 @@ namespace Vocalization /// Used to obtain all strings for almost all possible dialogue in the game. /// /// - public void scrapeDictionaries(string path,CharacterVoiceCue cue) + public void scrapeDictionaries(string path,CharacterVoiceCue cue,string translation) { var dialoguePath = Path.Combine("Characters", "Dialogue"); @@ -909,24 +914,24 @@ namespace Vocalization { if(key== "NewChild_Adoption") { - cue.addDialogue(Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:"+key),replacementStrings.kid1Name), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), replacementStrings.kid2Name), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadStringFromDataFile("ExtraDialogue",key,translation,replacementStrings.kid1Name), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadStringFromDataFile("ExtraDialogue", key, translation, replacementStrings.kid2Name), new VoiceAudioOptions()); continue; } if(key== "NewChild_FirstChild") { - cue.addDialogue(Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), replacementStrings.kid1Name), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadStringFromDataFile("ExtraDialogue", key, translation, replacementStrings.kid1Name), new VoiceAudioOptions()); continue; } if(key== "Farm_RobinWorking_ReadyTomorrow" || key== "Robin_NewConstruction_Festival"||key== "Robin_NewConstruction" || key== "Robin_Instant") { - string buildingsPath = Path.Combine(dataPath, "Blueprints.xnb"); + string buildingsPath = Path.Combine(dataPath, config.translationInfo.getBuildingXNBForTranslation(translation)); var BuildingDict = ModHelper.Content.Load>(buildingsPath, ContentSource.GameContent); foreach(KeyValuePair pair2 in BuildingDict) { - List cleanedDialogues = sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), pair2.Key),cue); + List cleanedDialogues = sanitizeDialogueFromDictionaries(config.translationInfo.LoadStringFromDataFile("ExtraDialogue",key,translation,pair2.Key),cue); foreach (var clean_str in cleanedDialogues) { cue.addDialogue(clean_str, new VoiceAudioOptions()); } @@ -936,14 +941,14 @@ namespace Vocalization if (key == "Farm_RobinWorking1" || key== "Farm_RobinWorking2") { - string buildingsPath = Path.Combine(dataPath, "Blueprints.xnb"); + string buildingsPath = Path.Combine(dataPath, config.translationInfo.getBuildingXNBForTranslation(translation)); var BuildingDict = ModHelper.Content.Load>(buildingsPath, ContentSource.GameContent); foreach (KeyValuePair pair2 in BuildingDict) { for (int i = 1; i <= 3; i++) { - cue.addDialogue(Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), pair2.Key,i.ToString()), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), pair2.Key,i.ToString()), new VoiceAudioOptions()); } } continue; @@ -968,7 +973,7 @@ namespace Vocalization { foreach(var lvl in levels) { - cue.addDialogue(Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), lvl+tool), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadStringFromDataFile("ExtraDialogue", key,translation ,lvl+tool), new VoiceAudioOptions()); } } continue; @@ -1413,29 +1418,32 @@ namespace Vocalization string contentPath = Path.Combine(basePath, "Content"); string audioPath = Path.Combine(contentPath, "Audio"); string voicePath = Path.Combine(audioPath, "VoiceFiles"); - string[] dirs = Directory.GetDirectories(Path.Combine(voicePath,"English")); - //Some additional scraping to put together better options for speech bubbles. - foreach (var v in dirs) - { - string name = Path.GetFileName(v); - cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4068"), (object)name), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4065")) + ", " + Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4066"), (object)name), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4071"), (object)name), new VoiceAudioOptions()); - } - cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4060")), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4072")), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4063")), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4064")), new VoiceAudioOptions()); + string[] dirs = Directory.GetDirectories(Path.Combine(voicePath, translation)); + //Some additional scraping to put together better options for speech bubbles. + foreach (var v in dirs) + { + string name = Path.GetFileName(v); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4068"), translation, (object)name), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4065"),translation) + ", " + config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4066"), translation, (object)name), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4071"), translation, (object)name), new VoiceAudioOptions()); + } + + + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4060"),translation), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4072"),translation), new VoiceAudioOptions()); + + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4063"),translation), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4064"),translation), new VoiceAudioOptions()); //cue.addDialogue("Hey, it's farmer, " + replacementStrings.farmerName,new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4062")), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4061")), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4060")), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4059")), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4058")), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4062"),translation), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4061"),translation), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4060"),translation), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4059"),translation), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4058"),translation), new VoiceAudioOptions()); } @@ -1649,44 +1657,46 @@ namespace Vocalization } } //Scrape dialogue more specifically and replace some generic {0}'s and {1}'s - cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.3955"), (object)cue.name), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.3969"), (object)cue.name), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.3981"), (object)cue.name), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.3987"), (object)cue.name,"2"),new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4066"), (object)replacementStrings.farmerName), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4068"), (object)replacementStrings.farmerName), new VoiceAudioOptions()); - cue.addDialogue(Game1.content.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4071"), (object)replacementStrings.farmerName), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4440"), (object)replacementStrings.farmerName),cue).ElementAt(0), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4441"), (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4444"), (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4445"), (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4447"), (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4448"), (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4463"), (object)replacementStrings.petName), cue).ElementAt(0), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4465"), (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4466"), (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4486"), (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.3955"), translation, (object)cue.name), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.3969"), translation, (object)cue.name), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.3981"), translation, (object)cue.name), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.3987"), translation, (object)cue.name,"2"),new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4066"), translation, (object)replacementStrings.farmerName), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4068"), translation, (object)replacementStrings.farmerName), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4071"), translation, (object)replacementStrings.farmerName), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4440"), translation, (object)replacementStrings.farmerName),cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4441"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4444"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4445"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4447"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4448"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4463"), translation, (object)replacementStrings.petName), cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4465"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4466"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4486"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); for (int i = 4507; i <= 4523; i++) { - cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4465"), (object)Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.")+i.ToString())), cue).ElementAt(0), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4466"), (object)Game1.content.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.") + i.ToString())), cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4465"), translation, (object)config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.")+i.ToString(),translation)), cue).ElementAt(0), new VoiceAudioOptions()); + cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4466"), translation, (object)config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.") + i.ToString(),translation)), cue).ElementAt(0), new VoiceAudioOptions()); } //DO PARSE LOGIC HERE - //cue.addDialogue(Game1.content.LoadString("Strings\\StringsFromCSFiles:NPC.cs.3985", (object)cue.name), new VoiceAudioOptions()); + //cue.addDialogue(config.translationInfo.LoadString("Strings\\StringsFromCSFiles:NPC.cs.3985", (object)cue.name), new VoiceAudioOptions()); string basePath = ModHelper.DirectoryPath; string contentPath = Path.Combine(basePath, "Content"); string audioPath = Path.Combine(contentPath, "Audio"); string voicePath = Path.Combine(audioPath, "VoiceFiles"); - string[] dirs = Directory.GetDirectories(Path.Combine(voicePath, "English")); - //Some additional scraping to put together better options for speech bubbles. - foreach (var v in dirs) - { - string name = Path.GetFileName(v); - cue.addDialogue(sanitizeDialogueFromDictionaries(Game1.content.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.3985"), (object)name), cue).ElementAt(0), new VoiceAudioOptions()); - } + + string[] dirs = Directory.GetDirectories(Path.Combine(voicePath, translation)); + //Some additional scraping to put together better options for speech bubbles. + foreach (var v in dirs) + { + string name = Path.GetFileName(v); + cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.3985"), translation, (object)name), cue).ElementAt(0), new VoiceAudioOptions()); + } + continue; } @@ -1727,13 +1737,13 @@ namespace Vocalization for(int i=0; i<=3; i++) { StardewValley.Object obj = new StardewValley.Object(pair.Key,1,false,-1,i); - string[] strArray = Game1.content.LoadString(Path.Combine("Strings","Lexicon:GenericPlayerTerm")).Split('^'); + string[] strArray = config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:GenericPlayerTerm"),translation).Split('^'); string str2 = strArray[0]; if (strArray.Length > 1 && !(bool)((NetFieldBase)Game1.player.isMale)) str2 = strArray[1]; string str3 = Game1.player.Name; - List rawScrape = getPurchasedItemDialogueForNPC(obj, cue.name,str3); + List rawScrape = getPurchasedItemDialogueForNPC(obj, cue.name,str3,translation); foreach (string raw in rawScrape) { @@ -1746,7 +1756,7 @@ namespace Vocalization } str3 = str2; - List rawScrape2 = getPurchasedItemDialogueForNPC(obj, cue.name, str3); + List rawScrape2 = getPurchasedItemDialogueForNPC(obj, cue.name, str3,translation); foreach (string raw in rawScrape2) { List cleanDialogues2 = sanitizeDialogueFromDictionaries(raw, cue); @@ -1760,7 +1770,7 @@ namespace Vocalization } ModHelper.WriteJsonFile(path,cue); - DialogueCues.Add(cue.name, cue); + //DialogueCues.Add(cue.name, cue); } @@ -1770,7 +1780,7 @@ namespace Vocalization /// /// /// - public List getPurchasedItemDialogueForNPC(StardewValley.Object i, string npcName, string str3) + public List getPurchasedItemDialogueForNPC(StardewValley.Object i, string npcName, string str3,string translation) { NPC n = Game1.getCharacterFromName(npcName); if (n == null) return new List(); @@ -1780,7 +1790,7 @@ namespace Vocalization str3 = Game1.player.Name; string str4 = LocalizedContentManager.CurrentLanguageCode == LocalizedContentManager.LanguageCode.en ? Lexicon.getProperArticleForWord(i.name) : ""; if ((i.Category == -4 || i.Category == -75 || i.Category == -79) && Game1.random.NextDouble() < 0.5) - str4 = Game1.content.LoadString(Path.Combine("Strings", "StringsFromCSFiles:SeedShop.cs.9701")); + str4 = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:SeedShop.cs.9701"),translation); for (int v = 0; v <= 5; v++) { @@ -1793,7 +1803,7 @@ namespace Vocalization { foreach (string str in Vocabulary.getRandomDeliciousAdjectives(n)) { - string str19 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_1_QualityHigh"), (object)str3, (object)str4, (object)i.DisplayName, (object)str); + string str19 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_1_QualityHigh"), translation, (object)str3, (object)str4, (object)i.DisplayName, (object)str); dialogueReturn.Add(str19); } //break; @@ -1802,13 +1812,13 @@ namespace Vocalization { foreach (string str in Vocabulary.getRandomNegativeFoodAdjectives(n)) { - string str18 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_1_QualityLow"), (object)str3, (object)str4, (object)i.DisplayName, (object)str); + string str18 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_1_QualityLow"), translation, (object)str3, (object)str4, (object)i.DisplayName, (object)str); dialogueReturn.Add(str18); } } break; case 1: - string str2 = (i.quality.Value) != 0 ? (!n.Name.Equals("Jodi") ? Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_2_QualityHigh"), (object)str3, (object)str4, (object)i.DisplayName) : Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_2_QualityHigh_Jodi"), (object)str3, (object)str4, (object)i.DisplayName)) : Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_2_QualityLow"), (object)str3, (object)str4, (object)i.DisplayName); + string str2 = (i.quality.Value) != 0 ? (!n.Name.Equals("Jodi") ? config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_2_QualityHigh"), translation, (object)str3, (object)str4, (object)i.DisplayName) : config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_2_QualityHigh_Jodi"), translation, (object)str3, (object)str4, (object)i.DisplayName)) : config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_2_QualityLow"), translation, (object)str3, (object)str4, (object)i.DisplayName); dialogueReturn.Add(str2); break; case 2: @@ -1819,7 +1829,7 @@ namespace Vocalization foreach (var word1 in Vocabulary.getRandomNegativeFoodAdjectives(n)) { foreach (string word2 in Vocabulary.getRandomNegativeItemSlanderNouns()) { - string str17 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_3_QualityLow_Rude"), (object)str3, (object)str4, (object)i.DisplayName, (object)(i.salePrice() / 2), (object)word1, (object)word2); + string str17 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_3_QualityLow_Rude"), translation, (object)str3, (object)str4, (object)i.DisplayName, (object)(i.salePrice() / 2), (object)word1, (object)word2); dialogueReturn.Add(str17); } } @@ -1827,22 +1837,22 @@ namespace Vocalization } foreach (string word1 in Vocabulary.getRandomSlightlyPositiveAdjectivesForEdibleNoun(n)) { - string str10 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_3_QualityHigh_Rude"), (object)str3, (object)str4, (object)i.DisplayName, (object)(i.salePrice() / 2), (object)word1); + string str10 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_3_QualityHigh_Rude"), translation, (object)str3, (object)str4, (object)i.DisplayName, (object)(i.salePrice() / 2), (object)word1); dialogueReturn.Add(str10); } break; } - string str11 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_3_NonRude"), (object)str3, (object)str4, (object)i.DisplayName, (object)(i.salePrice() / 2)); + string str11 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_3_NonRude"), translation, (object)str3, (object)str4, (object)i.DisplayName, (object)(i.salePrice() / 2)); dialogueReturn.Add(str11); break; case 3: - string str12 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_4"), (object)str3, (object)str4, (object)i.DisplayName); + string str12 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_4"), translation, (object)str3, (object)str4, (object)i.DisplayName); dialogueReturn.Add(str12); break; case 4: if (i.Category == -75 || i.Category == -79) { - string str13 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_5_VegetableOrFruit"), (object)str3, (object)str4, (object)i.DisplayName); + string str13 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_5_VegetableOrFruit"), translation, (object)str3, (object)str4, (object)i.DisplayName); dialogueReturn.Add(str13); break; } @@ -1850,18 +1860,18 @@ namespace Vocalization { foreach (string forEventOrPerson in Vocabulary.getRandomPositiveAdjectivesForEventOrPerson(n)) { - string str14 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_5_Cooking"), (object)str3, (object)str4, (object)i.DisplayName, (object)Lexicon.getProperArticleForWord(forEventOrPerson), (object)forEventOrPerson); + string str14 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_5_Cooking"), translation, (object)str3, (object)str4, (object)i.DisplayName, (object)Lexicon.getProperArticleForWord(forEventOrPerson), (object)forEventOrPerson); dialogueReturn.Add(str14); } break; } - string str15 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_5_Foraged"), (object)str3, (object)str4, (object)i.DisplayName); + string str15 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_5_Foraged"), translation, (object)str3, (object)str4, (object)i.DisplayName); dialogueReturn.Add(str15); break; } } if (n.Age == 1) { - string str16 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Teen"), (object)str3, (object)str4, (object)i.DisplayName); + string str16 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Teen"), translation, (object)str3, (object)str4, (object)i.DisplayName); dialogueReturn.Add(str16); } @@ -1869,15 +1879,15 @@ namespace Vocalization string str1 = ""; if (name == "Alex") { - str1 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Alex"), (object)str3, (object)str4, (object)i.DisplayName); + str1 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Alex"), translation, (object)str3, (object)str4, (object)i.DisplayName); } if (name == "Caroline") { - str1 = (int)((NetFieldBase)i.quality) != 0 ? Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Caroline_QualityHigh"), (object)str3, (object)str4, (object)i.DisplayName) : Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Caroline_QualityLow"), (object)str3, (object)str4, (object)i.DisplayName); + str1 = (int)((NetFieldBase)i.quality) != 0 ? config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Caroline_QualityHigh"), translation, (object)str3, (object)str4, (object)i.DisplayName) : config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Caroline_QualityLow"), translation, (object)str3, (object)str4, (object)i.DisplayName); } if (name == "Pierre") { - str1 = (int)((NetFieldBase)i.quality) != 0 ? Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Pierre_QualityHigh"), (object)str3, (object)str4, (object)i.DisplayName) : Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Pierre_QualityLow"), (object)str3, (object)str4, (object)i.DisplayName); + str1 = (int)((NetFieldBase)i.quality) != 0 ? config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Pierre_QualityHigh"), translation, (object)str3, (object)str4, (object)i.DisplayName) : config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Pierre_QualityLow"), translation, (object)str3, (object)str4, (object)i.DisplayName); } @@ -1887,23 +1897,23 @@ namespace Vocalization { foreach (string word1 in Vocabulary.getRandomNegativeItemSlanderNouns()) { - string str12 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Abigail_QualityLow"), (object)str3, (object)str4, (object)i.DisplayName, (object)word1); + string str12 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Abigail_QualityLow"), translation, (object)str3, (object)str4, (object)i.DisplayName, (object)word1); dialogueReturn.Add(str12); } } else { - str1 = Game1.content.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Abigail_QualityHigh"), (object)str3, (object)str4, (object)i.DisplayName); + str1 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Abigail_QualityHigh"), translation, (object)str3, (object)str4, (object)i.DisplayName); } } if (name == "Haley") - str1 = Game1.content.LoadString(Path.Combine("Data","ExtraDialogue:PurchasedItem_Haley"), (object)str3, (object)str4, (object)i.DisplayName); + str1 = config.translationInfo.LoadString(Path.Combine("Data","ExtraDialogue:PurchasedItem_Haley"), translation, (object)str3, (object)str4, (object)i.DisplayName); if (name == "Elliott") - str1 = Game1.content.LoadString(Path.Combine("Data","ExtraDialogue:PurchasedItem_Elliott"), (object)str3, (object)str4, (object)i.DisplayName); + str1 = config.translationInfo.LoadString(Path.Combine("Data","ExtraDialogue:PurchasedItem_Elliott"), translation, (object)str3, (object)str4, (object)i.DisplayName); if (name == "Leah") - str1 = Game1.content.LoadString(Path.Combine("Data","ExtraDialogue:PurchasedItem_Leah"), (object)str3, (object)str4, (object)i.DisplayName); + str1 = config.translationInfo.LoadString(Path.Combine("Data","ExtraDialogue:PurchasedItem_Leah"), translation, (object)str3, (object)str4, (object)i.DisplayName); if (str1 != "") { dialogueReturn.Add(str1); diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.csproj b/GeneralMods/Vocalization/Vocalization/Vocalization.csproj index 23a96896..b2b86b6a 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.csproj +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.csproj @@ -50,6 +50,7 @@ + From 2e2aedcc3a77a49a7ed06754b2fa2e4e7823df92 Mon Sep 17 00:00:00 2001 From: Date: Sun, 19 Aug 2018 02:06:55 -0700 Subject: [PATCH 052/110] Fixed more translation issues. WOW Brazillian Protuguese Rude characters have messed up pretty big with file size. --- .../Framework/CharacterVoiceCue.cs | 134 +--------- .../Vocalization/Framework/TranslationInfo.cs | 246 ++++-------------- .../Vocalization/Framework/Vocabulary.cs | 42 +-- .../Vocalization/Vocalization/Vocalization.cs | 171 ++++++++++-- 4 files changed, 234 insertions(+), 359 deletions(-) diff --git a/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs b/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs index 79e9e7bf..c03a8631 100644 --- a/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs @@ -87,6 +87,7 @@ namespace Vocalization.Framework public void initializeEnglishScrape() { + if (name == "TV") { dataFileNames.Add("CookingChannel.xnb"); @@ -151,126 +152,7 @@ namespace Vocalization.Framework else if (name == "Temp") { - Vocalization.ModMonitor.Log("Scraping dialogue file: Temp.xnb", StardewModdingAPI.LogLevel.Debug); - //dataFileNames.Add(Path.Combine("Events", "Temp.xnb")); - - Dictionary meh = Game1.content.Load>(Path.Combine("Data", "Events", "Temp.xnb")); - - foreach(KeyValuePair pair in meh) - { - if(pair.Key== "decorate") - { - string dia = pair.Value; - Vocalization.ModMonitor.Log(dia); - string[]values = dia.Split('\"'); - - foreach(var v in values) - { - Vocalization.ModMonitor.Log(v); - Vocalization.ModMonitor.Log("HELLO?"); - } - - List goodValues = new List(); - goodValues.Add(values.ElementAt(1)); - goodValues.Add(values.ElementAt(3)); - goodValues.Add(values.ElementAt(5)); - - foreach(var sentence in goodValues) - { - List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence,this); - foreach(var cleanSentence in clean) - { - try - { - this.dialogueCues.Add(cleanSentence, new VoiceAudioOptions()); - } - catch(Exception err) - { - - } - } - } - - } - - if (pair.Key == "leave") - { - string dia = pair.Value; - string[] values = dia.Split('\"'); - List goodValues = new List(); - goodValues.Add(values.ElementAt(1)); - goodValues.Add(values.ElementAt(3)); - goodValues.Add(values.ElementAt(5)); - - foreach (var sentence in goodValues) - { - List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence,this); - foreach (var cleanSentence in clean) - { - try - { - this.dialogueCues.Add(cleanSentence, new VoiceAudioOptions()); - } - catch(Exception err) - { - - } - - } - } - - } - - if (pair.Key == "tooBold") - { - string dia = pair.Value; - string[] values = dia.Split('\"'); - List goodValues = new List(); - goodValues.Add(values.ElementAt(1)); - - foreach (var sentence in goodValues) - { - List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence,this); - foreach (var cleanSentence in clean) - { - this.dialogueCues.Add(cleanSentence, new VoiceAudioOptions()); - } - } - } - - if (pair.Key == "poppy" || pair.Key=="heavy" || pair.Key=="techno"|| pair.Key=="honkytonk") - { - string dia = pair.Value; - string[] values = dia.Split('\"'); - List goodValues = new List(); - goodValues.Add(values.ElementAt(1)); - goodValues.Add(values.ElementAt(3)); - goodValues.Add(values.ElementAt(5)); - goodValues.Add(values.ElementAt(7)); - goodValues.Add(values.ElementAt(9)); - goodValues.Add(values.ElementAt(11)); - goodValues.Add(values.ElementAt(13)); - goodValues.Add(values.ElementAt(15)); - goodValues.Add(values.ElementAt(17)); - goodValues.Add(values.ElementAt(19)); - - foreach (var sentence in goodValues) - { - List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence,this); - foreach (var cleanSentence in clean) - { - try - { - this.dialogueCues.Add(cleanSentence, new VoiceAudioOptions()); - } - catch (Exception err) - { - - } - } - } - } - } + stringsFileNames.Add("Temp.xnb"); } else @@ -278,16 +160,13 @@ namespace Vocalization.Framework dialogueFileNames.Add(name + ".xnb"); dialogueFileNames.Add("rainy.xnb"); dialogueFileNames.Add("MarriageDialogue.xnb"); - dialogueFileNames.Add("MarriageDialogue"+name+".xnb"); + dialogueFileNames.Add("MarriageDialogue" + name + ".xnb"); dataFileNames.Add("EngagementDialogue.xnb"); stringsFileNames.Add("StringsFromCSFiles.xnb"); stringsFileNames.Add(name + ".xnb"); } - - - } @@ -299,23 +178,30 @@ namespace Vocalization.Framework { for (int i = 0; i < this.dataFileNames.Count; i++) { + Vocalization.ModMonitor.Log(dataFileNames.ElementAt(i)); string s = dataFileNames.ElementAt(i); s=dataFileNames.ElementAt(i).Replace(".xnb", Vocalization.config.translationInfo.getFileExtentionForTranslation(translation)); dataFileNames[i] = s; + Vocalization.ModMonitor.Log(dataFileNames.ElementAt(i)); + } for (int i = 0; i < this.dialogueFileNames.Count; i++) { + Vocalization.ModMonitor.Log(dialogueFileNames.ElementAt(i)); string s = dialogueFileNames.ElementAt(i); s=dialogueFileNames.ElementAt(i).Replace(".xnb", Vocalization.config.translationInfo.getFileExtentionForTranslation(translation)); dialogueFileNames[i] = s; + Vocalization.ModMonitor.Log(dialogueFileNames.ElementAt(i)); } for (int i = 0; i < this.stringsFileNames.Count; i++) { + Vocalization.ModMonitor.Log(stringsFileNames.ElementAt(i)); string s = stringsFileNames.ElementAt(i); s=stringsFileNames.ElementAt(i).Replace(".xnb", Vocalization.config.translationInfo.getFileExtentionForTranslation(translation)); stringsFileNames[i] = s; + Vocalization.ModMonitor.Log(stringsFileNames.ElementAt(i)); } } diff --git a/GeneralMods/Vocalization/Vocalization/Framework/TranslationInfo.cs b/GeneralMods/Vocalization/Vocalization/Framework/TranslationInfo.cs index f5140504..84ab908e 100644 --- a/GeneralMods/Vocalization/Vocalization/Framework/TranslationInfo.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/TranslationInfo.cs @@ -48,7 +48,7 @@ namespace Vocalization.Framework currentTranslation = "English"; translationFileInfo.Add("English", ".xnb"); - translationFileInfo.Add("Spanish", ".es - ES.xnb"); + translationFileInfo.Add("Spanish", ".es-ES.xnb"); translationFileInfo.Add("Chinese", ".zh-CN.xnb"); translationFileInfo.Add("Japanese", ".ja-JP.xnb"); translationFileInfo.Add("Russian", ".ru-RU.xnb"); @@ -61,13 +61,27 @@ namespace Vocalization.Framework /// /// Gets the proper file extension for the current translation. /// - /// + /// /// - public string getFileExtentionForTranslation(string translation) + public string getFileExtentionForTranslation(string path) { + /* bool f = translationFileInfo.TryGetValue(translation, out string value); if (f == false) return ".xnb"; else return value; + */ + string translation = Path.GetFileName(path); + try + { + return translationFileInfo[translation]; + } + catch(Exception err) + { + + Vocalization.ModMonitor.Log(err.ToString()); + Vocalization.ModMonitor.Log("Attempted to get translation: " + translation); + return ".xnb"; + } } /// @@ -89,227 +103,73 @@ namespace Vocalization.Framework /// public string getXNBForTranslation(string xnbFileName, string translation) { - return xnbFileName + translation; + return xnbFileName + getFileExtentionForTranslation(translation); } + + /// - /// Loads a coresponding string from a data file in Content/Strings + /// Loads an XNB file from StardewValley/Content /// /// /// /// /// - public string LoadStringFromStringsFile(string xnbFileName,string key,string translation) + public string LoadXNBFile(string xnbFileName, string key, string translation) { - string str = "Strings"; string xnb = xnbFileName + getFileExtentionForTranslation(translation); - string path = Path.Combine(str, xnbFileName); - Dictionary loadedDict = Game1.content.Load>(path); - return loadedDict[key]; - } + Dictionary loadedDict = Game1.content.Load>(xnb); - public string LoadStringFromStringsFile(string xnbFileName, string key, string translation, object sub1) - { - string loaded = LoadStringFromStringsFile(xnbFileName, key, translation); - try + string loaded; + bool f = loadedDict.TryGetValue(key, out loaded); + if (f == false) { - return string.Format(loaded, sub1); - } - catch (Exception err) - { - return loaded; - } - } - - public string LoadStringFromStringsFile(string xnbFileName, string key, string translation, object sub1, object sub2) - { - string loaded = LoadStringFromStringsFile(xnbFileName, key, translation); - try - { - return string.Format(loaded, sub1,sub2); - } - catch (Exception err) - { - return loaded; - } - } - - public string LoadStringFromStringsFile(string xnbFileName, string key, string translation, object sub1, object sub2, object sub3) - { - string loaded = LoadStringFromStringsFile(xnbFileName, key, translation); - try - { - return string.Format(loaded, sub1, sub2,sub3); - } - catch (Exception err) - { - return loaded; - } - } - - /// - /// Loads a corresponding string from a data file in Content/Data - /// - /// - /// - /// - /// - public string LoadStringFromDataFile(string xnbFileName, string key, string translation) - { - string str = "Data"; - string xnb = xnbFileName + getFileExtentionForTranslation(translation); - string path = Path.Combine(str, xnbFileName); - Dictionary loadedDict = Game1.content.Load>(path); - string loaded = loadedDict[key]; - return loaded; - } - - public string LoadStringFromDataFile(string xnbFileName, string key, string translation, object sub1) - { - string loaded = LoadStringFromDataFile(xnbFileName, key, translation); - try - { - return string.Format(loaded, sub1); - } - catch (Exception err) - { - return loaded; - } - } - - public string LoadStringFromDataFile(string xnbFileName, string key, string translation, object sub1, object sub2) - { - string loaded = LoadStringFromDataFile(xnbFileName, key, translation); - try - { - return string.Format(loaded, sub1,sub2); - } - catch (Exception err) - { - return loaded; - } - } - - public string LoadStringFromDataFile(string xnbFileName, string key, string translation, object sub1, object sub2, object sub3) - { - string loaded = LoadStringFromDataFile(xnbFileName, key, translation); - try - { - return string.Format(loaded, sub1,sub2,sub3); - } - catch (Exception err) - { - return loaded; + Vocalization.ModMonitor.Log("Big issue: Key not found in file:" + xnb + " " + key); + return ""; } + else return loaded; } public virtual string LoadString(string path, string translation,object sub1, object sub2, object sub3) { - string assetName; - string key; - this.parseStringPath(path, out assetName, out key); - - string[] split = path.Split(new string[]{ Environment.NewLine },StringSplitOptions.None); - string folder = split[0]; - if (folder == "Data") + string format = this.LoadString(path, translation); + try { - if (sub3 != null) { - return LoadStringFromDataFile(assetName, key, translation, sub1, sub2, sub3); - } - if (sub2 != null) - { - return LoadStringFromDataFile(assetName, key, translation, sub1, sub2); - } - - if (sub1 != null) - { - return LoadStringFromDataFile(assetName, key, translation, sub1); - } - return LoadStringFromDataFile(assetName, key, translation); + return string.Format(format, sub1,sub2,sub3); } - if (folder == "Strings") + catch (Exception ex) { - if (sub3 != null) - { - return LoadStringFromStringsFile(assetName, key, translation, sub1, sub2, sub3); - } - if (sub2 != null) - { - return LoadStringFromStringsFile(assetName, key, translation, sub1, sub2); - } - - if (sub1 != null) - { - return LoadStringFromStringsFile(assetName, key, translation, sub1); - } - return LoadStringFromStringsFile(assetName, key, translation); } - return ""; + + return format; } public virtual string LoadString(string path, string translation, object sub1, object sub2) { - string assetName; - string key; - this.parseStringPath(path, out assetName, out key); - - string[] split = path.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); - string folder = split[0]; - if (folder == "Data") + string format = this.LoadString(path, translation); + try { - if (sub2 != null) - { - return LoadStringFromDataFile(assetName, key, translation, sub1, sub2); - } - - if (sub1 != null) - { - return LoadStringFromDataFile(assetName, key, translation, sub1); - } - return LoadStringFromDataFile(assetName, key, translation); + return string.Format(format, sub1,sub2); } - if (folder == "Strings") + catch (Exception ex) { - if (sub2 != null) - { - return LoadStringFromStringsFile(assetName, key, translation, sub1, sub2); - } - - if (sub1 != null) - { - return LoadStringFromStringsFile(assetName, key, translation, sub1); - } - return LoadStringFromStringsFile(assetName, key, translation); } - return ""; + + return format; } public virtual string LoadString(string path, string translation, object sub1) { - string assetName; - string key; - this.parseStringPath(path, out assetName, out key); - - string[] split = path.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); - string folder = split[0]; - if (folder == "Data") - { - - if (sub1 != null) + string format = this.LoadString(path, translation); + try { - return LoadStringFromDataFile(assetName, key, translation, sub1); + return string.Format(format, sub1); } - return LoadStringFromDataFile(assetName, key, translation); - } - if (folder == "Strings") - { - if (sub1 != null) + catch (Exception ex) { - return LoadStringFromStringsFile(assetName, key, translation, sub1); } - return LoadStringFromStringsFile(assetName, key, translation); - } - return ""; + + return format; } public virtual string LoadString(string path, string translation) @@ -318,17 +178,7 @@ namespace Vocalization.Framework string key; this.parseStringPath(path, out assetName, out key); - string[] split = path.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); - string folder = split[0]; - if (folder == "Data") - { - return LoadStringFromDataFile(assetName, key, translation); - } - if (folder == "Strings") { - - return LoadStringFromStringsFile(assetName, key, translation); - } - return ""; + return LoadXNBFile(assetName, key, translation); } public virtual string LoadString(string path,string translation, params object[] substitutions) diff --git a/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs b/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs index d05d5b1c..237e81e7 100644 --- a/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs @@ -11,67 +11,67 @@ namespace Vocalization.Framework public class Vocabulary { - public static string[] getRandomNegativeItemSlanderNouns() + public static string[] getRandomNegativeItemSlanderNouns(string translation) { - string[] strArray = Game1.content.LoadString(Path.Combine("Strings","Lexicon:RandomNegativeItemNoun")).Split('#'); + string[] strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomNegativeItemNoun"),translation).Split('#'); return strArray; } - public static string[] getRandomDeliciousAdjectives(NPC n = null) + public static string[] getRandomDeliciousAdjectives(string translation,NPC n = null) { string[] strArray; if (n != null && n.Age == 2) - strArray = Game1.content.LoadString("Strings\\Lexicon:RandomDeliciousAdjective_Child").Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomDeliciousAdjective_Child"),translation).Split('#'); else - strArray = Game1.content.LoadString("Strings\\Lexicon:RandomDeliciousAdjective").Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomDeliciousAdjective"),translation).Split('#'); return strArray; } - public static string[] getRandomNegativeFoodAdjectives(NPC n = null) + public static string[] getRandomNegativeFoodAdjectives(string translation,NPC n = null) { string[] strArray; if (n != null && n.Age == 2) - strArray = Game1.content.LoadString("Strings\\Lexicon:RandomNegativeFoodAdjective_Child").Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomNegativeFoodAdjective_Child"),translation).Split('#'); else if (n != null && n.Manners == 1) - strArray = Game1.content.LoadString("Strings\\Lexicon:RandomNegativeFoodAdjective_Polite").Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomNegativeFoodAdjective_Polite"),translation).Split('#'); else - strArray = Game1.content.LoadString("Strings\\Lexicon:RandomNegativeFoodAdjective").Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomNegativeFoodAdjective"),translation).Split('#'); return strArray; } - public static string[] getRandomSlightlyPositiveAdjectivesForEdibleNoun(NPC n = null) + public static string[] getRandomSlightlyPositiveAdjectivesForEdibleNoun(string translation,NPC n = null) { - string[] strArray = Game1.content.LoadString("Strings\\Lexicon:RandomSlightlyPositiveFoodAdjective").Split('#'); + string[] strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomSlightlyPositiveFoodAdjective"),translation).Split('#'); return strArray; } - public static string[] getRandomNegativeAdjectivesForEventOrPerson(NPC n = null) + public static string[] getRandomNegativeAdjectivesForEventOrPerson(string translation,NPC n = null) { Random random = new Random((int)Game1.stats.DaysPlayed + (int)Game1.uniqueIDForThisGame / 2); string[] strArray; if (n != null && n.Age != 0) - strArray = Game1.content.LoadString("Strings\\Lexicon:RandomNegativeAdjective_Child").Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomNegativeAdjective_Child"),translation).Split('#'); else if (n != null && n.Gender == 0) - strArray = Game1.content.LoadString("Strings\\Lexicon:RandomNegativeAdjective_AdultMale").Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomNegativeAdjective_AdultMale"),translation).Split('#'); else if (n != null && n.Gender == 1) - strArray = Game1.content.LoadString("Strings\\Lexicon:RandomNegativeAdjective_AdultFemale").Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomNegativeAdjective_AdultFemale"),translation).Split('#'); else - strArray = Game1.content.LoadString("Strings\\Lexicon:RandomNegativeAdjective_PlaceOrEvent").Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomNegativeAdjective_PlaceOrEvent"),translation).Split('#'); return strArray; } - public static string[] getRandomPositiveAdjectivesForEventOrPerson(NPC n = null) + public static string[] getRandomPositiveAdjectivesForEventOrPerson(string translation,NPC n = null) { Random random = new Random((int)Game1.stats.DaysPlayed + (int)Game1.uniqueIDForThisGame / 2); string[] strArray; if (n != null && n.Age != 0) - strArray = Game1.content.LoadString("Strings\\Lexicon:RandomPositiveAdjective_Child").Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomPositiveAdjective_Child"),translation).Split('#'); else if (n != null && n.Gender == 0) - strArray = Game1.content.LoadString("Strings\\Lexicon:RandomPositiveAdjective_AdultMale").Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomPositiveAdjective_AdultMale"),translation).Split('#'); else if (n != null && n.Gender == 1) - strArray = Game1.content.LoadString("Strings\\Lexicon:RandomPositiveAdjective_AdultFemale").Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomPositiveAdjective_AdultFemale"),translation).Split('#'); else - strArray = Game1.content.LoadString("Strings\\Lexicon:RandomPositiveAdjective_PlaceOrEvent").Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomPositiveAdjective_PlaceOrEvent"),translation).Split('#'); return strArray; } diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.cs b/GeneralMods/Vocalization/Vocalization/Vocalization.cs index 20c25ad5..fd5e4dca 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.cs +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.cs @@ -656,7 +656,7 @@ namespace Vocalization List translations = Directory.GetDirectories(VoicePath).ToList(); foreach (var translation in translations) { - List characterVoiceLines = Directory.GetDirectories(translation).ToList(); + string[] characterVoiceLines = Directory.GetDirectories(translation); //get a list of all characters supported in this translation and load their voice cue file. foreach (var dir in characterVoiceLines) { @@ -681,7 +681,9 @@ namespace Vocalization { CharacterVoiceCue cue = new CharacterVoiceCue(characterName); //Change this up for different translations??? + ModMonitor.Log("WTF???"); cue.initializeEnglishScrape(); + ModMonitor.Log("OK SERIOUSLY WTF???"); cue.initializeForTranslation(translation); scrapeDictionaries(voiceCueFile,cue,translation); ///??? DO I NEVER ACTUALLY ADD IT IN??? @@ -914,13 +916,13 @@ namespace Vocalization { if(key== "NewChild_Adoption") { - cue.addDialogue(config.translationInfo.LoadStringFromDataFile("ExtraDialogue",key,translation,replacementStrings.kid1Name), new VoiceAudioOptions()); - cue.addDialogue(config.translationInfo.LoadStringFromDataFile("ExtraDialogue", key, translation, replacementStrings.kid2Name), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data","ExtraDialogue:"+key),translation,replacementStrings.kid1Name), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data","ExtraDialogue:"+key), translation, replacementStrings.kid2Name), new VoiceAudioOptions()); continue; } if(key== "NewChild_FirstChild") { - cue.addDialogue(config.translationInfo.LoadStringFromDataFile("ExtraDialogue", key, translation, replacementStrings.kid1Name), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:"+key), translation, replacementStrings.kid1Name), new VoiceAudioOptions()); continue; } @@ -931,7 +933,7 @@ namespace Vocalization foreach(KeyValuePair pair2 in BuildingDict) { - List cleanedDialogues = sanitizeDialogueFromDictionaries(config.translationInfo.LoadStringFromDataFile("ExtraDialogue",key,translation,pair2.Key),cue); + List cleanedDialogues = sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:"+key),translation,pair2.Key),cue); foreach (var clean_str in cleanedDialogues) { cue.addDialogue(clean_str, new VoiceAudioOptions()); } @@ -973,7 +975,7 @@ namespace Vocalization { foreach(var lvl in levels) { - cue.addDialogue(config.translationInfo.LoadStringFromDataFile("ExtraDialogue", key,translation ,lvl+tool), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data","ExtraDialogue:"+key),translation ,lvl+tool), new VoiceAudioOptions()); } } continue; @@ -1447,6 +1449,139 @@ namespace Vocalization } + else if (cue.name == "Temp") + { + Vocalization.ModMonitor.Log("Scraping dialogue file: Temp.xnb", StardewModdingAPI.LogLevel.Debug); + //dataFileNames.Add(Path.Combine("Events", "Temp.xnb")); + + Dictionary meh = Game1.content.Load>(Path.Combine("Data", "Events", config.translationInfo.getXNBForTranslation("Temp", translation))); + + + foreach (KeyValuePair pair in meh) + { + if (pair.Key == "decorate") + { + string dia = pair.Value; + Vocalization.ModMonitor.Log(dia); + string[] values = dia.Split('\"'); + + foreach (var v in values) + { + Vocalization.ModMonitor.Log(v); + Vocalization.ModMonitor.Log("HELLO?"); + } + + List goodValues = new List(); + goodValues.Add(values.ElementAt(1)); + goodValues.Add(values.ElementAt(3)); + goodValues.Add(values.ElementAt(5)); + + foreach (var sentence in goodValues) + { + List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence, cue); + foreach (var cleanSentence in clean) + { + try + { + cue.dialogueCues.Add(cleanSentence, new VoiceAudioOptions()); + } + catch (Exception err) + { + + } + } + } + + } + + if (pair.Key == "leave") + { + string dia = pair.Value; + string[] values = dia.Split('\"'); + List goodValues = new List(); + goodValues.Add(values.ElementAt(1)); + goodValues.Add(values.ElementAt(3)); + goodValues.Add(values.ElementAt(5)); + + foreach (var sentence in goodValues) + { + List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence, cue); + foreach (var cleanSentence in clean) + { + try + { + cue.dialogueCues.Add(cleanSentence, new VoiceAudioOptions()); + } + catch (Exception err) + { + + } + + } + } + + } + + if (pair.Key == "tooBold") + { + string dia = pair.Value; + string[] values = dia.Split('\"'); + List goodValues = new List(); + goodValues.Add(values.ElementAt(1)); + + foreach (var sentence in goodValues) + { + List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence, cue); + foreach (var cleanSentence in clean) + { + try + { + cue.dialogueCues.Add(cleanSentence, new VoiceAudioOptions()); + } + catch (Exception err) + { + + } + } + } + } + + if (pair.Key == "poppy" || pair.Key == "heavy" || pair.Key == "techno" || pair.Key == "honkytonk") + { + string dia = pair.Value; + string[] values = dia.Split('\"'); + List goodValues = new List(); + goodValues.Add(values.ElementAt(1)); + goodValues.Add(values.ElementAt(3)); + goodValues.Add(values.ElementAt(5)); + goodValues.Add(values.ElementAt(7)); + goodValues.Add(values.ElementAt(9)); + goodValues.Add(values.ElementAt(11)); + goodValues.Add(values.ElementAt(13)); + goodValues.Add(values.ElementAt(15)); + goodValues.Add(values.ElementAt(17)); + goodValues.Add(values.ElementAt(19)); + + foreach (var sentence in goodValues) + { + List clean = Vocalization.sanitizeDialogueFromDictionaries(sentence, cue); + foreach (var cleanSentence in clean) + { + try + { + cue.dialogueCues.Add(cleanSentence, new VoiceAudioOptions()); + } + catch (Exception err) + { + + } + } + } + } + } + } + + //Dialogue scrape for npc specific text. else @@ -1676,7 +1811,11 @@ namespace Vocalization cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4486"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); for (int i = 4507; i <= 4523; i++) { - cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4465"), translation, (object)config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.")+i.ToString(),translation)), cue).ElementAt(0), new VoiceAudioOptions()); + if(i==20 || i == 21) + { + continue; + } + cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4465"), translation,(object)config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.")+i.ToString(),translation)), cue).ElementAt(0), new VoiceAudioOptions()); cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4466"), translation, (object)config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.") + i.ToString(),translation)), cue).ElementAt(0), new VoiceAudioOptions()); } @@ -1731,7 +1870,8 @@ namespace Vocalization } //LOad item dictionary, pass in item and npc, sanitize the output string using the sanitizationDictionary function, and add in the cue! - Dictionary objDict = Game1.content.Load>(Path.Combine("Data", "ObjectInformation.xnb")); + Dictionary objDict = Game1.content.Load>(Path.Combine("Data", config.translationInfo.getXNBForTranslation("ObjectInformation",translation))); + ModMonitor.Log("LOAD THE OBJECT INFO: ", LogLevel.Alert); foreach(KeyValuePair pair in objDict) { for(int i=0; i<=3; i++) { @@ -1747,7 +1887,6 @@ namespace Vocalization foreach (string raw in rawScrape) { - List cleanDialogues = sanitizeDialogueFromDictionaries(raw, cue); foreach (var dia in cleanDialogues) { @@ -1801,7 +1940,7 @@ namespace Vocalization case 0: if (i.quality.Value == 1) { - foreach (string str in Vocabulary.getRandomDeliciousAdjectives(n)) + foreach (string str in Vocabulary.getRandomDeliciousAdjectives(translation,n)) { string str19 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_1_QualityHigh"), translation, (object)str3, (object)str4, (object)i.DisplayName, (object)str); dialogueReturn.Add(str19); @@ -1810,7 +1949,7 @@ namespace Vocalization } if (i.quality.Value == 0) { - foreach (string str in Vocabulary.getRandomNegativeFoodAdjectives(n)) + foreach (string str in Vocabulary.getRandomNegativeFoodAdjectives(translation,n)) { string str18 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_1_QualityLow"), translation, (object)str3, (object)str4, (object)i.DisplayName, (object)str); dialogueReturn.Add(str18); @@ -1826,16 +1965,16 @@ namespace Vocalization { if (i.quality.Value != 2) { - foreach (var word1 in Vocabulary.getRandomNegativeFoodAdjectives(n)) + foreach (var word1 in Vocabulary.getRandomNegativeFoodAdjectives(translation,n)) { - foreach (string word2 in Vocabulary.getRandomNegativeItemSlanderNouns()) { + foreach (string word2 in Vocabulary.getRandomNegativeItemSlanderNouns(translation)) { string str17 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_3_QualityLow_Rude"), translation, (object)str3, (object)str4, (object)i.DisplayName, (object)(i.salePrice() / 2), (object)word1, (object)word2); dialogueReturn.Add(str17); } } break; } - foreach (string word1 in Vocabulary.getRandomSlightlyPositiveAdjectivesForEdibleNoun(n)) + foreach (string word1 in Vocabulary.getRandomSlightlyPositiveAdjectivesForEdibleNoun(translation)) { string str10 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_3_QualityHigh_Rude"), translation, (object)str3, (object)str4, (object)i.DisplayName, (object)(i.salePrice() / 2), (object)word1); dialogueReturn.Add(str10); @@ -1858,7 +1997,7 @@ namespace Vocalization } if (i.Category == -7) { - foreach (string forEventOrPerson in Vocabulary.getRandomPositiveAdjectivesForEventOrPerson(n)) + foreach (string forEventOrPerson in Vocabulary.getRandomPositiveAdjectivesForEventOrPerson(translation)) { string str14 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_5_Cooking"), translation, (object)str3, (object)str4, (object)i.DisplayName, (object)Lexicon.getProperArticleForWord(forEventOrPerson), (object)forEventOrPerson); dialogueReturn.Add(str14); @@ -1895,7 +2034,7 @@ namespace Vocalization { if (i.quality.Value == 0) { - foreach (string word1 in Vocabulary.getRandomNegativeItemSlanderNouns()) + foreach (string word1 in Vocabulary.getRandomNegativeItemSlanderNouns(translation)) { string str12 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Abigail_QualityLow"), translation, (object)str3, (object)str4, (object)i.DisplayName, (object)word1); dialogueReturn.Add(str12); From 7c2f9b5efc2919bdb8af11416aef66609e770acd Mon Sep 17 00:00:00 2001 From: Date: Sun, 19 Aug 2018 02:38:53 -0700 Subject: [PATCH 053/110] Fixed loading issue when checking the current tranlsation. --- .../Vocalization/Vocalization/Vocalization.cs | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.cs b/GeneralMods/Vocalization/Vocalization/Vocalization.cs index fd5e4dca..293ef761 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.cs +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.cs @@ -677,19 +677,16 @@ namespace Vocalization string characterName = Path.GetFileName(dir); //If a file was not found, create one and add it to the list of character voice cues. + //I have to scrape all files if they don't exist so that way all options are available for release. if (!File.Exists(voiceCueFile)) { CharacterVoiceCue cue = new CharacterVoiceCue(characterName); - //Change this up for different translations??? - ModMonitor.Log("WTF???"); cue.initializeEnglishScrape(); - ModMonitor.Log("OK SERIOUSLY WTF???"); cue.initializeForTranslation(translation); scrapeDictionaries(voiceCueFile,cue,translation); - ///??? DO I NEVER ACTUALLY ADD IT IN??? try { - if (translation == config.translationInfo.currentTranslation) + if (Path.GetFileName(translation) == config.translationInfo.currentTranslation) { DialogueCues.Add(characterName, cue); } @@ -701,12 +698,13 @@ namespace Vocalization } else { - CharacterVoiceCue cue = ModHelper.ReadJsonFile(voiceCueFile); - //scrapeDictionaries(voiceCueFile,cue); try { - if (translation == config.translationInfo.currentTranslation) + //Only load in the cues for the current translation. + if (Path.GetFileName(translation) == config.translationInfo.currentTranslation) { + CharacterVoiceCue cue = ModHelper.ReadJsonFile(voiceCueFile); + //scrapeDictionaries(voiceCueFile,cue); DialogueCues.Add(characterName, cue); } } @@ -714,7 +712,6 @@ namespace Vocalization { ModMonitor.Log("WHY NO ADD IN???"+err.ToString()); } - ///??? DO I ACTUALLY NEVER ADD IT IN??? } } } @@ -950,7 +947,7 @@ namespace Vocalization { for (int i = 1; i <= 3; i++) { - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), pair2.Key,i.ToString()), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:" + key),translation, pair2.Key,i.ToString()), new VoiceAudioOptions()); } } continue; From e7f679b036f6623389f35c1367e5ea7ce8205881 Mon Sep 17 00:00:00 2001 From: Date: Sun, 19 Aug 2018 09:30:23 -0700 Subject: [PATCH 054/110] Small update to support festivals? Will need more testing. --- .../Framework/CharacterVoiceCue.cs | 22 +++++++++++++ .../Vocalization/Vocalization/Vocalization.cs | 31 +++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs b/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs index c03a8631..c502124d 100644 --- a/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs @@ -33,12 +33,19 @@ namespace Vocalization.Framework /// public List dataFileNames; + + public List festivalFileNames; + public List eventFileNames; + + /// /// A dictionary of dialogue strings that correspond to audio files. /// public Dictionary dialogueCues; + + /// /// Constructor. /// @@ -50,6 +57,9 @@ namespace Vocalization.Framework this.stringsFileNames = new List(); this.dialogueFileNames = new List(); this.dataFileNames = new List(); + + this.festivalFileNames = new List(); + this.eventFileNames = new List(); } /// @@ -166,6 +176,18 @@ namespace Vocalization.Framework stringsFileNames.Add("StringsFromCSFiles.xnb"); stringsFileNames.Add(name + ".xnb"); + + festivalFileNames.Add("fall16.xnb"); + festivalFileNames.Add("fall27.xnb"); + + festivalFileNames.Add("spring13.xnb"); + festivalFileNames.Add("spring24.xnb"); + + festivalFileNames.Add("summer11.xnb"); + festivalFileNames.Add("summer28.xnb"); + + festivalFileNames.Add("winter8.xnb"); + festivalFileNames.Add("winter25.xnb"); } } diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.cs b/GeneralMods/Vocalization/Vocalization/Vocalization.cs index 293ef761..614b96bc 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.cs +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.cs @@ -727,6 +727,7 @@ namespace Vocalization var dialoguePath = Path.Combine("Characters", "Dialogue"); var stringsPath = Path.Combine("Strings"); //Used for all sorts of extra strings and stuff for like StringsFromCS var dataPath = Path.Combine("Data"); //Used for engagement dialogue strings, and ExtraDialogue, Notes, Secret Notes, Mail + var festivalPath = Path.Combine(dataPath, "Festivals"); ModMonitor.Log("Scraping dialogue for character: " + cue.name,LogLevel.Info); //If the "character"'s name is TV which means I'm watching tv, scrape the data from the TV shows. @@ -1692,6 +1693,35 @@ namespace Vocalization } } } + foreach (var fileName in cue.festivalFileNames) + { + ModMonitor.Log(" Scraping festival file: " + fileName, LogLevel.Info); + //basically this will never run but can be used below to also add in dialogue. + if (!String.IsNullOrEmpty(fileName)) + { + string dialoguePath2 = Path.Combine(festivalPath, fileName); + string root = Game1.content.RootDirectory;///////USE THIS TO CHECK FOR EXISTENCE!!!!! + if (!File.Exists(Path.Combine(root, dialoguePath2))) + { + ModMonitor.Log("Dialogue file not found for:" + fileName + ". This might not necessarily be a mistake just a safety check."); + continue; //If the file is not found for some reason... + } + var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); + + foreach (KeyValuePair pair in DialogueDict) + { + string key = pair.Key; + if (key != cue.name) continue; + string rawDialogue = pair.Value; + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + } + } + } foreach (var fileName in cue.dataFileNames) { ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); @@ -1866,6 +1896,7 @@ namespace Vocalization } } + //LOad item dictionary, pass in item and npc, sanitize the output string using the sanitizationDictionary function, and add in the cue! Dictionary objDict = Game1.content.Load>(Path.Combine("Data", config.translationInfo.getXNBForTranslation("ObjectInformation",translation))); ModMonitor.Log("LOAD THE OBJECT INFO: ", LogLevel.Alert); From 31848881523c6333e3f21104799eacd00413180f Mon Sep 17 00:00:00 2001 From: Date: Sun, 19 Aug 2018 10:56:19 -0700 Subject: [PATCH 055/110] Parsed events? Just need to test to make sure festivals and events work properly. --- .../Framework/CharacterVoiceCue.cs | 31 +++++++++- .../Vocalization/Vocalization/Vocalization.cs | 59 +++++++++++++++++++ 2 files changed, 89 insertions(+), 1 deletion(-) diff --git a/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs b/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs index c502124d..38ccacff 100644 --- a/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs @@ -38,6 +38,7 @@ namespace Vocalization.Framework public List eventFileNames; + /// /// A dictionary of dialogue strings that correspond to audio files. /// @@ -188,6 +189,16 @@ namespace Vocalization.Framework festivalFileNames.Add("winter8.xnb"); festivalFileNames.Add("winter25.xnb"); + + string content = Game1.content.RootDirectory; + string dir = Path.Combine(content, "Data", "Events"); + string[] files = Directory.GetFiles(dir); + foreach(var file in files) + { + string eventFileName = Path.GetFileNameWithoutExtension(file)+".xnb"; + if (eventFileNames.Contains(eventFileName)) continue; + else eventFileNames.Add(eventFileName); + } } } @@ -224,7 +235,25 @@ namespace Vocalization.Framework s=stringsFileNames.ElementAt(i).Replace(".xnb", Vocalization.config.translationInfo.getFileExtentionForTranslation(translation)); stringsFileNames[i] = s; Vocalization.ModMonitor.Log(stringsFileNames.ElementAt(i)); - } + } + + for (int i = 0; i < this.festivalFileNames.Count; i++) + { + Vocalization.ModMonitor.Log(festivalFileNames.ElementAt(i)); + string s = festivalFileNames.ElementAt(i); + s = festivalFileNames.ElementAt(i).Replace(".xnb", Vocalization.config.translationInfo.getFileExtentionForTranslation(translation)); + festivalFileNames[i] = s; + Vocalization.ModMonitor.Log(festivalFileNames.ElementAt(i)); + } + + for (int i = 0; i < this.eventFileNames.Count; i++) + { + Vocalization.ModMonitor.Log(eventFileNames.ElementAt(i)); + string s = eventFileNames.ElementAt(i); + s = eventFileNames.ElementAt(i).Replace(".xnb", Vocalization.config.translationInfo.getFileExtentionForTranslation(translation)); + eventFileNames[i] = s; + Vocalization.ModMonitor.Log(eventFileNames.ElementAt(i)); + } } diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.cs b/GeneralMods/Vocalization/Vocalization/Vocalization.cs index 614b96bc..755d359e 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.cs +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.cs @@ -728,6 +728,7 @@ namespace Vocalization var stringsPath = Path.Combine("Strings"); //Used for all sorts of extra strings and stuff for like StringsFromCS var dataPath = Path.Combine("Data"); //Used for engagement dialogue strings, and ExtraDialogue, Notes, Secret Notes, Mail var festivalPath = Path.Combine(dataPath, "Festivals"); + var eventPath = Path.Combine(dataPath, "Events"); ModMonitor.Log("Scraping dialogue for character: " + cue.name,LogLevel.Info); //If the "character"'s name is TV which means I'm watching tv, scrape the data from the TV shows. @@ -1722,6 +1723,46 @@ namespace Vocalization } } } + + + foreach (var fileName in cue.eventFileNames) + { + ModMonitor.Log(" Scraping event file: " + fileName, LogLevel.Info); + //basically this will never run but can be used below to also add in dialogue. + if (!String.IsNullOrEmpty(fileName)) + { + string dialoguePath2 = Path.Combine(eventPath, fileName); + string root = Game1.content.RootDirectory;///////USE THIS TO CHECK FOR EXISTENCE!!!!! + if (!File.Exists(Path.Combine(root, dialoguePath2))) + { + ModMonitor.Log("Dialogue file not found for:" + fileName + ". This might not necessarily be a mistake just a safety check."); + continue; //If the file is not found for some reason... + } + var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); + + foreach (KeyValuePair pair in DialogueDict) + { + string key = pair.Key; + if (key != cue.name) continue; + string rawDialogue = pair.Value; + + List speakingLines = getEventSpeakerLines(rawDialogue, cue.name); + //Sanitize Event info here! + + + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + } + } + } + + + + foreach (var fileName in cue.dataFileNames) { ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); @@ -1940,6 +1981,24 @@ namespace Vocalization //DialogueCues.Add(cue.name, cue); } + public List getEventSpeakerLines(string rawDialogue, string speakerName) + { + string[] dialogueSplit= rawDialogue.Split('/'); + List speakingData = new List(); + foreach(var dia in dialogueSplit) + { + if (!dia.Contains("speak") && !dia.Contains("textAboveHead") && !dia.Contains(speakerName)) continue; + string[] actualDialogue = dia.Split(new string[] { "\"" }, StringSplitOptions.None); + + ModMonitor.Log(actualDialogue[1]); + //Get the actual dialogue line from this npc. + speakingData.Add(actualDialogue[1]); + } + + + return speakingData; + } + /// /// Function taken from game code to satisfy all dialogue options. From d881946f67da0d908ba51bd62f764d98f89d9fba Mon Sep 17 00:00:00 2001 From: Date: Sun, 19 Aug 2018 11:23:01 -0700 Subject: [PATCH 056/110] Event scrape seems to work! --- .../Framework/CharacterVoiceCue.cs | 10 ++++++--- .../Vocalization/Vocalization/Vocalization.cs | 21 +++++++++++-------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs b/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs index 38ccacff..73f77a2c 100644 --- a/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/CharacterVoiceCue.cs @@ -195,9 +195,13 @@ namespace Vocalization.Framework string[] files = Directory.GetFiles(dir); foreach(var file in files) { - string eventFileName = Path.GetFileNameWithoutExtension(file)+".xnb"; - if (eventFileNames.Contains(eventFileName)) continue; - else eventFileNames.Add(eventFileName); + string eventFileName = Path.GetFileNameWithoutExtension(file); + + string actualName = eventFileName.Split('.').ElementAt(0)+".xnb"; + + //Gte first position of . and split it. The 0 element will be teh actual filename. + if (eventFileNames.Contains(actualName)) continue; + else eventFileNames.Add(actualName); } } } diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.cs b/GeneralMods/Vocalization/Vocalization/Vocalization.cs index 755d359e..8b9236f8 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.cs +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.cs @@ -1743,18 +1743,19 @@ namespace Vocalization foreach (KeyValuePair pair in DialogueDict) { string key = pair.Key; - if (key != cue.name) continue; string rawDialogue = pair.Value; List speakingLines = getEventSpeakerLines(rawDialogue, cue.name); //Sanitize Event info here! - - List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); - foreach (var str in cleanDialogues) + foreach (var line in speakingLines) { - cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(line, cue); + foreach (var str in cleanDialogues) + { + cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } } } } @@ -1987,10 +1988,12 @@ namespace Vocalization List speakingData = new List(); foreach(var dia in dialogueSplit) { - if (!dia.Contains("speak") && !dia.Contains("textAboveHead") && !dia.Contains(speakerName)) continue; + //ModMonitor.Log(dia); + if (!dia.Contains("speak") && !dia.Contains("textAboveHead")) continue; string[] actualDialogue = dia.Split(new string[] { "\"" }, StringSplitOptions.None); - - ModMonitor.Log(actualDialogue[1]); + //Check to make sure this is the speaker's line. + if (!actualDialogue[0].Contains(speakerName)) continue; + //ModMonitor.Log(actualDialogue[1],LogLevel.Alert); //Get the actual dialogue line from this npc. speakingData.Add(actualDialogue[1]); } From fe1ecc44b155f7e866ce6911842c1b50f1ddff14 Mon Sep 17 00:00:00 2001 From: Date: Mon, 20 Aug 2018 12:58:08 -0700 Subject: [PATCH 057/110] Degeneralized shops for Vocalization, fixed output garbage for symphony. --- .../Framework/Music/MusicManager.cs | 4 +- .../Vocalization/Framework/TranslationInfo.cs | 32 +++++- .../Vocalization/Framework/Vocabulary.cs | 98 ++++++++++++++----- .../Vocalization/Vocalization/Vocalization.cs | 53 +++++++++- 4 files changed, 161 insertions(+), 26 deletions(-) diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicManager.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicManager.cs index 254d173a..e4f928f4 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicManager.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicManager.cs @@ -429,7 +429,7 @@ namespace StardewSymphonyRemastered.Framework public Dictionary> getLocationSpecificMusic() { Dictionary> listOfValidDictionaries = new Dictionary>(); - StardewSymphony.ModMonitor.Log(SongSpecifics.getCurrentConditionalString(true)); + //StardewSymphony.ModMonitor.Log(SongSpecifics.getCurrentConditionalString(true)); foreach (var v in this.musicPacks) { @@ -520,7 +520,7 @@ namespace StardewSymphonyRemastered.Framework } else { - StardewSymphony.ModMonitor.Log("HELLO??? LOCATION????"); + //StardewSymphony.ModMonitor.Log("HELLO??? LOCATION????"); //Try to play a generalized festival song. var listOfLocationPacks = this.getLocationSpecificMusic(); if (listOfLocationPacks.Count > 0) diff --git a/GeneralMods/Vocalization/Vocalization/Framework/TranslationInfo.cs b/GeneralMods/Vocalization/Vocalization/Framework/TranslationInfo.cs index 84ab908e..a4844752 100644 --- a/GeneralMods/Vocalization/Vocalization/Framework/TranslationInfo.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/TranslationInfo.cs @@ -28,6 +28,8 @@ namespace Vocalization.Framework /// public Dictionary translationFileInfo; + + public Dictionary translationCodes; /// /// Default constructor. /// @@ -36,7 +38,7 @@ namespace Vocalization.Framework translations = new List(); translationFileInfo = new Dictionary(); - + translationCodes = new Dictionary(); translations.Add("English"); translations.Add("Spanish"); translations.Add("Chinese"); @@ -56,6 +58,34 @@ namespace Vocalization.Framework translationFileInfo.Add("Brazillian Portuguese", ".pt-BR.xnb"); + translationCodes.Add("English", LocalizedContentManager.LanguageCode.en); + translationCodes.Add("Spanish", LocalizedContentManager.LanguageCode.es); + translationCodes.Add("Chinese", LocalizedContentManager.LanguageCode.zh); + translationCodes.Add("Japanese", LocalizedContentManager.LanguageCode.ja); + translationCodes.Add("Russian", LocalizedContentManager.LanguageCode.ru); + translationCodes.Add("German", LocalizedContentManager.LanguageCode.de); + translationCodes.Add("Brazillian Portuguese", LocalizedContentManager.LanguageCode.pt); + + } + + public string getTranslationNameFromPath(string fullPath) + { + return Path.GetFileName(fullPath); + } + + + public void changeLocalizedContentManagerFromTranslation(string translation) + { + string tra = getTranslationNameFromPath(translation); + bool f = translationCodes.TryGetValue(tra, out LocalizedContentManager.LanguageCode code); + if (f == false) LocalizedContentManager.CurrentLanguageCode = LocalizedContentManager.LanguageCode.en; + else LocalizedContentManager.CurrentLanguageCode = code; + return; + } + + public void resetLocalizationCode() + { + LocalizedContentManager.CurrentLanguageCode = LocalizedContentManager.LanguageCode.en; } /// diff --git a/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs b/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs index 237e81e7..e19c580d 100644 --- a/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs @@ -1,11 +1,16 @@ -using StardewValley; +using Microsoft.Xna.Framework; +using Netcode; +using StardewModdingAPI; +using StardewValley; +using StardewValley.BellsAndWhistles; +using StardewValley.Objects; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; - +using sObj = StardewValley.Object; namespace Vocalization.Framework { public class Vocabulary @@ -13,67 +18,116 @@ namespace Vocalization.Framework public static string[] getRandomNegativeItemSlanderNouns(string translation) { - string[] strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomNegativeItemNoun"),translation).Split('#'); + string[] strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings", "Lexicon:RandomNegativeItemNoun"), translation).Split('#'); return strArray; } - public static string[] getRandomDeliciousAdjectives(string translation,NPC n = null) + public static string[] getRandomDeliciousAdjectives(string translation, NPC n = null) { string[] strArray; if (n != null && n.Age == 2) - strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomDeliciousAdjective_Child"),translation).Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings", "Lexicon:RandomDeliciousAdjective_Child"), translation).Split('#'); else - strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomDeliciousAdjective"),translation).Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings", "Lexicon:RandomDeliciousAdjective"), translation).Split('#'); return strArray; } - public static string[] getRandomNegativeFoodAdjectives(string translation,NPC n = null) + public static string[] getRandomNegativeFoodAdjectives(string translation, NPC n = null) { string[] strArray; if (n != null && n.Age == 2) - strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomNegativeFoodAdjective_Child"),translation).Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings", "Lexicon:RandomNegativeFoodAdjective_Child"), translation).Split('#'); else if (n != null && n.Manners == 1) - strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomNegativeFoodAdjective_Polite"),translation).Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings", "Lexicon:RandomNegativeFoodAdjective_Polite"), translation).Split('#'); else - strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomNegativeFoodAdjective"),translation).Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings", "Lexicon:RandomNegativeFoodAdjective"), translation).Split('#'); return strArray; } - public static string[] getRandomSlightlyPositiveAdjectivesForEdibleNoun(string translation,NPC n = null) + public static string[] getRandomSlightlyPositiveAdjectivesForEdibleNoun(string translation, NPC n = null) { - string[] strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomSlightlyPositiveFoodAdjective"),translation).Split('#'); + string[] strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings", "Lexicon:RandomSlightlyPositiveFoodAdjective"), translation).Split('#'); return strArray; } - public static string[] getRandomNegativeAdjectivesForEventOrPerson(string translation,NPC n = null) + public static string[] getRandomNegativeAdjectivesForEventOrPerson(string translation, NPC n = null) { Random random = new Random((int)Game1.stats.DaysPlayed + (int)Game1.uniqueIDForThisGame / 2); string[] strArray; if (n != null && n.Age != 0) - strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomNegativeAdjective_Child"),translation).Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings", "Lexicon:RandomNegativeAdjective_Child"), translation).Split('#'); else if (n != null && n.Gender == 0) - strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomNegativeAdjective_AdultMale"),translation).Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings", "Lexicon:RandomNegativeAdjective_AdultMale"), translation).Split('#'); else if (n != null && n.Gender == 1) - strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomNegativeAdjective_AdultFemale"),translation).Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings", "Lexicon:RandomNegativeAdjective_AdultFemale"), translation).Split('#'); else - strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomNegativeAdjective_PlaceOrEvent"),translation).Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings", "Lexicon:RandomNegativeAdjective_PlaceOrEvent"), translation).Split('#'); return strArray; } - public static string[] getRandomPositiveAdjectivesForEventOrPerson(string translation,NPC n = null) + public static string[] getRandomPositiveAdjectivesForEventOrPerson(string translation, NPC n = null) { Random random = new Random((int)Game1.stats.DaysPlayed + (int)Game1.uniqueIDForThisGame / 2); string[] strArray; if (n != null && n.Age != 0) - strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomPositiveAdjective_Child"),translation).Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings", "Lexicon:RandomPositiveAdjective_Child"), translation).Split('#'); else if (n != null && n.Gender == 0) - strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomPositiveAdjective_AdultMale"),translation).Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings", "Lexicon:RandomPositiveAdjective_AdultMale"), translation).Split('#'); else if (n != null && n.Gender == 1) - strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomPositiveAdjective_AdultFemale"),translation).Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings", "Lexicon:RandomPositiveAdjective_AdultFemale"), translation).Split('#'); else - strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:RandomPositiveAdjective_PlaceOrEvent"),translation).Split('#'); + strArray = Vocalization.config.translationInfo.LoadString(Path.Combine("Strings", "Lexicon:RandomPositiveAdjective_PlaceOrEvent"), translation).Split('#'); return strArray; } + + public static List getCarpenterStock(string translation) + { + List stock = new List(); + Vocalization.config.translationInfo.changeLocalizedContentManagerFromTranslation(translation); + + for(int i=0; i <= 1854; i++) + { + try + { + Furniture f = new Furniture(i, Vector2.Zero); + stock.Add(f.DisplayName); + } + catch(Exception err) + { + + } + } + Vocalization.config.translationInfo.resetLocalizationCode(); + return stock; + } + + public static List getMerchantStock(string translation) + { + List stock = new List(); + Dictionary objDict = Game1.content.Load>(Path.Combine("Data", Vocalization.config.translationInfo.getXNBForTranslation("ObjectInformation", translation))); + Vocalization.ModMonitor.Log("LOAD THE OBJECT INFO: ", LogLevel.Alert); + foreach (KeyValuePair pair in objDict) + { + for (int i = 0; i <= 3; i++) + { + StardewValley.Object obj = new StardewValley.Object(pair.Key, 1, false, -1, i); + stock.Add(obj.DisplayName); + } + } + foreach(var item in getCarpenterStock(translation)) + { + stock.Add(item); + } + return stock; + } + + public static string getProperArticleForWord(string displayName, string translation) + { + Vocalization.config.translationInfo.changeLocalizedContentManagerFromTranslation(translation); + string s=Lexicon.getProperArticleForWord(displayName); + Vocalization.config.translationInfo.resetLocalizationCode(); + return s; + } } } diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.cs b/GeneralMods/Vocalization/Vocalization/Vocalization.cs index 8b9236f8..2ceedf80 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.cs +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.cs @@ -277,6 +277,7 @@ namespace Vocalization { List tries = new List(); tries.Add("SpeechBubbles"); + tries.Add(v.Name); foreach (var speech in tries) { CharacterVoiceCue voice; @@ -875,7 +876,57 @@ namespace Vocalization if (!key.Contains("ShopMenu")) continue; //If the key contains the character's name. - List cleanDialogues = new List(); + + if(key== "ShopMenu.cs.11464") + { + foreach (var obj in Vocabulary.getCarpenterStock(translation)) { + foreach (string word1 in Vocabulary.getRandomPositiveAdjectivesForEventOrPerson(translation, null)) + { + + rawDialogue=config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:ShopMenu.cs.11464"), translation, (object)obj, (object)word1, (object)Vocabulary.getProperArticleForWord(obj,translation)); + List cleanDialogues2 = new List(); + cleanDialogues2 = sanitizeDialogueFromDictionaries(rawDialogue, cue); + foreach (var str in cleanDialogues2) + { + cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + } + } + continue; + } + if(key== "ShopMenu.cs.11502") + { + foreach (var obj in Vocabulary.getMerchantStock(translation)) + { + rawDialogue = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:ShopMenu.cs.11502"), translation, (object)obj); + List cleanDialogues2 = new List(); + cleanDialogues2 = sanitizeDialogueFromDictionaries(rawDialogue, cue); + foreach (var str in cleanDialogues2) + { + cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + + } + continue; + } + + if (key == "ShopMenu.cs.11512") + { + foreach (var obj in Vocabulary.getMerchantStock(translation)) + { + rawDialogue = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:ShopMenu.cs.11512"), translation, (object)obj); + List cleanDialogues2 = new List(); + cleanDialogues2 = sanitizeDialogueFromDictionaries(rawDialogue, cue); + foreach (var str in cleanDialogues2) + { + cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + + } + continue; + } + + List cleanDialogues = new List(); cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) { From 5c114285c502c9839f36c7e10d489eb03f3af839 Mon Sep 17 00:00:00 2001 From: Date: Mon, 20 Aug 2018 13:53:56 -0700 Subject: [PATCH 058/110] Fixed netcode issue for stardust core. --- .../Framework/Music/SongSpecifics.cs | 1 + .../Framework/Music/WavMusicPack.cs | 12 ++++++++++-- .../StardewSymphonyRemastered/manifest.json | 2 +- GeneralMods/StardustCore/ModConfig.cs | 19 +++++++++++++++++++ GeneralMods/StardustCore/ModCore.cs | 15 +++++++++------ .../StardustCore/NetCode/ModdedGameServer.cs | 1 - .../Serialization/Serialization.cs | 6 ++++-- GeneralMods/StardustCore/StardustCore.csproj | 1 + GeneralMods/StardustCore/manifest.json | 2 +- 9 files changed, 46 insertions(+), 13 deletions(-) create mode 100644 GeneralMods/StardustCore/ModConfig.cs diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/SongSpecifics.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/SongSpecifics.cs index 2d314b74..52fcf16b 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/SongSpecifics.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/SongSpecifics.cs @@ -174,6 +174,7 @@ namespace StardewSymphonyRemastered.Framework var farm = (Farm)Game1.getLocationFromName("Farm"); foreach(var building in farm.buildings) { + if (String.IsNullOrEmpty(building.nameOfIndoors)) continue; if (locations.Contains(building.nameOfIndoors)) continue; locations.Add(building.nameOfIndoors); if (StardewSymphony.Config.EnableDebugLog) diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/WavMusicPack.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/WavMusicPack.cs index 5df7df4e..ad3ecbdf 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/WavMusicPack.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/WavMusicPack.cs @@ -118,8 +118,11 @@ namespace StardewSymphonyRemastered.Framework dynamicSound = new DynamicSoundEffectInstance(sampleRate, (AudioChannels)channels); - count = byteArray.Length;//dynamicSound.GetSampleSizeInBytes(TimeSpan.FromMilliseconds(10000)); - + count = dynamicSound.GetSampleSizeInBytes(TimeSpan.FromMilliseconds(10000)); + if (count > byteArray.Length) + { + count = byteArray.Length; + } dynamicSound.BufferNeeded += new EventHandler(DynamicSound_BufferNeeded); this.currentSong = new Song(p); } @@ -131,10 +134,14 @@ namespace StardewSymphonyRemastered.Framework //StardewSymphony.ModMonitor.Log(count.ToString()); try { + dynamicSound.SubmitBuffer(byteArray, position, count); } catch(Exception err) { + StardewSymphony.ModMonitor.Log(byteArray.Length.ToString()); + StardewSymphony.ModMonitor.Log(position.ToString()); + StardewSymphony.ModMonitor.Log(count.ToString()); StardewSymphony.ModMonitor.Log(err.ToString(), StardewModdingAPI.LogLevel.Error); } @@ -150,6 +157,7 @@ namespace StardewSymphonyRemastered.Framework } else { + } } } diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json index 30b1050a..5e6b0b04 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json @@ -1,7 +1,7 @@ { "Name": "Stardew Symphony Remastered", "Author": "Alpha_Omegasis", - "Version": "2.1.1", + "Version": "2.1.2", "Description": "Adding more music to the game one beep at a time. Now with streaming!", "UniqueID": "Omegasis.StardewSymphonyRemastered", "EntryDll": "StardewSymphonyRemastered.dll", diff --git a/GeneralMods/StardustCore/ModConfig.cs b/GeneralMods/StardustCore/ModConfig.cs new file mode 100644 index 00000000..7c44a1c5 --- /dev/null +++ b/GeneralMods/StardustCore/ModConfig.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StardustCore +{ + public class ModConfig + { + public bool enableMultiplayerHack { get; set; } = false; + + public ModConfig() + { + + } + + } +} diff --git a/GeneralMods/StardustCore/ModCore.cs b/GeneralMods/StardustCore/ModCore.cs index 3819000b..2fb081b7 100644 --- a/GeneralMods/StardustCore/ModCore.cs +++ b/GeneralMods/StardustCore/ModCore.cs @@ -36,6 +36,8 @@ namespace StardustCore private Type lastMenuType; + public ModConfig config; + public static string ContentDirectory; public override void Entry(IModHelper helper) { @@ -70,7 +72,8 @@ namespace StardustCore TextureManagers.Add(ModManifest.UniqueID, TextureManager); StardewModdingAPI.Events.ControlEvents.KeyPressed += ControlEvents_KeyPressed; - + config = ModHelper.ReadConfig(); + StardewModdingAPI.Events.GameEvents.UpdateTick += GameEvents_UpdateTick; serverHack = false; @@ -78,7 +81,7 @@ namespace StardustCore private void MenuEvents_MenuClosed(object sender, StardewModdingAPI.Events.EventArgsClickableMenuClosed e) { - if (Game1.IsMasterGame == false) + if (Game1.IsMasterGame == false && config.enableMultiplayerHack) { if (this.lastMenuType == null) { @@ -96,7 +99,7 @@ namespace StardustCore private void MenuEvents_MenuChanged(object sender, StardewModdingAPI.Events.EventArgsClickableMenuChanged e) { - if (Game1.IsMasterGame == false) + if (Game1.IsMasterGame == false && config.enableMultiplayerHack) { if (Game1.activeClickableMenu.GetType() == typeof(StardewValley.Menus.ReadyCheckDialog)) { @@ -147,7 +150,7 @@ namespace StardustCore if (Game1.activeClickableMenu != null) { - if(Game1.activeClickableMenu is StardewValley.Menus.TitleMenu) + if(Game1.activeClickableMenu is StardewValley.Menus.TitleMenu && config.enableMultiplayerHack) { if (TitleMenu.subMenu == null) return; if (TitleMenu.subMenu.GetType() == typeof(FarmhandMenu)) @@ -164,7 +167,7 @@ namespace StardustCore } } - if (Game1.server!=null&& serverHack==false) + if (Game1.server!=null&& serverHack==false && config.enableMultiplayerHack) { ModCore.ModMonitor.Log("OK!"); multiplayer = (Multiplayer)GetInstanceField(typeof(Game1), Program.gamePtr, "multiplayer"); @@ -176,7 +179,7 @@ namespace StardustCore serverHack = true; } - if (Game1.client !=null && serverHack == false) + if (Game1.client !=null && serverHack == false && config.enableMultiplayerHack) { } diff --git a/GeneralMods/StardustCore/NetCode/ModdedGameServer.cs b/GeneralMods/StardustCore/NetCode/ModdedGameServer.cs index 6868e7fd..740c4bc4 100644 --- a/GeneralMods/StardustCore/NetCode/ModdedGameServer.cs +++ b/GeneralMods/StardustCore/NetCode/ModdedGameServer.cs @@ -164,7 +164,6 @@ namespace StardustCore.NetCode ModCore.SerializationManager.cleanUpInventory(); ModCore.SerializationManager.cleanUpWorld(); ModCore.SerializationManager.cleanUpStorageContainers(); - ModCore.ModMonitor.Log("HELLO LOVE!!!"); this.sendMessage(peer, new OutgoingMessage((byte)1, Game1.serverHost.Value, new object[3] { (object)ModCore.multiplayer.writeObjectFullBytes((NetRoot)Game1.serverHost, new long?(peer)), diff --git a/GeneralMods/StardustCore/Serialization/Serialization.cs b/GeneralMods/StardustCore/Serialization/Serialization.cs index 0e289b0e..81382812 100644 --- a/GeneralMods/StardustCore/Serialization/Serialization.cs +++ b/GeneralMods/StardustCore/Serialization/Serialization.cs @@ -239,11 +239,13 @@ namespace StardustCore.Serialization } } } - + if (Game1.getFarm() == null) return; + if (Game1.getFarm().buildings == null) return; //Look through all farm buildings for custom items. foreach (Building building in Game1.getFarm().buildings) { - + if (building == null) continue; + if (String.IsNullOrEmpty(building.nameOfIndoors)) continue; GameLocation loc =Game1.getLocationFromName(building.nameOfIndoors,true); //ModCore.ModMonitor.Log("Cleaning up farm building: "+loc.uniqueName.Value); int i = loc.objects.Pairs.Count(); diff --git a/GeneralMods/StardustCore/StardustCore.csproj b/GeneralMods/StardustCore/StardustCore.csproj index 6c9f7505..2b041fbe 100644 --- a/GeneralMods/StardustCore/StardustCore.csproj +++ b/GeneralMods/StardustCore/StardustCore.csproj @@ -93,6 +93,7 @@ + diff --git a/GeneralMods/StardustCore/manifest.json b/GeneralMods/StardustCore/manifest.json index 9f14a39c..55eb4b79 100644 --- a/GeneralMods/StardustCore/manifest.json +++ b/GeneralMods/StardustCore/manifest.json @@ -1,7 +1,7 @@ { "Name": "StardustCore", "Author": "Alpha_Omegasis", - "Version": "2.0.2", + "Version": "2.0.3", "Description": "A core mod that allows for other mods of mine to be run.", "UniqueID": "Omegasis.StardustCore", "EntryDll": "StardustCore.dll", From 4defd4f24beeebd97a801c0a605741b2b6b44bca Mon Sep 17 00:00:00 2001 From: Date: Mon, 20 Aug 2018 21:19:27 -0700 Subject: [PATCH 059/110] More Symphony bugfixes. Finished degeneralizing Vocalization lines. Not bothering with Utility. --- .../Framework/Menus/MusicManagerMenu.cs | 2 + .../Framework/Music/SongSpecifics.cs | 9 ++- .../Framework/Music/WavMusicPack.cs | 5 -- .../StardewSymphonyRemastered/manifest.json | 2 +- .../Vocalization/Framework/Vocabulary.cs | 40 ++++++++++ .../Vocalization/Vocalization/Vocalization.cs | 75 ++++++++++++++++++- 6 files changed, 124 insertions(+), 9 deletions(-) diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs index ba47da50..adfd467a 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs @@ -2264,6 +2264,8 @@ namespace StardewSymphonyRemastered.Framework.Menus return; } + if (this.currentSelectedSong == null) return; + if (this.currentSelectedSong.label == null) return; info.Value.songInformation.addSongToTriggerList(generateSongTriggerKeyFromSelection(), this.currentSelectedSong.label); } diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/SongSpecifics.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/SongSpecifics.cs index 52fcf16b..5ce138f1 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/SongSpecifics.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/SongSpecifics.cs @@ -583,7 +583,7 @@ namespace StardewSymphonyRemastered.Framework } //return new KeyValuePair>(key, listOfSongsWithTriggers[key]); - + StardewSymphonyRemastered.StardewSymphony.ModMonitor.Log("Getting an invalid song list with key: " + key); return new KeyValuePair>("",null); } @@ -616,7 +616,12 @@ namespace StardewSymphonyRemastered.Framework } var songKeyPair = getSongList(songListKey); //Get the trigger list - + if (songKeyPair.Value == null) + { + if (StardewSymphony.Config.EnableDebugLog) + StardewSymphony.ModMonitor.Log("For some reason you are trying to add a song to a list that is null. The name of the song list is " + songListKey); + return; + } var song = getSongFromList(listOfSongsWithoutTriggers, songName); //Get the song from the master song pool if (song == null) { diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/WavMusicPack.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/WavMusicPack.cs index ad3ecbdf..bfdc4b05 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/WavMusicPack.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/WavMusicPack.cs @@ -134,15 +134,10 @@ namespace StardewSymphonyRemastered.Framework //StardewSymphony.ModMonitor.Log(count.ToString()); try { - dynamicSound.SubmitBuffer(byteArray, position, count); } catch(Exception err) { - StardewSymphony.ModMonitor.Log(byteArray.Length.ToString()); - StardewSymphony.ModMonitor.Log(position.ToString()); - StardewSymphony.ModMonitor.Log(count.ToString()); - StardewSymphony.ModMonitor.Log(err.ToString(), StardewModdingAPI.LogLevel.Error); } //dynamicSound.SubmitBuffer(byteArray); diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json index 5e6b0b04..54628bbf 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json @@ -1,7 +1,7 @@ { "Name": "Stardew Symphony Remastered", "Author": "Alpha_Omegasis", - "Version": "2.1.2", + "Version": "2.1.3", "Description": "Adding more music to the game one beep at a time. Now with streaming!", "UniqueID": "Omegasis.StardewSymphonyRemastered", "EntryDll": "StardewSymphonyRemastered.dll", diff --git a/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs b/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs index e19c580d..609640b8 100644 --- a/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs @@ -81,6 +81,46 @@ namespace Vocalization.Framework } + public static List getSeasons() + { + List seasons = new List(); + seasons.Add("spring"); + seasons.Add("summer"); + seasons.Add("fall"); + seasons.Add("winter"); + return seasons; + } + + /// + /// Gets a list of all of the possible cooking recipes in Stardew Valley. + /// + /// + /// + public static List getAllCookingRecipes(string translation) + { + List recipes = new List(); + Dictionary cookingDict = Game1.content.Load>(Path.Combine("Data", "TV", Vocalization.config.translationInfo.getXNBForTranslation("CookingChannel", translation))); + + if (Vocalization.config.translationInfo.getTranslationNameFromPath(translation) == "English") + { + foreach(KeyValuePair pair in cookingDict) + { + string name = pair.Value.Split('/').ElementAt(0); + recipes.Add(name); + } + } + else + { + foreach (KeyValuePair pair in cookingDict) + { + string[] data = pair.Value.Split('/'); + string name = data.ElementAt(data.Length - 1); + recipes.Add(name); + } + } + return recipes; + } + public static List getCarpenterStock(string translation) { List stock = new List(); diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.cs b/GeneralMods/Vocalization/Vocalization/Vocalization.cs index 2ceedf80..0817d70a 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.cs +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.cs @@ -834,6 +834,79 @@ namespace Vocalization if (!key.Contains("TV")) continue; //If the key contains the character's name. List cleanDialogues = new List(); + + + if(key== "TV.cs.13151") + { + foreach(string recipe in Vocabulary.getAllCookingRecipes(translation)) + { + rawDialogue = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:TV.cs.13151"), translation, (object)recipe); + List cleanDialogues2 = new List(); + cleanDialogues2 = sanitizeDialogueFromDictionaries(rawDialogue, cue); + foreach (var str in cleanDialogues2) + { + cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + } + continue; + } + + + if (key == "TV.cs.13153") + { + foreach (string recipe in Vocabulary.getAllCookingRecipes(translation)) + { + rawDialogue = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:TV.cs.13153"), translation, (object)recipe); + List cleanDialogues2 = new List(); + cleanDialogues2 = sanitizeDialogueFromDictionaries(rawDialogue, cue); + foreach (var str in cleanDialogues2) + { + cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + } + continue; + } + + if (key == "TV.cs.13175") + { + Dictionary dictionary; + foreach (string season in Vocabulary.getSeasons()) + { + for (int i = 1; i <= 28; i++) + { + try + { + dictionary = Game1.content.Load>(Path.Combine("Data", "Festivals", config.translationInfo.getXNBForTranslation(season + (object)(i.ToString()), translation))); + ModMonitor.Log("Scraping TV Festival File: " + season + i.ToString()); + dictionary.TryGetValue("name", out string name); + dictionary.TryGetValue("conditions", out string condition); + string location = condition.Split('/').ElementAt(0); + string times = condition.Split('/').ElementAt(1); + string startTime = times.Split(' ').ElementAt(0); + string finishTime = times.Split(' ').ElementAt(1); + config.translationInfo.changeLocalizedContentManagerFromTranslation(translation); + string dialogueString=config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:TV.cs.13175"), translation, (object)name, (object)location, (object)Game1.getTimeOfDayString(Convert.ToInt32(startTime)), (object)Game1.getTimeOfDayString(Convert.ToInt32(finishTime))); + config.translationInfo.resetLocalizationCode(); + + cleanDialogues = sanitizeDialogueFromDictionaries(dialogueString, cue); + + foreach (var str in cleanDialogues) + { + string ahh = sanitizeDialogueFromMailDictionary(str); + cue.addDialogue(ahh, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + } + + + } + catch(Exception err) + { + //ModMonitor.Log(err.ToString()); + } + } + } + continue; + } + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); foreach (var str in cleanDialogues) @@ -1763,7 +1836,7 @@ namespace Vocalization foreach (KeyValuePair pair in DialogueDict) { string key = pair.Key; - if (key != cue.name) continue; + if (key != cue.name && key!=cue.name+"_spouse") continue; string rawDialogue = pair.Value; List cleanDialogues = new List(); cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); From 8cfff47a58dda86131859e661381eee0474e6c21 Mon Sep 17 00:00:00 2001 From: Date: Thu, 23 Aug 2018 01:23:42 -0700 Subject: [PATCH 060/110] Modular game menu working with Vocalization tab added in. --- GeneralMods/StardewMods.sln | 3 - .../StardustCore/Menus/ModualGameMenu.cs | 339 ++++++++++++++++++ GeneralMods/StardustCore/ModConfig.cs | 2 + GeneralMods/StardustCore/ModCore.cs | 9 +- GeneralMods/StardustCore/StardustCore.csproj | 1 + .../UIUtilities/IClickableMenuExtended.cs | 20 ++ .../UIUtilities/LayeredTexture.cs | 19 +- .../UIUtilities/MenuComponents/Button.cs | 84 ++++- .../Vocalization/Content/Graphics/MenuTab.png | Bin 0 -> 265 bytes .../Content/Graphics/SpeechBubble.png | Bin 0 -> 270 bytes .../Vocalization/Vocalization/Vocalization.cs | 92 +++++ .../Vocalization/Vocalization.csproj | 20 +- .../Vocalization/Vocalization/packages.config | 2 +- 13 files changed, 573 insertions(+), 18 deletions(-) create mode 100644 GeneralMods/StardustCore/Menus/ModualGameMenu.cs create mode 100644 GeneralMods/Vocalization/Vocalization/Content/Graphics/MenuTab.png create mode 100644 GeneralMods/Vocalization/Vocalization/Content/Graphics/SpeechBubble.png diff --git a/GeneralMods/StardewMods.sln b/GeneralMods/StardewMods.sln index 577b29d2..e0d2337c 100644 --- a/GeneralMods/StardewMods.sln +++ b/GeneralMods/StardewMods.sln @@ -75,9 +75,6 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdvancedSaveBackup", "AdvancedSaveBackup\AdvancedSaveBackup.csproj", "{12984468-2B79-4B3B-B045-EE917301DEE0}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Vocalization", "Vocalization\Vocalization\Vocalization.csproj", "{1651701C-DB36-43C7-B66D-2700171DD9A9}" - ProjectSection(ProjectDependencies) = postProject - {7B1E9A54-ED9E-47AA-BBAA-98A6E7CB527A} = {7B1E9A54-ED9E-47AA-BBAA-98A6E7CB527A} - EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/GeneralMods/StardustCore/Menus/ModualGameMenu.cs b/GeneralMods/StardustCore/Menus/ModualGameMenu.cs new file mode 100644 index 00000000..3edfc8d9 --- /dev/null +++ b/GeneralMods/StardustCore/Menus/ModualGameMenu.cs @@ -0,0 +1,339 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +using StardewModdingAPI; +using StardewValley; +using StardewValley.Menus; +using StardustCore.UIUtilities; +using StardustCore.UIUtilities.MenuComponents; + +namespace StardustCore.Menus +{ + public class ModularGameMenu : StardustCore.UIUtilities.IClickableMenuExtended + { + public static SortedDictionary>> StaticMenuTabsAndPages = new SortedDictionary>>(); + + + + public string hoverText = ""; + public string descriptionText = ""; + public Dictionary menuTabsAndPages; + + public Button currentButton; + public IClickableMenuExtended currentMenu; + + public bool invisible; + public static bool forcePreventClose; + + public const int tabsPerPage = 12; + + public ModularGameMenu() + : base(Game1.viewport.Width / 2 - (800 + IClickableMenu.borderWidth * 2) / 2, Game1.viewport.Height / 2 - (600 + IClickableMenu.borderWidth * 2) / 2, 800 + IClickableMenu.borderWidth * 2, 600 + IClickableMenu.borderWidth * 2, true) + { + ModCore.ModMonitor.Log("INITIALIZE MENU: ", LogLevel.Alert); + if (Game1.activeClickableMenu == null) + Game1.playSound("bigSelect"); + GameMenu.forcePreventClose = false; + + this.menuTabsAndPages = new Dictionary(); + ModCore.ModMonitor.Log("INITIALIZE MENU: ", LogLevel.Alert); + foreach (var v in StaticMenuTabsAndPages) + { + ModCore.ModMonitor.Log("LIST A GO GO", LogLevel.Alert); + foreach (var pair in v.Value) + { + this.AddMenuTab(pair.Key, pair.Value.clone()); + ModCore.ModMonitor.Log("ADD IN A PART", LogLevel.Alert); + } + //this.menuTabsAndPages.Add(v.Key,v.Value.clone()); + } + } + + public static void AddTabsForMod(IManifest modManifest, List> menuComponents) + { + StaticMenuTabsAndPages.Add(modManifest.UniqueID, menuComponents); + } + + public void AddMenuTab(Button b, IClickableMenuExtended menu) + { + int count = menuTabsAndPages.Count % tabsPerPage; + int xPos = this.xPositionOnScreen + count * 64; + int yPos = this.yPositionOnScreen; + + b.bounds = new Rectangle(xPos, yPos, b.bounds.Width, b.bounds.Height); + + + if (b.extraTextures == null) + { + menuTabsAndPages.Add(b, menu); + return; + } + for (int i = 0; i < b.extraTextures.Count; i++) + { + ClickableTextureComponent text = b.extraTextures.ElementAt(i).Key; + Rectangle bounds = new Rectangle(b.bounds.X + text.bounds.X, b.bounds.Y + text.bounds.Y, text.bounds.Width, text.bounds.Height); + text.bounds = bounds; + b.extraTextures[i] =new KeyValuePair(text,b.extraTextures.ElementAt(i).Value); + } + + menuTabsAndPages.Add(b, menu); + } + + /// + /// Get how many pages there should be for the modular menu. + /// + public int getNumberOfPages() + { + int count = (menuTabsAndPages.Count / tabsPerPage); + return count; + } + + /// + /// Takes in the static declared tabs and tries to set the menu tabs to that. + /// + /// + public ModularGameMenu(int startingTab) : base(Game1.viewport.Width / 2 - (800 + IClickableMenu.borderWidth * 2) / 2, Game1.viewport.Height / 2 - (600 + IClickableMenu.borderWidth * 2) / 2, 800 + IClickableMenu.borderWidth * 2, 600 + IClickableMenu.borderWidth * 2, true) + { + ModCore.ModMonitor.Log("INITIALIZE MENU: ", LogLevel.Alert); + if (Game1.activeClickableMenu == null) + Game1.playSound("bigSelect"); + GameMenu.forcePreventClose = false; + + this.menuTabsAndPages = new Dictionary(); + ModCore.ModMonitor.Log("INITIALIZE MENU: ", LogLevel.Alert); + foreach (var v in StaticMenuTabsAndPages) + { + ModCore.ModMonitor.Log("LIST A GO GO", LogLevel.Alert); + foreach (var pair in v.Value) + { + this.AddMenuTab(pair.Key, pair.Value.clone()); + ModCore.ModMonitor.Log("ADD IN A PART", LogLevel.Alert); + } + //this.menuTabsAndPages.Add(v.Key,v.Value.clone()); + } + this.changeTab(startingTab); + } + + /// + /// More modular menu to only have a subset of buttons and pages. + /// + /// + /// + public ModularGameMenu(int startingTab, Dictionary tabsAndPages) + : this() + { + foreach (var v in tabsAndPages) + { + this.AddMenuTab(v.Key, v.Value.clone()); + } + this.changeTab(startingTab); + } + + public override void snapToDefaultClickableComponent() + { + /* + if (this.currentTab < this.pages.Count) + this.pages[this.currentTab].snapToDefaultClickableComponent(); + if (this.junimoNoteIcon == null || this.currentTab >= this.pages.Count || this.pages[this.currentTab].allClickableComponents.Contains((ClickableComponent)this.junimoNoteIcon)) + return; + this.pages[this.currentTab].allClickableComponents.Add((ClickableComponent)this.junimoNoteIcon); + */ + currentMenu.snapToDefaultClickableComponent(); + } + + public override void receiveGamePadButton(Buttons b) + { + base.receiveGamePadButton(b); + /* + switch (b) + { + case Buttons.Back: + if (this.currentTab != 0) + break; + this.pages[this.currentTab].receiveGamePadButton(b); + break; + case Buttons.RightTrigger: + if (this.currentTab == 3) + { + Game1.activeClickableMenu = (IClickableMenu)new GameMenu(4, -1); + break; + } + if (this.currentTab >= 7 || !this.pages[this.currentTab].readyToClose()) + break; + this.changeTab(this.currentTab + 1); + break; + case Buttons.LeftTrigger: + if (this.currentTab == 3) + { + Game1.activeClickableMenu = (IClickableMenu)new GameMenu(2, -1); + break; + } + if (this.currentTab <= 0 || !this.pages[this.currentTab].readyToClose()) + break; + this.changeTab(this.currentTab - 1); + break; + } + */ + currentMenu.receiveGamePadButton(b); + } + + public override void setUpForGamePadMode() + { + base.setUpForGamePadMode(); + } + + public override void receiveLeftClick(int x, int y, bool playSound = true) + { + base.receiveLeftClick(x, y, playSound); + //click the menu and stuff here I guess. + foreach (var v in menuTabsAndPages) + { + if (v.Key.containsPoint(x, y)) + { + //Make sub menu this menu value. + } + } + //Check for submenu leftclick + currentMenu.receiveLeftClick(x, y, playSound); + } + + public override void receiveRightClick(int x, int y, bool playSound = true) + { + //base.receiveLeftClick(x, y, playSound); + //click the menu and stuff here I guess. + foreach (var v in menuTabsAndPages) + { + if (v.Key.containsPoint(x, y)) + { + //Make sub menu this menu value. + } + } + //Check for submenu right + currentMenu.receiveRightClick(x, y); + } + + public override void receiveScrollWheelAction(int direction) + { + base.receiveScrollWheelAction(direction); + //this.pages[this.currentTab].receiveScrollWheelAction(direction); + //check for submenu scroll action. + currentMenu.receiveScrollWheelAction(direction); + } + + public override void performHoverAction(int x, int y) + { + base.performHoverAction(x, y); + this.hoverText = ""; + currentMenu.performHoverAction(x, y); + //this.pages[this.currentTab].performHoverAction(x, y); + foreach (var tab in this.menuTabsAndPages) + { + if (tab.Key.containsPoint(x, y)) + { + this.hoverText = tab.Key.label; + return; + } + } + } + + public override void releaseLeftClick(int x, int y) + { + base.releaseLeftClick(x, y); + //this.pages[this.currentTab].releaseLeftClick(x, y); + currentMenu.releaseLeftClick(x, y); + } + + public override void leftClickHeld(int x, int y) + { + base.leftClickHeld(x, y); + //this.pages[this.currentTab].leftClickHeld(x, y); + currentMenu.leftClickHeld(x, y); + } + + public override bool readyToClose() + { + if (!GameMenu.forcePreventClose) + return currentMenu.readyToClose(); + return false; + } + + public void changeTab(int which) + { + currentButton = menuTabsAndPages.ElementAt(which).Key; + currentMenu = menuTabsAndPages.ElementAt(which).Value; + } + + public void setTabNeighborsForCurrentPage() + { + + } + + public override void draw(SpriteBatch b) + { + if (!this.invisible) + { + if (!Game1.options.showMenuBackground) + b.Draw(Game1.fadeToBlackRect, Game1.graphics.GraphicsDevice.Viewport.Bounds, Color.Black * 0.4f); + //Game1.drawDialogueBox(this.xPositionOnScreen, this.yPositionOnScreen, currentMenu.width, currentMenu.height, false, true, (string)null, false); + //this.pages[this.currentTab].draw(b); + drawDialogueBoxBackground(); + + b.End(); + b.Begin(SpriteSortMode.FrontToBack, BlendState.NonPremultiplied, SamplerState.PointClamp, (DepthStencilState)null, (RasterizerState)null); + Dictionary subTabs = new Dictionary(); + for (int i = getNumberOfPages() * tabsPerPage; i < (getNumberOfPages() + 1) * tabsPerPage; i++) + { + if (i >= menuTabsAndPages.Count) break; + else + { + var pair = menuTabsAndPages.ElementAt(i); + subTabs.Add(pair.Key, pair.Value); + } + } + + foreach (var tab in subTabs) + { + if (tab.Key.visible) + { + if (tab.Key == currentButton) + { + tab.Key.draw(b, Color.White, new Vector2(0,0)); + continue; + } + tab.Key.draw(b); + } + } + //currentMenu.draw(b); + + if (Game1.options.hardwareCursor) + return; + b.Draw(Game1.mouseCursors, new Vector2((float)Game1.getOldMouseX(), (float)Game1.getOldMouseY()), new Rectangle?(Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, Game1.options.gamepadControls ? 44 : 0, 16, 16)), Color.White, 0.0f, Vector2.Zero, (float)(4.0 + (double)Game1.dialogueButtonScale / 150.0), SpriteEffects.None, 1f); + } + } + + public override bool areGamePadControlsImplemented() + { + return false; + } + + public override void receiveKeyPress(Keys key) + { + if (((IEnumerable)Game1.options.menuButton).Contains(new InputButton(key)) && this.readyToClose()) + { + Game1.exitActiveMenu(); + Game1.playSound("bigDeSelect"); + } + //this.pages[this.currentTab].receiveKeyPress(key); + currentMenu.receiveKeyPress(key); + } + + public override void emergencyShutDown() + { + base.emergencyShutDown(); + currentMenu.emergencyShutDown(); + } + } +} \ No newline at end of file diff --git a/GeneralMods/StardustCore/ModConfig.cs b/GeneralMods/StardustCore/ModConfig.cs index 7c44a1c5..4ecca703 100644 --- a/GeneralMods/StardustCore/ModConfig.cs +++ b/GeneralMods/StardustCore/ModConfig.cs @@ -9,6 +9,8 @@ namespace StardustCore public class ModConfig { public bool enableMultiplayerHack { get; set; } = false; + public string modularMenuKey { get; set; } = "P"; + public ModConfig() { diff --git a/GeneralMods/StardustCore/ModCore.cs b/GeneralMods/StardustCore/ModCore.cs index 2fb081b7..8ede36c2 100644 --- a/GeneralMods/StardustCore/ModCore.cs +++ b/GeneralMods/StardustCore/ModCore.cs @@ -4,6 +4,7 @@ using StardewModdingAPI; using StardewValley; using StardewValley.Menus; using StardewValley.Network; +using StardustCore.Menus; using StardustCore.ModInfo; using StardustCore.NetCode; using StardustCore.Objects; @@ -30,6 +31,7 @@ namespace StardustCore public static UIUtilities.TextureManager TextureManager; public static Dictionary TextureManagers; + public static Multiplayer multiplayer; bool serverHack; @@ -187,6 +189,10 @@ namespace StardustCore private void ControlEvents_KeyPressed(object sender, StardewModdingAPI.Events.EventArgsKeyPressed e) { + if(e.KeyPressed.ToString()== config.modularMenuKey && Game1.activeClickableMenu==null) + { + Game1.activeClickableMenu = new ModularGameMenu(0); + } } private void SaveEvents_AfterLoad(object sender, EventArgs e) @@ -232,7 +238,8 @@ namespace StardustCore private void ControlEvents_MouseChanged(object sender, StardewModdingAPI.Events.EventArgsMouseStateChanged e) { - + //??? + return; if (Game1.activeClickableMenu == null) return; var MouseState = Mouse.GetState(); if (Game1.activeClickableMenu is StardewValley.Menus.ItemGrabMenu && MouseState.LeftButton == ButtonState.Released) diff --git a/GeneralMods/StardustCore/StardustCore.csproj b/GeneralMods/StardustCore/StardustCore.csproj index 2b041fbe..bc8188ed 100644 --- a/GeneralMods/StardustCore/StardustCore.csproj +++ b/GeneralMods/StardustCore/StardustCore.csproj @@ -93,6 +93,7 @@ + diff --git a/GeneralMods/StardustCore/UIUtilities/IClickableMenuExtended.cs b/GeneralMods/StardustCore/UIUtilities/IClickableMenuExtended.cs index e178a63b..f895e82d 100644 --- a/GeneralMods/StardustCore/UIUtilities/IClickableMenuExtended.cs +++ b/GeneralMods/StardustCore/UIUtilities/IClickableMenuExtended.cs @@ -15,11 +15,31 @@ namespace StardustCore.UIUtilities public List buttons; public Color dialogueBoxBackgroundColor; public List menuTextures; + + public bool showRightCloseButton; + + public IClickableMenuExtended(): base() + { + + } + + public IClickableMenuExtended(int x, int y, int width, int height, bool showCloseButton): base(x, y, width, height, showCloseButton) + { + this.showRightCloseButton = showCloseButton; + } + + public override void receiveRightClick(int x, int y, bool playSound = true) { } + public virtual IClickableMenuExtended clone() + { + return new IClickableMenuExtended(this.xPositionOnScreen, this.yPositionOnScreen, this.width, this.height, this.showRightCloseButton); + + } + /// /// Draws a dialogue box background with the menu's position and dimentions as the paramaters for size and position. /// diff --git a/GeneralMods/StardustCore/UIUtilities/LayeredTexture.cs b/GeneralMods/StardustCore/UIUtilities/LayeredTexture.cs index 3744067e..99cc55e2 100644 --- a/GeneralMods/StardustCore/UIUtilities/LayeredTexture.cs +++ b/GeneralMods/StardustCore/UIUtilities/LayeredTexture.cs @@ -1,4 +1,5 @@ -using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; using System; using System.Collections.Generic; using System.Linq; @@ -12,9 +13,9 @@ namespace StardustCore.UIUtilities /// public class LayeredTexture { - public List textureLayers; + public List> textureLayers; - public LayeredTexture(List textures) + public LayeredTexture(List> textures) { this.textureLayers = textures; } @@ -23,7 +24,7 @@ namespace StardustCore.UIUtilities /// Adds a new texture as the top layer. /// /// - public void addTexture(Texture2DExtended texture) + public void addTexture(KeyValuePair texture) { this.textureLayers.Add(texture); } @@ -33,7 +34,7 @@ namespace StardustCore.UIUtilities /// /// /// - public void addTexture(Texture2DExtended texture, int index) + public void addTexture(KeyValuePairtexture , int index) { this.textureLayers.Insert(index, texture); } @@ -43,5 +44,13 @@ namespace StardustCore.UIUtilities return new LayeredTexture(this.textureLayers); } + public void draw(SpriteBatch b, Color color, float layerDepth) + { + foreach(var texture in this.textureLayers) + { + b.Draw(texture.Value.getTexture(), texture.Key, color); + } + } + } } diff --git a/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs b/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs index 79771249..608527fa 100644 --- a/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs +++ b/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs @@ -1,6 +1,7 @@ using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using StardewValley; +using StardewValley.Menus; using StardustCore.UIUtilities.MenuComponents.Delegates; using StardustCore.UIUtilities.MenuComponents.Delegates.Functionality; using System; @@ -12,14 +13,27 @@ using static StardustCore.UIUtilities.MenuComponents.Delegates.Delegates; namespace StardustCore.UIUtilities.MenuComponents { + public enum ExtraTextureDrawOrder + { + before, + after + } + public class Button : StardewValley.Menus.ClickableTextureComponent { + + + public Animations.AnimationManager animationManager; public Color textureColor; public Color textColor; public ButtonFunctionality buttonFunctionality; + /// + /// A list of textures to be drawn on top of the button. + /// + public List> extraTextures; /// /// Empty Constructor. @@ -38,7 +52,7 @@ namespace StardustCore.UIUtilities.MenuComponents /// /// /// - public Button(string Name,Rectangle Bounds,Texture2DExtended Texture,string displayText,Rectangle sourceRect,float Scale,Animations.Animation defaultAnimation, Color DrawColor,Color TextColor, ButtonFunctionality Functionality, bool AnimationEnabled=true) : base(Bounds,Texture.getTexture(), sourceRect,Scale) + public Button(string Name,Rectangle Bounds,Texture2DExtended Texture,string displayText,Rectangle sourceRect,float Scale,Animations.Animation defaultAnimation, Color DrawColor,Color TextColor, ButtonFunctionality Functionality, bool AnimationEnabled=true,List> extraTexture=null) : base(Bounds,Texture.getTexture(), sourceRect,Scale) { this.animationManager = new Animations.AnimationManager(Texture, defaultAnimation,AnimationEnabled); this.label = displayText; @@ -54,6 +68,10 @@ namespace StardustCore.UIUtilities.MenuComponents this.textColor = StardustCore.IlluminateFramework.Colors.getColorFromList("White"); } this.buttonFunctionality = Functionality; + if (extraTexture == null) extraTexture = new List>(); + extraTextures = extraTexture; + + this.scale = Scale; } /// @@ -70,7 +88,7 @@ namespace StardustCore.UIUtilities.MenuComponents /// /// /// - public Button(string Name,Rectangle Bounds,Texture2DExtended Texture, string displayText, Rectangle sourceRect,float Scale, Animations.Animation defaultAnimation,Dictionary> animationsToPlay,string startingAnimationKey,Color DrawColor,Color TextColor, ButtonFunctionality Functionality,int startingAnimationFrame=0,bool AnimationEnabled=true) : base(Bounds, Texture.getTexture(), sourceRect, Scale) + public Button(string Name,Rectangle Bounds,Texture2DExtended Texture, string displayText, Rectangle sourceRect,float Scale, Animations.Animation defaultAnimation,Dictionary> animationsToPlay,string startingAnimationKey,Color DrawColor,Color TextColor, ButtonFunctionality Functionality,int startingAnimationFrame=0,bool AnimationEnabled=true, List> extraTexture =null) : base(Bounds, Texture.getTexture(), sourceRect, Scale) { this.animationManager = new Animations.AnimationManager(Texture, defaultAnimation, animationsToPlay, startingAnimationKey, startingAnimationFrame, AnimationEnabled); this.label = displayText; @@ -86,6 +104,10 @@ namespace StardustCore.UIUtilities.MenuComponents this.textColor = StardustCore.IlluminateFramework.Colors.getColorFromList("White"); } this.buttonFunctionality = Functionality; + if (extraTexture == null) extraTexture = new List>(); + this.extraTextures = extraTexture; + + this.scale = Scale; } /// @@ -94,9 +116,19 @@ namespace StardustCore.UIUtilities.MenuComponents /// /// /// - public void draw(SpriteBatch b,Color color ,float layerDepth) + public new void draw(SpriteBatch b,Color color ,float layerDepth) { - + if (this.extraTextures != null) + { + foreach (var v in this.extraTextures) + { + if (v.Value == ExtraTextureDrawOrder.before) + { + v.Key.draw(b); + } + } + } + this.animationManager.tickAnimation(); if (!this.visible) return; @@ -119,7 +151,17 @@ namespace StardustCore.UIUtilities.MenuComponents { //Game1.drawDialogueBox(Game1.getMousePosition().X, Game1.getMousePosition().Y, false, false, this.hoverText); //StardustCore.ModCore.ModMonitor.Log("HOVER???"); - b.DrawString(Game1.smallFont, this.hoverText, new Vector2((float)(this.bounds.X + this.bounds.Width), (float)this.bounds.Y + ((float)(this.bounds.Height) - Game1.smallFont.MeasureString(this.label).Y / 2f)), this.textColor,0f,Vector2.Zero,1f,SpriteEffects.None,layerDepth-0.5f); + b.DrawString(Game1.smallFont, this.hoverText, new Vector2((float)(this.bounds.X + this.bounds.Width), (float)this.bounds.Y + ((float)(this.bounds.Height) - Game1.smallFont.MeasureString(this.label).Y / 2f)), this.textColor,0f,Vector2.Zero,scale,SpriteEffects.None,layerDepth-0.5f); + } + if (this.extraTextures != null) + { + foreach(var v in this.extraTextures) + { + if (v.Value == ExtraTextureDrawOrder.after) + { + v.Key.draw(b); + } + } } } @@ -132,7 +174,7 @@ namespace StardustCore.UIUtilities.MenuComponents { if (!this.visible) return; - this.draw(b, Color.White, (float)(0.860000014305115 + (double)this.bounds.Y / 20000.0)); + this.draw(b, Color.White, Vector2.Zero); } /// @@ -144,7 +186,35 @@ namespace StardustCore.UIUtilities.MenuComponents { if (!this.visible) return; - this.draw(b, color, (float)(0.860000014305115 + (double)this.bounds.Y / 20000.0)); + this.draw(b, color, Vector2.Zero); + } + + public virtual void draw(SpriteBatch b, Color color, Vector2 offset) + { + if (this.extraTextures != null) + { + foreach (var v in this.extraTextures) + { + if (v.Value == ExtraTextureDrawOrder.before) + { + v.Key.draw(b,color,0.4f); + } + } + } + + float depth = 0.4f; + b.Draw(this.animationManager.getTexture(), new Vector2(this.bounds.X + (int)offset.X, this.bounds.Y + (int)offset.Y),this.sourceRect,color,0f,Vector2.Zero,this.scale,SpriteEffects.None, depth); + + if (this.extraTextures != null) + { + foreach (var v in this.extraTextures) + { + if (v.Value == ExtraTextureDrawOrder.after) + { + v.Key.draw(b,color,0.4f); + } + } + } } /// diff --git a/GeneralMods/Vocalization/Vocalization/Content/Graphics/MenuTab.png b/GeneralMods/Vocalization/Vocalization/Content/Graphics/MenuTab.png new file mode 100644 index 0000000000000000000000000000000000000000..d7bb377f8ccbd8172aff880e2144dc76c3e8b3f3 GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NS%G}c0*}aI z1_r)EAj~ML;ne^Xlq_+LC<)F_D=AMbN@XZW%*-p%%S$a$Fwry6Gcx?BkU15osLj*G zF(kr0*@6Ayt*HN*oeQr$V7p-wDD1rUAd3O3^xuesKm1Hf4bQ~P;gd9A7uY1B=BIZo zRql>r^D)L9B6g9}-38lbHs}3&P|Bd!{XafSk#q5D_wo}L3K`4}dmdcOCsBG}1+$y1 z!K;Qq_8zN*D~v!PE4~KJhQt|eS&1c|**lrH{9|U2z37&%_O#In=pqJBS3j3^P6NS%G}c0*}aI z1_r)EAj~ML;ne^Xlq_+LC<)F_D=AMbN@XZW%*-p%%S$a$Fwry6Gcx?BkU15osN2)U zF(ktM?c|G`2NZZ*?yi$v`n#m--9`TI8RZ&Zju$0(O;FsV@o+|IiP!lU+{s@o%dp?`yq zPWr^#{u;er2PI6OJ!6u}&U9WI^N!tT!VS~h-uTNxP8^EO!iShc`&OBFd-=%#oyFkk L>gTe~DWM4f0K8wy literal 0 HcmV?d00001 diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.cs b/GeneralMods/Vocalization/Vocalization/Vocalization.cs index 0817d70a..f4b00fe8 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.cs +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.cs @@ -12,6 +12,9 @@ using StardewModdingAPI; using StardewValley; using StardewValley.BellsAndWhistles; using StardewValley.Menus; +using StardustCore.Menus; +using StardustCore.UIUtilities; +using StardustCore.UIUtilities.MenuComponents; using Vocalization.Framework; namespace Vocalization @@ -166,6 +169,7 @@ namespace Vocalization /// public static SimpleSoundManager.Framework.SoundManager soundManager; + /// @@ -190,6 +194,7 @@ namespace Vocalization StardewModdingAPI.Events.SaveEvents.AfterLoad += SaveEvents_AfterLoad; StardewModdingAPI.Events.GameEvents.UpdateTick += GameEvents_UpdateTick; StardewModdingAPI.Events.MenuEvents.MenuClosed += MenuEvents_MenuClosed; + StardewModdingAPI.Events.MenuEvents.MenuChanged += MenuEvents_MenuChanged; ModMonitor = Monitor; ModHelper = Helper; DialogueCues = new Dictionary(); @@ -205,6 +210,15 @@ namespace Vocalization config.verifyValidMode(); //Make sure the current mode is valid. soundManager.volume = config.voiceVolume; //Set the volume for voices. + + } + + private void MenuEvents_MenuChanged(object sender, StardewModdingAPI.Events.EventArgsClickableMenuChanged e) + { + if (Game1.activeClickableMenu.GetType() == typeof(ModularGameMenu)) + { + npcPortraitHack(); + } } /// @@ -233,10 +247,86 @@ namespace Vocalization /// private void SaveEvents_AfterLoad(object sender, EventArgs e) { + + + initialzeModualGameMenuHack(); initialzeDirectories(); loadAllVoiceFiles(); } + /// + /// Initializes the menu tab for Vocalization for the modular menu. + /// + public void initialzeModualGameMenuHack() + { + List textures = new List(); + foreach (GameLocation loc in Game1.locations) + { + foreach (NPC npc in loc.characters) + { + if (npc.isVillager() == false) continue; + Texture2D text = npc.Sprite.Texture; + if (text == null) continue; + textures.Add(text); + } + } + int randNum = Game1.random.Next(0, textures.Count); + Texture2D myText = textures.ElementAt(randNum); + ClickableTextureComponent c = new ClickableTextureComponent(new Rectangle(0, 16, 16, 24), myText, new Rectangle(0, 0, 16, 24), 2f, false); + + ClickableTextureComponent speech = new ClickableTextureComponent(new Rectangle(0, 0, 32, 32), ModHelper.Content.Load (Path.Combine("Content", "Graphics", "SpeechBubble.png")), new Rectangle(0, 0, 32, 32), 2f, false); + List> components = new List>(); + + components.Add(new KeyValuePair(c,ExtraTextureDrawOrder.after)); + components.Add(new KeyValuePair(speech, ExtraTextureDrawOrder.after)); + + Button menuTab = new Button("Vocalization", new Rectangle(0, 0, 32, 32), new Texture2DExtended(ModHelper, ModManifest, Path.Combine("Content", "Graphics", "MenuTab.png")), "Vocalization", new Rectangle(0, 0, 32, 32), 2f, new StardustCore.Animations.Animation(new Rectangle(0, 0, 32, 32)), Color.White, Color.White, new StardustCore.UIUtilities.MenuComponents.Delegates.Functionality.ButtonFunctionality(new StardustCore.UIUtilities.MenuComponents.Delegates.DelegatePairing(null,null), new StardustCore.UIUtilities.MenuComponents.Delegates.DelegatePairing(null,null), new StardustCore.UIUtilities.MenuComponents.Delegates.DelegatePairing(null,null)), false, components); + + //Change this to take the vocalization menu instead + List> modTabs = new List>(); + modTabs.Add(new KeyValuePair(menuTab, new IClickableMenuExtended(0,0,300,300,false))); + StardustCore.Menus.ModularGameMenu.AddTabsForMod(ModManifest,modTabs); + + ModMonitor.Log("VOCALIZATION MENU HACK COMPLETE!", LogLevel.Alert); + } + + /// + /// Randomize the npc below the speech bubble every time the modular game menu is drawn. + /// + public void npcPortraitHack() + { + List> menuHacks = new List>(); + + List textures = new List(); + foreach (GameLocation loc in Game1.locations) + { + foreach (NPC npc in loc.characters) + { + if (npc.isVillager() == false) continue; + Texture2D text = npc.Sprite.Texture; + textures.Add(text); + } + } + int randNum = Game1.random.Next(0, textures.Count); + Texture2D myText = textures.ElementAt(randNum); + ClickableTextureComponent c = new ClickableTextureComponent(new Rectangle(0, 16, 16, 24), myText, new Rectangle(0, 0, 16, 24), 2f, false); + List> components = new List>(); + + + ClickableTextureComponent speech = new ClickableTextureComponent(new Rectangle(0, 0, 32, 32), ModHelper.Content.Load(Path.Combine("Content", "Graphics", "SpeechBubble.png")), new Rectangle(0, 0, 32, 32), 2f, false); + + components.Add(new KeyValuePair(c, ExtraTextureDrawOrder.after)); + components.Add(new KeyValuePair(speech, ExtraTextureDrawOrder.after)); + + Button menuTab = new Button("Vocalization", new Rectangle(0,0, 32, 32), new Texture2DExtended(ModHelper, ModManifest, Path.Combine("Content", "Graphics", "MenuTab.png")), "Vocalization", new Rectangle(0, 0, 32, 32), 2f, new StardustCore.Animations.Animation(new Rectangle(0, 0, 32, 32)), Color.White, Color.White, new StardustCore.UIUtilities.MenuComponents.Delegates.Functionality.ButtonFunctionality(null, null, null), false, components); + + //Change this to take the vocalization menu instead + List> modTabs = new List>(); + modTabs.Add(new KeyValuePair(menuTab, new IClickableMenuExtended(0, 0, 300, 300,false))); + + StardustCore.Menus.ModularGameMenu.StaticMenuTabsAndPages[ModManifest.UniqueID] = modTabs; + } + public static object GetInstanceField(Type type, object instance, string fieldName) { BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static; @@ -499,9 +589,11 @@ namespace Vocalization { string basePath = ModHelper.DirectoryPath; string contentPath = Path.Combine(basePath, "Content"); + string graphicsPath = Path.Combine(contentPath, "Graphics"); string audioPath = Path.Combine(contentPath, "Audio"); string voicePath = Path.Combine(audioPath, "VoiceFiles"); + if (!Directory.Exists(graphicsPath)) Directory.CreateDirectory(graphicsPath); VoicePath = voicePath; //Set a static reference to my voice files directory. diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.csproj b/GeneralMods/Vocalization/Vocalization/Vocalization.csproj index b2b86b6a..80d9bcd3 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.csproj +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.csproj @@ -61,7 +61,23 @@ - + + + {0756D36A-95C8-480D-8EA6-4584C03010C6} + StardustCore + + + + + + + + Always + + + Always + + @@ -69,5 +85,7 @@ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + \ No newline at end of file diff --git a/GeneralMods/Vocalization/Vocalization/packages.config b/GeneralMods/Vocalization/Vocalization/packages.config index 33db9a9b..28b59b1d 100644 --- a/GeneralMods/Vocalization/Vocalization/packages.config +++ b/GeneralMods/Vocalization/Vocalization/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file From 721f9747863daef4df0740c03de02f337ed39f0f Mon Sep 17 00:00:00 2001 From: Date: Thu, 23 Aug 2018 09:42:54 -0700 Subject: [PATCH 061/110] Tab page index and find tab by label implemented. Need to make cycle buttons now. --- .../StardustCore/Menus/ModualGameMenu.cs | 132 ++++++++++++++++-- 1 file changed, 118 insertions(+), 14 deletions(-) diff --git a/GeneralMods/StardustCore/Menus/ModualGameMenu.cs b/GeneralMods/StardustCore/Menus/ModualGameMenu.cs index 3edfc8d9..b0f7a24a 100644 --- a/GeneralMods/StardustCore/Menus/ModualGameMenu.cs +++ b/GeneralMods/StardustCore/Menus/ModualGameMenu.cs @@ -12,6 +12,10 @@ using StardustCore.UIUtilities.MenuComponents; namespace StardustCore.Menus { + /// + /// TODO: + /// makebuttons to cycle through page + /// public class ModularGameMenu : StardustCore.UIUtilities.IClickableMenuExtended { public static SortedDictionary>> StaticMenuTabsAndPages = new SortedDictionary>>(); @@ -30,6 +34,8 @@ namespace StardustCore.Menus public const int tabsPerPage = 12; + public int currentPageIndex; + public ModularGameMenu() : base(Game1.viewport.Width / 2 - (800 + IClickableMenu.borderWidth * 2) / 2, Game1.viewport.Height / 2 - (600 + IClickableMenu.borderWidth * 2) / 2, 800 + IClickableMenu.borderWidth * 2, 600 + IClickableMenu.borderWidth * 2, true) { @@ -114,16 +120,42 @@ namespace StardustCore.Menus } //this.menuTabsAndPages.Add(v.Key,v.Value.clone()); } + currentPageIndex = startingTab % tabsPerPage; this.changeTab(startingTab); } + /// + /// Takes in the static declared tabs and tries to set the menu tabs to that. + /// + /// + public ModularGameMenu(string startingTab) : base(Game1.viewport.Width / 2 - (800 + IClickableMenu.borderWidth * 2) / 2, Game1.viewport.Height / 2 - (600 + IClickableMenu.borderWidth * 2) / 2, 800 + IClickableMenu.borderWidth * 2, 600 + IClickableMenu.borderWidth * 2, true) + { + ModCore.ModMonitor.Log("INITIALIZE MENU: ", LogLevel.Alert); + if (Game1.activeClickableMenu == null) + Game1.playSound("bigSelect"); + GameMenu.forcePreventClose = false; + + this.menuTabsAndPages = new Dictionary(); + ModCore.ModMonitor.Log("INITIALIZE MENU: ", LogLevel.Alert); + foreach (var v in StaticMenuTabsAndPages) + { + ModCore.ModMonitor.Log("LIST A GO GO", LogLevel.Alert); + foreach (var pair in v.Value) + { + this.AddMenuTab(pair.Key, pair.Value.clone()); + ModCore.ModMonitor.Log("ADD IN A PART", LogLevel.Alert); + } + //this.menuTabsAndPages.Add(v.Key,v.Value.clone()); + } + this.changeTab(getTabIndexFromName(startingTab)); + } + /// /// More modular menu to only have a subset of buttons and pages. /// /// /// - public ModularGameMenu(int startingTab, Dictionary tabsAndPages) - : this() + public ModularGameMenu(int startingTab, Dictionary tabsAndPages): base(Game1.viewport.Width / 2 - (800 + IClickableMenu.borderWidth* 2) / 2, Game1.viewport.Height / 2 - (600 + IClickableMenu.borderWidth* 2) / 2, 800 + IClickableMenu.borderWidth* 2, 600 + IClickableMenu.borderWidth* 2, true) { foreach (var v in tabsAndPages) { @@ -132,6 +164,34 @@ namespace StardustCore.Menus this.changeTab(startingTab); } + /// + /// More modular menu to only have a subset of buttons and pages. + /// + /// + /// + public ModularGameMenu(string startingTab, Dictionary tabsAndPages) : base(Game1.viewport.Width / 2 - (800 + IClickableMenu.borderWidth * 2) / 2, Game1.viewport.Height / 2 - (600 + IClickableMenu.borderWidth * 2) / 2, 800 + IClickableMenu.borderWidth * 2, 600 + IClickableMenu.borderWidth * 2, true) + { + foreach (var v in tabsAndPages) + { + this.AddMenuTab(v.Key, v.Value.clone()); + } + this.changeTab(getTabIndexFromName(startingTab)); + } + + + public int getTabIndexFromName(string tabLabel) + { + for(int i=0; i < this.menuTabsAndPages.Count; i++) + { + var ok = this.menuTabsAndPages.ElementAt(i); + if (ok.Key.label == tabLabel) + { + return i; + } + } + return 0; //If I can't find it just do a default. + } + public override void snapToDefaultClickableComponent() { /* @@ -189,13 +249,30 @@ namespace StardustCore.Menus { base.receiveLeftClick(x, y, playSound); //click the menu and stuff here I guess. - foreach (var v in menuTabsAndPages) + Dictionary subTabs = new Dictionary(); + for (int i = currentPageIndex * tabsPerPage; i < (currentPageIndex + 1) * tabsPerPage; i++) { - if (v.Key.containsPoint(x, y)) + if (i >= menuTabsAndPages.Count) break; + else { - //Make sub menu this menu value. + var pair = menuTabsAndPages.ElementAt(i); + subTabs.Add(pair.Key, pair.Value); } } + + foreach (var tab in subTabs) + { + if (tab.Key.containsPoint(x, y)) + { + ModCore.ModMonitor.Log(tab.Key.label); + //this.hoverText = tab.Key.label; + changeTab(tab.Key, tab.Value); + + return; + } + } + + //Check for submenu leftclick currentMenu.receiveLeftClick(x, y, playSound); } @@ -204,13 +281,7 @@ namespace StardustCore.Menus { //base.receiveLeftClick(x, y, playSound); //click the menu and stuff here I guess. - foreach (var v in menuTabsAndPages) - { - if (v.Key.containsPoint(x, y)) - { - //Make sub menu this menu value. - } - } + //Check for submenu right currentMenu.receiveRightClick(x, y); } @@ -229,7 +300,19 @@ namespace StardustCore.Menus this.hoverText = ""; currentMenu.performHoverAction(x, y); //this.pages[this.currentTab].performHoverAction(x, y); - foreach (var tab in this.menuTabsAndPages) + + Dictionary subTabs = new Dictionary(); + for (int i = currentPageIndex * tabsPerPage; i < (currentPageIndex + 1) * tabsPerPage; i++) + { + if (i >= menuTabsAndPages.Count) break; + else + { + var pair = menuTabsAndPages.ElementAt(i); + subTabs.Add(pair.Key, pair.Value); + } + } + + foreach (var tab in subTabs) { if (tab.Key.containsPoint(x, y)) { @@ -243,9 +326,23 @@ namespace StardustCore.Menus { base.releaseLeftClick(x, y); //this.pages[this.currentTab].releaseLeftClick(x, y); + + currentMenu.releaseLeftClick(x, y); } + public void pageBack() + { + if (this.currentPageIndex == 0) return; + else this.currentPageIndex--; + } + + public void pageForward() + { + if (this.currentPageIndex >= getNumberOfPages()) return; + else currentPageIndex++; + } + public override void leftClickHeld(int x, int y) { base.leftClickHeld(x, y); @@ -262,10 +359,17 @@ namespace StardustCore.Menus public void changeTab(int which) { + currentPageIndex = which % tabsPerPage; currentButton = menuTabsAndPages.ElementAt(which).Key; currentMenu = menuTabsAndPages.ElementAt(which).Value; } + public void changeTab(Button b, IClickableMenuExtended menu) + { + currentButton = b; + currentMenu = menu; + } + public void setTabNeighborsForCurrentPage() { @@ -284,7 +388,7 @@ namespace StardustCore.Menus b.End(); b.Begin(SpriteSortMode.FrontToBack, BlendState.NonPremultiplied, SamplerState.PointClamp, (DepthStencilState)null, (RasterizerState)null); Dictionary subTabs = new Dictionary(); - for (int i = getNumberOfPages() * tabsPerPage; i < (getNumberOfPages() + 1) * tabsPerPage; i++) + for (int i = currentPageIndex * tabsPerPage; i < (currentPageIndex + 1) * tabsPerPage; i++) { if (i >= menuTabsAndPages.Count) break; else From 384370906e4be9e54a4211fb245e636f2a617715 Mon Sep 17 00:00:00 2001 From: Date: Thu, 23 Aug 2018 21:40:03 -0700 Subject: [PATCH 062/110] Fixes for Symphony Menu Issues. --- .../Framework/Menus/MusicManagerMenu.cs | 34 ++++++++++++++++--- .../Framework/Music/SongSpecifics.cs | 30 ++++++---------- .../UIUtilities/MenuComponents/Button.cs | 4 +++ 3 files changed, 43 insertions(+), 25 deletions(-) diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs index adfd467a..0c84a933 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs @@ -2248,7 +2248,7 @@ namespace StardewSymphonyRemastered.Framework.Menus var info = (KeyValuePair)this.currentMusicPackAlbum.buttonFunctionality.leftClick.paramaters[0]; - + StardewSymphony.ModMonitor.Log(generateSongTriggerKeyFromSelection()); //Add generic festival music. if (this.drawMode == DrawMode.FestivalSelection) { @@ -2304,10 +2304,20 @@ namespace StardewSymphonyRemastered.Framework.Menus { if (this.currentlySelectedOption.name == "SpringButton" || this.currentlySelectedOption.name == "SummerButton" || this.currentlySelectedOption.name=="FallButton"|| this.currentlySelectedOption.name=="WinterButton") { - if (this.currentlySelectedOption.name== "SpringButton") key += "spring"; - if (this.currentlySelectedOption.name == "SummerButton") key += "summer"; - if (this.currentlySelectedOption.name == "FallButton") key += "fall"; - if (this.currentlySelectedOption.name == "WinterButton") key += "winter"; + if (this.currentlySelectedOption.name == "SpringButton") key += "spring"; + else if (this.currentlySelectedOption.name == "SummerButton") key += "summer"; + else if (this.currentlySelectedOption.name == "FallButton") key += "fall"; + else if (this.currentlySelectedOption.name == "WinterButton") key += "winter"; + else + { + StardewSymphony.ModMonitor.Log("Error: You are not in a valid menu area to set the song information. Please make sure that a valid season is selected for the song options", StardewModdingAPI.LogLevel.Alert); + return ""; + } + } + else + { + StardewSymphony.ModMonitor.Log("Error: You are not in a valid menu area to set the song information. Please make sure that a valid season is selected for the song options", StardewModdingAPI.LogLevel.Alert); + return ""; } } if (this.currentlySelectedWeather != null) @@ -2374,6 +2384,7 @@ namespace StardewSymphonyRemastered.Framework.Menus { this.texturedStrings.Clear(); this.drawMode = DrawMode.AlbumFancySelection; + this.currentMusicPackAlbum = null; updateFancyButtons(); return; } @@ -2381,6 +2392,7 @@ namespace StardewSymphonyRemastered.Framework.Menus if (this.drawMode == DrawMode.DifferentSelectionTypesMode) { this.drawMode = DrawMode.SongSelectionMode; + this.currentSelectedSong = null; this.currentSongPageIndex = 0; updateFancyButtons(); return; @@ -2389,6 +2401,7 @@ namespace StardewSymphonyRemastered.Framework.Menus if (this.drawMode == DrawMode.WeatherSelection) { this.drawMode = DrawMode.SeasonSelection; + //Error check is already done for this in the getKey function updateFancyButtons(); return; } @@ -2396,6 +2409,7 @@ namespace StardewSymphonyRemastered.Framework.Menus if (this.drawMode == DrawMode.TimeSelection) { this.drawMode = DrawMode.WeatherSelection; + this.currentlySelectedWeather = null; updateFancyButtons(); return; } @@ -2406,10 +2420,12 @@ namespace StardewSymphonyRemastered.Framework.Menus { selectedJustLocation = false; this.drawMode = DrawMode.DifferentSelectionTypesMode; + this.currentlySelectedOption = null; updateFancyButtons(); return; } this.drawMode = DrawMode.TimeSelection; + this.currentlySelectedTime = null; updateFancyButtons(); return; } @@ -2417,6 +2433,7 @@ namespace StardewSymphonyRemastered.Framework.Menus if (this.drawMode == DrawMode.DaySelection) { this.drawMode = DrawMode.LocationSelection; + this.currentlySelectedLocation = null; this.locationPageIndex = 0; updateFancyButtons(); return; @@ -2427,10 +2444,12 @@ namespace StardewSymphonyRemastered.Framework.Menus if (this.selectedJustLocation) { this.drawMode = DrawMode.LocationSelection; + this.currentlySelectedLocation = null; updateFancyButtons(); return; } this.drawMode = DrawMode.DaySelection; + this.currentlySelectedDay = null; updateFancyButtons(); return; } @@ -2438,6 +2457,7 @@ namespace StardewSymphonyRemastered.Framework.Menus if (this.drawMode == DrawMode.EventSelection || this.drawMode == DrawMode.FestivalSelection || this.drawMode == DrawMode.MenuSelection) { this.drawMode = DrawMode.DifferentSelectionTypesMode; + this.currentlySelectedOption = null; updateFancyButtons(); return; } @@ -2445,6 +2465,7 @@ namespace StardewSymphonyRemastered.Framework.Menus if (this.drawMode == DrawMode.SelectedEvent) { this.drawMode = DrawMode.EventSelection; + this.currentlySelectedEvent = null; updateFancyButtons(); this.eventPageIndex = 0; return; @@ -2453,6 +2474,7 @@ namespace StardewSymphonyRemastered.Framework.Menus if (this.drawMode == DrawMode.SelectedFestival) { this.drawMode = DrawMode.FestivalSelection; + this.currentlySelectedFestival = null; updateFancyButtons(); this.festivalPageIndex = 0; return; @@ -2461,6 +2483,7 @@ namespace StardewSymphonyRemastered.Framework.Menus if (this.drawMode == DrawMode.SelectedMenu) { this.drawMode = DrawMode.MenuSelection; + this.currentlySelectedMenu = null; updateFancyButtons(); this.menuPageIndex = 0; return; @@ -2469,6 +2492,7 @@ namespace StardewSymphonyRemastered.Framework.Menus if (this.drawMode == DrawMode.SeasonSelection) { this.drawMode = DrawMode.DifferentSelectionTypesMode; + this.currentlySelectedOption = null; updateFancyButtons(); this.menuPageIndex = 0; return; diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/SongSpecifics.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/SongSpecifics.cs index 5ce138f1..5115a59a 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/SongSpecifics.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/SongSpecifics.cs @@ -53,10 +53,11 @@ namespace StardewSymphonyRemastered.Framework weather = new string[] { "sunny", - "rainy", + "rain", "debris", "lightning", "snow", + "festival", "wedding" }; daysOfWeek = new string[] @@ -299,7 +300,7 @@ namespace StardewSymphonyRemastered.Framework public static string getWeatherString() { - if (Game1.isRaining && Game1.isLightning==false) return "rainy"; + if (Game1.isRaining && Game1.isLightning==false) return "rain"; if (Game1.isLightning) return "lightning"; if (Game1.isDebrisWeather) return "debris"; //???? if (Game1.isSnowing) return "snow"; @@ -562,28 +563,17 @@ namespace StardewSymphonyRemastered.Framework /// public KeyValuePair>getSongList(string key) { - string keyPhrase = ""; - string keyPhraseInfo = ""; - try + + if (!listOfSongsWithTriggers.ContainsKey(key)) return new KeyValuePair>("",null); + + //This is just the plain song name with no extra info. + foreach (KeyValuePair> pair in listOfSongsWithTriggers) { - keyPhrase= key.Split(seperator).ElementAt(0); - keyPhraseInfo= key.Split(seperator).ElementAt(1); - } - catch(Exception err) - { - err.ToString(); - keyPhrase = key; - } - - //This is just the plain song name with no extra info. - foreach(KeyValuePair> pair in listOfSongsWithTriggers) - { //StardewSymphony.ModMonitor.Log(pair.Key); if (pair.Key == key) return pair; - } + } + - //return new KeyValuePair>(key, listOfSongsWithTriggers[key]); - StardewSymphonyRemastered.StardewSymphony.ModMonitor.Log("Getting an invalid song list with key: " + key); return new KeyValuePair>("",null); } diff --git a/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs b/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs index 608527fa..26be1c3c 100644 --- a/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs +++ b/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs @@ -215,6 +215,10 @@ namespace StardustCore.UIUtilities.MenuComponents } } } + if (string.IsNullOrEmpty(this.label)) + return; + b.DrawString(Game1.smallFont, this.label, new Vector2((float)(this.bounds.X + this.bounds.Width), (float)this.bounds.Y + ((float)(this.bounds.Height / 2) - Game1.smallFont.MeasureString(this.label).Y / 2f)), textColor); + } /// From c0c143ccd8c24503587735312601f955ccf38ac3 Mon Sep 17 00:00:00 2001 From: Date: Fri, 24 Aug 2018 18:52:43 -0700 Subject: [PATCH 063/110] Vocalization actual menu? But no background??? --- .../StardewSymphonyRemastered/manifest.json | 2 +- .../StardustCore/Menus/ModualGameMenu.cs | 2 +- GeneralMods/StardustCore/StardustCore.csproj | 1 + .../UIUtilities/MenuComponents/Button.cs | 59 ++- .../MenuComponents/SliderButton.cs | 437 ++++++++++++++++++ GeneralMods/StardustCore/manifest.json | 2 +- .../Content/Graphics/SliderBar.png | Bin 0 -> 205 bytes .../Content/Graphics/SliderButton.png | Bin 0 -> 180 bytes .../Framework/Menus/VocalizationMenu.cs | 69 +++ .../Vocalization/Vocalization/Vocalization.cs | 11 +- .../Vocalization/Vocalization.csproj | 7 + 11 files changed, 582 insertions(+), 8 deletions(-) create mode 100644 GeneralMods/StardustCore/UIUtilities/MenuComponents/SliderButton.cs create mode 100644 GeneralMods/Vocalization/Vocalization/Content/Graphics/SliderBar.png create mode 100644 GeneralMods/Vocalization/Vocalization/Content/Graphics/SliderButton.png create mode 100644 GeneralMods/Vocalization/Vocalization/Framework/Menus/VocalizationMenu.cs diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json index 54628bbf..3236cb88 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json @@ -1,7 +1,7 @@ { "Name": "Stardew Symphony Remastered", "Author": "Alpha_Omegasis", - "Version": "2.1.3", + "Version": "2.1.5", "Description": "Adding more music to the game one beep at a time. Now with streaming!", "UniqueID": "Omegasis.StardewSymphonyRemastered", "EntryDll": "StardewSymphonyRemastered.dll", diff --git a/GeneralMods/StardustCore/Menus/ModualGameMenu.cs b/GeneralMods/StardustCore/Menus/ModualGameMenu.cs index b0f7a24a..32b559eb 100644 --- a/GeneralMods/StardustCore/Menus/ModualGameMenu.cs +++ b/GeneralMods/StardustCore/Menus/ModualGameMenu.cs @@ -410,7 +410,7 @@ namespace StardustCore.Menus tab.Key.draw(b); } } - //currentMenu.draw(b); + currentMenu.draw(b); if (Game1.options.hardwareCursor) return; diff --git a/GeneralMods/StardustCore/StardustCore.csproj b/GeneralMods/StardustCore/StardustCore.csproj index bc8188ed..66d4bccd 100644 --- a/GeneralMods/StardustCore/StardustCore.csproj +++ b/GeneralMods/StardustCore/StardustCore.csproj @@ -121,6 +121,7 @@ + diff --git a/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs b/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs index 26be1c3c..5dc21fb4 100644 --- a/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs +++ b/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs @@ -40,7 +40,7 @@ namespace StardustCore.UIUtilities.MenuComponents /// public Button(Rectangle Bounds,Texture2DExtended Texture,Rectangle sourceRect,float Scale): base(Bounds, Texture.getTexture(), sourceRect, Scale) { - + this.animationManager = new Animations.AnimationManager(Texture, new Animations.Animation(sourceRect), false); } /// @@ -221,6 +221,39 @@ namespace StardustCore.UIUtilities.MenuComponents } + public virtual void draw(SpriteBatch b, Color color, Vector2 offset, float layerDepth) + { + + if (this.extraTextures != null) + { + foreach (var v in this.extraTextures) + { + if (v.Value == ExtraTextureDrawOrder.before) + { + v.Key.draw(b, color, layerDepth); + } + } + } + + b.Draw(this.animationManager.getTexture(), new Vector2(this.bounds.X + (int)offset.X, this.bounds.Y + (int)offset.Y), this.sourceRect, color, 0f, Vector2.Zero, this.scale, SpriteEffects.None, layerDepth); + + if (this.extraTextures != null) + { + foreach (var v in this.extraTextures) + { + if (v.Value == ExtraTextureDrawOrder.after) + { + v.Key.draw(b, color, layerDepth); + } + } + } + if (string.IsNullOrEmpty(this.label)) + return; + b.DrawString(Game1.smallFont, this.label, new Vector2((float)(this.bounds.X + this.bounds.Width), (float)this.bounds.Y + ((float)(this.bounds.Height / 2) - Game1.smallFont.MeasureString(this.label).Y / 2f)), textColor); + + } + + /// /// Swaps if the button is visible or not. Also toggles the animation manager appropriately. /// @@ -259,6 +292,30 @@ namespace StardustCore.UIUtilities.MenuComponents } } + public virtual void onLeftClick(int x, int y) + { + //IDK do something??? + if (this.containsPoint(x, y)) + { + if (this.buttonFunctionality == null) return; + else + { + if (this.buttonFunctionality.leftClick == null) return; + else this.buttonFunctionality.leftClick.run(); + } + } + } + + /// + /// Triggers when the button is consistently held. + /// + /// + /// + public virtual void onLeftClickHeld(int x, int y) + { + + } + /// /// The functionality that occcurs when the button is hover overed. /// diff --git a/GeneralMods/StardustCore/UIUtilities/MenuComponents/SliderButton.cs b/GeneralMods/StardustCore/UIUtilities/MenuComponents/SliderButton.cs new file mode 100644 index 00000000..dafca71e --- /dev/null +++ b/GeneralMods/StardustCore/UIUtilities/MenuComponents/SliderButton.cs @@ -0,0 +1,437 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using StardewValley; +using StardewValley.Menus; +using StardustCore.UIUtilities.MenuComponents.Delegates.Functionality; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StardustCore.UIUtilities.MenuComponents +{ + + /// + /// An enum describing the types of slider bars that can exist. + /// + public enum SliderStyle + { + Horizontal, + Vertical, + Square + } + + /// + /// Deals with all of the information pertaining to the limitations and movement of the slider bar button. + /// + public class SliderInformation + { + /// + /// The yPosition offset of the slider bar button. + /// + public int xPos; + + /// + /// The xPosition offset of the slider bar button. + /// + public int yPos; + + /// + /// Sensitivity of the slider bar. Probably should be called sluggishness since a higher number makes it move slower. + /// + public int sensitivity; + + /// + /// Min possible x position. + /// + public int minX; + + /// + /// Min possible y position. + /// + public int minY; + + /// + /// Max possible x position. + /// + public int maxX; + /// + /// Max possible y positon; + /// + public int maxY; + + + /// + /// Enum dealing with what kind of slider this is. + /// + SliderStyle sliderStyle; + + /// + /// Constructor. + /// + /// + /// + /// + public SliderInformation(SliderStyle style, int startingPosition,int sensitivity=1) + { + this.sliderStyle = style; + if (style == SliderStyle.Horizontal) + { + this.xPos = startingPosition; + } + else if (style == SliderStyle.Vertical) + { + this.yPos = startingPosition; + } + else if (style == SliderStyle.Square) + { + this.xPos = startingPosition; + this.yPos = startingPosition; + } + this.minX = 0; + this.minY = 0; + this.maxX = 100; + this.maxY = 100; + this.sensitivity = sensitivity; + } + + public SliderInformation(SliderStyle style, int startingPositionX, int startingPositionY, int sensitivity = 1) + { + this.sliderStyle = style; + if (style == SliderStyle.Horizontal) + { + this.xPos = startingPositionX; + } + else if (style == SliderStyle.Vertical) + { + this.yPos = startingPositionY; + } + else if (style == SliderStyle.Square) + { + this.xPos = startingPositionX; + this.yPos = startingPositionY; + } + this.minX = 0; + this.minY = 0; + this.maxX = 100; + this.maxY = 100; + this.sensitivity = sensitivity; + } + + public SliderInformation(SliderStyle style, int startingPositionX, int startingPositionY, int minX, int maxX, int minY,int maxY, int sensitivity = 1) + { + this.sliderStyle = style; + if (style == SliderStyle.Horizontal) + { + this.xPos = startingPositionX; + } + else if (style == SliderStyle.Vertical) + { + this.yPos = startingPositionY; + } + else if (style == SliderStyle.Square) + { + this.xPos = startingPositionX; + this.yPos = startingPositionY; + } + this.minX = minX; + this.minY = minY; + this.maxX = maxX; + this.maxY = maxY; + this.sensitivity = sensitivity; + } + + /// + /// Offset that occurs when the slider button should be clicked and dragged. + /// + /// + /// + public void movementOffset(int x, int y) + { + if (this.sliderStyle == SliderStyle.Horizontal|| this.sliderStyle==SliderStyle.Square) + { + if(x-this.xPos>=sensitivity) + this.xPos += (x-this.xPos)/sensitivity; + } + else if (this.sliderStyle == SliderStyle.Vertical || this.sliderStyle==SliderStyle.Square) + { + if (y - this.yPos >= sensitivity) + { + this.yPos += (y - this.yPos) / sensitivity; + } + } + } + + /// + /// Offset that occurs when a button is pushed to modify the slider button position. + /// + /// + /// + public void offset(int x, int y) + { + this.xPos += x; + this.yPos += y; + } + + /// + /// Gets the slider information for a label. + /// + /// + public string getLabelInformation(bool getExtraInformation=true) + { + if (getExtraInformation == false) return ""; + if (this.sliderStyle == SliderStyle.Horizontal) + { + return this.xPos.ToString(); + } + else if (this.sliderStyle == SliderStyle.Vertical) + { + return this.yPos.ToString(); + } + else if (this.sliderStyle == SliderStyle.Square) + { + return this.xPos.ToString() + "," + this.yPos.ToString(); + } + return ""; + } + } + + /// + /// A menu component that is a sider bar so that you can adjust for different settings. + /// + public class SliderButton: Button + { + + /// + /// Holds all of the information for a slider. + /// + public SliderInformation sliderInformation; + /// + /// Determines whether or not to get extra information for the slider bar. + /// + public bool getLabelXYPos; + + /// + /// The texture for the actual slider bar. + /// + public Button sliderBar; + + /// + /// Constructor. + /// + /// + /// + /// + /// + /// + /// + /// + public SliderButton(Rectangle bounds, Texture2DExtended buttonTexture,Button barTexture, Rectangle SourceRect, float scale,SliderInformation sliderInformation, bool getLabelXYPos=true): base(bounds, buttonTexture, SourceRect, scale) + { + this.sliderInformation = sliderInformation; + this.getLabelXYPos = getLabelXYPos; + this.sliderBar = barTexture; + initializeBounds(); + } + + /// + /// Constructor. + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + public SliderButton(string Name,string displayText, Rectangle bounds, Texture2DExtended buttonTexture, Button barTexture, Rectangle SourceRect, float scale, SliderInformation sliderInformation, Animations.Animation defaultAnimation, Color DrawColor, Color TextColor, ButtonFunctionality buttonFunctionality, bool AnimationEnabled, List> extraTexture, bool getLabelXYPos = true) : base(Name,bounds, buttonTexture,displayText, SourceRect, scale,defaultAnimation,DrawColor,TextColor,buttonFunctionality,AnimationEnabled,extraTexture) + { + this.sliderInformation = sliderInformation; + this.getLabelXYPos = getLabelXYPos; + this.sliderBar = barTexture; + initializeBounds(); + } + + /// + /// Constructor. + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + public SliderButton(string Name, string displayText, Rectangle bounds, Texture2DExtended buttonTexture, Button barTexture, Rectangle SourceRect, float scale, SliderInformation sliderInformation, Animations.Animation defaultAnimation, Color DrawColor, Color TextColor, ButtonFunctionality buttonFunctionality, bool AnimationEnabled,Dictionary> animationsToPlay,string startingKey,int startingAnimationFrame ,List> extraTexture, bool getLabelXYPos = true) : base(Name, bounds, buttonTexture, displayText, SourceRect, scale, defaultAnimation,animationsToPlay,startingKey, DrawColor, TextColor, buttonFunctionality,startingAnimationFrame ,AnimationEnabled, extraTexture) + { + this.sliderInformation = sliderInformation; + this.getLabelXYPos = getLabelXYPos; + this.sliderBar = barTexture; + initializeBounds(); + } + + /// + /// Interfaces the offset function for sliderInformation. + /// + /// + /// + public void offset(int x, int y) + { + int xOffset = x - (this.bounds.X+this.bounds.Width/2); + int yOffset = y - (this.bounds.Y+this.bounds.Height/2); + + + this.sliderInformation.offset(xOffset, yOffset); + offsetBounds(); + } + + public void offsetBounds() + { + //EX: 200+(200+(3-200)) = (200)+(200-197)= 200+3 =203; + //EX: 200+(200+(-3-200)) = (200)+(200-203)= 200-3 =197; + this.bounds.X =this.bounds.X+(this.bounds.X + (this.sliderInformation.xPos-bounds.X)); + this.bounds.Y =this.bounds.Y+(this.bounds.Y + (this.sliderInformation.yPos-bounds.Y)); + } + + /// + /// Sets the initial position for the button at sliderPosition.x=0; + /// + public void initializeBounds() + { + this.bounds.X +=this.sliderInformation.xPos; + this.bounds.Y +=this.sliderInformation.yPos; + } + + /// + /// Interfaces the movementOffset function for sliderInformation. + /// + /// + /// + public void movementOffset(int x, int y) + { + this.sliderInformation.movementOffset(x, y); + offsetBounds(); + } + + /// + /// Draws the slider. + /// + /// + /// + public override void draw(SpriteBatch b, Color color) + { + draw(b, color, Vector2.Zero, 0.0f); + } + + /// + /// Checks if the button or the slider bar has been clicked. + /// + /// + /// + /// + public override bool containsPoint(int x, int y) + { + //Got to check to see if I am also dealing with my sliderBar + if (this.sliderBar.containsPoint(x, y)) return true; + + return base.containsPoint(x, y); + } + + /// + /// Triggers when the slider itself is clicked. + /// + /// + /// + public override void onLeftClick(int x, int y) + { + if (this.sliderBar.containsPoint(x, y)) + { + int xPos = x; + int yPos = y; + this.offset(xPos, yPos); + } + } + + /// + /// Triggers when the button component of the slider bar is held. + /// + /// + /// + public override void onLeftClickHeld(int x, int y) + { + if (this.containsPoint(x, y)) + { + int xPos = x - this.sliderBar.bounds.X; + int yPos = y - this.sliderBar.bounds.Y; + this.movementOffset(xPos, yPos); + } + } + + + + /// + /// Draws the slider. + /// + /// + /// + /// + /// + public override void draw(SpriteBatch b, Color color, Vector2 offset, float layerDepth) + { + + if (this.extraTextures != null) + { + foreach (var v in this.extraTextures) + { + if (v.Value == ExtraTextureDrawOrder.before) + { + v.Key.draw(b, color, layerDepth); + } + } + } + //Draw the slider bar. + sliderBar.draw(b, color, offset, layerDepth); + //b.Draw(this..getTexture(), new Vector2(this.bounds.X + (int)offset.X, this.bounds.Y + (int)offset.Y), this.sourceRect, color, 0f, Vector2.Zero, this.scale, SpriteEffects.None, layerDepth); + b.Draw(this.animationManager.getTexture(), new Vector2(this.bounds.X + (int)offset.X, this.bounds.Y), this.sourceRect, color, 0f, Vector2.Zero, this.scale, SpriteEffects.None, layerDepth); + + if (this.extraTextures != null) + { + foreach (var v in this.extraTextures) + { + if (v.Value == ExtraTextureDrawOrder.after) + { + v.Key.draw(b, color, layerDepth); + } + } + } + + + if (string.IsNullOrEmpty(this.label)) + return; + b.DrawString(Game1.smallFont, this.label+this.sliderInformation.getLabelInformation(this.getLabelXYPos), new Vector2((float)(this.bounds.X + this.bounds.Width+offset.X+this.sliderInformation.xPos), (float)this.bounds.Y + ((float)(this.bounds.Height / 2) - Game1.smallFont.MeasureString(this.label).Y / 2f)+offset.X+this.sliderInformation.yPos), textColor); + + } + + + } +} diff --git a/GeneralMods/StardustCore/manifest.json b/GeneralMods/StardustCore/manifest.json index 55eb4b79..af19a410 100644 --- a/GeneralMods/StardustCore/manifest.json +++ b/GeneralMods/StardustCore/manifest.json @@ -1,7 +1,7 @@ { "Name": "StardustCore", "Author": "Alpha_Omegasis", - "Version": "2.0.3", + "Version": "2.0.4", "Description": "A core mod that allows for other mods of mine to be run.", "UniqueID": "Omegasis.StardustCore", "EntryDll": "StardustCore.dll", diff --git a/GeneralMods/Vocalization/Vocalization/Content/Graphics/SliderBar.png b/GeneralMods/Vocalization/Vocalization/Content/Graphics/SliderBar.png new file mode 100644 index 0000000000000000000000000000000000000000..a8f36edba371f2408294d7e6e947b3b14e36b4b9 GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^DL~A{!2~4F*5zmdDaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheoCO|{#S9F5he4R}c>W5IcF7Xgh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJtM=93Yk-Ziflby978<3-(EP#dq6?pz=poM+0*@1ekd3@*fj0$+_w2&j6ldV$ACyS n$5cs{si`nddf2>Em(s-c>|TFKYyPDipg|0tu6{1-oD!M0#LT=By}Z;C1rt33 zJtM=93Yk-Zic~yZ978mMlYjjGZ!ckOVe!ZPm_eZkD=#l^g3T6Dh2)MO^=u3`!WJ~H TeZK5IP(6dEtDnm{r-UW|YVR{z literal 0 HcmV?d00001 diff --git a/GeneralMods/Vocalization/Vocalization/Framework/Menus/VocalizationMenu.cs b/GeneralMods/Vocalization/Vocalization/Framework/Menus/VocalizationMenu.cs new file mode 100644 index 00000000..e463bb95 --- /dev/null +++ b/GeneralMods/Vocalization/Vocalization/Framework/Menus/VocalizationMenu.cs @@ -0,0 +1,69 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using StardustCore.UIUtilities; +using StardustCore.UIUtilities.MenuComponents; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Vocalization.Framework.Menus +{ + public class VocalizationMenu: IClickableMenuExtended + { + SliderButton sliderButton; + + + public VocalizationMenu(int xPos, int yPos, int width, int height, bool showCloseButton = false) : base(xPos, yPos, width, height,showCloseButton) + { + this.xPositionOnScreen = xPos; + this.yPositionOnScreen = yPos; + this.width = width; + this.height = height; + this.showRightCloseButton = showCloseButton; + setUpButtons(); + + } + + public void setUpButtons() + { + Texture2DExtended buttonTexture = new Texture2DExtended(Vocalization.ModHelper, Vocalization.Manifest, Path.Combine("Content", "Graphics", "SliderButton.png")); + Button bar = new Button(new Rectangle(this.xPositionOnScreen + 100, this.yPositionOnScreen + 220, 100, 20), new Texture2DExtended(Vocalization.ModHelper, Vocalization.Manifest, Path.Combine("Content", "Graphics", "SliderBar.png")),new Rectangle(0,0,100,10),2f); + //Texture2DExtended barTexture = new Texture2DExtended(Vocalization.ModHelper, Vocalization.Manifest, Path.Combine("Content", "Graphics", "SliderBar.png")); + Rectangle sourceRect = new Rectangle(0, 0, 8, 16); + this.sliderButton = new SliderButton("Slider", "Volume", new Rectangle(this.xPositionOnScreen+100, this.yPositionOnScreen+220, 8, 16), buttonTexture, bar, sourceRect, 2f, new SliderInformation(SliderStyle.Horizontal, 100, 1), new StardustCore.Animations.Animation(sourceRect), Color.White, Color.Black, new StardustCore.UIUtilities.MenuComponents.Delegates.Functionality.ButtonFunctionality(null, null, null), false, null, true); + } + + + public override void receiveLeftClick(int x, int y, bool playSound = true) + { + this.sliderButton.onLeftClick(x, y); + base.receiveLeftClick(x, y, playSound); + } + + public override void leftClickHeld(int x, int y) + { + this.sliderButton.onLeftClickHeld(x, y); + base.leftClickHeld(x, y); + } + + public override IClickableMenuExtended clone() + { + Vocalization.ModMonitor.Log("Cloning with position: " + xPositionOnScreen.ToString()); + return new VocalizationMenu(this.xPositionOnScreen, this.yPositionOnScreen, this.width, this.height, this.showRightCloseButton); + } + + public override void draw(SpriteBatch b) + { + this.drawDialogueBoxBackground(this.xPositionOnScreen,this.yPositionOnScreen,this.width,this.height); + + sliderButton.draw(b,Color.White,Vector2.Zero,0.5f); + + Vocalization.ModMonitor.Log(this.xPositionOnScreen.ToString()+" "+this.yPositionOnScreen.ToString()); + } + + + } +} diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.cs b/GeneralMods/Vocalization/Vocalization/Vocalization.cs index f4b00fe8..85cd01d3 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.cs +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.cs @@ -16,6 +16,7 @@ using StardustCore.Menus; using StardustCore.UIUtilities; using StardustCore.UIUtilities.MenuComponents; using Vocalization.Framework; +using Vocalization.Framework.Menus; namespace Vocalization { @@ -156,6 +157,7 @@ namespace Vocalization { public static IModHelper ModHelper; public static IMonitor ModMonitor; + public static IManifest Manifest; /// /// A string that keeps track of the previous dialogue said to ensure that dialogue isn't constantly repeated while the text box is open. @@ -197,6 +199,7 @@ namespace Vocalization StardewModdingAPI.Events.MenuEvents.MenuChanged += MenuEvents_MenuChanged; ModMonitor = Monitor; ModHelper = Helper; + Manifest = ModManifest; DialogueCues = new Dictionary(); replacementStrings = new ReplacementStrings(); @@ -280,11 +283,11 @@ namespace Vocalization components.Add(new KeyValuePair(c,ExtraTextureDrawOrder.after)); components.Add(new KeyValuePair(speech, ExtraTextureDrawOrder.after)); - Button menuTab = new Button("Vocalization", new Rectangle(0, 0, 32, 32), new Texture2DExtended(ModHelper, ModManifest, Path.Combine("Content", "Graphics", "MenuTab.png")), "Vocalization", new Rectangle(0, 0, 32, 32), 2f, new StardustCore.Animations.Animation(new Rectangle(0, 0, 32, 32)), Color.White, Color.White, new StardustCore.UIUtilities.MenuComponents.Delegates.Functionality.ButtonFunctionality(new StardustCore.UIUtilities.MenuComponents.Delegates.DelegatePairing(null,null), new StardustCore.UIUtilities.MenuComponents.Delegates.DelegatePairing(null,null), new StardustCore.UIUtilities.MenuComponents.Delegates.DelegatePairing(null,null)), false, components); + Button menuTab = new Button("", new Rectangle(0, 0, 32, 32), new Texture2DExtended(ModHelper, ModManifest, Path.Combine("Content", "Graphics", "MenuTab.png")), "", new Rectangle(0, 0, 32, 32), 2f, new StardustCore.Animations.Animation(new Rectangle(0, 0, 32, 32)), Color.White, Color.White, new StardustCore.UIUtilities.MenuComponents.Delegates.Functionality.ButtonFunctionality(new StardustCore.UIUtilities.MenuComponents.Delegates.DelegatePairing(null,null), new StardustCore.UIUtilities.MenuComponents.Delegates.DelegatePairing(null,null), new StardustCore.UIUtilities.MenuComponents.Delegates.DelegatePairing(null,null)), false, components); //Change this to take the vocalization menu instead List> modTabs = new List>(); - modTabs.Add(new KeyValuePair(menuTab, new IClickableMenuExtended(0,0,300,300,false))); + modTabs.Add(new KeyValuePair(menuTab, new VocalizationMenu(100,100,300,300,true))); StardustCore.Menus.ModularGameMenu.AddTabsForMod(ModManifest,modTabs); ModMonitor.Log("VOCALIZATION MENU HACK COMPLETE!", LogLevel.Alert); @@ -318,11 +321,11 @@ namespace Vocalization components.Add(new KeyValuePair(c, ExtraTextureDrawOrder.after)); components.Add(new KeyValuePair(speech, ExtraTextureDrawOrder.after)); - Button menuTab = new Button("Vocalization", new Rectangle(0,0, 32, 32), new Texture2DExtended(ModHelper, ModManifest, Path.Combine("Content", "Graphics", "MenuTab.png")), "Vocalization", new Rectangle(0, 0, 32, 32), 2f, new StardustCore.Animations.Animation(new Rectangle(0, 0, 32, 32)), Color.White, Color.White, new StardustCore.UIUtilities.MenuComponents.Delegates.Functionality.ButtonFunctionality(null, null, null), false, components); + Button menuTab = new Button("", new Rectangle(0,0, 32, 32), new Texture2DExtended(ModHelper, ModManifest, Path.Combine("Content", "Graphics", "MenuTab.png")), "", new Rectangle(0, 0, 32, 32), 2f, new StardustCore.Animations.Animation(new Rectangle(0, 0, 32, 32)), Color.White, Color.White, new StardustCore.UIUtilities.MenuComponents.Delegates.Functionality.ButtonFunctionality(null, null, null), false, components); //Change this to take the vocalization menu instead List> modTabs = new List>(); - modTabs.Add(new KeyValuePair(menuTab, new IClickableMenuExtended(0, 0, 300, 300,false))); + modTabs.Add(new KeyValuePair(menuTab, new VocalizationMenu(100, 100, 300, 300,true))); StardustCore.Menus.ModularGameMenu.StaticMenuTabsAndPages[ModManifest.UniqueID] = modTabs; } diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.csproj b/GeneralMods/Vocalization/Vocalization/Vocalization.csproj index 80d9bcd3..19772bab 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.csproj +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.csproj @@ -49,6 +49,7 @@ + @@ -74,6 +75,12 @@ Always + + Always + + + Always + Always From b62a5eb07654a18ffdf1ca7e9bc056d701ed4f37 Mon Sep 17 00:00:00 2001 From: Date: Fri, 24 Aug 2018 21:55:39 -0700 Subject: [PATCH 064/110] slider bar needs testing and work --- .../MenuComponents/SliderButton.cs | 76 +++++++++++++----- .../Content/Graphics/SliderButton.png | Bin 180 -> 168 bytes .../Framework/Menus/VocalizationMenu.cs | 7 +- 3 files changed, 59 insertions(+), 24 deletions(-) diff --git a/GeneralMods/StardustCore/UIUtilities/MenuComponents/SliderButton.cs b/GeneralMods/StardustCore/UIUtilities/MenuComponents/SliderButton.cs index dafca71e..86586400 100644 --- a/GeneralMods/StardustCore/UIUtilities/MenuComponents/SliderButton.cs +++ b/GeneralMods/StardustCore/UIUtilities/MenuComponents/SliderButton.cs @@ -65,7 +65,7 @@ namespace StardustCore.UIUtilities.MenuComponents /// /// Enum dealing with what kind of slider this is. /// - SliderStyle sliderStyle; + public SliderStyle sliderStyle; /// /// Constructor. @@ -297,29 +297,66 @@ namespace StardustCore.UIUtilities.MenuComponents /// public void offset(int x, int y) { - int xOffset = x - (this.bounds.X+this.bounds.Width/2); - int yOffset = y - (this.bounds.Y+this.bounds.Height/2); + + if (x < sliderBar.bounds.X) + { + x = sliderBar.bounds.X; + } + if (y < sliderBar.bounds.Y) + { + y = sliderBar.bounds.Y; + } + if (x > (sliderBar.bounds.X) + (sliderBar.bounds.Width)) + { + x = (sliderBar.bounds.X) + (sliderBar.bounds.Width); + } + if (y > (sliderBar.bounds.Y) + (sliderBar.bounds.Height)) + { + y = (sliderBar.bounds.Y) + (sliderBar.bounds.Height); + } + + //Get offset from button. + int xOffset = (bounds.X - x); //267-300 + int yOffset = (bounds.Y - y); - this.sliderInformation.offset(xOffset, yOffset); - offsetBounds(); + if (sliderInformation.sliderStyle == SliderStyle.Horizontal || sliderInformation.sliderStyle== SliderStyle.Square) + { + + this.sliderInformation.xPos = (x - sliderBar.bounds.X) / (int)scale; + this.bounds.X = this.sliderBar.bounds.X + this.sliderInformation.xPos*(int)scale; + if (this.bounds.X > this.sliderBar.bounds.X + this.sliderBar.bounds.Width) + { + this.bounds.X = this.sliderBar.bounds.X + this.sliderBar.bounds.Width; + } + } + + if (sliderInformation.sliderStyle == SliderStyle.Vertical || sliderInformation.sliderStyle == SliderStyle.Square) + { + this.sliderInformation.yPos = (y - sliderBar.bounds.Y) / (int)scale; + this.bounds.Y = this.sliderBar.bounds.Y + this.sliderInformation.yPos*(int)scale; + + if (this.bounds.Y > this.sliderBar.bounds.Y + this.sliderBar.bounds.Height) + { + this.bounds.Y = this.sliderBar.bounds.Y + this.sliderBar.bounds.Height; + } + } + + + + + + //this.sliderInformation.offset(xOffset, yOffset); } - public void offsetBounds() - { - //EX: 200+(200+(3-200)) = (200)+(200-197)= 200+3 =203; - //EX: 200+(200+(-3-200)) = (200)+(200-203)= 200-3 =197; - this.bounds.X =this.bounds.X+(this.bounds.X + (this.sliderInformation.xPos-bounds.X)); - this.bounds.Y =this.bounds.Y+(this.bounds.Y + (this.sliderInformation.yPos-bounds.Y)); - } /// /// Sets the initial position for the button at sliderPosition.x=0; /// public void initializeBounds() { - this.bounds.X +=this.sliderInformation.xPos; - this.bounds.Y +=this.sliderInformation.yPos; + this.bounds.X +=this.sliderInformation.xPos*(int)scale; + this.bounds.Y +=this.sliderInformation.yPos*(int)scale; } /// @@ -329,8 +366,7 @@ namespace StardustCore.UIUtilities.MenuComponents /// public void movementOffset(int x, int y) { - this.sliderInformation.movementOffset(x, y); - offsetBounds(); + offset(x, y); } /// @@ -381,16 +417,14 @@ namespace StardustCore.UIUtilities.MenuComponents { if (this.containsPoint(x, y)) { - int xPos = x - this.sliderBar.bounds.X; - int yPos = y - this.sliderBar.bounds.Y; - this.movementOffset(xPos, yPos); + this.movementOffset(x, y); } } /// - /// Draws the slider. + /// D raws the slider. /// /// /// @@ -428,7 +462,7 @@ namespace StardustCore.UIUtilities.MenuComponents if (string.IsNullOrEmpty(this.label)) return; - b.DrawString(Game1.smallFont, this.label+this.sliderInformation.getLabelInformation(this.getLabelXYPos), new Vector2((float)(this.bounds.X + this.bounds.Width+offset.X+this.sliderInformation.xPos), (float)this.bounds.Y + ((float)(this.bounds.Height / 2) - Game1.smallFont.MeasureString(this.label).Y / 2f)+offset.X+this.sliderInformation.yPos), textColor); + b.DrawString(Game1.smallFont, this.label+this.sliderInformation.getLabelInformation(this.getLabelXYPos), new Vector2((float)((this.bounds.X + this.bounds.Width+offset.X)*this.scale), (float)this.bounds.Y + ((float)(this.bounds.Height / 2) - Game1.smallFont.MeasureString(this.label).Y / 2f)+offset.X+this.sliderInformation.yPos), textColor); } diff --git a/GeneralMods/Vocalization/Vocalization/Content/Graphics/SliderButton.png b/GeneralMods/Vocalization/Vocalization/Content/Graphics/SliderButton.png index e78ef46820ec718a1f41de1fc7c1e9c9440dea05..3edbb849046e823dcefdb3aacb3bb068989e1638 100644 GIT binary patch delta 87 zcmdnOxPno!Gr-TCmrII^fq{Y7)59eQNV5R300$G0+;_!u$wb8{T?tPY#}J9|WXh(>VokN^Me yC9Ewh{gJV*&?ct-0`EHjp0Vvg2uJam)!^IWAJqKb6Mw<&;$U_$sH*G diff --git a/GeneralMods/Vocalization/Vocalization/Framework/Menus/VocalizationMenu.cs b/GeneralMods/Vocalization/Vocalization/Framework/Menus/VocalizationMenu.cs index e463bb95..60a534bf 100644 --- a/GeneralMods/Vocalization/Vocalization/Framework/Menus/VocalizationMenu.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/Menus/VocalizationMenu.cs @@ -30,10 +30,10 @@ namespace Vocalization.Framework.Menus public void setUpButtons() { Texture2DExtended buttonTexture = new Texture2DExtended(Vocalization.ModHelper, Vocalization.Manifest, Path.Combine("Content", "Graphics", "SliderButton.png")); - Button bar = new Button(new Rectangle(this.xPositionOnScreen + 100, this.yPositionOnScreen + 220, 100, 20), new Texture2DExtended(Vocalization.ModHelper, Vocalization.Manifest, Path.Combine("Content", "Graphics", "SliderBar.png")),new Rectangle(0,0,100,10),2f); + Button bar = new Button(new Rectangle(this.xPositionOnScreen + 100, this.yPositionOnScreen + 220, 200, 40), new Texture2DExtended(Vocalization.ModHelper, Vocalization.Manifest, Path.Combine("Content", "Graphics", "SliderBar.png")),new Rectangle(0,0,100,10),2f); //Texture2DExtended barTexture = new Texture2DExtended(Vocalization.ModHelper, Vocalization.Manifest, Path.Combine("Content", "Graphics", "SliderBar.png")); - Rectangle sourceRect = new Rectangle(0, 0, 8, 16); - this.sliderButton = new SliderButton("Slider", "Volume", new Rectangle(this.xPositionOnScreen+100, this.yPositionOnScreen+220, 8, 16), buttonTexture, bar, sourceRect, 2f, new SliderInformation(SliderStyle.Horizontal, 100, 1), new StardustCore.Animations.Animation(sourceRect), Color.White, Color.Black, new StardustCore.UIUtilities.MenuComponents.Delegates.Functionality.ButtonFunctionality(null, null, null), false, null, true); + Rectangle sourceRect = new Rectangle(0, 0, 4, 16); + this.sliderButton = new SliderButton("Slider", "Volume", new Rectangle(this.xPositionOnScreen+100, this.yPositionOnScreen+220, 4, 16), buttonTexture, bar, sourceRect, 2f, new SliderInformation(SliderStyle.Horizontal, 100, 1), new StardustCore.Animations.Animation(sourceRect), Color.White, Color.Black, new StardustCore.UIUtilities.MenuComponents.Delegates.Functionality.ButtonFunctionality(null, null, null), false, null, true); } @@ -57,6 +57,7 @@ namespace Vocalization.Framework.Menus public override void draw(SpriteBatch b) { + //INCLUDE A COLOR FOR THE MENU!!!!! this.drawDialogueBoxBackground(this.xPositionOnScreen,this.yPositionOnScreen,this.width,this.height); sliderButton.draw(b,Color.White,Vector2.Zero,0.5f); From a979ab479c72c2e37639edc86b3299a1aef25c3f Mon Sep 17 00:00:00 2001 From: Date: Sat, 25 Aug 2018 01:57:10 -0700 Subject: [PATCH 065/110] Finished slider button, made a better menu background function, and made the slider button update the menu. --- .../UIUtilities/IClickableMenuExtended.cs | 60 +++++++++++++++++++ .../MenuComponents/SliderButton.cs | 4 +- .../Framework/Menus/VocalizationMenu.cs | 21 +++++-- .../Vocalization/Vocalization/ModConfig.cs | 4 +- .../Vocalization/Vocalization/Vocalization.cs | 6 +- 5 files changed, 83 insertions(+), 12 deletions(-) diff --git a/GeneralMods/StardustCore/UIUtilities/IClickableMenuExtended.cs b/GeneralMods/StardustCore/UIUtilities/IClickableMenuExtended.cs index f895e82d..450ad5ef 100644 --- a/GeneralMods/StardustCore/UIUtilities/IClickableMenuExtended.cs +++ b/GeneralMods/StardustCore/UIUtilities/IClickableMenuExtended.cs @@ -84,6 +84,66 @@ namespace StardustCore.UIUtilities this.drawDialogueBoxBackground(xPosition, yPosition, width, height, false, true, color); } + public virtual void drawOnlyDialogueBoxBackground(int x, int y, int width, int height, Color color, float depth) + { + + int height1 = Game1.graphics.GraphicsDevice.Viewport.TitleSafeArea.Height; + int width1 = Game1.graphics.GraphicsDevice.Viewport.TitleSafeArea.Width; + int dialogueX = 0; + int num1 = y > Game1.graphics.GraphicsDevice.Viewport.TitleSafeArea.Y ? 0 : Game1.graphics.GraphicsDevice.Viewport.TitleSafeArea.Y; + int num2 = 0; + width = Math.Min(Game1.graphics.GraphicsDevice.Viewport.TitleSafeArea.Width, width); + + Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.Rectangle(0, 0, Game1.tileSize, Game1.tileSize); + int addedTileHeightForQuestions = -1; + + if (Game1.questionChoices.Count >= 3) + addedTileHeightForQuestions = Game1.questionChoices.Count - 3; + + rectangle1.Width = Game1.tileSize; + rectangle1.Height = Game1.tileSize; + rectangle1.X = Game1.tileSize; + rectangle1.Y = Game1.tileSize * 2; + depth += 0.001f; + Game1.spriteBatch.Draw(Game1.menuTexture, new Microsoft.Xna.Framework.Rectangle(x+Game1.tileSize/2,y+Game1.tileSize/2,width, height), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color,0f,Vector2.Zero,SpriteEffects.None,depth); + rectangle1.Y = 0; + rectangle1.X = 0; + depth += 0.001f; + + //Draw the corners + Game1.spriteBatch.Draw(Game1.menuTexture, new Rectangle((x), (y),rectangle1.Width,rectangle1.Height), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color, 0f, Vector2.Zero, SpriteEffects.None, depth); + rectangle1.X = Game1.tileSize * 3; + depth += 0.001f; + Game1.spriteBatch.Draw(Game1.menuTexture, new Rectangle((x + width), (y),rectangle1.Width,rectangle1.Height), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color, 0f, Vector2.Zero, SpriteEffects.None, depth); + rectangle1.Y = Game1.tileSize * 3; + depth += 0.001f; + Game1.spriteBatch.Draw(Game1.menuTexture, new Rectangle((x + width), (y + height),rectangle1.Width,rectangle1.Height), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color, 0f, Vector2.Zero, SpriteEffects.None, depth); + rectangle1.X = 0; + depth += 0.001f; + Game1.spriteBatch.Draw(Game1.menuTexture, new Rectangle((x), (y + height),rectangle1.Width,rectangle1.Height), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color, 0f, Vector2.Zero, SpriteEffects.None, depth); + + + rectangle1.X = Game1.tileSize * 2; + rectangle1.Y = 0; + depth += 0.001f; + //top + Game1.spriteBatch.Draw(Game1.menuTexture, new Microsoft.Xna.Framework.Rectangle(x+Game1.tileSize, y, width-Game1.tileSize, Game1.tileSize), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color, 0f, Vector2.Zero, SpriteEffects.None, depth); + rectangle1.Y = 3 * Game1.tileSize; + depth += 0.001f; + //bottom?? + Game1.spriteBatch.Draw(Game1.menuTexture, new Microsoft.Xna.Framework.Rectangle(Game1.tileSize + x, y + height,width-Game1.tileSize, Game1.tileSize), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color, 0f, Vector2.Zero, SpriteEffects.None, depth); + rectangle1.Y = Game1.tileSize * 2; + rectangle1.X = 0; + depth += 0.001f; + //left + Game1.spriteBatch.Draw(Game1.menuTexture, new Microsoft.Xna.Framework.Rectangle(x, y+Game1.tileSize, Game1.tileSize,height-Game1.tileSize), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color, 0f, Vector2.Zero, SpriteEffects.None, depth); + rectangle1.X = 3 * Game1.tileSize; + depth += 0.001f; + //right + Game1.spriteBatch.Draw(Game1.menuTexture, new Microsoft.Xna.Framework.Rectangle(x + width, y+Game1.tileSize ,Game1.tileSize, height-Game1.tileSize), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color, 0f, Vector2.Zero, SpriteEffects.None, depth); + + } + /// /// Draws the dialogue box background. Takes in a color. /// diff --git a/GeneralMods/StardustCore/UIUtilities/MenuComponents/SliderButton.cs b/GeneralMods/StardustCore/UIUtilities/MenuComponents/SliderButton.cs index 86586400..00afdc86 100644 --- a/GeneralMods/StardustCore/UIUtilities/MenuComponents/SliderButton.cs +++ b/GeneralMods/StardustCore/UIUtilities/MenuComponents/SliderButton.cs @@ -446,7 +446,7 @@ namespace StardustCore.UIUtilities.MenuComponents //Draw the slider bar. sliderBar.draw(b, color, offset, layerDepth); //b.Draw(this..getTexture(), new Vector2(this.bounds.X + (int)offset.X, this.bounds.Y + (int)offset.Y), this.sourceRect, color, 0f, Vector2.Zero, this.scale, SpriteEffects.None, layerDepth); - b.Draw(this.animationManager.getTexture(), new Vector2(this.bounds.X + (int)offset.X, this.bounds.Y), this.sourceRect, color, 0f, Vector2.Zero, this.scale, SpriteEffects.None, layerDepth); + b.Draw(this.animationManager.getTexture(), new Vector2(this.bounds.X + (int)offset.X, this.bounds.Y), this.sourceRect, color, 0f, Vector2.Zero, this.scale, SpriteEffects.None, layerDepth+0.01f); if (this.extraTextures != null) { @@ -462,7 +462,7 @@ namespace StardustCore.UIUtilities.MenuComponents if (string.IsNullOrEmpty(this.label)) return; - b.DrawString(Game1.smallFont, this.label+this.sliderInformation.getLabelInformation(this.getLabelXYPos), new Vector2((float)((this.bounds.X + this.bounds.Width+offset.X)*this.scale), (float)this.bounds.Y + ((float)(this.bounds.Height / 2) - Game1.smallFont.MeasureString(this.label).Y / 2f)+offset.X+this.sliderInformation.yPos), textColor); + b.DrawString(Game1.smallFont, this.label+this.sliderInformation.getLabelInformation(this.getLabelXYPos), new Vector2((float)((sliderBar.bounds.X + sliderBar.bounds.Width+offset.X+this.bounds.Width)), (float)sliderBar.bounds.Y + ((float)(sliderBar.bounds.Height / 2) - Game1.smallFont.MeasureString(this.label).Y / 2f)+offset.X), textColor,0f,Vector2.Zero,1f,SpriteEffects.None,layerDepth+0.02f); } diff --git a/GeneralMods/Vocalization/Vocalization/Framework/Menus/VocalizationMenu.cs b/GeneralMods/Vocalization/Vocalization/Framework/Menus/VocalizationMenu.cs index 60a534bf..fb0a54dd 100644 --- a/GeneralMods/Vocalization/Vocalization/Framework/Menus/VocalizationMenu.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/Menus/VocalizationMenu.cs @@ -33,7 +33,7 @@ namespace Vocalization.Framework.Menus Button bar = new Button(new Rectangle(this.xPositionOnScreen + 100, this.yPositionOnScreen + 220, 200, 40), new Texture2DExtended(Vocalization.ModHelper, Vocalization.Manifest, Path.Combine("Content", "Graphics", "SliderBar.png")),new Rectangle(0,0,100,10),2f); //Texture2DExtended barTexture = new Texture2DExtended(Vocalization.ModHelper, Vocalization.Manifest, Path.Combine("Content", "Graphics", "SliderBar.png")); Rectangle sourceRect = new Rectangle(0, 0, 4, 16); - this.sliderButton = new SliderButton("Slider", "Volume", new Rectangle(this.xPositionOnScreen+100, this.yPositionOnScreen+220, 4, 16), buttonTexture, bar, sourceRect, 2f, new SliderInformation(SliderStyle.Horizontal, 100, 1), new StardustCore.Animations.Animation(sourceRect), Color.White, Color.Black, new StardustCore.UIUtilities.MenuComponents.Delegates.Functionality.ButtonFunctionality(null, null, null), false, null, true); + this.sliderButton = new SliderButton("Slider", "Volume", new Rectangle(this.xPositionOnScreen+100, this.yPositionOnScreen+220, 4, 16), buttonTexture, bar, sourceRect, 2f, new SliderInformation(SliderStyle.Horizontal, (int)(Vocalization.config.voiceVolume*100), 1), new StardustCore.Animations.Animation(sourceRect), Color.White, Color.Black, new StardustCore.UIUtilities.MenuComponents.Delegates.Functionality.ButtonFunctionality(null, null, null), false, null, true); } @@ -57,12 +57,23 @@ namespace Vocalization.Framework.Menus public override void draw(SpriteBatch b) { - //INCLUDE A COLOR FOR THE MENU!!!!! - this.drawDialogueBoxBackground(this.xPositionOnScreen,this.yPositionOnScreen,this.width,this.height); - + this.drawOnlyDialogueBoxBackground(this.xPositionOnScreen, this.yPositionOnScreen, this.width, this.height, new Color(255, 255, 255, 255),0.4f); sliderButton.draw(b,Color.White,Vector2.Zero,0.5f); + } - Vocalization.ModMonitor.Log(this.xPositionOnScreen.ToString()+" "+this.yPositionOnScreen.ToString()); + /// + /// Save the menu information upon menu being closed. + /// + /// + public override bool readyToClose() + { + Vocalization.ModMonitor.Log(sliderButton.sliderInformation.xPos.ToString()); + decimal xPos = sliderButton.sliderInformation.xPos; + Vocalization.config.voiceVolume = (decimal)(xPos/ 100.0M); + Vocalization.ModMonitor.Log(Vocalization.config.voiceVolume.ToString()); + Vocalization.ModHelper.WriteConfig(Vocalization.config); + Vocalization.soundManager.volume =(float) Vocalization.config.voiceVolume; + return true; } diff --git a/GeneralMods/Vocalization/Vocalization/ModConfig.cs b/GeneralMods/Vocalization/Vocalization/ModConfig.cs index 5c8f0527..54ce44d3 100644 --- a/GeneralMods/Vocalization/Vocalization/ModConfig.cs +++ b/GeneralMods/Vocalization/Vocalization/ModConfig.cs @@ -31,7 +31,7 @@ namespace Vocalization /// /// The volume at which the sound for voices is played at. /// - public float voiceVolume; + public decimal voiceVolume; public ModConfig() { @@ -46,7 +46,7 @@ namespace Vocalization translationInfo = new TranslationInfo(); - this.voiceVolume = 1.0f; + this.voiceVolume = (decimal)1.0f; } /// diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.cs b/GeneralMods/Vocalization/Vocalization/Vocalization.cs index 85cd01d3..c3638f05 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.cs +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.cs @@ -212,7 +212,7 @@ namespace Vocalization config = ModHelper.ReadConfig(); config.verifyValidMode(); //Make sure the current mode is valid. - soundManager.volume = config.voiceVolume; //Set the volume for voices. + soundManager.volume = (float)config.voiceVolume; //Set the volume for voices. } @@ -287,7 +287,7 @@ namespace Vocalization //Change this to take the vocalization menu instead List> modTabs = new List>(); - modTabs.Add(new KeyValuePair(menuTab, new VocalizationMenu(100,100,300,300,true))); + modTabs.Add(new KeyValuePair(menuTab, new VocalizationMenu(100,64,600,300,true))); StardustCore.Menus.ModularGameMenu.AddTabsForMod(ModManifest,modTabs); ModMonitor.Log("VOCALIZATION MENU HACK COMPLETE!", LogLevel.Alert); @@ -325,7 +325,7 @@ namespace Vocalization //Change this to take the vocalization menu instead List> modTabs = new List>(); - modTabs.Add(new KeyValuePair(menuTab, new VocalizationMenu(100, 100, 300, 300,true))); + modTabs.Add(new KeyValuePair(menuTab, new VocalizationMenu(100, 64, 600, 300,true))); StardustCore.Menus.ModularGameMenu.StaticMenuTabsAndPages[ModManifest.UniqueID] = modTabs; } From 34f4e379b52cec3e6b325f7aa25bd88b244476b4 Mon Sep 17 00:00:00 2001 From: Date: Sat, 25 Aug 2018 09:34:29 -0700 Subject: [PATCH 066/110] Left notes on what needs to be done before release on the menu. --- .../Framework/Menus/VocalizationMenu.cs | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/GeneralMods/Vocalization/Vocalization/Framework/Menus/VocalizationMenu.cs b/GeneralMods/Vocalization/Vocalization/Framework/Menus/VocalizationMenu.cs index fb0a54dd..ba9480a3 100644 --- a/GeneralMods/Vocalization/Vocalization/Framework/Menus/VocalizationMenu.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/Menus/VocalizationMenu.cs @@ -11,6 +11,14 @@ using System.Threading.Tasks; namespace Vocalization.Framework.Menus { + + /// + /// TODO: + /// Make Ok button that saves settings and closes menu instead of readyToCloseFunction() + /// Make Cyclic buttons(aka a button that holds a ton of buttons) + /// Make cyclic translation button. (english, spanish, etc) + /// Make cyclic audio modes button. (full, simple, etc) + /// public class VocalizationMenu: IClickableMenuExtended { SliderButton sliderButton; @@ -73,9 +81,36 @@ namespace Vocalization.Framework.Menus Vocalization.ModMonitor.Log(Vocalization.config.voiceVolume.ToString()); Vocalization.ModHelper.WriteConfig(Vocalization.config); Vocalization.soundManager.volume =(float) Vocalization.config.voiceVolume; + + if (Vocalization.config.translationInfo.currentTranslation != getTranslationInfo()) + { + //Change the mod config translation info + //Clear out the Sound manager sounds and Vocalization Dialogue Cues + //Reload all of the dialogue files + //Change the game's localized code + } + + if (Vocalization.config.currentMode != getAudioMode()) + { + Vocalization.config.currentMode = getAudioMode(); + } + + return true; } + public string getTranslationInfo() + { + //Return the name of the button which will have the translation stuff here! + return "English"; + } + + public string getAudioMode() + { + //Return the name of the mode that the current mode button is selected on. + return "Full"; + } + } } From f237cd2c10c069ec7b00e5eb39270f6d8a9571f6 Mon Sep 17 00:00:00 2001 From: Date: Sat, 25 Aug 2018 09:52:53 -0700 Subject: [PATCH 067/110] Started work on cyclic buttons. --- .../UIUtilities/MenuComponents/CycleButton.cs | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 GeneralMods/StardustCore/UIUtilities/MenuComponents/CycleButton.cs diff --git a/GeneralMods/StardustCore/UIUtilities/MenuComponents/CycleButton.cs b/GeneralMods/StardustCore/UIUtilities/MenuComponents/CycleButton.cs new file mode 100644 index 00000000..fb7ab092 --- /dev/null +++ b/GeneralMods/StardustCore/UIUtilities/MenuComponents/CycleButton.cs @@ -0,0 +1,63 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using StardewValley.Menus; +using StardustCore.UIUtilities.MenuComponents.Delegates.Functionality; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StardustCore.UIUtilities.MenuComponents +{ + public class CycleButton :Button + { + + public List /// - public new void draw(SpriteBatch b) + public virtual void draw(SpriteBatch b) { if (!this.visible) return; @@ -333,7 +333,7 @@ namespace StardustCore.UIUtilities.MenuComponents /// Returns a new object based off of the data of this object. /// /// A Button object that is identical to the one passed in. - public Button clone() + public virtual Button clone() { var b= new Button(this.name, this.bounds, this.animationManager.getExtendedTexture(), this.label, this.sourceRect, this.scale, this.animationManager.defaultDrawFrame, this.textureColor, this.textColor, this.buttonFunctionality, true); if (b.buttonFunctionality.hover == null) @@ -348,7 +348,7 @@ namespace StardustCore.UIUtilities.MenuComponents /// /// /// - public Button clone(Vector2 newPosition) + public virtual Button clone(Vector2 newPosition) { var b = new Button(this.name, new Rectangle((int)newPosition.X,(int)newPosition.Y,this.bounds.Width,this.bounds.Height), this.animationManager.getExtendedTexture(), this.label, this.sourceRect, this.scale, this.animationManager.defaultDrawFrame, this.textureColor, this.textColor, this.buttonFunctionality, true); if (b.buttonFunctionality.hover == null) @@ -362,7 +362,7 @@ namespace StardustCore.UIUtilities.MenuComponents /// Returns a new object based off of the data of this object. /// /// A Button object that is identical to the one passed in. - public Button copy() + public virtual Button copy() { return this.clone(); } diff --git a/GeneralMods/StardustCore/UIUtilities/MenuComponents/CycleButton.cs b/GeneralMods/StardustCore/UIUtilities/MenuComponents/CycleButton.cs index fb7ab092..1b9ffca5 100644 --- a/GeneralMods/StardustCore/UIUtilities/MenuComponents/CycleButton.cs +++ b/GeneralMods/StardustCore/UIUtilities/MenuComponents/CycleButton.cs @@ -1,5 +1,6 @@ using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; +using StardewValley; using StardewValley.Menus; using StardustCore.UIUtilities.MenuComponents.Delegates.Functionality; using System; @@ -36,27 +37,88 @@ namespace StardustCore.UIUtilities.MenuComponents { //cycle button to next button and loop around if necessary. + buttonIndex++; + if (buttonIndex >= buttons.Count) + { + buttonIndex = 0; + } base.onLeftClick(); } + public override void onLeftClick(int x, int y) + { + if (this.containsPoint(x, y)) + { + //cycle button to next button and loop around if necessary. + buttonIndex++; + if (buttonIndex >= buttons.Count) + { + buttonIndex = 0; + } + + base.onLeftClick(); + } + } + + public Button getCurrentButton() + { + return buttons.ElementAt(buttonIndex); + } + + public string getCurrentButtonLabel() + { + return buttons.ElementAt(buttonIndex).label; + } + + public override void draw(SpriteBatch b) + { + draw(b, Color.White); + } //CHANGE ALL DRAW FUNCTIONS TO DRAW THE CURRENT BUTTON TEXTURE. - + //Also add in the code to also draw the label of the current button!!! public override void draw(SpriteBatch b, Color color) { - base.draw(b, color); + draw(b, color, Vector2.Zero); } public override void draw(SpriteBatch b, Color color, Vector2 offset) { - base.draw(b, color, offset); + draw(b, color, offset, 0.5f); } public override void draw(SpriteBatch b, Color color, Vector2 offset, float layerDepth) { - base.draw(b, color, offset, layerDepth); + + if (this.extraTextures != null) + { + foreach (var v in this.extraTextures) + { + if (v.Value == ExtraTextureDrawOrder.before) + { + v.Key.draw(b, color, layerDepth); + } + } + } + + b.Draw(getCurrentButton().animationManager.getTexture(), new Vector2(this.bounds.X + (int)offset.X, this.bounds.Y + (int)offset.Y), this.sourceRect, color, 0f, Vector2.Zero, this.scale, SpriteEffects.None, layerDepth); + + if (this.extraTextures != null) + { + foreach (var v in this.extraTextures) + { + if (v.Value == ExtraTextureDrawOrder.after) + { + v.Key.draw(b, color, layerDepth); + } + } + } + if (string.IsNullOrEmpty(this.label)) + return; + b.DrawString(Game1.smallFont, "Voice Mode: "+getCurrentButtonLabel(), new Vector2((float)(this.bounds.X + this.bounds.Width), (float)this.bounds.Y + ((float)(this.bounds.Height / 2) - Game1.smallFont.MeasureString(this.label).Y / 2f)), textColor); + } } diff --git a/GeneralMods/Vocalization/Vocalization/Framework/Menus/VocalizationMenu.cs b/GeneralMods/Vocalization/Vocalization/Framework/Menus/VocalizationMenu.cs index ba9480a3..b301f986 100644 --- a/GeneralMods/Vocalization/Vocalization/Framework/Menus/VocalizationMenu.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/Menus/VocalizationMenu.cs @@ -87,7 +87,6 @@ namespace Vocalization.Framework.Menus //Change the mod config translation info //Clear out the Sound manager sounds and Vocalization Dialogue Cues //Reload all of the dialogue files - //Change the game's localized code } if (Vocalization.config.currentMode != getAudioMode()) From 3029ed2c2f7bcdd3169e99640d7549a9500d640b Mon Sep 17 00:00:00 2001 From: Date: Sat, 25 Aug 2018 18:22:14 -0700 Subject: [PATCH 069/110] Finished cyclic buttons and integrated them into the vocalization menu. Also minor upgrades for the Button class. --- .../Framework/Menus/MusicManagerMenu.cs | 15 ++++--- GeneralMods/StardustCore/StardustCore.csproj | 1 + .../UIUtilities/MenuComponents/Button.cs | 13 ++++++ .../UIUtilities/MenuComponents/CycleButton.cs | 13 +++++- .../UIUtilities/Texture2DExtended.cs | 11 +++-- .../Framework/Menus/VocalizationMenu.cs | 45 +++++++++++++++---- .../Vocalization/Vocalization/Vocalization.cs | 16 +++---- 7 files changed, 86 insertions(+), 28 deletions(-) diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs index 0c84a933..6ca68f9e 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs @@ -2299,6 +2299,14 @@ namespace StardewSymphonyRemastered.Framework.Menus return key; } + + if (this.currentlySelectedMenu != null) + { + return this.currentlySelectedMenu.label; + } + if (this.currentlySelectedFestival != null) return this.currentlySelectedFestival.label; + if (this.currentlySelectedEvent != null) return this.currentlySelectedEvent.label; + #region if (this.currentlySelectedOption != null) { @@ -2358,13 +2366,6 @@ namespace StardewSymphonyRemastered.Framework.Menus } #endregion - if (this.currentlySelectedMenu != null) - { - return this.currentlySelectedMenu.label; - } - if (this.currentlySelectedFestival != null) return this.currentlySelectedFestival.label; - if (this.currentlySelectedEvent != null) return this.currentlySelectedEvent.label; - return key; } diff --git a/GeneralMods/StardustCore/StardustCore.csproj b/GeneralMods/StardustCore/StardustCore.csproj index 66d4bccd..1dfa6272 100644 --- a/GeneralMods/StardustCore/StardustCore.csproj +++ b/GeneralMods/StardustCore/StardustCore.csproj @@ -118,6 +118,7 @@ + diff --git a/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs b/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs index f39d53f5..e2abe3dd 100644 --- a/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs +++ b/GeneralMods/StardustCore/UIUtilities/MenuComponents/Button.cs @@ -43,6 +43,19 @@ namespace StardustCore.UIUtilities.MenuComponents this.animationManager = new Animations.AnimationManager(Texture, new Animations.Animation(sourceRect), false); } + public Button(string Name,Rectangle Bounds, Texture2DExtended Texture, Rectangle sourceRect, float Scale) : base(Bounds, Texture.getTexture(), sourceRect, Scale) + { + this.name = Name; + this.animationManager = new Animations.AnimationManager(Texture, new Animations.Animation(sourceRect), false); + } + + public Button(string Name, string displayText, Rectangle Bounds, Texture2DExtended Texture, Rectangle sourceRect, float Scale) : base(Bounds, Texture.getTexture(), sourceRect, Scale) + { + this.name = Name; + this.label = displayText; + this.animationManager = new Animations.AnimationManager(Texture, new Animations.Animation(sourceRect), false); + } + /// /// Basic Button constructor. /// diff --git a/GeneralMods/StardustCore/UIUtilities/MenuComponents/CycleButton.cs b/GeneralMods/StardustCore/UIUtilities/MenuComponents/CycleButton.cs index 1b9ffca5..a71788fa 100644 --- a/GeneralMods/StardustCore/UIUtilities/MenuComponents/CycleButton.cs +++ b/GeneralMods/StardustCore/UIUtilities/MenuComponents/CycleButton.cs @@ -21,16 +21,19 @@ namespace StardustCore.UIUtilities.MenuComponents public CycleButton(Rectangle bounds, List public class VocalizationMenu: IClickableMenuExtended { - SliderButton sliderButton; + public SliderButton sliderButton; + public CycleButton languages; public VocalizationMenu(int xPos, int yPos, int width, int height, bool showCloseButton = false) : base(xPos, yPos, width, height,showCloseButton) { @@ -42,12 +43,41 @@ namespace Vocalization.Framework.Menus //Texture2DExtended barTexture = new Texture2DExtended(Vocalization.ModHelper, Vocalization.Manifest, Path.Combine("Content", "Graphics", "SliderBar.png")); Rectangle sourceRect = new Rectangle(0, 0, 4, 16); this.sliderButton = new SliderButton("Slider", "Volume", new Rectangle(this.xPositionOnScreen+100, this.yPositionOnScreen+220, 4, 16), buttonTexture, bar, sourceRect, 2f, new SliderInformation(SliderStyle.Horizontal, (int)(Vocalization.config.voiceVolume*100), 1), new StardustCore.Animations.Animation(sourceRect), Color.White, Color.Black, new StardustCore.UIUtilities.MenuComponents.Delegates.Functionality.ButtonFunctionality(null, null, null), false, null, true); + + Button English = new Button("EnglishButton", "English", new Rectangle(0, 0, 174, 39),new Texture2DExtended(Vocalization.ModHelper,Vocalization.Manifest,Path.Combine("LooseSprites","LanguageButtons.xnb"),StardewModdingAPI.ContentSource.GameContent),new Rectangle(0,0,174,39), 1f); + Button Spanish = new Button("SpanishButton", "Spanish", new Rectangle(0, 0, 174, 39), new Texture2DExtended(Vocalization.ModHelper, Vocalization.Manifest, Path.Combine("LooseSprites", "LanguageButtons.xnb"),StardewModdingAPI.ContentSource.GameContent), new Rectangle(0, 39*2, 174, 39), 1f); + Button Portuguese = new Button("PortugueseButton", "Brazillian Portuguese", new Rectangle(0, 0, 174, 39), new Texture2DExtended(Vocalization.ModHelper, Vocalization.Manifest, Path.Combine("LooseSprites", "LanguageButtons.xnb"), StardewModdingAPI.ContentSource.GameContent), new Rectangle(0, 39*4, 174, 39), 1f); + Button Russian = new Button("RussianButton", "Russian", new Rectangle(0, 0, 174, 39), new Texture2DExtended(Vocalization.ModHelper, Vocalization.Manifest, Path.Combine("LooseSprites", "LanguageButtons.xnb"), StardewModdingAPI.ContentSource.GameContent), new Rectangle(0, 39*6, 174, 39), 1f); + Button Chinese = new Button("ChineseButton", "Chinese", new Rectangle(0, 0, 174, 39), new Texture2DExtended(Vocalization.ModHelper, Vocalization.Manifest, Path.Combine("LooseSprites", "LanguageButtons.xnb"), StardewModdingAPI.ContentSource.GameContent), new Rectangle(0, 39*8, 174, 39), 1f); + Button Japanese = new Button("JapaneseButton", "Japanese", new Rectangle(0, 0, 174, 39), new Texture2DExtended(Vocalization.ModHelper, Vocalization.Manifest, Path.Combine("LooseSprites", "LanguageButtons.xnb"), StardewModdingAPI.ContentSource.GameContent), new Rectangle(0, 39*10, 174, 39), 1f); + Button German = new Button("GermanButton", "German", new Rectangle(0, 0, 174, 39), new Texture2DExtended(Vocalization.ModHelper, Vocalization.Manifest, Path.Combine("LooseSprites", "LanguageButtons.xnb"), StardewModdingAPI.ContentSource.GameContent), new Rectangle(0, 39*12, 174, 39), 1f); + List /// /// - public string sanitizeDialogueInGame(string dialogue) + public static string sanitizeDialogueInGame(string dialogue) { if (dialogue.Contains(Game1.player.Name)) { @@ -2772,7 +2772,7 @@ namespace Vocalization return possibleDialogues; } - public string sanitizeDialogueFromSpeechBubblesDictionary(string text) + public static string sanitizeDialogueFromSpeechBubblesDictionary(string text) { if (text.Contains("{0}")) { @@ -2790,7 +2790,7 @@ namespace Vocalization /// /// /// - public string sanitizeDialogueFromMailDictionary(string mailText) + public static string sanitizeDialogueFromMailDictionary(string mailText) { List texts = mailText.Split('%').ToList(); From 917e169ceadb9ea90f715f3a498bbd15bce3b91a Mon Sep 17 00:00:00 2001 From: Date: Sat, 25 Aug 2018 22:42:57 -0700 Subject: [PATCH 070/110] Fixed vocalization translation issues for some dialogue being scraped from StringsFromCS --- .../Vocalization/Framework/AudioCues.cs | 70 + .../Vocalization/Framework/Vocabulary.cs | 2 +- .../Framework/VoiceAudioOptions.cs | 8 + .../Vocalization/Vocalization/Vocalization.cs | 1558 +++++++++++++---- .../Vocalization/Vocalization.csproj | 1 + 5 files changed, 1338 insertions(+), 301 deletions(-) create mode 100644 GeneralMods/Vocalization/Vocalization/Framework/AudioCues.cs diff --git a/GeneralMods/Vocalization/Vocalization/Framework/AudioCues.cs b/GeneralMods/Vocalization/Vocalization/Framework/AudioCues.cs new file mode 100644 index 00000000..1d9049ea --- /dev/null +++ b/GeneralMods/Vocalization/Vocalization/Framework/AudioCues.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Vocalization.Framework +{ + public class AudioCues + { + //Translation_speaker_file_key + public static char Seperator = '_'; + + public static Dictionary> DictionaryReferences = new Dictionary>(); + + public static string generateKey(string translationPath, string SpeakerName, string fileName, string dialogueKey) + { + return Vocalization.config.translationInfo.getTranslationNameFromPath(translationPath) + Seperator + SpeakerName + Seperator + fileName + Seperator + dialogueKey; + } + + public static SortedDictionary getWavFileReferences(string translation) + { + return DictionaryReferences[Vocalization.config.translationInfo.getTranslationNameFromPath(translation)]; + } + + public static void initialize() + { + if (!Directory.Exists(Path.Combine(Vocalization.ModHelper.DirectoryPath, "AudioCues"))){ + Directory.CreateDirectory(Path.Combine(Vocalization.ModHelper.DirectoryPath, "AudioCues")); + } + loadAudioCues(); + + } + + public static void addWavReference(string key, VoiceAudioOptions cue) + { + try + { + string translation = key.Split(Seperator).ElementAt(0); + DictionaryReferences.TryGetValue(translation,out SortedDictionary value); + + value.Add(key, cue); + } + catch(Exception err) + { + + } + } + + public static void loadAudioCues() + { + foreach (var v in Vocalization.config.translationInfo.translations) + { + var loaded = Vocalization.ModHelper.ReadJsonFile>(Path.Combine(Vocalization.ModHelper.DirectoryPath, "AudioCues","AudioCues" + Seperator + v + ".json")); + if (loaded == null) loaded = new SortedDictionary(); + DictionaryReferences.Add(v,loaded); + } + } + + public static void saveAudioCues() + { + foreach (var v in DictionaryReferences) + { + Vocalization.ModHelper.WriteJsonFile>(Path.Combine(Vocalization.ModHelper.DirectoryPath, "AudioCues", "AudioCues" + Seperator + v.Key + ".json"),v.Value); + } + } + + } +} diff --git a/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs b/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs index 609640b8..9b522b06 100644 --- a/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/Vocabulary.cs @@ -146,7 +146,7 @@ namespace Vocalization.Framework { List stock = new List(); Dictionary objDict = Game1.content.Load>(Path.Combine("Data", Vocalization.config.translationInfo.getXNBForTranslation("ObjectInformation", translation))); - Vocalization.ModMonitor.Log("LOAD THE OBJECT INFO: ", LogLevel.Alert); + //Vocalization.ModMonitor.Log("LOAD THE OBJECT INFO: ", LogLevel.Alert); foreach (KeyValuePair pair in objDict) { for (int i = 0; i <= 3; i++) diff --git a/GeneralMods/Vocalization/Vocalization/Framework/VoiceAudioOptions.cs b/GeneralMods/Vocalization/Vocalization/Framework/VoiceAudioOptions.cs index cf2472f0..c8af8fb0 100644 --- a/GeneralMods/Vocalization/Vocalization/Framework/VoiceAudioOptions.cs +++ b/GeneralMods/Vocalization/Vocalization/Framework/VoiceAudioOptions.cs @@ -39,6 +39,14 @@ namespace Vocalization.Framework simpleAndHeartEvents = ""; } + public VoiceAudioOptions(string simple, string full, string heartEvent, string simpleAndHeartEvent) + { + this.simple = simple; + this.full = full; + this.heartEvents = heartEvent; + this.simpleAndHeartEvents = simpleAndHeartEvent; + } + public string getAudioClip() { if (Vocalization.config.currentMode == "Simple") return simple; diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.cs b/GeneralMods/Vocalization/Vocalization/Vocalization.cs index 17079aed..877886c3 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.cs +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.cs @@ -171,9 +171,9 @@ namespace Vocalization /// public static SimpleSoundManager.Framework.SoundManager soundManager; - - + + /// /// The path to the folder where all of the NPC folders for dialogue .wav files are kept. /// @@ -211,9 +211,11 @@ namespace Vocalization config = ModHelper.ReadConfig(); + AudioCues.initialize(); + config.verifyValidMode(); //Make sure the current mode is valid. soundManager.volume = (float)config.voiceVolume; //Set the volume for voices. - + } private void MenuEvents_MenuChanged(object sender, StardewModdingAPI.Events.EventArgsClickableMenuChanged e) @@ -237,7 +239,7 @@ namespace Vocalization soundManager.stopAllSounds(); previousDialogue = ""; } - catch(Exception err) + catch (Exception err) { previousDialogue = ""; } @@ -255,6 +257,8 @@ namespace Vocalization initialzeModualGameMenuHack(); initialzeDirectories(); loadAllVoiceFiles(); + + AudioCues.saveAudioCues(); } /// @@ -277,18 +281,18 @@ namespace Vocalization Texture2D myText = textures.ElementAt(randNum); ClickableTextureComponent c = new ClickableTextureComponent(new Rectangle(0, 16, 16, 24), myText, new Rectangle(0, 0, 16, 24), 2f, false); - ClickableTextureComponent speech = new ClickableTextureComponent(new Rectangle(0, 0, 32, 32), ModHelper.Content.Load (Path.Combine("Content", "Graphics", "SpeechBubble.png")), new Rectangle(0, 0, 32, 32), 2f, false); + ClickableTextureComponent speech = new ClickableTextureComponent(new Rectangle(0, 0, 32, 32), ModHelper.Content.Load(Path.Combine("Content", "Graphics", "SpeechBubble.png")), new Rectangle(0, 0, 32, 32), 2f, false); List> components = new List>(); - components.Add(new KeyValuePair(c,ExtraTextureDrawOrder.after)); + components.Add(new KeyValuePair(c, ExtraTextureDrawOrder.after)); components.Add(new KeyValuePair(speech, ExtraTextureDrawOrder.after)); - Button menuTab = new Button("", new Rectangle(0, 0, 32, 32), new Texture2DExtended(ModHelper, ModManifest, Path.Combine("Content", "Graphics", "MenuTab.png")), "", new Rectangle(0, 0, 32, 32), 2f, new StardustCore.Animations.Animation(new Rectangle(0, 0, 32, 32)), Color.White, Color.White, new StardustCore.UIUtilities.MenuComponents.Delegates.Functionality.ButtonFunctionality(new StardustCore.UIUtilities.MenuComponents.Delegates.DelegatePairing(null,null), new StardustCore.UIUtilities.MenuComponents.Delegates.DelegatePairing(null,null), new StardustCore.UIUtilities.MenuComponents.Delegates.DelegatePairing(null,null)), false, components); + Button menuTab = new Button("", new Rectangle(0, 0, 32, 32), new Texture2DExtended(ModHelper, ModManifest, Path.Combine("Content", "Graphics", "MenuTab.png")), "", new Rectangle(0, 0, 32, 32), 2f, new StardustCore.Animations.Animation(new Rectangle(0, 0, 32, 32)), Color.White, Color.White, new StardustCore.UIUtilities.MenuComponents.Delegates.Functionality.ButtonFunctionality(new StardustCore.UIUtilities.MenuComponents.Delegates.DelegatePairing(null, null), new StardustCore.UIUtilities.MenuComponents.Delegates.DelegatePairing(null, null), new StardustCore.UIUtilities.MenuComponents.Delegates.DelegatePairing(null, null)), false, components); //Change this to take the vocalization menu instead List> modTabs = new List>(); - modTabs.Add(new KeyValuePair(menuTab, new VocalizationMenu(100,64,600,300,true))); - StardustCore.Menus.ModularGameMenu.AddTabsForMod(ModManifest,modTabs); + modTabs.Add(new KeyValuePair(menuTab, new VocalizationMenu(100, 64, 600, 300, true))); + StardustCore.Menus.ModularGameMenu.AddTabsForMod(ModManifest, modTabs); ModMonitor.Log("VOCALIZATION MENU HACK COMPLETE!", LogLevel.Alert); } @@ -321,11 +325,11 @@ namespace Vocalization components.Add(new KeyValuePair(c, ExtraTextureDrawOrder.after)); components.Add(new KeyValuePair(speech, ExtraTextureDrawOrder.after)); - Button menuTab = new Button("", new Rectangle(0,0, 32, 32), new Texture2DExtended(ModHelper, ModManifest, Path.Combine("Content", "Graphics", "MenuTab.png")), "", new Rectangle(0, 0, 32, 32), 2f, new StardustCore.Animations.Animation(new Rectangle(0, 0, 32, 32)), Color.White, Color.White, new StardustCore.UIUtilities.MenuComponents.Delegates.Functionality.ButtonFunctionality(null, null, null), false, components); + Button menuTab = new Button("", new Rectangle(0, 0, 32, 32), new Texture2DExtended(ModHelper, ModManifest, Path.Combine("Content", "Graphics", "MenuTab.png")), "", new Rectangle(0, 0, 32, 32), 2f, new StardustCore.Animations.Animation(new Rectangle(0, 0, 32, 32)), Color.White, Color.White, new StardustCore.UIUtilities.MenuComponents.Delegates.Functionality.ButtonFunctionality(null, null, null), false, components); //Change this to take the vocalization menu instead List> modTabs = new List>(); - modTabs.Add(new KeyValuePair(menuTab, new VocalizationMenu(100, 64, 600, 300,true))); + modTabs.Add(new KeyValuePair(menuTab, new VocalizationMenu(100, 64, 600, 300, true))); StardustCore.Menus.ModularGameMenu.StaticMenuTabsAndPages[ModManifest.UniqueID] = modTabs; } @@ -355,8 +359,10 @@ namespace Vocalization private void GameEvents_UpdateTick(object sender, EventArgs e) { soundManager.update(); - if (Game1.player != null) { - if (Game1.player.currentLocation != null) { + if (Game1.player != null) + { + if (Game1.player.currentLocation != null) + { foreach (NPC v in Game1.currentLocation.characters) { string text = (string)GetInstanceField(typeof(NPC), v, "textAboveHead"); @@ -366,7 +372,7 @@ namespace Vocalization if (onScreenSpeechBubbleDialogues.Contains(currentDialogue) && timer > 0) continue; //If I have already added this dialogue and the timer has not run out, do nothing. - if (!onScreenSpeechBubbleDialogues.Contains(currentDialogue) && timer>0) //If I have not added this dialogue and the timer has not run out, add it. + if (!onScreenSpeechBubbleDialogues.Contains(currentDialogue) && timer > 0) //If I have not added this dialogue and the timer has not run out, add it. { List tries = new List(); tries.Add("SpeechBubbles"); @@ -397,7 +403,7 @@ namespace Vocalization { onScreenSpeechBubbleDialogues.Remove(currentDialogue); } - if(timer<=0 && !onScreenSpeechBubbleDialogues.Contains(currentDialogue)) //If the timer has run out and I no longer contain the dialogue, continue on. + if (timer <= 0 && !onScreenSpeechBubbleDialogues.Contains(currentDialogue)) //If the timer has run out and I no longer contain the dialogue, continue on. { continue; } @@ -411,7 +417,7 @@ namespace Vocalization string speakerName = Game1.currentSpeaker.Name; if (Game1.activeClickableMenu.GetType() == typeof(StardewValley.Menus.DialogueBox)) { - StardewValley.Menus.DialogueBox dialogueBox =(DialogueBox)Game1.activeClickableMenu; + StardewValley.Menus.DialogueBox dialogueBox = (DialogueBox)Game1.activeClickableMenu; string currentDialogue = dialogueBox.getCurrentString(); if (previousDialogue != currentDialogue) { @@ -449,7 +455,7 @@ namespace Vocalization { ModMonitor.Log("New unregistered dialogue detected for NPC: " + v + " saying: " + currentDialogue, LogLevel.Alert); ModMonitor.Log("Make sure to add this to their respective VoiceCue.json file if you wish for this dialogue to have voice acting associated with it!", LogLevel.Alert); - + } } } @@ -458,15 +464,15 @@ namespace Vocalization else { if (Game1.activeClickableMenu == null) return; - //Support for TV - if (Game1.activeClickableMenu.GetType() == typeof(StardewValley.Menus.DialogueBox)) + //Support for TV + if (Game1.activeClickableMenu.GetType() == typeof(StardewValley.Menus.DialogueBox)) + { + StardewValley.Menus.DialogueBox dialogueBox = (DialogueBox)Game1.activeClickableMenu; + string currentDialogue = dialogueBox.getCurrentString(); + if (previousDialogue != currentDialogue) { - StardewValley.Menus.DialogueBox dialogueBox = (DialogueBox)Game1.activeClickableMenu; - string currentDialogue = dialogueBox.getCurrentString(); - if (previousDialogue != currentDialogue) - { - previousDialogue = currentDialogue; //Update my previously read dialogue so that I only read the new string once when it appears. - ModMonitor.Log(currentDialogue); //Print out my dialogue. + previousDialogue = currentDialogue; //Update my previously read dialogue so that I only read the new string once when it appears. + ModMonitor.Log(currentDialogue); //Print out my dialogue. List tries = new List(); tries.Add("TV"); @@ -481,7 +487,7 @@ namespace Vocalization { //Add in support for TV Shows CharacterVoiceCue voice; - bool f=DialogueCues.TryGetValue(v, out voice); + bool f = DialogueCues.TryGetValue(v, out voice); currentDialogue = sanitizeDialogueInGame(currentDialogue); //If contains the stuff in the else statement, change things up. if (voice.dialogueCues.ContainsKey(currentDialogue)) { @@ -495,11 +501,11 @@ namespace Vocalization { ModMonitor.Log("New unregistered dialogue detected saying: " + currentDialogue, LogLevel.Alert); ModMonitor.Log("Make sure to add this to their respective VoiceCue.json file if you wish for this dialogue to have voice acting associated with it!", LogLevel.Alert); - + } } - } } + } //Support for Letters if (Game1.activeClickableMenu.GetType() == typeof(StardewValley.Menus.LetterViewerMenu)) @@ -507,9 +513,9 @@ namespace Vocalization //Use reflection to get original text back. var menu = (StardewValley.Menus.LetterViewerMenu)Game1.activeClickableMenu; //mail dialogue text will probably need to be sanitized as well.... - List mailText=(List)ModHelper.Reflection.GetField>(menu, "mailMessage", true); + List mailText = (List)ModHelper.Reflection.GetField>(menu, "mailMessage", true); string currentDialogue = ""; - foreach(var v in mailText) + foreach (var v in mailText) { currentDialogue += mailText; } @@ -531,7 +537,7 @@ namespace Vocalization ModMonitor.Log("New unregistered Mail dialogue detected saying: " + currentDialogue, LogLevel.Alert); ModMonitor.Log("Make sure to add this to their respective VoiceCue.json file if you wish for this dialogue to have voice acting associated with it!", LogLevel.Alert); } - + } //Support for shops @@ -552,10 +558,10 @@ namespace Vocalization //Add in support for Shops CharacterVoiceCue voice; //character shops - bool f=DialogueCues.TryGetValue("Shops", out voice); + bool f = DialogueCues.TryGetValue("Shops", out voice); if (f == false) { - ModMonitor.Log("Can't find the dialogue for the shop: " + npc.Name); + ModMonitor.Log("Can't find the dialogue for the shop: " + npc.Name); } shopDialogue = sanitizeDialogueInGame(shopDialogue); //If contains the stuff in the else statement, change things up. @@ -579,7 +585,7 @@ namespace Vocalization ModMonitor.Log("New unregistered dialogue detected saying: " + shopDialogue, LogLevel.Alert); ModMonitor.Log("Make sure to add this to their respective VoiceCue.json file if you wish for this dialogue to have voice acting associated with it!", LogLevel.Alert); } - + } } @@ -600,12 +606,12 @@ namespace Vocalization VoicePath = voicePath; //Set a static reference to my voice files directory. - + //Get a list of all characters in the game and make voice directories for them in each supported translation of the mod. foreach (var loc in Game1.locations) { - foreach(var NPC in loc.characters) + foreach (var NPC in loc.characters) { foreach (var translation in config.translationInfo.translations) { @@ -618,7 +624,7 @@ namespace Vocalization //Create all of the necessary folders for different translations. foreach (var dir in config.translationInfo.translations) { - if (!Directory.Exists(Path.Combine(voicePath,dir))) Directory.CreateDirectory(Path.Combine(voicePath, dir)); + if (!Directory.Exists(Path.Combine(voicePath, dir))) Directory.CreateDirectory(Path.Combine(voicePath, dir)); } //Add in folder for TV Shows @@ -758,7 +764,7 @@ namespace Vocalization { ModMonitor.Log(dir); - string[] clips = Directory.GetFiles(dir,"*.wav"); + string[] clips = Directory.GetFiles(dir, "*.wav"); //For every .wav file in every character voice clip directory load in the voice clip. foreach (var file in clips) @@ -776,10 +782,11 @@ namespace Vocalization //I have to scrape all files if they don't exist so that way all options are available for release. if (!File.Exists(voiceCueFile)) { + CharacterVoiceCue cue = new CharacterVoiceCue(characterName); cue.initializeEnglishScrape(); cue.initializeForTranslation(translation); - scrapeDictionaries(voiceCueFile,cue,translation); + scrapeDictionaries(voiceCueFile, cue, translation); try { if (Path.GetFileName(translation) == config.translationInfo.currentTranslation) @@ -787,7 +794,7 @@ namespace Vocalization DialogueCues.Add(characterName, cue); } } - catch(Exception err) + catch (Exception err) { } @@ -817,7 +824,7 @@ namespace Vocalization /// Used to obtain all strings for almost all possible dialogue in the game. /// /// - public static void scrapeDictionaries(string path,CharacterVoiceCue cue,string translation) + public static void scrapeDictionaries(string path, CharacterVoiceCue cue, string translation) { var dialoguePath = Path.Combine("Characters", "Dialogue"); @@ -826,18 +833,18 @@ namespace Vocalization var festivalPath = Path.Combine(dataPath, "Festivals"); var eventPath = Path.Combine(dataPath, "Events"); - ModMonitor.Log("Scraping dialogue for character: " + cue.name,LogLevel.Info); + ModMonitor.Log("Scraping dialogue for character: " + cue.name, LogLevel.Info); //If the "character"'s name is TV which means I'm watching tv, scrape the data from the TV shows. if (cue.name == "TV") { - + foreach (var fileName in cue.dataFileNames) { - ModMonitor.Log(" Scraping dialogue file: " + fileName,LogLevel.Info); + ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); //basically this will never run but can be used below to also add in dialogue. if (!String.IsNullOrEmpty(fileName)) { - string dialoguePath2 = Path.Combine(dataPath,"TV",fileName); + string dialoguePath2 = Path.Combine(dataPath, "TV", fileName); var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); //Scraping the CookingChannel dialogue @@ -854,13 +861,23 @@ namespace Vocalization string cookingDialogue = splitDialogues.ElementAt(1); //If the key contains the character's name. - List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(cookingDialogue,cue); - foreach (var str in cleanDialogues) + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(cookingDialogue, cue); + foreach (var str in cleanDialogues) + { + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) { - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); } - + else + { + cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } + } + } continue; } @@ -876,13 +893,24 @@ namespace Vocalization string rawDialogue = pair.Value; if (key != "intro") continue; //If the key contains the character's name. - List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); - foreach (var str in cleanDialogues) + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); + foreach (var str in cleanDialogues) + { + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) { - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); } - + else + { + cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } + } + } continue; } @@ -897,13 +925,23 @@ namespace Vocalization string key = pair.Key; string rawDialogue = pair.Value; - List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); - foreach (var str in cleanDialogues) + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); + foreach (var str in cleanDialogues) + { + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) { - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); } - + else + { + cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } + } + } continue; } @@ -931,16 +969,26 @@ namespace Vocalization List cleanDialogues = new List(); - if(key== "TV.cs.13151") + if (key == "TV.cs.13151") { - foreach(string recipe in Vocabulary.getAllCookingRecipes(translation)) + foreach (string recipe in Vocabulary.getAllCookingRecipes(translation)) { rawDialogue = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:TV.cs.13151"), translation, (object)recipe); List cleanDialogues2 = new List(); cleanDialogues2 = sanitizeDialogueFromDictionaries(rawDialogue, cue); foreach (var str in cleanDialogues2) { - cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } continue; @@ -956,7 +1004,17 @@ namespace Vocalization cleanDialogues2 = sanitizeDialogueFromDictionaries(rawDialogue, cue); foreach (var str in cleanDialogues2) { - cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } continue; @@ -980,7 +1038,7 @@ namespace Vocalization string startTime = times.Split(' ').ElementAt(0); string finishTime = times.Split(' ').ElementAt(1); config.translationInfo.changeLocalizedContentManagerFromTranslation(translation); - string dialogueString=config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:TV.cs.13175"), translation, (object)name, (object)location, (object)Game1.getTimeOfDayString(Convert.ToInt32(startTime)), (object)Game1.getTimeOfDayString(Convert.ToInt32(finishTime))); + string dialogueString = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:TV.cs.13175"), translation, (object)name, (object)location, (object)Game1.getTimeOfDayString(Convert.ToInt32(startTime)), (object)Game1.getTimeOfDayString(Convert.ToInt32(finishTime))); config.translationInfo.resetLocalizationCode(); cleanDialogues = sanitizeDialogueFromDictionaries(dialogueString, cue); @@ -988,12 +1046,22 @@ namespace Vocalization foreach (var str in cleanDialogues) { string ahh = sanitizeDialogueFromMailDictionary(str); - cue.addDialogue(ahh, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + + cue.addDialogue(ahh, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + } + else + { + cue.addDialogue(ahh, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } - catch(Exception err) + catch (Exception err) { //ModMonitor.Log(err.ToString()); } @@ -1002,12 +1070,22 @@ namespace Vocalization continue; } - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); - + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); + foreach (var str in cleanDialogues) { string ahh = sanitizeDialogueFromMailDictionary(str); - cue.addDialogue(ahh, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + + cue.addDialogue(ahh, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + } + else + { + cue.addDialogue(ahh, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } @@ -1043,37 +1121,58 @@ namespace Vocalization string rawDialogue = pair.Value; if (!key.Contains("ShopMenu")) continue; //If the key contains the character's name. - - if(key== "ShopMenu.cs.11464") + + if (key == "ShopMenu.cs.11464") { - foreach (var obj in Vocabulary.getCarpenterStock(translation)) { + foreach (var obj in Vocabulary.getCarpenterStock(translation)) + { foreach (string word1 in Vocabulary.getRandomPositiveAdjectivesForEventOrPerson(translation, null)) { - rawDialogue=config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:ShopMenu.cs.11464"), translation, (object)obj, (object)word1, (object)Vocabulary.getProperArticleForWord(obj,translation)); + rawDialogue = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:ShopMenu.cs.11464"), translation, (object)obj, (object)word1, (object)Vocabulary.getProperArticleForWord(obj, translation)); List cleanDialogues2 = new List(); cleanDialogues2 = sanitizeDialogueFromDictionaries(rawDialogue, cue); foreach (var str in cleanDialogues2) { - cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } } continue; } - if(key== "ShopMenu.cs.11502") + if (key == "ShopMenu.cs.11502") { foreach (var obj in Vocabulary.getMerchantStock(translation)) { - rawDialogue = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:ShopMenu.cs.11502"), translation, (object)obj); - List cleanDialogues2 = new List(); - cleanDialogues2 = sanitizeDialogueFromDictionaries(rawDialogue, cue); - foreach (var str in cleanDialogues2) + rawDialogue = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:ShopMenu.cs.11502"), translation, (object)obj); + List cleanDialogues2 = new List(); + cleanDialogues2 = sanitizeDialogueFromDictionaries(rawDialogue, cue); + foreach (var str in cleanDialogues2) + { + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + } + else { cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); } - + } + } continue; } @@ -1087,7 +1186,17 @@ namespace Vocalization cleanDialogues2 = sanitizeDialogueFromDictionaries(rawDialogue, cue); foreach (var str in cleanDialogues2) { - cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } @@ -1095,14 +1204,24 @@ namespace Vocalization } List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); - foreach (var str in cleanDialogues) + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); + foreach (var str in cleanDialogues) + { + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) { - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); } - + else + { + cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } + } + } - + continue; } //For moddablity add a generic scrape here! @@ -1123,43 +1242,76 @@ namespace Vocalization string dialoguePath2 = Path.Combine(dataPath, fileName); var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); foreach (KeyValuePair pair in DialogueDict) - { + { //Get the key in the dictionary string key = pair.Key; string rawDialogue = pair.Value; List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); foreach (var str in cleanDialogues) { - if(key== "NewChild_Adoption") { - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data","ExtraDialogue:"+key),translation,replacementStrings.kid1Name), new VoiceAudioOptions()); - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data","ExtraDialogue:"+key), translation, replacementStrings.kid2Name), new VoiceAudioOptions()); + if (key == "NewChild_Adoption") + { + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), translation, replacementStrings.kid1Name), new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), translation, replacementStrings.kid2Name), new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + } + else + { + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), translation, replacementStrings.kid1Name), new VoiceAudioOptions()); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), translation, replacementStrings.kid2Name), new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } continue; } - if(key== "NewChild_FirstChild") + if (key == "NewChild_FirstChild") { - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:"+key), translation, replacementStrings.kid1Name), new VoiceAudioOptions()); + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), translation, replacementStrings.kid1Name), new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), translation, replacementStrings.kid1Name), new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } continue; } - if(key== "Farm_RobinWorking_ReadyTomorrow" || key== "Robin_NewConstruction_Festival"||key== "Robin_NewConstruction" || key== "Robin_Instant") + if (key == "Farm_RobinWorking_ReadyTomorrow" || key == "Robin_NewConstruction_Festival" || key == "Robin_NewConstruction" || key == "Robin_Instant") { string buildingsPath = Path.Combine(dataPath, config.translationInfo.getBuildingXNBForTranslation(translation)); var BuildingDict = ModHelper.Content.Load>(buildingsPath, ContentSource.GameContent); - foreach(KeyValuePair pair2 in BuildingDict) + foreach (KeyValuePair pair2 in BuildingDict) { - List cleanedDialogues = sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:"+key),translation,pair2.Key),cue); - foreach (var clean_str in cleanedDialogues) { - cue.addDialogue(clean_str, new VoiceAudioOptions()); + List cleanedDialogues = sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), translation, pair2.Key), cue); + foreach (var clean_str in cleanedDialogues) + { + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(clean_str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(clean_str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } continue; } - if (key == "Farm_RobinWorking1" || key== "Farm_RobinWorking2") + if (key == "Farm_RobinWorking1" || key == "Farm_RobinWorking2") { string buildingsPath = Path.Combine(dataPath, config.translationInfo.getBuildingXNBForTranslation(translation)); var BuildingDict = ModHelper.Content.Load>(buildingsPath, ContentSource.GameContent); @@ -1168,14 +1320,27 @@ namespace Vocalization { for (int i = 1; i <= 3; i++) { - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:" + key),translation, pair2.Key,i.ToString()), new VoiceAudioOptions()); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), translation, pair2.Key, i.ToString()), new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), translation, pair2.Key, i.ToString()), new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } + + } } continue; } //Generate all possible tool combinations for clint. - if(key== "Clint_StillWorking") + if (key == "Clint_StillWorking") { List tools = new List(); tools.Add("Hoe"); @@ -1189,39 +1354,83 @@ namespace Vocalization levels.Add("Gold "); levels.Add("Iridium "); - foreach(var tool in tools) + foreach (var tool in tools) { - foreach(var lvl in levels) + foreach (var lvl in levels) { - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data","ExtraDialogue:"+key),translation ,lvl+tool), new VoiceAudioOptions()); + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), translation, lvl + tool), new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:" + key), translation, lvl + tool), new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } + } } continue; } - if(key== "Morris_WeekendGreeting_MembershipAvailable" || key=="Morris_FirstGreeting_MembershipAvailable") + if (key == "Morris_WeekendGreeting_MembershipAvailable" || key == "Morris_FirstGreeting_MembershipAvailable") { List cleanedDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); - foreach(var dia in cleanedDialogues) + foreach (var dia in cleanedDialogues) { if (dia.Contains("{0}")) { string actual = dia.Replace("{0}", "5000"); - cue.addDialogue(actual, new VoiceAudioOptions()); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(actual, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(actual, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } + } else { - cue.addDialogue(dia, new VoiceAudioOptions()); + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(dia, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(dia, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } continue; } continue; } + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } + + } + } } } @@ -1250,10 +1459,20 @@ namespace Vocalization //If the key contains the character's name. List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } @@ -1285,10 +1504,20 @@ namespace Vocalization //If the key contains the character's name. if (!key.Contains("Event")) continue; List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } } @@ -1302,10 +1531,20 @@ namespace Vocalization string rawDialogue = pair.Value; //If the key contains the character's name. List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } } @@ -1333,9 +1572,19 @@ namespace Vocalization string rawDialogue = pair.Value; //If the key contains the character's name. - string cleanDialogue = ""; - cleanDialogue = sanitizeDialogueFromMailDictionary(rawDialogue); - cue.addDialogue(cleanDialogue, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty + string str = ""; + str = sanitizeDialogueFromMailDictionary(rawDialogue); + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } } @@ -1344,7 +1593,7 @@ namespace Vocalization //Used to scrape Content/strings/Characters.yaml. else if (cue.name == "Characters") - { + { foreach (var fileName in cue.stringsFileNames) { ModMonitor.Log(" Scraping dialogue file: " + fileName, LogLevel.Info); @@ -1364,10 +1613,20 @@ namespace Vocalization //If the key contains the character's name. List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } @@ -1379,9 +1638,6 @@ namespace Vocalization //do nothing.....for now..... //FORTUNE TELLER DIALOGUE SCRAPE GOES HERE!!!! } - - - //!!!!!!!!!!!!If I ever want to make this moddable add a generic scrape here. } } @@ -1399,23 +1655,33 @@ namespace Vocalization string dialoguePath2 = Path.Combine(stringsPath, fileName); var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); - //Scrape the whole dictionary looking for the character's name. - foreach (KeyValuePair pair in DialogueDict) + //Scrape the whole dictionary looking for the character's name. + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key; + string rawDialogue = pair.Value; + //If the key contains the character's name. + + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); + foreach (var str in cleanDialogues) { - //Get the key in the dictionary - string key = pair.Key; - string rawDialogue = pair.Value; - //If the key contains the character's name. - - List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); - foreach (var str in cleanDialogues) + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) { - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. - } + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } - continue; + + } + continue; } } @@ -1429,24 +1695,34 @@ namespace Vocalization string dialoguePath2 = Path.Combine(dataPath, fileName); var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); - //Scrape the whole dictionary looking for the character's name. - foreach (KeyValuePair pair in DialogueDict) + //Scrape the whole dictionary looking for the character's name. + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + int key = pair.Key; + string rawDialogue = pair.Value; + //If the key contains the character's name. + + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); + foreach (var str in cleanDialogues) { - //Get the key in the dictionary - int key = pair.Key; - string rawDialogue = pair.Value; - //If the key contains the character's name. - - List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); - foreach (var str in cleanDialogues) + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key.ToString()))) { - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. - } + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key.ToString()), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key.ToString()), new VoiceAudioOptions()); + } } - continue; - + + } + continue; + } } @@ -1473,11 +1749,21 @@ namespace Vocalization //If the key contains the character's name. List cleanDialogue = new List(); - cleanDialogue = sanitizeDialogueFromDictionaries(rawDialogue,cue); + cleanDialogue = sanitizeDialogueFromDictionaries(rawDialogue, cue); - foreach (var v in cleanDialogue) + foreach (var str in cleanDialogue) { - cue.addDialogue(v, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } } @@ -1498,15 +1784,15 @@ namespace Vocalization continue; //If the file is not found for some reason... } var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); - //Scrape the whole dictionary looking for the character's name. - foreach (KeyValuePair pair in DialogueDict) - { - //Get the key in the dictionary - string key = pair.Key.ToString(); - string rawDialogue = pair.Value; + //Scrape the whole dictionary looking for the character's name. + foreach (KeyValuePair pair in DialogueDict) + { + //Get the key in the dictionary + string key = pair.Key.ToString(); + string rawDialogue = pair.Value; //If the key contains the character's name. - int count = rawDialogue.Split('/').Length-1; + int count = rawDialogue.Split('/').Length - 1; string[] strippedRawQuestDialogue = new string[count]; List strippedFreshQuestDialogue = new List(); strippedRawQuestDialogue = rawDialogue.Split('/'); @@ -1518,22 +1804,32 @@ namespace Vocalization { strippedFreshQuestDialogue.Add(response); } - + List cleanDialogues = new List(); foreach (var dia in strippedFreshQuestDialogue) { - cleanDialogues = sanitizeDialogueFromDictionaries(dia,cue); + cleanDialogues = sanitizeDialogueFromDictionaries(dia, cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } - } - continue; - + } + continue; + } - } + } //ADD THIS TO THE ACTUAL NPC???? else if (cue.name == "NPCGiftTastes") @@ -1564,9 +1860,9 @@ namespace Vocalization string key = pair.Key; string rawDialogue = pair.Value; - //Check to see if I need to ignore this key in my dictionary I am scaping. + //Check to see if I need to ignore this key in my dictionary I am scaping. bool ignore = false; - foreach(var value in ignoreKeys) + foreach (var value in ignoreKeys) { if (key == value) { @@ -1577,9 +1873,9 @@ namespace Vocalization if (ignore) continue; - string[]strippedRawQuestDialogue = new string[20]; - ListstrippedFreshQuestDialogue = new List(); - strippedRawQuestDialogue = rawDialogue.Split(new string[] {"/" },StringSplitOptions.None); + string[] strippedRawQuestDialogue = new string[20]; + List strippedFreshQuestDialogue = new List(); + strippedRawQuestDialogue = rawDialogue.Split(new string[] { "/" }, StringSplitOptions.None); string prompt1 = strippedRawQuestDialogue.ElementAt(0); @@ -1597,10 +1893,20 @@ namespace Vocalization List cleanDialogues = new List(); foreach (var dia in strippedFreshQuestDialogue) { - cleanDialogues = sanitizeDialogueFromDictionaries(dia,cue); + cleanDialogues = sanitizeDialogueFromDictionaries(dia, cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } } @@ -1628,8 +1934,18 @@ namespace Vocalization //Get the key in the dictionary string key = pair.Key; string rawDialogue = pair.Value; - string cleanString = sanitizeDialogueFromSpeechBubblesDictionary(rawDialogue); - cue.addDialogue(cleanString, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + string str = sanitizeDialogueFromSpeechBubblesDictionary(rawDialogue); + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } continue; } @@ -1640,30 +1956,200 @@ namespace Vocalization string voicePath = Path.Combine(audioPath, "VoiceFiles"); - string[] dirs = Directory.GetDirectories(Path.Combine(voicePath, translation)); - //Some additional scraping to put together better options for speech bubbles. - foreach (var v in dirs) + string[] dirs = Directory.GetDirectories(translation); + //Some additional scraping to put together better options for speech bubbles. + foreach (var v in dirs) + { + string name = Path.GetFileName(v); + + string fileName = "StringsFromCSFiles"; + string key = "NPC.cs.4068"; + string str = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4068"), translation, (object)name); + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) { - string name = Path.GetFileName(v); - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4068"), translation, (object)name), new VoiceAudioOptions()); - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4065"),translation) + ", " + config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4066"), translation, (object)name), new VoiceAudioOptions()); - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4071"), translation, (object)name), new VoiceAudioOptions()); + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); } - - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4060"),translation), new VoiceAudioOptions()); - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4072"),translation), new VoiceAudioOptions()); + key = "NPC.cs.4065"; + str = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4065"), translation) + ", " + config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4066"), translation, (object)name); + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4063"),translation), new VoiceAudioOptions()); - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4064"),translation), new VoiceAudioOptions()); + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } + + key = "NPC.cs.4071"; + str = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4071"), translation, (object)name); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } + } + + string fileName1 = "StringsFromCSFiles"; + string str1 = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4060"), translation); + string key1 = "NPC.cs.4060"; + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + str1 = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4072"), translation); + key1 = "NPC.cs.4072"; + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + key1 = "NPC.cs.4063"; + str1 = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4063"), translation); + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + key1 = "NPC.cs.4064"; + str1 = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4064"), translation); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } //cue.addDialogue("Hey, it's farmer, " + replacementStrings.farmerName,new VoiceAudioOptions()); - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4062"),translation), new VoiceAudioOptions()); - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4061"),translation), new VoiceAudioOptions()); - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4060"),translation), new VoiceAudioOptions()); - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4059"),translation), new VoiceAudioOptions()); - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4058"),translation), new VoiceAudioOptions()); + key1 = "NPC.cs.4062"; + str1 = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4062"), translation); + + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + key1 = "NPC.cs.4061"; + str1 = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4061"), translation); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + key1 = "NPC.cs.4060"; + str1 = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4060"), translation); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + key1 = "NPC.cs.4059"; + str1 = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4059"), translation); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + key1 = "NPC.cs.4058"; + str1 = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4058"), translation); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } } @@ -1701,7 +2187,17 @@ namespace Vocalization { try { - cue.dialogueCues.Add(cleanSentence, new VoiceAudioOptions()); + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, config.translationInfo.getXNBForTranslation("Temp", translation), pair.Key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, config.translationInfo.getXNBForTranslation("Temp", translation), pair.Key), out VoiceAudioOptions value); + cue.addDialogue(cleanSentence, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(cleanSentence, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, config.translationInfo.getXNBForTranslation("Temp", translation), pair.Key), new VoiceAudioOptions()); + } } catch (Exception err) { @@ -1728,7 +2224,17 @@ namespace Vocalization { try { - cue.dialogueCues.Add(cleanSentence, new VoiceAudioOptions()); + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, config.translationInfo.getXNBForTranslation("Temp", translation), pair.Key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, config.translationInfo.getXNBForTranslation("Temp", translation), pair.Key), out VoiceAudioOptions value); + cue.addDialogue(cleanSentence, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(cleanSentence, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, config.translationInfo.getXNBForTranslation("Temp", translation), pair.Key), new VoiceAudioOptions()); + } } catch (Exception err) { @@ -1754,7 +2260,17 @@ namespace Vocalization { try { - cue.dialogueCues.Add(cleanSentence, new VoiceAudioOptions()); + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, config.translationInfo.getXNBForTranslation("Temp", translation), pair.Key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, config.translationInfo.getXNBForTranslation("Temp", translation), pair.Key), out VoiceAudioOptions value); + cue.addDialogue(cleanSentence, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(cleanSentence, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, config.translationInfo.getXNBForTranslation("Temp", translation), pair.Key), new VoiceAudioOptions()); + } } catch (Exception err) { @@ -1787,7 +2303,17 @@ namespace Vocalization { try { - cue.dialogueCues.Add(cleanSentence, new VoiceAudioOptions()); + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, config.translationInfo.getXNBForTranslation("Temp", translation), pair.Key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, config.translationInfo.getXNBForTranslation("Temp", translation), pair.Key), out VoiceAudioOptions value); + cue.addDialogue(cleanSentence, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(cleanSentence, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, config.translationInfo.getXNBForTranslation("Temp", translation), pair.Key), new VoiceAudioOptions()); + } } catch (Exception err) { @@ -1811,10 +2337,10 @@ namespace Vocalization if (!String.IsNullOrEmpty(fileName)) { string dialoguePath2 = Path.Combine(dialoguePath, fileName); - string root=Game1.content.RootDirectory;///////USE THIS TO CHECK FOR EXISTENCE!!!!! - if (!File.Exists(Path.Combine(root,dialoguePath2))) + string root = Game1.content.RootDirectory;///////USE THIS TO CHECK FOR EXISTENCE!!!!! + if (!File.Exists(Path.Combine(root, dialoguePath2))) { - ModMonitor.Log("Dialogue file not found for:" + fileName+". This might not necessarily be a mistake just a safety check."); + ModMonitor.Log("Dialogue file not found for:" + fileName + ". This might not necessarily be a mistake just a safety check."); continue; //If the file is not found for some reason... } var DialogueDict = ModHelper.Content.Load>(dialoguePath2, ContentSource.GameContent); @@ -1832,10 +2358,20 @@ namespace Vocalization if (key.Contains(cue.name)) { List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } } @@ -1843,7 +2379,7 @@ namespace Vocalization } //Check for just my generic file - if (fileName.Contains("MarriageDialogue") && !fileName.Contains("MarriageDialogue"+cue.name)) + if (fileName.Contains("MarriageDialogue") && !fileName.Contains("MarriageDialogue" + cue.name)) { //Scrape the whole dictionary looking for other character's names to ignore. if (!replacementStrings.spouseNames.Contains(cue.name)) continue; @@ -1868,10 +2404,20 @@ namespace Vocalization if (key.Contains(cue.name)) { List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } } @@ -1880,7 +2426,7 @@ namespace Vocalization } //Check for character specific marriage dialogue - if (fileName.Contains("MarriageDialogue"+cue.name)) + if (fileName.Contains("MarriageDialogue" + cue.name)) { //Scrape the whole dictionary looking for other character's names to ignore. if (!replacementStrings.spouseNames.Contains(cue.name)) continue; @@ -1893,22 +2439,43 @@ namespace Vocalization if (key.Contains(cue.name)) { List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } } } foreach (KeyValuePair pair in DialogueDict) { + string key = pair.Key; string rawDialogue = pair.Value; List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } } @@ -1931,13 +2498,23 @@ namespace Vocalization foreach (KeyValuePair pair in DialogueDict) { string key = pair.Key; - if (key != cue.name && key!=cue.name+"_spouse") continue; + if (key != cue.name && key != cue.name + "_spouse") continue; string rawDialogue = pair.Value; List cleanDialogues = new List(); cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } } @@ -1973,7 +2550,17 @@ namespace Vocalization cleanDialogues = sanitizeDialogueFromDictionaries(line, cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str, new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } } @@ -2009,10 +2596,20 @@ namespace Vocalization if (key.Contains(cue.name)) { List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); foreach (var str in cleanDialogues) { - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } } } } @@ -2063,7 +2660,7 @@ namespace Vocalization string rawDialogue = pair.Value; //This helps eliminate the fortune teller dialogue from more specific npcs. - if(rawDialogue.Contains("{0}") && !ignoreKeys.Contains(key)) + if (rawDialogue.Contains("{0}") && !ignoreKeys.Contains(key)) { continue; } @@ -2072,39 +2669,348 @@ namespace Vocalization if (key.Contains("NPC")) { List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); - foreach (var str in cleanDialogues) + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); + + foreach(var clean in cleanDialogues) { - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + string[] bday = clean.Split('/'); + + foreach (var str in bday) + { + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } + } } } } //Scrape dialogue more specifically and replace some generic {0}'s and {1}'s - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.3955"), translation, (object)cue.name), new VoiceAudioOptions()); - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.3969"), translation, (object)cue.name), new VoiceAudioOptions()); - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.3981"), translation, (object)cue.name), new VoiceAudioOptions()); - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.3987"), translation, (object)cue.name,"2"),new VoiceAudioOptions()); - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4066"), translation, (object)replacementStrings.farmerName), new VoiceAudioOptions()); - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4068"), translation, (object)replacementStrings.farmerName), new VoiceAudioOptions()); - cue.addDialogue(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4071"), translation, (object)replacementStrings.farmerName), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4440"), translation, (object)replacementStrings.farmerName),cue).ElementAt(0), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4441"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4444"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4445"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4447"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4448"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4463"), translation, (object)replacementStrings.petName), cue).ElementAt(0), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4465"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4466"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4486"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + + + string fileName1 = "StringsFromCSFiles"; + + string key1 = "NPC.cs.3955"; + string str1 = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.3955"), translation, (object)cue.name); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + key1 = "NPC.cs.3955"; + str1 = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.3969"), translation, (object)cue.name); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + key1 = "NPC.cs.3981"; + str1 = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.3981"), translation, (object)cue.name); + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + key1 = "NPC.cs.3987"; + str1 = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.3987"), translation, (object)cue.name, "2"); + + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + key1 = "NPC.cs.4066"; + str1 = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4066"), translation, (object)replacementStrings.farmerName); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + + key1 = "NPC.cs.4068"; + str1 = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4068"), translation, (object)replacementStrings.farmerName); + + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + + key1 = "NPC.cs.4071"; + str1 = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4071"), translation, (object)replacementStrings.farmerName); + + + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + key1 = "NPC.cs.4440"; + str1 = sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4440"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + key1 = "NPC.cs.4441"; + str1 = sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4441"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + key1 = "NPC.cs.4444"; + str1 = sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4444"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0); + + + //cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4444"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + key1 = "NPC.cs.4445"; + str1 = sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4445"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0); + + + // cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4445"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + key1 = "NPC.cs.4447"; + str1 = sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4447"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0); + + + //cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4447"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + key1 = "NPC.cs.4448"; + str1 = sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4448"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0); + + + //cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4448"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + key1 = "NPC.cs.4463"; + str1 = sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4463"), translation, (object)replacementStrings.petName), cue).ElementAt(0); + + + //cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4463"), translation, (object)replacementStrings.petName), cue).ElementAt(0), new VoiceAudioOptions()); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + key1 = "NPC.cs.4465"; + str1 = sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4465"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0); + + //cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4465"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + key1 = "NPC.cs.4466"; + str1 = sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4466"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0); + + //cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4466"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + + key1 = "NPC.cs.4486"; + str1 = sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4486"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0); + + //cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4486"), translation, (object)replacementStrings.farmerName), cue).ElementAt(0), new VoiceAudioOptions()); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } for (int i = 4507; i <= 4523; i++) { - if(i==20 || i == 21) + if (i == 20 || i == 21) { continue; } - cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4465"), translation,(object)config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.")+i.ToString(),translation)), cue).ElementAt(0), new VoiceAudioOptions()); - cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.4466"), translation, (object)config.translationInfo.LoadString(Path.Combine("Strings","StringsFromCSFiles:NPC.cs.") + i.ToString(),translation)), cue).ElementAt(0), new VoiceAudioOptions()); + + key1 = "NPC.cs.4465"; + str1 = sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4465"), translation, (object)config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.") + i.ToString(), translation)), cue).ElementAt(0); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } + key1 = "NPC.cs.4466"; + str1 = sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.4466"), translation, (object)config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.") + i.ToString(), translation)), cue).ElementAt(0); + + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName1, key1))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName1, key1), out VoiceAudioOptions value); + cue.addDialogue(str1, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str1, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName1, key1), new VoiceAudioOptions()); + } } @@ -2116,21 +3022,37 @@ namespace Vocalization string audioPath = Path.Combine(contentPath, "Audio"); string voicePath = Path.Combine(audioPath, "VoiceFiles"); - string[] dirs = Directory.GetDirectories(Path.Combine(voicePath, translation)); - //Some additional scraping to put together better options for speech bubbles. - foreach (var v in dirs) + string[] dirs = Directory.GetDirectories(translation); + //Some additional scraping to put together better options for speech bubbles. + foreach (var v in dirs) + { + + string name = Path.GetFileName(v); + string key = "NPC.cs.3985"; + + string str2 = sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.3985"), translation, (object)name), cue).ElementAt(0); + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) { - string name = Path.GetFileName(v); - cue.addDialogue(sanitizeDialogueFromDictionaries(config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:NPC.cs.3985"), translation, (object)name), cue).ElementAt(0), new VoiceAudioOptions()); + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str2, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + } + else + { + cue.addDialogue(str2, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } + } + + continue; } if (fileName.Contains(cue.name)) { - dialoguePath2 = Path.Combine(stringsPath,"schedules", fileName); + dialoguePath2 = Path.Combine(stringsPath, "schedules", fileName); root = Game1.content.RootDirectory;///////USE THIS TO CHECK FOR EXISTENCE!!!!! if (!File.Exists(Path.Combine(root, dialoguePath2))) { @@ -2145,13 +3067,23 @@ namespace Vocalization string key = pair.Key; string rawDialogue = pair.Value; //If the key contains the character's name. - List cleanDialogues = new List(); - cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue,cue); - foreach (var str in cleanDialogues) + List cleanDialogues = new List(); + cleanDialogues = sanitizeDialogueFromDictionaries(rawDialogue, cue); + foreach (var str in cleanDialogues) + { + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, key))) { - cue.addDialogue(str,new VoiceAudioOptions()); //Make a new dialogue line based off of the text, but have the .wav value as empty. + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, key), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + } - + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, key), new VoiceAudioOptions()); + } + } + } continue; } @@ -2159,53 +3091,75 @@ namespace Vocalization //LOad item dictionary, pass in item and npc, sanitize the output string using the sanitizationDictionary function, and add in the cue! - Dictionary objDict = Game1.content.Load>(Path.Combine("Data", config.translationInfo.getXNBForTranslation("ObjectInformation",translation))); - ModMonitor.Log("LOAD THE OBJECT INFO: ", LogLevel.Alert); - foreach(KeyValuePair pair in objDict) + Dictionary objDict = Game1.content.Load>(Path.Combine("Data", config.translationInfo.getXNBForTranslation("ObjectInformation", translation))); + //ModMonitor.Log("LOAD THE OBJECT INFO: ", LogLevel.Alert); + foreach (KeyValuePair pair in objDict) { - for(int i=0; i<=3; i++) { - StardewValley.Object obj = new StardewValley.Object(pair.Key,1,false,-1,i); + for (int i = 0; i <= 3; i++) + { + StardewValley.Object obj = new StardewValley.Object(pair.Key, 1, false, -1, i); - string[] strArray = config.translationInfo.LoadString(Path.Combine("Strings","Lexicon:GenericPlayerTerm"),translation).Split('^'); + string[] strArray = config.translationInfo.LoadString(Path.Combine("Strings", "Lexicon:GenericPlayerTerm"), translation).Split('^'); string str2 = strArray[0]; if (strArray.Length > 1 && !(bool)((NetFieldBase)Game1.player.isMale)) str2 = strArray[1]; string str3 = Game1.player.Name; - List rawScrape = getPurchasedItemDialogueForNPC(obj, cue.name,str3,translation); + List rawScrape = getPurchasedItemDialogueForNPC(obj, cue.name, str3, translation); foreach (string raw in rawScrape) { List cleanDialogues = sanitizeDialogueFromDictionaries(raw, cue); - foreach (var dia in cleanDialogues) + foreach (var str in cleanDialogues) { - cue.addDialogue(dia, new VoiceAudioOptions()); + string fileName = config.translationInfo.getXNBForTranslation("ObjectInformation", translation); + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, fileName, pair.Key.ToString()))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, fileName, pair.Key.ToString()), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, fileName, pair.Key.ToString()), new VoiceAudioOptions()); + } } } str3 = str2; - List rawScrape2 = getPurchasedItemDialogueForNPC(obj, cue.name, str3,translation); + List rawScrape2 = getPurchasedItemDialogueForNPC(obj, cue.name, str3, translation); foreach (string raw in rawScrape2) { List cleanDialogues2 = sanitizeDialogueFromDictionaries(raw, cue); - foreach (var dia in cleanDialogues2) + foreach (var str in cleanDialogues2) { - cue.addDialogue(dia, new VoiceAudioOptions()); + if (AudioCues.getWavFileReferences(translation).ContainsKey(AudioCues.generateKey(translation, cue.name, "StringsFromCSFiles", pair.Key.ToString()))) + { + AudioCues.getWavFileReferences(translation).TryGetValue(AudioCues.generateKey(translation, cue.name, "StringsFromCSFiles", pair.Key.ToString()), out VoiceAudioOptions value); + cue.addDialogue(str, new VoiceAudioOptions(value.simple, value.full, value.heartEvents, value.simpleAndHeartEvents)); + + } + else + { + cue.addDialogue(str, new VoiceAudioOptions()); + AudioCues.addWavReference(AudioCues.generateKey(translation, cue.name, "StringsFromCSFiles", pair.Key.ToString()), new VoiceAudioOptions()); + } } } } } } - ModHelper.WriteJsonFile(path,cue); + ModHelper.WriteJsonFile(path, cue); //DialogueCues.Add(cue.name, cue); } public static List getEventSpeakerLines(string rawDialogue, string speakerName) { - string[] dialogueSplit= rawDialogue.Split('/'); + string[] dialogueSplit = rawDialogue.Split('/'); List speakingData = new List(); - foreach(var dia in dialogueSplit) + foreach (var dia in dialogueSplit) { //ModMonitor.Log(dia); if (!dia.Contains("speak") && !dia.Contains("textAboveHead")) continue; @@ -2228,7 +3182,7 @@ namespace Vocalization /// /// /// - public static List getPurchasedItemDialogueForNPC(StardewValley.Object i, string npcName, string str3,string translation) + public static List getPurchasedItemDialogueForNPC(StardewValley.Object i, string npcName, string str3, string translation) { NPC n = Game1.getCharacterFromName(npcName); if (n == null) return new List(); @@ -2238,7 +3192,7 @@ namespace Vocalization str3 = Game1.player.Name; string str4 = LocalizedContentManager.CurrentLanguageCode == LocalizedContentManager.LanguageCode.en ? Lexicon.getProperArticleForWord(i.name) : ""; if ((i.Category == -4 || i.Category == -75 || i.Category == -79) && Game1.random.NextDouble() < 0.5) - str4 = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:SeedShop.cs.9701"),translation); + str4 = config.translationInfo.LoadString(Path.Combine("Strings", "StringsFromCSFiles:SeedShop.cs.9701"), translation); for (int v = 0; v <= 5; v++) { @@ -2249,7 +3203,7 @@ namespace Vocalization case 0: if (i.quality.Value == 1) { - foreach (string str in Vocabulary.getRandomDeliciousAdjectives(translation,n)) + foreach (string str in Vocabulary.getRandomDeliciousAdjectives(translation, n)) { string str19 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_1_QualityHigh"), translation, (object)str3, (object)str4, (object)i.DisplayName, (object)str); dialogueReturn.Add(str19); @@ -2258,7 +3212,7 @@ namespace Vocalization } if (i.quality.Value == 0) { - foreach (string str in Vocabulary.getRandomNegativeFoodAdjectives(translation,n)) + foreach (string str in Vocabulary.getRandomNegativeFoodAdjectives(translation, n)) { string str18 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_1_QualityLow"), translation, (object)str3, (object)str4, (object)i.DisplayName, (object)str); dialogueReturn.Add(str18); @@ -2274,13 +3228,14 @@ namespace Vocalization { if (i.quality.Value != 2) { - foreach (var word1 in Vocabulary.getRandomNegativeFoodAdjectives(translation,n)) + foreach (var word1 in Vocabulary.getRandomNegativeFoodAdjectives(translation, n)) { - foreach (string word2 in Vocabulary.getRandomNegativeItemSlanderNouns(translation)) { + foreach (string word2 in Vocabulary.getRandomNegativeItemSlanderNouns(translation)) + { string str17 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_3_QualityLow_Rude"), translation, (object)str3, (object)str4, (object)i.DisplayName, (object)(i.salePrice() / 2), (object)word1, (object)word2); dialogueReturn.Add(str17); + } } - } break; } foreach (string word1 in Vocabulary.getRandomSlightlyPositiveAdjectivesForEdibleNoun(translation)) @@ -2318,7 +3273,8 @@ namespace Vocalization break; } } - if (n.Age == 1) { + if (n.Age == 1) + { string str16 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Teen"), translation, (object)str3, (object)str4, (object)i.DisplayName); dialogueReturn.Add(str16); } @@ -2349,19 +3305,20 @@ namespace Vocalization dialogueReturn.Add(str12); } } - else { + else + { str1 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Abigail_QualityHigh"), translation, (object)str3, (object)str4, (object)i.DisplayName); } } - - if (name == "Haley") - str1 = config.translationInfo.LoadString(Path.Combine("Data","ExtraDialogue:PurchasedItem_Haley"), translation, (object)str3, (object)str4, (object)i.DisplayName); - if (name == "Elliott") - str1 = config.translationInfo.LoadString(Path.Combine("Data","ExtraDialogue:PurchasedItem_Elliott"), translation, (object)str3, (object)str4, (object)i.DisplayName); - if (name == "Leah") - str1 = config.translationInfo.LoadString(Path.Combine("Data","ExtraDialogue:PurchasedItem_Leah"), translation, (object)str3, (object)str4, (object)i.DisplayName); + + if (name == "Haley") + str1 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Haley"), translation, (object)str3, (object)str4, (object)i.DisplayName); + if (name == "Elliott") + str1 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Elliott"), translation, (object)str3, (object)str4, (object)i.DisplayName); + if (name == "Leah") + str1 = config.translationInfo.LoadString(Path.Combine("Data", "ExtraDialogue:PurchasedItem_Leah"), translation, (object)str3, (object)str4, (object)i.DisplayName); if (str1 != "") { dialogueReturn.Add(str1); @@ -2375,7 +3332,7 @@ namespace Vocalization /// /// /// - public static string sanitizeDialogueInGame(string dialogue) + public static string sanitizeDialogueInGame(string dialogue) { if (dialogue.Contains(Game1.player.Name)) { @@ -2386,28 +3343,28 @@ namespace Vocalization { if (dialogue.Contains(Game1.player.getPetName())) { - dialogue=dialogue.Replace(Game1.player.getPetName(), replacementStrings.petName); + dialogue = dialogue.Replace(Game1.player.getPetName(), replacementStrings.petName); } } if (dialogue.Contains(Game1.player.farmName.Value)) { - dialogue=dialogue.Replace(Game1.player.farmName.Value, replacementStrings.farmName); + dialogue = dialogue.Replace(Game1.player.farmName.Value, replacementStrings.farmName); } if (dialogue.Contains(Game1.player.favoriteThing.Value)) { - dialogue=dialogue.Replace(Game1.player.favoriteThing.Value, replacementStrings.favoriteThing); + dialogue = dialogue.Replace(Game1.player.favoriteThing.Value, replacementStrings.favoriteThing); } if (dialogue.Contains(Game1.samBandName)) { - dialogue=dialogue.Replace(Game1.samBandName, replacementStrings.bandName); + dialogue = dialogue.Replace(Game1.samBandName, replacementStrings.bandName); } if (dialogue.Contains(Game1.elliottBookName)) { - dialogue=dialogue.Replace(Game1.elliottBookName, replacementStrings.bookName); + dialogue = dialogue.Replace(Game1.elliottBookName, replacementStrings.bookName); } //Sanitize children names from the dialogue. @@ -2439,7 +3396,7 @@ namespace Vocalization /// /// /// - public static List sanitizeDialogueFromDictionaries(string dialogue,CharacterVoiceCue cue) + public static List sanitizeDialogueFromDictionaries(string dialogue, CharacterVoiceCue cue) { List possibleDialogues = new List(); @@ -2501,7 +3458,7 @@ namespace Vocalization //This is probably the worst possible way to do this but I don't have too much a choice. - for (int i=0; i<=100; i++) + for (int i = 0; i <= 100; i++) { string combine = ""; if (i == 1) continue; @@ -2546,12 +3503,12 @@ namespace Vocalization List finalSplit = new List(); //split across | symbol - foreach(var dia in dialogueSplits1) + foreach (var dia in dialogueSplits1) { if (dia.Contains("|")) //If I can split my string do so and add all the split strings into my orSplit list. { List tempSplits = dia.Split('|').ToList(); - foreach(var v in tempSplits) + foreach (var v in tempSplits) { orSplit.Add(v); } @@ -2562,7 +3519,7 @@ namespace Vocalization } } - foreach(var dia in orSplit) + foreach (var dia in orSplit) { if (dia.Contains("\"") && cue.name.StartsWith("Temp")) //If I can split my string do so and add all the split strings into my orSplit list. { @@ -2654,7 +3611,8 @@ namespace Vocalization //iterate across ll dialogues and return a list of them. - for (int i= 0;i removalList = new List(); //Clean out all dialogue commands. - foreach(var dia in possibleDialogues) + foreach (var dia in possibleDialogues) { if (dia.Contains("$r")) { @@ -2763,7 +3721,7 @@ namespace Vocalization } //Delete all garbage dialogues left over. - foreach(var v in removalList) + foreach (var v in removalList) { possibleDialogues.Remove(v); } @@ -2772,7 +3730,7 @@ namespace Vocalization return possibleDialogues; } - public static string sanitizeDialogueFromSpeechBubblesDictionary(string text) + public static string sanitizeDialogueFromSpeechBubblesDictionary(string text) { if (text.Contains("{0}")) { @@ -2790,7 +3748,7 @@ namespace Vocalization /// /// /// - public static string sanitizeDialogueFromMailDictionary(string mailText) + public static string sanitizeDialogueFromMailDictionary(string mailText) { List texts = mailText.Split('%').ToList(); diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.csproj b/GeneralMods/Vocalization/Vocalization/Vocalization.csproj index 19772bab..fbe35047 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.csproj +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.csproj @@ -48,6 +48,7 @@ + From 704a15ad4d7d952cb0d7ba8f03980a99b035092a Mon Sep 17 00:00:00 2001 From: Date: Sat, 25 Aug 2018 23:37:25 -0700 Subject: [PATCH 071/110] Updated manifest and improved mail dialogue scrape. --- GeneralMods/StardewMods.sln | 3 +++ GeneralMods/Vocalization/Vocalization/Vocalization.cs | 10 ++++++++++ GeneralMods/Vocalization/Vocalization/manifest.json | 5 ++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/GeneralMods/StardewMods.sln b/GeneralMods/StardewMods.sln index e0d2337c..577b29d2 100644 --- a/GeneralMods/StardewMods.sln +++ b/GeneralMods/StardewMods.sln @@ -75,6 +75,9 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdvancedSaveBackup", "AdvancedSaveBackup\AdvancedSaveBackup.csproj", "{12984468-2B79-4B3B-B045-EE917301DEE0}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Vocalization", "Vocalization\Vocalization\Vocalization.csproj", "{1651701C-DB36-43C7-B66D-2700171DD9A9}" + ProjectSection(ProjectDependencies) = postProject + {7B1E9A54-ED9E-47AA-BBAA-98A6E7CB527A} = {7B1E9A54-ED9E-47AA-BBAA-98A6E7CB527A} + EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/GeneralMods/Vocalization/Vocalization/Vocalization.cs b/GeneralMods/Vocalization/Vocalization/Vocalization.cs index 877886c3..e6455c3c 100644 --- a/GeneralMods/Vocalization/Vocalization/Vocalization.cs +++ b/GeneralMods/Vocalization/Vocalization/Vocalization.cs @@ -3770,6 +3770,16 @@ namespace Vocalization splicedText = splicedText.Replace("\"", ""); } + if (splicedText.Contains("+")) + { + splicedText = splicedText.Replace("+", ""); + } + + if (splicedText.Contains("\n")) + { + splicedText = splicedText.Replace("\n", ""); + } + return splicedText; } diff --git a/GeneralMods/Vocalization/Vocalization/manifest.json b/GeneralMods/Vocalization/Vocalization/manifest.json index 1ab5534e..8cdabe25 100644 --- a/GeneralMods/Vocalization/Vocalization/manifest.json +++ b/GeneralMods/Vocalization/Vocalization/manifest.json @@ -7,5 +7,8 @@ "EntryDll": "Vocalization.dll", "MinimumApiVersion": "2.0", "UpdateKeys": [], - "Dependencies": [ "Omegasis.SimpleSoundManager" ] + "Dependencies": [ + "Omegasis.SimpleSoundManager", + "Omegasis.StardustCore" + ] } From a6257c5d2827110e8bbb0c1bf96b24d3e4de6d0a Mon Sep 17 00:00:00 2001 From: Date: Sat, 1 Sep 2018 00:26:18 -0700 Subject: [PATCH 072/110] Fixed Stardew Symphony Remastered from numerous menu and music glitches. --- .../Framework/Menus/MusicManagerMenu.cs | 60 ++++++-- .../Framework/Music/MusicManager.cs | 48 +++++- .../Framework/Music/MusicPackMetaData.cs | 7 +- .../Framework/Music/SongSpecifics.cs | 27 +++- .../Framework/Music/WavMusicPack.cs | 145 +++++------------- .../StardewSymphony.cs | 30 ---- .../StardewSymphonyRemastered/manifest.json | 2 +- .../NetCode/Graphics/NetAnimationManager.cs | 11 +- 8 files changed, 160 insertions(+), 170 deletions(-) diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs index 6ca68f9e..771ccee8 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs @@ -1586,7 +1586,7 @@ namespace StardewSymphonyRemastered.Framework.Menus if (this.currentMusicPackAlbum == null || this.currentSelectedSong == null) return false; var info = (KeyValuePair)this.currentMusicPackAlbum.buttonFunctionality.leftClick.paramaters[0]; //Check for generic festival music. - if (this.drawMode == DrawMode.FestivalSelection) + if (this.drawMode == DrawMode.SelectedFestival) { var festivalSonglist = info.Value.songInformation.festivalSongs; if (festivalSonglist == null) return false; @@ -1594,9 +1594,9 @@ namespace StardewSymphonyRemastered.Framework.Menus else return true; } //Check for generic event music. - if (this.drawMode == DrawMode.EventSelection) + if (this.drawMode == DrawMode.SelectedEvent) { - var eventSonglist = info.Value.songInformation.festivalSongs; + var eventSonglist = info.Value.songInformation.eventSongs; if (eventSonglist == null) return false; if (!eventSonglist.Contains(info.Value.songInformation.getSongFromList(eventSonglist, this.currentSelectedSong.name))) return false; else return true; @@ -1894,6 +1894,7 @@ namespace StardewSymphonyRemastered.Framework.Menus this.currentMusicPackAlbum.draw(b); this.currentSelectedSong.draw(b); this.currentlySelectedOption.draw(b); + /* if (!doesPackContainMusic()) { this.addButton.draw(b); @@ -1902,6 +1903,7 @@ namespace StardewSymphonyRemastered.Framework.Menus { this.deleteButton.draw(b); } + */ this.playButton.draw(b); this.stopButton.draw(b); @@ -1952,6 +1954,7 @@ namespace StardewSymphonyRemastered.Framework.Menus this.currentMusicPackAlbum.draw(b); this.currentSelectedSong.draw(b); this.currentlySelectedOption.draw(b); + /* if (!doesPackContainMusic()) { this.addButton.draw(b); @@ -1960,6 +1963,7 @@ namespace StardewSymphonyRemastered.Framework.Menus { this.deleteButton.draw(b); } + */ this.playButton.draw(b); this.stopButton.draw(b); @@ -2010,6 +2014,7 @@ namespace StardewSymphonyRemastered.Framework.Menus this.currentMusicPackAlbum.draw(b); this.currentSelectedSong.draw(b); this.currentlySelectedOption.draw(b); + /* if (!doesPackContainMusic()) { this.addButton.draw(b); @@ -2018,6 +2023,7 @@ namespace StardewSymphonyRemastered.Framework.Menus { this.deleteButton.draw(b); } + */ this.playButton.draw(b); this.stopButton.draw(b); @@ -2161,13 +2167,16 @@ namespace StardewSymphonyRemastered.Framework.Menus { if (this.drawMode == DrawMode.WeatherSelection || this.drawMode == DrawMode.TimeSelection || this.drawMode == DrawMode.LocationSelection || this.drawMode == DrawMode.DaySelection || this.drawMode == DrawMode.NothingElseToDisplay) { - if (!doesPackContainMusic()) + if (this.selectedJustLocation==false) { - this.addButton.draw(b); - } - else - { - this.deleteButton.draw(b); + if (!doesPackContainMusic()) + { + this.addButton.draw(b); + } + else + { + this.deleteButton.draw(b); + } } } this.playButton.draw(b); @@ -2248,19 +2257,18 @@ namespace StardewSymphonyRemastered.Framework.Menus var info = (KeyValuePair)this.currentMusicPackAlbum.buttonFunctionality.leftClick.paramaters[0]; - StardewSymphony.ModMonitor.Log(generateSongTriggerKeyFromSelection()); + //StardewSymphony.ModMonitor.Log(generateSongTriggerKeyFromSelection()); //Add generic festival music. - if (this.drawMode == DrawMode.FestivalSelection) + if (this.drawMode == DrawMode.SelectedFestival) { - - info.Value.songInformation.addSongToFestivalList(this.currentlySelectedFestival.label); + info.Value.songInformation.addSongToFestivalList(this.currentSelectedSong.label); return; } //Add generic event music. - if(this.drawMode== DrawMode.EventSelection) + if(this.drawMode== DrawMode.SelectedEvent) { - info.Value.songInformation.addSongToEventList(this.currentlySelectedEvent.label); + info.Value.songInformation.addSongToEventList(this.currentSelectedSong.label); return; } @@ -2274,7 +2282,25 @@ namespace StardewSymphonyRemastered.Framework.Menus /// public void deleteSong() { + + + var info = (KeyValuePair)this.currentMusicPackAlbum.buttonFunctionality.leftClick.paramaters[0]; + + + if (this.drawMode == DrawMode.SelectedFestival) + { + info.Value.songInformation.removeSongFromFestivalList(this.currentSelectedSong.label); + return; + } + + //Add generic event music. + if (this.drawMode == DrawMode.SelectedEvent) + { + info.Value.songInformation.removeSongFromEventList(this.currentSelectedSong.label); + return; + } + info.Value.songInformation.removeSongFromTriggerList(generateSongTriggerKeyFromSelection(), this.currentSelectedSong.label); } @@ -2318,13 +2344,13 @@ namespace StardewSymphonyRemastered.Framework.Menus else if (this.currentlySelectedOption.name == "WinterButton") key += "winter"; else { - StardewSymphony.ModMonitor.Log("Error: You are not in a valid menu area to set the song information. Please make sure that a valid season is selected for the song options", StardewModdingAPI.LogLevel.Alert); + //StardewSymphony.ModMonitor.Log("Error: You are not in a valid menu area to set the song information. Please make sure that a valid season is selected for the song options", StardewModdingAPI.LogLevel.Alert); return ""; } } else { - StardewSymphony.ModMonitor.Log("Error: You are not in a valid menu area to set the song information. Please make sure that a valid season is selected for the song options", StardewModdingAPI.LogLevel.Alert); + //StardewSymphony.ModMonitor.Log("Error: You are not in a valid menu area to set the song information. Please make sure that a valid season is selected for the song options", StardewModdingAPI.LogLevel.Alert); return ""; } } diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicManager.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicManager.cs index e4f928f4..572780c1 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicManager.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicManager.cs @@ -65,26 +65,55 @@ namespace StardewSymphonyRemastered.Framework } } + /// + /// Updtes the timer every second to check if a song is playing or not. + /// public void updateTimer() { + if (this.currentMusicPack == null) return; - if (this.currentMusicPack.isPlaying()) return; + if (this.currentMusicPack.isPlaying()) + { + return; + } else { - Random r = new Random(Game1.random.Next()); - - int val = r.Next(StardewSymphony.Config.MinimumDelayBetweenSongsInMilliseconds, StardewSymphony.Config.MaximumDelayBetweenSongsInMilliseconds + 1); - timer = new Timer(val); - timer.Elapsed += onTimerFinished; - timer.Enabled = true; + if (timer == null) + { + Random r = new Random(Game1.random.Next()); + int val = r.Next(StardewSymphony.Config.MinimumDelayBetweenSongsInMilliseconds, StardewSymphony.Config.MaximumDelayBetweenSongsInMilliseconds + 1); + //StardewSymphony.ModMonitor.Log("Music Pack is not playing! Generate a new timer! Delay: "+val.ToString()); + timer = new Timer(val); + timer.Elapsed += onTimerFinished; + timer.Enabled = true; + } + else + { + timer.Enabled = true; + timer.Elapsed += onTimerFinished; + } } } + /// + /// Selects a new song when the timer delay runs out. + /// + /// + /// public void onTimerFinished(System.Object source, ElapsedEventArgs e) { + if (this.currentMusicPack.isPlaying()) + { + timer.Enabled = false; + timer = null; + return; + } + //StardewSymphony.ModMonitor.Log("AHH THE TIMER FINISHED!"); timer.Enabled = false; + timer.Elapsed -= onTimerFinished; selectMusic(SongSpecifics.getCurrentConditionalString()); + timer = null; } /// @@ -269,6 +298,11 @@ namespace StardewSymphonyRemastered.Framework /// public void selectMusic(string songListKey) { + //Nullify the timer when new music is selected. + if (this.timer != null) + { + this.timer = null; + } var listOfValidMusicPacks = getListOfApplicableMusicPacks(songListKey); diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicPackMetaData.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicPackMetaData.cs index 5617926b..8c06798f 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicPackMetaData.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicPackMetaData.cs @@ -63,16 +63,19 @@ namespace StardewSymphonyRemastered.Framework { string json = Path.Combine(path, "MusicPackInformation.json"); var meta=StardewSymphony.ModHelper.ReadJsonFile(json); + + string[] pathParse = path.Split(new String[] { StardewSymphony.ModHelper.DirectoryPath },StringSplitOptions.None); + try { try { - meta.Icon = new Texture2DExtended(StardewSymphony.ModHelper,StardewSymphony.Manifest, StardewSymphony.getRelativeDirectory(Path.Combine(path, meta.pathToMusicPackIcon + ".png"))); + meta.Icon = new Texture2DExtended(StardewSymphony.ModHelper,StardewSymphony.Manifest, Path.Combine(pathParse[1], meta.pathToMusicPackIcon + ".png")); } catch(Exception errr) { errr.ToString(); - meta.Icon = new Texture2DExtended(StardewSymphony.ModHelper,StardewSymphony.Manifest ,StardewSymphony.getRelativeDirectory(Path.Combine(path, meta.pathToMusicPackIcon))); + meta.Icon = new Texture2DExtended(StardewSymphony.ModHelper,StardewSymphony.Manifest ,Path.Combine(pathParse[1], meta.pathToMusicPackIcon)); } } catch(Exception err) diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/SongSpecifics.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/SongSpecifics.cs index 5115a59a..e0b1b0b3 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/SongSpecifics.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/SongSpecifics.cs @@ -625,7 +625,6 @@ namespace StardewSymphonyRemastered.Framework public void addSongToFestivalList(string songName) { - var songKeyPair = this.festivalSongs; var song = getSongFromList(listOfSongsWithoutTriggers, songName); //Get the song from the master song pool if (song == null) @@ -634,7 +633,7 @@ namespace StardewSymphonyRemastered.Framework StardewSymphony.ModMonitor.Log("For some reason you are trying to add a song that is null. The name of the song is " + songName); return; } - songKeyPair.Add(song); //add the song from master pool to the trigger list + this.festivalSongs.Add(song); //add the song from master pool to the trigger list } public void addSongToEventList(string songName) @@ -664,6 +663,28 @@ namespace StardewSymphonyRemastered.Framework songKeyPair.Value.Remove(song); } + /// + /// Remove a song from the event list. + /// + /// + /// + public void removeSongFromEventList( string songName) + { + var song = getSongFromList(this.eventSongs, songName); + this.eventSongs.Remove(song); + } + + /// + /// Remove a song from the festival list. + /// + /// + /// + public void removeSongFromFestivalList( string songName) + { + var song = getSongFromList(this.festivalSongs, songName); + this.festivalSongs.Remove(song); + } + /// /// Get the Song instance that is referenced with the song's name. /// @@ -672,8 +693,10 @@ namespace StardewSymphonyRemastered.Framework /// public Song getSongFromList(List songList,string songName) { + //StardewSymphony.ModMonitor.Log("Get the song: " + songName); foreach (var song in songList) { + //StardewSymphony.ModMonitor.Log("Looking at song: " + song.name); if (song.name == songName) { return song; diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/WavMusicPack.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/WavMusicPack.cs index bfdc4b05..6f240133 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/WavMusicPack.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/WavMusicPack.cs @@ -18,26 +18,12 @@ namespace StardewSymphonyRemastered.Framework public Song currentSong; public string songsDirectory; - /// - /// Used to actually play the song. - /// - DynamicSoundEffectInstance dynamicSound; - /// - /// Used to keep track of where in the song we are. - /// - int position; - /// - /// ??? - /// - int count; - /// - /// Used to store the info for the song. - /// - byte[] byteArray; - + public SoundEffectInstance sound; bool loop; + + public Dictionary sounds; /// /// Constructor. /// @@ -50,6 +36,7 @@ namespace StardewSymphonyRemastered.Framework this.songInformation = new SongSpecifics(); this.musicPackInformation = MusicPackMetaData.readFromJson(directoryToMusicPack); this.loop = Loop; + this.sounds = new Dictionary(); /* if (this.musicPackInformation == null) { @@ -80,83 +67,21 @@ namespace StardewSymphonyRemastered.Framework } } + /* /// /// Load a wav file into the stream to be played. /// - public void LoadWavFromFileToStream(string p) + public void LoadWavFromFileToStream(string file) { // Create a new SpriteBatch, which can be used to draw textures. - string file =p; System.IO.Stream waveFileStream = File.OpenRead(file); //TitleContainer.OpenStream(file); - - BinaryReader reader = new BinaryReader(waveFileStream); - - int chunkID = reader.ReadInt32(); - int fileSize = reader.ReadInt32(); - int riffType = reader.ReadInt32(); - int fmtID = reader.ReadInt32(); - int fmtSize = reader.ReadInt32(); - int fmtCode = reader.ReadInt16(); - int channels = reader.ReadInt16(); - int sampleRate = reader.ReadInt32(); - int fmtAvgBPS = reader.ReadInt32(); - int fmtBlockAlign = reader.ReadInt16(); - int bitDepth = reader.ReadInt16(); - - if (fmtSize == 18) - { - // Read any extra values - int fmtExtraSize = reader.ReadInt16(); - reader.ReadBytes(fmtExtraSize); - } - - int dataID = reader.ReadInt32(); - int dataSize = reader.ReadInt32(); - - byteArray = reader.ReadBytes(dataSize); - - - dynamicSound = new DynamicSoundEffectInstance(sampleRate, (AudioChannels)channels); - count = dynamicSound.GetSampleSizeInBytes(TimeSpan.FromMilliseconds(10000)); - if (count > byteArray.Length) - { - count = byteArray.Length; - } - dynamicSound.BufferNeeded += new EventHandler(DynamicSound_BufferNeeded); - this.currentSong = new Song(p); + this.effect = SoundEffect.FromStream(waveFileStream); + this.sound=this.effect.CreateInstance(); + this.currentSong = new Song(file); + waveFileStream.Dispose(); } - - void DynamicSound_BufferNeeded(object sender, EventArgs e) - { - //StardewSymphony.ModMonitor.Log(byteArray.Length.ToString()); - //StardewSymphony.ModMonitor.Log(position.ToString()); - //StardewSymphony.ModMonitor.Log(count.ToString()); - try - { - dynamicSound.SubmitBuffer(byteArray, position, count); - } - catch(Exception err) - { - } - - //dynamicSound.SubmitBuffer(byteArray); - //dynamicSound.SubmitBuffer(byteArray, position + count / 2, count / 2); - - position += count; - if (position + count > byteArray.Length) - { - if (loop) - { - position = 0; - } - else - { - - } - } - } - + */ /// /// Returns the name of the currently playing song. @@ -177,10 +102,18 @@ namespace StardewSymphonyRemastered.Framework List listOfSongs = new List(); foreach(var wav in wavFiles) { + + System.IO.Stream waveFileStream = File.OpenRead(wav); //TitleContainer.OpenStream(file); + SoundEffect eff = SoundEffect.FromStream(waveFileStream); + SoundEffectInstance instance = eff.CreateInstance(); + string name = Path.GetFileNameWithoutExtension(wav); + this.sounds.Add(name, instance); + + waveFileStream.Dispose(); Song song = new Song(wav); - listOfSongs.Add(song); + this.songInformation.listOfSongsWithoutTriggers.Add(song); + //listOfSongs.Add(song); } - this.songInformation.listOfSongsWithoutTriggers = listOfSongs; } /// @@ -188,7 +121,7 @@ namespace StardewSymphonyRemastered.Framework /// public override void pauseSong() { - if (dynamicSound != null) dynamicSound.Pause(); + if (this.sound != null) sound.Pause(); } /// @@ -198,8 +131,19 @@ namespace StardewSymphonyRemastered.Framework public override void playSong(string name) { string pathToSong = getSongPathFromName(name); - LoadWavFromFileToStream(pathToSong); - dynamicSound.Play(); + + bool exists=this.sounds.TryGetValue(name,out this.sound); + + if (exists) + { + this.currentSong = new Song(name); + sound.Play(); + } + else + { + StardewSymphony.ModMonitor.Log("An error occured where we can't find the song anymore. Weird. Please contact Omegasis with a SMAPI Log and describe when/how the event occured."); + } + } public override void playRandomSong() @@ -215,8 +159,8 @@ namespace StardewSymphonyRemastered.Framework /// public override void resumeSong() { - if (dynamicSound == null) return; - dynamicSound.Resume(); + if (sound == null) return; + sound.Resume(); } /// @@ -226,15 +170,10 @@ namespace StardewSymphonyRemastered.Framework { if (Game1.currentSong != null) Game1.currentSong.Stop(AudioStopOptions.Immediate); if (this.currentSong == null) return; - if (dynamicSound != null) + if (sound != null) { - dynamicSound.Stop(true); - dynamicSound.BufferNeeded -= new EventHandler(DynamicSound_BufferNeeded); - dynamicSound = null; + sound.Stop(true); this.currentSong = null; - position = 0; - count = 0; - byteArray = new byte[0]; } } @@ -252,7 +191,7 @@ namespace StardewSymphonyRemastered.Framework /// Get the son's name from the path. /// /// - /// + /// 11111111111111 public string getSongNameFromPath(string path) { foreach(var song in this.songInformation.listOfSongsWithoutTriggers) @@ -278,8 +217,8 @@ namespace StardewSymphonyRemastered.Framework public override bool isPlaying() { - if (this.dynamicSound == null) return false; - if (this.dynamicSound.State == SoundState.Playing) return true; + if (this.sound == null) return false; + if (this.sound.State == SoundState.Playing) return true; else return false; } } diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/StardewSymphony.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/StardewSymphony.cs index d420bb41..dd239ed5 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/StardewSymphony.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/StardewSymphony.cs @@ -508,36 +508,6 @@ namespace StardewSymphonyRemastered Game1.soundBank = DefaultSoundBank; } - /// - /// Used to splice the mod directory to get relative paths. - /// - /// - /// - public static string getShortenedDirectory(string path) - { - string lol = (string)path.Clone(); - string[] spliter = lol.Split(new string[] { ModHelper.DirectoryPath }, StringSplitOptions.None); - try - { - return spliter[1]; - } - catch (Exception err) - { - err.ToString(); - return spliter[0]; - } - } - - /// - /// Used to finish cleaning up absolute asset paths into a shortened relative path. - /// - /// - /// - public static string getRelativeDirectory(string path) - { - string s = getShortenedDirectory(path); - return s.Remove(0, 1); - } public static void DebugLog(string s) { diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json index 3236cb88..74efdc77 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json @@ -1,7 +1,7 @@ { "Name": "Stardew Symphony Remastered", "Author": "Alpha_Omegasis", - "Version": "2.1.5", + "Version": "2.1.6", "Description": "Adding more music to the game one beep at a time. Now with streaming!", "UniqueID": "Omegasis.StardewSymphonyRemastered", "EntryDll": "StardewSymphonyRemastered.dll", diff --git a/GeneralMods/StardustCore/NetCode/Graphics/NetAnimationManager.cs b/GeneralMods/StardustCore/NetCode/Graphics/NetAnimationManager.cs index 7ca7d234..db348c3c 100644 --- a/GeneralMods/StardustCore/NetCode/Graphics/NetAnimationManager.cs +++ b/GeneralMods/StardustCore/NetCode/Graphics/NetAnimationManager.cs @@ -23,12 +23,7 @@ namespace StardustCore.NetCode.Graphics } - public NetString currentAnimationName; - public NetInt currentAnimationListIndex; - public NetTexture2DExtended objectTexture; - public NetAnimation defaultDrawFrame; - public NetBool enabled; - public NetString animationDataString; + protected override void ReadDelta(BinaryReader reader, NetVersion version) { @@ -64,13 +59,13 @@ namespace StardustCore.NetCode.Graphics } else { - Value.currentAnimation = defaultDrawFrame.Value; + Value.currentAnimation = defaultAnimation.Value; } } protected override void WriteDelta(BinaryWriter writer) { - NetString curentAnimationName = new NetString(Value.currentAnimationName); + NetString currentAnimationName = new NetString(Value.currentAnimationName); currentAnimationName.Write(writer); From dae3beac2d71c73d5f18d6308af2ad15d8c755ea Mon Sep 17 00:00:00 2001 From: Date: Sat, 1 Sep 2018 01:55:51 -0700 Subject: [PATCH 073/110] Reenabled Stardew Music and fixed glitch where menus with no music cues would stop all music. --- .../StardewSymphonyRemastered/Config.cs | 5 ++ .../Framework/Menus/MusicManagerMenu.cs | 6 +- .../Framework/Music/MusicManager.cs | 62 ++++++++++++++++++- .../StardewSymphony.cs | 32 +++++++--- .../StardewSymphonyRemastered/manifest.json | 2 +- 5 files changed, 94 insertions(+), 13 deletions(-) diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Config.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Config.cs index c52d7469..1e1c81ba 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Config.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Config.cs @@ -35,5 +35,10 @@ namespace StardewSymphonyRemastered /// Used to write a .json file for every possible option for a music pack. Use at your own risk! /// public bool writeAllConfigMusicOptions { get; set; } = false; + + /// + /// Used to completely disable the Stardew Valley OST. + /// + public bool disableStardewMusic { get; set; } = false; } } diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs index 771ccee8..e4118a5f 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Menus/MusicManagerMenu.cs @@ -2167,7 +2167,11 @@ namespace StardewSymphonyRemastered.Framework.Menus { if (this.drawMode == DrawMode.WeatherSelection || this.drawMode == DrawMode.TimeSelection || this.drawMode == DrawMode.LocationSelection || this.drawMode == DrawMode.DaySelection || this.drawMode == DrawMode.NothingElseToDisplay) { - if (this.selectedJustLocation==false) + if (this.drawMode == DrawMode.LocationSelection && this.selectedJustLocation == true) + { + + } + else { if (!doesPackContainMusic()) { diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicManager.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicManager.cs index 572780c1..4f5f51fd 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicManager.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/Framework/Music/MusicManager.cs @@ -72,12 +72,32 @@ namespace StardewSymphonyRemastered.Framework { if (this.currentMusicPack == null) return; - if (this.currentMusicPack.isPlaying()) + if (StardewSymphonyRemastered.StardewSymphony.Config.disableStardewMusic==true) { - return; + if (this.currentMusicPack.isPlaying()) + { + return; + } } else { + try + { + string songName = Game1.currentSong.Name.ToLower(); + + if (this.currentMusicPack.isPlaying() || (Game1.currentSong.IsPlaying && !songName.Contains("ambient")) ) + { + return; + } + } + catch (Exception err) + { + if (this.currentMusicPack.isPlaying()) + { + return; + } + } + } if (timer == null) { Random r = new Random(Game1.random.Next()); @@ -92,7 +112,7 @@ namespace StardewSymphonyRemastered.Framework timer.Enabled = true; timer.Elapsed += onTimerFinished; } - } + } @@ -112,6 +132,9 @@ namespace StardewSymphonyRemastered.Framework //StardewSymphony.ModMonitor.Log("AHH THE TIMER FINISHED!"); timer.Enabled = false; timer.Elapsed -= onTimerFinished; + + + selectMusic(SongSpecifics.getCurrentConditionalString()); timer = null; } @@ -292,6 +315,39 @@ namespace StardewSymphonyRemastered.Framework return listOfValidDictionaries; } + + + public void selectMenuMusic(string songListKey) + { + //Nullify the timer when new music is selected. + if (this.timer != null) + { + this.timer = null; + } + + var listOfValidMusicPacks = getListOfApplicableMusicPacks(songListKey); + + if (listOfValidMusicPacks.Count == 0) return; + + + int randInt = packSelector.Next(0, listOfValidMusicPacks.Count - 1); + + var musicPackPair = listOfValidMusicPacks.ElementAt(randInt); + + + //used to swap the music packs and stop the last playing song. + this.swapMusicPacks(musicPackPair.Key.musicPackInformation.name); + + int randInt2 = songSelector.Next(0, musicPackPair.Value.Count); + + + var songName = musicPackPair.Value.ElementAt(randInt2); + + this.currentMusicPack.playSong(songName.name); + + StardewSymphony.menuChangedMusic = true; + + } /// /// Selects the actual song to be played right now based off of the selector key. The selector key should be called when the player's location changes. /// diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/StardewSymphony.cs b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/StardewSymphony.cs index dd239ed5..e4420b6a 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/StardewSymphony.cs +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/StardewSymphony.cs @@ -66,13 +66,13 @@ namespace StardewSymphonyRemastered /// public override void Entry(IModHelper helper) { - Config = helper.ReadConfig(); + DefaultSoundBank = Game1.soundBank; DefaultWaveBank = Game1.waveBank; ModHelper = helper; ModMonitor = Monitor; Manifest = ModManifest; - + Config = helper.ReadConfig(); StardewModdingAPI.Events.SaveEvents.AfterLoad += SaveEvents_AfterLoad; // StardewModdingAPI.Events.EventArgsLocationsChanged += LocationEvents_CurrentLocationChanged; @@ -199,7 +199,8 @@ namespace StardewSymphonyRemastered /// private void MenuEvents_MenuChanged(object sender, StardewModdingAPI.Events.EventArgsClickableMenuChanged e) { - musicManager.selectMusic(SongSpecifics.getCurrentConditionalString()); + //var ok = musicManager.currentMusicPack.getNameOfCurrentSong(); + musicManager.selectMenuMusic(SongSpecifics.getCurrentConditionalString()); } private void SaveEvents_BeforeSave(object sender, EventArgs e) @@ -233,12 +234,27 @@ namespace StardewSymphonyRemastered /// private void GameEvents_UpdateTick(object sender, EventArgs e) { - if (Game1.currentSong != null) + if (musicManager == null) return; + + if (Config.disableStardewMusic==true) { - //ModMonitor.Log("STOP THE MUSIC!!!"); - Game1.currentSong.Stop(AudioStopOptions.Immediate); //stop the normal songs from playing over the new songs - Game1.currentSong.Stop(AudioStopOptions.AsAuthored); - Game1.nextMusicTrack = ""; //same as above line + if (Game1.currentSong != null) + { + Game1.currentSong.Stop(AudioStopOptions.Immediate); //stop the normal songs from playing over the new songs + Game1.currentSong.Stop(AudioStopOptions.AsAuthored); + Game1.nextMusicTrack = ""; //same as above line + } + } + else + { + if (musicManager.currentMusicPack == null) return; + if (Game1.currentSong != null && musicManager.currentMusicPack.isPlaying()) + { + //ModMonitor.Log("STOP THE MUSIC!!!"); + Game1.currentSong.Stop(AudioStopOptions.Immediate); //stop the normal songs from playing over the new songs + Game1.currentSong.Stop(AudioStopOptions.AsAuthored); + //Game1.nextMusicTrack = ""; //same as above line + } } } diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json index 74efdc77..8a0c53a7 100644 --- a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json +++ b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json @@ -1,7 +1,7 @@ { "Name": "Stardew Symphony Remastered", "Author": "Alpha_Omegasis", - "Version": "2.1.6", + "Version": "2.1.7", "Description": "Adding more music to the game one beep at a time. Now with streaming!", "UniqueID": "Omegasis.StardewSymphonyRemastered", "EntryDll": "StardewSymphonyRemastered.dll", From d6280b5c1b3c95d0f77c17b5730d3599c8662126 Mon Sep 17 00:00:00 2001 From: Date: Tue, 18 Sep 2018 18:04:38 -0700 Subject: [PATCH 074/110] Working on updates to happy birthday. Trying to add in more language support and spouse birthday wishes as well as a more modify-able birthday dialogue file. --- GeneralMods/HappyBirthday/BirthdayMessages.cs | 158 +++++++++++ .../HappyBirthday/Framework/ModConfig.cs | 45 +++- .../Framework/TranslationInfo.cs | 252 ++++++++++++++++++ GeneralMods/HappyBirthday/HappyBirthday.cs | 190 ++++++++----- .../HappyBirthday/HappyBirthday.csproj | 3 + GeneralMods/HappyBirthday/packages.config | 1 + .../StardustCore/Menus/ModualGameMenu.cs | 8 +- GeneralMods/StardustCore/ModCore.cs | 2 +- GeneralMods/StardustCore/manifest.json | 2 +- 9 files changed, 588 insertions(+), 73 deletions(-) create mode 100644 GeneralMods/HappyBirthday/BirthdayMessages.cs create mode 100644 GeneralMods/HappyBirthday/Framework/TranslationInfo.cs diff --git a/GeneralMods/HappyBirthday/BirthdayMessages.cs b/GeneralMods/HappyBirthday/BirthdayMessages.cs new file mode 100644 index 00000000..fd9c0b00 --- /dev/null +++ b/GeneralMods/HappyBirthday/BirthdayMessages.cs @@ -0,0 +1,158 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Omegasis.HappyBirthday +{ + public class BirthdayMessages + { + /// + /// The actual birthday wishes given by an npc. + /// + public Dictionary birthdayWishes; + + public Dictionary spouseBirthdayWishes; + + /// + /// TODO: Make this. + /// + public Dictionary defaultSpouseBirthdayWishes = new Dictionary() + { + ["Alex"] = "", + ["Elliott"] = "", + ["Harvey"] = "", + ["Sam"] = "", + ["Sebastian"] = "", + ["Shane"] = "", + ["Abigail"] = "", + ["Emily"] = "", + ["Haley"] = "", + ["Leah"] = "", + ["Maru"] = "", + ["Penny"] = "", + }; + + /// + /// Used to contain + /// + private Dictionary defaultBirthdayWishes = new Dictionary() + { + ["Robin"] = "Hey @, happy birthday! I'm glad you choose this town to move here to. ", + ["Demetrius"] = "Happy birthday @! Make sure you take some time off today to enjoy yourself. $h", + ["Maru"] = "Happy birthday @. I tried to make you an everlasting candle for you, but sadly that didn't work out. Maybe next year right? $h", + ["Sebastian"] = "Happy birthday @. Here's to another year of chilling. ", + ["Linus"] = "Happy birthday @. Thanks for visiting me even on your birthday. It makes me really happy. ", + ["Pierre"] = "Hey @, happy birthday! Hopefully this next year for you will be a great one! ", + ["Caroline"] = "Happy birthday @. Thank you for all that you've done for our community. I'm sure your parents must be proud of you.$h", + ["Abigail"] = "Happy birthday @! Hopefully this year we can go on even more adventures together $h!", + ["Alex"] = "Yo @, happy birthday! Maybe this will be your best year yet.$h", + ["George"] = "When you get to my age birthdays come and go. Still happy birthday @.", + ["Evelyn"] = "Happy birthday @. You have grown up to be such a fine individual and I'm sure you'll continue to grow. ", + ["Lewis"] = "Happy birthday @! I'm thankful for what you have done for the town and I'm sure your grandfather would be proud of you.", + ["Clint"] = "Hey happy birthday @. I'm sure this year is going to be great for you.", + ["Penny"] = "Happy birthday @. May you enjoy all of life's blessings this year. ", + ["Pam"] = "Happy birthday kid. We should have a drink to celebrate another year of life for you! $h", + ["Emily"] = "I'm sensing a strong positive life energy about you, so it must be your birthday. Happy birthday @!$h", + ["Haley"] = "Happy birthday @. Hopefully this year you'll get some good presents!$h", + ["Jas"] = "Happy birthday @. I hope you have a good birthday.", + ["Vincent"] = "Hey @ have you come to pl...oh it's your birthday? Happy birthday! ", + ["Jodi"] = "Hello there @. Rumor has it that today is your birthday. In that case, happy birthday!$h", + ["Kent"] = "Jodi told me that it was your birthday today @. Happy birthday and make sure to cherish every single day.", + ["Sam"] = "Yo @ happy birthday! We'll have to have a birthday jam session for you some time!$h ", + ["Leah"] = "Hey @ happy birthday! We should go to the saloon tonight and celebrate!$h ", + ["Shane"] = "Happy birthday @. Keep working hard and I'm sure this next year for you will be a great one.", + ["Marnie"] = "Hello there @. Everyone is talking about your birthday today and I wanted to make sure that I wished you a happy birthday as well, so happy birthday! $h ", + ["Elliott"] = "What a wonderful day isn't it @? Especially since today is your birthday. I tried to make you a poem but I feel like the best way of putting it is simply, happy birthday. $h ", + ["Gus"] = "Hey @ happy birthday! Hopefully you enjoy the rest of the day and make sure you aren't a stranger at the saloon!", + ["Dwarf"] = "Happy birthday @. I hope that what I got you is acceptable for humans as well. ", + ["Wizard"] = "The spirits told me that today is your birthday. In that case happy birthday @. ", + ["Harvey"] = "Hey @, happy birthday! Make sure to come in for a checkup some time to make sure you live many more years! ", + ["Sandy"] = "Hello there @. I heard that today was your birthday and I didn't want you feeling left out, so happy birthday!", + ["Willy"] = "Aye @ happy birthday. Looking at you reminds me of ye days when I was just a guppy swimming out to sea. Continue to enjoy them youngin.$h", + ["Krobus"] = "I have heard that it is tradition to give a gift to others on their birthday. In that case, happy birthday @." + }; + + /// + /// Used to load all of the default birthday greetings. + /// + private void createBirthdayGreetings() + { + + var serializer = JsonSerializer.Create(); + serializer.Formatting = Formatting.Indented; + + //English logic. + string defaultPath = Path.Combine(HappyBirthday.ModHelper.DirectoryPath, "Content", "Dialogue", "English"); + if (!Directory.Exists(defaultPath)) Directory.CreateDirectory(defaultPath); + + string birthdayFileDict=HappyBirthday.Config.translationInfo.getjsonForTranslation("BirthdayWishes", HappyBirthday.Config.translationInfo.currentTranslation); + string path = Path.Combine(HappyBirthday.ModHelper.DirectoryPath, "Content", "Dialogue","English", birthdayFileDict); + + //Handle normal birthday wishes. + if (!File.Exists(path)) + { + + StreamWriter writer = new StreamWriter(path); + serializer.Serialize(writer, defaultBirthdayWishes); + this.birthdayWishes = defaultBirthdayWishes; + } + else + { + StreamReader reader = new StreamReader(path); + birthdayWishes = new Dictionary(); + birthdayWishes = (Dictionary)serializer.Deserialize(reader, typeof(Dictionary)); + } + + //handle spouse birthday wishes. + string spouseBirthdayFileDict = HappyBirthday.Config.translationInfo.getjsonForTranslation("SpouseBirthdayWishes", HappyBirthday.Config.translationInfo.currentTranslation); + string spousePath = Path.Combine(HappyBirthday.ModHelper.DirectoryPath, "Content", "Dialogue","English",spouseBirthdayFileDict); + if (!File.Exists(path)) + { + + StreamWriter writer = new StreamWriter(spousePath); + serializer.Serialize(writer, defaultSpouseBirthdayWishes); + this.spouseBirthdayWishes = defaultSpouseBirthdayWishes; + } + else + { + StreamReader reader = new StreamReader(path); + birthdayWishes = new Dictionary(); + birthdayWishes = (Dictionary)serializer.Deserialize(reader, typeof(Dictionary)); + } + + //Non-english logic + foreach(var translation in HappyBirthday.Config.translationInfo.translationCodes) + { + if (translation.Key == "English") continue; + string basePath = Path.Combine(HappyBirthday.ModHelper.DirectoryPath, "Content", "Dialogue", translation.Key); + if (!Directory.Exists(basePath)) Directory.CreateDirectory(basePath); + string tempBirthdayFile =Path.Combine(basePath,HappyBirthday.Config.translationInfo.getjsonForTranslation("BirthdayWishes", translation.Key)); + string tempSpouseBirthdayFile =Path.Combine(basePath,HappyBirthday.Config.translationInfo.getjsonForTranslation("SpouseBirthdayWishes", translation.Key)); + + + Dictionary tempBirthdayDict = new Dictionary(); + foreach(var pair in defaultBirthdayWishes) + { + tempBirthdayDict.Add(pair.Key, ""); + } + StreamWriter writer = new StreamWriter(tempBirthdayFile); + serializer.Serialize(writer, tempBirthdayDict); + + + Dictionary tempSpouseBirthdayDict = new Dictionary(); + foreach (var pair in defaultSpouseBirthdayWishes) + { + tempSpouseBirthdayDict.Add(pair.Key, ""); + } + StreamWriter writer2 = new StreamWriter(tempSpouseBirthdayFile); + serializer.Serialize(writer, tempSpouseBirthdayDict); + } + } + + + } +} diff --git a/GeneralMods/HappyBirthday/Framework/ModConfig.cs b/GeneralMods/HappyBirthday/Framework/ModConfig.cs index db05d90f..efbc1955 100644 --- a/GeneralMods/HappyBirthday/Framework/ModConfig.cs +++ b/GeneralMods/HappyBirthday/Framework/ModConfig.cs @@ -1,9 +1,52 @@ namespace Omegasis.HappyBirthday.Framework { /// The mod configuration. - internal class ModConfig + public class ModConfig { /// The key which shows the menu. public string KeyBinding { get; set; } = "O"; + + /// + /// The minimum amount of friendship needed to get a birthday gift. + /// + public int minNeutralFriendshipGiftLevel = 3; + + /// + /// The max amount of friendship needed to get a neutral gift from an npc. + /// + public int maxNeutralFriendshipGiftLevel = 4; + + /// + ///The minimum amount of friendship to get a like gift from an npc. + /// + public int minLikeFriendshipLevel = 5; + + /// + /// The max amount of friendship needed to get a liked gift from an npc. + /// + public int maxLikeFriendshipLevel = 6; + + /// + /// The minimum amount of friendship needed to get a loved gift from an npc. + /// + public int minLoveFriendshipLevel = 7; + + /// + /// The minimum amount of friendship needed to get a happy birthday greeting from an npc. + /// + public int minimumFriendshipLevelForBirthdayWish=2; + + /// + /// Handles different translations of files. + /// + public TranslationInfo translationInfo; + + /// + /// Constructor. + /// + public ModConfig() + { + this.translationInfo = new TranslationInfo(); + } } } diff --git a/GeneralMods/HappyBirthday/Framework/TranslationInfo.cs b/GeneralMods/HappyBirthday/Framework/TranslationInfo.cs new file mode 100644 index 00000000..8f5c38bb --- /dev/null +++ b/GeneralMods/HappyBirthday/Framework/TranslationInfo.cs @@ -0,0 +1,252 @@ +using StardewValley; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Omegasis.HappyBirthday.Framework +{ + /// + /// A class which deals with handling different translations for Vocalization should other voice teams ever wish to voice act for that language. + /// + public class TranslationInfo + { + /// + /// The list of all supported translations by this mod. + /// + public List translations; + + /// + /// The current translation mode for the mod, so that it knows what files to load at the beginning of the game. + /// + public string currentTranslation; + + /// + /// Holds the info for what translation has what file extension. + /// + public Dictionary translationFileInfo; + + + public Dictionary translationCodes; + /// + /// Default constructor. + /// + public TranslationInfo() + { + translations = new List(); + + translationFileInfo = new Dictionary(); + translationCodes = new Dictionary(); + translations.Add("English"); + translations.Add("Spanish"); + translations.Add("Chinese"); + translations.Add("Japanese"); + translations.Add("Russian"); + translations.Add("German"); + translations.Add("Brazillian Portuguese"); + + currentTranslation = "English"; + + translationFileInfo.Add("English", ".json"); + translationFileInfo.Add("Spanish", ".es-ES.json"); + translationFileInfo.Add("Chinese", ".zh-CN.json"); + translationFileInfo.Add("Japanese", ".ja-JP.json"); + translationFileInfo.Add("Russian", ".ru-RU.json"); + translationFileInfo.Add("German", ".de-DE.json"); + translationFileInfo.Add("Brazillian Portuguese", ".pt-BR.json"); + + + translationCodes.Add("English", LocalizedContentManager.LanguageCode.en); + translationCodes.Add("Spanish", LocalizedContentManager.LanguageCode.es); + translationCodes.Add("Chinese", LocalizedContentManager.LanguageCode.zh); + translationCodes.Add("Japanese", LocalizedContentManager.LanguageCode.ja); + translationCodes.Add("Russian", LocalizedContentManager.LanguageCode.ru); + translationCodes.Add("German", LocalizedContentManager.LanguageCode.de); + translationCodes.Add("Brazillian Portuguese", LocalizedContentManager.LanguageCode.pt); + + } + + public string getTranslationNameFromPath(string fullPath) + { + return Path.GetFileName(fullPath); + } + + + public void changeLocalizedContentManagerFromTranslation(string translation) + { + string tra = getTranslationNameFromPath(translation); + bool f = translationCodes.TryGetValue(tra, out LocalizedContentManager.LanguageCode code); + if (f == false) LocalizedContentManager.CurrentLanguageCode = LocalizedContentManager.LanguageCode.en; + else LocalizedContentManager.CurrentLanguageCode = code; + return; + } + + public void resetLocalizationCode() + { + LocalizedContentManager.CurrentLanguageCode = LocalizedContentManager.LanguageCode.en; + } + + /// + /// Gets the proper file extension for the current translation. + /// + /// + /// + public string getFileExtentionForTranslation(string path) + { + /* + bool f = translationFileInfo.TryGetValue(translation, out string value); + if (f == false) return ".json"; + else return value; + */ + string translation = Path.GetFileName(path); + try + { + return translationFileInfo[translation]; + } + catch (Exception err) + { + + //Vocalization.ModMonitor.Log(err.ToString()); + //Vocalization.ModMonitor.Log("Attempted to get translation: " + translation); + return ".json"; + } + } + + /// + /// Gets the proper json for Buildings (aka Blueprints) from the data folder. + /// + /// + /// + public string getBuildingjsonForTranslation(string translation) + { + string buildings = "Blueprints"; + return buildings + getFileExtentionForTranslation(translation); + } + + /// + /// Gets the proper json file for the name passed in. Combines the file name with it's proper translation extension. + /// + /// + /// + /// + public string getjsonForTranslation(string jsonFileName, string translation) + { + return jsonFileName + getFileExtentionForTranslation(translation); + } + + + + /// + /// Loads an json file from StardewValley/Content + /// + /// + /// + /// + /// + public string LoadjsonFile(string jsonFileName, string key, string translation) + { + string json = jsonFileName + getFileExtentionForTranslation(translation); + Dictionary loadedDict = Game1.content.Load>(json); + + string loaded; + bool f = loadedDict.TryGetValue(key, out loaded); + if (f == false) + { + //Vocalization.ModMonitor.Log("Big issue: Key not found in file:" + json + " " + key); + return ""; + } + else return loaded; + } + + /// + /// Loads a string dictionary from a json file. + /// + /// + /// + /// + public Dictionary LoadJsonFileDictionary(string jsonFileName, string translation) + { + string json = jsonFileName + getFileExtentionForTranslation(translation); + Dictionary loadedDict = Game1.content.Load>(json); + + return loadedDict; + } + + public virtual string LoadString(string path, string translation, object sub1, object sub2, object sub3) + { + string format = this.LoadString(path, translation); + try + { + return string.Format(format, sub1, sub2, sub3); + } + catch (Exception ex) + { + } + + return format; + } + + public virtual string LoadString(string path, string translation, object sub1, object sub2) + { + string format = this.LoadString(path, translation); + try + { + return string.Format(format, sub1, sub2); + } + catch (Exception ex) + { + } + + return format; + } + + public virtual string LoadString(string path, string translation, object sub1) + { + string format = this.LoadString(path, translation); + try + { + return string.Format(format, sub1); + } + catch (Exception ex) + { + } + + return format; + } + + public virtual string LoadString(string path, string translation) + { + string assetName; + string key; + this.parseStringPath(path, out assetName, out key); + + return LoadjsonFile(assetName, key, translation); + } + + public virtual string LoadString(string path, string translation, params object[] substitutions) + { + string format = this.LoadString(path, translation); + if (substitutions.Length != 0) + { + try + { + return string.Format(format, substitutions); + } + catch (Exception ex) + { + } + } + return format; + } + + + private void parseStringPath(string path, out string assetName, out string key) + { + int length = path.IndexOf(':'); + assetName = path.Substring(0, length); + key = path.Substring(length + 1, path.Length - length - 1); + } + } +} diff --git a/GeneralMods/HappyBirthday/HappyBirthday.cs b/GeneralMods/HappyBirthday/HappyBirthday.cs index 28a5913f..6fbd4192 100644 --- a/GeneralMods/HappyBirthday/HappyBirthday.cs +++ b/GeneralMods/HappyBirthday/HappyBirthday.cs @@ -2,18 +2,22 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Newtonsoft.Json; using Omegasis.HappyBirthday.Framework; using StardewModdingAPI; using StardewModdingAPI.Events; using StardewValley; using StardewValley.Characters; +using StardewValley.Menus; using StardewValley.Monsters; using SObject = StardewValley.Object; namespace Omegasis.HappyBirthday { /// The mod entry point. - public class HappyBirthday : Mod, IAssetEditor, IAssetLoader + public class HappyBirthday : Mod, IAssetEditor { /********* ** Properties @@ -25,7 +29,7 @@ namespace Omegasis.HappyBirthday private string LegacyDataFilePath => Path.Combine(this.Helper.DirectoryPath, "Player_Birthdays", $"HappyBirthday_{Game1.player.Name}.txt"); /// The mod configuration. - private ModConfig Config; + public static ModConfig Config; /// The data for the current player. private PlayerData PlayerData; @@ -46,52 +50,6 @@ namespace Omegasis.HappyBirthday private bool CheckedForBirthday; //private Dictionary Dialogue; //private bool SeenEvent; - public bool CanLoad(IAssetInfo asset) - { - return asset.AssetNameEquals(@"Data\FarmerBirthdayDialogue"); - } - - /// Load a matched asset. - /// Basic metadata about the asset being loaded. - public T Load(IAssetInfo asset) - { - return (T)(object)new Dictionary // (T)(object) is a trick to cast anything to T if we know it's compatible - { - ["Robin"] = "Hey @, happy birthday! I'm glad you choose this town to move here to. ", - ["Demetrius"] = "Happy birthday @! Make sure you take some time off today to enjoy yourself. $h", - ["Maru"] = "Happy birthday @. I tried to make you an everlasting candle for you, but sadly that didn't work out. Maybe next year right? $h", - ["Sebastian"] = "Happy birthday @. Here's to another year of chilling. ", - ["Linus"] = "Happy birthday @. Thanks for visiting me even on your birthday. It makes me really happy. ", - ["Pierre"] = "Hey @, happy birthday! Hopefully this next year for you will be a great one! ", - ["Caroline"] = "Happy birthday @. Thank you for all that you've done for our community. I'm sure your parents must be proud of you.$h", - ["Abigail"] = "Happy birthday @! Hopefully this year we can go on even more adventures together $h!", - ["Alex"] = "Yo @, happy birthday! Maybe this will be your best year yet.$h", - ["George"] = "When you get to my age birthdays come and go. Still happy birthday @.", - ["Evelyn"] = "Happy birthday @. You have grown up to be such a fine individual and I'm sure you'll continue to grow. ", - ["Lewis"] = "Happy birthday @! I'm thankful for what you have done for the town and I'm sure your grandfather would be proud of you.", - ["Clint"] = "Hey happy birthday @. I'm sure this year is going to be great for you.", - ["Penny"] = "Happy birthday @. May you enjoy all of life's blessings this year. ", - ["Pam"] = "Happy birthday kid. We should have a drink to celebrate another year of life for you! $h", - ["Emily"] = "I'm sensing a strong positive life energy about you, so it must be your birthday. Happy birthday @!$h", - ["Haley"] = "Happy birthday @. Hopefully this year you'll get some good presents!$h", - ["Jas"] = "Happy birthday @. I hope you have a good birthday.", - ["Vincent"] = "Hey @ have you come to pl...oh it's your birthday? Happy birthday! ", - ["Jodi"] = "Hello there @. Rumor has it that today is your birthday. In that case, happy birthday!$h", - ["Kent"] = "Jodi told me that it was your birthday today @. Happy birthday and make sure to cherish every single day.", - ["Sam"] = "Yo @ happy birthday! We'll have to have a birthday jam session for you some time!$h ", - ["Leah"] = "Hey @ happy birthday! We should go to the saloon tonight and celebrate!$h ", - ["Shane"] = "Happy birthday @. Keep working hard and I'm sure this next year for you will be a great one.", - ["Marnie"] = "Hello there @. Everyone is talking about your birthday today and I wanted to make sure that I wished you a happy birthday as well, so happy birthday! $h ", - ["Elliott"] = "What a wonderful day isn't it @? Especially since today is your birthday. I tried to make you a poem but I feel like the best way of putting it is simply, happy birthday. $h ", - ["Gus"] = "Hey @ happy birthday! Hopefully you enjoy the rest of the day and make sure you aren't a stranger at the saloon!", - ["Dwarf"] = "Happy birthday @. I hope that what I got you is acceptable for humans as well. ", - ["Wizard"] = "The spirits told me that today is your birthday. In that case happy birthday @. ", - ["Harvey"] = "Hey @, happy birthday! Make sure to come in for a checkup some time to make sure you live many more years! ", - ["Sandy"] = "Hello there @. I heard that today was your birthday and I didn't want you feeling left out, so happy birthday!", - ["Willy"] = "Aye @ happy birthday. Looking at you reminds me of ye days when I was just a guppy swimming out to sea. Continue to enjoy them youngin.$h", - ["Krobus"] = "I have heard that it is tradition to give a gift to others on their birthday. In that case, happy birthday @." - }; - } public bool CanEdit(IAssetInfo asset) { @@ -109,6 +67,9 @@ namespace Omegasis.HappyBirthday .Set("birthdayDad", "Dear @,^ Happy birthday kiddo. It's been a little quiet around here on your birthday since you aren't around, but your mother and I know that you are making both your grandpa and us proud. We both know that living on your own can be tough but we believe in you one hundred percent, just keep following your dreams.^ Love, Dad ^ P.S. Here's some spending money to help you out on the farm. Good luck! %item money 5000 5001 %%"); } + public static IModHelper ModHelper; + + /********* ** Public methods @@ -125,8 +86,98 @@ namespace Omegasis.HappyBirthday SaveEvents.AfterLoad += this.SaveEvents_AfterLoad; SaveEvents.BeforeSave += this.SaveEvents_BeforeSave; ControlEvents.KeyPressed += this.ControlEvents_KeyPressed; + MenuEvents.MenuChanged += MenuEvents_MenuChanged; + GraphicsEvents.OnPostRenderGuiEvent += GraphicsEvents_OnPostRenderGuiEvent; + StardewModdingAPI.Events.GraphicsEvents.OnPostRenderHudEvent += GraphicsEvents_OnPostRenderHudEvent; ; //MultiplayerSupport.initializeMultiplayerSupport(); + ModHelper = Helper; + } + + + /// + /// Used to properly display hovertext for all events happening on a calendar day. + /// + /// + /// + private void GraphicsEvents_OnPostRenderHudEvent(object sender, EventArgs e) + { + if (Game1.activeClickableMenu == null) return; + if (PlayerData.BirthdaySeason.ToLower() != Game1.currentSeason.ToLower()) return; + if (Game1.activeClickableMenu is Billboard) + { + int index = PlayerData.BirthdayDay; + //Game1.player.FarmerRenderer.drawMiniPortrat(Game1.spriteBatch, new Vector2(Game1.activeClickableMenu.xPositionOnScreen + 152 + (index - 1) % 7 * 32 * 4, Game1.activeClickableMenu.yPositionOnScreen + 230 + (index - 1) / 7 * 32 * 4), 1f, 4f, 2, Game1.player); + + string hoverText = ""; + foreach (var clicky in (Game1.activeClickableMenu as Billboard).calendarDays) + { + if (clicky.containsPoint(Game1.getMouseX(), Game1.getMouseY())) + { + hoverText += clicky.hoverText + Environment.NewLine; + } + } + + if (!String.IsNullOrEmpty(hoverText)) + { + hoverText.Remove(hoverText.Length - 2, 1); + var oldText = Helper.Reflection.GetField(Game1.activeClickableMenu, "hoverText", true); + oldText.SetValue(hoverText); + } + + } + } + + /// + /// Used to show the farmer's portrait on the billboard menu. + /// + /// + /// + private void GraphicsEvents_OnPostRenderGuiEvent(object sender, EventArgs e) + { + if (Game1.activeClickableMenu == null) return; + if (PlayerData.BirthdaySeason.ToLower() != Game1.currentSeason.ToLower()) return; + if (Game1.activeClickableMenu is Billboard) + { + int index = PlayerData.BirthdayDay; + Game1.player.FarmerRenderer.drawMiniPortrat(Game1.spriteBatch, new Vector2(Game1.activeClickableMenu.xPositionOnScreen + 152 + (index - 1) % 7 * 32 * 4, Game1.activeClickableMenu.yPositionOnScreen + 230 + (index - 1) / 7 * 32 * 4), 0.5f, 4f, 2, Game1.player); + + string hoverText = ""; + foreach(var clicky in (Game1.activeClickableMenu as Billboard).calendarDays) + { + if (clicky.containsPoint(Game1.getMouseX(), Game1.getMouseY())) + { + hoverText += clicky.hoverText+Environment.NewLine; + } + } + if (hoverText != "") + { + var oldText=Helper.Reflection.GetField(Game1.activeClickableMenu, "hoverText", true); + oldText.SetValue(hoverText); + } + + } + } + + /// + /// Functionality to display the player's birthday on the billboard. + /// + /// + /// + public void MenuEvents_MenuChanged(object sender, EventArgsClickableMenuChanged e) + { + if (Game1.activeClickableMenu == null) return; + if(Game1.activeClickableMenu is Billboard) + { + Texture2D text = new Texture2D(Game1.graphics.GraphicsDevice,1,1); + Color[] col = new Color[1]; + col[0] = new Color(0, 0, 0, 1); + text.SetData(col); + //players birthdy position rect=new .... + int index = PlayerData.BirthdayDay; + Rectangle birthdayRect = new Rectangle(Game1.activeClickableMenu.xPositionOnScreen + 152 + (index - 1) % 7 * 32 * 4, Game1.activeClickableMenu.yPositionOnScreen + 200 + (index - 1) / 7 * 32 * 4, 124, 124); + (Game1.activeClickableMenu as Billboard).calendarDays.Add(new ClickableTextureComponent("", birthdayRect, "", Game1.player.name + "'s Birthday", text, new Rectangle(0, 0, 124, 124), 1f, false)); + } } @@ -168,7 +219,8 @@ namespace Omegasis.HappyBirthday // load settings this.MigrateLegacyData(); this.PlayerData = this.Helper.ReadJsonFile(this.DataFilePath) ?? new PlayerData(); - + + createBirthdayGreetings(); //this.SeenEvent = false; //this.Dialogue = new Dictionary(); } @@ -226,16 +278,22 @@ namespace Omegasis.HappyBirthday try { - Dialogue d = new Dialogue(Game1.content.Load>("Data\\FarmerBirthdayDialogue")[npc.Name], npc); - npc.CurrentDialogue.Push(d); - if (npc.CurrentDialogue.ElementAt(0) != d) npc.setNewDialogue(Game1.content.Load>("Data\\FarmerBirthdayDialogue")[npc.Name]); + if (Game1.player.getFriendshipHeartLevelForNPC(npc.Name) >= Config.minimumFriendshipLevelForBirthdayWish) + { + Dialogue d = new Dialogue(Game1.content.Load>("Data\\FarmerBirthdayDialogue")[npc.Name], npc); + npc.CurrentDialogue.Push(d); + if (npc.CurrentDialogue.ElementAt(0) != d) npc.setNewDialogue(Game1.content.Load>("Data\\FarmerBirthdayDialogue")[npc.Name]); + } } catch { - Dialogue d = new Dialogue("Happy Birthday @!", npc); - npc.CurrentDialogue.Push(d); - if (npc.CurrentDialogue.ElementAt(0) != d) - npc.setNewDialogue("Happy Birthday @!"); + if (Game1.player.getFriendshipHeartLevelForNPC(npc.Name) >= Config.minimumFriendshipLevelForBirthdayWish) + { + Dialogue d = new Dialogue("Happy Birthday @!", npc); + npc.CurrentDialogue.Push(d); + if (npc.CurrentDialogue.ElementAt(0) != d) + npc.setNewDialogue("Happy Birthday @!"); + } } } } @@ -341,7 +399,7 @@ namespace Omegasis.HappyBirthday /// Set the next birthday gift the player will receive. /// The villager's name who's giving the gift. - /// This returns gifts based on the speaker's heart level towards the player: neutral for 0-3, good for 4-6, and best for 7-10. + /// This returns gifts based on the speaker's heart level towards the player: neutral for 3-4, good for 5-6, and best for 7-10. private void SetNextBirthdayGift(string name) { Item gift; @@ -395,7 +453,7 @@ namespace Omegasis.HappyBirthday string[] fields = text.Split('/'); // love - if (Game1.player.getFriendshipHeartLevelForNPC(name) >= 7) + if (Game1.player.getFriendshipHeartLevelForNPC(name) >= Config.minLoveFriendshipLevel) { string[] loveFields = fields[1].Split(' '); for (int i = 0; i < loveFields.Length; i += 2) @@ -409,7 +467,7 @@ namespace Omegasis.HappyBirthday } // like - if (Game1.player.getFriendshipHeartLevelForNPC(name) >= 4 && Game1.player.getFriendshipHeartLevelForNPC(name) <= 6) + if (Game1.player.getFriendshipHeartLevelForNPC(name) >= Config.minLikeFriendshipLevel && Game1.player.getFriendshipHeartLevelForNPC(name) <= Config.maxLikeFriendshipLevel) { string[] likeFields = fields[3].Split(' '); for (int i = 0; i < likeFields.Length; i += 2) @@ -423,7 +481,7 @@ namespace Omegasis.HappyBirthday } // neutral - if (Game1.player.getFriendshipHeartLevelForNPC(name) >= 0 && Game1.player.getFriendshipHeartLevelForNPC(name) <= 3) + if (Game1.player.getFriendshipHeartLevelForNPC(name) >= Config.minNeutralFriendshipGiftLevel && Game1.player.getFriendshipHeartLevelForNPC(name) <= Config.maxNeutralFriendshipGiftLevel) { string[] neutralFields = fields[5].Split(' '); @@ -439,27 +497,27 @@ namespace Omegasis.HappyBirthday } // get NPC's preferred gifts - if (Game1.player.getFriendshipHeartLevelForNPC(name) >= 7) + if (Game1.player.getFriendshipHeartLevelForNPC(name) >= Config.minLoveFriendshipLevel) gifts.AddRange(this.GetUniversalItems("Love", true)); - if (Game1.player.getFriendshipHeartLevelForNPC(name) >= 4 && Game1.player.getFriendshipHeartLevelForNPC(name) <= 6) + if (Game1.player.getFriendshipHeartLevelForNPC(name) >= Config.minLikeFriendshipLevel && Game1.player.getFriendshipHeartLevelForNPC(name) <= Config.maxLikeFriendshipLevel) this.PossibleBirthdayGifts.AddRange(this.GetUniversalItems("Like", true)); - if (Game1.player.getFriendshipHeartLevelForNPC(name) >= 0 && Game1.player.getFriendshipHeartLevelForNPC(name) <= 3) + if (Game1.player.getFriendshipHeartLevelForNPC(name) >= Config.minNeutralFriendshipGiftLevel && Game1.player.getFriendshipHeartLevelForNPC(name) <= Config.maxNeutralFriendshipGiftLevel) this.PossibleBirthdayGifts.AddRange(this.GetUniversalItems("Neutral", true)); } catch { // get NPC's preferred gifts - if (Game1.player.getFriendshipHeartLevelForNPC(name) >= 7) + if (Game1.player.getFriendshipHeartLevelForNPC(name) >= Config.minLoveFriendshipLevel) { this.PossibleBirthdayGifts.AddRange(this.GetUniversalItems("Love", false)); this.PossibleBirthdayGifts.AddRange(this.GetLovedItems(name)); } - if (Game1.player.getFriendshipHeartLevelForNPC(name) >= 4 && Game1.player.getFriendshipHeartLevelForNPC(name) <= 6) + if (Game1.player.getFriendshipHeartLevelForNPC(name) >= Config.minLikeFriendshipLevel && Game1.player.getFriendshipHeartLevelForNPC(name) <= Config.maxLikeFriendshipLevel) { this.PossibleBirthdayGifts.AddRange(this.GetLikedItems(name)); this.PossibleBirthdayGifts.AddRange(this.GetUniversalItems("Like", false)); } - if (Game1.player.getFriendshipHeartLevelForNPC(name) >= 0 && Game1.player.getFriendshipHeartLevelForNPC(name) <= 3) + if (Game1.player.getFriendshipHeartLevelForNPC(name) >= Config.minNeutralFriendshipGiftLevel && Game1.player.getFriendshipHeartLevelForNPC(name) <= Config.maxNeutralFriendshipGiftLevel) this.PossibleBirthdayGifts.AddRange(this.GetUniversalItems("Neutral", false)); } //TODO: Make different tiers of gifts depending on the friendship, and if it is the spouse. diff --git a/GeneralMods/HappyBirthday/HappyBirthday.csproj b/GeneralMods/HappyBirthday/HappyBirthday.csproj index 52734b5a..dcd531c6 100644 --- a/GeneralMods/HappyBirthday/HappyBirthday.csproj +++ b/GeneralMods/HappyBirthday/HappyBirthday.csproj @@ -71,6 +71,9 @@ MinimumRecommendedRules.ruleset + + ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll + diff --git a/GeneralMods/HappyBirthday/packages.config b/GeneralMods/HappyBirthday/packages.config index 87b1c41e..6766c23b 100644 --- a/GeneralMods/HappyBirthday/packages.config +++ b/GeneralMods/HappyBirthday/packages.config @@ -1,4 +1,5 @@  + \ No newline at end of file diff --git a/GeneralMods/StardustCore/Menus/ModualGameMenu.cs b/GeneralMods/StardustCore/Menus/ModualGameMenu.cs index 32b559eb..572377d0 100644 --- a/GeneralMods/StardustCore/Menus/ModualGameMenu.cs +++ b/GeneralMods/StardustCore/Menus/ModualGameMenu.cs @@ -39,20 +39,20 @@ namespace StardustCore.Menus public ModularGameMenu() : base(Game1.viewport.Width / 2 - (800 + IClickableMenu.borderWidth * 2) / 2, Game1.viewport.Height / 2 - (600 + IClickableMenu.borderWidth * 2) / 2, 800 + IClickableMenu.borderWidth * 2, 600 + IClickableMenu.borderWidth * 2, true) { - ModCore.ModMonitor.Log("INITIALIZE MENU: ", LogLevel.Alert); + //ModCore.ModMonitor.Log("INITIALIZE MENU: ", LogLevel.Alert); if (Game1.activeClickableMenu == null) Game1.playSound("bigSelect"); GameMenu.forcePreventClose = false; this.menuTabsAndPages = new Dictionary(); - ModCore.ModMonitor.Log("INITIALIZE MENU: ", LogLevel.Alert); + //ModCore.ModMonitor.Log("INITIALIZE MENU: ", LogLevel.Alert); foreach (var v in StaticMenuTabsAndPages) { - ModCore.ModMonitor.Log("LIST A GO GO", LogLevel.Alert); + //ModCore.ModMonitor.Log("LIST A GO GO", LogLevel.Alert); foreach (var pair in v.Value) { this.AddMenuTab(pair.Key, pair.Value.clone()); - ModCore.ModMonitor.Log("ADD IN A PART", LogLevel.Alert); + //ModCore.ModMonitor.Log("ADD IN A PART", LogLevel.Alert); } //this.menuTabsAndPages.Add(v.Key,v.Value.clone()); } diff --git a/GeneralMods/StardustCore/ModCore.cs b/GeneralMods/StardustCore/ModCore.cs index 8ede36c2..73576b95 100644 --- a/GeneralMods/StardustCore/ModCore.cs +++ b/GeneralMods/StardustCore/ModCore.cs @@ -191,7 +191,7 @@ namespace StardustCore { if(e.KeyPressed.ToString()== config.modularMenuKey && Game1.activeClickableMenu==null) { - Game1.activeClickableMenu = new ModularGameMenu(0); + //Game1.activeClickableMenu = new ModularGameMenu(0); } } diff --git a/GeneralMods/StardustCore/manifest.json b/GeneralMods/StardustCore/manifest.json index af19a410..033a06b3 100644 --- a/GeneralMods/StardustCore/manifest.json +++ b/GeneralMods/StardustCore/manifest.json @@ -1,7 +1,7 @@ { "Name": "StardustCore", "Author": "Alpha_Omegasis", - "Version": "2.0.4", + "Version": "2.0.5", "Description": "A core mod that allows for other mods of mine to be run.", "UniqueID": "Omegasis.StardustCore", "EntryDll": "StardustCore.dll", From 4887b38cde20a41a9bed514ee3aacce4cee0f191 Mon Sep 17 00:00:00 2001 From: Date: Tue, 18 Sep 2018 22:35:36 -0700 Subject: [PATCH 075/110] Base for birthday events is put inplace. Now to make all of the actual content. --- GeneralMods/HappyBirthday/BirthdayEvents.cs | 35 +++++++++++++++++++ GeneralMods/HappyBirthday/BirthdayMessages.cs | 4 +-- GeneralMods/HappyBirthday/HappyBirthday.cs | 13 ++++--- 3 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 GeneralMods/HappyBirthday/BirthdayEvents.cs diff --git a/GeneralMods/HappyBirthday/BirthdayEvents.cs b/GeneralMods/HappyBirthday/BirthdayEvents.cs new file mode 100644 index 00000000..1d71cd3d --- /dev/null +++ b/GeneralMods/HappyBirthday/BirthdayEvents.cs @@ -0,0 +1,35 @@ +using StardewValley; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Omegasis.HappyBirthday +{ + /// + /// TODO:Make all the events + /// Resources:https://stardewvalleywiki.com/Modding:Event_data + /// + public class BirthdayEvents + { + public Event communityCenterJunimoEvent; + public Event marriedNoKidsEvent; + public Event surpriseBirthdayPartyEvent; + public Event marriedWithOneKidEvent; + public Event marriedWithTwoKidsEvent; + + public BirthdayEvents() + { + initializeEvents(); + } + + public void initializeEvents() + { + Event e = new Event("", -1, Game1.player); + Game1.player.currentLocation.currentEvent = new Event(); + } + + + } +} diff --git a/GeneralMods/HappyBirthday/BirthdayMessages.cs b/GeneralMods/HappyBirthday/BirthdayMessages.cs index fd9c0b00..2d5e4017 100644 --- a/GeneralMods/HappyBirthday/BirthdayMessages.cs +++ b/GeneralMods/HappyBirthday/BirthdayMessages.cs @@ -20,7 +20,7 @@ namespace Omegasis.HappyBirthday /// /// TODO: Make this. /// - public Dictionary defaultSpouseBirthdayWishes = new Dictionary() + private Dictionary defaultSpouseBirthdayWishes = new Dictionary() { ["Alex"] = "", ["Elliott"] = "", @@ -79,7 +79,7 @@ namespace Omegasis.HappyBirthday /// /// Used to load all of the default birthday greetings. /// - private void createBirthdayGreetings() + public void createBirthdayGreetings() { var serializer = JsonSerializer.Create(); diff --git a/GeneralMods/HappyBirthday/HappyBirthday.cs b/GeneralMods/HappyBirthday/HappyBirthday.cs index 6fbd4192..04313651 100644 --- a/GeneralMods/HappyBirthday/HappyBirthday.cs +++ b/GeneralMods/HappyBirthday/HappyBirthday.cs @@ -69,6 +69,7 @@ namespace Omegasis.HappyBirthday public static IModHelper ModHelper; + public BirthdayMessages messages; /********* @@ -79,7 +80,7 @@ namespace Omegasis.HappyBirthday public override void Entry(IModHelper helper) { helper.Content.AssetLoaders.Add(new PossibleGifts()); - this.Config = helper.ReadConfig(); + Config = helper.ReadConfig(); TimeEvents.AfterDayStarted += this.TimeEvents_AfterDayStarted; GameEvents.UpdateTick += this.GameEvents_UpdateTick; @@ -92,6 +93,8 @@ namespace Omegasis.HappyBirthday StardewModdingAPI.Events.GraphicsEvents.OnPostRenderHudEvent += GraphicsEvents_OnPostRenderHudEvent; ; //MultiplayerSupport.initializeMultiplayerSupport(); ModHelper = Helper; + + messages = new BirthdayMessages(); } @@ -199,7 +202,7 @@ namespace Omegasis.HappyBirthday { // show birthday selection menu if (Game1.activeClickableMenu != null) return; - if (Context.IsPlayerFree && !this.HasChosenBirthday && e.KeyPressed.ToString() == this.Config.KeyBinding) + if (Context.IsPlayerFree && !this.HasChosenBirthday && e.KeyPressed.ToString() == Config.KeyBinding) Game1.activeClickableMenu = new BirthdayMenu(this.PlayerData.BirthdaySeason, this.PlayerData.BirthdayDay, this.SetBirthday); } @@ -220,7 +223,7 @@ namespace Omegasis.HappyBirthday this.MigrateLegacyData(); this.PlayerData = this.Helper.ReadJsonFile(this.DataFilePath) ?? new PlayerData(); - createBirthdayGreetings(); + messages.createBirthdayGreetings(); //this.SeenEvent = false; //this.Dialogue = new Dictionary(); } @@ -280,9 +283,9 @@ namespace Omegasis.HappyBirthday { if (Game1.player.getFriendshipHeartLevelForNPC(npc.Name) >= Config.minimumFriendshipLevelForBirthdayWish) { - Dialogue d = new Dialogue(Game1.content.Load>("Data\\FarmerBirthdayDialogue")[npc.Name], npc); + Dialogue d = new Dialogue(messages.birthdayWishes[npc.Name], npc); npc.CurrentDialogue.Push(d); - if (npc.CurrentDialogue.ElementAt(0) != d) npc.setNewDialogue(Game1.content.Load>("Data\\FarmerBirthdayDialogue")[npc.Name]); + if (npc.CurrentDialogue.ElementAt(0) != d) npc.setNewDialogue(messages.birthdayWishes[npc.Name]); } } catch From 7e40cb2583d5deb72bbf8e4455a4f0781220fd78 Mon Sep 17 00:00:00 2001 From: Date: Wed, 19 Sep 2018 01:37:51 -0700 Subject: [PATCH 076/110] More work to come. Needs content, AssetLoaders, and consistency --- GeneralMods/HappyBirthday/BirthdayMessages.cs | 6 +-- GeneralMods/HappyBirthday/HappyBirthday.cs | 35 ++++++++++------ .../HappyBirthday/HappyBirthday.csproj | 3 ++ GeneralMods/HappyBirthday/PossibleGifts.cs | 41 +++++++++++++------ 4 files changed, 57 insertions(+), 28 deletions(-) diff --git a/GeneralMods/HappyBirthday/BirthdayMessages.cs b/GeneralMods/HappyBirthday/BirthdayMessages.cs index 2d5e4017..851c566d 100644 --- a/GeneralMods/HappyBirthday/BirthdayMessages.cs +++ b/GeneralMods/HappyBirthday/BirthdayMessages.cs @@ -86,11 +86,11 @@ namespace Omegasis.HappyBirthday serializer.Formatting = Formatting.Indented; //English logic. - string defaultPath = Path.Combine(HappyBirthday.ModHelper.DirectoryPath, "Content", "Dialogue", "English"); + string defaultPath = Path.Combine(HappyBirthday.ModHelper.DirectoryPath, "Content", "Dialogue", HappyBirthday.Config.translationInfo.currentTranslation); if (!Directory.Exists(defaultPath)) Directory.CreateDirectory(defaultPath); string birthdayFileDict=HappyBirthday.Config.translationInfo.getjsonForTranslation("BirthdayWishes", HappyBirthday.Config.translationInfo.currentTranslation); - string path = Path.Combine(HappyBirthday.ModHelper.DirectoryPath, "Content", "Dialogue","English", birthdayFileDict); + string path = Path.Combine(HappyBirthday.ModHelper.DirectoryPath, "Content", "Dialogue", HappyBirthday.Config.translationInfo.currentTranslation, birthdayFileDict); //Handle normal birthday wishes. if (!File.Exists(path)) @@ -109,7 +109,7 @@ namespace Omegasis.HappyBirthday //handle spouse birthday wishes. string spouseBirthdayFileDict = HappyBirthday.Config.translationInfo.getjsonForTranslation("SpouseBirthdayWishes", HappyBirthday.Config.translationInfo.currentTranslation); - string spousePath = Path.Combine(HappyBirthday.ModHelper.DirectoryPath, "Content", "Dialogue","English",spouseBirthdayFileDict); + string spousePath = Path.Combine(HappyBirthday.ModHelper.DirectoryPath, "Content", "Dialogue", HappyBirthday.Config.translationInfo.currentTranslation, spouseBirthdayFileDict); if (!File.Exists(path)) { diff --git a/GeneralMods/HappyBirthday/HappyBirthday.cs b/GeneralMods/HappyBirthday/HappyBirthday.cs index 04313651..b584cb3f 100644 --- a/GeneralMods/HappyBirthday/HappyBirthday.cs +++ b/GeneralMods/HappyBirthday/HappyBirthday.cs @@ -79,7 +79,7 @@ namespace Omegasis.HappyBirthday /// Provides simplified APIs for writing mods. public override void Entry(IModHelper helper) { - helper.Content.AssetLoaders.Add(new PossibleGifts()); + //helper.Content.AssetLoaders.Add(new PossibleGifts()); Config = helper.ReadConfig(); TimeEvents.AfterDayStarted += this.TimeEvents_AfterDayStarted; @@ -523,20 +523,29 @@ namespace Omegasis.HappyBirthday if (Game1.player.getFriendshipHeartLevelForNPC(name) >= Config.minNeutralFriendshipGiftLevel && Game1.player.getFriendshipHeartLevelForNPC(name) <= Config.maxNeutralFriendshipGiftLevel) this.PossibleBirthdayGifts.AddRange(this.GetUniversalItems("Neutral", false)); } + + if (Game1.player.isMarried()) + { + if (name == Game1.player.spouse) + { + this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(198, 1)); + this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(204, 1)); + this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(220, 1)); + this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(221, 1)); + this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(223, 1)); + this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(233, 1)); + this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(234, 1)); + this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(286, 5)); + this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(368, 5)); + this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(608, 1)); + this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(612, 1)); + this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(773, 1)); + } + } + //TODO: Make different tiers of gifts depending on the friendship, and if it is the spouse. /* - this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(198, 1)); - this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(204, 1)); - this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(220, 1)); - this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(221, 1)); - this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(223, 1)); - this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(233, 1)); - this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(234, 1)); - this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(286, 5)); - this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(368, 5)); - this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(608, 1)); - this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(612, 1)); - this.possible_birthday_gifts.Add((Item)new SytardewValley.Object(773, 1)); + */ return gifts; diff --git a/GeneralMods/HappyBirthday/HappyBirthday.csproj b/GeneralMods/HappyBirthday/HappyBirthday.csproj index dcd531c6..812fffb6 100644 --- a/GeneralMods/HappyBirthday/HappyBirthday.csproj +++ b/GeneralMods/HappyBirthday/HappyBirthday.csproj @@ -81,10 +81,13 @@ Properties\GlobalAssemblyInfo.cs + + + diff --git a/GeneralMods/HappyBirthday/PossibleGifts.cs b/GeneralMods/HappyBirthday/PossibleGifts.cs index 0e212841..e0006879 100644 --- a/GeneralMods/HappyBirthday/PossibleGifts.cs +++ b/GeneralMods/HappyBirthday/PossibleGifts.cs @@ -3,19 +3,9 @@ using System.Collections.Generic; namespace Omegasis.HappyBirthday { - class PossibleGifts : IAssetLoader + public class PossibleGifts { - public bool CanLoad(IAssetInfo asset) - { - return asset.AssetNameEquals(@"Data\PossibleBirthdayGifts"); - } - - /// Load a matched asset. - /// Basic metadata about the asset being loaded. - public T Load(IAssetInfo asset) - { - return (T)(object)new Dictionary // (T)(object) is a trick to cast anything to T if we know it's compatible - { + private Dictionary defaultBirthdayGifts=new Dictionary() { ["Universal_Love_Gift"] = "74 1 446 1 204 1 446 5 773 1", ["Universal_Like_Gift"] = "-2 3 -7 1 -26 2 -75 5 -80 3 72 1 220 1 221 1 395 1 613 1 634 1 635 1 636 1 637 1 638 1 724 1 233 1 223 1 465 20 -79 5", ["Universal_Neutral_Gift"] = "194 1 262 5 -74 5 -75 3 334 5 335 1 390 20 388 20 -81 5 -79 3", @@ -53,6 +43,33 @@ namespace Omegasis.HappyBirthday ["Willy"] = " Best/72 1 143 1 149 1 154 1 276 1 337 1 698 1 /Good/66 1 336 1 340 1 699 1 707 1 /Neutral/-4 3 / ", ["Krobus"] = " Best/72 1 16 1 276 1 337 1 305 1 /Good/66 1 336 1 340 1 /Neutral// " }; + + private Dictionary defaultSpouseBirthdayGifts = new Dictionary() { + + ["Universal_Love_Gift"] = "74 1 446 1 204 1 446 5 773 1", + ["Universal_Like_Gift"] = "-2 3 -7 1 -26 2 -75 5 -80 3 72 1 220 1 221 1 395 1 613 1 634 1 635 1 636 1 637 1 638 1 724 1 233 1 223 1 465 20 -79 5", + ["Universal_Neutral_Gift"] = "194 1 262 5 -74 5 -75 3 334 5 335 1 390 20 388 20 -81 5 -79 3", + ["Alex"] = "", + ["Elliott"] = "", + ["Harvey"] = "", + ["Sam"] = "", + ["Sebastian"] = "", + ["Shane"] = "", + ["Abigail"] = "", + ["Emily"] = "", + ["Haley"] = "", + ["Leah"] = "", + ["Maru"] = "", + ["Penny"] = "", + + + }; + + public Dictionary BirthdayGifts; + + public PossibleGifts() + { + } } } From 036e090b80795550ecfa20abfcc200d5aef63c26 Mon Sep 17 00:00:00 2001 From: Date: Fri, 21 Sep 2018 10:46:11 -0700 Subject: [PATCH 077/110] *Internally screams* A unified save core handles save cases where things go wrong. --- .../SaveAnywhere/API/SaveAnywhereAPI.cs | 32 ---- .../SaveAnywhere/Framework/SaveManager.cs | 32 +--- GeneralMods/SaveAnywhere/SaveAnywhere.cs | 11 -- GeneralMods/SaveAnywhere/SaveAnywhere.csproj | 5 +- GeneralMods/SaveAnywhere/manifest.json | 7 +- GeneralMods/StardewMods.sln | 14 ++ .../UnifiedSaveCore/AUnifiedSaveCore.csproj | 76 ++++++++ GeneralMods/UnifiedSaveCore/App.config | 6 + .../Framework/IInformationHandler.cs | 16 ++ .../Framework/LocationHandler.cs | 76 ++++++++ .../ISaveCoreAPI.cs} | 13 +- GeneralMods/UnifiedSaveCore/ModCore.cs | 164 ++++++++++++++++++ .../Properties/AssemblyInfo.cs | 36 ++++ GeneralMods/UnifiedSaveCore/SaveCoreAPI.cs | 51 ++++++ GeneralMods/UnifiedSaveCore/manifest.json | 10 ++ GeneralMods/UnifiedSaveCore/packages.config | 4 + 16 files changed, 473 insertions(+), 80 deletions(-) delete mode 100644 GeneralMods/SaveAnywhere/API/SaveAnywhereAPI.cs create mode 100644 GeneralMods/UnifiedSaveCore/AUnifiedSaveCore.csproj create mode 100644 GeneralMods/UnifiedSaveCore/App.config create mode 100644 GeneralMods/UnifiedSaveCore/Framework/IInformationHandler.cs create mode 100644 GeneralMods/UnifiedSaveCore/Framework/LocationHandler.cs rename GeneralMods/{SaveAnywhere/API/ISaveAnywhereAPI.cs => UnifiedSaveCore/ISaveCoreAPI.cs} (65%) create mode 100644 GeneralMods/UnifiedSaveCore/ModCore.cs create mode 100644 GeneralMods/UnifiedSaveCore/Properties/AssemblyInfo.cs create mode 100644 GeneralMods/UnifiedSaveCore/SaveCoreAPI.cs create mode 100644 GeneralMods/UnifiedSaveCore/manifest.json create mode 100644 GeneralMods/UnifiedSaveCore/packages.config diff --git a/GeneralMods/SaveAnywhere/API/SaveAnywhereAPI.cs b/GeneralMods/SaveAnywhere/API/SaveAnywhereAPI.cs deleted file mode 100644 index 36aab4f2..00000000 --- a/GeneralMods/SaveAnywhere/API/SaveAnywhereAPI.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using Omegasis.SaveAnywhere.Framework; - -namespace Omegasis.SaveAnywhere.API -{ - public class SaveAnywhereAPI : ISaveAnywhereAPI - { - public event EventHandler BeforeSave; - public event EventHandler AfterSave; - public event EventHandler AfterLoad; - - - public SaveAnywhereAPI(SaveManager manager) - { - BeforeSave = new EventHandler(empty); - AfterSave= new EventHandler(empty); - AfterLoad= new EventHandler(empty); - manager.BeforeSave += (sender, e) => { BeforeSave.Invoke(sender, e); }; - manager.AfterSave += (sender, e) => { AfterSave.Invoke(sender, e); }; - manager.AfterLoad += (sender, e) => { AfterLoad.Invoke(sender, e); }; - } - - /// - /// Used to initialize empty event handlers. - /// - /// - /// - private void empty(object o, EventArgs args){ - - } - } -} diff --git a/GeneralMods/SaveAnywhere/Framework/SaveManager.cs b/GeneralMods/SaveAnywhere/Framework/SaveManager.cs index 3be29bc0..0fd358c0 100644 --- a/GeneralMods/SaveAnywhere/Framework/SaveManager.cs +++ b/GeneralMods/SaveAnywhere/Framework/SaveManager.cs @@ -35,21 +35,7 @@ namespace Omegasis.SaveAnywhere.Framework /// Currently displayed save menu (null if no menu is displayed) private NewSaveGameMenu currentSaveMenu; - /********* - ** Events - *********/ - /// - /// Event that fires before game save - /// - public event EventHandler BeforeSave; - /// - /// Event that fires after game save - /// - public event EventHandler AfterSave; - /// - /// Event that fires after game load - /// - public event EventHandler AfterLoad; + /********* ** Public methods @@ -64,10 +50,6 @@ namespace Omegasis.SaveAnywhere.Framework this.Reflection = reflection; this.OnLoaded = onLoaded; - this.BeforeSave = new EventHandler(empty); - this.AfterSave = new EventHandler(empty); - this.AfterLoad = new EventHandler(empty); - } private void empty(object o, EventArgs args) @@ -97,8 +79,8 @@ namespace Omegasis.SaveAnywhere.Framework { currentSaveMenu.SaveComplete -= CurrentSaveMenu_SaveComplete; currentSaveMenu = null; - AfterSave.Invoke(this, EventArgs.Empty); - + //AfterSave.Invoke(this, EventArgs.Empty); + UnifiedSaveCore.UnifiedSaveCore.SaveEvents_AfterSave(this, EventArgs.Empty); } /// Clear saved data. @@ -111,8 +93,8 @@ namespace Omegasis.SaveAnywhere.Framework /// Initiate a game save. public void BeginSaveData() { - // Fire Event before saving data - BeforeSave.Invoke(this, EventArgs.Empty); + SaveAnywhere.ModMonitor.Log("SVE ANYWHERE WHAT YOU DOING???"); + UnifiedSaveCore.UnifiedSaveCore.SaveEvents_BeforeSave(this, EventArgs.Empty); // save game data Farm farm = Game1.getFarm(); @@ -164,8 +146,8 @@ namespace Omegasis.SaveAnywhere.Framework this.OnLoaded?.Invoke(); // Notify other mods that load is complete - AfterLoad.Invoke(this, EventArgs.Empty); - + //AfterLoad.Invoke(this, EventArgs.Empty); + UnifiedSaveCore.UnifiedSaveCore.SaveEvents_AfterLoad(this, EventArgs.Empty); } /// diff --git a/GeneralMods/SaveAnywhere/SaveAnywhere.cs b/GeneralMods/SaveAnywhere/SaveAnywhere.cs index e3a96d92..0c4a0d8f 100644 --- a/GeneralMods/SaveAnywhere/SaveAnywhere.cs +++ b/GeneralMods/SaveAnywhere/SaveAnywhere.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using Omegasis.SaveAnywhere.API; using Omegasis.SaveAnywhere.Framework; using StardewModdingAPI; using StardewModdingAPI.Events; @@ -69,16 +68,6 @@ namespace Omegasis.SaveAnywhere customMenuOpen = false; } - /// - /// Exposes the SaveAnywhere API to other SMAPI mods - /// - /// - public override object GetApi() - { - SaveAnywhereAPI api = new SaveAnywhereAPI(SaveManager); - return api; - } - /*Notes. Mods that want to support save anywhere will get the api for Save anywhere and then add their clean up code to the events that happen for Before/After Save and Loading. Example with pseudo code. SaveAnywhere.api.BeforeSave+=StardustCore.Objects.CleanUpBeforeSave; diff --git a/GeneralMods/SaveAnywhere/SaveAnywhere.csproj b/GeneralMods/SaveAnywhere/SaveAnywhere.csproj index e2e5943b..ba2e0479 100644 --- a/GeneralMods/SaveAnywhere/SaveAnywhere.csproj +++ b/GeneralMods/SaveAnywhere/SaveAnywhere.csproj @@ -70,13 +70,14 @@ + + ..\UnifiedSaveCore\bin\Release\UnifiedSaveCore.dll + Properties\GlobalAssemblyInfo.cs - - diff --git a/GeneralMods/SaveAnywhere/manifest.json b/GeneralMods/SaveAnywhere/manifest.json index 326d1e30..f2a0325d 100644 --- a/GeneralMods/SaveAnywhere/manifest.json +++ b/GeneralMods/SaveAnywhere/manifest.json @@ -1,10 +1,11 @@ { "Name": "Save Anywhere", "Author": "Alpha_Omegasis", - "Version": "2.8.1", + "Version": "3.0.0", "Description": "Lets you save almost anywhere.", "UniqueID": "Omegasis.SaveAnywhere", "EntryDll": "SaveAnywhere.dll", - "MinimumApiVersion": "2.3", - "UpdateKeys": [ "Nexus:444" ] + "MinimumApiVersion": "2.4", + "Dependencies": [ + ] } diff --git a/GeneralMods/StardewMods.sln b/GeneralMods/StardewMods.sln index 577b29d2..4e379438 100644 --- a/GeneralMods/StardewMods.sln +++ b/GeneralMods/StardewMods.sln @@ -79,6 +79,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Vocalization", "Vocalizatio {7B1E9A54-ED9E-47AA-BBAA-98A6E7CB527A} = {7B1E9A54-ED9E-47AA-BBAA-98A6E7CB527A} EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AUnifiedSaveCore", "UnifiedSaveCore\AUnifiedSaveCore.csproj", "{ACAF0BAE-6495-4F1B-8B1F-E34BF7CCF51A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -401,6 +403,18 @@ Global {1651701C-DB36-43C7-B66D-2700171DD9A9}.x86|Any CPU.Build.0 = Release|Any CPU {1651701C-DB36-43C7-B66D-2700171DD9A9}.x86|x86.ActiveCfg = Release|Any CPU {1651701C-DB36-43C7-B66D-2700171DD9A9}.x86|x86.Build.0 = Release|Any CPU + {ACAF0BAE-6495-4F1B-8B1F-E34BF7CCF51A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ACAF0BAE-6495-4F1B-8B1F-E34BF7CCF51A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ACAF0BAE-6495-4F1B-8B1F-E34BF7CCF51A}.Debug|x86.ActiveCfg = Debug|Any CPU + {ACAF0BAE-6495-4F1B-8B1F-E34BF7CCF51A}.Debug|x86.Build.0 = Debug|Any CPU + {ACAF0BAE-6495-4F1B-8B1F-E34BF7CCF51A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ACAF0BAE-6495-4F1B-8B1F-E34BF7CCF51A}.Release|Any CPU.Build.0 = Release|Any CPU + {ACAF0BAE-6495-4F1B-8B1F-E34BF7CCF51A}.Release|x86.ActiveCfg = Release|Any CPU + {ACAF0BAE-6495-4F1B-8B1F-E34BF7CCF51A}.Release|x86.Build.0 = Release|Any CPU + {ACAF0BAE-6495-4F1B-8B1F-E34BF7CCF51A}.x86|Any CPU.ActiveCfg = Release|Any CPU + {ACAF0BAE-6495-4F1B-8B1F-E34BF7CCF51A}.x86|Any CPU.Build.0 = Release|Any CPU + {ACAF0BAE-6495-4F1B-8B1F-E34BF7CCF51A}.x86|x86.ActiveCfg = Release|Any CPU + {ACAF0BAE-6495-4F1B-8B1F-E34BF7CCF51A}.x86|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/GeneralMods/UnifiedSaveCore/AUnifiedSaveCore.csproj b/GeneralMods/UnifiedSaveCore/AUnifiedSaveCore.csproj new file mode 100644 index 00000000..7a93166d --- /dev/null +++ b/GeneralMods/UnifiedSaveCore/AUnifiedSaveCore.csproj @@ -0,0 +1,76 @@ + + + + + Debug + AnyCPU + {ACAF0BAE-6495-4F1B-8B1F-E34BF7CCF51A} + Library + UnifiedSaveCore + UnifiedSaveCore + v4.5.2 + 512 + true + + + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + \ No newline at end of file diff --git a/GeneralMods/UnifiedSaveCore/App.config b/GeneralMods/UnifiedSaveCore/App.config new file mode 100644 index 00000000..8227adb9 --- /dev/null +++ b/GeneralMods/UnifiedSaveCore/App.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/GeneralMods/UnifiedSaveCore/Framework/IInformationHandler.cs b/GeneralMods/UnifiedSaveCore/Framework/IInformationHandler.cs new file mode 100644 index 00000000..50695874 --- /dev/null +++ b/GeneralMods/UnifiedSaveCore/Framework/IInformationHandler.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace UnifiedSaveCore.Framework +{ + public interface IInformationHandler + { + + void beforeSave(); + void afterSave(); + void afterLoad(); + } +} diff --git a/GeneralMods/UnifiedSaveCore/Framework/LocationHandler.cs b/GeneralMods/UnifiedSaveCore/Framework/LocationHandler.cs new file mode 100644 index 00000000..ddaaa460 --- /dev/null +++ b/GeneralMods/UnifiedSaveCore/Framework/LocationHandler.cs @@ -0,0 +1,76 @@ +using Microsoft.Xna.Framework; +using StardewValley; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace UnifiedSaveCore.Framework +{ + public class LocationHandler:IInformationHandler + { + /// + /// The locations to store while saving is occuring. + /// + public List locations; + + public GameLocation oldLocation; + public Vector2 position; + public int oldFacingDirection; + + public LocationHandler() + { + this.locations = new List(); + } + + /// + /// Restores all game locations once the game is finished loading. + /// + public void afterSave() + { + foreach (var loc in locations) + { + Game1.locations.Add(loc); + } + locations.Clear(); + Game1.warpFarmer(oldLocation.name, (int)position.X*Game1.tileSize, (int)position.Y*Game1.tileSize, oldFacingDirection); + } + + //Removes all game locations for the game to save. + public void beforeSave() + { + UnifiedSaveCore.monitor.Log("BEFORE SAVE HAS BEEN CALLED!"); + + oldLocation = Game1.player.currentLocation; + position = Game1.player.position; + oldFacingDirection = Game1.player.facingDirection; + + Vector2 bed = Game1.player.mostRecentBed; + Game1.warpFarmer("Farmhouse", (int)bed.X, (int)bed.Y, 2); + foreach (var loc in Game1.locations) + { + UnifiedSaveCore.monitor.Log(loc.GetType().ToString()); + //ModCore.monitor.Log(); + foreach (var type in UnifiedSaveCore.modTypes) + { + if (loc.GetType().ToString() == type.ToString()) + { + UnifiedSaveCore.monitor.Log("Temporarily removing unexpected location type: " + loc.GetType().ToString()); + locations.Add(loc); + } + } + } + foreach (var v in locations) + { + Game1.locations.Remove(v); + } + } + + public void afterLoad() + { + //do nothing + } + + } +} diff --git a/GeneralMods/SaveAnywhere/API/ISaveAnywhereAPI.cs b/GeneralMods/UnifiedSaveCore/ISaveCoreAPI.cs similarity index 65% rename from GeneralMods/SaveAnywhere/API/ISaveAnywhereAPI.cs rename to GeneralMods/UnifiedSaveCore/ISaveCoreAPI.cs index 55033c0a..0d13f5ca 100644 --- a/GeneralMods/SaveAnywhere/API/ISaveAnywhereAPI.cs +++ b/GeneralMods/UnifiedSaveCore/ISaveCoreAPI.cs @@ -1,13 +1,12 @@ using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; -namespace Omegasis.SaveAnywhere.API +namespace UnifiedSaveCore { - /// - /// Interface for the Save Anywhere API - /// Other mods can use this interface to get the - /// API from the SMAPI helper - /// - public interface ISaveAnywhereAPI + public interface ISaveCoreAPI { /********* ** Events diff --git a/GeneralMods/UnifiedSaveCore/ModCore.cs b/GeneralMods/UnifiedSaveCore/ModCore.cs new file mode 100644 index 00000000..e61fbe6f --- /dev/null +++ b/GeneralMods/UnifiedSaveCore/ModCore.cs @@ -0,0 +1,164 @@ +using StardewModdingAPI; +using StardewValley; +using StardewValley.Characters; +using StardewValley.Monsters; +using StardewValley.Quests; +using StardewValley.TerrainFeatures; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Reflection; +using System.Reflection.Emit; +using System.Text; +using System.Threading.Tasks; +using UnifiedSaveCore.Framework; + +namespace UnifiedSaveCore +{ + /// + /// Bare bones mod that interfaces events for saving. + /// + public class UnifiedSaveCore:Mod + { + //https://stackoverflow.com/questions/14663763/how-to-add-an-attribute-to-a-property-at-runtime + + public static List modTypes; + + public static List dataHandlers; + + + public static SaveCoreAPI saveCoreAPI; + + public static IMonitor monitor; + public static IModHelper helper; + + public override void Entry(IModHelper helper) + { + + monitor = this.Monitor; + helper = this.Helper; + StackFrame[] frames = new StackTrace().GetFrames(); + Assembly initialAssembly = (from f in frames + select f.GetMethod().ReflectedType.Assembly + ).Distinct().ElementAt(1); + Monitor.Log(initialAssembly.FullName); + + + Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); + + modTypes = new List(); + + List namespacesToIgnore = new List() + { + "System", + "Mono", + "StardewModdingAPI", + "Lidgren", + "Microsoft", + "Monogames", + "Monogame", + "MonoGame", + "Netcode", + "Steamworks", + "GalaxyCSharp", + "xTile", + "StardewModdingAPI" + }; + + foreach (Assembly asm in assemblies) + { + + bool ignoreNamespace = false; + AssemblyName name2= asm.GetName(); + + foreach (var t in asm.GetTypes()) + { + string[] nameSpace = t.ToString().Split('.'); + + foreach (var name in namespacesToIgnore) + { + if (name.ToString() == nameSpace.ElementAt(0).ToString() || name.ToString()==name2.Name.ToString()) + { + ignoreNamespace = true; + break; + } + } + if (ignoreNamespace) break; + + var type = t; + if(t.IsInterface) + { + Monitor.Log(t.ToString()+" is an interface. Skipping XML Serialization ignore."); + continue; + } + var aName = name2; + var ab = AppDomain.CurrentDomain.DefineDynamicAssembly(aName, AssemblyBuilderAccess.Run); + var mb = ab.DefineDynamicModule(aName.Name); + var tb = mb.DefineType(type.Name + "Proxy", System.Reflection.TypeAttributes.Public| TypeAttributes.NotPublic, type); + + + var attrCtorParams = new Type[] {}; + var attrCtorInfo = typeof(System.Xml.Serialization.XmlIgnoreAttribute).GetConstructor(attrCtorParams); + var attrBuilder = new CustomAttributeBuilder(attrCtorInfo, new object[] { }); + tb.SetCustomAttribute(attrBuilder); + Monitor.Log("XML Serialization Ignore: "+type.ToString()); + modTypes.Add(t); + + } + if (ignoreNamespace) continue; + Monitor.Log(asm.FullName); + //Monitor.Log(name2.Name.ToString()); + //FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(asm.Location); + //AssemblyName asmName = asm.GetName(); + //string name = asmName.Name; + //Version asmV = asmName.Version; + //string fileV = fvi.FileVersion; + //string prodV = fvi.ProductVersion; + //Console.WriteLine("{0} VERSIONS: (A){1} (F){2} (P){3}", name, asmV, fileV, prodV); + } + + StardewModdingAPI.Events.SaveEvents.BeforeSave += SaveEvents_BeforeSave; + StardewModdingAPI.Events.SaveEvents.AfterSave += SaveEvents_AfterSave; + StardewModdingAPI.Events.SaveEvents.AfterLoad += SaveEvents_AfterLoad; + saveCoreAPI = new SaveCoreAPI(); + + dataHandlers = new List(); + dataHandlers.Add(new LocationHandler()); + + } + + + public static void SaveEvents_AfterLoad(object sender, EventArgs e) + { + saveCoreAPI.invoke_AfterLoad(sender, e); //give priority to mod authors first then use brute force methods. + foreach (IInformationHandler handler in dataHandlers) + { + handler.afterLoad(); + } + } + + public static void SaveEvents_AfterSave(object sender, EventArgs e) + { + saveCoreAPI.invoke_AfterSave(sender, e);//give priority to mod authors first then use brute force methods. + foreach (IInformationHandler handler in dataHandlers) + { + handler.afterSave(); + } + } + + public static void SaveEvents_BeforeSave(object sender, EventArgs e) + { + saveCoreAPI.invoke_BeforeSave(sender, e);//give priority to mod authors first then use brute force methods. + foreach (IInformationHandler handler in dataHandlers) + { + handler.beforeSave(); + } + } + + public override object GetApi() + { + return new SaveCoreAPI(); + } + } +} diff --git a/GeneralMods/UnifiedSaveCore/Properties/AssemblyInfo.cs b/GeneralMods/UnifiedSaveCore/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..596285bd --- /dev/null +++ b/GeneralMods/UnifiedSaveCore/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("UnifiedSaveCore")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("UnifiedSaveCore")] +[assembly: AssemblyCopyright("Copyright © 2018")] +[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("acaf0bae-6495-4f1b-8b1f-e34bf7ccf51a")] + +// 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/GeneralMods/UnifiedSaveCore/SaveCoreAPI.cs b/GeneralMods/UnifiedSaveCore/SaveCoreAPI.cs new file mode 100644 index 00000000..81c826d0 --- /dev/null +++ b/GeneralMods/UnifiedSaveCore/SaveCoreAPI.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace UnifiedSaveCore +{ + public class SaveCoreAPI + { + public event EventHandler BeforeSave; + public event EventHandler AfterSave; + public event EventHandler AfterLoad; + + + public SaveCoreAPI() + { + BeforeSave = new EventHandler(empty); + AfterSave = new EventHandler(empty); + AfterLoad = new EventHandler(empty); + } + + /// + /// Used to initialize empty event handlers. + /// + /// + /// + private void empty(object o, EventArgs args) + { + + } + + public void invoke_BeforeSave(object sender, EventArgs args) + { + if(BeforeSave!=null) + BeforeSave.Invoke(sender, args); + } + + public void invoke_AfterSave(object sender, EventArgs args) + { + if(AfterSave!=null) + AfterSave.Invoke(sender, args); + } + + public void invoke_AfterLoad(object sender, EventArgs args) + { + if(AfterLoad!=null) + AfterLoad.Invoke(sender, args); + } + } +} diff --git a/GeneralMods/UnifiedSaveCore/manifest.json b/GeneralMods/UnifiedSaveCore/manifest.json new file mode 100644 index 00000000..e0986cc6 --- /dev/null +++ b/GeneralMods/UnifiedSaveCore/manifest.json @@ -0,0 +1,10 @@ +{ + "Name": "Unified Save core", + "Author": "Alpha_Omegasis", + "Version": "0.0.1", + "Description": "Allows for a core api for mod authors to handle saving/loading.", + "UniqueID": "Omegasis.UnifiedSaveCore", + "EntryDll": "UnifiedSaveCore.dll", + "MinimumApiVersion": "2.0", + "UpdateKeys": [ "" ] +} diff --git a/GeneralMods/UnifiedSaveCore/packages.config b/GeneralMods/UnifiedSaveCore/packages.config new file mode 100644 index 00000000..28b59b1d --- /dev/null +++ b/GeneralMods/UnifiedSaveCore/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file From 065a88e3109bd8ed2e7847a18c992ba757e20a5c Mon Sep 17 00:00:00 2001 From: Date: Fri, 21 Sep 2018 11:19:06 -0700 Subject: [PATCH 078/110] Fixed accidently ignoring StardewValley. --- .../UnifiedSaveCore/Framework/LocationHandler.cs | 9 ++++----- GeneralMods/UnifiedSaveCore/ModCore.cs | 11 ++++++++++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/GeneralMods/UnifiedSaveCore/Framework/LocationHandler.cs b/GeneralMods/UnifiedSaveCore/Framework/LocationHandler.cs index ddaaa460..84308985 100644 --- a/GeneralMods/UnifiedSaveCore/Framework/LocationHandler.cs +++ b/GeneralMods/UnifiedSaveCore/Framework/LocationHandler.cs @@ -34,29 +34,28 @@ namespace UnifiedSaveCore.Framework Game1.locations.Add(loc); } locations.Clear(); - Game1.warpFarmer(oldLocation.name, (int)position.X*Game1.tileSize, (int)position.Y*Game1.tileSize, oldFacingDirection); + //Game1.warpFarmer(oldLocation.name, (int)position.X*Game1.tileSize, (int)position.Y*Game1.tileSize, oldFacingDirection); } //Removes all game locations for the game to save. public void beforeSave() { - UnifiedSaveCore.monitor.Log("BEFORE SAVE HAS BEEN CALLED!"); oldLocation = Game1.player.currentLocation; position = Game1.player.position; oldFacingDirection = Game1.player.facingDirection; Vector2 bed = Game1.player.mostRecentBed; - Game1.warpFarmer("Farmhouse", (int)bed.X, (int)bed.Y, 2); + //Game1.warpFarmer("Farmhouse", (int)bed.X, (int)bed.Y, 2); foreach (var loc in Game1.locations) { - UnifiedSaveCore.monitor.Log(loc.GetType().ToString()); + //UnifiedSaveCore.monitor.Log(loc.GetType().ToString()); //ModCore.monitor.Log(); foreach (var type in UnifiedSaveCore.modTypes) { if (loc.GetType().ToString() == type.ToString()) { - UnifiedSaveCore.monitor.Log("Temporarily removing unexpected location type: " + loc.GetType().ToString()); + UnifiedSaveCore.monitor.Log("Temporarily removing unexpected location:"+ loc.name+" type: " + loc.GetType().ToString()); locations.Add(loc); } } diff --git a/GeneralMods/UnifiedSaveCore/ModCore.cs b/GeneralMods/UnifiedSaveCore/ModCore.cs index e61fbe6f..20e1e93f 100644 --- a/GeneralMods/UnifiedSaveCore/ModCore.cs +++ b/GeneralMods/UnifiedSaveCore/ModCore.cs @@ -18,6 +18,15 @@ namespace UnifiedSaveCore { /// /// Bare bones mod that interfaces events for saving. + /// + /// Must go from really big to really small. + /// I.E locations->characters->objects->items.... + /// TODO: + /// Characters + /// Animals + /// Trees? + /// Chests + /// Items /// public class UnifiedSaveCore:Mod { @@ -54,6 +63,7 @@ namespace UnifiedSaveCore "System", "Mono", "StardewModdingAPI", + "StardewValley", "Lidgren", "Microsoft", "Monogames", @@ -63,7 +73,6 @@ namespace UnifiedSaveCore "Steamworks", "GalaxyCSharp", "xTile", - "StardewModdingAPI" }; foreach (Assembly asm in assemblies) From c9f21d2772291919df4691c1911dd8a5b539fe8a Mon Sep 17 00:00:00 2001 From: Date: Fri, 21 Sep 2018 11:43:05 -0700 Subject: [PATCH 079/110] NPC handler implemented for custom characters. --- .../UnifiedSaveCore/AUnifiedSaveCore.csproj | 1 + .../Framework/LocationHandler.cs | 4 +- .../UnifiedSaveCore/Framework/NPCHandler.cs | 72 +++++++++++++++++++ GeneralMods/UnifiedSaveCore/ModCore.cs | 8 ++- 4 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 GeneralMods/UnifiedSaveCore/Framework/NPCHandler.cs diff --git a/GeneralMods/UnifiedSaveCore/AUnifiedSaveCore.csproj b/GeneralMods/UnifiedSaveCore/AUnifiedSaveCore.csproj index 7a93166d..33b5f8bb 100644 --- a/GeneralMods/UnifiedSaveCore/AUnifiedSaveCore.csproj +++ b/GeneralMods/UnifiedSaveCore/AUnifiedSaveCore.csproj @@ -50,6 +50,7 @@ + diff --git a/GeneralMods/UnifiedSaveCore/Framework/LocationHandler.cs b/GeneralMods/UnifiedSaveCore/Framework/LocationHandler.cs index 84308985..88c75224 100644 --- a/GeneralMods/UnifiedSaveCore/Framework/LocationHandler.cs +++ b/GeneralMods/UnifiedSaveCore/Framework/LocationHandler.cs @@ -34,7 +34,7 @@ namespace UnifiedSaveCore.Framework Game1.locations.Add(loc); } locations.Clear(); - //Game1.warpFarmer(oldLocation.name, (int)position.X*Game1.tileSize, (int)position.Y*Game1.tileSize, oldFacingDirection); + Game1.warpFarmer(oldLocation.name, (int)position.X/Game1.tileSize, (int)position.Y/Game1.tileSize, oldFacingDirection); } //Removes all game locations for the game to save. @@ -46,7 +46,7 @@ namespace UnifiedSaveCore.Framework oldFacingDirection = Game1.player.facingDirection; Vector2 bed = Game1.player.mostRecentBed; - //Game1.warpFarmer("Farmhouse", (int)bed.X, (int)bed.Y, 2); + Game1.warpFarmer("Farmhouse", (int)bed.X/Game1.tileSize, (int)bed.Y/Game1.tileSize, 2); foreach (var loc in Game1.locations) { //UnifiedSaveCore.monitor.Log(loc.GetType().ToString()); diff --git a/GeneralMods/UnifiedSaveCore/Framework/NPCHandler.cs b/GeneralMods/UnifiedSaveCore/Framework/NPCHandler.cs new file mode 100644 index 00000000..a8924da3 --- /dev/null +++ b/GeneralMods/UnifiedSaveCore/Framework/NPCHandler.cs @@ -0,0 +1,72 @@ +using StardewValley; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace UnifiedSaveCore.Framework +{ + public class NPCHandler:IInformationHandler + { + /// + /// Deals with characters at specific locations. + /// + Dictionary> characterLocations; + + /// + /// Constructor. + /// + public NPCHandler() + { + characterLocations = new Dictionary>(); + } + + /// + /// Removes all custom characters before saving. + /// + public void beforeSave() + { + foreach (var loc in Game1.locations) + { + List characters = new List(); + foreach (var character in loc.characters) + { + foreach (Type t in UnifiedSaveCore.modTypes) + { + if (character.GetType().ToString() == t.ToString()) + { + characters.Add(character); + } + } + + } + foreach (var character in characters) + { + loc.characters.Remove(character); + } + characterLocations.Add(loc, characters); + } + } + + /// + /// Restores all custom characters after saving. + /// + public void afterSave() + { + foreach(KeyValuePair> pair in characterLocations) + { + foreach(var npc in pair.Value) + { + pair.Key.characters.Add(npc); + } + } + characterLocations.Clear(); + } + + public void afterLoad() + { + throw new NotImplementedException(); + } + } +} diff --git a/GeneralMods/UnifiedSaveCore/ModCore.cs b/GeneralMods/UnifiedSaveCore/ModCore.cs index 20e1e93f..dfaf8fca 100644 --- a/GeneralMods/UnifiedSaveCore/ModCore.cs +++ b/GeneralMods/UnifiedSaveCore/ModCore.cs @@ -75,6 +75,7 @@ namespace UnifiedSaveCore "xTile", }; + //taken from attribute example. foreach (Assembly asm in assemblies) { @@ -127,13 +128,14 @@ namespace UnifiedSaveCore //Console.WriteLine("{0} VERSIONS: (A){1} (F){2} (P){3}", name, asmV, fileV, prodV); } - StardewModdingAPI.Events.SaveEvents.BeforeSave += SaveEvents_BeforeSave; - StardewModdingAPI.Events.SaveEvents.AfterSave += SaveEvents_AfterSave; - StardewModdingAPI.Events.SaveEvents.AfterLoad += SaveEvents_AfterLoad; + //StardewModdingAPI.Events.SaveEvents.BeforeSave += SaveEvents_BeforeSave; + //StardewModdingAPI.Events.SaveEvents.AfterSave += SaveEvents_AfterSave; + //StardewModdingAPI.Events.SaveEvents.AfterLoad += SaveEvents_AfterLoad; saveCoreAPI = new SaveCoreAPI(); dataHandlers = new List(); dataHandlers.Add(new LocationHandler()); + dataHandlers.Add(new NPCHandler()); } From 3e4fc0138968d92483d17833d68cc49b7a69d93a Mon Sep 17 00:00:00 2001 From: Date: Fri, 21 Sep 2018 20:47:33 -0700 Subject: [PATCH 080/110] More notes. This project will remain unfinished for awhile due to business --- GeneralMods/UnifiedSaveCore/ModCore.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/GeneralMods/UnifiedSaveCore/ModCore.cs b/GeneralMods/UnifiedSaveCore/ModCore.cs index dfaf8fca..153829d8 100644 --- a/GeneralMods/UnifiedSaveCore/ModCore.cs +++ b/GeneralMods/UnifiedSaveCore/ModCore.cs @@ -22,11 +22,13 @@ namespace UnifiedSaveCore /// Must go from really big to really small. /// I.E locations->characters->objects->items.... /// TODO: - /// Characters /// Animals /// Trees? /// Chests /// Items + /// + /// This mod will rewrite the network (server, client) code and have events that fire when a player connects, disconnects, messages are sent, and messages are received. + /// /// public class UnifiedSaveCore:Mod { From b8e4e6d0770a91300113f75a522e0fd5413487c5 Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Mon, 22 Oct 2018 14:02:48 -0700 Subject: [PATCH 081/110] Delete da[lda Deleted a file that was a dump of all commit history. Unsure how it was included. --- da[lda | 1847 -------------------------------------------------------- 1 file changed, 1847 deletions(-) delete mode 100644 da[lda diff --git a/da[lda b/da[lda deleted file mode 100644 index 6d457a52..00000000 --- a/da[lda +++ /dev/null @@ -1,1847 +0,0 @@ -commit 2276faa610b3704cefb88ecf796f36d0d75498a8 -Author: -Date: Mon Aug 6 20:01:59 2018 -0700 - - Wrote netcode to support Animations, AnimationManagers, and CoreObjects. - -commit 3af2da68fae217abed5efbe28ec85845789ccd27 -Author: -Date: Mon Aug 6 14:01:44 2018 -0700 - - Tons of 1.3 updates. Also support for multiplayer custom objects in Stardust is slowly coming about! - -commit 0cf9b68560143924cc071b9f9780110128806a5a -Author: -Date: Sun Aug 5 09:33:00 2018 -0700 - - Rebuilt some mods for 1.3 compatability. In the process of fixing Happy Birthday glitches. - -commit 808e44fff71b87f2bdf49f7010048591eb650f92 -Author: Joshua Navarro -Date: Fri Jul 20 00:33:59 2018 -0700 - - Added in light glows!!!! - -commit 50f84167aae97e62ecd07784fafbbf321c36ad8c -Author: Joshua Navarro -Date: Thu Jul 19 21:33:50 2018 -0700 - - Shader color upgrade+simple night shader. - - Added in better color shader with nighttime support. - -commit e545d4232db845affbfe5ff2cfc8293978e51062 -Author: Joshua Navarro -Date: Thu Jul 19 13:28:20 2018 -0700 - - Backup all my work thus far. - -commit f188c12f0ae09e41e700b6bba97de2ab6ee1cad2 -Author: Joshua Navarro -Date: Wed Jul 18 23:13:39 2018 -0700 - - Draw order fixed. - - Better greyscale shader and draw order fixed for drawing things to the screen. WOOT! - -commit c4f6f981c39cc517f128e20a966c909fa4a58b70 -Author: Joshua Navarro -Date: Wed Jul 18 17:41:38 2018 -0700 - - Crafting menus fixed! - -commit 2141c151ca5f66b8b5e46baff3d9adb900e9997a -Author: Joshua Navarro -Date: Wed Jul 18 16:06:15 2018 -0700 - - Fixed mouse cursor shader issue. - -commit a921b2ba780de30dc4b87ebc95d3e44cb2c7ca40 -Author: Joshua Navarro -Date: Wed Jul 18 14:57:58 2018 -0700 - - Add files via upload - -commit 0509259a2ee95f4f65d85d9c4c3cbd637f9d5d7a -Author: Joshua Navarro -Date: Wed Jul 18 11:48:37 2018 -0700 - - Social Page: NPC Shader - -commit 9c6b2efccd394ed143b54d130c877a2e6f5c0dfb -Author: Joshua Navarro -Date: Wed Jul 18 07:47:16 2018 -0700 - - Updated game menu fix - - Applied shader to more game menu components - -commit b127a000a52ebda9b2a2e5d9dd57d521100e3790 -Author: Joshua Navarro -Date: Tue Jul 17 22:38:15 2018 -0700 - - Made a mod. - - Shaders? - -commit b68643989e115f5b46b92af7c7b30168fef8bbac -Author: Joshua Navarro -Date: Fri Jul 13 23:18:17 2018 -0700 - - Finished dialogue scrape update. - - Ready for alpha testing. Need audio clips, putting audio clips in place, and quality of life features. - -commit 4b500182fa6b7acc4a1ba5bc57dedea8f6026646 -Author: Joshua Navarro -Date: Fri Jul 13 20:28:26 2018 -0700 - - Finished writing dialogue scraper. - - Needs to be tested. - -commit a3b3442c6f2877f5baf7513648106f88a90d3b03 -Author: Joshua Navarro -Date: Thu Jul 12 22:25:21 2018 -0700 - - Added Mod config, scrape npc dialogue and TVs. - - See todo list. Next is shops. - -commit 1497980aea8b4cfb2c8ad289024db8f4221953e1 -Author: Joshua Navarro -Date: Tue Jul 10 23:23:50 2018 -0700 - - Finished dictionary sanitization. - - See todo list for next task. - -commit fd5972d0b9e054a3c0136538d8879f7384b5b6b7 -Author: Joshua Navarro -Date: Sun Jul 8 14:11:06 2018 -0700 - - More sanitation work. - - Should work for the most part, just need to add in adjectives, nouns, and places. - -commit 2acd5f32a1e96b04345674405e5e2018f66568db -Author: Joshua Navarro -Date: Sun Jul 8 09:22:21 2018 -0700 - - Started work on translation update and sanitizing input. - - Translation update will allow for dialogue scraping of dictionaries for different supported languages. - - Sanitizing input will replace game variables with a generic string so that voice acting can be more flexible and not have to record a million lines. - -commit 4e10d7efc6f155630a9d0276b8a04af80c057c46 -Author: Joshua Navarro -Date: Sun Jul 8 01:40:46 2018 -0700 - - Updated vocalization with notes on what to do next. - -commit 32c4ba1d65815893bfcce267e46d629b74e51e89 -Author: Joshua Navarro -Date: Sun Jul 8 00:49:49 2018 -0700 - - Creating new voice acting mod at request of another author. - -commit c474ce1a8d4f0898c1621aac87499d23b41f9168 -Author: Joshua Navarro -Date: Sun Jul 8 00:48:13 2018 -0700 - - Updated SSM to allow for playing/stoping of sound files. - -commit 8f0f692a60d658aedc6f2b4a539d9d5b4d9a1620 -Author: -Date: Mon Jun 25 21:13:40 2018 -0700 - - Fixed Game1.shouldFarmerPassOut issue, need to test night owl, started fixing Happy bday, need to update SimpleSoundManager - -commit 349d053727a2ff088773714aa95aa9380ed8f321 -Merge: 71efefa 5e5c79c -Author: Joshua Navarro -Date: Mon Jun 25 20:09:30 2018 -0700 - - Merge pull request #39 from perkinslr/patch-1 - - Reset money to previous value before the save - -commit 71efefae3e59798cd5cdf1aec9f59caf37afe655 -Merge: 7018239 b620e4e -Author: Joshua Navarro -Date: Mon Jun 25 19:58:42 2018 -0700 - - Merge pull request #40 from DefenTheNation/master - - Add API for other mods to hook into Save Anywhere save events - -commit b620e4eaf5fb147b67b5ce7e5103e519100b893b -Author: DefenTheNation -Date: Sat Jun 23 00:31:40 2018 -0700 - - Add API for other mods to hook into Save Anywhere save events - -commit 701823925f3413c2204a4dd4efcec223f03e9ff7 -Author: -Date: Wed Jun 13 12:08:14 2018 -0700 - - Updated menu drawing. Now to fix the scale size of the object - -commit bcf76f9163daed6c475c5a97691087a4c83106cd -Author: -Date: Wed Jun 13 11:11:56 2018 -0700 - - Fixed draw issues with multi tile obects. Next up menu drawing and functionality. - -commit 4469fbd9b353e543f6d5fb1d437853142e6f431b -Author: -Date: Wed Jun 13 02:36:52 2018 -0700 - - Made multi tile objects that can be used in the future for things like machines and more furniture. Bigger things here we come. Need to edit sme click functionality however. - -commit a928f7d18e35f5f3316121b8c25a186297ae766a -Author: -Date: Tue Jun 12 23:25:36 2018 -0700 - - Added tool support for axe, hoe, watering can and pickaxe. - -commit 70106444987f57f8aed1dbbf50a341a40e237f16 -Author: -Date: Tue Jun 12 21:45:42 2018 -0700 - - Fixed serializing items to a chest. - -commit 19e6202e3a007960761e588a87cbe519bd642095 -Author: -Date: Tue Jun 12 18:42:31 2018 -0700 - - Rewrote the serialization fuctions of SDust Core to support custom tools. A huge pain but it should work. - -commit ad7f9754ef2b95e54c3caacaa65026dfbf3bc063 -Author: -Date: Fri Jun 8 11:40:23 2018 -0700 - - Console commands, bug fixes, and more! - -commit 5e5c79c0a0dfad170b18ea07f0708365d2ca4a01 -Author: Logan Perkins -Date: Fri Jun 8 09:47:34 2018 -0700 - - Reset money to previous value before the save - - So, if you let the timer run down to 6:00 A.M., you lose 10% of your cash, the game saves, the new day starts, and NightOwl resets your money to what it was at 5:59. There are two problems with this. First, if you quit to the title and reload, your money doesn't get reset again on load, so you lose the 10%. Second, if you shipped anything the day before, the cash reset wipes out the cash gained from shipping items. This fixes both. The first is fixed by resetting the cash value during the before save event, the second is fixed by reading the cash penalty amount from the mailbox before the mailbox is cleared, and adding the value rather than setting the total. - -commit c38f2599f2d0aec75030acb9997127761102a09d -Merge: 39e91bf 5b0de7f -Author: Joshua Navarro -Date: Thu Jun 7 14:02:55 2018 -0700 - - Merge pull request #38 from janavarro95/Development - - Development - -commit 5b0de7f73656a78452ccb84b6803ed2980ac8f66 -Author: -Date: Thu Jun 7 13:58:52 2018 -0700 - - Fixed SDust dynamic warning, and a glitch with the music menu when selecting an album. - -commit f2ed5c3acb20fef575f497c8bbf9eef052d20871 -Author: -Date: Wed Jun 6 01:00:59 2018 -0700 - - Fixed glitch pertaining to the music menu not being able to get a correct album index and crashing. - -commit 39e91bf962f5148e478c03120e16dfc0a5ce4c34 -Merge: fdebd3a fba0cd7 -Author: Joshua Navarro -Date: Mon Jun 4 19:04:44 2018 -0700 - - Merge pull request #37 from janavarro95/Development - - Added in an aesthetic feature that draws the add or delete button on … - -commit fba0cd75f128de02bdd596bd0b94fca3afb83069 -Author: -Date: Mon Jun 4 19:03:25 2018 -0700 - - Added in an aesthetic feature that draws the add or delete button on the music manager menu depending on whether or not you added the music to the music pack yet or not. - -commit fdebd3a8e838ab337dcc5bc71a29b4f8fdef68f0 -Merge: b35746f ba7d0ae -Author: Joshua Navarro -Date: Fri Jun 1 15:20:34 2018 -0700 - - Merge pull request #36 from janavarro95/Development - - Development - -commit ba7d0ae9b047b8c7f61f3ff03b401d722a8aa1cc -Author: -Date: Fri Jun 1 15:18:49 2018 -0700 - - Updated mod manifest files for nexus release - -commit f7ffec1799599246b0c5545b09bd09d9eb87b517 -Author: -Date: Fri Jun 1 14:43:47 2018 -0700 - - The beta of Stardew Symphony is complete! WOOO! - -commit 70885979ed9e57a95e8f2ae0a6f249904efda35f -Author: -Date: Fri Jun 1 12:09:50 2018 -0700 - - Mod config, log surpressing, menu/location music working, just need to polish the menu and I'll be done! - -commit 02d3ab39e5a5e08a8c77b4ca6b7fd92e11d6cf84 -Author: -Date: Thu May 31 14:38:24 2018 -0700 - - Updated SSM to be able to handle XWB and WAV files. - -commit 9fe6a075de9f27864d64860c62e63c057608c122 -Author: -Date: Wed May 30 18:14:06 2018 -0700 - - Repositioned menu elements and added options for generic festivals and events. - -commit 04dd0432f0a3d9547cabfab7e123517fbb7950e1 -Author: -Date: Wed May 30 13:58:14 2018 -0700 - - Almost done with symphony remastered menu. Needs some tweaks but works for the most part. - -commit 5e8f2ccdfdeb7bfe889d43a34a36386f3ff2dd80 -Author: -Date: Tue May 29 01:04:47 2018 -0700 - - More menu work for symphony. - -commit eb90e537a510e02c18b334300be544a99efbd6a6 -Author: -Date: Mon May 28 03:17:36 2018 -0700 - - Symphony can now add songs to triggers for changing location. Need to find a way to surpress always changing songs when changing location if it isn't location specific. - -commit 7c693c90514bd9f04f88f65cddccd1966cd448cc -Author: -Date: Sun May 27 19:08:01 2018 -0700 - - Created layout for menu selection options for standard selections. - -commit 6afca47caa8997bfa1c3e0270da3a00b0c63d8b3 -Author: -Date: Fri May 18 14:24:59 2018 -0700 - - Rename save backup, fix happy birthday, disable net core, add info to symphony for first page of icons. - -commit 651cd8a26b99fda535791695ed8f4c1b3693c4ec -Author: -Date: Thu May 10 00:16:05 2018 -0700 - - Updated ModNet to be compatable with SDV 1.3.10, which adds bug fixes for sprite errors. - -commit 0fb7e729c1f77625c425024721fe138623a9af90 -Author: -Date: Wed May 9 15:57:20 2018 -0700 - - Updated NetMod to prevent redundant messages and errors. - -commit bd656c444b945043ebd37809c91aa19fcc2201ad -Author: -Date: Wed May 9 14:23:42 2018 -0700 - - Fiexed some blaring error messages, gave Happy Birthday it's much needed multiplayer support. - -commit 11025947fb2d97d8180e519679c4099e2e85d4a0 -Author: -Date: Tue May 8 21:34:32 2018 -0700 - - added function to get all farmers except the current player. - -commit a0ddb5994b4012f682b654957a69049bf0487280 -Author: -Date: Tue May 8 18:18:53 2018 -0700 - - Made functionality to get first, second, third, and fourth player. - -commit 947e0c557fb307c3bd0532bb4335c19966548960 -Author: -Date: Tue May 8 17:21:59 2018 -0700 - - Added support to send a message to a specific farmer. - -commit 9c1314480c7a2fa925e8343b04d110af815e3e8a -Author: -Date: Tue May 8 10:45:26 2018 -0700 - - Added in network functionality so that clients can send data to server and other clients. - -commit 20f52e27071b6da95543f0ea8d72683670c586b8 -Author: -Date: Mon May 7 22:37:02 2018 -0700 - - Allowed for custom types to be added in how to process a class multiple ways. Also added support for SDV.HUDMessages - -commit b3a9cb7b0ab75736691c754a9779c74f2f11cb9b -Author: -Date: Mon May 7 05:41:16 2018 -0700 - - Updated network utils to be able to sync a custom class that can hold info to a different sync type of data. This allows for users to add in custom data types now. - -commit 62f07d731ccd316674ab51169b8906cdbcd02781 -Author: -Date: Sun May 6 19:31:10 2018 -0700 - - Changed BinaryReaderExtention files to be more split up. - Also added in function that simply logs which supported types are added for reading/saving. - -commit 42b039cf89a7074f81ab8130c10ddb63d46a19bd -Author: -Date: Sun May 6 19:11:24 2018 -0700 - - Added in functionality to read/write to List - -commit ea31aec34fdc37e938eed4d99178c25b1f0b3edd -Author: -Date: Sun May 6 18:23:45 2018 -0700 - - File cleanup - -commit b5a7d9797c93f6f1fa25b30ca2555971939cf8b6 -Author: -Date: Sun May 6 18:21:31 2018 -0700 - - Slowly updating mods. Managed to create mod that syncs mod data between clients and server. - -commit ccddf1d4239fac7a0b96d884717ee8306cdf77f5 -Author: -Date: Mon Apr 30 18:21:31 2018 -0700 - - The BIG 1.3 update. Everything has been touched and some mods have been reworked a bit. - -commit 7e5d4349caeac5861f2a18d8d311b854a1b9d4b9 -Author: -Date: Fri Apr 27 11:49:52 2018 -0700 - - Big update to Symphony Remastered. Added in support for festivals, events, and menus. Also added in support for adding in support for mods that use Symphony. - -commit e42e91e30d2c9562c8ccd22125dd02efb4686d79 -Author: -Date: Sat Mar 31 01:47:10 2018 -0700 - - Made the song selection menu. Can now click songs to play them. Now to make the selected songmenu where you can play the song or set triggers. - -commit 6ef666af6ef84e83d762e5581fcbb3e5a302e8d8 -Author: -Date: Fri Mar 30 05:46:24 2018 -0700 - - Colored background menus for UIUtilities, and a fancier menu for Symphony. - -commit dad514a6d63f5bf27d369f53824d1e23935546fd -Author: -Date: Wed Mar 21 13:02:50 2018 -0700 - - Symphony now takes priority over StardewValley music. Can be changed simply by adding in a StardewValley Music Pack. Also Music Album Icons! - -commit fd53797c5f4dd15cc5cf799fa840a8839863b4e0 -Author: -Date: Wed Mar 21 02:04:05 2018 -0700 - - Wav music packs now work correctly. WOOT! - -commit def22386c586027a66568cbe3b935ef90e7a87c4 -Author: -Date: Wed Mar 21 00:46:00 2018 -0700 - - Got wav music packs working! Just need to figure out the buffer size for the files now. - -commit 1bbf3f2503ebfc7c51304b1d2d7ca218b5564d1c -Author: -Date: Tue Mar 20 23:24:11 2018 -0700 - - Play some randome music and play wav packs. - -commit ed899b49d905c651a9898f64a9c3d441fecb8696 -Author: -Date: Tue Mar 20 16:45:07 2018 -0700 - - symphony menu is coming along. - -commit 67c110f282ed44258577080215e03f178e3c121a -Author: -Date: Tue Mar 20 03:10:02 2018 -0700 - - attempted rough implementation of farmers market. Needs a lot more work before rough prototype would be complete. - -commit 44d2f4e7e9de61f88afdb06c2c42f1bdbfce3984 -Author: -Date: Mon Mar 19 23:01:43 2018 -0700 - - Finished commenting on all functions in the mod. Now just to write up some documentation. - -commit a915a06460fcdce27400946ba9605fefa4e00da1 -Author: -Date: Mon Mar 19 03:32:00 2018 -0700 - - More comments round 2 - -commit fabef6ba82b03f0036ec1d1c61443a81fe692c3a -Author: -Date: Sun Mar 18 19:06:08 2018 -0700 - - Started the great comment update. - -commit 9834bbcf28ca2db1f429f2df6ae3f15061cb0a9f -Author: -Date: Sun Mar 18 16:06:49 2018 -0700 - - Fixed npc movment, npcs now correctly animate when moving, need to fix graphics for it though. - -commit 5c1f09b266d9fef91f8262f3fca375c9030a2f6a -Author: -Date: Sun Mar 18 03:20:06 2018 -0700 - - Fixed modular npc breathing. - -commit bd6e479b4fcc74d8e6248fe31c490ecc4da56cbe -Author: -Date: Sun Mar 18 01:48:01 2018 -0700 - - Finished the basics of the npc renderer. I have included the base art assets for generating a female npc and polished off all of the code. Base goal achived. - -commit 91620913298339e5dbdf493301769e7a83629e88 -Author: -Date: Sat Mar 17 21:49:22 2018 -0700 - - Fixed drawing glitches with the custom npc renderer. Now just have to get individual assets and make a nice compilation. - -commit f8517e37c362c2fc01bd3797a1806ecd9c482ba5 -Author: -Date: Sat Mar 17 04:39:46 2018 -0700 - - Implemented code for custom npc merchants. Pretty simple actually and the result is very pleasing. - -commit 07757dac1fedcecd09a194a5ea8a6f8da23e088d -Author: -Date: Sat Mar 17 04:18:35 2018 -0700 - - Discovered that the mod is now corectly rendering npcs. Issue: AnimatedSpriteCollection.draw functionality is inconsistent and needs to be fixed. - -commit 43573f0bbab3eded32c9140efa0d1a741645cff3 -Author: -Date: Sat Mar 17 04:04:04 2018 -0700 - - Fixed glitches pertaining to loading assets in and generating random npcs. Need to fix layer depth to see if NPC will properly render. - -commit 8d1eef7329c405b7be8dcd8f8e9d6f9e2c4e22d7 -Author: -Date: Mon Mar 5 23:46:24 2018 -0800 - - Cleaned up code regarding the Event System mod to prevent lots of redundant code. - -commit 16c77a1497310dd42164f0d694b84dd7f6429862 -Author: -Date: Mon Mar 5 23:06:39 2018 -0800 - - Ui buttons work, dialogue events now work for left click which could lead to some spicy mods. - -commit 4fc3466608153c51ca8f51b525d98b26cd4517d5 -Author: -Date: Mon Mar 5 20:46:45 2018 -0800 - - Made dialogue map event, and updated Button for UIUtilities to use Texture2DExtended. Spent awhile just fixing it. - -commit 68c831029b212706b736ca7d349f331222f1362d -Author: -Date: Sun Mar 4 15:21:39 2018 -0800 - - New constructors for ExtendedNPC that don't take a CharacterRenderer, just a basic Sprite. - -commit e17dd9ea7c3f8030edc5173805fffcc342b7564a -Author: -Date: Sun Mar 4 14:44:52 2018 -0800 - - Made a function to generate renderers. - -commit c73702459951b298c735724e87b5fb6d5dbeef79 -Author: -Date: Sun Mar 4 14:32:59 2018 -0800 - - The asset loader should now have all like assets bundled together. So all swimming animations will pull from the same body sprite as defined instead of always random. - -commit d5536b9e52d31fceaa07b265d5bd056d41880705 -Author: -Date: Sun Mar 4 13:23:40 2018 -0800 - - Getting closer to the finished product. Assets are grouped together now with .json holding all the info for the different animation types. - -commit 005ad14cfd45853792c45069d918c1e8e047fe54 -Author: -Date: Sun Mar 4 07:53:55 2018 -0800 - - I think the asset loader works this time. I can have 4 pngs assigned per .json file. Only way to know for sure is to start loading in a ton of art... - -commit b9e42ae256d3317e8fcc73bf7ea82a2928895590 -Author: -Date: Sun Mar 4 04:36:46 2018 -0800 - - Got the asset loaded up and running. Currently I can load in normal npc sprites using .json files. - -commit e6696d8bb09878042c35d4500377289b8961a69e -Author: -Date: Sun Mar 4 03:36:19 2018 -0800 - - Made a way to keep track of npcs so that way they can be safely removed before saving and NOT crash the game. - -commit aa8d59b67b2251d18df04c7077cd2e90b4b05f6e -Author: -Date: Sun Mar 4 03:05:01 2018 -0800 - - Updated the mainifest for Happy Birthday to reflect a new version of the mod. - -commit b35746f85e725d8d48782c9b3af5a7032c204dc8 -Merge: 6330b49 ded9895 -Author: janavarro95 -Date: Sun Mar 4 03:03:30 2018 -0800 - - Merge pull request #34 from janavarro95/Development - - Fixed Happy Birthday Spamming the SMAPI console when the player still… - -commit ded9895c12d0ea2563ca13620ae8aee60b34cb25 -Author: -Date: Sun Mar 4 03:02:54 2018 -0800 - - Fixed Happy Birthday Spamming the SMAPI console when the player still hasn't choosen their birthday. - -commit 6330b495f23be18eb5001d143599904109369215 -Merge: 93f863b e5808ee -Author: janavarro95 -Date: Sat Mar 3 19:25:40 2018 -0800 - - Merge pull request #33 from janavarro95/Development - - Development - -commit e5808eeb5cabfe45808ad9250634d5ba4f3a7bbb -Author: -Date: Sat Mar 3 19:24:36 2018 -0800 - - Yup. - -commit 93f863bcca0a207087889c894a733b3b3c681c09 -Merge: a745213 f6ac929 -Author: janavarro95 -Date: Sat Mar 3 19:19:50 2018 -0800 - - Merge pull request #32 from JohnsonNicholas/master - - Update to convert to SMAPI Content API - -commit f6ac9291f1987225c81910629b532abaf92e71cf -Author: Nicholas Johnson -Date: Fri Mar 2 16:28:07 2018 -0800 - - Update to convert to SMAPI Content API - -commit 4fb792db11ff7912f78ccc595bfd00ea9b3b6ba8 -Author: -Date: Sat Feb 24 01:36:41 2018 -0800 - - Fixed the default non-modular spriter renderer to draw normal npcs again. - -commit 45c5b69ba0e8c02939812f350b37d642337d1eaa -Author: -Date: Sat Feb 24 01:05:58 2018 -0800 - - Updated a constuctor to used the new character sprite class. - -commit fd9f5d97030ce0b2d4474fe7b26f5c8dfb4896e4 -Author: -Date: Sat Feb 24 01:04:35 2018 -0800 - - I think the integration is finished for the custom npc renderer. Who knows though. - -commit b19de2348741455d4f128b83e04c3c83ef2d4e0c -Author: -Date: Fri Feb 23 23:40:34 2018 -0800 - - integrated code to ExtendedNPC that needs to be overwritten to fix the this.sprite issue. - -commit b57a5f506fe9fa9e3bf0b6cd58766ace75d0662f -Author: -Date: Fri Feb 23 23:16:10 2018 -0800 - - Finished base code for basic renderer. Now all I have to do is create the character renderer and AssetManager... - -commit 1fc38b964c3ccc8db2d692313f2b6b8707c95fd8 -Author: -Date: Fri Feb 23 19:10:56 2018 -0800 - - Started work on custom npcs. Can load in new npcs from graphics. They don't do anything but stand there... - -commit 534eda1414c93ab51952cccc3bda3a52fde06ff3 -Author: -Date: Fri Feb 23 13:55:51 2018 -0800 - - finished work on warp events - -commit 44a5887e1b933a34a4165bafb17343b06c8da799 -Author: -Date: Thu Feb 22 15:30:35 2018 -0800 - - Working on mouse button events. - -commit bebcefa76517daa7778275af2df2f27f1657815a -Author: -Date: Thu Feb 22 11:43:18 2018 -0800 - - Started work on new mod to add map events with code. - -commit aa71ab8ec4562bec8889ad8de1986950f83c368e -Author: -Date: Wed Feb 21 13:41:43 2018 -0800 - - Started work on Hex32 class for color conversion because why not. - -commit 1b41fc47e92d2a4a9456e705fc419263a2c380cc -Author: -Date: Tue Feb 6 02:13:21 2018 -0800 - - Made layered texture to be able to have textures on textures. Might be used in the near future. - -commit 13e1d9591ad414f53e15605b37b19d2153fa154c -Author: -Date: Tue Feb 6 01:27:28 2018 -0800 - - Integrated StardustCore with UIUtilities a new framework that makes making menus easier. It adds buttons and TexturedFonts that are loaded in as individual images for each character. Colors can be applied to these chararacters for some nice graphical effects. - -commit ff6456d9ec52c37c8f823e80513259c8662782c5 -Author: -Date: Mon Feb 5 19:07:29 2018 -0800 - - Added in ability to save and load music packs. Needs lots of work. Next step, menus. - -commit 45bfa5731f8b59ab9fbcbf20192b78ab97bb68b1 -Author: -Date: Mon Feb 5 17:31:59 2018 -0800 - - Finished writing functionality for WAV music packs. fixed issue when loading in songs, made sure initial sound keys are propperly loaded, and have implemented support for custom title screen music. - -commit aed71ac4db43297582da31528f4c35e8b18f6674 -Author: -Date: Sat Feb 3 21:11:38 2018 -0800 - - Just some summary tags to explain some functions. - -commit b5b6c2083095cb33c81b0db8c0b89fc8b4e108bd -Author: -Date: Sat Feb 3 20:40:03 2018 -0800 - - Sucessfully loaded in songs with the WAV music packs. Just need to implement functionality in the WAV "packs" - -commit 1fb92f7cf7a1afed1db17d64bd8e231ed3d8c26c -Author: -Date: Sat Feb 3 11:50:56 2018 -0800 - - Finally got XACT music packs to load in again. Next up is loading in WAV files. - -commit a7452139900a589da7b76d3e5cb83dee8358fb2b -Author: janavarro95 -Date: Fri Feb 2 18:37:32 2018 -0800 - - Create ReadMe.md - -commit 575766a03dc89a7fe88d32216fcf9723800f77ec -Author: janavarro95 -Date: Fri Feb 2 18:36:06 2018 -0800 - - Delete Readme.txt - -commit 17cf699e1def6e9727df937996281a2d1c95c56a -Author: janavarro95 -Date: Fri Feb 2 18:35:36 2018 -0800 - - Create Readme.txt - -commit c21c6a4fc1d5e9a9960eb93982e8cbaf7f6c82f0 -Merge: c905457 5426a98 -Author: janavarro95 -Date: Fri Feb 2 18:34:49 2018 -0800 - - Merge pull request #31 from janavarro95/Development - - Development - -commit 5426a98885ef5b2c87a7c35ece0af7a23c1bf23a -Merge: fd962b5 930d982 -Author: -Date: Fri Feb 2 18:34:22 2018 -0800 - - Merge branch 'Development' of https://github.com/janavarro95/Stardew_Valley_Mods into Development - -commit fd962b562dfa85e02a18dc8fe496e6d937df2bbf -Author: -Date: Fri Feb 2 18:33:39 2018 -0800 - - Removed an accidental directory naming from going one level too deep. - -commit c9054570a972f9b2387671c9f0e174309b98218c -Merge: 74a7fa9 930d982 -Author: janavarro95 -Date: Fri Feb 2 18:31:58 2018 -0800 - - Merge pull request #30 from janavarro95/Development - - Merge from Development - -commit 930d982972ec418bfb9ca8ef03d8db209bbffca2 -Merge: b8965d7 74a7fa9 -Author: janavarro95 -Date: Fri Feb 2 18:31:35 2018 -0800 - - Merge branch 'master' into Development - -commit b8965d77e4708ad457270c3ea0da80394a06450b -Author: -Date: Fri Feb 2 18:15:00 2018 -0800 - - More work completed on Symphony remastered and close to finishing loading XACT music packs. Finished new mod CustomAssetModifier that essentially can modify ObjectInformation.xnb information without modifying .xnb files. - -commit 100f43f486739c2be91e04bd16a1b3472f9f7b52 -Author: -Date: Fri Feb 2 14:27:47 2018 -0800 - - Fixed a glitch where you could click the day buttons on the birthday select menu even if they weren't visable. - -commit b72de658a618e7273af3e536a77cf373b1c7d386 -Author: -Date: Tue Jan 30 12:46:04 2018 -0800 - - Work on SymponyRemasteered Music manager to be almost working, and fixed glitch with Happy Birthday when reading legacy save data. - -commit 5b894e32e8b61721111269b857bcb619db33006d -Author: -Date: Sun Jan 28 19:06:36 2018 -0800 - - Updated xwb music pack to be almost complete. Need to do wav and music manager. - -commit 1cd732cf4ed58e863f55829bbc836c99cc90da75 -Author: -Date: Tue Jan 23 01:54:08 2018 -0800 - - Started work on StardewSymphonyRemastered. New features, more options, and a UI are in the works. - -commit efe185e76df43afe5b6b26f8b2d4b7701095880d -Author: -Date: Tue Jan 16 14:34:10 2018 -0800 - - Fixed Revitalize to be compilable again so I can extract the code and make it into other smaller mods. - -commit 74a7fa97cb3483ee812cafa85dd6d340635f0284 -Merge: 8d1d091 c4e92f5 -Author: janavarro95 -Date: Thu Jan 11 15:22:18 2018 -0800 - - Merge pull request #29 from Pathoschild/update-code - - Update manifests + reflection API - -commit c4e92f5cf3b6f2f56cf37872ed9035ef34e108bb -Author: Jesse Plamondon-Willard -Date: Thu Jan 11 00:50:16 2018 -0500 - - update deprecated reflection API - -commit 402c27b29c24c5f01897d20804e70ed88a64fc84 -Author: Jesse Plamondon-Willard -Date: Thu Jan 11 00:43:32 2018 -0500 - - update manifest format - -commit 8d1d09114a297628c32ddfbaf6af8a7f441bcd19 -Merge: 928df83 34c3326 -Author: janavarro95 -Date: Wed Jan 10 13:25:03 2018 -0800 - - Merge pull request #28 from janavarro95/Development - - Forgot to update the manifest - -commit 34c3326dd6333f4984e688999fdce50f921e7119 -Author: -Date: Wed Jan 10 13:24:34 2018 -0800 - - Forgot to udate the manifest - -commit 928df83457a31888a567daa548a341edc31e3289 -Merge: ad2ba95 3b744a4 -Author: janavarro95 -Date: Wed Jan 10 13:17:42 2018 -0800 - - Merge pull request #27 from janavarro95/Development - - Development - -commit 3b744a4f5994ad786ab4362546c4093f1121d9db -Author: -Date: Wed Jan 10 13:14:19 2018 -0800 - - Updated SaveAnywhere to fix the shipping menu not closing leading to errors in saving, and players not swimming when reloading the game. - -commit 2591602239527c8f2ffef246164437c6575d6057 -Author: -Date: Wed Dec 13 20:35:28 2017 -0800 - - Doing live code updates can be bad. Lots of last minute hot-fixes before the project is due. - -commit 4b62f3746e19a37261ebc362498003911c83f27c -Author: -Date: Tue Dec 12 01:38:22 2017 -0800 - - TaskMetaData now displays info about goal and location of the task. - -commit 34d072e7a41d1e1e622d99d5745f9f97bf102430 -Author: -Date: Tue Dec 12 01:19:41 2017 -0800 - - Fixed an NAN error and glitching the interface logic. - -commit b7c76ee0d690f9f692d179b0cbcdad51a41c3050 -Author: -Date: Mon Dec 11 23:32:46 2017 -0800 - - Fixed one away error for debris, and added graphics for pathing. - -commit b4d82f972a4f7a1362e2167ffe02ed7db9bb765c -Author: -Date: Mon Dec 11 14:54:59 2017 -0800 - - Can now fall asleep and open the shipping menu if things have been shipped. - -commit ce355fd2c065ba7dfdd85b72ff75c9376ab44d7e -Author: -Date: Mon Dec 11 13:39:48 2017 -0800 - - Updated the AI to dig dirt and plant seeds. - -commit 2f6d4978da4589b129e3e97969de3575ce36dd47 -Author: -Date: Wed Dec 6 16:36:28 2017 -0800 - - Added functionality to buy seeds and started work on being able to dig out dirt. - -commit 79f2b2d038c333331a423a4b7237c3ca1a2f2bf3 -Author: -Date: Tue Dec 5 16:59:13 2017 -0800 - - hotfix to crop utility menu for component placement. - -commit eb3a1e15091d727560e727326db4e6c508fc6193 -Author: -Date: Tue Dec 5 16:39:34 2017 -0800 - - Made the AI utility functions and interface menu. AI's opinion will be calculated heaviest without user input and heavier the more user input is introduced. - -commit c9f1450ae84705ea371f719223b89f04eba590fa -Author: -Date: Mon Dec 4 23:08:31 2017 -0800 - - made crop utility counting function - -commit 5a03d2bb2bb57ed0c1f4c28b9563d733df15df07 -Author: -Date: Mon Dec 4 12:57:29 2017 -0800 - - Fixed more pathifinding glitches when recalculating paths. - -commit 29238793065b7ee95cd24d49c8a8a0960c21428c -Author: -Date: Sun Dec 3 22:55:23 2017 -0800 - - Updated debris logic for twigs/stones/weeds to use better path finding. - -commit 4fcef655a8bab1fd2a127191a6d110a40db45abe -Author: -Date: Sun Dec 3 17:44:31 2017 -0800 - - Waypoints, pathing in and out of buildings, to specific tiles, and returning home at the end of day. - -commit ea2e7c134f2514c8dae5470c382dc30b5a99b077 -Author: -Date: Sat Dec 2 21:53:30 2017 -0800 - - Fixed a really dumb stack overflow error on pathfinding across the world. THANK YOU. - -commit 31ddb0e7f15984834941f288626ff6998abfbb42 -Author: -Date: Sat Dec 2 15:13:31 2017 -0800 - - Reworked path calculation logic so it can now calculate costs of multiple paths. - -commit 58bb6cb285dc28de4f9ce04acd8051ad57ff3532 -Author: -Date: Fri Dec 1 21:42:44 2017 -0800 - - Made PathTo which allows me to get from one path to another. - -commit 4eea726db3512f4464eac123c382d41678236bf6 -Author: -Date: Fri Dec 1 02:18:37 2017 -0800 - - Pathfinding is now much faster on initial calculation after removing unused delay code. Also can path to adjacent maps. Needs work to chain the effect. - -commit 175a38597703896a9477f2a528fecb48f5ce8db9 -Author: -Date: Fri Dec 1 00:16:53 2017 -0800 - - Added functionality for shipping objects - -commit 3e9d7f6f49c011f324d03e0d60fe57eb47a3fc31 -Author: -Date: Thu Nov 30 16:59:21 2017 -0800 - - Can path to nearest water tile and also if I need to water crops and need water path, get water, and path back to where I was. - -commit 38af511cfd99aca2a56c2fcc13e2ffdd048dd8fc -Author: -Date: Thu Nov 30 16:06:19 2017 -0800 - - Now pathfinds to closest tree possible. Probably want to do the same for the other tasks. - -commit 992ef687e7629b62cd99fef6cf825ebd1719cdda -Author: -Date: Thu Nov 30 11:58:05 2017 -0800 - - Can cut weeds. - -commit 365808a50437f5b5d077e3db826f361cf191123a -Author: -Date: Thu Nov 30 10:45:43 2017 -0800 - - Changed some code to be in SDust Core and now the AI can break stones! - -commit eae0eb82bf72c232a3daff37630fbe9d9f7434df -Author: -Date: Wed Nov 29 23:51:44 2017 -0800 - - Upgraded pathfinding to try and find all 4 cardinal goals simultaneously and whichever one it finds first must be the shortest path. Saves a TON of time as long as there is a path that we can pathfind to and is 4 times faster if there isn't a path at all. - -commit e58ab6ba055fb1fb917772e65579643ec7f525aa -Author: -Date: Wed Nov 29 20:52:23 2017 -0800 - - Fixed overcalculating paths WAY TOO MUCH. - -commit b05ee04e2b8769bffc78d7ea7b6136c4702e744d -Author: -Date: Wed Nov 29 20:06:48 2017 -0800 - - Made the stick choping work and upgraded the pathfinding to store the cheapest path to prevent a TON of crashes and calculation time. - -commit 671eb1be49480afb21d59ef92345021c7f2fdf8a -Author: -Date: Wed Nov 29 18:34:53 2017 -0800 - - RIP can now chop sticks but took HOURS to figure out how. Also if I can't find the path my code becomes vunerable to crash. - -commit ad2ba9527bc86413da30bef0bd61c7bf3137e83d -Author: -Date: Mon Nov 27 23:38:12 2017 -0800 - - Path find through grass and made prereq for making sure I don't stay up too late. - -commit c748f64c2a5902ffbacd509c52663437a2cc37ab -Author: -Date: Mon Nov 27 14:25:31 2017 -0800 - - Made TaskMetaDataStatistics that will help calculate path cost and make isInventoryFull Pre-req - -commit edd769b151d52a52b031507294744923ccf2b961 -Author: -Date: Sun Nov 26 18:20:23 2017 -0800 - - Fixed minor glitch where I would calculate cheapest task too often. - -commit e44ec0ee5be78565306a351cd62d40949690d015 -Author: -Date: Sun Nov 26 18:11:04 2017 -0800 - - Updates execution of tasks, added taskMetaData, (which is a lot) some pre-requisites, and chests show seeds. - -commit 069a6a5e8bf250f80751988cf25a1346ae210dcf -Author: -Date: Fri Nov 24 20:05:34 2017 -0800 - - Forgot to include logic to get low grade seeds from chest. (Though I'm sure it would have worked fine anyways). - -commit de15a965f54d3ab4e68dcf50f381c086f9cc7f47 -Author: -Date: Fri Nov 24 19:56:10 2017 -0800 - - Added functionality to path to chest and pull seasonal seeds from it. - -commit cf3a77d9dee77d450e7180fcb40b0ba838b1518c -Author: -Date: Fri Nov 24 13:42:35 2017 -0800 - - Pathfind fixes - -commit 836d6861d89f13537b142ab82c9fa28f88cf5bc2 -Author: -Date: Fri Nov 24 13:12:36 2017 -0800 - - I guess fixing pathfind and spritebatch errors. - -commit e51a8fbac5d91e1bd78db5ae0d86a603875ef315 -Author: -Date: Fri Nov 24 11:21:03 2017 -0800 - - Changed from system tasks system to delegate system that made more sense but not really??? Also still dealing with nasty issue of sprite batch error but atleast now I can harvest crops. - -commit 0c860a1516b7f8de1fe9da1848733fc5528a8d6b -Author: -Date: Thu Nov 23 16:42:28 2017 -0800 - - Water all crops works correctly and now is stored in the execution list. Need to make some metadata for tasks and some statistics fr weights and stuff. - -commit e95ffa45db405bceb76366c4613ed5f3650b45a8 -Author: -Date: Thu Nov 23 12:56:49 2017 -0800 - - Working on watering functionality for AI - -commit b17d56a51b97970e7c9099460c8c32ccad277b15 -Merge: 1a2295e fefea5f -Author: -Date: Thu Nov 23 00:53:00 2017 -0800 - - Merge branch 'master' of https://github.com/janavarro95/Stardew_Valley_Mods - -commit 1a2295e84e55ffce62b289bf03237369255af245 -Author: -Date: Thu Nov 23 00:51:50 2017 -0800 - - Almost got crop watering code working. Need to get simulated presses working and proper tile targeting - -commit fefea5f26ad864d46b3a97fb473ec9da1ade8f18 -Author: janavarro95 -Date: Wed Nov 22 19:43:37 2017 -0800 - - Update README.md - -commit b28c253d0fba261250eed2671ac41afa6bff947b -Author: janavarro95 -Date: Wed Nov 22 19:38:39 2017 -0800 - - Update README.md - -commit c7c65e06decac2e8686232ac5ebaa16ca989099d -Author: -Date: Mon Nov 20 03:53:33 2017 -0800 - - Commit the good stuff. Fixed multipath finding recursing over goals. - -commit d4470e0ebb1364fa5ee6cc4bab87ceeb7b75a778 -Author: -Date: Mon Nov 20 01:54:33 2017 -0800 - - Changes to pathTo to work better than addTask for some reason. Not 100% sure but will figure it out. - -commit ac4a7e5a8a9d9b81646915b6a213452e3a947aa1 -Author: -Date: Mon Nov 20 01:03:21 2017 -0800 - - Fixed the large amounts of lag that happened during movement and key presses. - -commit 12ea388897cbdce5abba9cd853f8bd026b3a03c6 -Author: -Date: Sun Nov 19 22:32:24 2017 -0800 - - Started working on Execution task list that will queue up different tasks for the AI to do and execute them in order. - -commit 1d0b0a6b16bfbee40ed49db9c449d9fd9667908a -Author: -Date: Sun Nov 19 21:20:41 2017 -0800 - - Added functionality to add multiple goals and path to each on in sequence from one another. - -commit cd0ac16a2272f64adefec3218a78b7a85c893c7f -Author: -Date: Sun Nov 19 17:00:12 2017 -0800 - - Fined tuned some pathfinding stuff b adding pathTo and Delay functions. As long as I don't have to cross a bridge pathfinding works. - -commit d722144c21a5a6cf6c17ad8aa11bf0f71e6307d2 -Author: -Date: Fri Nov 17 02:50:22 2017 -0800 - - Finished BFS path finding and added in animations for the path. Also updated Animation Manager to be able to take multiple frames of animation per single animation set now. - -commit fa3c4389ae39cb1f5e0c6ff9344e54130e9bcd59 -Author: -Date: Thu Nov 16 23:07:30 2017 -0800 - - Added Illumination framework to stardust for different colors, and made BFS path finding work for StarAI! - -commit a12250b8cc06dab460ad119828c99041d84bebc0 -Author: -Date: Thu Nov 16 10:29:02 2017 -0800 - - Stared work on tileObject that will depict what is occuring with path finding and planning. - -commit 28421f07ffa389b2e42c6dabe3f4403b60bb01e0 -Author: -Date: Thu Nov 16 03:47:02 2017 -0800 - - Updated all mods to use most recent version of pathos netgu package and started work on StarAI for CS146 Game AI - -commit 170c12e750cc0424960205176e6301a50b2e4a09 -Merge: 71c846a 1868dd4 -Author: janavarro95 -Date: Wed Oct 11 18:14:28 2017 -0700 - - Merge pull request #24 from Pathoschild/update-code - - Update new mods for SMAPI 2.0, enable update checks - -commit 1868dd4bd95ba0e19b5c5db15ec706c4c056e531 -Author: Jesse Plamondon-Willard -Date: Wed Oct 11 16:20:46 2017 -0400 - - update for release - -commit 16d5461a4e7105fa14262e5e836a614e5146ee3f -Author: Jesse Plamondon-Willard -Date: Wed Oct 11 16:09:12 2017 -0400 - - standardise SimpleSoundManager entry class & prevent other mods from accessing its mod helper - -commit 3e01276c56d04cf8d16048deec0e40ffbb55a578 -Author: Jesse Plamondon-Willard -Date: Wed Oct 11 16:06:26 2017 -0400 - - add readme for SimpleSoundManager - -commit 344058de8866aeb9dcb0e23433fb876f46ecabf3 -Author: Jesse Plamondon-Willard -Date: Wed Oct 11 15:57:36 2017 -0400 - - enable update checks in SMAPI 2.0 - -commit 3ab404499519cbb3be546395a61686c0df647c60 -Author: Jesse Plamondon-Willard -Date: Wed Oct 11 15:55:59 2017 -0400 - - update deprecated code - -commit 76bd5b7f337fb8959718ccf233997bb020539c8f -Author: Jesse Plamondon-Willard -Date: Wed Oct 11 15:45:48 2017 -0400 - - fix project references - -commit 4393b6318c65d5af75325eb3e9f79947902cc52a -Author: Jesse Plamondon-Willard -Date: Wed Oct 11 15:45:29 2017 -0400 - - update to mod build package 2.0 - -commit 71c846acc5d6d8585977244fe9516ea2c277be69 -Author: -Date: Wed Sep 27 19:06:41 2017 -0700 - - Implemente correct interaction range with planter boxes. - -commit bce270d6ce599dda19552676d13ab2cb395465f0 -Author: -Date: Wed Sep 27 18:17:45 2017 -0700 - - Updated PlanterBox to correctly draw crops when held and in the menu. Planter boxes also are auto-watered by rain. - -commit a67a4d7380557994466661688d520ff194b03e4c -Author: -Date: Fri Sep 15 11:15:51 2017 -0700 - - Fixed animation glitch when harvesting crops, and now draw green + when crops are fully grown. - -commit f0e1e696f9f465e48d958735dbd1a6cee7b13537 -Author: -Date: Thu Sep 14 13:49:19 2017 -0700 - - Made Planter Boxes be a possible greenhouse, self watering, dead crops work again and are removed automatical per mod config, and dead crops can be removed by tools. - -commit 9888dacd22c089ec7a3a4d2c07361e04f2a43959 -Author: -Date: Wed Sep 13 17:11:05 2017 -0700 - - Stuff serializes into chests - -commit cf33b0228e3d4bb79f222a82fd0fd439e47b6e36 -Author: -Date: Wed Sep 13 13:53:12 2017 -0700 - - Changed serialization manager, all objects serialize in world and inventory. Next is chests. - -commit b3193b52fcd1c6712a43bad8eaf9b66d58ff899f -Author: -Date: Wed Sep 13 10:52:27 2017 -0700 - - Fixed regular crops to grow now, and now can propperly harvest crops that don't regrow. - -commit dcafabcaa0b4e429e019d81218fdf56578fb0269 -Author: -Date: Wed Sep 13 02:39:50 2017 -0700 - - Added in a custom shipping menu for coreObjects. Called before normal shipping menu. Modded crops can be harvested. Need to fix regular crops. - -commit 37fc678d449cbd77c617fc309dfa2d897d2b4e87 -Author: -Date: Tue Sep 12 17:00:36 2017 -0700 - - Added in the content to start being released with the mod. Still have some things to do such as crop growth/harvesting and serializing everything else. Also added in appropriate functionality for when planterboxes are watered. - -commit 2ebe3f981ae9102440a86e45263659c0397f4f81 -Author: -Date: Tue Sep 12 16:30:30 2017 -0700 - - Finished animation manager to work on animating things it is attached to. Serialize/Deserialize will be handled by each mod object. Changed files from AdditionalCrops to be hosted in R.F.CropsMod as proof that AdditionalCrops can be extended upon. - -commit a67baa4c095ec449cfd75dca1136a2c5c8831a54 -Author: -Date: Tue Sep 12 11:20:18 2017 -0700 - - Updates Stardust.metadata to work correctly in InventoryMenu, and ItemGrabMenu context. It shows the origin mod source of the item, and what class that item is. Hopefully will be useful for future modders. - -commit 3111f8bad09da020008f69154643bd41a4836a05 -Author: -Date: Mon Sep 11 23:39:59 2017 -0700 - - Updated Stardust with functionality to get MetaData about what mod an item belongs to. Useful for all modders and players who may wonder about origin of future objects. - -commit 28af12174800b668da086caabf7f7e72bd5d0575 -Author: -Date: Mon Sep 11 18:35:31 2017 -0700 - - Adding in Animation manager to animate objects. Also updating Stardust to be able to display info for objects from mods such as what mod an object is from. - -commit 6437efe2cf792d122ac644e2d5f0f967c60e60cb -Author: -Date: Mon Sep 11 12:58:46 2017 -0700 - - Updated AdditionalCropsFramework to properly serialize and deserialze the crops in the planterbox object. - -commit fa5970661b0aa907616533e5c38c6ea2855500a3 -Author: -Date: Tue Sep 5 04:13:42 2017 -0700 - - Moved around soem files, made a core library mod that will include a bunch of things in the future. For the moment, a custom serializer/deserializer. Implemented it with AdditionalCrops. Needs some more work. - -commit 4fd79dae21299f0f8f2b90cb8655cfbb1c199cfd -Author: -Date: Tue Aug 22 17:45:30 2017 -0700 - - Started AdditionalCropsFramework. Addedin proof for modded crop seeds, seed bags, (crop objects? needs testing) and planter boxes. Still more to do. - -commit 4c52e557177a841f53e3dcf856f11122c287abd8 -Author: janavarro95 -Date: Mon Aug 21 16:29:24 2017 -0700 - - Create Readme.txt - -commit 9aca5b19d3443f5360b1df24a6db4f5b31c98161 -Author: -Date: Mon Aug 21 16:28:41 2017 -0700 - - Small comment update - -commit 01c3822a8797faaf9882a9d2ba7d868e6c3941c9 -Author: -Date: Mon Aug 21 16:18:21 2017 -0700 - - Made SimpleSoundManager for allowing mods to be able to use custom sounds when things happen. Also made an example mod for it. - -commit 3ed8072436cbe76054837427d43b651165cf20ce -Author: -Date: Sun Aug 20 10:38:59 2017 -0700 - - Fixed glitch with Save Anywhere where saving in a building on a farm wouldn't warp you correctly back to the location when loading again. - -commit c4d7e7500b807e1b802c8d1e7120097280147267 -Author: -Date: Sun Aug 6 01:21:18 2017 -0700 - - Updating revitalize. Modular furniture can be placed. Now how to remove it... - -commit 7089475d46488cd47012f9bf883d0a9818211886 -Merge: 80c4633 5396d11 -Author: janavarro95 -Date: Sat Aug 5 21:59:33 2017 -0700 - - Merge pull request #22 from Pathoschild/save-anywhere-fixes - - Overhaul Save Anywhere file format, various fixes - -commit 5396d11675df03e215f576421d36bda206ac77e3 -Author: Jesse Plamondon-Willard -Date: Sat Aug 5 23:46:29 2017 -0400 - - add missing release note - -commit cf5a01bf413b764491c44880fa3f9cec66af5466 -Author: Jesse Plamondon-Willard -Date: Sat Aug 5 23:38:07 2017 -0400 - - fix bug in non-vanilla save detection - -commit 146d79d3b75a544717de064e57fa244e9e110f3b -Author: Jesse Plamondon-Willard -Date: Sat Aug 5 23:23:46 2017 -0400 - - add a few missing release notes - -commit 3a9bfd177d3d4402a0619ce2b6d97763d6c370b9 -Author: Jesse Plamondon-Willard -Date: Sat Aug 5 23:22:15 2017 -0400 - - fix save crash in the community center when Junimos are present (#11) - -commit fad849f80062a6a93f76e9177b6990140ef2b563 -Author: Jesse Plamondon-Willard -Date: Sat Aug 5 23:20:48 2017 -0400 - - migrate Save Anywhere to SMAPI's config API - -commit c980d587a8dfc123492477ea46ff083196cc510d -Author: Jesse Plamondon-Willard -Date: Sat Aug 5 23:19:38 2017 -0400 - - overhaul Save Anywhere data format, add facing direction - -commit 26aa5530ca09d74b02b74d479f7e98cf835c6261 -Author: Jesse Plamondon-Willard -Date: Sat Aug 5 23:17:51 2017 -0400 - - fix issue where loading a game after sleeping warps player back to last custom save (#12, #15) - -commit 80c4633e9968422c712b218908fbc5b300b205de -Merge: 6ed1bf6 e43f3bf -Author: janavarro95 -Date: Sat Aug 5 20:15:45 2017 -0700 - - Merge pull request #21 from Pathoschild/reimplement-no-more-pets - - Reimplement NoMorePets - -commit 6ed1bf61a40a432b557a5492babff0cb229648ed -Merge: fec79ee 81af6a4 -Author: janavarro95 -Date: Sat Aug 5 20:15:30 2017 -0700 - - Merge pull request #20 from Pathoschild/fix-autospeed-default - - Tweak AutoSpeed's default speed - -commit fec79eee5801d1f1cbbf71f18260c22d32b2181f -Merge: f5069f8 cec3523 -Author: janavarro95 -Date: Sat Aug 5 20:15:15 2017 -0700 - - Merge pull request #19 from Pathoschild/fix-exit-to-title - - Fix exit to title - -commit e43f3bf160a19733d1786808cab5d9727c60a3a1 -Author: Jesse Plamondon-Willard -Date: Sat Aug 5 23:08:42 2017 -0400 - - reimplement NoMorePets to simplify code & fix bugs - -commit 81af6a4767b7753c2e743b340b2fe8c4bec5673b -Author: Jesse Plamondon-Willard -Date: Sat Aug 5 23:08:11 2017 -0400 - - fix AutoSpeed config defaulting to normal walking speed - -commit cec352336cf8bdfa937adedd014d7d5f9faa93db -Author: Jesse Plamondon-Willard -Date: Sat Aug 5 23:00:37 2017 -0400 - - fix issues when player exits to title - -commit f5069f8ca56acca5e38ef830b9f4adfe74fd9ca7 -Merge: 21d3a16 2a5c17f -Author: janavarro95 -Date: Sat Aug 5 16:27:18 2017 -0700 - - Merge pull request #18 from Pathoschild/simplify-config - - Simplify config/data parsing using SMAPI APIs - -commit 2a5c17ff2fafe9285d239b4095076da75077446a -Author: Jesse Plamondon-Willard -Date: Sat Aug 5 15:51:44 2017 -0400 - - replace manual file parsing with SMAPI's APIs - -commit 9257605595c8e6a172a9db3087ca0ba8b3e4822d -Author: Jesse Plamondon-Willard -Date: Sat Aug 5 15:49:27 2017 -0400 - - replace manual JSON parsing with SMAPI's config API - -commit 21d3a165a50c6634355d61ecc586843b47d5d989 -Merge: fc7aff3 b201863 -Author: janavarro95 -Date: Sat Aug 5 12:47:41 2017 -0700 - - Merge pull request #17 from Pathoschild/update-code - - Update for SMAPI 2.0 and simplify code using new APIs - -commit b201863cd27d18b3ab66cf1be57eff0de7f0fab0 -Author: Jesse Plamondon-Willard -Date: Sat Aug 5 15:36:00 2017 -0400 - - bump mod versions for release - -commit 69798daae10e226ae4a429b460eb62c3f8b016bb -Author: Jesse Plamondon-Willard -Date: Sat Aug 5 15:24:01 2017 -0400 - - use SMAPI's reflection API to access private fields & methods - - It takes care of caching, validation, etc. - -commit 9526d90dbf19223ad4a1fd42e7fee1bfa8a2f287 -Author: Jesse Plamondon-Willard -Date: Sat Aug 5 15:23:33 2017 -0400 - - fix uses of Console.WriteLine - -commit 8fd29a88715aa4a7289710821d6915469c6b8bc0 -Author: Jesse Plamondon-Willard -Date: Sat Aug 5 15:23:10 2017 -0400 - - simplify context checks using new SMAPI features - -commit a03da96aa83a8c9b7f968f85fd82ae7bdb823169 -Author: Jesse Plamondon-Willard -Date: Sat Aug 5 15:20:46 2017 -0400 - - fix compatibility with SMAPI 2.0 - -commit 0f333877561111819060ac3bc78d4b99b280c7f5 -Author: Jesse Plamondon-Willard -Date: Sat Aug 5 15:20:15 2017 -0400 - - update release notes - -commit dc62581ddfa2d8bc57504bbd8789ff9e35311ed5 -Author: Jesse Plamondon-Willard -Date: Sat Aug 5 15:19:45 2017 -0400 - - correct manifest versions - -commit 0af7cf45620df579fdc07e74bfafbdd7a852f559 -Author: Jesse Plamondon-Willard -Date: Sat Aug 5 15:19:24 2017 -0400 - - standardise manifests - -commit fc7aff35645235bb31957d7a80168027777b999c -Merge: c5f2ae0 23270ed -Author: janavarro95 -Date: Sat Aug 5 10:02:24 2017 -0700 - - Merge pull request #16 from Pathoschild/refactor - - Refactor mod code & add READMEs - -commit 23270ed54328b1f557262c20c14506e2941edd29 -Author: Jesse Plamondon-Willard -Date: Thu Aug 3 21:05:48 2017 -0400 - - disable new log message in Save Anywhere that spams errors - -commit 7d84f5d64f6ffcaa338ff2c63504b61c347e92f5 -Author: Jesse Plamondon-Willard -Date: Thu Aug 3 19:43:40 2017 -0400 - - minor cleanup in Stardew Symphony code - -commit 7fe227bd78a3eb3cbd03007d6541b6d75328be93 -Author: Jesse Plamondon-Willard -Date: Mon Jul 31 01:24:31 2017 -0400 - - add GlobalAssemblyInfo.cs - -commit 962360579e381bd5878d5bc10b77a13c4b776cc3 -Author: Jesse Plamondon-Willard -Date: Mon Jul 31 01:15:45 2017 -0400 - - clean up config/data file parsing a bit, fix redundant code - -commit cf86505338ea87035d7d3b259ce2d19d29fd5aab -Author: Jesse Plamondon-Willard -Date: Mon Jul 31 01:01:26 2017 -0400 - - remove unneeded build output - -commit 3c43972fdbd0ec36a14ab1f9c5fbed9eabee2f61 -Author: Jesse Plamondon-Willard -Date: Mon Jul 31 00:56:32 2017 -0400 - - add main README and per-mod READMEs - -commit 9d363573956d3892734da302a20274c9bf01c621 -Author: Jesse Plamondon-Willard -Date: Sun Jul 30 23:10:15 2017 -0400 - - remove compiled file - -commit 49f2c0e8d03db319108b7a2648f97aa1b5d6db89 -Author: Jesse Plamondon-Willard -Date: Sun Jul 30 23:09:39 2017 -0400 - - move Revitalize readme into its folder - -commit e214952305226170976bcb99ab835e76cf6aae02 -Author: Jesse Plamondon-Willard -Date: Sun Jul 30 23:07:07 2017 -0400 - - update filenames to class type names, move internal code into framework namespace - -commit 62bc47d02db4ed9a7409d756fc0ac8ec69cfb700 -Author: Jesse Plamondon-Willard -Date: Sun Jul 30 22:55:58 2017 -0400 - - refactor SaveAnywhere's main class - - This commit formats/documents/simplifies code, standardises naming conventions, removes unused code, decouples classes, etc. - -commit c14f7c8b2424041aa69b2e804f40e24f06f47b54 -Author: Jesse Plamondon-Willard -Date: Sun Jul 30 21:58:48 2017 -0400 - - refactor SaveAnywhere utilities & simplify save/load logic - - This commit formats/documents/simplifies code, standardises naming conventions, removes unused code, decouples classes, etc. - -commit e88bc4615b154e3a58515c42fa32ef7d27f20e83 -Author: Jesse Plamondon-Willard -Date: Sun Jul 30 18:26:22 2017 -0400 - - reimplement SaveAnywhere's shipping menu to avoid duplicating game logic - -commit 9fc6a3c3f92aa80fef553c2e91e68f5fc38b1c12 -Author: Jesse Plamondon-Willard -Date: Sun Jul 30 17:57:00 2017 -0400 - - make SaveAnywhere's utilities non-static - -commit 5a7bac7ea55ba1a2f2936ddef3ef5eda45e72169 -Author: Jesse Plamondon-Willard -Date: Sun Jul 30 17:42:15 2017 -0400 - - unify SaveAnywhere's save utilities - -commit d99a45144ed18e699faa48ca7df15d26fc52b680 -Author: Jesse Plamondon-Willard -Date: Sun Jul 30 02:45:00 2017 -0400 - - fix some mod files not being deployed - -commit 1846b7e570b63cb60ee0915c758e7147daf54618 -Author: Jesse Plamondon-Willard -Date: Sun Jul 30 02:43:37 2017 -0400 - - refactor StardewSymphony to unify duplicated per-season logic - -commit 698f5d84986e089b2fd55b27b469c52c7ad6bf0b -Author: Jesse Plamondon-Willard -Date: Sun Jul 30 01:44:38 2017 -0400 - - refactor StardewSymphony - - This commit formats/documents/simplifies code, standardises naming conventions, removes unused code, etc. - -commit 916722fe4ce5647110dc072181c82238cf8daa24 -Author: Jesse Plamondon-Willard -Date: Sat Jul 29 22:55:10 2017 -0400 - - refactor TimeFreeze - - This commit formats/documents/simplifies code, standardises naming conventions, etc. - -commit 8f836be9972876ed74a545b1384c325ca39db75d -Author: Jesse Plamondon-Willard -Date: Sat Jul 29 20:53:26 2017 -0400 - - refactor SaveBackup - - This commit formats/documents/simplifies code, standardises naming conventions, etc. - -commit db9cda9e8b6ef7238c3aad4044b742fe827739e2 -Author: Jesse Plamondon-Willard -Date: Sat Jul 29 20:03:22 2017 -0400 - - refactor NoMorePets - - This commit formats/documents/simplifies code, standardises naming conventions, etc. - -commit a71aeb5147399233f675eb82d7a00c6dce7c609a -Author: Jesse Plamondon-Willard -Date: Sat Jul 29 19:59:16 2017 -0400 - - refactor NightOwl - - This commit formats/documents/simplifies code, standardises naming conventions, removes redundant code, etc. - -commit 022f12e1ed56cb2b6278b5dc5b819e8a229cfbf2 -Author: Jesse Plamondon-Willard -Date: Sat Jul 29 18:16:23 2017 -0400 - - refactor MoreRain - - This commit formats/documents/simplifies code, standardises naming conventions, etc. - -commit 62dc662da416de1eb96cb03d9f40cc6b366453f6 -Author: Jesse Plamondon-Willard -Date: Sat Jul 29 18:02:49 2017 -0400 - - refactor HappyBirthday - - This commit formats/documents/simplifies code, standardises naming conventions, removes unused code, comments out unreachable code, etc. - -commit a6f27c1c72429cf6041ab5d724defdcf684236c0 -Author: Jesse Plamondon-Willard -Date: Sat Jul 29 14:29:05 2017 -0400 - - refactor Fall28SnowDay - - This commit formats/documents/simplifies code, standardises naming conventions, etc. - -commit fa36c03028078fc4df6f86beca86799f75ba0329 -Author: Jesse Plamondon-Willard -Date: Sat Jul 29 14:28:23 2017 -0400 - - refactor DailyQuestAnywhere - - This commit formats/documents/simplifies code, standardises naming conventions, etc. - -commit a498fcd62a2a0816e2d324b0dd97dab6e59dd4a0 -Author: Jesse Plamondon-Willard -Date: Sat Jul 29 14:24:47 2017 -0400 - - refactor CustomShopsRedux GUI - - This commit formats/documents/simplifies code, standardises naming conventions, comments out unused code, etc. - -commit 6c2555d7484ef05c8225fd3814bb427a5a1773dd -Author: Jesse Plamondon-Willard -Date: Sat Jul 29 14:18:46 2017 -0400 - - refactor BuyBackCollectables - - This commit formats/documents/simplifies code, standardises naming conventions, removes unused code, etc. - -commit 18fc258f8009f7a3eaf4294fce29732d830357d9 -Author: Jesse Plamondon-Willard -Date: Sat Jul 29 14:05:24 2017 -0400 - - refactor BuildEndurance and BuildHealth - - This commit formats/documents/simplifies code, standardises naming conventions, splits Config into its own file, etc. - -commit 935ad499afed403314c7d33802250e613292cac3 -Author: Jesse Plamondon-Willard -Date: Sat Jul 29 13:54:26 2017 -0400 - - refactor BillboardAnywhere - - This commit formats/documents/simplifies code, standardises naming conventions, etc. - -commit bd07b482d61a7df0e927f97aff7611c90de73bb9 -Author: Jesse Plamondon-Willard -Date: Sat Jul 29 13:47:19 2017 -0400 - - refactor AutoSpeed - - This commit formats/documents/simplifies code, standardises naming conventions, etc. - -commit 7d7f7abe2ef3582618c8e39b779e3961b59bff58 -Author: Jesse Plamondon-Willard -Date: Sat Jul 29 13:30:04 2017 -0400 - - refactor Museum Rearranger - - This commit simplifies the code by overriding the base MuseumMenu instead of redefining it, formats/documents/simplifies code, standardises naming conventions, etc. - -commit c5f2ae0cbdf4a81efb0825ffe2bed91437dafa90 -Merge: 2f3a1df 0ac43b2 -Author: janavarro95 -Date: Thu Jul 27 21:54:36 2017 -0700 - - Merge pull request #14 from Pathoschild/revamp-project-structure - - Revamp general mods structure, and simplify editing & deployment - -commit 0ac43b2541cdde76ca44952a42a7f62333472730 -Author: Jesse Plamondon-Willard -Date: Fri Jul 28 00:45:36 2017 -0400 - - only create release zips when building in release mode - -commit 87729915480b703d8b4937cd9e6fa5af01b20e7a -Author: Jesse Plamondon-Willard -Date: Fri Jul 28 00:26:09 2017 -0400 - - replace packaging script with new build config package feature - -commit f907a18d63090fcc2ad0c1cfe36a863b98480173 -Author: Jesse Plamondon-Willard -Date: Fri Jul 28 00:16:26 2017 -0400 - - centralise deploy configuration - -commit f94936b76f7d3376e74d8c06dd2af72fbbdf7086 -Author: Jesse Plamondon-Willard -Date: Thu Jul 27 20:28:39 2017 -0400 - - standardise namespaces - -commit 9d141837962553e65e7ac4e77f2653534328eab8 -Author: Jesse Plamondon-Willard -Date: Thu Jul 27 20:21:29 2017 -0400 - - fix hardcoded reference to Json.NET - -commit f5f32206f5e682f256696b1d82a1bb34f4171825 -Author: Jesse Plamondon-Willard -Date: Thu Jul 27 20:18:36 2017 -0400 - - use latest mod build config package, simplify references & deployment - -commit 2470bbc361d4ecbfc124834e1dc9e46e79124a49 -Author: Jesse Plamondon-Willard -Date: Thu Jul 27 20:18:19 2017 -0400 - - simplify project structure & unify mod solutions - - This commit combines the general mods into one solution, removes compiled/generated files, and standardises the project names. - -commit 2f3a1df33f2fe3c2889975b65edf916b7ad821f9 -Author: janavarro95 -Date: Thu Jul 13 20:30:57 2017 -0700 - - Update README.md - -commit 4e5505552b001a1d32196f570e8e1c8ea1385352 -Author: -Date: Thu Jul 13 20:27:48 2017 -0700 - - A big boring update to attempt tp streamline my own personal modding in the future. Also renames some files because the old names were awful. From fe007a7e33c9baf6c39fca030be1696b98b6d9a3 Mon Sep 17 00:00:00 2001 From: Date: Wed, 5 Dec 2018 17:16:28 -0800 Subject: [PATCH 082/110] Updated to SMAPI 2.8. Working through compatibility currently. Updates to Happy Birthday next. --- .../AdditionalCropsFramework.csproj | 6 +- .../AdditionalCropsFramework/packages.config | 2 +- .../AdvancedSaveBackup.csproj | 6 +- .../AdvancedSaveBackup/packages.config | 2 +- GeneralMods/AutoSpeed/AutoSpeed.csproj | 6 +- GeneralMods/AutoSpeed/packages.config | 2 +- .../BillboardAnywhere.csproj | 6 +- GeneralMods/BillboardAnywhere/packages.config | 2 +- .../BuildEndurance/BuildEndurance.csproj | 6 +- GeneralMods/BuildEndurance/packages.config | 2 +- GeneralMods/BuildHealth/BuildHealth.csproj | 6 +- GeneralMods/BuildHealth/packages.config | 2 +- .../BuyBackCollectables.csproj | 6 +- .../BuyBackCollectables/packages.config | 2 +- .../CustomNPCFramework.csproj | 6 +- .../CustomNPCFramework/packages.config | 2 +- .../CustomShopsRedux/CustomShopsRedux.csproj | 6 +- GeneralMods/CustomShopsRedux/packages.config | 2 +- .../DailyQuestAnywhere.csproj | 6 +- .../DailyQuestAnywhere/packages.config | 2 +- .../DebugSandBoxAndReferences.csproj | 6 +- .../DebugSandBoxAndReferences/packages.config | 2 +- .../Fall28SnowDay/Fall28SnowDay.csproj | 6 +- GeneralMods/Fall28SnowDay/packages.config | 2 +- .../FarmersMarketStall.csproj | 6 +- .../FarmersMarketStall/packages.config | 2 +- .../HappyBirthday/Framework/ModConfig.cs | 6 + GeneralMods/HappyBirthday/GiftManager.cs | 352 ++++++++++++++++++ GeneralMods/HappyBirthday/HappyBirthday.cs | 318 +--------------- .../HappyBirthday/HappyBirthday.csproj | 6 +- GeneralMods/HappyBirthday/PossibleGifts.cs | 75 ---- GeneralMods/HappyBirthday/packages.config | 2 +- GeneralMods/MapEvents/EventSystem.csproj | 6 +- GeneralMods/MapEvents/packages.config | 2 +- GeneralMods/MoreRain/MoreRain.csproj | 6 +- GeneralMods/MoreRain/packages.config | 2 +- .../MuseumRearranger/MuseumRearranger.csproj | 6 +- GeneralMods/MuseumRearranger/packages.config | 2 +- GeneralMods/NightOwl/NightOwl.csproj | 6 +- GeneralMods/NightOwl/packages.config | 2 +- GeneralMods/NoMorePets/NoMorePets.csproj | 6 +- GeneralMods/NoMorePets/packages.config | 2 +- GeneralMods/SaveAnywhere/SaveAnywhere.csproj | 6 +- GeneralMods/SaveAnywhere/packages.config | 2 +- .../SimpleSoundManager.csproj | 6 +- .../SimpleSoundManager/packages.config | 2 +- .../StardewSymphonyRemastered.csproj | 6 +- .../StardewSymphonyRemastered/packages.config | 2 +- GeneralMods/StardustCore/StardustCore.csproj | 6 +- GeneralMods/StardustCore/packages.config | 2 +- .../SundropMapEvents/SundropMapEvents.csproj | 6 +- GeneralMods/SundropMapEvents/packages.config | 2 +- GeneralMods/TimeFreeze/TimeFreeze.csproj | 6 +- GeneralMods/TimeFreeze/packages.config | 2 +- .../UnifiedSaveCore/AUnifiedSaveCore.csproj | 8 +- .../UnifiedSaveCore/Framework/ChestHandler.cs | 26 ++ .../Framework/ObjectHandler.cs | 75 ++++ GeneralMods/UnifiedSaveCore/ModCore.cs | 2 + GeneralMods/UnifiedSaveCore/packages.config | 2 +- .../Vocalization/Vocalization.csproj | 10 +- .../Vocalization/Vocalization/packages.config | 2 +- 61 files changed, 593 insertions(+), 483 deletions(-) create mode 100644 GeneralMods/HappyBirthday/GiftManager.cs delete mode 100644 GeneralMods/HappyBirthday/PossibleGifts.cs create mode 100644 GeneralMods/UnifiedSaveCore/Framework/ChestHandler.cs create mode 100644 GeneralMods/UnifiedSaveCore/Framework/ObjectHandler.cs diff --git a/GeneralMods/AdditionalCropsFramework/AdditionalCropsFramework.csproj b/GeneralMods/AdditionalCropsFramework/AdditionalCropsFramework.csproj index 7fce171c..9f500eed 100644 --- a/GeneralMods/AdditionalCropsFramework/AdditionalCropsFramework.csproj +++ b/GeneralMods/AdditionalCropsFramework/AdditionalCropsFramework.csproj @@ -100,15 +100,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/GeneralMods/AdditionalCropsFramework/packages.config b/GeneralMods/AdditionalCropsFramework/packages.config index 6766c23b..b8b15c8e 100644 --- a/GeneralMods/AdditionalCropsFramework/packages.config +++ b/GeneralMods/AdditionalCropsFramework/packages.config @@ -1,5 +1,5 @@  - + \ No newline at end of file diff --git a/GeneralMods/AdvancedSaveBackup/AdvancedSaveBackup.csproj b/GeneralMods/AdvancedSaveBackup/AdvancedSaveBackup.csproj index 32b1ccda..eeae3c37 100644 --- a/GeneralMods/AdvancedSaveBackup/AdvancedSaveBackup.csproj +++ b/GeneralMods/AdvancedSaveBackup/AdvancedSaveBackup.csproj @@ -87,15 +87,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/GeneralMods/AdvancedSaveBackup/packages.config b/GeneralMods/AdvancedSaveBackup/packages.config index 87b1c41e..af793ad3 100644 --- a/GeneralMods/AdvancedSaveBackup/packages.config +++ b/GeneralMods/AdvancedSaveBackup/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/GeneralMods/AutoSpeed/AutoSpeed.csproj b/GeneralMods/AutoSpeed/AutoSpeed.csproj index f73cb848..23545179 100644 --- a/GeneralMods/AutoSpeed/AutoSpeed.csproj +++ b/GeneralMods/AutoSpeed/AutoSpeed.csproj @@ -85,15 +85,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/GeneralMods/AutoSpeed/packages.config b/GeneralMods/AutoSpeed/packages.config index 87b1c41e..af793ad3 100644 --- a/GeneralMods/AutoSpeed/packages.config +++ b/GeneralMods/AutoSpeed/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/GeneralMods/BillboardAnywhere/BillboardAnywhere.csproj b/GeneralMods/BillboardAnywhere/BillboardAnywhere.csproj index ca00eaec..a3638df8 100644 --- a/GeneralMods/BillboardAnywhere/BillboardAnywhere.csproj +++ b/GeneralMods/BillboardAnywhere/BillboardAnywhere.csproj @@ -87,15 +87,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/GeneralMods/BillboardAnywhere/packages.config b/GeneralMods/BillboardAnywhere/packages.config index 87b1c41e..af793ad3 100644 --- a/GeneralMods/BillboardAnywhere/packages.config +++ b/GeneralMods/BillboardAnywhere/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/GeneralMods/BuildEndurance/BuildEndurance.csproj b/GeneralMods/BuildEndurance/BuildEndurance.csproj index 2d297b06..0fd10fa4 100644 --- a/GeneralMods/BuildEndurance/BuildEndurance.csproj +++ b/GeneralMods/BuildEndurance/BuildEndurance.csproj @@ -86,15 +86,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/GeneralMods/BuildEndurance/packages.config b/GeneralMods/BuildEndurance/packages.config index 87b1c41e..af793ad3 100644 --- a/GeneralMods/BuildEndurance/packages.config +++ b/GeneralMods/BuildEndurance/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/GeneralMods/BuildHealth/BuildHealth.csproj b/GeneralMods/BuildHealth/BuildHealth.csproj index bd14989f..d1627a93 100644 --- a/GeneralMods/BuildHealth/BuildHealth.csproj +++ b/GeneralMods/BuildHealth/BuildHealth.csproj @@ -86,15 +86,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/GeneralMods/BuildHealth/packages.config b/GeneralMods/BuildHealth/packages.config index 87b1c41e..af793ad3 100644 --- a/GeneralMods/BuildHealth/packages.config +++ b/GeneralMods/BuildHealth/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/GeneralMods/BuyBackCollectables/BuyBackCollectables.csproj b/GeneralMods/BuyBackCollectables/BuyBackCollectables.csproj index f664e01b..488853fb 100644 --- a/GeneralMods/BuyBackCollectables/BuyBackCollectables.csproj +++ b/GeneralMods/BuyBackCollectables/BuyBackCollectables.csproj @@ -88,15 +88,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/GeneralMods/BuyBackCollectables/packages.config b/GeneralMods/BuyBackCollectables/packages.config index 87b1c41e..af793ad3 100644 --- a/GeneralMods/BuyBackCollectables/packages.config +++ b/GeneralMods/BuyBackCollectables/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/GeneralMods/CustomNPCFramework/CustomNPCFramework.csproj b/GeneralMods/CustomNPCFramework/CustomNPCFramework.csproj index 9eeded7f..20071e85 100644 --- a/GeneralMods/CustomNPCFramework/CustomNPCFramework.csproj +++ b/GeneralMods/CustomNPCFramework/CustomNPCFramework.csproj @@ -119,15 +119,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + + + + {48A8E271-B5CF-4290-8C04-37C352A3F15C} + {6D335F3A-9D43-41b4-9D22-F6F17C4BE596};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Debug + x86 + WinExe + Properties + WindowsGame2 + WindowsGame2 + v4.0 + Client + v4.0 + Windows + HiDef + 6e015d12-6141-4a91-b036-a111000be29c + Game + Game.ico + GameThumbnail.png + + + true + full + false + bin\x86\Debug + DEBUG;TRACE;WINDOWS + prompt + 4 + true + false + x86 + false + + + pdbonly + true + bin\x86\Release + TRACE;WINDOWS + prompt + 4 + true + false + x86 + true + + + + + + + + + + + + + + + + + + + + + + true + + + + + WindowsGame2Content + Content + + + + + \ No newline at end of file diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/WindowsGame2.csproj.Debug.cachefile b/Misc/WindowsGame2/WindowsGame2/WindowsGame2/WindowsGame2.csproj.Debug.cachefile similarity index 96% rename from WindowsGame2/WindowsGame2/WindowsGame2/WindowsGame2.csproj.Debug.cachefile rename to Misc/WindowsGame2/WindowsGame2/WindowsGame2/WindowsGame2.csproj.Debug.cachefile index f8506c6d..d7d2bde1 100644 --- a/WindowsGame2/WindowsGame2/WindowsGame2/WindowsGame2.csproj.Debug.cachefile +++ b/Misc/WindowsGame2/WindowsGame2/WindowsGame2/WindowsGame2.csproj.Debug.cachefile @@ -1,2 +1,2 @@ -Content\NoEffect.xnb -Content\GreyScaleEffect.xnb +Content\NoEffect.xnb +Content\GreyScaleEffect.xnb diff --git a/WindowsGame2/WindowsGame2/WindowsGame2Content/GreyScaleEffect.fx b/Misc/WindowsGame2/WindowsGame2/WindowsGame2Content/GreyScaleEffect.fx similarity index 95% rename from WindowsGame2/WindowsGame2/WindowsGame2Content/GreyScaleEffect.fx rename to Misc/WindowsGame2/WindowsGame2/WindowsGame2Content/GreyScaleEffect.fx index 8492f3db..6d3c4546 100644 --- a/WindowsGame2/WindowsGame2/WindowsGame2Content/GreyScaleEffect.fx +++ b/Misc/WindowsGame2/WindowsGame2/WindowsGame2Content/GreyScaleEffect.fx @@ -1,65 +1,65 @@ -sampler s0; - -float ambientRed; -float ambientGreen; -float ambientBlue; - -float addedRed; -float addedGreen; -float addedBlue; -float addedAlpha; - -float timeOfDay; - -float4x4 MatrixTransform; - -bool addLightGlow; - -float4 PixelShaderFunction(float2 coords: TEXCOORD0) : COLOR0 -{ - - float4 color = tex2D(s0, coords); //Get the default pixel color. - [flatten]if (timeOfDay < 2100) { - float r = color.r*(ambientRed / 255); - float g = color.g*(ambientGreen / 255); - float b = color.b*(ambientBlue / 255); - float a = color.a; - float Gray = (r * 0.3 + g * 0.59 + b * 0.11); //.3,.59,.11 - - color.rgb = Gray; - } - else { - float r = color.r*(ambientRed / 255); - float g = color.g*(ambientGreen / 255); - float b = color.b*(ambientBlue / 255); - float a = color.a; - float Gray = (r * 0.11 + g * 0.11 + b * 0.78); //.3,.59,.11 - - color.rgb = Gray; - //Used for night glow - [flatten]if (addLightGlow == true) { - color.r = color.r * 3; - color.g = color.g * 3; - color.b = color.b * 3; - color.a = color.a*0.25; - } - else { - - } - } - - color.r = color.r + addedRed; - color.g = color.g + addedGreen; - color.b = color.b + addedBlue; - color.a = color.a + addedAlpha; - return color; - -} - -technique Technique1 -{ - pass Pass1 - { - PixelShader = compile ps_2_0 PixelShaderFunction(); - } +sampler s0; + +float ambientRed; +float ambientGreen; +float ambientBlue; + +float addedRed; +float addedGreen; +float addedBlue; +float addedAlpha; + +float timeOfDay; + +float4x4 MatrixTransform; + +bool addLightGlow; + +float4 PixelShaderFunction(float2 coords: TEXCOORD0) : COLOR0 +{ + + float4 color = tex2D(s0, coords); //Get the default pixel color. + [flatten]if (timeOfDay < 2100) { + float r = color.r*(ambientRed / 255); + float g = color.g*(ambientGreen / 255); + float b = color.b*(ambientBlue / 255); + float a = color.a; + float Gray = (r * 0.3 + g * 0.59 + b * 0.11); //.3,.59,.11 + + color.rgb = Gray; + } + else { + float r = color.r*(ambientRed / 255); + float g = color.g*(ambientGreen / 255); + float b = color.b*(ambientBlue / 255); + float a = color.a; + float Gray = (r * 0.11 + g * 0.11 + b * 0.78); //.3,.59,.11 + + color.rgb = Gray; + //Used for night glow + [flatten]if (addLightGlow == true) { + color.r = color.r * 3; + color.g = color.g * 3; + color.b = color.b * 3; + color.a = color.a*0.25; + } + else { + + } + } + + color.r = color.r + addedRed; + color.g = color.g + addedGreen; + color.b = color.b + addedBlue; + color.a = color.a + addedAlpha; + return color; + +} + +technique Technique1 +{ + pass Pass1 + { + PixelShader = compile ps_2_0 PixelShaderFunction(); + } } \ No newline at end of file diff --git a/WindowsGame2/WindowsGame2/WindowsGame2Content/NoEffect.fx b/Misc/WindowsGame2/WindowsGame2/WindowsGame2Content/NoEffect.fx similarity index 94% rename from WindowsGame2/WindowsGame2/WindowsGame2Content/NoEffect.fx rename to Misc/WindowsGame2/WindowsGame2/WindowsGame2Content/NoEffect.fx index e103bd34..73018c1f 100644 --- a/WindowsGame2/WindowsGame2/WindowsGame2Content/NoEffect.fx +++ b/Misc/WindowsGame2/WindowsGame2/WindowsGame2Content/NoEffect.fx @@ -1,14 +1,14 @@ -sampler s0; -float4 PixelShaderFunction(float2 coords: TEXCOORD0) : COLOR0 -{ - float4 color = tex2D(s0, coords); //Get the default pixel color. - return color; -} - -technique Technique1 -{ - pass Pass1 - { - PixelShader = compile ps_2_0 PixelShaderFunction(); - } +sampler s0; +float4 PixelShaderFunction(float2 coords: TEXCOORD0) : COLOR0 +{ + float4 color = tex2D(s0, coords); //Get the default pixel color. + return color; +} + +technique Technique1 +{ + pass Pass1 + { + PixelShader = compile ps_2_0 PixelShaderFunction(); + } } \ No newline at end of file diff --git a/WindowsGame2/WindowsGame2/WindowsGame2Content/WindowsGame2Content.contentproj b/Misc/WindowsGame2/WindowsGame2/WindowsGame2Content/WindowsGame2Content.contentproj similarity index 98% rename from WindowsGame2/WindowsGame2/WindowsGame2Content/WindowsGame2Content.contentproj rename to Misc/WindowsGame2/WindowsGame2/WindowsGame2Content/WindowsGame2Content.contentproj index 3b56ff1d..f780c026 100644 --- a/WindowsGame2/WindowsGame2/WindowsGame2Content/WindowsGame2Content.contentproj +++ b/Misc/WindowsGame2/WindowsGame2/WindowsGame2Content/WindowsGame2Content.contentproj @@ -1,53 +1,53 @@ - - - {58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08} - {96E2B04D-8817-42c6-938A-82C39BA4D311};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - Debug - x86 - Library - Properties - v4.0 - v4.0 - bin\$(Platform)\$(Configuration) - Content - - - x86 - - - x86 - - - WindowsGame2Content - - - - - - - - - - - - NoEffect - EffectImporter - EffectProcessor - - - - - GreyScaleEffect - EffectImporter - EffectProcessor - - - - + + + {58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08} + {96E2B04D-8817-42c6-938A-82C39BA4D311};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Debug + x86 + Library + Properties + v4.0 + v4.0 + bin\$(Platform)\$(Configuration) + Content + + + x86 + + + x86 + + + WindowsGame2Content + + + + + + + + + + + + NoEffect + EffectImporter + EffectProcessor + + + + + GreyScaleEffect + EffectImporter + EffectProcessor + + + + \ No newline at end of file diff --git a/ShaderExample/ShaderExample/ShaderExample.csproj.user b/ShaderExample/ShaderExample/ShaderExample.csproj.user deleted file mode 100644 index 2f196a36..00000000 --- a/ShaderExample/ShaderExample/ShaderExample.csproj.user +++ /dev/null @@ -1,6 +0,0 @@ - - - - ShowAllFiles - - \ No newline at end of file diff --git a/ShaderExample/ShaderExample/bin/Debug/Content/Shaders/GreyScaleEffect.xnb b/ShaderExample/ShaderExample/bin/Debug/Content/Shaders/GreyScaleEffect.xnb deleted file mode 100644 index bd685b96f4ac87da91e86395261f26c9f7d79dff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3532 zcmbtWO>7%Q6rQ!+Ha{(?AkYFu7)VhH!KB71X(4Tzq;(|H5*iySWT`mbb#2x0n)O;q zZX1b1js<#X5eFYQR7q9kz#)eoID}gzIP}m%4wk1-zf{$q(d$3)B1-N9#Ly2Zwf!H3 zR38_`7mc{e}HOC-6@@mQ@w$dy(K7H@nQ)+nF;} zX;^Je_q+J_(%&>KlZ=jbIQ0aiF&^e5bD+Os)Q&&i#h*2k@g8RM^X`L&hqUs^za67S@G2=e6^Ld=Nco zLl7nd1(-pvh4gjEKZW#d$oE3}Uyx$~X~+j5r$YKHWHY3%K)x2zZ$jP)=?77dRH!C3 zEz`ve$=_=Z^RUf@?Ak1Rv_Srbn>FJ5PyEBi%v3f#3^k{V$hcS0ljzsbd(iKoSQ*5e zK9S4TaYW?GGw}ttVdDME%~011C0+gKGwJwMSL56hk(p&SmU_HS&bQu zCh!RSR)FsS*MaW>uLDPbH-W>zZH+rX=6_#fOXDLTkK`EEI|UpBjsb^&$ABr|hrk() z^BQv+OTgzb?gH_VSmoOA%`xN;186TOz`yUama6&we0jyHER^`=IoqffTzpnAi*sY> zs=X(HJJa_QkbU1k_x<;!?E4XD_#8-^??-v8q8T`sqGAzbo@~lGN0`GZ$J)syeVbH<1H z4CZcY+Yaz9I?vn(K+anMDGyzq4~n4p5g5#EYTK=lZ3}Yy(h(oNa3nrEw=fr1yCObq zFV)Hw%ZVRPB#$MIk0ley@l*=wZ9ef`F`YR*#rwexJ`iUWbEXdN@$X=3(TvlH!+)dm z%pF9Jh~3f_hfLe3wC#Gzc0$_JJ`DWMNE`R35P|Kyw5fFoY+p(n-++$aWoc8j3H%(` zSQ7g2jAvVyetVvpi*I`8n*ngYGUYL-T~A%{a^25=YAk1b+eEnFD3fMB<~Me z)*hX!6mDPO5EFaBQRT=-ckTtX`laNh(f_ijpJC~G#X$3i8#hi)^c^^LJN@Ux;O+D& z+WTM^lhI#Qn%=23&-;k>e%i(4BzE3OH73OCTw)kd-7PI&6+HvZDOv6T*jrnor`2Ss z4YAMb6RjpDM3IdL8;|tnMY%PU-Y2rnKC#inzJgB#K0acIwhkG#tjBTeH#v?tavVDY zzF80NwH!C}IG!iRsSB|o=cxINpY?E@%JGPZVXlCll^i2@eniIG@RWZ{&g}(1<`5No z+T+ZRdQ`Neuj0MtuT>9d+h;ioBl66yj6&Jj#vJT9JT;Qzr7<9QFT37LKwUAtbeZ^-5 VHC8g$j%!bQd*5ISDGofj{{iV^Lze&m diff --git a/ShaderExample/ShaderExample/bin/Debug/Content/Shaders/NoEffect.xnb b/ShaderExample/ShaderExample/bin/Debug/Content/Shaders/NoEffect.xnb deleted file mode 100644 index 76ec3ea10fa77812a566793bfcf7a9c1ed2376f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1020 zcmb7CF>ljA6h5aZ3KS^}3=EaHfuTr|m6`;(hzum5snk+MO$r$-71zEfR$N~=+e(ob zIx;YT_ygUubYSEMu(9$3`U5&LpqTI3P8A__;91{&?>)bJ_wKzL>^G;Y+MgB1v@hB# z&rvdz!$=9ca%LDc}`g2uZ0Rd88m8o zmA(pZ#eNhk(FjBwDci5`ZhY)}&aQahmtzq$%$ng0&113Yih8wPf5J$#KC1h( zJ^&W7lPeVSd`bVB>l@%lOa5GC31p#vpu~kFnI~h`ZXR}MPechJL?3}w;1fV~m~egr zx1L#tAzEvBZQhGw7o)M-A{<9@V)Y_hxngR)@d8&)!wyDh+-&57wf1E;T77uRW;3dT zp;D9T1Gm9+|1Oy7c?+grK9;U`D*WDvUc`1BI1$E;+E;*LdIyB1wbP9X(6Sk1x+8t5 zaNfW1lzS2HNU7YAN6a@4 z9`l{O-X70x!&~xX;`u`HE!}vkZ`BRmFl#lGJDVq*wfZlb^xk#>njz&Q8~x#Ja224L zk-r9z;4RLI>@IxtWiknmjHBxRm+>&W>KRVC$o0>xR6cK}$Cly0ykMovbDV>gr1n{= JmolAR;a@0x$jbl# diff --git a/ShaderExample/ShaderExample/bin/Debug/Netcode.dll b/ShaderExample/ShaderExample/bin/Debug/Netcode.dll deleted file mode 100644 index df30003bd7d26a9acf69b192f5283201b12d705a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76800 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 Ux2V|Ni~dvA?!PMa|5yV57e$I@UH||9 diff --git a/ShaderExample/ShaderExample/bin/Debug/Netcode.pdb b/ShaderExample/ShaderExample/bin/Debug/Netcode.pdb deleted file mode 100644 index e797d3656f7ce31f3d55b45821f1f8e64dd17e7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241152 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 Wms{ZF7I?V@UT%SxTj2li7Wm)YIR(}L diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip b/ShaderExample/ShaderExample/bin/Debug/ShaderExample 0.0.1.zip deleted file mode 100644 index ace37fd8670a85a4fd01127c1537de40a1e36c2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114890 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:p)vz&FV)_b7I#Ld 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�}f7InSWvOy?> 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 diff --git a/ShaderExample/ShaderExample/bin/Debug/ShaderExample.pdb b/ShaderExample/ShaderExample/bin/Debug/ShaderExample.pdb deleted file mode 100644 index feef0405becfbe36f447389418009352a271c952..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34304 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 diff --git a/ShaderExample/ShaderExample/manifest.json b/ShaderExample/ShaderExample/manifest.json deleted file mode 100644 index fb214cdd..00000000 --- a/ShaderExample/ShaderExample/manifest.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "Name": "ShaderExample", - "Author": "Alpha_Omegasis", - "Version": "0.0.1", - "Description": "A mod that attempts to add shaders to stardew.", - "UniqueID": "Omegasis.ShaderExample", - "EntryDll": "ShaderExample.dll", - "MinimumApiVersion": "2.0", - "UpdateKeys": [] -} diff --git a/ShaderExample/ShaderExample/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/ShaderExample/ShaderExample/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100644 index 034bd31913d22258279d17d002db7da9f6114ee9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7911 zcmeHMdvh8$5C=aL<2)MDH1EfyP1_`;SBT%4$sevUiQCxq07*QP^El#8V8wSQBIyj& zOiumJ`1#@ZpzpWN-np5XN{sb zVE)rmdak@sUMgoY&O(~b(P@NS?t}Dez+DINHhj&bsJ@o8T4mDAQ@P<+1Ff#Z!eUj30e`P?KGA z=v96?i`yTxch53h&{OFiF|%AUTMNmVx>$8Il?6tny}wQMzPecHX*gSzq6`*7tu9Gc z;Y!O!XF>uL(+o{`0~mE1qYLFqPuHgK`2mynPH)a~Rds0t0edI59PMUv;RDZQMUR#Mjj#qzAoB=dn)P6`j0z5`AdWV7ZosxFmv0|O zLkn7RzmhUMWee%@QfH6NfASVvTA~Z~!eVA+Zl0x=S9Vh$lj92&brg2k9j;lwaCY(d z*hNR-MbT~=1@kZ5r-rk)_y+!u%_h;#_#s!2m^JQu4!H{NQ>Np(MV&%fpZAP z|MsAUffNBU2Hi53vYtuSDA?3x>*X>8c4pl#ksAQCIVg}veO`vB+F}gAA=%PseM2zOqq6=Ns-&Ylmk-;mn)Dp8DSD-Jg6@(KC~kLFB=g@|_n@%?8*M2SOK17L&C2Md|>KDSi}eebhsyhCA6;eP%WU}+zX2lJ$M z@)W{+2Qbh3z!Ws2o&{+f^`KUuEITZ1w2xB*5;T`JtSzQ(;WU@&K5)Z5b(;Hs8n@P2 z-C}OSc}Bhmrukto-4u=k>Er75M#%RE;Oq3^JD7!|#8x)V@*^M}juI(LH8qhGnC?_~ z!UcXXYAr)-^w@`hv^PpE5#$ko?2i%z+}V7tb@P1v3DEEt^fZ4Sii_-cZn#RRQLBYO zFS!3cMEe=ga(&eLv~5~1LTL+mO<~M8&Q!*k%1~=^!%pH-H@h=42@_7e_LIbn7cXkaFF;=QIade! zxkzF{9b%;6Whw`kEOAV(!;HIIm^fzJAG9Vh{l+JWDLBeY9s{{{w07#P&oP;U-b+W% zxv#O#j~4(Nuz8NjJhb09DxQ9&(Ksdx&_A54ei1mGKg!b@rcik4aZHw=={GR%K#6{d z`>jMjiTOL0Fvv2H(X1O;0oJ=CafuwYp`4+tWLO^nm@}atpp)P;`S8M=lK^sf0U8M)S0D%|kuW5aWMncECldl*pdjE0 zt_ZlRfERcmu&e@J5WGNCKz9`n1Y8wdR{>AhU6uFu)J%1r&P@MBK-ago`}4_@etz>z zb@fx<>glfOu1OL}Nl6E>(0^Jol3_*<^cROiRiV;|=b~zVpu{uGTQ#oAlN$>AI%Ey^ zg{%Cb-~}DKcshD=JUJb*a;pQ8>ag#EpszX-_69m+24dCJqaY^93&$o71_p zOKG>#jvY(7?YtSP45^50$_=+Q_LY1el zx2ini9UJgbt+fU)DP;c7&@=?-147=CJa2I%6i$onPkL^sqS71og&R|$xuFtYemFGV zU*Zd=lThHl+LwYos&WnY2C98kNl6VFB&DV{Oi#3}eyXfC3F_Q0uKX{Cbnn@YYNcNW ztEG@hg=tJ{ZSd!E!IbBoTZk%^g}oJ7dB{ptR=Ww^yS6VJ>MQkyeZgX1)`eA7z6xaC zS5;^vw=fU!zM4>YT%l)B?_qV`__IA-Jsk^U6&zU+@C@(=ukw@x0xrr>UyH33M10$!dqEcRahLVs0alM(L~`AUriR06Yxze9OR1>BZIQEbd+}a5tSAzd|;@g#2+lX zFu$K?SSS=2=a0zpHI#p)MfpdT8zYIH;r^;>Zy;B0PsjH9S#0mnvXj%-8%EM5%HkTL zxMGXqj;#8uX{l8+u%Ta-AvC(DZzNJFck38zE#G3d4lPTAd^HjDaXJWHQWXlyQX8Sv z5{pugO0q8YM!a%MZfq%Fu_c3xtdWB*EW}?{AM~-Tf=G3VKU9d0l~dO#s|rW>gC(Jw zszP+ux^C$i8T5LL&M3Fo7+Wl|*y2&yH-aD&8~JrQON_RG-k`V4SK$jrJLj?3-jQK2 zz+X~^!Nu2IZIP;@-#C53-pX=+ah2Tk@z`{Q#iox+E5&f}kN zCV$)9L zu*GH%?O0|0`1ANC_*^HT(EdkM=)h1gnJ^6JNOE6VqAagPSx1(*imKvJIN%>E zH`5B6nP9P*qo1;V!OH3g&V#Cp%jMQvW9z?N*P#ZJo6W*z2U_g(p|w*VZ@@cYVs1gX zHyk~4I2lD+9o&zsxndttL#u-kKk5(Q{N8~7YA;<&$h|oQn?BM50ZxqRbE=BYwq>EG zqEP=4rO5jHm#)bA1tY$2saN$Jx?Zr_+>xa(KkTc*=ekT6ZCLKzY1mw!Big%*D)K_H zvxU=9SjeKVBddG8rqA^jm#afvTWoZw#YPVe;rRBU4*erYD(RWG*Cg5t&>v7nA8tCXY-XGJVPPBXbFv{$vJ_83>a~bw0ChxA^czlo2#$ z#CIlLV9PbS^3Di&t0K7i^q2a5B^lo6RrbU|I0j~v_$qzD5?p=bqC2Ci*c(A#lo#iX z!qKBlY;@t6Qgs(4a-qjI$??+VxgnUDsWM;Ocbw;OU&xx#Kx{#$X8j zqSdM!ccIr0ZP=w-H*c5XE?qmG)A?*)PWN+Csj2?^`<{~G5-G=YsNV+k0pKg~#KtgW zc8#+`N|fi9ykXQ8^p>{udVQ=dsN)-#Uep|vW{N*0c|>sjmv8sg^5JMh$P9&X6~M4| z(T2fKCFGrC1}&5M$ytBcH2V`I^HL;A8%|~fjB6wePbLj{2|9F8&rG^t+&2$xjP{1h z;j%zIl@2XV#;r3xYFz(l#z!GhS|OP$U|geNSR%C|_<|16GUM#{GsYaK3p#|?5AxOv zN~J@*(=67_;#usAHp^HfN-HK)0^{<*@MbB6FX*GPe#XnpfqE)^l>R<4p8T5}$LZLd zbZ}JLCfzpm)ylE1`N>=f;~EFUvZxC>#i*abK>Z*(1*soYQ7 zN%Z3~h(u{2GLGLvCkH^8t&YB$19rAs&`nbzk9VQpme++Ye4rA;Ms6O3yb3{U2C_<}Bl>-X&$ z=0H7_E|q^D8UHUFXK%*NYqyZO6~=WN49lXP+6%((BRRj%zMb~XL&+r{9EEtwZ?N0cDhGOdD_y=>Ko_Z04-$%y(3pn0|o!4fQxf{kc2Zm))Po*KO|Jmfs zrM%1|a}SK`k1(d>(9quhT5>kOl6F9jnf!_JaxaWipdrut zeQ$vbsvA8_r6JMZM+SeNN4pO<-WNUEEkvTU`^h{2<9ZN=p{P9sKb3}-on%^{$y_C- zN6%y)MxwMuWER7?9)aP>d=$Q*A^Q6GK4uQoQ)vj_$+&gKr+wNldLsTf5~VF6^8}1* zDGbl}GWg;WnEDxCZVuE_`$KRtZk_Ra_DqN}{%0ggTS4Y8Fs>(Ic*dWCF9yKW&-hAn zpe_a`2wGJyC}TB*L9wqg=sUlo@l{Yh%KSxN!MN~-M&2s^^-Q|Asvr`^7XTUlssevS zWxz*YrnD*dR^c{Pd>vgC3SSt;_pA}zt&7`(`vvo==~f>K()<+_)$+#OjIfVxB=wc# zg+mn$1h$gWN_}nPD~;XgYx-752=Sya(ouIWa35cg?qZVn1mo7CF&#&Z`Xyf(b;zn8 zeROYnzTygMM;gl1o`!Kf1JfgRpKM)=$~&qL<(}$bbwG}4rVT+kNiuKvpYn^^R95C$ zyiI$K%=2W{z+?`Ep(S+~%%OgZmV(%fiXz-GjoT~mO=(!GC>kHVR~&1V;Sk-*tydJ4 zqUOYaXdpzRSUbkPnH!8ETx(&DG2N@I)snsrCP^2U!VBWY&|}K;~648(}g>z|bNtgQ3*8UW2Ju*ViFwR99V$f|XU>L@xcM6~fA@ zHo*VGsOo0CP1{1|O_(Ha$F?MRaM4&JV9 zCG#$s_sG0Y<^wX@$b1NsSpq|gD20(#-Hw%dRoww8R@HK>%Bp^Z71!TkF0bpLrn_hB zde0$$HQxQ~PQ|6&$ND;!_`2kD>Czdc>uG*inF%8KFxuv0yiNOr%%@~_!DL za=AOZu@cRENWK7*ioe6y-e-85_75_jlldo^FJLk&VQ3Ly7@6uXu~IM9dmzP9U4>Oy zw|!V~eFal&k!p{+7xrl7Jc5nMoF8TmzQ)_NZ^(R0<~uUq!(>*&&?0EOSMJbI(xcy>)PGZ>6}j8yZ-zGJI060B$O)mqA~s-2BP#{O^`_@L!a+j3K@C?NOO@% zBa==>BcqdPNG5~KF=QH%al>RzrutwJH^NA=8$+%~b|xg(v1D@bEKD$>iz$efsX7j7 zwDV1s#lRfqf%tfoq%|Sa6ejZ~Dh`X74kIhp4064SHK*`(2++mNu(C!cLW|bu7DzJJ zhgqYOsPqVQGHqZoXHvmf#GNoQkEcPdm&el~x!RIZ4SW}(89t2;{4 z&Y`V5KqX-j55Y);&V^hLq4Oww9RhUmFs!W11<;~|K_Od9^6MLY^4 z>(LW(y?XS56syPM2$S`=2wJorOXT}u4)c(ZOQl~-rZ-F`4G+*FmchsxRJbRCp=GhNcSZgpDrssPxl&4{T z=881~A*n@l&7&6?kH)&|R^?N&8AY+jX!`|ALs}6%fO?U)%9magyEbZ6M9+<07$^&c z{gLvD=4Ka93+3W2>ToDtXdsug~3-4g5zpOeOy?4Iu!BgW(-Bj7bd)KM);{b8HcK)H( zCzeH11`=$5k8jBIB)f{x)@iW|bzK_+kIsr*UaaKPCGEM{+1a`0W+!+wH(TC5o?WFL zmd%bnEDM=GESnuGn{KDq#-h}e`+hoj@bFTGcPFKdrw5daijvY(CIjPpQ5Y47S3v8Z zuy#Z_GjD;sls}@(LrJCityxqb@hq%7#FXJxI_PQTSP{=D*{|d)Nq%0*X~F+tHkRPk*lyW_NX9Yxitw*7~2uI$J#k%GMw9D4yubJ-wKZ!9$`u1 z7OYTe_(DbYz}pq72yvv#78w zO1@Lce<1lyCEumw*(CoJaxMPi67n`gnUK2?=C1cpwKfN$HWx;#i94)Ib+B$RtxVA7#iCEug|^*h$I@m3%+RG!P}_2bBCE z$?qxoAtgUdG7VPA=tW9iO!5axeniQSlDtjHk16?al4*!b7P3UiPmsI=axMPiTIC~% zvQ?HMteM4tgtiPXYRh3{>--rjk)LTDqa=DXJ-gnc>DlybNw)DIRaJKES>tRxnx1XE zGyc(ZZ3VV02J)60U~0MkyyY&5wcN?rMO}OhD-*K{WyqFWO@)1;sl>TnYeXWIXYO^+lIvY1**ygJUQo^l5-wU&bhJV zG)C2RK_hrFIqOk|OwI->jK=h&{Hl^SlKi=nUsLkyB-6N`jDADOn@FaSKq+rl@)nY5 z*sm6UL?kW7fpZ@mnanp4#=Z+N4YeBMf7)A!(*6n~GyFHKT=$!!sRkouGrWx|h%75(Tr!gsVU1% zc$SYhW%*w!6JMeXndLoH7>#kt1npJwK9XtFQ_5c{`D>DYQ1UlQ{+47K8I{rBDfxSn zX=GGpc|W{H=F@InI{;DU^j}yR@iRF+v{QNWCTJc2?cY?9RGzUEQ^p$bj3vi1mW7Jz zA_;Gmdvy>iGGjD4g6}_LvVbS$WRjDW+(5}GBsWlUs*+tKrzkm1$>}7gDp^yqPO?kM z4V6suM2R#d)1!>CCXGl=SF&5ljY-y&oT=nvNydIg_wqO;A5U^aB{xxWQ<5{3+)T;M zNj^r&Cn)(uk{c=cBqg^X*{$T3N^V7RCgfUVKJM6f9A1zdwWj#Gc^R}U_}a-ZlA}|w zQgBo_s@sG-ww;QC#kL>W$>j$z2ekz#@53`rF5iPgCzsJPr{mSGwnG`RiP}?PO_Y3w zlFuZ$sggS=`7Dx~Lr$2O6Y+vfj0a(-Sslhq(>rL{2-R|6WX?Kb$sRwlsjh>>`M#IQN6=CJKKlPxB$OMhS=EVY@p!uc*-NzGjZ!AG4 zOI*)VnV@+BWr9knFprYUlw3}7wvzoyzLMk|C67~bfaH!!u26E2Jnc7`(ms`^ zeM&6tQ7*fxy}BM{$h1$Q!n&!wnhXzTWqigIUAqCI+@~9{aKyx4Pou92l(iYzq%=2 zbnSM8%lzDdm8*_Qn;+`NW#(qmURCnUg-n?X^2}AlGS^sk!yYO{vr&f3+}%`IFP0+H zSl&e{MRO45ip~?GYjfeq1kA(A;G>d&x+!S1d#FaGeD{2&-7Dd{S8Uq7T(x`iQHI>T z1ytC@N?xes`$_JthQY9}Vd7zS)EBVhP4^r|9CI5xw z!AgEo$xo4-ujG|VUPbZ{C9hWU((HIhdu`E@0~LGl%l6=b}} zxyRrIT9U=sSV&BW%CISAQ0(@7XR`BsC(g2B-*;{TA?a#nJ6+ohmkukswuR8iW?fx) zn4^occ)#xu>-PkXo>~rQ{{Osbo9?`bn<6?r*IVf=#&_r#DoBreVj{szM)GTC%q@)! zCZ(^YoM6%3CKpSJ-|188#sSQurB)}}=N^K0(9#W!TNT1SUE2yJ+O6KjnrO>3b0K z3x?758>k&1)Y2GT!o?h2q;k|!OsHL*5VdO@)a;GgPawt>{gl+Tg9b=+m%cdoL*4DR z;wR?l;zxMKx3oXNp>JvFvrZRu8)f{7{B;gU_6ErXV(Qk|?+$sx+#L^T32&GNmG@=z6KUcfK6$sc5jJtn8Q4YC>&S$i2wVh?k4 z@g*ng3lmwB6Owgg6pK_u; zF%flRLZYTPMA@6DRv^YaDB9YfDT`>@!2lB5nWKvjIZfM4G)+xN(@hRd_NM7{5aW&w zUEzs3`N5}aZ4IK@5m8$iMB*Lh=;Cco)Za`*O-n?Sdj?cmlEp1ptHl}#F%fI{US}pe z=ett%qoj&I8-1_i0aR@KD%+qfhiKc(027;-ql-5vW>_i~B=RjSEkGf>~MX;2~NlCNexG*F}{?LL8JJQ1x^dQT3-W_eP4K(a` z-Pl>3o^1Ta=61n?Yg7BQ*?(|h)7;+QpV^}%tNqqTGF}{V=gpUPy6uu}x1`KCb?>a@ zo4bF0-SVyNH-5dc^NY`{NnhSk%v+a!!rkj;wSTT`$X$^^kKb3-d-bC5$S<0`dF-a= zpI!054SlcM^!b18oATIQ?oN$+u4&mm^P*8NM|vf%ch5ylX#$nxoF@kFTCr&9m*O5M zwNM)3k1r|n@q+WQZR3yaJahy0vE9e$AAPBRtYTe4tYnTZp5p!ENmKt=0BGVrwih}m z+512{2*end9kJh0*0sR~QTasFG6s=Y${bxh!HHU8BI^ExL_OdTWpAQ}gBatZdxQbf zNCIgwV@E7v4yLiA{2`J>-C7Z;(cV7}L!>MFvb`2&M&$A2FXfy10+Sbgv1f zhZDlI$bre;FqMKB^*M(-!#o50!K-ww%pj_qh?>hF5_6cNi@P~dvrR-TPDs=v4pH_d zDhOiC10ErRrb?n|CId*^!5m%O&S|>MMAM@QX?o0|$=)=L2Qe*T!~a90KfUcK!0!Qg z1OBV!B!#+GW8gJ`@S4tu64RKYi<>xJQ%!h1o)E7k4qo=g>v|BQ4ptX?BVJvbWY9F3 zXqvkyM`Bi{nqxT!+t#P{n;-pnY{m>`@3HF(%X}6I(Ook51x1N89N)_JVa}D zLW4I~w%hnk%i}74e7C0m`Jc{QF?qq-4>Eq-cCCBY#`*t9SywAQXxH$*k>`K>-Lyqp zzdg3`C9cI^O=;8{_RH2Ef zHHnyV*FvQwS-gO?TC8nL!zS<_|KyUg9-ebzW#bd8MSzN(SS>badxU5k!2lD(nS-Bd z+4bx^YR5o{@lF`rm1GiX{)G!13|i9yW4Z)I|t2AF8tn2@H|9GdJ+ z(@GFyoLH?gKw3>8^;4qzUf@xDim^M2w*&C);K#cY5Eb9%jHV|3e7)+uob9B*#lXbR4;#M?r54vSal^*%;|1sH#>Q7So6rr})y-z3e{P}vna#SS@Gu9{ z-SPg}!PGxL05tJeH}o?S4oWsg=^YSbzPj0J(DW|R)RqAxPG=5gdE+#-G12s4LYlTa zG}-$+VmpX2u5NZ1AnhcOS~GS;E9PKQHx5z@6G-$sHSvd~oeoI$25A?FNi=M{+hFQ5 zVyYR#NHk>*=62&u9dBalql8TT-C@e!Ozi3f zBC_0{LUk^34&~mMUC5OABIh$G2`_TK#0$=usg2J}zehJ@7diWl{&|4IXP=cUtXB zNYhsiP4=eAg#kC?A}0+_Y~nktiT#Wn@jY`e@f`>0TN6lMCj{vm2PAug)Cj~Ry2x=G zOf@E^_A-pb9_C=mJI>S>CZ@hk$kcZZQ}$-6DTuMY$Z2Mf)tt!M&0rF{n1iYBI9Z>V z$of7JS?&W+X-O9U##$}bNWjNzQss$BNu^zuON_>{dBpkk-&tqt0;h_)RJ zFtMFEm>Q4Mw#`Hv&9EPT$}XTfDA^dL(?N{+l)bG%Q#+z*D+5Tp!yHVD$7%YTiKgU) zG&OK&viGN=2gLlJKO3uS*#=%Ygx6+9l-R@^%!9}AdfkK<{d#%)!7A0k%ief(1uP2L&WiW{~%)xAVoUG?eWThu0OLNGwH(7ZgCUwFve*ljR_Axl> zOB}6Y=!lif!K`weqbE%q=?OV%=x}6jjs}4kV_0;s0a8AJw2ZMMmNEyE$#IaDm_W)% z2+}bQNcIM4IEb-4Ss&>wj_BG51Fw;U*J4JLSi~GmF~{+G$b?s;gm}3fyzGtFXb_Wz z+4hS=CHTZEGDsRjBrRa@i22OH{BoS6drc%YPDoOwLz2BoDg`me$L4Pu;SZLCYN|YW zp>PE*^~wya$_cBvj3hCKIhbUQV>R1^)v*b&I?ln$-dF`ejOod)kO5OA!8DWcBko`h z=9uF!-DZO6_=GSuabU7HOyfaJMjvm$J7HpOLAf_vi8Y2^%{CKFJT7(?QE=3rVm4%D?KpqeKH z>I4TUdjmBM#JC6eOUlB&pa*B=gq5yMH;9@+MAa~e#CYalA~a4^#6;AI35hz%A4Wc<$39GJY)o z+r%ICJvZ^{@#lSUMdPG>P3C`p!fx%oCUZwmU-Qpp?vqhd`JhJrrnN0LJ-ubLI2B4Q z>Q0Lu{U>coJG|iBs$=6@b>^cRu)Dq%82w`*^^YRfCB$gvU}iVoKMGC#qdlOB|Caj< z2PJzSaulcXonOixUO3iD^mch8LXE1{|6EP|vk&W%B9A$k3y=5Di%tErJD`a_Z8*n4$=(P0H6X_N=D4*6S+zt~ zPX?3d!5mDC$H_Y1MAo?p$vV#=%id(Y0%D9)i1h|Y8wjLsj2+RHIhY5JgLJkDr1KMj zre+_An+@8w5N+8EFyUbiW_9DVbuiJE z2Wa9y5c@bN+552d4v4Y-K-_AO^)8Xsmcb-WXAWj~<7Bllk<~XLS^XTc>`m5o5OWBR zy6i9z+ewJEW>kq*%)#7m9I+NA#4bsQSbqmGdn2|B#F*}X+HJt}8Nt+y@gtft2a~>W zn2tBWG$0{N109&`4bvVFV;)i7YtXchXmT@vL?h;4qBl-chKZ&@iD+`?Lv;oM4`m>5 z2r^|J2rPh7iz^+piD^k0i5Hyf9vffxe2*q)*FF1<{&|4IOd~uOiPLnFE~ej8z1>y=!Wdbp9VKJmmc-c{j5uh@0o+S^mzaL z*3>^s0Zsgozsy0&-bemMAm$LpCENyLjR~>6j4H8*Ihb0HBld*}vGRn7`5naUjaX9< zWAV6OGXtyUgw<|FlGw!@%&W(-`ox6Ql?kyL=U`=TtXhE>>vPuD23c7|)(!@f*v=fx zp~uPEW+E$)kgN)aEPIo6I*4f$dp`N%u(!q^EYr2N22kw?sI814@eXq^jUET;ZziCE z34sbZK-n884~Q}DhR8NR${~<8Gj_x#=3v4+4$|u;kSY^`bd>{=y+P^caTZR}6E8lyqCaFB^yXQX(?-_l^w2!Lic%OAw zu3qrL`L|w_bmj0}Z!dkX$(8RH*Yy8r`z!hX`r@3Yd=GyzwfN4HTdosVM=t$wch|Bu zC)|40SH~`C^xoB7T-P-#>~-stg{S;;N&xJp=q|Aom zd`Q~(Lvl2rVjq%425n=Awgn6@F`qe@Opw!duZgz10ZsgenKIv@&E7}0QZsF325sd;+gt{in8O^*G016~ZK7>KBHB_GIw;v2r67ng-D4Xv zV5%gTW-@-n9n8TTgB+&YOfcP_5T*wlnCuPHco1X#4OWdo)&wGJI)h0}V-BVppmwgifE3TER|u4o|IFhU#(jPpl4H2qhfuAk=CYU1B_QFi9atEn-4#Swhs7JE++kwL3rz=24ZXWexWR0=|iutk3{z z76BDv42d9fFj*l7DqsTY&k2EA;Q(cCpyq&>L%9EOu7TJ*LadBYB}$ot$qPARB__oF zk`S>c9mMR7*nALUeVV_(AZsC!Rm5NtqnU$g|2SENCbFJNNY+Y+EPIo+2*eme_KOXW z9wCrMFm}Xn=3vG@4$?3aNUIWpwAum5-XJXnF(+7_!Ry*GgRSMn)?kK{7{nY*0?64K zU}Ed(gls+Iuw`$yR)QG!AYV-+6s!uBMm(2Pg@U@a${=br5!Hu5B=VSpY3n#q7n_KB zHX%{ZIYil;s5KzQJU78wgQi-dsV4(S^k5FAs^c`BZ=&h>gfy*jXtFm=uYj1$*xmjE zy+Lo8uL2X->)LvQsSU(bH-?eu${fsE$C*0Y#MIh^Ow~F}*_)|NAVwb;3WhwnzG8ns z*ESn4Z6TPl89&0q985~bVd`LlXh|w4jNd|Ep_7HzxZ@%%)xYN@am>Z zgHtzM+8c?ma&LwzA2eKbb>Z+6&fa;m*aC%a;Hy6gSnAt&;mo>6I4`R92TDBjOUAwu z)iM(Y;o>1TR8a{rOt-{0FUAccG-WiVp{zPy09EJ>g=9BjA7ZU0@1?YnoV z(5W2`tZDgaYJu2k6}nr68hiDbRp{Qh(0x{+`|$!T$>KmPgam$*qx&Efb2{mP&02)j zPp3N#FUZiGCkF3Yv1sX+B0Uz`5aE1ryXm1%EXksAEQEwuZR9KNW>92l&v*RO37>!S zpoUQrcrw^pG>a5{#f4T{h1SG{POu7{ z6c;+#Ds*~W=nSjSnQ@`BtU~9;h0e1IU7$h@2p7ge`LA0Nv+l(z)PV32t5TQ6g)X-W zT@@F)+A4HyTxhLT=z0}u9L_dag>F`%#%^t~3f&qP`mR;zj=0dBR-wC9sL=$U#X{qn zV6O@_c59zisryx^v0DeMLJ!7;(($YoZ60^bN`qoP1gBetx>cyLTa9C(al6$_g&Mon z+^W>pD%9AmEUVDAaiQ(3LbFw3hjdzXh{}*V9tL zOu{fB777|olQ6g^;RRZf#pGCsdKfUOV~?jBAv0nj^`9Gb&on}2S%u8S3o^wW*LENN zMAt!G#JpH&?7eDxN$v$I)JV!gtI)-9p^sRFE{h9YZWX#JE_Ah3=vozO;81H7x?Y7E zyS2e8baPzj7OT*$D%7aJyH=q);zD;?h3;0NMqNL%3f&tQy3Zg zTuamf61-qq+-Z2h+6@e-TU6}cc*lnz1LoQ?X}llYwfl7nJJySK1>=Bx$yUmH;C@RlRwP@{&_Hs=1}#$ zA^NKS(M9(tTOVE2Gn`0A$82kl9UqMj#8W9N6YV#n_IN6qNJTep>yD0EgJwfvVPJ{F zdiy4#t%^qR5AE2U9qk3Gi54g;iLL;~Be6fc2G1z|PUA08u_&ujZbmp{MBhdQc>ZW~ z#dS=||II#~Dx>h32H$O>K=g4|#Qe`EiGskjPZ3qlZ~JrgD3LF(-G_R6UcDh>9>}2n zlgk0nCg$qMjhgsGfo-tU_5f-^wrLc2q5APR@6(LsYOu|u1wxjUK8e4~YY2byKFvg} zc~w#TD(e*=mQ5u$eey!0&#fj>1oqz!{y^#}5A^6sL+OE-4nS%wjE7|a*x);613P9f z0*I9WS7rfOI}PAkLB>iCt-u^n)9LZ$D8wS5nJQzzBz6b)3-F4Iy0ri;Ryjb#s^H>6 z0E%I)0#+43T_AQA9wn!gS|t+jtbLFbGgS@LWRz(Z0n~f6h-feHuDu0=K;jypuUQOm zDgp|{g1th}rGSJca9D<-1^EJ248U-OU9q!K7&%kJ3T_bHvS4~ctQN>1*T0nm6srTW zP|m9!MPB+bs{th;OY9t!EI3BMnY*Bwm`l@mCYq1VrCD_*n$KrxTow#q&Jf44P43f1 z|8ce{xp3cPi# zk|Hv7K1imT07^=%wM?!?#3!b5fDt_;uXWs*&vrJ#AhZO1b!WXP%cf=wF1ns+yqH^r zGLCOjU_n{&7bH_--ZOPO(*ScOlnaY;Di_R~)ms`{1W#){y4tnusBc55O4lFUKqWu z;>4rpcA@av!7Hviw-SZhp1s7pU=bo@Ejj3hsipzcQTySKUitC`rP;RXpWk`+1-C1K(# zIfqI#9h9isa;V+4Hpcx*uD-ptAN8;2>YHl2P=7dAUsv0T`ZKxuIkl^*jDp(wg#fWK zfW;L6XEClEi&0xr4p3AH5a3q#0sv`yQx{^Mdf=*y@R-~RFp{lwqB74!W~tXr0*nYSsJApAmdZ=z(hO0|Z7nYutjRnPs*(!@#9qgSIPZ;!U^-ZO%dGt#^Z-P|K%?sp6 zmx7b9_fh@JHRS3si^g z;W+m%0csIYPc26x)eXI* ztS^Rj^29Dj%hhZ);mB22;IZ^VJu=DlzMk3sdc=aVU=L8wjx*~QIt)ZP>+gmAol&*) ze5v#_i$&5)9hT3&MV`?fW`0J_b4=puxh7FIr}3||jTx-=LSw<4#?R&&u{SR?%Jnj% zN(3#^tMmnYI18L|8E5Hd)m=q;xn5-r0y7T761z#YUR}2wbNLFmESPV9RZ?zgW3}sN zdz()0s2;6birx?Z#okzis0s1v)R*7uOB`naH(7Um_#dQhjNKj9km)K~rC5y$f9P51IP1Oq4}jt}h$sf)FZJ z3YR1Ph}bzff=+pBL(hAR7!uz6yfw+vN*b9Ci}INgrLy^nZ+&2D6usri*f?81yDl=7 z0>a)6l|_V!N`suTfVIY$wow;->b$YNsMacFICL8;^c8g*XqKw1�}f7InSWvOy?> zLOG2x>9tIt*G5jccunf`y80*crw}pfo8AMPp{WeW_4*k0l-kL0lwV-Em~ zBo_<=co~(HF;VPlbAz!6^N#q z8RW~9lQeeq{3h;TO#z6leoikQ)w%`%W;k!^xn9P~@XFXUXeMU>M&|TC1JOYy63NCK z%AC%4q~_ftk(!~Qp$#&-$hRcY>k&xm^?K3UdN;TsoHXi<>-tZ<@y1)SGc|?`85cRM z_CJ66SpivE5HR_}D^-NQxM3oMS}F%h#q;X`&*AUKksok7e;9uVM9p|UgC{&F_xTz8 z7=7t=JlU<7kFin{w6H1MKjm@-&7Qk21YDlJg6grLmY*1W50V&O_J z-3}Z!N`3CZGVg#hc`eWVItJGR1ZuDFSnolhfV|dw@w7)cW^oc-zr?}tsY_zQ4rYIr z1|EmAs9L+wJA2BCMAA2)d-j|~9_xL~?c>iEc#g^rcfg~%tPh}o^w-OM7p@FagHPyDm)C37jXdZn1$S;XG(fQrqK@i_>GlpB5Kz)VZx{04*aq{$AH=|4B)qLCILJIXx#!(u}j>*HShLYe}n4e6{7hQfc38GAUHXBckEW6 zq-Qd-S#QklKNu?4V7SBXe1|(j!$B~SPL>Nh{>i@uG8>RKHt+5o@lW2y!-`0?D^i2` zkl*?wcdeo3%FVlDu%kfDedk|)Zl82SD2i8c-6L?d=L>vwUZ1m&)HEWrE7U#tDbQG- z1~5EL=K>%0#O~l4A35_hT!{myP_ZFYjM^L><21YWHHb7%#~@=R<8iu{fy}8H<^K{r zV~VFK8o1Lm4f+18s-d*QnCH50v9624o>P%93_h!G$BsV(3hT41TYu9KG_Cus&v8wh z$YyPMnI5o?0AF7vG+pN?JTOP$Y}W;P!P+WbNuhKjD2xt=|A5drTSzOww_8N~mPY$` zJYFbVG;5!++=0$orMfYqmyE==p`J5l90@uwaFX8FntiMP3rr2G8S@VBk!>(F?PPRTH5;4khRbzo3 z)C={HUZfZ6`iNetM@IBAeZh$11gvG@1|Q_5Db)RSK4AL5o}MLqU z39V0l1t?tMK+mk|a=pB+bhbh6Mqgzn;w(FPH#3OMmM8xKi1L*Y(Z%{2D)zgxStRqT z&@0v=mdlmP>vj()MR3Z)9R*HAn^~N7FK};m*544BCA^9|PktRBtIYQ1Ua7nH-j9vj z*|L$rJ6Ym4P?Bn?J53Rs4A&WsF|&Rq?*lL@ovrGdsMK!}V~b^mUcUuY-5QDdHkX&q zmaXpqVc(e5N}Z&Z`5>zZ$B()KK_2@qD4iW+t}4Y*DJ(N&`w&<;$M~uH(Zfj&`P8&a zhNbTTE3^x@c(4s1+9rKNWLey&dcm$p^@8f6zjT?h|B>2Nj_!`3n}NgC+M=8*PCWoz z?0*1U)6As@0eZ6wu)TSA?E63@s+)JsHuuFI%8@_(=gGObue!OqSqK?>1XWC>c|+_` zl&l{Bz^-^jCm&j^H_NL{dqdX4o%Jmv}lHM>~- zC*WU;;9rY!{`GdCrL$~6$yvkoDB7HlhC# z{$r@O@?N4OJI-HS0%s25ZR&Rf?RA>5z&^I(LrFW&N0!sg_@tfDUJQ z=+n=1!kX*7!b^a8)1;(<$X=mWXm zH?d%OF{Lgnn;Y^En?c`NOOVYS_MG6<{{*YaX92*h(7$%`TxQbv**mP~0OpH*%FX9V zeq~U|{lq+F$a)^sv3~@Z_1WIo3%R=RSvjQ_fvg|;w|4y*dezncr4h>H5dQ>Xu``t! z?pg7~+ysZ};@%M<92ewWvAf<|!?zQ)3#VQ}Z)c^x-POE%F(!)7Z#LkPS5nc2TDKss z+5gRJHdrr%o+)aVi-ka3|G6BW-%r$qY3diK)@uuDm4(y1kkFf0gkPe}>h$W~x_wkr z_O&OPV#m2%F2aQ<3TdUN&M}j*Vi>;Dj{OR?GwpMZ%*D-fCezP(GN;DV&RO)dK0}Z zVa57AP(iQDI*BJ1_AE;O0i{B}gK>KLt=C2S3Y^_E`ZV|knXkjg`Xd?xwaGBW{)7^S z3@foyC|Pd+1Z$hHG2a^Y=$oXa;c~ zYcDL-jb4djcgT$wDtKoMSP)i=RIzb;cA@YvX5`%!y8#ae9XY2cOVC%=>)BoF&sKLA zIvpg5=n4|ABoWo!hRcuigfn>fPmy+&2Ldd;(C^vR*App(F1Qh|^YD%Wjb72HyS&_L zxTwrEi7z??Cj9_qeV*ODhC7Q22$UBnk8hHhM(`FAuLJ9Rq`Pqy<0juEvtu;B^a0uf zw1@n=kVQ(=cQwo9H;QX_;>I9^G7|S93)xeEU)b<#Q@pLITS^*ge!WPr+a+MH z9_V#WyH+vinYE)jPj3(D#h40S{^(w44=;M^Z$qquR%Lx6CZmu#89{~h zg}i+2b*yQL(kv5VkR~qBC2IDaWA*ypk$hYyNULMcE)nIeT#R2Gt`5vgg4IcUC7s~R|JLU^9TA8$^gXz=DrLpBao!VyI6N{n5TLQmfSqVb% zc13q_Oi`a%Z4oTR`<11-OB1=LNP-?>^UfwgLWLIY5aEcEEAXfbd*u3AxG+U5 zJ>}w)C*H!;6-t7f71S}c#}hfFG6i1GFa;wW3f;%Am6z$u@SP5XCejSQeK*u#1jIBD z>79wJL|o4m3ri7&eUtUzV-%Gd#mFXfH*~{eEZ3LUT}e}T=@8J};|HL~$#YPStpuT_JgYLt{3 zrFgSjn!9)T%?8}N_;4+PI~~0s{{}`6^SfWZh7q?gdbxZXhB(_I_GF?o)UyeH?@?#Z zYQ{>H8er8pyXk7(+0kRSR?Y+>_%em+wN_(po;bef%yhuKl;K{Vym7h$DZ}?&-=Z}Zp>s?;tq2CGk4bNktBHE3v9(u`hRe^^_ zybQMr_^g1R6Yx6%zAk7U_xQl!ivpe_@DcA-z5wk~yOa=3>W4!CDlP0%!pJf%@<#w) zMk=+i$OAhc5Da@J-<-ln8}FpD6aw#^6;26;!W0SyDk-;gcmHI_f(d3Q?nSI25Lri0KuY z2vpE}gHM)tuoLr$_Z0C=*P*Y6+#bek2s2#ap9q{qKLCFZJq7r%kjF!x6(fFH-Bl8y znu3>$A{2M+gC4E`zJja(kKXR)(NBgChaRK*kgfi!)Ayqu*7<9gX@LGv{9ze`z0PX$@SH>up~gQ9PDA(zWM4A%&_R^xJwD7OGcXfSw%tAY+f+aCJ3Zz2$) zC&h^CFd|kNQmvp*Yc~cxuzc3ZUqO>t!2nbK3&!%$KcSb0P6`dz3Ox*KPnN8pON3^A zsa3>Ez)r3X--PmD=r!o-r*2-;6Je%YjJ_2# zK;L=|#8t}gZei;I$n0^(MwIWfwxcI8#caV$1 z=v@q(lr=-t>U3E{KtNmCp~Ptr?#N#y=6(wZXAycB_HrL;<#6_cdJ!7GYZ!q3;;3(X z6y50oswu4l=EI_PJ>3ypX6Dr1H>dUmS)(I{>5Gu7RrI6Ba72QF_96y)Vi|#6^~~f)+Wo2b6=_`+YJ= z(&z!@YVE^5p;}Nrprp0G@o}_O=$yi0?7pw-#l}zxj@N+S%z`^C< zmt*TtDI(gaXmCGXymw$33)c7RiRtN=m*eCp=ClIhAK4y zVst^XHSDJ;oSSfX#Y&a~2Jl99DpX930-gU>vZN5~93UzzG3QD$Gq$ zS?hlFTVbpbj_%9pBlOX59hIvw_bP17zg5;!TzN$6rbhLc?=rf9+I?|atA4s@54EVP z1EbWTo`458s%M8Xv_mZ`xDw@e8Pk9Z3$CL+^)}!8VC{zQ5cuC1`di>b;XCLkeav@+ z_NsUL?gZw6(A_kneptPiZcrB(-=@3hgzp&O!tgOVLaD;<1J)Kih0zC#pQVpr+@FzO zNh!zaka{+IrLq}izp~uHl!E8>k`to!H?&r{NcGU|>Na(!azwp4xJy~991mO$+Q$rA z=~JIAWOzkzLixV>WZ^YRqxxm_dgU&q%59_EXuMxJs{A_eA*Eb-$haB!68Ku5`Wy6m zLcLEpK_xU6`a4`eyeE8!o`EIZt30E|O7BD8uNL30JVQ#+gUTWL5GW7PQNSnEJ6w+_ z9nk+1z)yvKtSkZih2mFscuoMnEeNe+tdrpLSW!f6RL(10s2*2wqpw!dI-^m2Rec#U zoK)NO_3ClDCvbv}lh=QO$~CFOSG8^GBJDRuk9vrz!zZ9sk82kwKLg4&6f%y{dcxYN zCxr$MQ6c&sr<#(q+NipW_kyy`xKTYym%2ZXa&ho3z}JN~dV_bXjoP8mJ)nG7(S7Ph z!L3of!T$r4nde&VG2@45-BR>ZwL|+;!LQV7ZD-OD@5`C`~eRrrM z!d6+@vz4dNcZd3iKn#>$C~R;ws*gaz9qLO3G1m@tx942f5$#`Lr90G?l5L>;+rmb* zL-|R;1!#RpKLPx$nqS+Yeo;9_ycSzrhqUh$ce*|xtmP&#;!R>T`_%QtL#|HPA{)>V2QXg`C1m!=tnE&men<3%f1nyS*)SriM z!B}kDjY_F@o9n2y(tQFJ3u-#5-Gx~k)!tWl2k_6sPC8)SM=(dGKcqb!xEH-{(7ym~ z|Lo^+gMlx*o=~`Nqgolb2l#CTCs6*RSg%G6H0p@XYj>scE!XXo5%X;e-4DvY7MPC! z<5vpYCt%?(mOSWU+x{U&tSf%r^#w8OuZmgsDcrYDk@O4H6G~iZRfF!mO4JttJlnSf zTA406*B#d;-D^?q4Y4HE#jWn++V7RS)$eF0LR;L8%3xpzTHk}w8`V1iK_*=W5%JA!$=-?$3pg)W}O`GCi@ju4kWQE~(Dx9cASd{MM6(T}*lA*B7DTqE@Y zjM%7Nqp}Q3wC{rQM@4t5Gw@{(;v2(91boUV-&696`w^=0{j+;Lm8ic^);stT^>yIK zLd!hQg7e!wFTwIJ@vH~t@03@>SWk&wuLx^-R=`K-5OTod+7J9kTt^l5j-yz|6Zme? zknbALtN7)`33^py-!E6*;k(weNP9WZqaIa83*P4`R}L0^%yUv(9r%RjF6C0!9iHQ4 zhzPI@^sus$KLPX2;0aQc1*LwkqP#C~m#Qdz1xH+p@`0iS-mye?&R;7ac^%5O_%ynbc4iW{Vy}T~>V%%kjJbx7at|*NtKcgH)bZu1MR&We7fs!A1D;4(EC2|yX zZTMwySXKNgV7dPo_EA6ikd+kz;^vbAfTaSK3s?o%fV=Zg0UGpqz=iY>;9`0bu$F!f zxLUvq1Z)%di|7^Ly9H*qfCISfZlDor08G;b{>929-QaJh-_b={m-bQZ^P1{j=w9JI zDI&L^lN)%2>sa&Fw_rD`A+=?=`Q?YwqMDC;&3hBFFg`cqWdXI(-E^UPH@(DS5M4Z;Ovd|@<`s?9u_-k^YT8ciVl&fa z4grlqo0UwO1DS-CLcPn34{l2(C*~lteKVE~lJM|GU7$sc(so znvK+!jHlC$G-${7cgDxI$L$Pyq%x~lG5zL*nH+45r_C!?(M9IOCGq6Axjmk+QAMlZ zvx+)4CWKsZdjj}w%g&gCb5J0?1jAbPs{CQlF_k%Q4Xy9A2FH`;+iCrFJFzdGF*`=b zlIEzH%EWoL8_i5Skxajx_L!N=Tj}EMZPbI`6_4BIs*N<5NRK7s6YV=UismiU(vA;x zXX5stxgU%NaY@p$y@R?Z(iwBKp<|n%>k_b+;kM*pr!}57MP;^hd0&2`sE9^U0{av* z?xQ#jjN3Lu?TPo(XnMf1lZpQ9V6%&pZrEa`Ogk|k#_brStyX-H(!PV`UXwAjwG0jl+AedDwwRfYR2pLrm|{H$%Q_bU3fZzLg|5l5;dpD(L=g&LE*+_T z)`;0@W`9l3fBGYF=Cekg!wOTT5($4TeFE$oRq+tYOG9;X-eIqr##f6Kt!Z`mUaY=1(&i@7kw?k`FZ876-5_-Mar z^W+55u>ny|33@Zmj@h?uXb98U&ZLaqA5RPCxg?QJKyCalD98p@gfp>O#8zmO7pQvx zJ|ovh7Tc`R{sd5i@rm?Sb0~vpB^~?NXaS#Hcjz=RmRkzSU_FSVglV_MQ^Mgo5DVH( z8&(!i!4mtsE%pVNj952raNq&e9G*jw6L*L;W!l+Vl8roDNkhxl{%lP;8pls! zU0HZ0(p?F*^LEQdO+;M|Kh!y%%p?Zl>C8qmY3@N3B;mq5GCG@Mnc;4@&p;w6G2LPr zZCU9;H$;~!O{dOky>u9^AuUaK3ALmWqu@0tod$ajFQrrA4x8gPHXa87Rgb~OY!SA& zS4#%>&HdwGxn(?&SKDazkMG&T&M-@X&dy5D;#$&abF@D>(UZvJljhLu^P_QlWVT07 z+=f^=%bab<_Sp;pFEQ;j7UuLuM4O?+o^e~O+v&|4&Gdks7~@5qZIqK1J-W zXWO#_Z?~~w4P;JlXtTy9Y_^6oHH{)_P0Thpp@YZ7IQ@xaB9qt33nDgK>ai!bVEg2a zm*c)H>=V^ZLqqWX9&=zgmDr1B?&NsWT;x`^{chL?rS~UBM`3-0f376OPsh$3X&M}T za!ZdTUolW(PYPbJZ9Fq*S+DVU1v&v^)S#xujTodFAZ zX=2bRNe;5!Z(+~2WqE&&Vyl_j1L6c({qLfd^h9c)Esl*UJ}?63bqdV06&vZun}s!+ z6Z~ew9c{r|k$AGl+G>Frd~>sz&L9U#l8BiNGF{@$C7IP!{-&Pa41H`h_kr$8%NmuX zxq}WSlbkcPS{BatiGdL)v4_hn{LXZKExU%?$^k-onVLAhMiGhCQid7(z(V_Q|z>`B1znt09W2?g(%zLCbGzT6KkJ26YoB`3X41- zcfB00&BhL6_So@MIw`xrEZ_tksUgcocw;8HaGjgZ*2G|!B||t_W0!Z2_hX`BU(K#6 zvTP^0Ch1kkgCPr|>g;;wTGHt}B(mbX8t=KA$5WCwhC&)AbS5U9RTtUF`y6HBI|5Rx zwCMn^7*Ak)Y|ON~IF7U>v1Q0?gs`oooZ|SHQxHiX&zBZ{oIU8Zdj%rTYOIVQ$N zYEQ`8Xg~70oKf{8#%Q~hNMRgoCv<7t9?L3ZYa+E5M*}l%Q`;~=d~6J-4Y?Z9t|^TS z)3o9E$Y6UcLEB@EwF)n$Y#{{B zb#$u3l7OcvyLAac(1#_(x}r315e4HmjK@U6gtpm8hT%$_wCIhTeLOkH8nE`anmnIWOTV=bizL(6w1~Bw2Fe2auOL8Xk(!TdN$y7~Gp|MV z+n?Zkq$@s{7*B5-Lehc=E@mMU8IB|{JN&S4K)}sO#Ad?u2lvNq6YGQ|kw!VOaLRdS zLl(}-XK^H>20oavx>E@*@N{!!xWM*|O)dTDH;b$d*@Y%Yndz(rZA`?maUh%yqy^Jf zYdkfW7PcpHFh1ZpxPI9*Z!f~>5LP_aZQ6VU$??r@RdTn+zLssz#){c9M;eI}rzZ%m z9K+KzJU-~00Mbr`=kO!tlch1(DHJ|8m6QbAWqV@K%sD}t2D1K;oq!Y5u$t1GAw~YFV0L3{V9Q2s<%lh8QZjLhdA5}% z_#Cp?oYSSjR%8Rx3sIYY9B&ZXO6Q`4Q$-R8bI+0^)k&HY4V`8RI6jW?rXy?YRonKN zHrzr=g(!^i<*h+WM%-K^t$0S}*NIeOJI;v61);7%#43?1@X5;&nM{#M2{YyM);?42 zrkryy6?|g$2!}&D=93zPud&H=51VF&FhLN}#D(LdWAgBmy_#@pxYa?rEi*@R5GNyH zVQ0v#$jVE!ghcHoTQm*J2R0SHA4v=(GSD)zM(SwctOy5boFK@S4}=G}4+1z64NlJ4 zS#U(kM>%Jd*%tPEC&G(yov1r+kuKks+HRXNr>llIVzlAk=>OB?)u?7#5E=uUvUw7TJl&dolkbb8HapsE9)u4d+T7ISsJk zh-vZ0zt5bD=e$D@FrN-#WVoE-4a%}7M8ha|$4uETXdv%`K_JB0G2LT{3iFT)2XB-+ z1@{!0GxE*-NQMt&uQ%kO4DQ{5z4QPsHux?{n3O~yZ?+Q$`F*7Fo8|}&D+>O;<)R9 z^JRTDDxEf4b!xC#alAzeK`op}Aek}Ka`SGF?=w46du($sfvMw4Bd2#tWLE&U0U3LO zQ#TP?aZ;k48F6Bwjx=AMZnHOyjsc5LQ5#u=B#=x2si+&@-iYHZn@QNciI#7{(V$ptlgG{zCUxz!!WLn1LaW-bLIj(t>E#NmMW=}>2 zql}{eHq3M*<_%qyar=HzPSa*+Me2?G8Q}U^R|ac{Yb@6uDRtQZ%1Qi@`og&ka|ErQ z@fOA-eE_`T7>CD1x{o#!T1}u%24nW2FRzdVI>_N21vUB=ac}P9a4byY4MakW1^%d6 zSfPZFh6={;+yg#nDZ3Qk*J`02@n-{N|4=D1Y0P;uD3J?+R;>RygF?Ff=)>bD=t?o3 zoaJ^w%Q9r;pxP|`C4vLvrQMu?wmdB~m7(q6na<}@l*Zh6G`35~T#&*@EECJ09pPg1 zYlB^~wxO%4EIxk*xmJA~99uC%Y(8QJR62;~erR?Mwi;;wMwV;VD(2UPUMc)xjgWDA zI~l{E=T)+yQ(ikrqfk*+o_5*^8=?Z%0QMy@pM3kt%1Z^^=*>2ZSvGEjEw|966oqBT z6^X*i#-S6Oask;=(r6tP(O16r!8>=n^YV_bZut0lU$+}N$Q4x-9~u=m3cAkK5Chd6 zRh7yG__m7@o>5#;3U{~xX7K$sErgGMrJ|liA$>-71(finfY+_6`cC}m^N|vszDu7e zb$PcR)#=M*(=*J@hd&Th@5FBk z!!tV=>E{a33kZD&%Bs&J zW%Nafr8LMRg;hNvH-4fM5}j{H=T6Mc7vg0L2E9?2g4ee`Z>c_gMA18WaiLD;ew~1a zE2Dmlal1Z!*dakn5VfE_vo{D%DmY=e$BUvK7MELsJ}evbs7i^(3yawVuwpaHS>$6g z80Y2agjg6_*i)w@z1l652b4j+5(4G)tvq-q%g6(>%BEk%4;#28gd*@EUlmHnnZy?i zPoH3Urti``;j2~rs~OO4xucqyTfIU>Gq>V3smewICO$ugp1B@kJbeRXxDo#eLCpZxE6=x(Q&_^Zs5lLWutex5w41-Qg?eXUA!IJ}6~cN$Y{5>CJHyj= z!X&~oj|z=F0U>W@A+rTBm7964(}!WMJbPgoPZvl{KpDW03WsynWBO*f9{gm#n!Z_Z zoKg!@a_W#4GNBZ-NV(^zmT!J;?JE)*8EcCN5 z*Rd%TL^TWq+d@T*dmPm}i!tsADCSN)Uu8sA>390Q8gv|48-9eQdZ;#Psppe<8$)6VTQf0!JZQVCwqxNi}>mQ(eu&JD&o4ftjUZhrlu( zRM;p4>mm`iq$asrh}Ae-b#%-vtb*|L?}Q2%{X031)XYf-of}?G1xtQi5WZwU{{>hS zbdwXpSH7Sawg{$xLm^leuwn5GkF(jJ`2<_M8p^RcEd1`EU-j`;aIjDYF&|1W5rM`~ zRiP@)0ct+q*RH(mlJYe#+~B*m?)TrUdfDBr$Zw$_x^4<$?m25J;EH2TupcGd z;m3x+3y44k1F8&TLsNa>aUXWw%F0kxB^;v?)>j#Vp+oe$fE0UDWijzia^vjA2A>6D z2GhfY{37e9#H_;8-vNVTm5>_E-@#W^@$F%J@XI!Zdeq3JxKX{>O6Bgddxmk>omN1H zpE2SSR;X~!l@lC9G~kzc;oR%9=y#7qqpManHWA^sPD|Dfo!7s%seesLfup4{uhI_J&S+wkL>^BVB$ zqn=Pnt}*XDb_w^2=31hH+9gC}`E&nK-5CGK*(d*7H$cH)LXezV3j8~7a>f8JOM9{8^M z|ILSgVS(R85lzqSEq|E-+c^!-bnW=tiDkYEZ4HW-P&Zu;xC!T*Zk!Re(Z#5D z0B)B5*9E%I^=tg9oUMWX@<%>5$cpf8wx|5hMpP7V<&)B8arVKNaBzYd!Wn})S$|aw-GJ!oXIDid^z)PXEx!a$y~ z=Wjk$^ZfvS8gW~*GWVBoCJlq0wZx}68&AHun3e3!$7;aoj_)*hotej0^xq?Tvj)a6 zKh~hUrGZbMhKte>7-W=IL7qlJ*y3OC&*39iif?fEw!_AmF{@3&XguaNXAC~4vfNqS zaZPIWt;oM#=zTkQS(wu}&X~9j&v77F!|ZL?e0{GG`kvc&zSigKyh-$F!EDlEZvBva g0-E?s{doQU(>`PJca=|N9qvDE;Qt=z{{;>FAFmqY3IG5A diff --git a/ShaderExample/ShaderExample/obj/Debug/ShaderExample.pdb b/ShaderExample/ShaderExample/obj/Debug/ShaderExample.pdb deleted file mode 100644 index feef0405becfbe36f447389418009352a271c952..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34304 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 diff --git a/ShaderExample/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/Pathoschild.Stardew.ModBuildConfig.2.0.2.nupkg b/ShaderExample/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/Pathoschild.Stardew.ModBuildConfig.2.0.2.nupkg deleted file mode 100644 index 1b4cc5db0b96b50cac07e5e5af22c042ab1d514c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11531 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 MRrP(o^76BRNFMERJ5 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 diff --git a/ShaderExample/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/Pathoschild.Stardew.ModBuildConfig.targets b/ShaderExample/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/Pathoschild.Stardew.ModBuildConfig.targets deleted file mode 100644 index b49d646d..00000000 --- a/ShaderExample/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/Pathoschild.Stardew.ModBuildConfig.targets +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - $(DeployModFolderName) - $(DeployModZipTo) - - - $(MSBuildProjectName) - $(TargetDir) - True - True - - - - - - - - $(HOME)/GOG Games/Stardew Valley/game - $(HOME)/.local/share/Steam/steamapps/common/Stardew Valley - - - /Applications/Stardew Valley.app/Contents/MacOS - $(HOME)/Library/Application Support/Steam/steamapps/common/Stardew Valley/Contents/MacOS - - - - - C:\Program Files (x86)\GalaxyClient\Games\Stardew Valley - C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley - $([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\GOG.com\Games\1453375253', 'PATH', null, RegistryView.Registry32)) - $([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 413150', 'InstallLocation', null, RegistryView.Registry64, RegistryView.Registry32)) - - - - - - - - - - - - false - - - false - - - false - - - false - - - $(GamePath)\Stardew Valley.exe - false - - - $(GamePath)\StardewModdingAPI.exe - false - - - $(GamePath)\xTile.dll - false - False - - - - - - Program - $(GamePath)\StardewModdingAPI.exe - $(GamePath) - - - - - - - $(GamePath)\MonoGame.Framework.dll - false - False - - - $(GamePath)\StardewValley.exe - false - - - $(GamePath)\StardewModdingAPI.exe - false - - - $(GamePath)\xTile.dll - false - - - - - - - - - - - - - - - - - - - - - - diff --git a/ShaderExample/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/StardewModdingAPI.ModBuildConfig.dll b/ShaderExample/packages/Pathoschild.Stardew.ModBuildConfig.2.0.2/build/StardewModdingAPI.ModBuildConfig.dll deleted file mode 100644 index e8e4c16849c86c5aeec79ea2d99a46d032bef259..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Content/GreyScaleEffect.xnb b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Content/GreyScaleEffect.xnb deleted file mode 100644 index bd685b96f4ac87da91e86395261f26c9f7d79dff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3532 zcmbtWO>7%Q6rQ!+Ha{(?AkYFu7)VhH!KB71X(4Tzq;(|H5*iySWT`mbb#2x0n)O;q zZX1b1js<#X5eFYQR7q9kz#)eoID}gzIP}m%4wk1-zf{$q(d$3)B1-N9#Ly2Zwf!H3 zR38_`7mc{e}HOC-6@@mQ@w$dy(K7H@nQ)+nF;} zX;^Je_q+J_(%&>KlZ=jbIQ0aiF&^e5bD+Os)Q&&i#h*2k@g8RM^X`L&hqUs^za67S@G2=e6^Ld=Nco zLl7nd1(-pvh4gjEKZW#d$oE3}Uyx$~X~+j5r$YKHWHY3%K)x2zZ$jP)=?77dRH!C3 zEz`ve$=_=Z^RUf@?Ak1Rv_Srbn>FJ5PyEBi%v3f#3^k{V$hcS0ljzsbd(iKoSQ*5e zK9S4TaYW?GGw}ttVdDME%~011C0+gKGwJwMSL56hk(p&SmU_HS&bQu zCh!RSR)FsS*MaW>uLDPbH-W>zZH+rX=6_#fOXDLTkK`EEI|UpBjsb^&$ABr|hrk() z^BQv+OTgzb?gH_VSmoOA%`xN;186TOz`yUama6&we0jyHER^`=IoqffTzpnAi*sY> zs=X(HJJa_QkbU1k_x<;!?E4XD_#8-^??-v8q8T`sqGAzbo@~lGN0`GZ$J)syeVbH<1H z4CZcY+Yaz9I?vn(K+anMDGyzq4~n4p5g5#EYTK=lZ3}Yy(h(oNa3nrEw=fr1yCObq zFV)Hw%ZVRPB#$MIk0ley@l*=wZ9ef`F`YR*#rwexJ`iUWbEXdN@$X=3(TvlH!+)dm z%pF9Jh~3f_hfLe3wC#Gzc0$_JJ`DWMNE`R35P|Kyw5fFoY+p(n-++$aWoc8j3H%(` zSQ7g2jAvVyetVvpi*I`8n*ngYGUYL-T~A%{a^25=YAk1b+eEnFD3fMB<~Me z)*hX!6mDPO5EFaBQRT=-ckTtX`laNh(f_ijpJC~G#X$3i8#hi)^c^^LJN@Ux;O+D& z+WTM^lhI#Qn%=23&-;k>e%i(4BzE3OH73OCTw)kd-7PI&6+HvZDOv6T*jrnor`2Ss z4YAMb6RjpDM3IdL8;|tnMY%PU-Y2rnKC#inzJgB#K0acIwhkG#tjBTeH#v?tavVDY zzF80NwH!C}IG!iRsSB|o=cxINpY?E@%JGPZVXlCll^i2@eniIG@RWZ{&g}(1<`5No z+T+ZRdQ`Neuj0MtuT>9d+h;ioBl66yj6&Jj#vJT9JT;Qzr7<9QFT37LKwUAtbeZ^-5 VHC8g$j%!bQd*5ISDGofj{{iV^Lze&m diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Content/NoEffect.xnb b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Content/NoEffect.xnb deleted file mode 100644 index 76ec3ea10fa77812a566793bfcf7a9c1ed2376f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1020 zcmb7CF>ljA6h5aZ3KS^}3=EaHfuTr|m6`;(hzum5snk+MO$r$-71zEfR$N~=+e(ob zIx;YT_ygUubYSEMu(9$3`U5&LpqTI3P8A__;91{&?>)bJ_wKzL>^G;Y+MgB1v@hB# z&rvdz!$=9ca%LDc}`g2uZ0Rd88m8o zmA(pZ#eNhk(FjBwDci5`ZhY)}&aQahmtzq$%$ng0&113Yih8wPf5J$#KC1h( zJ^&W7lPeVSd`bVB>l@%lOa5GC31p#vpu~kFnI~h`ZXR}MPechJL?3}w;1fV~m~egr zx1L#tAzEvBZQhGw7o)M-A{<9@V)Y_hxngR)@d8&)!wyDh+-&57wf1E;T77uRW;3dT zp;D9T1Gm9+|1Oy7c?+grK9;U`D*WDvUc`1BI1$E;+E;*LdIyB1wbP9X(6Sk1x+8t5 zaNfW1lzS2HNU7YAN6a@4 z9`l{O-X70x!&~xX;`u`HE!}vkZ`BRmFl#lGJDVq*wfZlb^xk#>njz&Q8~x#Ja224L zk-r9z;4RLI>@IxtWiknmjHBxRm+>&W>KRVC$o0>xR6cK}$Cly0ykMovbDV>gr1n{= JmolAR;a@0x$jbl# diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Game.dll b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Game.dll deleted file mode 100644 index 9ba4aa23b347a65f90979d58ad155b2e573c21bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74752 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 - - - -

A game component that is notified when it needs to draw itself. - - - Creates a new instance of DrawableGameComponent. - The Game that the game component should be attached to. - - - Releases the unmanaged resources used by the DrawableGameComponent and optionally releases the managed resources. - true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - Called when the DrawableGameComponent needs to be drawn. Override this method with component-specific drawing code. Reference page contains links to related conceptual articles. - Time passed since the last call to Draw. - - - Order in which the component should be drawn, relative to other components that are in the same GameComponentCollection. Reference page contains code sample. - - - Raised when the DrawOrder property changes. - - - - The GraphicsDevice the DrawableGameComponent is associated with. - - - Initializes the component. Override this method to load any non-graphics resources and query for any required services. - - - Called when graphics resources need to be loaded. Override this method to load any component-specific graphics resources. - - - Called when the DrawOrder property changes. Raises the DrawOrderChanged event. - The DrawableGameComponent. - Arguments to the DrawOrderChanged event. - - - Called when the Visible property changes. Raises the VisibleChanged event. - The DrawableGameComponent. - Arguments to the VisibleChanged event. - - - Called when graphics resources need to be unloaded. Override this method to unload any component-specific graphics resources. - - - Indicates whether Draw should be called. - - - Raised when the Visible property changes. - - - - Provides basic graphics device initialization, game logic, and rendering code. - - - Initializes a new instance of this class, which provides basic graphics device initialization, game logic, rendering code, and a game loop. Reference page contains code sample. - - - Raised when the game gains focus. - - - - Starts the drawing of a frame. This method is followed by calls to Draw and EndDraw. - - - Called after all components are initialized but before the first update in the game loop. - - - Gets the collection of GameComponents owned by the game. - - - Gets or sets the current ContentManager. - - - Raised when the game loses focus. - - - - Immediately releases the unmanaged resources used by this object. - - - Releases all resources used by the Game class. - true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - Raised when the game is being disposed. - - - - Reference page contains code sample. - Time passed since the last call to Draw. - - - Ends the drawing of a frame. This method is preceeded by calls to Draw and BeginDraw. - - - Called after the game loop has stopped running before exiting. - - - Exits the game. - - - Raised when the game is exiting. - - - - Allows a Game to attempt to free resources and perform other cleanup operations before garbage collection reclaims the Game. - - - Gets the current GraphicsDevice. - - - Gets or sets the time to sleep when the game is inactive. - - - Called after the Game and GraphicsDevice are created, but before LoadContent. Reference page contains code sample. - - - Indicates whether the game is currently the active application. - - - Gets or sets a value indicating whether to use fixed time steps. - - - Gets or sets a value indicating whether the mouse cursor should be visible. - - - Gets the start up parameters in LaunchParameters. - - -
- - - Raises the Activated event. Override this method to add code to handle when the game gains focus. - The Game. - Arguments for the Activated event. - - - Raises the Deactivated event. Override this method to add code to handle when the game loses focus. - The Game. - Arguments for the Deactivated event. - - - Raises an Exiting event. Override this method to add code to handle when the game is exiting. - The Game. - Arguments for the Exiting event. - - - Resets the elapsed time counter. - - - Call this method to initialize the game, begin running the game loop, and start processing events for the game. - - - Run the game through what would happen in a single tick of the game clock; this method is designed for debugging only. - - - Gets the GameServiceContainer holding all the service providers attached to the Game. - - - This is used to display an error message if there is no suitable graphics device or sound card. - The exception to display. - - - Prevents calls to Draw until the next Update. - - - Gets or sets the target time between calls to Update when IsFixedTimeStep is true. Reference page contains links to related code samples. - - - Updates the game's clock and calls Update and Draw. - - - Called when graphics resources need to be unloaded. Override this method to unload any game-specific graphics resources. - - - Reference page contains links to related conceptual articles. - Time passed since the last call to Update. - - - Gets the underlying operating system window. - - - Base class for all XNA Framework game components. - - - Initializes a new instance of this class. - Game that the game component should be attached to. - - - Immediately releases the unmanaged resources used by this object. - - - Releases the unmanaged resources used by the GameComponent and optionally releases the managed resources. - true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - Raised when the GameComponent is disposed. - - - - Indicates whether GameComponent.Update should be called when Game.Update is called. - - - Raised when the Enabled property changes. - - - - Allows a GameComponent to attempt to free resources and perform other cleanup operations before garbage collection reclaims the GameComponent. - - - Gets the Game associated with this GameComponent. - - - Reference page contains code sample. - - - Called when the Enabled property changes. Raises the EnabledChanged event. - The GameComponent. - Arguments to the EnabledChanged event. - - - Called when the UpdateOrder property changes. Raises the UpdateOrderChanged event. - The GameComponent. - Arguments to the UpdateOrderChanged event. - - - Called when the GameComponent needs to be updated. Override this method with component-specific update code. - Time elapsed since the last call to Update - - - Indicates the order in which the GameComponent should be updated relative to other GameComponent instances. Lower values are updated first. - - - Raised when the UpdateOrder property changes. - - - - A collection of game components. - - - Initializes a new instance of this class. - - - Raised when a component is added to the GameComponentCollection. - - - - Raised when a component is removed from the GameComponentCollection. - - - - Arguments used with events from the GameComponentCollection. - - - Creates a new instance of GameComponentCollectionEventArgs. - The game component affected by the event. - - - The game component affected by the event. - - - A collection of game services. - - - Initializes a new instance of this class, which represents a collection of game services. - - - Adds a service to the GameServiceContainer. - The type of service to add. - The service provider to add. - - - Gets the object providing a specified service. - The type of service. - - - Removes the object providing a specified service. - The type of service. - - - Snapshot of the game timing state expressed in values that can be used by variable-step (real time) or fixed-step (game time) games. - - - Creates a new instance of GameTime. - - - Creates a new instance of GameTime. - The amount of game time since the start of the game. - The amount of elapsed game time since the last update. - - - Creates a new instance of GameTime. - The amount of game time since the start of the game. - The amount of elapsed game time since the last update. - Whether the game is running multiple updates this frame. - - - The amount of elapsed game time since the last update. - - - Gets a value indicating that the game loop is taking longer than its TargetElapsedTime. In this case, the game loop can be considered to be running too slowly and should do something to "catch up." - - - The amount of game time since the start of the game. - - - The system window associated with a Game. - - - Specifies whether to allow the user to resize the game window. - - - Starts a device transition (windowed to full screen or vice versa). - Specifies whether the device will be in full-screen mode upon completion of the change. - - - The screen dimensions of the game window's client rectangle. - - - Raised when the size of the GameWindow changes. - - - - Gets the current display orientation, which reflects the physical orientation of the phone in the user's hand. - - - Completes a device transition. - The desktop screen to move the window to. This should be the screen device name of the graphics device that has transitioned to full screen. - - - Completes a device transition. - The desktop screen to move the window to. This should be the screen device name of the graphics device that has transitioned to full screen. - The new width of the game's client window. - The new height of the game's client window. - - - Gets the handle to the system window. - - - Called when the GameWindow gets focus. - - - Called when the size of the client window changes. Raises the ClientSizeChanged event. - - - Called when the GameWindow loses focus. - - - Called when the GameWindow display orientation changes. - - - Called when the GameWindow needs to be painted. - - - Called when the GameWindow is moved to a different screen. Raises the ScreenDeviceNameChanged event. - - - Describes the event raised when the display orientation of the GameWindow changes. When this event occurs, the XNA Framework automatically adjusts the game orientation based on the value specified by the developer with SupportedOrientations. - - - - Gets the device name of the screen the window is currently in. - - - Raised when the GameWindow moves to a different display. - - - - Sets the supported display orientations. - A set of supported display orientations. - - - Sets the title of the GameWindow. - The new title of the GameWindow. - - - Gets and sets the title of the system window. - - - Holds the settings for creating a graphics device on Windows. - - - Initializes a new instance of this class. - - - Specifies which graphics adapter to create the device on. - - - Creates a clone of this object. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The Object to compare with the current GraphicsDeviceInformation. - - - Gets the hash code for this object. - - - Gets the graphics profile, which determines the graphics feature set. - - - Specifies the presentation parameters to use when creating a graphics device. - - - Handles the configuration and management of the graphics device. - - - Creates a new GraphicsDeviceManager and registers it to handle the configuration and management of the graphics device for the specified Game. - Game the GraphicsDeviceManager should be associated with. - - - Applies any changes to device-related properties, changing the graphics device as necessary. - - - Determines whether the given GraphicsDeviceInformation is compatible with the existing graphics device. - Information describing the desired device configuration. - - - Specifies the default minimum back-buffer height. - - - Specifies the default minimum back-buffer width. - - - Raised when a new graphics device is created. - - - - Raised when the GraphicsDeviceManager is being disposed. - - - - Raised when the GraphicsDeviceManager is reset. - - - - Raised when the GraphicsDeviceManager is about to be reset. - - - - Releases the unmanaged resources used by the GraphicsDeviceManager and optionally releases the managed resources. - true to release both automatic and manual resources; false to release only manual resources. - - - Raised when the GraphicsDeviceManager is disposed. - - - - Finds the best device configuration that is compatible with the current device preferences. - true if the FindBestDevice can select devices from any available adapter; false if only the current adapter should be considered. - - - Gets the GraphicsDevice associated with the GraphicsDeviceManager. - - - Gets the graphics profile, which determines the graphics feature set. - - - Gets or sets a value that indicates whether the device should start in full-screen mode. - - - Prepares the GraphicsDevice to draw. - - - Called to ensure that the device manager has created a valid device. - - - Called by the game at the end of drawing and presents the final rendering. - - - Called when a device is created. Raises the DeviceCreated event. - The GraphicsDeviceManager. - Arguments for the DeviceCreated event. - - - Called when a device is being disposed. Raises the DeviceDisposing event. - The GraphicsDeviceManager. - Arguments for the DeviceDisposing event. - - - Called when the device has been reset. Raises the DeviceReset event. - The GraphicsDeviceManager. - Arguments for the DeviceReset event. - - - Called when the device is about to be reset. Raises the DeviceResetting event. - The GraphicsDeviceManager. - Arguments for the DeviceResetting event. - - - Called when the GraphicsDeviceManager is changing the GraphicsDevice settings (during reset or recreation of the GraphicsDevice). Raises the PreparingDeviceSettings event. - The GraphicsDeviceManager. - The graphics device information to modify. - - - - - - Gets or sets the format of the back buffer. - - - Gets or sets the preferred back-buffer height. - - - Gets or sets the preferred back-buffer width. - - - Gets or sets the format of the depth stencil. - - - Raised when the GraphicsDeviceManager is changing the GraphicsDevice settings (during reset or recreation of the GraphicsDevice). - - - - Ranks the given list of devices that satisfy the given preferences. - The list of devices to rank. - - - Gets or sets the display orientations that are available if automatic rotation and scaling is enabled. - - - Gets or sets a value that indicates whether to sync to the vertical trace (vsync) when presenting the back buffer. - - - Releases all resources used by the GraphicsDeviceManager class. - - - Toggles between full screen and windowed mode. - - - Defines the interface for a drawable game component. - - - Draws the IDrawable. Reference page contains links to related conceptual articles. - Snapshot of the game's timing state. - - - The order in which to draw this object relative to other objects. Objects with a lower value are drawn first. - - - Raised when the DrawOrder property changes. - - - - Indicates whether IDrawable.Draw should be called in Game.Draw for this game component. - - - Raised when the Visible property changes. - - - - Defines an interface for game components. - - - Called when the component should be initialized. This method can be used for tasks like querying for services the component needs and setting up non-graphics resources. - - - Defines the interface for an object that manages a GraphicsDevice. - - - Starts the drawing of a frame. - - - Called to ensure that the device manager has created a valid device. - - - Called by the game at the end of drawing; presents the final rendering. - - - Defines an interface for a game component that should be updated in Game.Update. - - - Indicates whether the game component's Update method should be called in Game.Update. - - - Raised when the Enabled property changes. - - - - Called when the game component should be updated. - Snapshot of the game's timing state. - - - Indicates when the game component should be updated relative to other game components. Lower values are updated first. - - - Raised when the UpdateOrder property changes. - - - - The start up parameters for launching a Windows Phone or Windows game. - - - Initializes a new instance of LaunchParameters. - - - Arguments for the GraphicsDeviceManager.PreparingDeviceSettings event. - - - Creates a new instance of PreparingDeviceSettingsEventArgs. - Information about the GraphicsDevice. - - - Information about the GraphicsDevice. - - - Wraps the functionality of the GamerServicesDispatcher. - - - Creates a new GamerServicesComponent. - The game that will be associated with this component. - - - Initializes the GamerServicesDispatcher. - - - Updates the GamerServicesDispatcher. - The game timing state. - - - \ No newline at end of file diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.GamerServices.dll b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.GamerServices.dll deleted file mode 100644 index 86b73866c013c95036008147b731d8f7db6d6cdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73728 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 YOz7WtCmF!ZEA=WBs}KJE-p#=O2Wbo{OaK4? diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.GamerServices.xml b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.GamerServices.xml deleted file mode 100644 index 50a5cc57..00000000 --- a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.GamerServices.xml +++ /dev/null @@ -1,1310 +0,0 @@ - - - - - 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/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Graphics.dll b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Graphics.dll deleted file mode 100644 index 1bf4852d68bea198ae23f684aaea2cd286fc84f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427520 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 z 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

e z(Ib2=FI2rGVm92Y_pYN>n@!&BthRoey}a97X~t%=cLyu2-5lf%@1N_8EyHnn&by-; z(}jo`i{NTT&1y)k23xFmXSLY6zc?DYs+peL^DXe~ralr>O%zU#dZguOrWOkN zyr{y^-LeYkPHA_wifnw3?5>7Wef)EAclA0Ep8uwJ_fRd@t@s>EPqhbKC&N=TP+uL% zTaaSO#&^Y@s#=Qe#Jj{9-o4b?J=AKT9Pi$0m6bNs4_8C?)_L|(Bj2!iuJ(RjHB%H= z^IM9%`>A1qc5T@KG>GUNJp$i2a%OEx6HMGHVl|V14R|TyBic))x z;kI*IE4^P^)LV6SQ^PHK2SV9HrJiBh_+F z?D)1$J~8SIt1Z%JjQU8Fdpl#W&sf!G0=0#?6u;^dt0oD$k`e1OUR_RvF(ZLWiEhLWpc+u!h+s+uP9`NQ=xRSgt`>t(7M zCaA;q<35RMUqR1quKH#7gi3W{lsnwilBxb3`gu0QKrJ9NONX$}0xQ#|)mfDL5WBNgqBu>=M zdFoZ7bp8D86^4209YITp*ks;neExc#>Mm#_*@6V^-R|o=PwgTIpWB|NMhZH$eWcqw zHAYa?_8~y#DRrYeUkw$6qdQ*>C&G5NYMiXba2u?U4vkaPBpX|bnooq|(zEdb^#CUt zmj&uwBEDJ|sOnU#kB`d&)t%@jjmrWxh-f*hzoS1yNh8W(!8=~jrK#n@)^SI4<8-x4 zB1XZzHNudgMiTMeEklhZIt#nT)W#X=BO*M@L>LyTrfFC%hb8Qo-*}-KNQ9nwjTfmU zMBFn=Ew_4ZXq=^9vU=`syhM$iPGd$fm#Ila81rP~WokAN#(ckVw#sJIdFHC_MCkcx z<6Jd}2tB`VoTnDqc&<<(;ZfiW80*f=3)&P^Tj5c)MO$) zW<~09tL@b$MXG*YU0b%QK15hO2?jyy#L#8+P_{K4^`y zf9Dm0m9+CaBMgVEwss}`oa?Ap$rT&hizQ=BZ&*E}OK!W=Q9RfVTWvGJR!6BN38o`f zTXxAsmm_K-A3^=8k_y97HB->LCAr3OnaW~X!8m%BRpzN_}gpc)|NhWhWRu~tg)eP7My1mE9g`d(7YiBeeZ?g+zW^^%}s zB7G*0S;lQdIjm~;D&Na$_(E>GPPSx0-|sE}TWOZ1c1Od9YRD2Key#YCnn{$-@S66T zT5P55zSq=BEA8|BSgp0v8Q;%T<5G$VYi<}xtV`d6RgzQ{JVO|N(0P#Ej-8KIl^qv4qIuexxQx3<+cHPvdx}al9kq*y|t@W z+HLmLdgNI=&zgg@Vk>=OZmr$7(og12T94)EnF90Y>eo|CUdbtKPlTbb)^`=BMMPcl zIj!7N;M-TL60`|yky_>&Zri)3n=w)=5Of}BpjJl2&lZC;ueIojJJ@``L0Tx$Even! zbibFh7#rKmTC$C8uvTef8=}?N*oJDs1r$@?b#FiC;aU$tefC~44A&|Jy|g#MG(x*B zX!PETE+aH`9WOT-Y_Dowf);@7RV`dl9@wI_VS=`REn3Us1bxWy8>yMrV-)zT4g1n- zTA(1@&tB8Q1>t@+MjIvw_p>otvLM{g#%jw2;eIw&J4}?W$CkxvRf4c(vD#fhtM(zS}Mnv}{42f-O!f67(h5 z;g zNZ4?voubVYggfn2En5)ov{SVbBDhZ85BF)cazS07M~T{9LH+l4cAci_H}Sp?-M`gu znieQ%ER>tBg$bGm<)&+~oM62;8fIw5%~%evrFQwv)Iy4o&M|zNX_nTD=$3?MnOWLQ zq7=4b|1Q5-TFh4TtdQ|}qS;zL(OHJiFU`?{iqXc`;2f=sAY6lUv}i%N29vZzLAVB! zw0uFh2Ip!ef^ZGa)vAg38l0!q2*NcuPt$M5`qK5dUgm2)f^fae*Lo1$s)sX{tPK)` zGnTBS3Bnmm(eef1jHPI0f^fzbXw`yn#ujMz1>uaPYQ`PBw>V>|S`bmX9%m&@>mdkd zB~2S9XwJdTuCHr}f-(b};-D8$rl9JB6^4~sfuPS1<{DRO<(z2#R%s!7u?C#K3x4^U zc^?v=ztvhO5ud-++I1p6f2%dqe)Qz?w??Zvh{TVvHQEh9IDcz2^$@q={H@iz1mXOx z)w&46`76*O1>yV^Xo*C8{?=)kf^h!UX(fVipI@()3&MSVy;dU#=XQhkKoHLD2F>RU z-WJ?<3$+kIxbGHfg9PEeyHSf3g!}GBElCjWyBoD^L3k8z)QSY*3fZV#5`-&clU6GT zSI8#Kc$n9YD`c}~7KAHgv(`%xu8<;am>^ssMcPavzCyNW*@AF|Y|%;t^*;2p>sIZI zpjQsP=eJe6At>(97}GZGfuPq9-FDfgxgWu{r0droN-z~`!Gew)y694@B?`I(<+f{C zf^I>%?b;=xoAn+X>gT*es}a=sjVp#7THsNNNh@ooR!xK}>qEa1?fNma@s+hpyGz9P z@?Dxw8QO52edxDK)1N@%>uk5yg@~`SJzCL8wB@n$J8${z(GHh$dhhTLe*3h*Q%E`N z%fp`jWm*wY9{cfdpntihp5~s8N4oi+(~K45Nly*Dt%cgrFgr@KqY^v1WJiyP@|gKZ zl>ggW!5Q9`en&?5U(~9I@VYM6zgnv$x>;}jktZ9zr#&J%$C|)*yYFc}XR#c=i~626 zjA*6)^pPq4?`g{gT?D$Ml?czL)+hO2(e4uQ>&OqZ@N*ai>r3(fK#L*b^?j(#B;xgb zsO1a7|J?gfyGn%hE%yIVGo8mMEA-$7ILxlCM@c%@sCF1qn z)ET_m)dnf*uO8e;J0{>P9Hhq|D`rl&_$rHv}_{Yzpu4RM7+Llv|bmm9N*o( z(FO~`-R&DKNf7RC-)h-{aCiGwJ0J*mx4T-UAl%*VYIlhE?siXuS9IWv>2Y_vrv(ba z-R(OqOc3sF-)X}H;Z^MSTB0Dliv3>87KB%^_qAd{colnJJ0l2p#UHe*f^b*-L3<ZHlTs- z4iSG|-%H0ng&0AM12;1qSdnBkc*nD)RYjr(ptP2$MEZ7?B!URPgA7g5w>nmvZ@!Kv< zbkTywgUwf$C};-Qe07S6>fKHdhXn23*3GoATk z^vq!^kEaAQ(}feIv*P0!0YSRZPbdm21q#*$ead6v$cN~L3Br*N(Pa|lv7^UV2ZZPf ziE!lojG?+R;rY|?qWbN0)mB?GV>{h_VZ(3II_UH_cn$cyOb4A0Cx{YZ=%5SZ1fL>r z8awC)3s0XD6<|vc6mlXLY*~VOfh|l|BC4HI{u#5j>|_?hzQF%f5v+ct*ZFAh5sguAmD*FY5Z% zqAiEjmbVIgSr;ql+w%5-ujsM_{aD^LaHy`Fi0_fZb(gHPq5g1Pt(9`TN9fp>R3Ef6 z!#i5%Ma0XE(gj;-L;X>@9#+cn9<3W}Q|>igg4Gsb7^_RO(uVqDb@^7x@s8D%+LRlw zt0c-};in=3<8;Q`*p@st_|(9_cwOQh3k?mNq|5x8)5ud}1E=Wj2=X|W6*yHF_zl`p zng6*B^%Hf2t<=moO_yz@6@fE!RYbghvvpzLVmW?oGh4@)4217I&wK*Y%Sd@nSP6R2y0k!_CrSH}P9j}Ox`Xsh(r+wk#+G5Jw3gV~JWzPI4rvYP z^TC)u2vkBfle?|*e9&Lopr_mxl}GCwilt_O%4{yE!WMw4ER*tgk^YqxTKI=r@E5q? z?M0*|pfWq~x9R>J&>!oPSwaW9XlDA#!>nOv%rIr}2fvUXD|~nwG$0o9JA=ybUI1)= zA4sd{$ut&C)+AEQp$MSp$cDd0*N466ILeH_>v@V7+ckx$s<+=jG5 zGj56h1I7Ox)WNQn|E8y&{j)awXa4n=VRBvHZQE}TYl#>aCWZ^^&o^LQ!9v9=1*c-D~V9AT5@k*(J48Q5k#8`}6l zny*ZL*5GmcGtn~`R2A08<8vR|XqfY7(XLW7JX`%)w0}Am|AD{RW{p7$tuqB_-u{28 zd^C8!wl2bcK?FFnmqOYywvcaDM2_tUU$*h#5%{=0KEm9}+tz5YC9?ep4}^S~jU?+l z(z;_7-*Z%FT|`zsdJq}L1dcxI3SsaER~^=K79H>4!}H-P(M(D3;a809mSE&=pz!8I zP>D^XoH>+}392&O*(~|Rlz)KoPl0OeBB%~`wm(FE1o?19w-h7e9;h-sq&3Hr$Aey-za|J70Jx;(_U(u!`m+E+V*%3 zjvl;sgL;Q&7Rz~LBbCM3v5YWU`3Q6We_rbEV(J*2E6omKrg%G#QOoN_0N%a?IhNJ+ zS0jmMF&&+W9K@LGbL_`K#e5hsm>0gT%zT~0J9NPFuUGiv^A4XK%t7{*%heh`v;TMF{9RoRH1c{e^8CoST z=f5|GJpSV&S+`16yn^Dh1M|rJ|9+KTfLViU6;PF30@c_@pgMLF)Pa2gs;3dIM^{RY zc2`P&wetV7n0#Nl12rn_2T;q*;_gKI7_X#yHh>fotPuj=Q6WFj6Xj{{*&4b zG>=9R=MP5*wB+$o#g^Fb&pgL=e{Kdo8fyzGQOjj&xk4?6U6-u5SLyK@g8T#PcFtN25Q)53t4juc}IDh4d;{f%+pF|_@ zXVLf`(jWd`-g4i=dVOf7qR?jR^&U?{G^-D!ZLgxAFTgm1LE#OCq_`R-cCw&uHS+u? z)?q%X<;sEQaQ|$w?j(gzVc^5B;&{HizOG*w4c7L0jMl;?za8YrtOMmgzN12WU{nu* zRTX#V_@02DrtS0pYIi+N@zH8~{?ZtZz+Ybj{C%mvv)Wt(nC-7TvCT638rp;J_rxCY zPnvbTw!aqTJ^g1RVEZ{*#k~~z_&>MyvCpAUs_s)KtuDx^Yp3PJ$9IFqs=O5K#ww#y$aOVW#{9(m{C;nOD+g=A^`!#C6 zj@r*h?C(AQ-f9!)KWJggP1sKBU8esa{S8Er+0PV*-$#Wze$Wy=0=Di zrgdWdTul8nQvlv0Xw_dG9dqFq17PO|mDnOm<2MvM4ety7Q!D&13;Dnm3wYZ4c))-1 z+kW2xp8+X{>t0G<0F~j*s<{7Lp&WjuQ@3H+zf$gV7Vgi;@V;Oy%df27gS5=9Q`zpM z`eKZuFNV+O;vCwTa_~-t#JIjkIXv1uNW**WK~;DMC9W?1eFU%ZS&BIw@+CHX`yXTC zw+}Mi>$aSs@NTVr1Rkf}4vfHCf_;>kFXh;-oVvct>{YVzGd1`B@8;k*!1qK@3%r@S z1-9)n)o5GS|I4)Pogdzw|BdpUw#_c=T}M!rJp-!2JC||yivo3kw=m=GHwF~mtn;TT zvu%*Cu>GL$wm7&B(b!o?!)Fap2X+}0KG}iRqr2`B`wi0e(fBIm?Qz(H(dvWJy*TjX zJG=+vz&A>uGQ6+ZKCQ6kapIB#jlI@@0D5swJS98mfCqvU7Wwlw~vqQ(TnyBqjAO=R~Yu% z(z}0_Zy%qp1lwN!d9?qZO7Yno3!|a1sh}#uQPpU);XSr6J`S|b_3%dZx)sh#J-(7{ z_c7aaKrF6j+fNGrPR?H)`)};UW8^JRxK9YGvj6VB@mKZQ=JP$7*UJ^}uG@cJv-SU{ zY1{b!-N?Kp|F`4+Rex>kwH>#+2XIb*0#(>=p!g1P%)#pfcpoSz+@%NA*nY6;SURW! z)4)d$Z&$~a*#>eP*{}PtEc(FR5y)4_s*3!_V;aFzgSW$D%ulFn6qUUVs=#~RvEH{p zHFgyg-u1i>>pe`KJ&s^qqd?&a3QFTn!oPu)7~VaT=}w@18a_M!AMU;cE~;|<|2=cg z;DQ2{yQUBznt<$!qRcSEGRnTGl?}r%z~sQ-%%EVKgr%mf>Q#SQN?2*yZui=~mL^te zmYQ3O6^8BBy_UD~X7&HR&p87FsA<>V@ALm;J>U14=Y8Ji-PiM;147A~L4W7`rD)1e zbuV2%1D5gkQZK>&g=*?b$seLL$fpY3+n#3|_=Pn4|AUu_yh6KB8u;v~Vg=iH9!)@r zRRif<;v(hA_be)UiXpmBbSad4GIOE0JmnoDm`FP~`I!iIE-&-gWzF^ARqSz+$aj8t zyLGo=-k#lSu!mPaULzu}U_A-OR3IHWtUKSP-iR%>~^8 zT7>^ru_xIY@DCG>W{<#KOEj9TgMSkn%^n3cgWm}GF?N-34E!E0?^@I(CiwGYiTm{5iO~gM3{Cm(r;AHP10>?Z;6L78XEW&zW#_kOv`V;Z_u-%>;lbVS2PFz?ceer`Biuyz9I!$78}u85V}w5dHAT?;B82GaqtOt&z|+ZyP!WKc$cETd{1fcKIm5m z*Q?ec@0$_V+~7qhfp2?nX8*o#Zt!OI)`DW-V|${Y^W2_0!OOAp+tr6DZHGy6oKkz7 za&eOQlf<7Q{uJ?Nh(AO8VOU-ie3*FD-JaKj^pqDprOidWi}(iNZTL0_UlI1$`+CrW zDChfw8-#H1yoD?eUZqI%B-#1W>flha5K0!#P+VsywP%pphx#A#kvK6&|P35b>-1m*( zFR4v72%AwdO{(2{4?uo+?-A&HvG;wHz}qORv%+_X>$ECx*T=zUNna3oE%$<*`oL3E zCa0)OPEnaO2tUADgAnlM>p{oK_c-|;C*S@;|H`P~;e-uBB6NZT-r7TfbAh}q^@IIS z!Sh&R1l~Jh=<7Pe@lM3h;2@GG0lyB`Q&>Go0uXAgZ-Zcf%_M=hpF$!0ksp8~9{H7W z%6%>HZ4ep=mjRoE?Qcq>w89g6y+<_&M@fE~aNs_!IU30Odwrlw;NMYg5cH5}#j<^q zy|tosAKuSY)$bcPN-M71Hv)DZ+1KLTAZ(12|W5W0Zp z*u8HJ2tLPFyp`?KAgqU^N!at&=ux~?^YniR$tqzddTxVojzaZ&o7=pO&_Gy0xR`JQ z;j6&u;=6B;Lms~cZ=xEs3G*LG9-_tH@>uVCn!c;HNa(RYZq$5~UUBezs*(8^)1rbC z#R2;#j5^IC_ou=4x>=LGm!Mu|1TUd_nJ@6MVi{_uI=ByNITNvH_oLjz;{Exftm4i4 zry&%t%?6a2L|;D%96!Z!!EA$HdTEy!K3cU}*APBro!-e$&vM=K?qL0AVoPPKWG zYV#D8-YF`*Gf3OMQO5;7JDj1CJgI2*+i(nWUf1WSuFsMFNvdlJ^ICQANrY{M4sRiS zRJ@<|QSn)y&Jo3%}NO(W(ui~@YacJ@u z@;IgW6~g1dUeeijzD6E<9zq_4z(d(S&!PQ)H>yb$edru8HgalBU1CajpzLBIEDe+l5QZgS3=rdiaM2yp=TMiBP znl9aYsKtA_wCvEfVbi6@fQiu09F-^;_e|=uNP6*5P{<jSb;rLM-sE z-ARNxAfIQo;?J<$r1CmEIiyK7^l%O^^l)*=5J`LZ2H@nwWg&d#vW4WK#1;(W_#ok0 zU(RD)q~h*8;qZF!)rVL6u99kAs}ETv&6V-+9h^UWH?Z;Wy&+9V z^YW0FD5qL+>0zF>M-JML9^ox>Fz~b#cjO--Cq(U$ z7Vp#2lq0wLoe+zUv_ft?QsZ}4nt7xt;DqQng7-D0+m0L8nh$QkB)koy5E0lagRb1X*q;@Fs7CWE5_L)g3%%l`1k!BKU z4krsiWFb?wAm%-3y(UKF{US-^BSQ?VVa^iyH``*M$tB$KX{iah!@7m%l=0d*ExmW- zSV#@7&cfZ%N+Um-LIqmI5Fv@NnM74APeb995S2C;uBY)8Be!W-bV!skb4jn-m3yao8}(fKHoiAR?MzbD*I_~YT# zki7lUV+eH)p$yP@W;8F!HKWc7n_qho_WK{>IO151-y$je*sG&YOOuYhIohP=b7g~& zcZ~OrY&)NWs=!;(s_zeO5*8dgI64vI-ci`!3H#3>mhVP=3BDC^t%PQS@OR)W>IFga zNRIj)5PXvAl$XylA*WG3U%|rRW2=#d&9D71IudE)qi!q0HVORwJHFC@MEvF0Z=)N; zzVFuf@%iiReu=`Mccn3j!ti(djcE|BeV4~*AT$%+Nw@~MURmQ&U!xV;dcxrpSAW9w zguPfFuYqHFF+Zb-6RW_X!^nO^0|TE4>y0ZC>{Q zYrK|@@nO4rt_1GuS$bVhwxie7F+G`IpZkFQ`z!(u?lT`ayw4p#|2}hpL49h0qx;kV zL;K7GM)dj1*q&^DpVh#XeV0PArZ2a!mH2JM?;?IT@%#F6%Ln?dgZ|;Z-2S_L9|M29 z?~}mRzRv(p_T@2t(RT~@Q+;0o{;TgRz%zYYfIs!!4LsNPEgv=je0XY0NVAOO zl_akriHjt4B$-E&`6O9Lk|kvA0kW{nhv#<<>8vB24a9FIehcwiiQh(HcTm{fB;QB! z10+98@^{JRakAO!!^`lb4==+ne0Uk2^5JFpFCSipXMA`Wo+CTVmzRm;%gdyvFE5im zzC3q+zC3OHeYu^%zTD1mU#fjyZYRi>+ZpZ4?S%UBx`^@RC7eLklE|8dtm(;G23gA_ zYq?~tkgVNEp-L!J8HK8(P&NwXBHudly_J0Dk?(x+T}U>Ukj)3k<}$Lml2W*i!mg*V z8z}5%3i~XD-AcaO$ae?%?jqmaBmd5j~_3|{(iiy2K(`nAMVFX-k&ss{CEkE_Tw!%f^=d?CxLV{ zB+-*3gCv=LyuNZNY$3%mjbgcxVksm2O46?(-bH*Jg`G!|`6O9Lk_Sk#j3g^bvWD!h zgZ&UT<*NIDW7*cJ;p~>a8au~ND>%9=;cNoCkK_k!TyoRR93?ZyWhET1y@}(d8#pFS z4`(y`UIPs5%dIVCGpB{K#bmjWm4Ls6r2w5Q2RM`P2BrdEz&?il6t)YfqZk9(E8wGv z=V{wXzB?J0?_@mGPG*L+on&Vx+1yF?cj8^&63FFHJpBlT^gt77+etQeQmS@R3U^YB zJ1Gs#f;YQw3_h(+cr`mSt%dj&lD7z4(xxESY$IP$#pR-kOGFh98%UBsh39e|NpvL9 zk)~Neu5TvaMg_T~k$jsKYzs+RNVA0`pQu)|UDG%|LHPc(Hu7yF-!{@0MQ&3R zDV-uuPayGuBo8Esj(8o(btEy9#7q)1Ng5U8b{fgInIz2$&*d$o-$IfW@@*r&P2njG zl8jVh5>K1IwAve~k|=HD8%T1Ev=nk3$#o>xk-UWDW|El6*G%$xByWWLmuZb8Zrh}(@4JS$afw2Hj{5N`8Jd94)WbWzAYqaA)OY|X(f3p>9l&i z;O#fPjda>br;T#dMw+Y#&zIPPa@~V+-Gg%7gK|y2f#e%VzJcVcA-Rs^I+E*1UPAJc z9?h^>(u2oqCSNo8nn{0N4_=1z$afy;HWljUa8 zY$lx@TS(GEIxVErN)}p4ruZDaz&45qu@^7TM$%~{-$v40 zM`72IW;02eNvD}~c947r>9mk<3;DK?ZwuLMC7o8%X(OFB@@*r{Hqv3esor~2jrZm$ z5qnb!^rqVH%}d6gbOK2ykmP}+8AzHM($SEPjwCwL)RCr+G)sE(+AJX*Gs(>)Hfj>Zz?x$Dlzg6B;P>t4J3IW z>1fD;hIDi!*O8`LOLa+V|d3nzB=A|@`^czXDk$f9Tf1Nik z$!3x?lcbq+c96V<_!hF+LcT4e*-E}`ByS^~Hj=lI4(r2hihU^WeJJmJDAyzpBzYjo z14*tSxsG@p`Rd5Ggyd%MXQr7+ZYCXbA6}C4$afv#4#Ji`n*^`vt;Dmwl!m@s;!nJW zP)Cvy;^z@Il4Kq6I|y3|+eprQxE;agAH47TP+oj^UPK@2`{Wzw(<0nAMnk-ge0Aij zBmEMRo5+HhBxcevlg>QyZ6tXkNgBy_9m$(0R5MAMNvD}~c93riNm|Iah2*UyZzFjd zN!rMl`BE-?DHpz!3ty@oU#b`K)eve)r-b-DPG?@Ewo92Ez4d#B_P9sSg z$+uCFaNlO)n@QeG`pu;IYCoRl7UEmTw}muYNaqCkwvoJzblOPXMmpkER7Y1)Ib20$ zauts&;3_Hyk_VDbAo&K8uTDW8N=LqCl9)-ytVp&Jg(;cJTEN@QmY`}7V>RV zkjvXh-bR{i0AH7i1Goio0JkO%pjsx0jwCvgn29%&+^k5rwMLRRlBAJ*n~85$cy6Mv^p=q>;ill4djU%_MJDB-~mH>9>%)h2$-y*+zUD`L>a7 z8_C7Nl;**d{=rnvgL#euNghb@K$7T4qEmRT-$IfW=wP=<@-~vRQK&YOh(pN!5Gti1 zR1PEw1b=2)Ajx$KQfUm~?NCR)X3{j1ubIL&lB7}LsisJ?ndHr+*+P5^>9mlfjda=+ zp3*av(leCW{7{|}aVVDuf=3%8-$0V+NTO4C9?DF-nL?RKvt=kB>&(MA?z-j$UJD~Q zAL!3#tNH$1(i*S{*cK3tQ$g`sj)8=_Knfe^eN~df9L)8b30s3npLj9E`>J~!x)AQ$ zM#!$?zHA(!mSaf<$9YpYo|wYz3z-}P2(^SJLjN4Dvm=iqo61phJ;!x75O3mWD)qi< z%d7^%CgAt8UM2nnp!Tu1y4;#-Mtb@08L|Lr`F^9WlBHFt2yIvE#peh1;azj|NQ z$H{SzgX0wEME2R(EKm+84>Swp1T6;L3%VclAZRIQ1?VNv%b+8m)1dD`-m1^WUJV)m z3IipBQbFmUEYMU?J?IwDZJ-8FBj_&B0?=a6y`UAKRiI6v7eReR*aeLP#e%G$nV?z_ zp7D=e0onw50dxfPF{lmnBPdZq+@KjCBgh0YgJyziL4N~n2fYQ_4>|_=92BocS%9X4 zZUNl}x(l=x^c?5~(2JnIfnEar1N1WJEzpOck3rvqdU&B+K>a|&Kmnj&PzWdzlnj~z zGJ;GXGsps}0@Z_-f>wh*1$_?s5_A?cvd3p*$AGLLC#V*58>k7i3A6{aA9M`#Ip{1% z?D^SPHOLp#4>SlA3>pVY1Wf>?g3>`1pjyyvpgTYdKs|Be8jm5_5MiNHWLCmiK*k0$ zhI^5W`GJB#5qMQ@l=3?St^^tlN&t;fe&YovhAY50(Ukqe6gM0$w=)jJZAO52_(;XY z^;h~Gt++9Y8>_f+aC!K65KkA6lZQ`K-0_M#0WO}yuq5U8M8%z?xXEybgESy+PYdGu zDWE~K~q57ekO?9&jR6kE6WCP+c}_{ zK)E1pD-UD@<%77*0?>3&A&94`2;>hc1_gnpf_Pm_0|kJ%?nuz}ph2J;Ks-M;g8GAI zfc!x`PM#hfSBXMAohHypfw5A!{vb1m=etI69dLO#GzXHq;Bx!5%J12VI|ptks1C&K z-VWmRbO%TSng`-`8bG|9?*wr>jUX<+8^q-cKtn-`L0rBB#O>V+@(1B1Ws2v1xV()# z0OIlBIx(g1A-I{yz*6P+GPoMhV~YE@;ywWv*=8F+JimA)kN%MACgt~L#eE8HA?Ru4 z_cL&L**^KdJBXLl4#j;HE|>2F@%Ud?+&2_=H(Z|2J&OCL;_idX_1{*0 z?^k{wgv-LzP?nVpj+`Eij4R_jANGseg&>;qJ7oC0}+!7cZBz!UUhq1qn zl|p-kzTw?JbVz7WD0ZKrPx{1#Zt>BE?(}g6)dn0GnA-_Lzd`To>aa({HikVF z_F~w}VV{S69rjC@DtuV@f}st=R}3E+{^-?)@T~Bu;imA4a98+k;rE3P?f13My6~sN zUkv|y_?zL&uMX<>sn5aiW8oi%e-(Zv{MT?@fM#6zxFzG7$KC0-&~NLwm&ffJcVOJ% zaqo^hG488z-;X;tjzy>=21i6iBt=Y)m=;kUacjgw5t}1kjW`x@DuP8`9T^fiJ~Ah= zGO{7^e9k7@>HZ0H9RUhYC@DY>ZW07QF&1_qAH`7c-KVLMJJJ~_0i8q?}$DY{cW@= zW?)QoOnOXqOi7G0=C+vP0c``84O|>EBjEm+6*2F}42;cIO?$fxh;(Eo8jt`5^jK4m z_%Gwv_WCj2H(^9VbV5QxT0%)eb;7)a51mVUwrOOTs&0p{Y&Dy#HSOtByLN5Epcz+fyASU?o{8QuK9{=fhHsPuX*G>qVFmb}<2^ACOOt^c( zh6yiD*g0YUgyR#wn(*_4K}jJ=Vk5TrY6luvLsa{)h6ARbXU@^Qz_z&DGlB+AwXDHeQ>h&C?cZ%e8Z~_iNW{ zU(&v<{YZOK`;AsR%qyjT$~7qgDIqCiQ^uu4rzEDF7@VA$b0 zV|7_Nhi-}P&Y;_Z9@PCsw^8?Z-Rruyb?@oE)P1k}RVV6O2KCbS)eq2*&H(k!MEw}*FP}yN&PeWzw6)Bf299L|AW3y>Q$)`shZS`)Yk{TIWQ;n&_GA(ZK-#q zu1$SC^F=k1oc?M0SLxmv12O_K!ZOBZ=rc+)sxxXc?#Q?| zjh7pDkL#RO?6lsVvOfXz;C^ys^<{IuXEH^xD*kagic-!!qK{eTL^1#W% zCkIYWo~)njoP7J_hbKQe`JKt1P5yqe&y>+q!lq1^a_^LFQ{I@;I_1n1pUfedk(t)a zC7J6ppUhl6_~p#kGWTU3%={#?Y4BH>KW08YcwkmgR$P`X%awI!*5a(TtkYRiwomr3 z?CIIYY+JS~`7jRo86lIY4(@d-)8@uE#&mf z@yQ9!iOxyRNzIv@b7PJvry{2&=hmFYoQHB&=B&?oG3Vu+*K+pe9LPDEb38}ybu#DM zod4uJ*n4Adb#6%R)Z7`lmfV@SuH5?EJ9F>OeIWOLau0fK$bC9@OYYxucjUg2dm#5{ z?(y7Da=*y^CinYXue?5aSLY4S3&;z}3(p&$mzI~A*L!$g-t~FcU1Q9v&8r?hH?QY4 z6R+7bd}ZEKd3&#YKF@df&b-}u2l5ULKa%%;-p6^L=k*_cChtFas{9`LZx8REKO{dW ze{_CmenS4l{FMCk{LK8k{Nnr@@=Nk9`8Vg=^IiG%`3?E^F?<$@0iJ}bxzI92dn!A}Lh6?he921FMo6{Zws72a5AD|8h$6q*9c17-$n30PA2 zQozc>M+#$ytuK6`aBJbt!Z!-{6&@`7ps=m*o5Jr4&ldhxs4ns@>R;sT`|hA2MS(?$ zMSt;G?Q%PIbOim2=~wF4gSO&AK+<{oFnX6$8{#ubM%x`$VvT6Sdaw#>ziO=W z?9i--=3MyR0^j+N-i7ttLN=Q%$2#mUSabak)?2Hw)>^~vM{bwm-Kk~B@k-=)6>|JA z-j`~^-?yoA^)%j>dX~M9wa^Dx-yFx<=0mJ!K4vZKJN#9t@7ZpK zH$T|F*+KRLLY+gXU!eUf`zQO2{fuQwPocLkT<{jI5&8%tgucQ^!AI~H1`9F55Fr8Y zMokok36r3a4vh?GOcnx!A}nq;4SvuYtMQvx0H3;fA8f53U>I%UEDt7%-lA zeO)y8qPj$2-k@aQxIwAFX@jQ#!w2U9XVgsv-Zy9l(5J5%XsP3t_x7}cpH2MTb$0G6 z)B+!>n+t3re6nsH_*V$`)!hw#GkXAd)m)wuIX&~|ZUDb9OgmO9u-NjQonlR?BNzlB3a1PG%c^_0$72-ZHaR@$_6zICB-Z>>`{;xQOtfRlNKkCfvB{UkJN( z)ek_gH9S2-34_*fJBfr34ynclWX=#5@ar|)=7_%0*y@hxs|V(;<(jhO#UfE*12c!Zpi=L#C5zLeH;9RoDv>pBRZv zU*!|QK)I(>KQR`(T$^7!!S!+P7?Phz^Ec8Qw9o~~$_+g1x(&R4t=!Pm&dXt^Z{)sj z1iuTEEthTl2z>R%lfXd>eXil5h5=;@Z5t^rLU~mAh4?4?^3g*cVQ%fkW09?`++b)A zJ8TnAVF2MM!Vfn+HG;8!5(=9+fA!`UfWe!2-XA91u$kA_bA(&TSN}9mL+;aDKJ95c zw)@tn>wtq6J_Nk^c^=mBJhyWz;UdEBvCF>xFLF&;C;UZjGl@`6L&}TXnw+Zcsl8AN zr&FlLUath8)`-7Q>~dTevLjn)e(}oKkyA3}uY3fH|0^%U3#Cdf6FF^{n|C?Q|M^=h z^4@DJFV7KMc?ri7uiMJY^V64j&+3jBPfzzc`eU^tr|{js^AeELbMH3Je=;~Ekg*>I zhXI$7L>~P-N3&PA@f^LijgNkV7S4p`iI;iUHbQwMl=VM-nQMMaD36w&VSQfdnD6AC zvUEGQ(@eN!J0ErBQ9>RuhFp6DalN+v1E4&TyuY1~ir;MKKjvQ*)?s~t zxY-I+VXcDq%b8k`m_O?Q^kZH?{ACfWpZu{R;p?ZDfPOf2@q&Cc)>M8tnZXTMtXud> z@2?;gRzbbszJQgMKhAM_LuU(6g*A{j~f|zK{1+g{vSL1Qgg=b~WTb0sU~6(jW2xK!N>;Q%4onO9LS9 zFARkIY9PKljMF{=Ypg+#j}!(&J_3lpnSs+ve-fhra(Xu*#Hs#u_)17-@TkYo`~ z5z--68;afB{m2IRFs6}}o^1n(rAC72+o0Se46n88;Q+5`(E zRfIEz3dnCJtQ4$}TL~+KnUI$Q1!fVdz?T8>JvhM*zLc;;m<5T6&?q<|zX>R?8A2`i z8wsx$=0I`-5Z`1J>cLM3;yYQwE#RjDRjfg{4LDD@19*qf0K8pj1l}gx1-w;Q0K8XN z1iVjJ3|u1I3;c_4KXAG5AaISa6!@^P9JpFo0eo6m1$;_a4csg|4BRBF1wJV>0XGWG zzzxDkDyfX9XBfS(I506!C61b!;~4R}g;3HXih58&6r z%fO$7?ZE#CuOeS(g%FU zKLQ_Bodq_jeg>{n{Q_L8`VIJqO2DZ3uu253QK^BeRXu>KRK0*J@x2Ox?Z?+DRP1fS zeJWo_-XeTc)erK$K=gOj)!=s%zOLfu!fyaoY?o>f_}73c_O5CO@L#H7z|*R0fRZ>8 z_-|DJ@Qf-D_`NC^I6w>mjuyuNhl^u@!^AM)P;neEL5u_ziP6AJF%~#Qj0a8@6M+_S z0`Nw0BJc(=8F;;@1>Py@fDK|Q@BuL$sd^BIyo(0lBjOZD)`?l**Ag~~IpCiV^MD(~ z0^mlm2s%#!(MrXsz|G=x;IrZlz%Ako;8xKHd_^w>T60 z8-#nrD)4(nJMb-W7Vx0x1RfD0$68gkz+&kX%O?Dm6hqmM~0ehCCdoV&kO8z(){9 zNl!o$Nf<3{1fL{rf^UWN6!>x=Mmgyj@RdM;&6J)4e>0&?dI6Fu!W!vC$nAu)q`yJ# z0IHZ%dI`LXaJKXhNNNe^NH0TPM>tp74tYILV7E%Ig1-eQu-l~;@V5a4HcxsD{2f62 zjS%S#@C`tGlStYFzLD@Q=}qu=OK$-eNc-WtNID39ArRw$bO`)CK!M#W9Ra@th;LL$ z$H3o5_<-~tBo7iUl|F#{A;M+ShmbD^qOD3FgMWl@opb_{wLpPADz$-c0t#%s^eOme zpuirNJ_r985YKU>FTp=SxKa8Vk|zl_OW#1giSQ}upO8NdRIz8I)8L;ad|vtw-df9{Q}8O!d=pDkhc)NCJ8Emy$(cQ zkVNpi3HM5BNcIrEDfNJSAK}|lFUa2l3haR74SqjRVDCtM!5;()?6Bku{tytWBdH(w z4}b#uNV*#Qhd_a~N&~=uOn5>X1j#3aC#4~fw*dwAnKTUir$9X4lCA;&IpLSmNbp}t z0l=@NK=^(m1%p3D_^lKI$v=S@<)ks-PZNGGjfLbppuqkug@Hc<#Oh8O2mS{jW+EvP z{7*o9tx1Xo{~yA0QY<9D5dJ2`L;fq_0CghxYt$2f!Rm>?Fm*CCW7S&lF+hREt99Vx zfLM*FQ^6+yu}V>=gC7sX>P2k;pF}uGJq40vLajOrat&dMItOwc5c8cn4}2rmg}%6NtYtqqc*uBAl(B1%8g&39M7s0_)Xt zfOFOLz}wWfK)*qK8~AxZ%)jb8z~4zYU)=!7U4#qNjga3BM88(w1%4qA{aU>M{5?SQ zW%VNP_Yp2rF9yF{eJ^mO`hMX5s2>EbRxgF-TJ>`9j}Wd?uYjb9uvxtd@<$2Rt5-w* z7!Ye7^~2zwAl#^43&{qcz&5Fyz&{BT*i-6e@S6#rRzC*GGeFEu>L{_u3r@;QA9jC<_@Re+m=){@uPO%oa3lbaVlsUjw@KsEb;#62&O5=e{N>J5f zjOFNpq@K-&?_7*993O{dE=HjQ)h+0E99to|1-&dzwTgYDUV#|f= z*La}HD?#-zyVffO=nu)mYy>2au*rm(kUYY&p}!XI4W|IhAz6zzi4#;!>=E!yY#n@? z*rV`mVrw9Ol5|pRt0Q z2mU=aAN+ClIQZl2N$?-Dx50nR-T}{qbG`IEnec0`w4S|%>w34Uy@m0>KEh;RU*US7 zkMMkNeNP`@OYgLvLxo>^SFw+Ve2r6pyKt_)f~~`j=6UQzci}|*D9*^gV5ixCn23|_ z0XW$X5yFL7oOh=Q*}_zzM5q*I33G);VTrI@ctmIto)lgXwh6BZZwtqSR^e0OpTc*- z55lj4m#UY_Pc>NOuNtF@QcX~$sq$4fsVY@2)orRps)tmoRU1?4sb<&$AP=ADsGG7zNWbRZUgs!OL6zhE^1D; z^MT@itoVPa{Qg>Tzfs(OD(-2;{a$f@lwA?eBq&|KDDH2Hi^&Y~EjUxajMczT5ZF8~ zNQMI?mIPF@N}v~81MI=J0r3Vj5O3K-zc-5kdb3<$A65zM%jN-n*h-);dlu-&cHiTL zQ-TL(;>-N(@XcO083+a6pOpazu=T)!>?Gtk6ahb&B>;!8U62fA8}9PLet#Y$!zbNLmtYKAPHkPf)8g0z>j0|fD!BrbRyX)@KMYU7|osq#;^km@OQgd z0`%k9w1r;S*B^#v0^5!BB(fW!GoIx_X9DX9og@|korx?I@=0to{-}MXKNtIV9UT8SSxfUvl3ClO|2MUCiV{!ZfOMp zvsoQ5hi!#UE^A%vh1*$4kmR$&kQA^D)n2#@vV9c!I!iC z(5YZ`(5YneA+fTRNYBkog3e5~9wlSLPC&xwyboB7a|--DO6Cuog;NZPIamzP#e#sd zao&W#x`MMI3D5tA18>1Og~V>f>4}8l}QZL-kIslx{4g&9D z`+#?|ZAjGuwiURLy#vW2oP*%|!0Z$(EN16`OE5!7c!oG_xfgC|4$GxS%ng!{d4-qsU#R9OL|^- z5?R+GFumv>qhhI|e_xTMiFG4ImM)gW;%~Hx8725@xuP^rzUhR{i~h=(tr$Iq?mlq| z|A)URfpNKa7ny)379+dJ`a%{1&5nNt)*rI`PI?tMf#f&nLeWPSp^R1{uX}MGc7W~2 z`P@-FC4CnscOPKX{|G00|Hi4`k2wGP5##@lcn+y+in~H_S1Iml#eGqo^stGGWa?k|e_o8k&yvi>l|y+&~-DDFhXO;%j3 z;_4JPRdLf5*QB^+av6KCN9vOYq!mSbLH`3<1}Xtv4>};MDB1`540IiSUkfVrT2Z72 zO#%%E{io&MU~Rypv|D?L0dtufOdiQf)0R=f{uee0ew+a zE`1C74)hbKBi_T{-vzw`TH_&Sh__b!6{IR&AbNrNfUYXuE)FiFTNh>-wRp>8Y$%$|Db-fXuQ|7;^AI57T+M1f<_b@ zrOIM{j)@Zjl{_a`sxbSi@O2s0V8|!1t-RAGW!cMWZI($a-{Q2_I?NWm$z@_$R!)2*UsVy(JINY+-s!~f?nWZe-Rl8pLjy-u53kT~f=ku!JX za@@?&`FDZE!IRV>b|;P*^!3%IDy!M8-|o>(kYYmy3S1_ah4J*H88S1oa`dV6BPBC6 zTi?OuN1N8wCS=jGLw>-qnqNPP~6UE z6=fD0WaGwmVOmapmbQ@6nwyg&XCOtZo03wLmX?~|p@(ed6y@tWQmHFSNzKyc8q>78 zRJj21ic<5Zw;P_8tIgMDr6RRPU8YtkBM%`dPSqBtrf9RLq-Gc9PiND#xn~(6|#(}*?OZ^$u2deJDK?}|&CSU#^iZa3r`YV~nN)PS z+RW6#!c@7q+sjCfUT-nmOb+x+d$pYBVl=eWX{nj1S;e9 zuh!zI?_B&!sW4-DkwNZRyve5Ojg%43isD&KYEPz8mAKZ}xo#(Qs@%?DJPWHMpu1is zF+)-H%xe3bY8GU48jbmdg$5o%XEQmST8G0_A7n(;I!r0`E{oF`6?1875tpPE8Fy)F zQJ18aa7kJ*tXnqq7N^-^t#R2MQSF|T{|u|eVRD!&>pL_M2OqRM1f7Z}G9voo3bBb7 z_fOy@a*+t)e#d@7{O^S4^>-2b36U4~kL87Yk?_<$F6RGx;eV%mqGEq1{@*E|NQ9?W z&C?hZ6qGVOA~G*dJ8jzaEJ;^WW2maJS*k46m z@`|L!RaxM&RGY0fc?wU(lEduMR#)5QoUpC}o!w@G1~RF5<)XWLu;=mTD5aXl0a7|W;eaY&9$F-4hkPghV-Jo&&sEfteB z=1!^rIW(=isCK4hX?6KIn5>{@s5aYb%dl9YKvYh-cDqg1YoBjrJ4(8u^zM}Mxy#K* z>ls#vhAJ%o((H~ZlZ#>GcUa1F_G+gKHREje&Z)sLLS;=;R8D45mb;}O5h*#-7*7k< zAo&KFEk;gq@?%IW^U)rB6e}?CcIc4n+Vh7;2~wftV%4FvNghREsxBkjfJKTdb1wq5 zWu_WlvpSo_R9#z>VX+~>EZ1Q#x7sYaN()~wbn7Y@&<(as|^E6Z9<4T8p zj?u-Ot}>Qm#!%$M7)&cfX5fqe=mL9fbyL(&(KpkYRjzlsA4>S=Sb=pEhPBslu`G#E1 zcQ4Eo8hxg8^N8hx5>9Tr3@MT47ss4mOxi`$qV-yyaU(W9axc*p<@55*F=Q8>r`F@o zZ!C_ByC*dI{Mu2nm=E5{j(|@Oe8pPG8;+s6+|J}Xh@#OVVPK zF~weO>EJx((bQ_}VljPVp-1ZSn!`hZq*)ecrR>kS^Z8=I3YOOYxp<1?` zZ{gcY421a^Hpt@siu>czSd+@ z);OKyT3bz}snFtdb&|?IvQYjGv=KR#%ECpFQ{=?U05qsyA(nD@~ZQ1 zZ0D&2+zTx}Vt1A(zdXm`P9l$KMv-?;J2SNZc3}L%;fMS?(^^r9b(``l&0fJe(u_9D z8$6nHUA-bsF}ci@3Qs+=eH~j>gO#8I6=a@SXir1wqp}ql{VKF`uXdR{v7jHDY?K7g znq}Q8iFK(ScD@=`Dh8Ha_40~Y&Z0a)Iz401@#(u$%OOd(cuCqNZjzlZe%UD1xEwJF z+^a#Q1uL_)T#vbSCk7vTHM#}*T4$M3uwA62d48{Kz9M(G?arBFNt4V*qu%PQv6<>= zn;+d>6w8uw9oE@s>*pU;Z;48bNsEq+isEm#6(AgC8ngsrzXax=~DD* zw_*I^BcIhw(~$v#D_;v0V0fJvm5>k3L^Mn**_g`FyIh?!DgyhD5P9)no1)iQ@>3im0q&S60TmZi?d(4%$WjM43Z(-W7& zUhnCZi+RGm@5bOL?=3NLSX?gjI%oR{xV!!8>s;vNNQ?t3Pk#EHiFu%7LX&0Lb__L6 zi-$bhUQlawnM!RIcT``zlwu84Kop&$wEJD&EGb}T4sotOzJ zdj<^Lj@c#~ZM7UZG3DWfW($+o#IhQVw@OlZt3ou^ zDs&?G!9wQ>RQ9NyvL{mhMe+0xnyKDZmIbM+}&7bbzyTC6~_tWLAVW;0b=?6uAmtIOHpB|qB1X%dxPhg^wI zS)U-@sv7LC9m>-ioW5YC!AlTPThTx-7?2u~y{0{!*6FlVmD=jt131&|8Q9n`U1kA~ z#Ad~5M7t+*s~1{b=ZnNr?mifDE4t4*F*bL%qPLWrYHcnpBJn5!cTj2%)g38oj~rE2 zR*Ms=_VVlqQB&{W({Oh$G+n+~>h6JtW4WLwuRDG^L$hl)tpW^CHZ&OvpONrr#MNDc zT1Gg=5qd`GWZ9NlXkz`N2;A%B?&;E7FvApBE6$VTDVBPk>W(l47IQ87NxfF?PD)#G zOT%+5jw-8@XP=LWvTBE{!;HHa+a*d{D9BRm ztF-ryY>YSDFxJyF5h;5g_fMLaXqaL&Nn_CD=MpiDMnDpEl!d{WQcvZ9VF7~(pWL!B zQ+X;NgV>K4sxio0%i71b_GIzlk3T1)<)V`Ibep}D@44h7!uE5r_6DY`Jeffr!cjD{ zaeCoEB(7YSgSlr!xhCY2#LU{hHKf5>8FV-=7XZt`m|<~HI?{Eh&D1&!6lRPGc-Y}^ z*K!#$YO_=zqtM_j8O@}|Vz!oBEoJ((sTAePGw_Awf z?fmOJ4F>VjxFV<0qkuaMGg{Vmc;(e1nT~375mtnviHl(!Wq|J1(Hi9@?eROyj+GhK zoJxIQr;Yswe}K>JL`N~oDH;kkg4G^t3Aco|u#Tv*Ob%xypW&76#`qMn5x{7 z7;qe&%OAy-$qmk9>N)?tgYZt;O2V+`#gQ#5Kw^0}a`MIMc`8xfy3k0E0_66|Cu|$bwOg@& zH7E^(kA$$D#!tRFVndx#U&}RF`DkHCorMV*Bcz-S+8`S`o#UZn)Yaqo3^zG0T$<>v z9W!paPU#G8hWd)K(#>&L-3wCIDIRq3Y8oUM6(5=?&M`aEZBT|DkACXJqX<+B%ym=d zj}MfVaiQ&gmZi*UVks4l*tl5kn6Nj9Bqj#`n7q}&>W_M4RF~f|EWe`E6dA$)!;o8n z=FA1?9ki26z<6sbSK1F}<<=NQV)sypV_ppGyq@{`(BZH<_-4+j%o*}>C(Gihw3j&< zpTDqeLT@rSaRUHj8X6`_gie)cg!3Hw+-spu3VggnPeGeTNxSgyxqZgdVTQD#Gj()& zrJcE_LNL=|2QI+;*4+RW=J>w`+jThy-AucaNCUgWWaY;zb(n$a*p0Ufrmd;b z+pFM%K?{pT+y=tZwuYbA)mBt?v!}P3Dyp$p;ScWeEm$_uk`=95UVn7x^9V6;VzRAg zIuv{wE*F$3YvT4vxkFt^r+YR~etK-p`Fvq<@Ou!Jvi3sB#|0?Q*;H9ta545EsKXRH zV#RK!rpAH!xTqS>9MNL&kgE&|%95ph5r@u=fJ&cIQXm(rd(t5Vrg%|Lc3I^D=*S7x zdNpm83y)r}_$%!(g^wC&D+M)`e9bElb^JVyH&*wE&KnVBA15qMWqn;}?}+k3 z%cd-9&-QAhfF}TL*+DBAKJ#~k#z@tD_(F=^k60-*9ocn0w8fr?W^r7DP)a1tYO$3m zWu;`({V>H{1vp>iTf~mol{|X1D{L*wELvo>9t{Y+6e}*w*nAO09v#*7J6GMp`Qe47 zP`)w5AI4t7MU-%(akj;bRfC?!0QVykc{7|CehXh*-G+8Wqd7e!$GmDSi)7?PU3lPD zuHRiGO+1Cl)-mxs7hNupGIt1f(vr0ibqO(%iKV5cgidpApGtmA zrHrN*@r!Z$p}P6X7?Z!e%qz4{wN{te=Qx?Xe{nCJyDKP>G*kG+N76w5s4nx!B>Cjjbok}ec=*Z#5?@V`f|<^D zX>rwITRGw&1sch%SQmEGvvS@+-sSk=;paXjk!@pv>EY*bE<)ZW`JBY9p|9(Fcq7*? z_9J*`s6_6e!dE=9#)Tgth09aC-ewEOE&$Ug+JrnT(L8XGhfm@3)G8ateU>tLa_Bq) z@~0IZkD;nbv12K9ktE?5y^4kpK6>CJ6W4ByW%8cEXsW3xlPBbw8eDF>So+d&&?bjc zrtphIskierJwLcNRCf+k?mq7_+wC*0mWxH$DPXwXj)|j^Z#6C!uV(_oGfYlw{FVLj zWd)OK@zR52TP$TxerVmXcDwYz?cppmSeBP1l*YxECWa>`8;z;S9lm86U9AHr3NE?) zH5V=i4IcUCMP+C;n(0~m;UXVsyO{NSfO$m?8=Rf$?K0DB%)VHnJ<6h(PNtogX&#qD z_&lvao1mwynkdaB#wWLk|Fh^i+U@^klSu{4p!PKLlJj1s%2b$Kpo#|1$NS-P>_Fi7<9l!sP_>jPDO6-RNnd(+KiMlkta* z$ir(OhNgJ1f7UJTu%_N!NWY zRhyp>82RS^BBk$Xo%FGex-5Nq0*nVhmly~qo9=Z8P9rWYVOS>PX$374%!%c3meNEE zwt!f{+0DiZI&wGiq<2*)vvgO%8xU5Pk)Pt0^5Z3=6^X%&%Z2!YuE#G^O^s1mdh%6h zmvHg}YdZTxmGZNDTyHXCuU=-X=1crk`r-B`yQuprqlML!ms%=tz*JMtwS6ro2z{s_W0TR9m^nr*k1`J4Ik4gc%>jYhN0!AoQ`7mu05a2Xs2 zfQ9y%mTI(8qpq%wua@OTOf4KIVmOVcw#;ET0me;oy3s6O5s;rbr`B;1ZaSv%=I4I) zo#wDuGOeX}52GGWndCQ`ZzdGKsh4+hAfHFLhk^^8yt*IyU*yn1IoRkpZ%_o2 z+`|aJcg@r3zA%7&i^4K=8l8=w3iBsnzn^}2J1xIn)cFknJYI9*fwYq!gDGzX{8#1- zc<_enN;sOcS*BWDm1wv&rPgkkfts!|*VG%SF7flS3Qsw0xdH|Md#63hDE_;tyGW@j z^VaX0@H{3{8WtL`Y?v1vuCvf-G4B+#A@11WQb#GOcA$4-kKC~pRvxR8H{A|y4?_1m zNRHQ2&~Eb4?{G5|eGb<1FJ`CRgfge_J#(5B4*@X}88E7ts+<)xV!@VEIoqY7#;9y- z3v3ok4Ktegz{mK=gy#b2$3`PPv+OiqVVkGZ7$Z}rXwq_1bQ!sZ3{5g7#xf4k?OYw_ z5;+(-#Bhk@kW4IT+xTw+&S+@3j!86?m&PTOg(sIQW3qfo<1Z|Vp+k{Q01{w%%3Ye zQGb@~$S2r;hTLG0jV1PpQ?xB!Bg*xLKSQ;Y z;(iCe*70Y_3%{%KC&>%0-~1VJV&?Bx{24M5R1np%-tWAa{r_fFY{0rc*_a>IeT#Sr zyO0DqY;uriXuj{&bi9kI95-k*MUk3IH`)FwYkP1dF89YkG#XhDsnsM$Xf>%?jb|F< zP?sEChmk9vl@8k%%9DqN@}(1Z=CBd<%+-}B*@$Fq@s+fyR7139Ixn;Id6NE6aCh7n zDp(jkPdjW6)upgWyIrPeVVm!nwEwOK;!T=;B=sKdvWUrn`;D_L6v){nmiP;s;wjh8uAq-D;^GuuwZLOGjmDU3 zt}LjpGHN0sG)3mBxw&}RY4)5VS7oX-CD&R}R#fk(nrn5;t}Jp?Rm`?l&z|F$TQU2* znlte%o%>nKt12ATvx{o2bE{{U*{n51F6-QxPDfp3k*$7~wa9EpFRHAVGq={9gWt;Y zxAsEBOLt}GEvBf>dF#3dR-OZ2LZvE;tBdx3&u76{ZMF}kN-TVobe{-Z_?e#)(Rl)Q z_30d4S6}ygo9$z7$I`=dq`BM@=&$-9&E8(e2?nmxb)xDQstjZt-@j=1zeK$|Fq?aTa5Id?Z#e@o`bcgt*dJW4tNWf|o|I!of?V^3exYH05#e zQBg)yX|%~08Ce!(Of<*vQxbDTOt~pK!W7-*>c7!gXEs*V80WHN&wH_#e^H;N(T=PC zos0$X+jz<+%z`fS#&>QUf3ZNmiP3HzskRztyNo90`PPExW#-F_<$TxmyX45@vZH52 zS0r!$^{WhB)7tsfh%1st&o?{dR%7Z?{#WeHg|4}2Z#~Kv`macSJnHi@8%su)*67&= zuSn9)SJddB9x1+ZFQr_#td%&fM26NNXHSaK?VU))lrx!iCbZAa;*muo@CFUD)MHk8q@Y^k#E^iTCwEjAqrc3oUT!uCBS0v~Xz57DF z5ufP9%~QGw@9Du`o$$Ef-`N6ED+j~H`HKYdG+jmGl!wI*1Ms4k1~eTnK>SYL@*+@Z zXjVpiQwR5Gsa?0fn(@0~(X-UT|&<2n

Contains a configurable effect that supports alpha testing. - - - Creates a new AlphaTestEffect by cloning parameter settings from an existing instance. - A copy of an AlphaTestEffect. - - - Creates a new AlphaTestEffect with default parameter settings. - A graphics device. - - - Gets or sets the material alpha which determines its transparency. Range is between 1 (fully opaque) and 0 (fully transparent). - - - Gets or sets the compare function for alpha test. The default value is Greater. - - - Creates a clone of the current AlphaTestEffect instance. - - - Gets or sets the diffuse color for a material, the range of color values is from 0 to 1. - - - Gets or sets the fog color, the range of color values is from 0 to 1. - - - Gets or sets the fog enable flag. - - - Gets or sets the maximum z value for fog. - - - Gets or sets the minimum z value for fog. - - - Computes derived parameter values immediately before applying the effect using a lazy architecture. - - - Gets or sets the projection matrix. - - - Gets or sets the reference alpha value, the default value is 0. - - - Gets or sets the current texture. - - - Gets or sets whether vertex color is enabled. - - - Gets or sets the view matrix. - - - Gets or sets the world matrix. - - - Contains a basic rendering effect. - - - Creates an instance of this object. - An instance of a object to copy initialization data from. - - - Creates an instance of this object. - A device. - - - Gets or sets the material alpha which determines its transparency. Range is between 1 (fully opaque) and 0 (fully transparent). - - - Gets or sets the ambient color for a light, the range of color values is from 0 to 1. - - - Create a copy of this object. - - - Gets or sets the diffuse color for a material, the range of color values is from 0 to 1. - - - Gets the first directional light for this effect. - - - Gets the second directional light for this effect. - - - Gets the third directional light for this effect. - - - Gets or sets the emissive color for a material, the range of color values is from 0 to 1. - - - Enables default lighting for this effect. - - - Gets or sets the fog color, the range of color values is from 0 to 1. - - - Enables fog. - - - Gets or sets the maximum z value for fog. - - - Gets or sets the minimum z value for fog. - - - Enables lighting for this effect. - - - Computes derived parameter values immediately before applying the effect. - - - Gets or sets a value indicating that per-pixel lighting should be used if it is available for the current adapter. Per-pixel lighting is available if a graphics adapter supports Pixel Shader Model 2.0. - - - - - - Gets or sets the specular color for a material, the range of color values is from 0 to 1. - - - Gets or sets the specular power of this effect material. - - - Gets or sets a texture to be applied by this effect. - - - Enables textures for this effect. - - - Enables use vertex colors for this effect. - - - - - - - - - Defines color blending factors. - - - Each component of the color is multiplied by a constant set in BlendFactor. - - - Each component of the color is multiplied by the alpha value of the destination. This can be represented as (Ad, Ad, Ad, Ad), where Ad is the destination alpha value. - - - Each component color is multiplied by the destination color. This can be represented as (Rd, Gd, Bd, Ad), where R, G, B, and A respectively stand for red, green, blue, and alpha destination values. - - - Each component of the color is multiplied by the inverse of a constant set in BlendFactor. - - - Each component of the color is multiplied by the inverse of the alpha value of the destination. This can be represented as (1 − Ad, 1 − Ad, 1 − Ad, 1 − Ad), where Ad is the alpha destination value. - - - Each component of the color is multiplied by the inverse of the destination color. This can be represented as (1 − Rd, 1 − Gd, 1 − Bd, 1 − Ad), where Rd, Gd, Bd, and Ad respectively stand for the red, green, blue, and alpha destination values. - - - Each component of the color is multiplied by the inverse of the alpha value of the source. This can be represented as (1 − As, 1 − As, 1 − As, 1 − As), where As is the alpha destination value. - - - Each component of the color is multiplied by the inverse of the source color. This can be represented as (1 − Rs, 1 − Gs, 1 − Bs, 1 − As) where R, G, B, and A respectively stand for the red, green, blue, and alpha destination values. - - - Each component of the color is multiplied by (1, 1, 1, 1). - - - Each component of the color is multiplied by the alpha value of the source. This can be represented as (As, As, As, As), where As is the alpha source value. - - - Each component of the color is multiplied by either the alpha of the source color, or the inverse of the alpha of the source color, whichever is greater. This can be represented as (f, f, f, 1), where f = min(A, 1 − Ad). - - - Each component of the color is multiplied by the source color. This can be represented as (Rs, Gs, Bs, As), where R, G, B, and A respectively stand for the red, green, blue, and alpha source values. - - - Each component of the color is multiplied by (0, 0, 0, 0). - - - Defines how to combine a source color with the destination color already on the render target for color blending. - - - The result is the destination added to the source. Result = (Source Color * Source Blend) + (Destination Color * Destination Blend) - - - The result is the maximum of the source and destination. Result = max( (Source Color * Source Blend), (Destination Color * Destination Blend) ) - - - The result is the minimum of the source and destination. Result = min( (Source Color * Source Blend), (Destination Color * Destination Blend) ) - - - The result is the source subtracted from the destination. Result = (Destination Color * Destination Blend) − (Source Color * Source Blend) - - - The result is the destination subtracted from the source. Result = (Source Color * Source Blend) − (Destination Color * Destination Blend) - - - Contains blend state for the device. - - - Creates an instance of the BlendState class with default values, using additive color and alpha blending. - - - A built-in state object with settings for additive blend that is adding the destination data to the source data without using alpha. - - - A built-in state object with settings for alpha blend that is blending the source and destination data using alpha. - - - Gets or sets the arithmetic operation when blending alpha values. The default is BlendFunction.Add. - - - Gets or sets the blend factor for the destination alpha, which is the percentage of the destination alpha included in the blended result. The default is Blend.One. - - - Gets or sets the alpha blend factor. The default is Blend.One. - - - Gets or sets the four-component (RGBA) blend factor for alpha blending. - - - Gets or sets the arithmetic operation when blending color values. The default is BlendFunction.Add. - - - Gets or sets the blend factor for the destination color. The default is Blend.One. - - - Gets or sets the blend factor for the source color. The default is Blend.One. - - - Gets or sets which color channels (RGBA) are enabled for writing during color blending. The default value is ColorWriteChannels.None. - - - Gets or sets which color channels (RGBA) are enabled for writing during color blending. The default value is ColorWriteChannels.None. - - - Gets or sets which color channels (RGBA) are enabled for writing during color blending. The default value is ColorWriteChannels.None. - - - Gets or sets which color channels (RGBA) are enabled for writing during color blending. The default value is ColorWriteChannels.None. - - - Immediately releases the unmanaged resources used by this object. - [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - Gets or sets a bitmask which defines which samples can be written during multisampling. The default is 0xffffffff. - - - A built-in state object with settings for blending with non-premultipled alpha that is blending source and destination data by using alpha while assuming the color data contains no alpha information. - - - A built-in state object with settings for opaque blend that is overwriting the source with the destination data. - - - Specifies special usage of the buffer contents. - - - None - - - Indicates that the application only writes to the vertex buffer. If specified, the driver chooses the best memory location for efficient writing and rendering. Attempts to read from a write-only vertex buffer fail. - - - Specifies the buffer to use when calling Clear. - - - A depth buffer. - - - A stencil buffer. - - - A render target. - - - Defines the color channels that can be chosen for a per-channel write to a render target color buffer. - - - All buffer channels. - - - Alpha channel of a buffer. - - - Blue channel of a buffer. - - - Green channel of a buffer. - - - No channel selected. - - - Red channel of a buffer. - - - Defines comparison functions that can be chosen for alpha, stencil, or depth-buffer tests. - - - Always pass the test. - - - Accept the new pixel if its value is equal to the value of the current pixel. - - - Accept the new pixel if its value is greater than the value of the current pixel. - - - Accept the new pixel if its value is greater than or equal to the value of the current pixel. - - - Accept the new pixel if its value is less than the value of the current pixel. - - - Accept the new pixel if its value is less than or equal to the value of the current pixel. - - - Always fail the test. - - - Accept the new pixel if its value does not equal the value of the current pixel. - - - Defines the faces of a cube map in the TextureCube class type. - - - Negative x-face of the cube map. - - - Negative y-face of the cube map. - - - Negative z-face of the cube map. - - - Positive x-face of the cube map. - - - Positive y-face of the cube map. - - - Positive z-face of the cube map. - - - Defines winding orders that may be used to identify back faces for culling. - - - Cull back faces with clockwise vertices. - - - Cull back faces with counterclockwise vertices. - - - Do not cull back faces. - - - Defines the format of data in a depth-stencil buffer. Reference page contains links to related conceptual articles. - - - A buffer that contains 16-bits of depth data. - - - A buffer that contains 24-bits of depth data. - - - A 32 bit buffer that contains 24 bits of depth data and 8 bits of stencil data. - - - Do not create a depth buffer. - - - Contains depth-stencil state for the device. - - - Creates an instance of DepthStencilState with default values. - - - Gets or sets the stencil operation to perform if the stencil test passes and the depth-buffer test fails for a counterclockwise triangle. The default is StencilOperation.Keep. - - - Gets or sets the stencil operation to perform if the stencil test fails for a counterclockwise triangle. The default is StencilOperation.Keep. - - - Gets or sets the comparison function to use for counterclockwise stencil tests. The default is CompareFunction.Always. - - - Gets or sets the stencil operation to perform if the stencil and depth-tests pass for a counterclockwise triangle. The default is StencilOperation.Keep. - - - A built-in state object with default settings for using a depth stencil buffer. - - - Enables or disables depth buffering. The default is true. - - - Gets or sets the comparison function for the depth-buffer test. The default is CompareFunction.LessEqual - - - Enables or disables writing to the depth buffer. The default is true. - - - A built-in state object with settings for enabling a read-only depth stencil buffer. - - - Immediately releases the unmanaged resources used by this object. - [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - A built-in state object with settings for not using a depth stencil buffer. - - - Specifies a reference value to use for the stencil test. The default is 0. - - - Gets or sets the stencil operation to perform if the stencil test passes and the depth-test fails. The default is StencilOperation.Keep. - - - Gets or sets stencil enabling. The default is false. - - - Gets or sets the stencil operation to perform if the stencil test fails. The default is StencilOperation.Keep. - - - Gets or sets the comparison function for the stencil test. The default is CompareFunction.Always. - - - Gets or sets the mask applied to the reference value and each stencil buffer entry to determine the significant bits for the stencil test. The default mask is Int32.MaxValue. - - - Gets or sets the stencil operation to perform if the stencil test passes. The default is StencilOperation.Keep. - - - Gets or sets the write mask applied to values written into the stencil buffer. The default mask is Int32.MaxValue. - - - Enables or disables two-sided stenciling. The default is false. - - - The exception that is thrown when the device has been lost, but cannot be reset at this time. Therefore, rendering is not possible. - - - Initializes a new instance of this class. - - - Initializes a new instance of this class with a specified error message. - A message that describes the error. - - - Initializes a new instance of this class with a specified error message and a reference to the inner exception that is the cause of this exception. - A message that describes the error. - The exception that is the cause of the current exception. If the inner parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception. - - - The exception that is thrown when the device has been lost, but can be reset at this time. - - - Initializes a new instance of this class. - - - Initializes a new instance of this class with a specified error message. - A message that describes the error. - - - Initializes a new instance of this class with a specified error message and a reference to the inner exception that is the cause of this exception. - A message that describes the error. - The exception that is the cause of the current exception. If the inner parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception. - - - Creates a DirectionalLight object. - - - Creates a new DirectionalLight instance, with or without a copy of a DirectionalLight instance. - The light direction. - The diffuse color. - The specular color. - The cloned instance to copy from. - - - Gets or sets the diffuse color of the light. - - - Gets or sets the light direction. This value must be a unit vector. - - - Gets or sets light enable flag. - - - Gets or sets the specular color of the light. - - - Describes the display mode. - - - Gets the aspect ratio used by the graphics device. - - - Gets a value indicating the surface format of the display mode. - - - Gets a value indicating the screen height, in pixels. - - - Returns the title safe area of the display. - - - Retrieves a string representation of this object. - - - Gets a value indicating the screen width, in pixels. - - - Manipulates a collection of DisplayMode structures. - - - Gets an enumerator that can iterate through the DisplayModeCollection. - - - Retrieves the DisplayMode structure with the specified format. - The format of the DisplayMode to retrieve. - - - Gets a collection of display modes available for this format. - - - Contains a configurable effect that supports two-layer multitexturing. - - - Creates a new DualTextureEffect by cloning parameter settings from an existing instance. - The object to clone. - - - Creates a new DualTextureEffect with default parameter settings. - The graphics device. - - - Gets or sets the material alpha which determines its transparency. Range is between 1 (fully opaque) and 0 (fully transparent). - - - Creates a clone of the current DualTextureEffect instance. - - - Gets or sets the diffuse color for a material, the range of color values is from 0 to 1. - - - Gets or sets the fog color, the range of color values is from 0 to 1. - - - Gets or sets the fog enable flag. - - - Gets or sets the maximum z value for fog. - - - Gets or sets the minimum z value for fog. - - - Computes derived parameter values immediately before applying the effect. - - - Gets or sets the projection matrix. - - - Gets or sets the current base texture. - - - Gets or sets the current overlay texture. - - - Gets or sets whether per-vertex color is enabled. - - - Gets or sets the view matrix. - - - Gets or sets the world matrix. - - - - - - Create a new instance of this class. - The associated graphics device. - Size of each index element. - Number of indices in the buffer. - Behavior options. - - - Create a new instance of this class. - The associated graphics device. - The index type. - The number of indicies in the buffer. - Behavior options. - - - Occurs when resources are lost due to a lost device event. - - - - Determines if the index buffer data has been lost due to a lost device event. - - - Sets dynamic index buffer data, specifying the offset, start index, number of elements and options. - Offset in bytes from the beginning of the buffer to the data. - Array of data. - The first element to use. - The number of elements to use. - Specifies whether existing data in the buffer will be kept after this operation. Dynamic geometry may be rendered on the Xbox 360 by using DrawUserIndexedPrimitives instead of setting the data for the index buffer. - - - Sets dynamic index buffer data, specifying the start index, number of elements and options. - Array of data. - The first element to use. - The number of elements to use. - Specifies whether existing data in the buffer will be kept after this operation. Dynamic geometry may be rendered on the Xbox 360 by using DrawUserIndexedPrimitives instead of setting the data for the index buffer. - - - - - - Creates a new instance of this object. - The graphics device. - The vertex declaration, which describes per-vertex data. - The number of vertices. - Behavior options; it is good practice for this to match the createOptions parameter in the GraphicsDevice constructor. - - - Creates a new instance of this object. - The graphics device. - The data type. - The number of vertices. - Behavior options; it is good practice for this to match the createOptions parameter in the GraphicsDevice constructor. - - - Occurs when resources are lost due to a lost device event. - - - - Determines if the index buffer data has been lost due to a lost device event. - - - Sets dynamic vertex buffer data, specifying the offset, start index, number of elements and vertex stride. - Offset in bytes from the beginning of the buffer to the data. - Array of data. - The first element to use. - The number of elements to use. - The size, in bytes, of the elements in the vertex buffer. - Specifies whether existing data in the buffer will be kept after this operation. Dynamic geometry may be rendered on the Xbox 360 by using DrawUserIndexedPrimitives instead of setting the data for the vertex buffer. - - - Sets dynamic vertex buffer data, specifying the start index, number of elements and options. - Array of data. - The first element to use. - The number of elements to use. - Specifies whether existing data in the buffer will be kept after this operation. Dynamic geometry may be rendered on the Xbox 360 by using DrawUserIndexedPrimitives instead of setting the data for the vertex buffer. - - - Used to set and query effects, and to choose techniques. Reference page contains links to related conceptual articles. - - - Creates an instance of this object. - An object to copy. - - - Creates an instance of this object. - The device. - The effect code. - - - Copies data from an existing object to this object. - - - Gets or sets the active technique. Reference page contains code sample. - - - Releases the unmanaged resources used by the Effect and optionally releases the managed resources. - [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - Applies the effect state just prior to rendering the effect. - - - Gets a collection of parameters used for this effect. - - - Gets a collection of techniques that are defined for this effect. Reference page contains code sample. - - - Represents an annotation to an EffectParameter. - - - Gets the number of columns in this effect annotation. - - - Gets the value of the EffectAnnotation as a Boolean. - - - Gets the value of the EffectAnnotation as a Int32. - - - Gets the value of the EffectAnnotation as a Int32. - - - Gets the value of the EffectAnnotation as a Single. - - - Gets the value of the EffectAnnotation as a String. - - - Gets the value of the EffectAnnotation as a Vector2. - - - Gets the value of the EffectAnnotation as a Vector3. - - - Gets the value of the EffectAnnotation as a Vector4. - - - Gets the name of the effect annotation. - - - Gets the parameter class of this effect annotation. - - - Gets the parameter type of this effect annotation. - - - Gets the row count of this effect annotation. - - - Gets the semantic of this effect annotation. - - - Manipulates a collection of EffectAnnotation objects. - - - Gets the number of EffectAnnotation objects in this EffectAnnotationCollection. - - - Gets an enumerator that can iterate through the EffectAnnotationCollection. - - - Gets an enumerator that can iterate through the EffectAnnotationCollection. - - - Gets an enumerator that can iterate through the EffectAnnotationCollection. - - - Gets a specific EffectAnnotation object by using an index value. - Index of the EffectAnnotation to get. - - - Gets a specific EffectAnnotation object by using a name. - Name of the EffectAnnotation to get. - - - Contains an effect subclass which is used to load data for an EffectMaterialContent type. - - - Creates an instance of this object. - An instance of an object to copy initialization data from. - - - Represents an Effect parameter. Reference page contains code sample. - - - Gets the collection of EffectAnnotation objects for this parameter. - - - Gets the number of columns in the parameter description. - - - Gets the collection of effect parameters. - - - Gets the value of the EffectParameter as a Boolean. - - - Gets the value of the EffectParameter as an array of Boolean. - The number of elements in the array. - - - Gets the value of the EffectParameter as an Int32. - - - Gets the value of the EffectParameter as an array of Int32. - The number of elements in the array. - - - Gets the value of the EffectParameter as a Matrix. - - - Gets the value of the EffectParameter as an array of Matrix. - The number of elements in the array. - - - Gets the value of the EffectParameter as a Matrix transpose. - - - Gets the value of the EffectParameter as an array of Matrix transpose. - The number of elements in the array. - - - Gets the value of the EffectParameter as a Quaternion. - - - Gets the value of the EffectParameter as an array of Quaternion. - The number of elements in the array. - - - Gets the value of the EffectParameter as a Single. - - - Gets the value of the EffectParameter as an array of Single. - The number of elements in the array. - - - Gets the value of the EffectParameter as an String. - - - Gets the value of the EffectParameter as a Texture2D. - - - Gets the value of the EffectParameter as a Texture3D. - - - Gets the value of the EffectParameter as a TextureCube. - - - Gets the value of the EffectParameter as a Vector2. - - - Gets the value of the EffectParameter as an array of Vector2. - The number of elements in the array. - - - Gets the value of the EffectParameter as a Vector3. - - - Gets the value of the EffectParameter as an array of Vector3. - The number of elements in the array. - - - Gets the value of the EffectParameter as a Vector4. - - - Gets the value of the EffectParameter as an array of Vector4. - The number of elements in the array. - - - Gets the name of the parameter. - - - Gets the class of the parameter. - - - Gets the type of the parameter. - - - Gets the number of rows in the parameter description. - - - Gets the semantic meaning, or usage, of the parameter. - - - Sets the value of the EffectParameter. - The value to assign to the EffectParameter. - - - Sets the value of the EffectParameter. - The value to assign to the EffectParameter. - - - Sets the value of the EffectParameter. - The value to assign to the EffectParameter. - - - Sets the value of the EffectParameter. - The value to assign to the EffectParameter. - - - Sets the value of the EffectParameter. - The value to assign to the EffectParameter. - - - Sets the value of the EffectParameter. - The value to assign to the EffectParameter. - - - Sets the value of the EffectParameter. - The value to assign to the EffectParameter. - - - Sets the value of the EffectParameter. - The value to assign to the EffectParameter. - - - Sets the value of the EffectParameter. - The value to assign to the EffectParameter. - - - Sets the value of the EffectParameter. - The value to assign to the EffectParameter. - - - Sets the value of the EffectParameter. - The value to assign to the EffectParameter. - - - Sets the value of the EffectParameter. - [MarshalAsAttribute(U1)] The value to assign to the EffectParameter. - - - Sets the value of the EffectParameter. - The value to assign to the EffectParameter. - - - Sets the value of the EffectParameter. - The value to assign to the EffectParameter. - - - Sets the value of the EffectParameter. - The value to assign to the EffectParameter. - - - Sets the value of the EffectParameter. - The value to assign to the EffectParameter. - - - Sets the value of the EffectParameter. - The value to assign to the EffectParameter. - - - Sets the value of the EffectParameter. - The value to assign to the EffectParameter. - - - Sets the value of the EffectParameter to the transpose of a Matrix. - The value. - - - Sets the value of the EffectParameter to the transpose of a Matrix. - The value. - - - Gets the collection of structure members. - - - Defines classes that can be used for effect parameters or shader constants. - - - Constant is a matrix. - - - Constant is either a texture, a shader, or a string. - - - Constant is a scalar. - - - Constant is a structure. - - - Constant is a vector. - - - Manipulates a collection of EffectParameter objects. - - - Gets the number of EffectParameter objects in this EffectParameterCollection. - - - Gets an enumerator that can iterate through EffectParameterCollection. - - - Gets an enumerator that can iterate through EffectParameterCollection. - - - Gets an enumerator that can iterate through the EffectParameterCollection. - - - Gets an effect parameter from its semantic usage. - The semantic meaning, or usage, of the parameter. - - - Gets a specific EffectParameter object by using an index value. - Index of the EffectParameter to get. - - - Gets a specific EffectParameter by name. - The name of the EffectParameter to retrieve. - - - Defines types that can be used for effect parameters or shader constants. - - - Parameter is a Boolean. Any nonzero value passed in will be mapped to 1 (TRUE) before being written into the constant table; otherwise, the value will be set to 0 in the constant table. - - - Parameter is an integer. Any floating-point values passed in will be rounded off (to zero decimal places) before being written into the constant table. - - - Parameter is a floating-point number. - - - Parameter is a string. - - - Parameter is a texture. - - - Parameter is a 1D texture. - - - Parameter is a 2D texture. - - - Parameter is a 3D texture. - - - Parameter is a cube texture. - - - Parameter is a void pointer. - - - Contains rendering state for drawing with an effect; an effect can contain one or more passes. - - - Gets the set of EffectAnnotation objects for this EffectPass. - - - Begins this pass. - - - Gets the name of this pass. - - - Manipulates a collection of EffectPass objects. - - - Gets the number of objects in the collection. - - - Gets an enumerator that can iterate through the EffectPassCollection. - - - Gets an enumerator that can iterate through the EffectPassCollection. - - - Gets an enumerator that can iterate through the EffectPassCollection. - - - Gets a specific element in the collection by using an index value. - Index of the EffectPass to get. - - - Gets a specific element in the collection by using a name. - Name of the EffectPass to get. - - - Represents an effect technique. Reference page contains code sample. - - - Gets the EffectAnnotation objects associated with this technique. - - - Gets the name of this technique. - - - Gets the collection of EffectPass objects this rendering technique requires. - - - Manipulates a collection of EffectTechnique objects. - - - Gets the number of objects in the collection. - - - Gets an enumerator that can iterate through the EffectTechniqueCollection. - - - Gets an enumerator that can iterate through the EffectTechniqueCollection. - - - Gets an enumerator that can iterate through the EffectTechniqueCollection. - - - Gets a specific element in the collection by using an index value. - Index of the EffectTechnique to get. - - - Gets a specific element in the collection by using a name. - Name of the EffectTechnique to get. - - - Contains a configurable effect that supports environment mapping. - - - Creates a new EnvironmentMapEffect by cloning parameter settings from an existing instance. - An existing instance. - - - Creates a new EnvironmentMapEffect with default parameter settings. - The graphics device. - - - Gets or sets the material alpha which determines its transparency. Range is between 1 (fully opaque) and 0 (fully transparent). - - - Gets or sets the ambient color for a light, the range of color values is from 0 to 1. - - - Creates a clone of the current EnvironmentMapEffect instance. - - - Gets or sets the diffuse color for a material, the range of color values is from 0 to 1. - - - Gets the first directional light. - - - Gets the second directional light. - - - Gets the third directional light. - - - Gets or sets the emissive color for a material, the range of color values is from 0 to 1. - - - Sets up standard key, fill, and back lighting for an EnvironmentMapEffect. - - - Gets or sets the current environment map texture. - - - Gets or sets the amount of the environment map color (RGB) that will be blended over the base texture. The value ranges from 0 to 1; the default value is 1. - - - Gets or sets the amount of the environment map alpha value that will be added to the base texture. The value ranges from 0 to 1; the default value is 0. - - - Gets or sets the fog color, the range of color values is from 0 to 1. - - - Gets or sets the fog enable flag. - - - Gets or sets the maximum z value for fog. - - - Gets or sets the minimum z value for fog. - - - Gets or sets the Fresnel factor used for the environment map blending. - - - Enables lighting in an EnvironmentMapEffect. - - - Computes derived parameter values immediately before applying the effect. - - - Gets or sets the projection matrix. - - - Gets or sets the current texture. - - - Gets or sets the view matrix. - - - Gets or sets the world matrix. - - - Describes options for filling the vertices and lines that define a primitive. - - - Draw solid faces for each primitive. - - - Draw lines connecting the vertices that define a primitive face. - - - Provides methods to retrieve and manipulate graphics adapters. - - - Collection of available adapters on the system. - - - Gets the current display mode. - - - Gets the default adapter. - - - Retrieves a string used for presentation to the user. - - - Retrieves a value that is used to help identify a particular chip set. - - - Retrieves a string that contains the device name for a Microsoft Windows Graphics Device Interface (GDI). - - - Determines if this instance of GraphicsAdapter is the default adapter. - - - Tests to see if the adapter supports the requested profile. - The graphics profile. - - - Determines if the graphics adapter is in widescreen mode. - - - Retrieves the handle of the monitor associated with the Microsoft Direct3D object. - - - Queries the adapter for support for the requested back buffer format. - The graphics profile. - The requested surface data format. - The requested depth buffer format. - The requested number of multisampling locations. - [OutAttribute] The best format the adapter supports for the requested surface data format. - [OutAttribute] The best format the adapter supports for the requested depth data format. - [OutAttribute] The best format the adapter supports for the requested number of multisampling locations. - - - Queries the adapter for support for the requested render target format. - The graphics profile. - The requested surface data format. - The requested depth buffer format. - The requested number of multisampling locations. - [OutAttribute] The best format the adapter supports for the requested surface data format. - [OutAttribute] The best format the adapter supports for the requested depth data format. - [OutAttribute] The best format the adapter supports for the requested number of multisampling locations. - - - Retrieves a value used to help identify the revision level of a particular chip set. - - - Retrieves a value used to identify the subsystem. - - - Returns a collection of supported display modes for the current adapter. - - - Gets or sets a NULL device. - - - Gets or sets a reference device. - - - Retrieves a value used to identify the manufacturer. - - - Performs primitive-based rendering, creates resources, handles system-level variables, adjusts gamma ramp levels, and creates shaders. - - - Creates an instance of this object. - The display adapter. - The graphics profile. - The presentation options. - - - Gets the graphics adapter. - - - Gets or sets the color used for a constant-blend factor during alpha blending. The default value is Color.White. - - - Gets or sets a system-defined instance of a blend state object initialized for alpha blending. The default value is BlendState.Opaque. - - - Clears resource buffers. - Set this color value in all buffers. - - - Clears resource buffers. - Options for clearing a buffer. - Set this color value in the buffer. - Set this depth value in the buffer. - Set this stencil value in the buffer. - - - Clears resource buffers. - Options for clearing a buffer. - Set this four-component color value in the buffer. - Set this depth value in the buffer. - Set this stencil value in the buffer. - - - Gets or sets a system-defined instance of a depth-stencil state object. The default value is DepthStencilState.Default. - - - Occurs when a GraphicsDevice is about to be lost (for example, immediately before a reset). Reference page contains code sample. - - - - Occurs after a GraphicsDevice is reset, allowing an application to recreate all resources. - - - - Occurs when a GraphicsDevice is resetting, allowing the application to cancel the default handling of the reset. Reference page contains code sample. - - - - Retrieves the display mode's spatial resolution, color resolution, and refresh frequency. Reference page contains code sample. - - - Immediately releases the unmanaged resources used by this object. - - - Immediately releases the unmanaged resources used by this object. - [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - Occurs when Dispose is called or when this object is finalized and collected by the garbage collector of the Microsoft .NET common language runtime. Reference page contains code sample. - - - - Renders the specified geometric primitive, based on indexing into an array of vertices. - Describes the type of primitive to render. PrimitiveType.PointList is not supported with this method. - Offset to add to each vertex index in the index buffer. - Minimum vertex index for vertices used during the call. The minVertexIndex parameter and all of the indices in the index stream are relative to the baseVertex parameter. - Number of vertices used during the call. The first vertex is located at index: baseVertex + minVertexIndex. - Location in the index array at which to start reading vertices. - Number of primitives to render. The number of vertices used is a function of primitiveCount and primitiveType. - - - Draws a series of instanced models. - The primitive type. - Offset to add to each vertex index in the index buffer. - Minimum vertex index for vertices used during the call. The minVertexIndex parameter and all of the indices in the index stream are relative to the baseVertex parameter. - Number of vertices used during the call. The first vertex is located at index: baseVertex + minVertexIndex. - Location in the index array at which to start reading vertices. - Number of primitives to render. The number of vertices used is a function of primitiveCount and primitiveType. - Number of primitives to render. - - - Renders a sequence of non-indexed geometric primitives of the specified type from the current set of data input streams. - Describes the type of primitive to render. - Index of the first vertex to load. Beginning at startVertex, the correct number of vertices is read out of the vertex buffer. - Number of primitives to render. The primitiveCount is the number of primitives as determined by the primitive type. If it is a line list, each primitive has two vertices. If it is a triangle list, each primitive has three vertices. - - - Renders indexed primitives from a 16-bit index buffer and other related input parameters. - The primitive type. - The vertex data. - Offset (in vertices) from the beginning of the vertex buffer to the first vertex to draw. - Number of vertices to draw. - The index data. - Offset (in indices) from the beginning of the index buffer to the first index to use. - Number of primitives to render. - - - Renders indexed primitives from a 16-bit index buffer, a vertex declaration, and other related input parameters. - The primitive type. - The vertex data. - Offset (in vertices) from the beginning of the vertex buffer to the first vertex to draw. - Number of vertices to draw. - The index data. - Offset (in indices) from the beginning of the index buffer to the first index to use. - Number of primitives to render. - The vertex declaration. - - - Renders indexed primitives from a 32-bit index buffer and other related input parameters. - The primitive type. - The vertex data. - Offset (in vertices) from the beginning of the vertex buffer to the first vertex to draw. - Number of vertices to draw. - The index data. - Offset (in indices) from the beginning of the index buffer to the first index to use. - Number of primitives to render. - - - Renders indexed primitives from a 32-bit index buffer, a vertex declaration, and other related input parameters. - The primitive type. - The vertex data. - Offset (in vertices) from the beginning of the vertex buffer to the first vertex to draw. - Number of vertices to draw. - The index data. - Offset (in indices) from the beginning of the index buffer to the first index to use. - Number of primitives to render. - The vertex declaration. - - - Draws primitives. - Describes the type of primitive to render. - The vertex data. - Offset (in vertices) from the beginning of the buffer to start reading data. - Number of primitives to render. - - - Draws primitives. - Describes the type of primitive to render. - The vertex data. - Offset (in vertices) from the beginning of the buffer to start reading data. - Number of primitives to render. - The vertex declaration, which defines per-vertex data. - - - Allows this object to attempt to free resources and perform other cleanup operations before garbage collection reclaims the object. - - - Gets the contents of the back buffer. - The section of the back buffer to copy. null indicates the data will be copied from the entire back buffer. - Array of data. - The first element to use. - The number of elements to use. - - - Gets the contents of the back buffer. - Array of data. - - - Gets the contents of the back buffer. - Array of data. - The first element to use. - The number of elements to use. - - - Gets a render target surface. - - - Gets the vertex buffers. - - - Retrieves the status of the device. - - - Gets the graphics profile. The default value is GraphicsProfile.Reach. - - - Gets or sets index data. The default value is null. - - - Gets a value that indicates whether the object is disposed. - - - Gets or sets a bitmask controlling modification of the samples in a multisample render target. The default value is -1 (0xffffffff). - - - Presents the display with the contents of the next buffer in the sequence of back buffers owned by the GraphicsDevice. - - - Specifies the window target for a presentation and presents the display with the contents of the next buffer in the sequence of back buffers owned by the GraphicsDevice. - The source rectangle. If null, the entire source surface is presented. If the rectangle exceeds the source surface, the rectangle is clipped to the source surface. - The destination rectangle, in window client coordinates. If null, the entire client area is filled. If the rectangle exceeds the destination client area, the rectangle is clipped to the destination client area. - Destination window containing the client area that is the target for this presentation. If not specified, this is DeviceWindowHandle. - - - Gets the presentation parameters associated with this graphics device. - - - Gets or sets rasterizer state. The default value is RasterizerState.CullCounterClockwise. - - - Gets or sets a reference value for stencil testing. The default value is zero. - - - Resets the presentation parameters for the current GraphicsDevice. - - - Resets the current GraphicsDevice with the specified PresentationParameters. - Describes the new presentation parameters. This value cannot be null. - - - Resets the specified Reset with the specified presentation parameters. - Describes the new presentation parameters. This value cannot be null. - The graphics device being reset. - - - Occurs when a resource is created. - The event data. - - - Occurs when a resource is destroyed. - The event data. - - - Retrieves a collection of SamplerState objects for the current GraphicsDevice. - - - Gets or sets the rectangle used for scissor testing. By default, the size matches the render target size. - - - Sets a new render target for this GraphicsDevice. - A new render target for the device, or null to set the device render target to the back buffer of the device. - - - Sets a new render target for this GraphicsDevice. - A new render target for the device, or null to set the device render target to the back buffer of the device. - The cube map face type. - - - Sets an array of render targets. - [ParamArrayAttribute] An array of render targets. - - - Sets or binds a vertex buffer to the device. - A vertex buffer. - - - Sets or binds a vertex buffer to the device. - A vertex buffer. - The offset (in vertices) from the beginning of the buffer. - - - Sets the vertex buffers. - [ParamArrayAttribute] An array of vertex buffers. - - - Returns the collection of textures that have been assigned to the texture stages of the device. Reference page contains code sample. - - - Gets the collection of vertex sampler states. - - - Gets the collection of vertex textures that support texture lookup in the vertex shader using the texldl statement. The vertex engine contains four texture sampler stages. - - - Gets or sets a viewport identifying the portion of the render target to receive draw calls. Reference page contains code sample. - - - Describes the status of the device. - - - The device has been lost. - - - The device is normal. - - - The device has not been reset. - - - Identifies the set of supported devices for the game based on device capabilities. - - - Use the largest available set of graphic features and capabilities to target devices, such as an Xbox 360 console and a Windows-based computer, that have more enhanced graphic capabilities. - - - Use a limited set of graphic features and capabilities, allowing the game to support the widest variety of devices, including all Windows-based computers and Windows Phone. - - - Queries and prepares resources. - - - Immediately releases the unmanaged resources used by this object. - - - Immediately releases the unmanaged resources used by this object. - [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - Occurs when Dispose is called or when this object is finalized and collected by the garbage collector of the Microsoft .NET common language runtime. - - - - Allows this object to attempt to free resources and perform other cleanup operations before garbage collection reclaims the object. - - - Gets the GraphicsDevice associated with this GraphicsResource. - - - Gets a value that indicates whether the object is disposed. - - - Gets the name of the resource. - - - Gets the resource tags for this resource. - - - Gets a string representation of the current instance. - - - Gets or sets fog parameters for the current effect. - - - Gets or sets the fog color. - - - Enables or disables fog. - - - Gets or sets maximum z value for fog. - - - Gets or sets minimum z value for fog. - - - Gets or sets lighting parameters for the current effect. - - - Gets or sets the ambient light color for the current effect. - - - Gets the first directional light for the current effect. - - - Gets the second directional light for the current effect. - - - Gets the third directional light for the current effect. - - - Enables default lighting for the current effect. - - - Enables or disables lighting in an IEffectLights. - - - Gets or sets transformation matrix parameters for the current effect. - - - Gets or sets the projection matrix in the current effect. - - - Gets or sets the view matrix in the current effect. - - - Gets or sets the world matrix in the current effect. - - - Defines a mechanism for retrieving GraphicsDevice objects. - - - The event that occurs when a graphics device is created. - - - - The event that occurs when a graphics device is disposing. - - - - The event that occurs when a graphics device is reset. - - - - The event that occurs when a graphics device is in the process of resetting. - - - - Retrieves a graphcs device. - - - Describes the rendering order of the vertices in a vertex buffer. - - - Initializes a new instance of the IndexBuffer class. - The GraphicsDevice object to associate with the index buffer. - The size (in bits) of each index. - The number of indices. - Behavior options. - - - Initializes a new instance of the IndexBuffer class. - The GraphicsDevice object to associate with the index buffer. - The index value type. - The number of indices. - Behavior options. - - - Gets the state of the related BufferUsage enumeration. - - - Immediately releases the unmanaged resources used by this object. - [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - Gets a copy of the index buffer data, specifying the start index, starting offset, number of elements, and size of the elements. - Offset in bytes from the beginning of the buffer to the data. - Array of data. - Index of the first element to get. - Number of elements to get. - - - Gets a copy of the index buffer data. - Array of data. - - - Gets a copy of the index buffer data, specifying the start index and number of elements. - Array of data. - Index of the first element to get. - Number of elements to get. - - - Gets the number of indices in this buffer. - - - Gets a value indicating the size of this index element. - - - Sets index buffer data, specifying the offset, start index and number of elements. - Offset in bytes from the beginning of the buffer to the data. - Array of data. - Index of the first element to set. - Number of elements to set. - - - Sets index buffer data. Reference page contains links to related conceptual articles. - Array of data. - - - Sets index buffer data, specifying the start index and number of elements. - Array of data. - Index of the first element to set. - Number of elements to set. - - - Defines the size of an element of an index buffer. - - - Sixteen bits. - - - Thirty-two bits. - - - Vertex type interface which is implemented by a custom vertex type structure. - - - Vertex declaration, which defines per-vertex data. - - - Represents a 3D model composed of multiple ModelMesh objects which may be moved independently. - - - Gets a collection of ModelBone objects which describe how each mesh in the Meshes collection for this model relates to its parent mesh. - - - Copies a transform of each bone in a model relative to all parent bones of the bone into a given array. - The array to receive bone transforms. - - - Copies an array of transforms into each bone in the model. - An array containing new bone transforms. - - - Copies each bone transform relative only to the parent bone of the model to a given array. - The array to receive bone transforms. - - - Render a model after applying the matrix transformations. - A world transformation matrix. - A view transformation matrix. - A projection transformation matrix. - - - Gets a collection of ModelMesh objects which compose the model. Each ModelMesh in a model may be moved independently and may be composed of multiple materials identified as ModelMeshPart objects. - - - Gets the root bone for this model. - - - Gets or sets an object identifying this model. - - - Represents bone data for a model. Reference page contains links to related conceptual articles. - - - Gets a collection of bones that are children of this bone. - - - Gets the index of this bone in the Bones collection. - - - Gets the name of this bone. - - - Gets the parent of this bone. - - - Gets or sets the matrix used to transform this bone relative to its parent bone. - - - Represents a set of bones associated with a model. - - - Returns a ModelBoneCollection.Enumerator that can iterate through a ModelBoneCollection. - - - Retrieves a ModelBone from the collection, given the name of the bone. - The name of the bone to retrieve. - - - Finds a bone with a given name if it exists in the collection. - The name of the bone to find. - [OutAttribute] The bone named boneName, if found. - - - Provides the ability to iterate through the bones in an ModelBoneCollection. - - - Gets the current element in the ModelBoneCollection. - - - Immediately releases the unmanaged resources used by this object. - - - Advances the enumerator to the next element of the ModelBoneCollection. - - - Gets the current element in the ModelBoneCollection as a Object. - - - Sets the enumerator to its initial position, which is before the first element in the ModelBoneCollection. - - - Represents a collection of effects associated with a model. - - - Returns a ModelEffectCollection.Enumerator that can iterate through a ModelEffectCollection. - - - Provides the ability to iterate through the bones in an ModelEffectCollection. - - - Gets the current element in the ModelEffectCollection. - - - Immediately releases the unmanaged resources used by this object. - - - Advances the enumerator to the next element of the ModelEffectCollection. - - - Gets the current element in the ModelEffectCollection as a Object. - - - Sets the enumerator to its initial position, which is before the first element in the ModelEffectCollection. - - - Represents a mesh that is part of a Model. - - - Gets the BoundingSphere that contains this mesh. - - - Draws all of the ModelMeshPart objects in this mesh, using their current Effect settings. - - - Gets a collection of effects associated with this mesh. - - - Gets the ModelMeshPart objects that make up this mesh. Each part of a mesh is composed of a set of primitives that share the same material. - - - Gets the name of this mesh. - - - Gets the parent bone for this mesh. The parent bone of a mesh contains a transformation matrix that describes how the mesh is located relative to any parent meshes in a model. - - - Gets or sets an object identifying this mesh. - - - Represents a collection of ModelMesh objects. - - - Returns a ModelMeshCollection.Enumerator that can iterate through a ModelMeshCollection. - - - Retrieves a ModelMesh from the collection, given the name of the mesh. - The name of the mesh to retrieve. - - - Finds a mesh with a given name if it exists in the collection. - The name of the mesh to find. - [OutAttribute] The mesh named meshName, if found. - - - Provides the ability to iterate through the bones in an ModelMeshCollection. - - - Gets the current element in the ModelMeshCollection. - - - Immediately releases the unmanaged resources used by this object. - - - Advances the enumerator to the next element of the ModelMeshCollection. - - - Gets the current element in the ModelMeshCollection as a Object. - - - Sets the enumerator to its initial position, which is before the first element in the ModelMeshCollection. - - - Represents a batch of geometry information to submit to the graphics device during rendering. Each ModelMeshPart is a subdivision of a ModelMesh object. The ModelMesh class is split into multiple ModelMeshPart objects, typically based on material information. - - - Gets or sets the material Effect for this mesh part. Reference page contains code sample. - - - Gets the index buffer for this mesh part. - - - Gets the number of vertices used during a draw call. - - - Gets the number of primitives to render. - - - Gets the location in the index array at which to start reading vertices. - - - Gets or sets an object identifying this model mesh part. - - - Gets the vertex buffer for this mesh part. - - - Gets the offset (in vertices) from the top of vertex buffer. - - - Represents a collection of ModelMeshPart objects. - - - Returns a ModelMeshPartCollection.Enumerator that can iterate through a ModelMeshPartCollection. - - - Provides the ability to iterate through the bones in an ModelMeshPartCollection. - - - Gets the current element in the ModelMeshPartCollection. - - - Immediately releases the unmanaged resources used by this object. - - - Advances the enumerator to the next element of the ModelMeshPartCollection. - - - Gets the current element in the ModelMeshPartCollection as a Object. - - - Sets the enumerator to its initial position, which is before the first element in the ModelMeshPartCollection. - - - Thrown when no available graphics device fits the given device preferences. - - - Create a new instance of this object. - - - Create a new instance of this object. - A message that describes the error. - - - Create a new instance of this object. - A message that describes the error. - The exception that is the cause of the current exception. If the inner parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception. - - - Used to perform an occlusion query against the latest drawn objects. - - - Initializes a new instance of OcclusionQuery with the specified device. - The graphics device to associate with this query. - - - Begins application of the query. - - - Releases the unmanaged resources used by Dispose and optionally releases the managed resources. - [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - Ends the application of the query. - - - Gets a value that indicates if the occlusion query has completed. - - - Gets the number of visible pixels. - - - Contains presentation parameters. - - - Initializes a new instance of this class. - - - Gets or sets the format of the back buffer. Reference page contains links to related conceptual articles. - - - Gets or sets a value indicating the height of the new swap chain's back buffer. - - - Gets or sets a value indicating the width of the new swap chain's back buffer. - - - Gets the size of this resource. - - - Creates a copy of this PresentationParameters object. - - - Gets or sets the depth stencil data format. - - - Gets or sets the handle to the device window. - - - Gets or sets the orientation of the display. The default value is DisplayOrientation.Default, which means orientation is determined automatically from your BackBufferWidth and BackBufferHeight. - - - Gets or sets a value indicating whether the application is in full screen mode. - - - Gets or sets a value indicating the number of sample locations during multisampling. - - - Gets or sets the maximum rate at which the swap chain's back buffers can be presented to the front buffer. - - - Gets or sets render target usage flags. - - - Defines flags that describe the relationship between the adapter refresh rate and the rate at which Present operations are completed. - - - Equivalent to setting One. - - - The runtime updates the window client area immediately, and might do so more than once during the adapter refresh period. Present operations might be affected immediately. This option is always available for both windowed and full-screen swap chains. - - - The driver waits for the vertical retrace period (the runtime will beam trace to prevent tearing). Present operations are not affected more frequently than the screen refresh rate; the runtime completes one Present operation per adapter refresh period, at most. This option is always available for both windowed and full-screen swap chains. - - - The driver waits for the vertical retrace period. Present operations are not affected more frequently than every second screen refresh. - - - Defines how vertex data is ordered. - - - The data is ordered as a sequence of line segments; each line segment is described by two new vertices. The count may be any positive integer. - - - The data is ordered as a sequence of line segments; each line segment is described by one new vertex and the last vertex from the previous line seqment. The count may be any positive integer. - - - The data is ordered as a sequence of triangles; each triangle is described by three new vertices. Back-face culling is affected by the current winding-order render state. - - - The data is ordered as a sequence of triangles; each triangle is described by two new vertices and one vertex from the previous triangle. The back-face culling flag is flipped automatically on even-numbered triangles. - - - Contains rasterizer state, which determines how to convert vector data (shapes) into raster data (pixels). - - - Initializes a new instance of the rasterizer class. - - - A built-in state object with settings for culling primitives with clockwise winding order. - - - A built-in state object with settings for culling primitives with counter-clockwise winding order. - - - Specifies the conditions for culling or removing triangles. The default value is CullMode.CounterClockwise. - - - A built-in state object with settings for not culling any primitives. - - - Sets or retrieves the depth bias for polygons, which is the amount of bias to apply to the depth of a primitive to alleviate depth testing problems for primitives of similar depth. The default value is 0. - - - Immediately releases the unmanaged resources used by this object. - [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - The fill mode, which defines how a triangle is filled during rendering. The default is FillMode.Solid. - - - Enables or disables multisample antialiasing. The default is true. - - - Enables or disables scissor testing. The default is false. - - - Gets or sets a bias value that takes into account the slope of a polygon. This bias value is applied to coplanar primitives to reduce aliasing and other rendering artifacts caused by z-fighting. The default is 0. - - - Contains a 2D texture that can be used as a render target. - - - Creates an instance of this object. - The graphics device to associate with this render target resource. - Width, in pixels, of the render target. You can use graphicsDevice.PresentationParameters.BackBufferWidth to get the current screen width. - Height, in pixels, of the render target. You can use graphicsDevice.PresentationParameters.BackBufferHeight to get the current screen height. - - - Creates an instance of this object. - The graphics device to associate with this render target resource. - Width, in pixels, of the render target. You can use graphicsDevice.PresentationParameters.BackBufferWidth to get the current screen width. - Height, in pixels, of the render target. You can use graphicsDevice.PresentationParameters.BackBufferHeight to get the current screen height. - [MarshalAsAttribute(U1)] True to enable a full mipmap chain to be generated, false otherwise. - Preferred format for the surface data. This is the format preferred by the application, which may or may not be available from the hardware. - Preferred format for the depth buffer. This is the format preferred by the application, which may or may not be available from the hardware. - - - Creates an instance of this object. - The graphics device to associate with this render target resource. - Width, in pixels, of the render target. You can use graphicsDevice.PresentationParameters.BackBufferWidth to get the current screen width. - Height, in pixels, of the render target. You can use graphicsDevice.PresentationParameters.BackBufferHeight to get the current screen height. - [MarshalAsAttribute(U1)] True to enable a full mipmap chain to be generated, false otherwise. - Preferred format for the surface data. This is the format preferred by the application, which may or may not be available from the hardware. - Preferred format for the depth buffer. This is the format preferred by the application, which may or may not be available from the hardware. - The preferred number of multisample locations. - Behavior options. - - - Occurs when resources are lost due to a lost device event. - - - - Gets the data format for the depth stencil data. - - - Determines if the index buffer data has been lost due to a lost device event. - - - Gets the number of sample locations during multisampling. - - - Gets or sets the render target usage. - - - Binds an array of render targets. - - - Creates an instance of this object. - Identifies a 2D render target. - - - Creates an instance of this object. - Identifies a cubemap render target. - Cubemap face. - - - Gets one face of a cubemap. - - - Gets a 2D texture. - - - Represents a cubic texture resource that will be written to at the end of a render pass. - - - Creates an instance of this object. - The graphics device to associate with this render target resource. - The width and height of this cube texture resource, in pixels. - [MarshalAsAttribute(U1)] True to generate a full mipmap chain, false otherwise. - Preferred format of the surface data. - Preferred format of the depth data. - - - Creates an instance of this object. - The graphics device to associate with this render target resource. - The width and height of this cube texture resource, in pixels. - [MarshalAsAttribute(U1)] True to generate a full mipmap chain, false otherwise. - Preferred format of the surface data. - Preferred format of the depth data. - Preferred number of sample locations during multisampling. - Options identifying the behaviors of this texture resource. - - - Occurs when a resource is lost due to a device being lost. - - - - Gets the depth format of this rendertarget. - - - Determines if the data has been lost due to a lost device event. - - - Gets the number of multisample locations. - - - Gets the usage mode of this rendertarget. - - - Determines how render target data is used once a new render target is set. - - - Always clears the render target data. - - - Either clears or keeps the data, depending on the current platform. On Xbox 360, the render target will discard contents. On PC, the render target will discard if multisampling is enabled, and preserve the contents if not. - - - Always keeps the render target data. - - - Contains event data. - - - The object raising the event. - - - Arguments for a ResourceDestroyed event. - - - Gets the name of the destroyed resource. - - - Gets the resource manager tag of the destroyed resource. - - - Contains sampler state, which determines how to sample texture data. - - - Initializes a new instance of the sampler state class. - - - Gets or sets the texture-address mode for the u-coordinate. - - - Gets or sets the texture-address mode for the v-coordinate. - - - Gets or sets the texture-address mode for the w-coordinate. - - - Contains default state for anisotropic filtering and texture coordinate clamping. - - - Contains default state for anisotropic filtering and texture coordinate wrapping. - - - Immediately releases the unmanaged resources used by this object. - [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - Gets or sets the type of filtering during sampling. - - - Contains default state for linear filtering and texture coordinate clamping. - - - Contains default state for linear filtering and texture coordinate wrapping. - - - Gets or sets the maximum anisotropy. The default value is 4. - - - Gets or sets the level of detail (LOD) index of the largest map to use. - - - Gets or sets the mipmap LOD bias. The default value is 0. A negative value indicates a larger mipmap level; a positive value indicates a smaller mipmap level. - - - Contains default state for point filtering and texture coordinate clamping. - - - Contains default state for point filtering and texture coordinate wrapping. - - - Collection of SamplerState objects. - - - Gets a specific SamplerState object using an index value. - Index of the object to retrieve. - - - Describes whether existing vertex or index buffer data will be overwritten or discarded during a SetData operation. - - - The SetData operation will discard the entire buffer. A pointer to a new memory area is returned so that the direct memory access (DMA) and rendering from the previous area do not stall. - - - Portions of existing data in the buffer may be overwritten during this operation. - - - The SetData operation will not overwrite existing data in the vertex and index buffers. Specifying this option allows the driver to return immediately from a SetData operation and continue rendering. - - - Contains a configurable effect for rendering skinned character models. - - - Creates a SkinnedEffect with default parameter settings. - The graphics device. - - - Creates a SkinnedEffect by cloning parameter settings from an existing instance. - An existing instance. - - - Gets or sets the material alpha which determines its transparency. Range is between 1 (fully opaque) and 0 (fully transparent). - - - Gets or sets the ambient color for a light, the range of color values is from 0 to 1. - - - Creates a clone of the current SkinnedEffect instance. - - - Gets or sets the diffuse color for a material, the range of color values is from 0 to 1. - - - Gets the first directional light. - - - Gets the second directional light. - - - Gets the third directional light. - - - Gets or sets the emissive color for a material, the range of color values is from 0 to 1. - - - Sets up standard key, fill, and back lighting for a SkinnedEffect. - - - Gets or sets the fog color, the range of color values is from 0 to 1. - - - Gets or sets the fog enable flag. - - - Gets or sets the maximum z value for fog. - - - Gets or sets the minimum z value for fog. - - - Gets the bone transform matrices for a SkinnedEffect. - The number of matrices. - - - The maximum number of bones. - - - Enables lighting in an SkinnedEffect. - - - Computes derived parameter values immediately before applying the effect. - - - Gets or sets the per-pixel prefer lighting flag. - - - Gets or sets the projection matrix. - - - Sets an array of bone transform matrices for a SkinnedEffect. - An array of bone transformation matrices; the maximum number of bones (matrices) allowed is 72. - - - Gets or sets the specular color for a material, the range of color values is from 0 to 1. - - - Gets or sets the material specular power. - - - Gets or sets the current texture. - - - Gets or sets the view matrix. - - - Gets or sets the number of per-vertex skinning weights to evaluate, which is either 1, 2, or 4. - - - Gets or sets the world matrix. - - - Enables a group of sprites to be drawn using the same settings. - - - Initializes a new instance of the class, which enables a group of sprites to be drawn using the same settings. - The graphics device where sprites will be drawn. - - - Begins a sprite batch operation using deferred sort and default state objects (BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise). - - - Begins a sprite batch operation using the specified sort and blend state object and default state objects (DepthStencilState.None, SamplerState.LinearClamp, RasterizerState.CullCounterClockwise). If you pass a null blend state, the default is BlendState.AlphaBlend. - Sprite drawing order. - Blending options. - - - Begins a sprite batch operation using the specified sort, blend, sampler, depth stencil and rasterizer state objects. Passing null for any of the state objects selects the default default state objects (BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise). - Sprite drawing order. - Blending options. - Texture sampling options. - Depth and stencil options. - Rasterization options. - - - Begins a sprite batch operation using the specified sort, blend, sampler, depth stencil and rasterizer state objects, plus a custom effect. Passing null for any of the state objects selects the default default state objects (BlendState.AlphaBlend, DepthStencilState.None, RasterizerState.CullCounterClockwise, SamplerState.LinearClamp). Passing a null effect selects the default SpriteBatch Class shader. - Sprite drawing order. - Blending options. - Texture sampling options. - Depth and stencil options. - Rasterization options. - Effect state options. - - - Begins a sprite batch operation using the specified sort, blend, sampler, depth stencil, rasterizer state objects, plus a custom effect and a 2D transformation matrix. Passing null for any of the state objects selects the default default state objects (BlendState.AlphaBlend, DepthStencilState.None, RasterizerState.CullCounterClockwise, SamplerState.LinearClamp). Passing a null effect selects the default SpriteBatch Class shader. - Sprite drawing order. - Blending options. - Texture sampling options. - Depth and stencil options. - Rasterization options. - Effect state options. - Transformation matrix for scale, rotate, translate options. - - - Immediately releases the unmanaged resources used by this object. - true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - Adds a sprite to a batch of sprites for rendering using the specified texture, destination rectangle, and color. Reference page contains links to related code samples. - A texture. - A rectangle that specifies (in screen coordinates) the destination for drawing the sprite. - The color to tint a sprite. Use Color.White for full color with no tinting. - - - Adds a sprite to a batch of sprites for rendering using the specified texture, destination rectangle, source rectangle, and color. - A texture. - A rectangle that specifies (in screen coordinates) the destination for drawing the sprite. If this rectangle is not the same size as the source rectangle, the sprite will be scaled to fit. - A rectangle that specifies (in texels) the source texels from a texture. Use null to draw the entire texture. - The color to tint a sprite. Use Color.White for full color with no tinting. - - - Adds a sprite to a batch of sprites for rendering using the specified texture, destination rectangle, source rectangle, color, rotation, origin, effects and layer. - A texture. - A rectangle that specifies (in screen coordinates) the destination for drawing the sprite. If this rectangle is not the same size as the source rectangle, the sprite will be scaled to fit. - A rectangle that specifies (in texels) the source texels from a texture. Use null to draw the entire texture. - The color to tint a sprite. Use Color.White for full color with no tinting. - Specifies the angle (in radians) to rotate the sprite about its center. - The sprite origin; the default is (0,0) which represents the upper-left corner. - Effects to apply. - The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing. - - - Adds a sprite to a batch of sprites for rendering using the specified texture, position and color. Reference page contains links to related code samples. - A texture. - The location (in screen coordinates) to draw the sprite. - The color to tint a sprite. Use Color.White for full color with no tinting. - - - Adds a sprite to a batch of sprites for rendering using the specified texture, position, source rectangle, and color. - A texture. - The location (in screen coordinates) to draw the sprite. - A rectangle that specifies (in texels) the source texels from a texture. Use null to draw the entire texture. - The color to tint a sprite. Use Color.White for full color with no tinting. - - - Adds a sprite to a batch of sprites for rendering using the specified texture, position, source rectangle, color, rotation, origin, scale, effects and layer. Reference page contains links to related code samples. - A texture. - The location (in screen coordinates) to draw the sprite. - A rectangle that specifies (in texels) the source texels from a texture. Use null to draw the entire texture. - The color to tint a sprite. Use Color.White for full color with no tinting. - Specifies the angle (in radians) to rotate the sprite about its center. - The sprite origin; the default is (0,0) which represents the upper-left corner. - Scale factor. - Effects to apply. - The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing. - - - Adds a sprite to a batch of sprites for rendering using the specified texture, position, source rectangle, color, rotation, origin, scale, effects, and layer. Reference page contains links to related code samples. - A texture. - The location (in screen coordinates) to draw the sprite. - A rectangle that specifies (in texels) the source texels from a texture. Use null to draw the entire texture. - The color to tint a sprite. Use Color.White for full color with no tinting. - Specifies the angle (in radians) to rotate the sprite about its center. - The sprite origin; the default is (0,0) which represents the upper-left corner. - Scale factor. - Effects to apply. - The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing. - - - Adds a string to a batch of sprites for rendering using the specified font, text, position, and color. - A font for diplaying text. - A text string. - The location (in screen coordinates) to draw the sprite. - The color to tint a sprite. Use Color.White for full color with no tinting. - - - Adds a string to a batch of sprites for rendering using the specified font, text, position, color, rotation, origin, scale, effects and layer. - A font for diplaying text. - A text string. - The location (in screen coordinates) to draw the sprite. - The color to tint a sprite. Use Color.White for full color with no tinting. - Specifies the angle (in radians) to rotate the sprite about its center. - The sprite origin; the default is (0,0) which represents the upper-left corner. - Scale factor. - Effects to apply. - The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing. - - - Adds a string to a batch of sprites for rendering using the specified font, text, position, color, rotation, origin, scale, effects and layer. - A font for diplaying text. - A text string. - The location (in screen coordinates) to draw the sprite. - The color to tint a sprite. Use Color.White for full color with no tinting. - Specifies the angle (in radians) to rotate the sprite about its center. - The sprite origin; the default is (0,0) which represents the upper-left corner. - Scale factor. - Effects to apply. - The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing. - - - Adds a string to a batch of sprites for rendering using the specified font, text, position, and color. - A font for diplaying text. - Text string. - The location (in screen coordinates) to draw the sprite. - The color to tint a sprite. Use Color.White for full color with no tinting. - - - Adds a string to a batch of sprites for rendering using the specified font, text, position, color, rotation, origin, scale, effects and layer. - A font for diplaying text. - Text string. - The location (in screen coordinates) to draw the sprite. - The color to tint a sprite. Use Color.White for full color with no tinting. - Specifies the angle (in radians) to rotate the sprite about its center. - The sprite origin; the default is (0,0) which represents the upper-left corner. - Scale factor. - Effects to apply. - The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing. - - - Adds a string to a batch of sprites for rendering using the specified font, text, position, color, rotation, origin, scale, effects and layer. - A font for diplaying text. - Text string. - The location (in screen coordinates) to draw the sprite. - The color to tint a sprite. Use Color.White for full color with no tinting. - Specifies the angle (in radians) to rotate the sprite about its center. - The sprite origin; the default is (0,0) which represents the upper-left corner. - Scale factor. - Effects to apply. - The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. Use SpriteSortMode if you want sprites to be sorted during drawing. - - - Flushes the sprite batch and restores the device state to how it was before Begin was called. - - - Defines sprite mirroring options. - - - Rotate 180 degrees about the Y axis before rendering. - - - Rotate 180 degrees about the X axis before rendering. - - - No rotations specified. - - - Represents a font texture. - - - Gets a collection of all the characters that are included in the font. - - - Gets or sets the default character for the font. - - - Gets or sets the vertical distance (in pixels) between the base lines of two consecutive lines of text. Line spacing includes the blank space between lines as well as the height of the characters. - - - Returns the width and height of a string as a Vector2. - The string to measure. - - - Returns the width and height of a string as a Vector2. - The string to measure. - - - Gets or sets the spacing of the font characters. - - - Defines sprite sort-rendering options. - - - Same as Deferred mode, except sprites are sorted by depth in back-to-front order prior to drawing. This procedure is recommended when drawing transparent sprites of varying depths. - - - Sprites are not drawn until End is called. End will apply graphics device settings and draw all the sprites in one batch, in the same order calls to Draw were received. This mode allows Draw calls to two or more instances of SpriteBatch without introducing conflicting graphics device settings. SpriteBatch defaults to Deferred mode. - - - Same as Deferred mode, except sprites are sorted by depth in front-to-back order prior to drawing. This procedure is recommended when drawing opaque sprites of varying depths. - - - Begin will apply new graphics device settings, and sprites will be drawn within each Draw call. In Immediate mode there can only be one active SpriteBatch instance without introducing conflicting device settings. - - - Same as Deferred mode, except sprites are sorted by texture prior to drawing. This can improve performance when drawing non-overlapping sprites of uniform depth. - - - Defines stencil buffer operations. - - - Decrements the stencil-buffer entry, wrapping to the maximum value if the new value is less than 0. - - - Decrements the stencil-buffer entry, clamping to 0. - - - Increments the stencil-buffer entry, wrapping to 0 if the new value exceeds the maximum value. - - - Increments the stencil-buffer entry, clamping to the maximum value. - - - Inverts the bits in the stencil-buffer entry. - - - Does not update the stencil-buffer entry. This is the default value. - - - Replaces the stencil-buffer entry with a reference value. - - - Sets the stencil-buffer entry to 0. - - - Defines various types of surface formats. - - - (Unsigned format) 8-bit alpha only. - - - (Unsigned format) 16-bit BGR pixel format with 5 bits for blue, 6 bits for green, and 5 bits for red. - - - (Unsigned format) 16-bit BGRA pixel format with 4 bits for each channel. - - - (Unsigned format) 16-bit BGRA pixel format where 5 bits are reserved for each color and 1 bit is reserved for alpha. - - - (Unsigned format) 32-bit ARGB pixel format with alpha, using 8 bits per channel. - - - DXT1 compression texture format. The runtime will not allow an application to create a surface using a DXTn format unless the surface dimensions are multiples of 4. This applies to offscreen-plain surfaces, render targets, 2D textures, cube textures, and volume textures. - - - DXT3 compression texture format. The runtime will not allow an application to create a surface using a DXTn format unless the surface dimensions are multiples of 4. This applies to offscreen-plain surfaces, render targets, 2D textures, cube textures, and volume textures. - - - DXT5 compression texture format. The runtime will not allow an application to create a surface using a DXTn format unless the surface dimensions are multiples of 4. This applies to offscreen-plain surfaces, render targets, 2D textures, cube textures, and volume textures. - - - (Floating-point format) 16-bit float format using 16 bits for the red channel. - - - (Floating-point format) 32-bit float format using 16 bits for the red channel and 16 bits for the green channel. - - - (Floating-point format) 64-bit float format using 16 bits for each channel (alpha, blue, green, red). - - - (Floating-point format) for high dynamic range data. - - - (Signed format) 16-bit bump-map format using 8 bits each for u and v data. - - - (Signed format) 32-bit bump-map format using 8 bits for each channel. - - - (Unsigned format) 32-bit pixel format using 16 bits each for red and green. - - - (Unsigned format) 32-bit RGBA pixel format using 10 bits for each color and 2 bits for alpha. - - - (Unsigned format) 64-bit RGBA pixel format using 16 bits for each component. - - - (IEEE format) 32-bit float format using 32 bits for the red channel. - - - (IEEE format) 64-bit float format using 32 bits for the red channel and 32 bits for the green channel. - - - (IEEE format) 128-bit float format using 32 bits for each channel (alpha, blue, green, red). - - - Represents a texture resource. - - - Gets the format of the texture data. - - - Gets the number of texture levels in a multilevel texture. - - - Represents a 2D grid of texels. - - - Creates a new instance of this object. - The device. - Texture width. - Texture height. - - - Creates a new instance of this object. - The device. - Texture width. - Texture height. - [MarshalAsAttribute(U1)] True to generate a full mipmap chain; false otherwise. - Texture data format. - - - Gets the size of this resource. - - - Loads texture data from a stream. - A graphics device. - Data stream from one of the following file types: .gif, .jpg or .png. - - - Loads texture data from a stream. - A graphics device. - Data stream from one of the following file types: .gif, .jpg or .png. - The requested image width. - The requested image height. - Control the aspect ratio when zooming (scaling); set to false to maintain a constant aspect ratio, true otherwise. See remarks. - - - Gets a copy of 2D texture data, specifying a mipmap level, source rectangle, start index, and number of elements. Reference page contains code sample. - Mipmap level. - The section of the texture to copy. null indicates the data will be copied from the entire texture. - Array of data. - Index of the first element to get. - Number of elements to get. - - - Gets a copy of 2D texture data. Reference page contains code sample. - Array of data. - - - Gets a copy of 2D texture data, specifying a start index and number of elements. Reference page contains code sample. - Array of data. - Index of the first element to get. - Number of elements to get. - - - Gets the height of this texture resource, in pixels. - - - Saves texture data as a .jpg. - Data stream number. - Image width. - Image height. - - - Saves texture data as a .png. - Data stream number. - Image width. - Image height. - - - Sets 2D texture data, specifying a mipmap level, source rectangle, start index, and number of elements. - Mipmap level. - A bounding box that defines the position and location (in pixels) of the data. - Array of data. - Index of the first element to set. - Number of elements to set. - - - Sets 2D texture data. Reference page contains links to related conceptual articles. - Array of data. - - - Sets 2D texture data, specifying a start index, and number of elements. - Array of data. - Index of the first element to set. - Number of elements to set. - - - Gets the width of this texture resource, in pixels. - - - Represents a 3D volume of texels. - - - Creates a new instance of this object. - A device. - Texture width. - Texture height. - Texture depth. - [MarshalAsAttribute(U1)] True to generate a full mipmap chain; false otherwise. - Data format. - - - Gets the depth of this volume texture resource, in pixels. - - - Gets a copy of 3D texture data, specifying a mimap level, source rectangle, start index, and number of elements. - Mipmap level. - Position of the left side of the box on the x-axis. - Position of the top of the box on the y-axis. - Position of the right side of the box on the x-axis. - Position of the bottom of the box on the y-axis. - Position of the front of the box on the z-axis. - Position of the back of the box on the z-axis. - Array of data. - Index of the first element to get. - Number of elements to get. - - - Gets a copy of 3D texture data. - Array of data. - - - Gets a copy of 3D texture data, specifying a start index and number of elements. - Array of data. - Index of the first element to get. - Number of elements to get. - - - Gets the height of this texture resource, in pixels. - - - Sets 3D texture data, specifying a mipmap level, source box, start index, and number of elements. - Mipmap level. - X coordinate of the left face of the 3D bounding cube. - Y coordinate of the top face of the 3D bounding cube. - X coordinate of the right face of the 3D bounding cube. - Y coordinate of the bottom face of the 3D bounding cube. - Z coordinate of the front face of the 3D bounding cube. - Z coordinate of the back face of the 3D bounding cube. - Array of data. - Index of the first element to set. - Number of elements to set. - - - Sets 3D texture data. - Array of data. - - - Sets 3D texture data, specifying a start index and number of elements. - Array of data. - Index of the first element to set. - Number of elements to set. - - - Gets the width of this texture resource, in pixels. - - - Defines modes for addressing texels using texture coordinates that are outside of the typical range of 0.0 to 1.0. - - - Texture coordinates outside the range [0.0, 1.0] are set to the texture color at 0.0 or 1.0, respectively. - - - Similar to Wrap, except that the texture is flipped at every integer junction. For u values between 0 and 1, for example, the texture is addressed normally; between 1 and 2, the texture is flipped (mirrored); between 2 and 3, the texture is normal again, and so on. - - - Tile the texture at every integer junction. For example, for u values between 0 and 3, the texture is repeated three times; no mirroring is performed. - - - Represents a collection of Texture objects. - - - Gets or sets the Texture at the specified sampler number. - Zero-based sampler number. Textures are bound to samplers; samplers define sampling state such as the filtering mode and the address wrapping mode. Programmable shaders reference textures using this sampler number. - - - Represents a set of six 2D textures, one for each face of a cube. - - - Creates a new instance of this object. - The device. - The size (in pixels) of the top-level faces of the cube texture. Subsequent levels of each face will be the truncated value of half of the previous level's pixel dimension (independently). Each dimension is clamped to a minimum of 1 pixel. - [MarshalAsAttribute(U1)] True to generate a full mipmap chain, false otherwise. - Surface data format. - - - Gets a copy of cube texture data, specifying a cubemap face, mimap level, source rectangle, start index, and number of elements. - Cube map face. - Mipmap level. - The section of the texture where the data will be placed. null indicates the data will be copied over the entire texture. - Array of data. - Index of the first element to get. - Number of elements to get. - - - Gets a copy of cube texture data specifying a cubemap face. - Cubemap face. - Array of data. - - - Gets a copy of cube texture data, specifying a cubemap face, start index, and number of elements. - Cubemap face. - Array of data. - Index of the first element to get. - Number of elements to get. - - - Sets cube texture data, specifying a cubemap face, mipmap level, source rectangle, start index, and number of elements. - Cubemap face. - Mipmap level. - Region in the texture to set the data; use null to set data to the entire texture. - Array of data. - Index of the first element to set. - Number of elements to set. - - - Sets cube texture data, specifying a cubemap face. - The cubemap face. - Array of data. - - - Sets cube texture data, specifying a cubemap face, start index, and number of elements. - The cubemap face. - Array of data. - Index of the first element to set. - Number of elements to set. - - - Gets the width and height of this texture resource, in pixels. - - - Defines filtering types during texture sampling. - - - Use anisotropic filtering. - - - Use linear filtering. - - - Use linear filtering to shrink or expand, and point filtering between mipmap levels (mip). - - - Use linear filtering to shrink, point filtering to expand, and linear filtering between mipmap levels. - - - Use linear filtering to shrink, point filtering to expand, and point filtering between mipmap levels. - - - Use point filtering to shrink, linear filtering to expand, and linear filtering between mipmap levels. - - - Use point filtering to shrink, linear filtering to expand, and point filtering between mipmap levels. - - - Use point filtering. - - - Use point filtering to shrink (minify) or expand (magnify), and linear filtering between mipmap levels. - - - Represents a list of 3D vertices to be streamed to the graphics device. - - - Creates an instance of this object. - The graphics device. - The vertex declaration, which describes per-vertex data. - The number of vertices. - Behavior options; it is good practice for this to match the createOptions parameter in the GraphicsDevice constructor. - - - Creates an instance of this object. - The graphics device. - The data type. - The number of vertices. - Behavior options; it is good practice for this to match the createOptions parameter in the GraphicsDevice constructor. - - - Gets the state of the related BufferUsage enumeration. - - - Immediately releases the unmanaged resources used by this object. - [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - Gets a copy of the vertex buffer data, specifying the starting offset, start index, number of elements, and vertex stride. - Offset in bytes from the beginning of the buffer to the data. - Array of data. - Index of the first element to get. - Number of elements to get. - Size, in bytes, of an element in the vertex buffer. - - - Gets a copy of the vertex buffer data. - Array of data. - - - Gets a copy of the vertex buffer data, specifying the start index and number of elements. - Array of data. - Index of the first element to get. - Number of elements to get. - - - Sets vertex buffer data, specifying the offset, start index, number of elements, and the vertex stride. - Offset in bytes from the beginning of the buffer to the data. - Array of data. - Index of the first element to set. - Number of elements to set. - Stride, or size, of a vertex. - - - Sets vertex buffer data. Reference page contains code sample. - Array of data. - - - Sets vertex buffer data, specifying the start index and number of elements. - Array of data. - Index of the first element to set. - Number of elements to set. - - - Gets the number of vertices. - - - Defines per-vertex data in a buffer. - - - Binding structure that specifies a vertex buffer and other per-vertex parameters (such as offset and instancing) for a graphics device. - - - Creates an instance of this object. - The vertex buffer. - - - Creates an instance of this object. - The vertex buffer. - Offset (in vertices) from the beginning of the buffer to the first vertex to use. - - - Creates an instance of this object. - The vertex buffer. - Offset (in vertices) from the beginning of the buffer to the first vertex to use. - Number (or frequency) of instances to draw for each draw call; 1 means draw one instance, 2 means draw 2 instances, etc. Use 0 if you are not instancing. - - - Gets the instancing frequency. - - - Gets a vertex buffer. - - - Gets the offset between the beginning of the buffer and the vertex data to use. - - - A vertex declaration, which defines per-vertex data. - - - Creates an instance of this object. - [ParamArrayAttribute] An array of per-vertex elements. - - - Creates an instance of this object. - The number of bytes per element. - [ParamArrayAttribute] An array of per-vertex elements. - - - Immediately releases the unmanaged resources used by this object. - [MarshalAsAttribute(U1)] true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - Gets the vertex shader declaration. - - - The number of bytes from one vertex to the next. - - - Defines input vertex data to the pipeline. - - - Initializes a new instance of the VertexElement class. - Offset (if any) from the beginning of the stream to the beginning of the vertex data. - One of several predefined types that define the vertex data size. - The intended use of the vertex data. - Modifies the usage data to allow the user to specify multiple usage types. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The Object to compare with the current VertexElement. - - - Gets the hash code for this instance. - - - Retrieves or sets the offset (if any) from the beginning of the stream to the beginning of the vertex data. - - - Compares two objects to determine whether they are the same. - Object to the left of the equality operator. - Object to the right of the equality operator. - - - Compares two objects to determine whether they are different. - Object to the left of the inequality operator. - Object to the right of the inequality operator. - - - Retrieves a string representation of this object. - - - Modifies the usage data to allow the user to specify multiple usage types. - - - Gets or sets the format of this vertex element. - - - Gets or sets a value describing how the vertex element is to be used. - - - Defines vertex element formats. - - - Four-component, unsigned byte. - - - Four-component, packed, unsigned byte, mapped to 0 to 1 range. Input is in Int32 format (ARGB) expanded to (R, G, B, A). - - - Two-component, 16-bit floating point expanded to (value, value, value, value). This type is valid for vertex shader version 2.0 or higher. - - - Four-component, 16-bit floating-point expanded to (value, value, value, value). This type is valid for vertex shader version 2.0 or higher. - - - Normalized, two-component, signed short, expanded to (first short/32767.0, second short/32767.0, 0, 1). This type is valid for vertex shader version 2.0 or higher. - - - Normalized, four-component, signed short, expanded to (first short/32767.0, second short/32767.0, third short/32767.0, fourth short/32767.0). This type is valid for vertex shader version 2.0 or higher. - - - Two-component, signed short expanded to (value, value, 0, 1). - - - Four-component, signed short expanded to (value, value, value, value). - - - Single-component, 32-bit floating-point, expanded to (float, 0, 0, 1). - - - Two-component, 32-bit floating-point, expanded to (float, Float32 value, 0, 1). - - - Three-component, 32-bit floating point, expanded to (float, float, float, 1). - - - Four-component, 32-bit floating point, expanded to (float, float, float, float). - - - Defines usage for vertex elements. - - - Vertex binormal data. - - - Blending indices data. (BlendIndices with UsageIndex = 0) specifies matrix indices for fixed-function vertex processing using indexed paletted skinning. - - - Blending weight data. (BlendWeight with UsageIndex = 0) specifies the blend weights in fixed-function vertex processing. - - - Vertex data contains diffuse or specular color. (Color with UsageIndex = 0) specifies the diffuse color in the fixed-function vertex shader and in pixel shaders prior to ps_3_0. (Color with UsageIndex = 1) specifies the specular color in the fixed-function vertex shader and in pixel shaders prior to ps_3_0. - - - Vertex data contains depth data. - - - Vertex data contains fog data. (Fog with UsageIndex = 0) specifies a fog blend value to use after pixel shading is finished. This flag applies to pixel shaders prior to version ps_3_0. - - - Vertex normal data. (Normal with UsageIndex = 0) specifies vertex normals for fixed-function vertex processing and the N-patch tessellator. (Normal with UsageIndex = 1) specifies vertex normals for fixed-function vertex processing for skinning. - - - Point size data. (PointSize with UsageIndex = 0) specifies the point-size attribute used by the setup engine of the rasterizer to expand a point into a quad for the point-sprite functionality. - - - Position data. (Position with UsageIndex = 0 ) specifies the nontransformed position in fixed-function vertex processing and the N-patch tessellator. (Position with UsageIndex = 1) specifies the nontransformed position in the fixed-function vertex shader for skinning. - - - Vertex data contains sampler data. (Sample with UsageIndex = 0) specifies the displacement value to look up. - - - Vertex tangent data. - - - Single, positive floating-point value. (TessellateFactor with UsageIndex = 0) specifies a tessellation factor used in the tessellation unit to control the rate of tessellation. - - - Texture coordinate data. (TextureCoordinate, n) specifies texture coordinates in fixed-function vertex processing and in pixel shaders prior to ps_3_0. These coordinates can be used to pass user-defined data. - - - Describes a custom vertex format structure that contains position and color information. - - - Initializes a new instance of the VertexPositionColor class. - The position of the vertex. - The color of the vertex. - - - The vertex color. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The Object to compare with the current VertexPositionColor. - - - Gets the hash code for this instance. - - - Gets a vertex declaration. - - - Compares two objects to determine whether they are the same. - Object to the left of the equality operator. - Object to the right of the equality operator. - - - Compares two objects to determine whether they are different. - Object to the left of the inequality operator. - Object to the right of the inequality operator. - - - XYZ position. - - - Retrieves a string representation of this object. - - - Vertex declaration, which defines per-vertex data. - - - Describes a custom vertex format structure that contains position, color, and one set of texture coordinates. - - - Initializes a new instance of the VertexPositionColorTexture class. - Position of the vertex. - Color of the vertex. - Texture coordinate of the vertex. - - - The vertex color. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The Object to compare with the current VertexPositionColorTexture. - - - Gets the hash code for this instance. - - - Gets a vertex declaration. - - - Compares two objects to determine whether they are the same. - Object to the left of the equality operator. - Object to the right of the equality operator. - - - Compares two objects to determine whether they are different. - Object to the left of the inequality operator. - Object to the right of the inequality operator. - - - XYZ position. - - - UV texture coordinates. - - - Retrieves a string representation of this object. - - - Vertex declaration, which defines per-vertex data. - - - Describes a custom vertex format structure that contains position, normal data, and one set of texture coordinates. - - - Initializes a new instance of the VertexPositionNormalTexture class. - Position of the vertex. - The vertex normal. - The texture coordinate. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The Object to compare with the current VertexPositionNormalTexture. - - - Gets the hash code for this instance. - - - Gets a vertex declaration. - - - XYZ surface normal. - - - Compares two objects to determine whether they are the same. - Object to the left of the equality operator. - Object to the right of the equality operator. - - - Compares two objects to determine whether they are different. - Object to the left of the inequality operator. - Object to the right of the inequality operator. - - - XYZ position. - - - UV texture coordinates. - - - Retrieves a string representation of this object. - - - Vertex declaration, which defines per-vertex data. - - - Describes a custom vertex format structure that contains position and one set of texture coordinates. - - - Initializes a new instance of the VertexPositionTexture class. - Position of the vertex. - Texture coordinate of the vertex. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The Object to compare with the current VertexPositionTexture. - - - Gets the hash code for this instance. - - - Gets a vertex declaration. - - - Compares two objects to determine whether they are the same. - Object to the left of the equality operator. - Object to the right of the equality operator. - - - Compares two objects to determine whether they are different. - Object to the left of the inequality operator. - Object to the right of the inequality operator. - - - XYZ position. - - - UV texture coordinates. - - - Retrieves a string representation of this object. - - - Vertex declaration, which defines per-vertex data. - - - Defines the window dimensions of a render-target surface onto which a 3D volume projects. - - - Creates an instance of this object. - A bounding box that defines the location and size of the viewport in a render target. - - - Creates an instance of this object. - The x coordinate of the upper-left corner of the viewport in pixels. - The y coordinate of the upper-left corner of the viewport in pixels. - The width of the viewport in pixels. - The height of the viewport in pixels. - - - Gets the aspect ratio used by the viewport - - - Gets the size of this resource. - - - Gets or sets the height dimension of the viewport on the render-target surface, in pixels. - - - Gets or sets the maximum depth of the clip volume. - - - Gets or sets the minimum depth of the clip volume. - - - Projects a 3D vector from object space into screen space. - The vector to project. - The projection matrix. - The view matrix. - The world matrix. - - - Returns the title safe area of the current viewport. - - - Retrieves a string representation of this object. - - - Converts a screen space point into a corresponding point in world space. - The vector to project. - The projection matrix. - The view matrix. - The world matrix. - - - Gets or sets the width dimension of the viewport on the render-target surface, in pixels. - - - Gets or sets the pixel coordinate of the upper-left corner of the viewport on the render-target surface. - - - Gets or sets the pixel coordinate of the upper-left corner of the viewport on the render-target surface. - - - \ No newline at end of file diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Input.Touch.dll b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Input.Touch.dll deleted file mode 100644 index 1e1eefe5a5b86738796a3d19aacfac409989fd3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23040 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 S{Wn<_^H=W1KmYAK@P7f;|4c~$ diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Input.Touch.xml b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Input.Touch.xml deleted file mode 100644 index 0dd206a0..00000000 --- a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.Input.Touch.xml +++ /dev/null @@ -1,252 +0,0 @@ - - - - - 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/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.dll b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/Microsoft.Xna.Framework.dll deleted file mode 100644 index a0caf6af2625219ba3f5d46931203b479ebc83be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 679424 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 z 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℞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 - - - -

Defines an axis-aligned box-shaped 3D volume. - - - Creates an instance of BoundingBox. - The minimum point the BoundingBox includes. - The maximum point the BoundingBox includes. - - - Tests whether the BoundingBox contains another BoundingBox. - The BoundingBox to test for overlap. - - - Tests whether the BoundingBox contains a BoundingBox. - The BoundingBox to test for overlap. - [OutAttribute] Enumeration indicating the extent of overlap. - - - Tests whether the BoundingBox contains a BoundingFrustum. - The BoundingFrustum to test for overlap. - - - Tests whether the BoundingBox contains a BoundingSphere. - The BoundingSphere to test for overlap. - - - Tests whether the BoundingBox contains a BoundingSphere. - The BoundingSphere to test for overlap. - [OutAttribute] Enumeration indicating the extent of overlap. - - - Tests whether the BoundingBox contains a point. - The point to test for overlap. - - - Tests whether the BoundingBox contains a point. - The point to test for overlap. - [OutAttribute] Enumeration indicating the extent of overlap. - - - Specifies the total number of corners (8) in the BoundingBox. - - - Creates the smallest BoundingBox that will contain a group of points. - A list of points the BoundingBox should contain. - - - Creates the smallest BoundingBox that will contain the specified BoundingSphere. - The BoundingSphere to contain. - - - Creates the smallest BoundingBox that will contain the specified BoundingSphere. - The BoundingSphere to contain. - [OutAttribute] The created BoundingBox. - - - Creates the smallest BoundingBox that contains the two specified BoundingBox instances. - One of the BoundingBoxs to contain. - One of the BoundingBoxs to contain. - - - Creates the smallest BoundingBox that contains the two specified BoundingBox instances. - One of the BoundingBox instances to contain. - One of the BoundingBox instances to contain. - [OutAttribute] The created BoundingBox. - - - Determines whether two instances of BoundingBox are equal. - The BoundingBox to compare with the current BoundingBox. - - - Determines whether two instances of BoundingBox are equal. - The Object to compare with the current BoundingBox. - - - Gets an array of points that make up the corners of the BoundingBox. - - - Gets the array of points that make up the corners of the BoundingBox. - An existing array of at least 8 Vector3 points where the corners of the BoundingBox are written. - - - Gets the hash code for this instance. - - - Checks whether the current BoundingBox intersects another BoundingBox. - The BoundingBox to check for intersection with. - - - Checks whether the current BoundingBox intersects another BoundingBox. - The BoundingBox to check for intersection with. - [OutAttribute] true if the BoundingBox instances intersect; false otherwise. - - - Checks whether the current BoundingBox intersects a BoundingFrustum. - The BoundingFrustum to check for intersection with. - - - Checks whether the current BoundingBox intersects a BoundingSphere. - The BoundingSphere to check for intersection with. - - - Checks whether the current BoundingBox intersects a BoundingSphere. - The BoundingSphere to check for intersection with. - [OutAttribute] true if the BoundingBox and BoundingSphere intersect; false otherwise. - - - Checks whether the current BoundingBox intersects a Plane. - The Plane to check for intersection with. - - - Checks whether the current BoundingBox intersects a Plane. - The Plane to check for intersection with. - [OutAttribute] An enumeration indicating whether the BoundingBox intersects the Plane. - - - Checks whether the current BoundingBox intersects a Ray. - The Ray to check for intersection with. - - - Checks whether the current BoundingBox intersects a Ray. - The Ray to check for intersection with. - [OutAttribute] Distance at which the ray intersects the BoundingBox, or null if there is no intersection. - - - The maximum point the BoundingBox contains. - - - The minimum point the BoundingBox contains. - - - Determines whether two instances of BoundingBox are equal. - BoundingBox to compare. - BoundingBox to compare. - - - Determines whether two instances of BoundingBox are not equal. - The object to the left of the inequality operator. - The object to the right of the inequality operator. - - - Returns a String that represents the current BoundingBox. - - - Defines a frustum and helps determine whether forms intersect with it. - - - Creates a new instance of BoundingFrustum. - Combined matrix that usually takes view × projection matrix. - - - Gets the bottom plane of the BoundingFrustum. - - - Checks whether the current BoundingFrustum contains the specified BoundingBox. - The BoundingBox to check against the current BoundingFrustum. - - - Checks whether the current BoundingFrustum contains the specified BoundingBox. - The BoundingBox to test for overlap. - [OutAttribute] Enumeration indicating the extent of overlap. - - - Checks whether the current BoundingFrustum contains the specified BoundingFrustum. - The BoundingFrustum to check against the current BoundingFrustum. - - - Checks whether the current BoundingFrustum contains the specified BoundingSphere. - The BoundingSphere to check against the current BoundingFrustum. - - - Checks whether the current BoundingFrustum contains the specified BoundingSphere. - The BoundingSphere to test for overlap. - [OutAttribute] Enumeration indicating the extent of overlap. - - - Checks whether the current BoundingFrustum contains the specified point. - The point to check against the current BoundingFrustum. - - - Checks whether the current BoundingFrustum contains the specified point. - The point to test for overlap. - [OutAttribute] Enumeration indicating the extent of overlap. - - - Specifies the total number of corners (8) in the BoundingFrustum. - - - Determines whether the specified BoundingFrustum is equal to the current BoundingFrustum. - The BoundingFrustum to compare with the current BoundingFrustum. - - - Determines whether the specified Object is equal to the BoundingFrustum. - The Object to compare with the current BoundingFrustum. - - - Gets the far plane of the BoundingFrustum. - - - Gets an array of points that make up the corners of the BoundingFrustum. - - - Gets an array of points that make up the corners of the BoundingFrustum. - An existing array of at least 8 Vector3 points where the corners of the BoundingFrustum are written. - - - Gets the hash code for this instance. - - - Checks whether the current BoundingFrustum intersects the specified BoundingBox. - The BoundingBox to check for intersection. - - - Checks whether the current BoundingFrustum intersects a BoundingBox. - The BoundingBox to check for intersection with. - [OutAttribute] true if the BoundingFrustum and BoundingBox intersect; false otherwise. - - - Checks whether the current BoundingFrustum intersects the specified BoundingFrustum. - The BoundingFrustum to check for intersection. - - - Checks whether the current BoundingFrustum intersects the specified BoundingSphere. - The BoundingSphere to check for intersection. - - - Checks whether the current BoundingFrustum intersects a BoundingSphere. - The BoundingSphere to check for intersection with. - [OutAttribute] true if the BoundingFrustum and BoundingSphere intersect; false otherwise. - - - Checks whether the current BoundingFrustum intersects the specified Plane. - The Plane to check for intersection. - - - Checks whether the current BoundingFrustum intersects a Plane. - The Plane to check for intersection with. - [OutAttribute] An enumeration indicating whether the BoundingFrustum intersects the Plane. - - - Checks whether the current BoundingFrustum intersects the specified Ray. - The Ray to check for intersection. - - - Checks whether the current BoundingFrustum intersects a Ray. - The Ray to check for intersection with. - [OutAttribute] Distance at which the ray intersects the BoundingFrustum or null if there is no intersection. - - - Gets the left plane of the BoundingFrustum. - - - Gets or sets the Matrix that describes this bounding frustum. - - - Gets the near plane of the BoundingFrustum. - - - Determines whether two instances of BoundingFrustum are equal. - The BoundingFrustum to the left of the equality operator. - The BoundingFrustum to the right of the equality operator. - - - Determines whether two instances of BoundingFrustum are not equal. - The BoundingFrustum to the left of the inequality operator. - The BoundingFrustum to the right of the inequality operator. - - - Gets the right plane of the BoundingFrustum. - - - Gets the top plane of the BoundingFrustum. - - - Returns a String that represents the current BoundingFrustum. - - - Defines a sphere. - - - Creates a new instance of BoundingSphere. - Center point of the sphere. - Radius of the sphere. - - - The center point of the sphere. - - - Checks whether the current BoundingSphere contains the specified BoundingBox. - The BoundingBox to check against the current BoundingSphere. - - - Checks whether the current BoundingSphere contains the specified BoundingBox. - The BoundingBox to test for overlap. - [OutAttribute] Enumeration indicating the extent of overlap. - - - Checks whether the current BoundingSphere contains the specified BoundingFrustum. - The BoundingFrustum to check against the current BoundingSphere. - - - Checks whether the current BoundingSphere contains the specified BoundingSphere. - The BoundingSphere to check against the current BoundingSphere. - - - Checks whether the current BoundingSphere contains the specified BoundingSphere. - The BoundingSphere to test for overlap. - [OutAttribute] Enumeration indicating the extent of overlap. - - - Checks whether the current BoundingSphere contains the specified point. - The point to check against the current BoundingSphere. - - - Checks whether the current BoundingSphere contains the specified point. - The point to test for overlap. - [OutAttribute] Enumeration indicating the extent of overlap. - - - Creates the smallest BoundingSphere that can contain a specified BoundingBox. - The BoundingBox to create the BoundingSphere from. - - - Creates the smallest BoundingSphere that can contain a specified BoundingBox. - The BoundingBox to create the BoundingSphere from. - [OutAttribute] The created BoundingSphere. - - - Creates the smallest BoundingSphere that can contain a specified BoundingFrustum. - The BoundingFrustum to create the BoundingSphere with. - - - Creates a BoundingSphere that can contain a specified list of points. - List of points the BoundingSphere must contain. - - - Creates a BoundingSphere that contains the two specified BoundingSphere instances. - BoundingSphere to be merged. - BoundingSphere to be merged. - - - Creates a BoundingSphere that contains the two specified BoundingSphere instances. - BoundingSphere to be merged. - BoundingSphere to be merged. - [OutAttribute] The created BoundingSphere. - - - Determines whether the specified BoundingSphere is equal to the current BoundingSphere. - The BoundingSphere to compare with the current BoundingSphere. - - - Determines whether the specified Object is equal to the BoundingSphere. - The Object to compare with the current BoundingSphere. - - - Gets the hash code for this instance. - - - Checks whether the current BoundingSphere intersects with a specified BoundingBox. - The BoundingBox to check for intersection with the current BoundingSphere. - - - Checks whether the current BoundingSphere intersects a BoundingBox. - The BoundingBox to check for intersection with. - [OutAttribute] true if the BoundingSphere and BoundingBox intersect; false otherwise. - - - Checks whether the current BoundingSphere intersects with a specified BoundingFrustum. - The BoundingFrustum to check for intersection with the current BoundingSphere. - - - Checks whether the current BoundingSphere intersects with a specified BoundingSphere. - The BoundingSphere to check for intersection with the current BoundingSphere. - - - Checks whether the current BoundingSphere intersects another BoundingSphere. - The BoundingSphere to check for intersection with. - [OutAttribute] true if the BoundingSphere instances intersect; false otherwise. - - - Checks whether the current BoundingSphere intersects with a specified Plane. - The Plane to check for intersection with the current BoundingSphere. - - - Checks whether the current BoundingSphere intersects a Plane. - The Plane to check for intersection with. - [OutAttribute] An enumeration indicating whether the BoundingSphere intersects the Plane. - - - Checks whether the current BoundingSphere intersects with a specified Ray. - The Ray to check for intersection with the current BoundingSphere. - - - Checks whether the current BoundingSphere intersects a Ray. - The Ray to check for intersection with. - [OutAttribute] Distance at which the ray intersects the BoundingSphere or null if there is no intersection. - - - Determines whether two instances of BoundingSphere are equal. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Determines whether two instances of BoundingSphere are not equal. - The BoundingSphere to the left of the inequality operator. - The BoundingSphere to the right of the inequality operator. - - - The radius of the sphere. - - - Returns a String that represents the current BoundingSphere. - - - Translates and scales the BoundingSphere using a given Matrix. - A transformation matrix that might include translation, rotation, or uniform scaling. Note that BoundingSphere.Transform will not return correct results if there are non-uniform scaling, shears, or other unusual transforms in this transformation matrix. This is because there is no way to shear or non-uniformly scale a sphere. Such an operation would cause the sphere to lose its shape as a sphere. - - - Translates and scales the BoundingSphere using a given Matrix. - A transformation matrix that might include translation, rotation, or uniform scaling. Note that BoundingSphere.Transform will not return correct results if there are non-uniform scaling, shears, or other unusual transforms in this transformation matrix. This is because there is no way to shear or non-uniformly scale a sphere. Such an operation would cause the sphere to lose its shape as a sphere. - [OutAttribute] The transformed BoundingSphere. - - - Represents a four-component color using red, green, blue, and alpha data. - - - Creates a new instance of the class. - A three-component color. - - - Creates a new instance of the class. - A four-component color. - - - Creates a new instance of the class. - Red component. - Green component. - Blue component. - - - Creates a new instance of the class. - Red component. - Green component. - Blue component. - Alpha component. - - - Creates a new instance of the class. - Red component. - Green component. - Blue component. - - - Creates a new instance of the class. - Red component. - Green component. - Blue component. - Alpha component. - - - Gets or sets the alpha component value. - - - Gets a system-defined color with the value R:240 G:248 B:255 A:255. - - - Gets a system-defined color with the value R:250 G:235 B:215 A:255. - - - Gets a system-defined color with the value R:0 G:255 B:255 A:255. - - - Gets a system-defined color with the value R:127 G:255 B:212 A:255. - - - Gets a system-defined color with the value R:240 G:255 B:255 A:255. - - - Gets or sets the blue component value of this Color. - - - Gets a system-defined color with the value R:245 G:245 B:220 A:255. - - - Gets a system-defined color with the value R:255 G:228 B:196 A:255. - - - Gets a system-defined color with the value R:0 G:0 B:0 A:255. - - - Gets a system-defined color with the value R:255 G:235 B:205 A:255. - - - Gets a system-defined color with the value R:0 G:0 B:255 A:255. - - - Gets a system-defined color with the value R:138 G:43 B:226 A:255. - - - Gets a system-defined color with the value R:165 G:42 B:42 A:255. - - - Gets a system-defined color with the value R:222 G:184 B:135 A:255. - - - Gets a system-defined color with the value R:95 G:158 B:160 A:255. - - - Gets a system-defined color with the value R:127 G:255 B:0 A:255. - - - Gets a system-defined color with the value R:210 G:105 B:30 A:255. - - - Gets a system-defined color with the value R:255 G:127 B:80 A:255. - - - Gets a system-defined color with the value R:100 G:149 B:237 A:255. - - - Gets a system-defined color with the value R:255 G:248 B:220 A:255. - - - Gets a system-defined color with the value R:220 G:20 B:60 A:255. - - - Gets a system-defined color with the value R:0 G:255 B:255 A:255. - - - Gets a system-defined color with the value R:0 G:0 B:139 A:255. - - - Gets a system-defined color with the value R:0 G:139 B:139 A:255. - - - Gets a system-defined color with the value R:184 G:134 B:11 A:255. - - - Gets a system-defined color with the value R:169 G:169 B:169 A:255. - - - Gets a system-defined color with the value R:0 G:100 B:0 A:255. - - - Gets a system-defined color with the value R:189 G:183 B:107 A:255. - - - Gets a system-defined color with the value R:139 G:0 B:139 A:255. - - - Gets a system-defined color with the value R:85 G:107 B:47 A:255. - - - Gets a system-defined color with the value R:255 G:140 B:0 A:255. - - - Gets a system-defined color with the value R:153 G:50 B:204 A:255. - - - Gets a system-defined color with the value R:139 G:0 B:0 A:255. - - - Gets a system-defined color with the value R:233 G:150 B:122 A:255. - - - Gets a system-defined color with the value R:143 G:188 B:139 A:255. - - - Gets a system-defined color with the value R:72 G:61 B:139 A:255. - - - Gets a system-defined color with the value R:47 G:79 B:79 A:255. - - - Gets a system-defined color with the value R:0 G:206 B:209 A:255. - - - Gets a system-defined color with the value R:148 G:0 B:211 A:255. - - - Gets a system-defined color with the value R:255 G:20 B:147 A:255. - - - Gets a system-defined color with the value R:0 G:191 B:255 A:255. - - - Gets a system-defined color with the value R:105 G:105 B:105 A:255. - - - Gets a system-defined color with the value R:30 G:144 B:255 A:255. - - - Test a color to see if it is equal to the color in this instance. - A four-component color. - - - Test an instance of a color object to see if it is equal to this object. - A color object. - - - Gets a system-defined color with the value R:178 G:34 B:34 A:255. - - - Gets a system-defined color with the value R:255 G:250 B:240 A:255. - - - Gets a system-defined color with the value R:34 G:139 B:34 A:255. - - - Convert a non premultipled color into color data that contains alpha. - A four-component color. - - - Converts a non-premultipled alpha color to a color that contains premultiplied alpha. - Red component. - Green component. - Blue component. - Alpha component. - - - Gets a system-defined color with the value R:255 G:0 B:255 A:255. - - - Gets or sets the green component value of this Color. - - - Gets a system-defined color with the value R:220 G:220 B:220 A:255. - - - Serves as a hash function for a particular type. - - - Gets a system-defined color with the value R:248 G:248 B:255 A:255. - - - Gets a system-defined color with the value R:255 G:215 B:0 A:255. - - - Gets a system-defined color with the value R:218 G:165 B:32 A:255. - - - Gets a system-defined color with the value R:128 G:128 B:128 A:255. - - - Gets a system-defined color with the value R:0 G:128 B:0 A:255. - - - Gets a system-defined color with the value R:173 G:255 B:47 A:255. - - - Gets a system-defined color with the value R:240 G:255 B:240 A:255. - - - Gets a system-defined color with the value R:255 G:105 B:180 A:255. - - - Gets a system-defined color with the value R:205 G:92 B:92 A:255. - - - Gets a system-defined color with the value R:75 G:0 B:130 A:255. - - - Gets a system-defined color with the value R:255 G:255 B:240 A:255. - - - Gets a system-defined color with the value R:240 G:230 B:140 A:255. - - - Gets a system-defined color with the value R:230 G:230 B:250 A:255. - - - Gets a system-defined color with the value R:255 G:240 B:245 A:255. - - - Gets a system-defined color with the value R:124 G:252 B:0 A:255. - - - Gets a system-defined color with the value R:255 G:250 B:205 A:255. - - - Linearly interpolate a color. - A four-component color. - A four-component color. - Interpolation factor. - - - Gets a system-defined color with the value R:173 G:216 B:230 A:255. - - - Gets a system-defined color with the value R:240 G:128 B:128 A:255. - - - Gets a system-defined color with the value R:224 G:255 B:255 A:255. - - - Gets a system-defined color with the value R:250 G:250 B:210 A:255. - - - Gets a system-defined color with the value R:211 G:211 B:211 A:255. - - - Gets a system-defined color with the value R:144 G:238 B:144 A:255. - - - Gets a system-defined color with the value R:255 G:182 B:193 A:255. - - - Gets a system-defined color with the value R:255 G:160 B:122 A:255. - - - Gets a system-defined color with the value R:32 G:178 B:170 A:255. - - - Gets a system-defined color with the value R:135 G:206 B:250 A:255. - - - Gets a system-defined color with the value R:119 G:136 B:153 A:255. - - - Gets a system-defined color with the value R:176 G:196 B:222 A:255. - - - Gets a system-defined color with the value R:255 G:255 B:224 A:255. - - - Gets a system-defined color with the value R:0 G:255 B:0 A:255. - - - Gets a system-defined color with the value R:50 G:205 B:50 A:255. - - - Gets a system-defined color with the value R:250 G:240 B:230 A:255. - - - Gets a system-defined color with the value R:255 G:0 B:255 A:255. - - - Gets a system-defined color with the value R:128 G:0 B:0 A:255. - - - Gets a system-defined color with the value R:102 G:205 B:170 A:255. - - - Gets a system-defined color with the value R:0 G:0 B:205 A:255. - - - Gets a system-defined color with the value R:186 G:85 B:211 A:255. - - - Gets a system-defined color with the value R:147 G:112 B:219 A:255. - - - Gets a system-defined color with the value R:60 G:179 B:113 A:255. - - - Gets a system-defined color with the value R:123 G:104 B:238 A:255. - - - Gets a system-defined color with the value R:0 G:250 B:154 A:255. - - - Gets a system-defined color with the value R:72 G:209 B:204 A:255. - - - Gets a system-defined color with the value R:199 G:21 B:133 A:255. - - - Pack a four-component color from a vector format into the format of a color object. - A four-component color. - - - Gets a system-defined color with the value R:25 G:25 B:112 A:255. - - - Gets a system-defined color with the value R:245 G:255 B:250 A:255. - - - Gets a system-defined color with the value R:255 G:228 B:225 A:255. - - - Gets a system-defined color with the value R:255 G:228 B:181 A:255. - - - Multiply each color component by the scale factor. - The source, four-component color. - The scale factor. - - - Gets a system-defined color with the value R:255 G:222 B:173 A:255. - - - Gets a system-defined color R:0 G:0 B:128 A:255. - - - Gets a system-defined color with the value R:253 G:245 B:230 A:255. - - - Gets a system-defined color with the value R:128 G:128 B:0 A:255. - - - Gets a system-defined color with the value R:107 G:142 B:35 A:255. - - - Equality operator. - A four-component color. - A four-component color. - - - Equality operator for Testing two color objects to see if they are equal. - A four-component color. - A four-component color. - - - Multiply operator. - A four-component color - Scale factor. - - - Gets a system-defined color with the value R:255 G:165 B:0 A:255. - - - Gets a system-defined color with the value R:255 G:69 B:0 A:255. - - - Gets a system-defined color with the value R:218 G:112 B:214 A:255. - - - Gets the current color as a packed value. - - - Gets a system-defined color with the value R:238 G:232 B:170 A:255. - - - Gets a system-defined color with the value R:152 G:251 B:152 A:255. - - - Gets a system-defined color with the value R:175 G:238 B:238 A:255. - - - Gets a system-defined color with the value R:219 G:112 B:147 A:255. - - - Gets a system-defined color with the value R:255 G:239 B:213 A:255. - - - Gets a system-defined color with the value R:255 G:218 B:185 A:255. - - - Gets a system-defined color with the value R:205 G:133 B:63 A:255. - - - Gets a system-defined color with the value R:255 G:192 B:203 A:255. - - - Gets a system-defined color with the value R:221 G:160 B:221 A:255. - - - Gets a system-defined color with the value R:176 G:224 B:230 A:255. - - - Gets a system-defined color with the value R:128 G:0 B:128 A:255. - - - Gets or sets the red component value of this Color. - - - Gets a system-defined color with the value R:255 G:0 B:0 A:255. - - - Gets a system-defined color with the value R:188 G:143 B:143 A:255. - - - Gets a system-defined color with the value R:65 G:105 B:225 A:255. - - - Gets a system-defined color with the value R:139 G:69 B:19 A:255. - - - Gets a system-defined color with the value R:250 G:128 B:114 A:255. - - - Gets a system-defined color with the value R:244 G:164 B:96 A:255. - - - Gets a system-defined color with the value R:46 G:139 B:87 A:255. - - - Gets a system-defined color with the value R:255 G:245 B:238 A:255. - - - Gets a system-defined color with the value R:160 G:82 B:45 A:255. - - - Gets a system-defined color with the value R:192 G:192 B:192 A:255. - - - Gets a system-defined color with the value R:135 G:206 B:235 A:255. - - - Gets a system-defined color with the value R:106 G:90 B:205 A:255. - - - Gets a system-defined color with the value R:112 G:128 B:144 A:255. - - - Gets a system-defined color with the value R:255 G:250 B:250 A:255. - - - Gets a system-defined color with the value R:0 G:255 B:127 A:255. - - - Gets a system-defined color with the value R:70 G:130 B:180 A:255. - - - Gets a system-defined color with the value R:210 G:180 B:140 A:255. - - - Gets a system-defined color with the value R:0 G:128 B:128 A:255. - - - Gets a system-defined color with the value R:216 G:191 B:216 A:255. - - - Gets a system-defined color with the value R:255 G:99 B:71 A:255. - - - Gets a string representation of this object. - - - Gets a three-component vector representation for this object. - - - Gets a four-component vector representation for this object. - - - Gets a system-defined color with the value R:0 G:0 B:0 A:0. - - - Gets a system-defined color with the value R:64 G:224 B:208 A:255. - - - Gets a system-defined color with the value R:238 G:130 B:238 A:255. - - - Gets a system-defined color with the value R:245 G:222 B:179 A:255. - - - Gets a system-defined color with the value R:255 G:255 B:255 A:255. - - - Gets a system-defined color with the value R:245 G:245 B:245 A:255. - - - Gets a system-defined color with the value R:255 G:255 B:0 A:255. - - - Gets a system-defined color with the value R:154 G:205 B:50 A:255. - - - Indicates the extent to which bounding volumes intersect or contain one another. - - - Indicates that one bounding volume completely contains the other. - - - Indicates there is no overlap between the bounding volumes. - - - Indicates that the bounding volumes partially overlap. - - - Stores an arbitrary collection of 2D CurveKey points, and provides methods for evaluating features of the curve they define. - - - Initializes a new instance of Curve. - - - Creates a copy of the Curve. - - - Computes both the TangentIn and the TangentOut for a CurveKey specified by its index. - The index of the CurveKey for which to compute tangents (in the Keys collection of the Curve). - The type of tangents to compute (one of the types specified in the CurveTangent enumeration). - - - Computes a specified type of TangentIn and a specified type of TangentOut for a given CurveKey. - The index of the CurveKey for which to compute tangents (in the Keys collection of the Curve). - The type of TangentIn to compute (one of the types specified in the CurveTangent enumeration). - The type of TangentOut to compute (one of the types specified in the CurveTangent enumeration). - - - Computes all tangents for all CurveKeys in this Curve, using a specified tangent type for both TangentIn and TangentOut. - The type of TangentOut and TangentIn to compute (one of the types specified in the CurveTangent enumeration). - - - Computes all tangents for all CurveKeys in this Curve, using different tangent types for TangentOut and TangentIn. - The type of TangentIn to compute (one of the types specified in the CurveTangent enumeration). - The type of TangentOut to compute (one of the types specified in the CurveTangent enumeration). - - - Finds the value at a position on the Curve. - The position on the Curve. - - - Gets a value indicating whether the curve is constant. - - - The points that make up the curve. - - - Specifies how to handle weighting values that are greater than the last control point in the curve. - - - Specifies how to handle weighting values that are less than the first control point in the curve. - - - Defines the continuity of CurveKeys on a Curve. - - - Interpolation can be used between this CurveKey and the next. - - - Interpolation cannot be used between this CurveKey and the next. Specifying a position between the two points returns this point. - - - Represents a point in a multi-point curve. - - - Initializes a new instance of CurveKey. - Position in the curve. - Value of the control point. - - - Initializes a new instance of CurveKey. - Position in the curve. - Value of the control point. - Tangent approaching point from the previous point in the curve. - Tangent leaving point toward next point in the curve. - - - Initializes a new instance of CurveKey. - Position in the curve. - Value of the control point. - Tangent approaching point from the previous point in the curve. - Tangent leaving point toward next point in the curve. - Enum indicating whether the curve is discrete or continuous. - - - Creates a copy of the CurveKey. - - - Compares this instance to another CurveKey and returns an indication of their relative values. - CurveKey to compare to. - - - Describes whether the segment between this point and the next point in the curve is discrete or continuous. - - - Determines whether the specified Object is equal to the CurveKey. - The Object to compare with the current CurveKey. - - - Returns a value that indicates whether the current instance is equal to a specified object. - Object with which to make the comparison. - - - Returns the hash code for this instance. - - - Determines whether two CurveKey instances are equal. - CurveKey on the left of the equal sign. - CurveKey on the right of the equal sign. - - - Determines whether two CurveKey instances are not equal. - CurveKey on the left of the equal sign. - CurveKey on the right of the equal sign. - - - Position of the CurveKey in the curve. - - - Describes the tangent when approaching this point from the previous point in the curve. - - - Describes the tangent when leaving this point to the next point in the curve. - - - Describes the value of this point. - - - Contains the CurveKeys making up a Curve. - - - Initializes a new instance of CurveKeyCollection. - - - Adds a CurveKey to the CurveKeyCollection. - The CurveKey to add. - - - Removes all CurveKeys from the CurveKeyCollection. - - - Creates a copy of the CurveKeyCollection. - - - Determines whether the CurveKeyCollection contains a specific CurveKey. - true if the CurveKey is found in the CurveKeyCollection; false otherwise. - - - Copies the CurveKeys of the CurveKeyCollection to an array, starting at the array index provided. - The destination of the CurveKeys copied from CurveKeyCollection. The array must have zero-based indexing. - The zero-based index in the array to start copying from. - - - Gets the number of elements contained in the CurveKeyCollection. - - - Returns an enumerator that iterates through the CurveKeyCollection. - - - Determines the index of a CurveKey in the CurveKeyCollection. - CurveKey to locate in the CurveKeyCollection. - - - Returns a value indicating whether the CurveKeyCollection is read-only. - - - Gets or sets the element at the specified index. - The array index of the element. - - - Removes the first occurrence of a specific CurveKey from the CurveKeyCollection. - The CurveKey to remove from the CurveKeyCollection. - - - Removes the CurveKey at the specified index. - The zero-based index of the item to remove. - - - Returns an enumerator that iterates through the CurveKeyCollection. - - - Defines how the value of a Curve will be determined for positions before the first point on the Curve or after the last point on the Curve. - - - The Curve will evaluate to its first key for positions before the first point in the Curve and to the last key for positions after the last point. - - - Positions specified past the ends of the curve will wrap around to the opposite side of the Curve. - - - Positions specified past the ends of the curve will wrap around to the opposite side of the Curve. The value will be offset by the difference between the values of the first and last CurveKey multiplied by the number of times the position wraps around. If the position is before the first point in the Curve, the difference will be subtracted from its value; otherwise, the difference will be added. - - - Linear interpolation will be performed to determine the value. - - - Positions specified past the ends of the Curve act as an offset from the same side of the Curve toward the opposite side. - - - Specifies different tangent types to be calculated for CurveKey points in a Curve. - - - A Flat tangent always has a value equal to zero. - - - A Linear tangent at a CurveKey is equal to the difference between its Value and the Value of the preceding or succeeding CurveKey. For example, in Curve MyCurve, where i is greater than zero and (i + 1) is less than the total number of CurveKeys in MyCurve, the linear TangentIn of MyCurve.Keys[i] is equal to: ( MyCurve.Keys[i].Value - MyCurve.Keys[i - 1].Value ) Similarly, the linear TangentOut is equal to: ( MyCurve.Keys[i + 1].Value - MyCurve.Keys[i].Value.) - - - A Smooth tangent smooths the inflection between a TangentIn and TangentOut by taking into account the values of both neighbors of the CurveKey. The smooth TangentIn of MyCurve.Keys[i] is equal to: ( ( MyCurve.Keys[i + 1].Value - MyCurve.Keys[i - 1].Value ) * ( ( MyCurve.Keys[i].Position - MyCurve.Keys[i - 1].Position ) / ( MyCurve.Keys[i + 1].Position - MyCurve.Keys[i-1].Position ) ) ) Similarly, the smooth TangentOut is equal to: ( ( MyCurve.Keys[i + 1].Value - MyCurve.Keys[i - 1].Value ) * ( ( MyCurve.Keys[i + 1].Position - MyCurve.Keys[i].Position ) / ( MyCurve.Keys[i + 1].Position - MyCurve.Keys[i - 1].Position ) ) ) - - - Defines the display orientation. - - - The default display orientation. - - - The display is rotated counterclockwise 90 degrees into a landscape orientation, where the width is greater than the height. - - - The display is rotated clockwise 90 degrees into a landscape orientation, where the width is greater than the height. - - - The orientation is a portrait, where the height is greater than the width. - - - Processes XNA Framework event messages. - - - Updates the status of various framework components (such as power state and media), and raises related events. - - - Contains commonly used precalculated values. - - - Returns the Cartesian coordinate for one axis of a point that is defined by a given triangle and two normalized barycentric (areal) coordinates. - The coordinate on one axis of vertex 1 of the defining triangle. - The coordinate on the same axis of vertex 2 of the defining triangle. - The coordinate on the same axis of vertex 3 of the defining triangle. - The normalized barycentric (areal) coordinate b2, equal to the weighting factor for vertex 2, the coordinate of which is specified in value2. - The normalized barycentric (areal) coordinate b3, equal to the weighting factor for vertex 3, the coordinate of which is specified in value3. - - - Performs a Catmull-Rom interpolation using the specified positions. - The first position in the interpolation. - The second position in the interpolation. - The third position in the interpolation. - The fourth position in the interpolation. - Weighting factor. - - - Restricts a value to be within a specified range. Reference page contains links to related code samples. - The value to clamp. - The minimum value. If value is less than min, min will be returned. - The maximum value. If value is greater than max, max will be returned. - - - Calculates the absolute value of the difference of two values. - Source value. - Source value. - - - Represents the mathematical constant e. - - - Performs a Hermite spline interpolation. - Source position. - Source tangent. - Source position. - Source tangent. - Weighting factor. - - - Linearly interpolates between two values. - Source value. - Source value. - Value between 0 and 1 indicating the weight of value2. - - - Represents the log base ten of e. - - - Represents the log base two of e. - - - Returns the greater of two values. - Source value. - Source value. - - - Returns the lesser of two values. - Source value. - Source value. - - - Represents the value of pi. - - - Represents the value of pi divided by two. - - - Represents the value of pi divided by four. - - - Interpolates between two values using a cubic equation. - Source value. - Source value. - Weighting value. - - - Converts radians to degrees. - The angle in radians. - - - Converts degrees to radians. - The angle in degrees. - - - Represents the value of pi times two. - - - Reduces a given angle to a value between π and -π. - The angle to reduce, in radians. - - - Defines a matrix. - - - Initializes a new instance of Matrix. - Value to initialize m11 to. - Value to initialize m12 to. - Value to initialize m13 to. - Value to initialize m14 to. - Value to initialize m21 to. - Value to initialize m22 to. - Value to initialize m23 to. - Value to initialize m24 to. - Value to initialize m31 to. - Value to initialize m32 to. - Value to initialize m33 to. - Value to initialize m34 to. - Value to initialize m41 to. - Value to initialize m42 to. - Value to initialize m43 to. - Value to initialize m44 to. - - - Adds a matrix to another matrix. - Source matrix. - Source matrix. - - - Adds a matrix to another matrix. - Source matrix. - Source matrix. - [OutAttribute] Resulting matrix. - - - Gets and sets the backward vector of the Matrix. - - - Creates a spherical billboard that rotates around a specified object position. - Position of the object the billboard will rotate around. - Position of the camera. - The up vector of the camera. - Optional forward vector of the camera. - - - Creates a spherical billboard that rotates around a specified object position. - Position of the object the billboard will rotate around. - Position of the camera. - The up vector of the camera. - Optional forward vector of the camera. - [OutAttribute] The created billboard matrix. - - - Creates a cylindrical billboard that rotates around a specified axis. - Position of the object the billboard will rotate around. - Position of the camera. - Axis to rotate the billboard around. - Optional forward vector of the camera. - Optional forward vector of the object. - - - Creates a cylindrical billboard that rotates around a specified axis. - Position of the object the billboard will rotate around. - Position of the camera. - Axis to rotate the billboard around. - Optional forward vector of the camera. - Optional forward vector of the object. - [OutAttribute] The created billboard matrix. - - - Creates a new Matrix that rotates around an arbitrary vector. - The axis to rotate around. - The angle to rotate around the vector. - - - Creates a new Matrix that rotates around an arbitrary vector. - The axis to rotate around. - The angle to rotate around the vector. - [OutAttribute] The created Matrix. - - - Creates a rotation Matrix from a Quaternion. - Quaternion to create the Matrix from. - - - Creates a rotation Matrix from a Quaternion. - Quaternion to create the Matrix from. - [OutAttribute] The created Matrix. - - - Creates a new rotation matrix from a specified yaw, pitch, and roll. - Angle of rotation, in radians, around the y-axis. - Angle of rotation, in radians, around the x-axis. - Angle of rotation, in radians, around the z-axis. - - - Fills in a rotation matrix from a specified yaw, pitch, and roll. - Angle of rotation, in radians, around the y-axis. - Angle of rotation, in radians, around the x-axis. - Angle of rotation, in radians, around the z-axis. - [OutAttribute] An existing matrix filled in to represent the specified yaw, pitch, and roll. - - - Creates a view matrix. - The position of the camera. - The target towards which the camera is pointing. - The direction that is "up" from the camera's point of view. - - - Creates a view matrix. - The position of the camera. - The target towards which the camera is pointing. - The direction that is "up" from the camera's point of view. - [OutAttribute] The created view matrix. - - - Builds an orthogonal projection matrix. - Width of the view volume. - Height of the view volume. - Minimum z-value of the view volume. - Maximum z-value of the view volume. - - - Builds an orthogonal projection matrix. - Width of the view volume. - Height of the view volume. - Minimum z-value of the view volume. - Maximum z-value of the view volume. - [OutAttribute] The projection matrix. - - - Builds a customized, orthogonal projection matrix. - Minimum x-value of the view volume. - Maximum x-value of the view volume. - Minimum y-value of the view volume. - Maximum y-value of the view volume. - Minimum z-value of the view volume. - Maximum z-value of the view volume. - - - Builds a customized, orthogonal projection matrix. - Minimum x-value of the view volume. - Maximum x-value of the view volume. - Minimum y-value of the view volume. - Maximum y-value of the view volume. - Minimum z-value of the view volume. - Maximum z-value of the view volume. - [OutAttribute] The projection matrix. - - - Builds a perspective projection matrix and returns the result by value. - Width of the view volume at the near view plane. - Height of the view volume at the near view plane. - Distance to the near view plane. - Distance to the far view plane. - - - Builds a perspective projection matrix and returns the result by reference. - Width of the view volume at the near view plane. - Height of the view volume at the near view plane. - Distance to the near view plane. - Distance to the far view plane. - [OutAttribute] The projection matrix. - - - Builds a perspective projection matrix based on a field of view and returns by value. - Field of view in the y direction, in radians. - Aspect ratio, defined as view space width divided by height. To match the aspect ratio of the viewport, the property AspectRatio. - Distance to the near view plane. - Distance to the far view plane. - - - Builds a perspective projection matrix based on a field of view and returns by reference. - Field of view in the y direction, in radians. - Aspect ratio, defined as view space width divided by height. To match the aspect ratio of the viewport, the property AspectRatio. - Distance to the near view plane. - Distance to the far view plane. - [OutAttribute] The perspective projection matrix. - - - Builds a customized, perspective projection matrix. - Minimum x-value of the view volume at the near view plane. - Maximum x-value of the view volume at the near view plane. - Minimum y-value of the view volume at the near view plane. - Maximum y-value of the view volume at the near view plane. - Distance to the near view plane. - Distance to of the far view plane. - - - Builds a customized, perspective projection matrix. - Minimum x-value of the view volume at the near view plane. - Maximum x-value of the view volume at the near view plane. - Minimum y-value of the view volume at the near view plane. - Maximum y-value of the view volume at the near view plane. - Distance to the near view plane. - Distance to of the far view plane. - [OutAttribute] The created projection matrix. - - - Creates a Matrix that reflects the coordinate system about a specified Plane. - The Plane about which to create a reflection. - - - Fills in an existing Matrix so that it reflects the coordinate system about a specified Plane. - The Plane about which to create a reflection. - [OutAttribute] A Matrix that creates the reflection. - - - Returns a matrix that can be used to rotate a set of vertices around the x-axis. - The amount, in radians, in which to rotate around the x-axis. Note that you can use ToRadians to convert degrees to radians. - - - Populates data into a user-specified matrix that can be used to rotate a set of vertices around the x-axis. - The amount, in radians, in which to rotate around the x-axis. Note that you can use ToRadians to convert degrees to radians. - [OutAttribute] The matrix in which to place the calculated data. - - - Returns a matrix that can be used to rotate a set of vertices around the y-axis. - The amount, in radians, in which to rotate around the y-axis. Note that you can use ToRadians to convert degrees to radians. - - - Populates data into a user-specified matrix that can be used to rotate a set of vertices around the y-axis. - The amount, in radians, in which to rotate around the y-axis. Note that you can use ToRadians to convert degrees to radians. - [OutAttribute] The matrix in which to place the calculated data. - - - Returns a matrix that can be used to rotate a set of vertices around the z-axis. - The amount, in radians, in which to rotate around the z-axis. Note that you can use ToRadians to convert degrees to radians. - - - Populates data into a user-specified matrix that can be used to rotate a set of vertices around the z-axis. - The amount, in radians, in which to rotate around the z-axis. Note that you can use ToRadians to convert degrees to radians. - [OutAttribute] The rotation matrix. - - - Creates a scaling Matrix. - Amounts to scale by on the x, y, and z axes. - - - Creates a scaling Matrix. - Amounts to scale by on the x, y, and z axes. - [OutAttribute] The created scaling Matrix. - - - Creates a scaling Matrix. - Amount to scale by. - - - Creates a scaling Matrix. - Value to scale by. - [OutAttribute] The created scaling Matrix. - - - Creates a scaling Matrix. - Value to scale by on the x-axis. - Value to scale by on the y-axis. - Value to scale by on the z-axis. - - - Creates a scaling Matrix. - Value to scale by on the x-axis. - Value to scale by on the y-axis. - Value to scale by on the z-axis. - [OutAttribute] The created scaling Matrix. - - - Creates a Matrix that flattens geometry into a specified Plane as if casting a shadow from a specified light source. - A Vector3 specifying the direction from which the light that will cast the shadow is coming. - The Plane onto which the new matrix should flatten geometry so as to cast a shadow. - - - Fills in a Matrix to flatten geometry into a specified Plane as if casting a shadow from a specified light source. - A Vector3 specifying the direction from which the light that will cast the shadow is coming. - The Plane onto which the new matrix should flatten geometry so as to cast a shadow. - [OutAttribute] A Matrix that can be used to flatten geometry onto the specified plane from the specified direction. - - - Creates a translation Matrix. - Amounts to translate by on the x, y, and z axes. - - - Creates a translation Matrix. - Amounts to translate by on the x, y, and z axes. - [OutAttribute] The created translation Matrix. - - - Creates a translation Matrix. - Value to translate by on the x-axis. - Value to translate by on the y-axis. - Value to translate by on the z-axis. - - - Creates a translation Matrix. - Value to translate by on the x-axis. - Value to translate by on the y-axis. - Value to translate by on the z-axis. - [OutAttribute] The created translation Matrix. - - - Creates a world matrix with the specified parameters. - Position of the object. This value is used in translation operations. - Forward direction of the object. - Upward direction of the object; usually [0, 1, 0]. - - - Creates a world matrix with the specified parameters. - Position of the object. This value is used in translation operations. - Forward direction of the object. - Upward direction of the object; usually [0, 1, 0]. - [OutAttribute] The created world matrix. - - - Extracts the scalar, translation, and rotation components from a 3D scale/rotate/translate (SRT) Matrix. Reference page contains code sample. - [OutAttribute] The scalar component of the transform matrix, expressed as a Vector3. - [OutAttribute] The rotation component of the transform matrix, expressed as a Quaternion. - [OutAttribute] The translation component of the transform matrix, expressed as a Vector3. - - - Calculates the determinant of the matrix. - - - Divides the components of a matrix by the corresponding components of another matrix. - Source matrix. - The divisor. - - - Divides the components of a matrix by a scalar. - Source matrix. - The divisor. - - - Divides the components of a matrix by the corresponding components of another matrix. - Source matrix. - The divisor. - [OutAttribute] Result of the division. - - - Divides the components of a matrix by a scalar. - Source matrix. - The divisor. - [OutAttribute] Result of the division. - - - Gets and sets the down vector of the Matrix. - - - Determines whether the specified Object is equal to the Matrix. - The Object to compare with the current Matrix. - - - Returns a value that indicates whether the current instance is equal to a specified object. - Object with which to make the comparison. - - - Gets and sets the forward vector of the Matrix. - - - Gets the hash code of this object. - - - Returns an instance of the identity matrix. - - - Calculates the inverse of a matrix. - Source matrix. - - - Calculates the inverse of a matrix. - The source matrix. - [OutAttribute] The inverse of matrix. The same matrix can be used for both arguments. - - - Gets and sets the left vector of the Matrix. - - - Linearly interpolates between the corresponding values of two matrices. - Source matrix. - Source matrix. - Interpolation value. - - - Linearly interpolates between the corresponding values of two matrices. - Source matrix. - Source matrix. - Interpolation value. - [OutAttribute] Resulting matrix. - - - Value at row 1 column 1 of the matrix. - - - Value at row 1 column 2 of the matrix. - - - Value at row 1 column 3 of the matrix. - - - Value at row 1 column 4 of the matrix. - - - Value at row 2 column 1 of the matrix. - - - Value at row 2 column 2 of the matrix. - - - Value at row 2 column 3 of the matrix. - - - Value at row 2 column 4 of the matrix. - - - Value at row 3 column 1 of the matrix. - - - Value at row 3 column 2 of the matrix. - - - Value at row 3 column 3 of the matrix. - - - Value at row 3 column 4 of the matrix. - - - Value at row 4 column 1 of the matrix. - - - Value at row 4 column 2 of the matrix. - - - Value at row 4 column 3 of the matrix. - - - Value at row 4 column 4 of the matrix. - - - Multiplies a matrix by another matrix. - Source matrix. - Source matrix. - - - Multiplies a matrix by a scalar value. - Source matrix. - Scalar value. - - - Multiplies a matrix by another matrix. - Source matrix. - Source matrix. - [OutAttribute] Result of the multiplication. - - - Multiplies a matrix by a scalar value. - Source matrix. - Scalar value. - [OutAttribute] The result of the multiplication. - - - Negates individual elements of a matrix. - Source matrix. - - - Negates individual elements of a matrix. - Source matrix. - [OutAttribute] Negated matrix. - - - Adds a matrix to another matrix. - Source matrix. - Source matrix. - - - Divides the components of a matrix by the corresponding components of another matrix. - Source matrix. - The divisor. - - - Divides the components of a matrix by a scalar. - Source matrix. - The divisor. - - - Compares a matrix for equality with another matrix. - Source matrix. - Source matrix. - - - Tests a matrix for inequality with another matrix. - The matrix on the left of the equal sign. - The matrix on the right of the equal sign. - - - Multiplies a matrix by another matrix. - Source matrix. - Source matrix. - - - Multiplies a matrix by a scalar value. - Source matrix. - Scalar value. - - - Multiplies a matrix by a scalar value. - Scalar value. - Source matrix. - - - Subtracts matrices. - Source matrix. - Source matrix. - - - Negates individual elements of a matrix. - Source matrix. - - - Gets and sets the right vector of the Matrix. - - - Subtracts matrices. - Source matrix. - Source matrix. - - - Subtracts matrices. - Source matrix. - Source matrix. - [OutAttribute] Result of the subtraction. - - - Retrieves a string representation of the current object. - - - Transforms a Matrix by applying a Quaternion rotation. - The Matrix to transform. - The rotation to apply, expressed as a Quaternion. - - - Transforms a Matrix by applying a Quaternion rotation. - The Matrix to transform. - The rotation to apply, expressed as a Quaternion. - [OutAttribute] An existing Matrix filled in with the result of the transform. - - - Gets and sets the translation vector of the Matrix. - - - Transposes the rows and columns of a matrix. - Source matrix. - - - Transposes the rows and columns of a matrix. - Source matrix. - [OutAttribute] Transposed matrix. - - - Gets and sets the up vector of the Matrix. - - - Defines a plane. - - - Creates a new instance of Plane. - One point of a triangle defining the Plane. - One point of a triangle defining the Plane. - One point of a triangle defining the Plane. - - - Creates a new instance of Plane. - The normal vector to the Plane. - The Plane's distance along its normal from the origin. - - - Creates a new instance of Plane. - Vector4 with X, Y, and Z components defining the normal of the Plane. The W component defines the distance of the Plane along the normal from the origin. - - - Creates a new instance of Plane. - X component of the normal defining the Plane. - Y component of the normal defining the Plane. - Z component of the normal defining the Plane. - Distance of the Plane along its normal from the origin. - - - The distance of the Plane along its normal from the origin. - - - Calculates the dot product of a specified Vector4 and this Plane. - The Vector4 to multiply this Plane by. - - - Calculates the dot product of a specified Vector4 and this Plane. - The Vector4 to multiply this Plane by. - [OutAttribute] The dot product of the specified Vector4 and this Plane. - - - Returns the dot product of a specified Vector3 and the Normal vector of this Plane plus the distance (D) value of the Plane. - The Vector3 to multiply by. - - - Returns the dot product of a specified Vector3 and the Normal vector of this Plane plus the distance (D) value of the Plane. - The Vector3 to multiply by. - [OutAttribute] The resulting value. - - - Returns the dot product of a specified Vector3 and the Normal vector of this Plane. - The Vector3 to multiply by. - - - Returns the dot product of a specified Vector3 and the Normal vector of this Plane. - The Vector3 to multiply by. - [OutAttribute] The resulting dot product. - - - Determines whether the specified Plane is equal to the Plane. - The Plane to compare with the current Plane. - - - Determines whether the specified Object is equal to the Plane. - The Object to compare with the current Plane. - - - Gets the hash code for this object. - - - Checks whether the current Plane intersects a specified BoundingBox. - The BoundingBox to test for intersection with. - - - Checks whether the current Plane intersects a BoundingBox. - The BoundingBox to check for intersection with. - [OutAttribute] An enumeration indicating whether the Plane intersects the BoundingBox. - - - Checks whether the current Plane intersects a specified BoundingFrustum. - The BoundingFrustum to check for intersection with. - - - Checks whether the current Plane intersects a specified BoundingSphere. - The BoundingSphere to check for intersection with. - - - Checks whether the current Plane intersects a BoundingSphere. - The BoundingSphere to check for intersection with. - [OutAttribute] An enumeration indicating whether the Plane intersects the BoundingSphere. - - - The normal vector of the Plane. - - - Changes the coefficients of the Normal vector of this Plane to make it of unit length. - - - Changes the coefficients of the Normal vector of a Plane to make it of unit length. - The Plane to normalize. - - - Changes the coefficients of the Normal vector of a Plane to make it of unit length. - The Plane to normalize. - [OutAttribute] An existing plane Plane filled in with a normalized version of the specified plane. - - - Determines whether two instances of Plane are equal. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Determines whether two instances of Plane are not equal. - The object to the left of the inequality operator. - The object to the right of the inequality operator. - - - Returns a String that represents the current Plane. - - - Transforms a normalized Plane by a Matrix. - The normalized Plane to transform. This Plane must already be normalized, so that its Normal vector is of unit length, before this method is called. - The transform Matrix to apply to the Plane. - - - Transforms a normalized Plane by a Quaternion rotation. - The normalized Plane to transform. This Plane must already be normalized, so that its Normal vector is of unit length, before this method is called. - The Quaternion rotation to apply to the Plane. - - - Transforms a normalized Plane by a Matrix. - The normalized Plane to transform. This Plane must already be normalized, so that its Normal vector is of unit length, before this method is called. - The transform Matrix to apply to the Plane. - [OutAttribute] An existing Plane filled in with the results of applying the transform. - - - Transforms a normalized Plane by a Quaternion rotation. - The normalized Plane to transform. This Plane must already be normalized, so that its Normal vector is of unit length, before this method is called. - The Quaternion rotation to apply to the Plane. - [OutAttribute] An existing Plane filled in with the results of applying the rotation. - - - Describes the intersection between a plane and a bounding volume. - - - There is no intersection, and the bounding volume is in the negative half-space of the Plane. - - - There is no intersection, and the bounding volume is in the positive half-space of the Plane. - - - The Plane is intersected. - - - Specifies the game controller associated with a player. - - - The fourth controller. - - - The first controller. - - - The third controller. - - - The second controller. - - - Defines a point in 2D space. - - - Initializes a new instance of Point. - The x-coordinate of the Point. - The y-coordinate of the Point. - - - Determines whether two Point instances are equal. - The Point to compare this instance to. - - - Determines whether two Point instances are equal. - The object to compare this instance to. - - - Gets the hash code for this object. - - - Determines whether two Point instances are equal. - Point on the left side of the equal sign. - Point on the right side of the equal sign. - - - Determines whether two Point instances are not equal. - The Point on the left side of the equal sign. - The Point on the right side of the equal sign. - - - Returns a String that represents the current Point. - - - Specifies the x-coordinate of the Point. - - - Specifies the y-coordinate of the Point. - - - Returns the point (0,0). - - - Defines a four-dimensional vector (x,y,z,w), which is used to efficiently rotate an object about the (x, y, z) vector by the angle theta, where w = cos(theta/2). - - - Initializes a new instance of Quaternion. - The vector component of the quaternion. - The rotation component of the quaternion. - - - Initializes a new instance of Quaternion. - The x-value of the quaternion. - The y-value of the quaternion. - The z-value of the quaternion. - The w-value of the quaternion. - - - Adds two Quaternions. - Quaternion to add. - Quaternion to add. - - - Adds two Quaternions. - Quaternion to add. - Quaternion to add. - [OutAttribute] Result of adding the Quaternions. - - - Concatenates two Quaternions; the result represents the value1 rotation followed by the value2 rotation. - The first Quaternion rotation in the series. - The second Quaternion rotation in the series. - - - Concatenates two Quaternions; the result represents the value1 rotation followed by the value2 rotation. - The first Quaternion rotation in the series. - The second Quaternion rotation in the series. - [OutAttribute] The Quaternion rotation representing the concatenation of value1 followed by value2. - - - Transforms this Quaternion into its conjugate. - - - Returns the conjugate of a specified Quaternion. - The Quaternion of which to return the conjugate. - - - Returns the conjugate of a specified Quaternion. - The Quaternion of which to return the conjugate. - [OutAttribute] An existing Quaternion filled in to be the conjugate of the specified one. - - - Creates a Quaternion from a vector and an angle to rotate about the vector. - The vector to rotate around. - The angle to rotate around the vector. - - - Creates a Quaternion from a vector and an angle to rotate about the vector. - The vector to rotate around. - The angle to rotate around the vector. - [OutAttribute] The created Quaternion. - - - Creates a Quaternion from a rotation Matrix. - The rotation Matrix to create the Quaternion from. - - - Creates a Quaternion from a rotation Matrix. - The rotation Matrix to create the Quaternion from. - [OutAttribute] The created Quaternion. - - - Creates a new Quaternion from specified yaw, pitch, and roll angles. - The yaw angle, in radians, around the y-axis. - The pitch angle, in radians, around the x-axis. - The roll angle, in radians, around the z-axis. - - - Creates a new Quaternion from specified yaw, pitch, and roll angles. - The yaw angle, in radians, around the y-axis. - The pitch angle, in radians, around the x-axis. - The roll angle, in radians, around the z-axis. - [OutAttribute] An existing Quaternion filled in to express the specified yaw, pitch, and roll angles. - - - Divides a Quaternion by another Quaternion. - Source Quaternion. - The divisor. - - - Divides a Quaternion by another Quaternion. - Source Quaternion. - The divisor. - [OutAttribute] Result of the division. - - - Calculates the dot product of two Quaternions. - Source Quaternion. - Source Quaternion. - - - Calculates the dot product of two Quaternions. - Source Quaternion. - Source Quaternion. - [OutAttribute] Dot product of the Quaternions. - - - Determines whether the specified Object is equal to the Quaternion. - The Quaternion to compare with the current Quaternion. - - - Returns a value that indicates whether the current instance is equal to a specified object. - Object to make the comparison with. - - - Get the hash code of this object. - - - Returns a Quaternion representing no rotation. - - - Returns the inverse of a Quaternion. - Source Quaternion. - - - Returns the inverse of a Quaternion. - Source Quaternion. - [OutAttribute] The inverse of the Quaternion. - - - Calculates the length of a Quaternion. - - - Calculates the length squared of a Quaternion. - - - Linearly interpolates between two quaternions. - Source quaternion. - Source quaternion. - Value indicating how far to interpolate between the quaternions. - - - Linearly interpolates between two quaternions. - Source quaternion. - Source quaternion. - Value indicating how far to interpolate between the quaternions. - [OutAttribute] The resulting quaternion. - - - Multiplies two quaternions. - The quaternion on the left of the multiplication. - The quaternion on the right of the multiplication. - - - Multiplies a quaternion by a scalar value. - Source quaternion. - Scalar value. - - - Multiplies two quaternions. - The quaternion on the left of the multiplication. - The quaternion on the right of the multiplication. - [OutAttribute] The result of the multiplication. - - - Multiplies a quaternion by a scalar value. - Source quaternion. - Scalar value. - [OutAttribute] The result of the multiplication. - - - Flips the sign of each component of the quaternion. - Source quaternion. - - - Flips the sign of each component of the quaternion. - Source quaternion. - [OutAttribute] Negated quaternion. - - - Divides each component of the quaternion by the length of the quaternion. - - - Divides each component of the quaternion by the length of the quaternion. - Source quaternion. - - - Divides each component of the quaternion by the length of the quaternion. - Source quaternion. - [OutAttribute] Normalized quaternion. - - - Adds two Quaternions. - Quaternion to add. - Quaternion to add. - - - Divides a Quaternion by another Quaternion. - Source Quaternion. - The divisor. - - - Compares two Quaternions for equality. - Source Quaternion. - Source Quaternion. - - - Compare two Quaternions for inequality. - Source Quaternion. - Source Quaternion. - - - Multiplies two quaternions. - Source quaternion. - Source quaternion. - - - Multiplies a quaternion by a scalar value. - Source quaternion. - Scalar value. - - - Subtracts a quaternion from another quaternion. - Source quaternion. - Source quaternion. - - - Flips the sign of each component of the quaternion. - Source quaternion. - - - Interpolates between two quaternions, using spherical linear interpolation. - Source quaternion. - Source quaternion. - Value that indicates how far to interpolate between the quaternions. - - - Interpolates between two quaternions, using spherical linear interpolation. - Source quaternion. - Source quaternion. - Value that indicates how far to interpolate between the quaternions. - [OutAttribute] Result of the interpolation. - - - Subtracts a quaternion from another quaternion. - Source quaternion. - Source quaternion. - - - Subtracts a quaternion from another quaternion. - Source quaternion. - Source quaternion. - [OutAttribute] Result of the subtraction. - - - Retireves a string representation of the current object. - - - Specifies the rotation component of the quaternion. - - - Specifies the x-value of the vector component of the quaternion. - - - Specifies the y-value of the vector component of the quaternion. - - - Specifies the z-value of the vector component of the quaternion. - - - Defines a ray. - - - Creates a new instance of Ray. - The starting point of the Ray. - Unit vector describing the direction of the Ray. - - - Unit vector specifying the direction the Ray is pointing. - - - Determines whether the specified Ray is equal to the current Ray. - The Ray to compare with the current Ray. - - - Determines whether two instances of Ray are equal. - The Object to compare with the current Ray. - - - Gets the hash code for this instance. - - - Checks whether the Ray intersects a specified BoundingBox. - The BoundingBox to check for intersection with the Ray. - - - Checks whether the current Ray intersects a BoundingBox. - The BoundingBox to check for intersection with. - [OutAttribute] Distance at which the ray intersects the BoundingBox or null if there is no intersection. - - - Checks whether the Ray intersects a specified BoundingFrustum. - The BoundingFrustum to check for intersection with the Ray. - - - Checks whether the Ray intersects a specified BoundingSphere. - The BoundingSphere to check for intersection with the Ray. - - - Checks whether the current Ray intersects a BoundingSphere. - The BoundingSphere to check for intersection with. - [OutAttribute] Distance at which the ray intersects the BoundingSphere or null if there is no intersection. - - - Determines whether this Ray intersects a specified Plane. - The Plane with which to calculate this Ray's intersection. - - - Determines whether this Ray intersects a specified Plane. - The Plane with which to calculate this Ray's intersection. - [OutAttribute] The distance at which this Ray intersects the specified Plane, or null if there is no intersection. - - - Determines whether two instances of Ray are equal. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Determines whether two instances of Ray are not equal. - The object to the left of the inequality operator. - The object to the right of the inequality operator. - - - Specifies the starting point of the Ray. - - - Returns a String that represents the current Ray. - - - Defines a rectangle. - - - Initializes a new instance of Rectangle. - The x-coordinate of the rectangle. - The y-coordinate of the rectangle. - Width of the rectangle. - Height of the rectangle. - - - Returns the y-coordinate of the bottom of the rectangle. - - - Gets the Point that specifies the center of the rectangle. - - - Determines whether this Rectangle contains a specified Point. - The Point to evaluate. - - - Determines whether this Rectangle contains a specified Point. - The Point to evaluate. - [OutAttribute] true if the specified Point is contained within this Rectangle; false otherwise. - - - Determines whether this Rectangle entirely contains a specified Rectangle. - The Rectangle to evaluate. - - - Determines whether this Rectangle entirely contains a specified Rectangle. - The Rectangle to evaluate. - [OutAttribute] On exit, is true if this Rectangle entirely contains the specified Rectangle, or false if not. - - - Determines whether this Rectangle contains a specified point represented by its x- and y-coordinates. - The x-coordinate of the specified point. - The y-coordinate of the specified point. - - - Returns a Rectangle with all of its values set to zero. - - - Determines whether the specified Object is equal to the Rectangle. - The Object to compare with the current Rectangle. - - - Returns a value that indicates whether the current instance is equal to a specified object. - Object to make the comparison with. - - - Gets the hash code for this object. - - - Specifies the height of the rectangle. - - - Pushes the edges of the Rectangle out by the horizontal and vertical values specified. - Value to push the sides out by. - Value to push the top and bottom out by. - - - Creates a Rectangle defining the area where one rectangle overlaps with another rectangle. - The first Rectangle to compare. - The second Rectangle to compare. - - - Creates a Rectangle defining the area where one rectangle overlaps with another rectangle. - The first Rectangle to compare. - The second Rectangle to compare. - [OutAttribute] The area where the two first parameters overlap. - - - Determines whether a specified Rectangle intersects with this Rectangle. - The Rectangle to evaluate. - - - Determines whether a specified Rectangle intersects with this Rectangle. - The Rectangle to evaluate - [OutAttribute] true if the specified Rectangle intersects with this one; false otherwise. - - - Gets a value that indicates whether the Rectangle is empty. - - - Returns the x-coordinate of the left side of the rectangle. - - - Gets or sets the upper-left value of the Rectangle. - - - Changes the position of the Rectangle. - The values to adjust the position of the Rectangle by. - - - Changes the position of the Rectangle. - Change in the x-position. - Change in the y-position. - - - Compares two rectangles for equality. - Source rectangle. - Source rectangle. - - - Compares two rectangles for inequality. - Source rectangle. - Source rectangle. - - - Returns the x-coordinate of the right side of the rectangle. - - - Returns the y-coordinate of the top of the rectangle. - - - Retrieves a string representation of the current object. - - - Creates a new Rectangle that exactly contains two other rectangles. - The first Rectangle to contain. - The second Rectangle to contain. - - - Creates a new Rectangle that exactly contains two other rectangles. - The first Rectangle to contain. - The second Rectangle to contain. - [OutAttribute] The Rectangle that must be the union of the first two rectangles. - - - Specifies the width of the rectangle. - - - Specifies the x-coordinate of the rectangle. - - - Specifies the y-coordinate of the rectangle. - - - Provides file stream access to the title's default storage location. - - - Returns a stream to an existing file in the default title storage location. - The name of the file to open. - - - Defines a vector with two components. - - - Creates a new instance of Vector2. - Value to initialize both components to. - - - Initializes a new instance of Vector2. - Initial value for the x-component of the vector. - Initial value for the y-component of the vector. - - - Adds two vectors. - Source vector. - Source vector. - - - Adds two vectors. - Source vector. - Source vector. - [OutAttribute] Sum of the source vectors. - - - Returns a Vector2 containing the 2D Cartesian coordinates of a point specified in barycentric (areal) coordinates relative to a 2D triangle. - A Vector2 containing the 2D Cartesian coordinates of vertex 1 of the triangle. - A Vector2 containing the 2D Cartesian coordinates of vertex 2 of the triangle. - A Vector2 containing the 2D Cartesian coordinates of vertex 3 of the triangle. - Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in value2). - Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in value3). - - - Returns a Vector2 containing the 2D Cartesian coordinates of a point specified in barycentric (areal) coordinates relative to a 2D triangle. - A Vector2 containing the 2D Cartesian coordinates of vertex 1 of the triangle. - A Vector2 containing the 2D Cartesian coordinates of vertex 2 of the triangle. - A Vector2 containing the 2D Cartesian coordinates of vertex 3 of the triangle. - Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in value2). - Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in value3). - [OutAttribute] The 2D Cartesian coordinates of the specified point are placed in this Vector2 on exit. - - - Performs a Catmull-Rom interpolation using the specified positions. - The first position in the interpolation. - The second position in the interpolation. - The third position in the interpolation. - The fourth position in the interpolation. - Weighting factor. - - - Performs a Catmull-Rom interpolation using the specified positions. - The first position in the interpolation. - The second position in the interpolation. - The third position in the interpolation. - The fourth position in the interpolation. - Weighting factor. - [OutAttribute] A vector that is the result of the Catmull-Rom interpolation. - - - Restricts a value to be within a specified range. - The value to clamp. - The minimum value. - The maximum value. - - - Restricts a value to be within a specified range. - The value to clamp. - The minimum value. - The maximum value. - [OutAttribute] The clamped value. - - - Calculates the distance between two vectors. - Source vector. - Source vector. - - - Calculates the distance between two vectors. - Source vector. - Source vector. - [OutAttribute] The distance between the vectors. - - - Calculates the distance between two vectors squared. - Source vector. - Source vector. - - - Calculates the distance between two vectors squared. - Source vector. - Source vector. - [OutAttribute] The distance between the vectors squared. - - - Divides the components of a vector by the components of another vector. - Source vector. - Divisor vector. - - - Divides a vector by a scalar value. - Source vector. - The divisor. - - - Divides the components of a vector by the components of another vector. - Source vector. - The divisor. - [OutAttribute] The result of the division. - - - Divides a vector by a scalar value. - Source vector. - The divisor. - [OutAttribute] The result of the division. - - - Calculates the dot product of two vectors. If the two vectors are unit vectors, the dot product returns a floating point value between -1 and 1 that can be used to determine some properties of the angle between two vectors. For example, it can show whether the vectors are orthogonal, parallel, or have an acute or obtuse angle between them. - Source vector. - Source vector. - - - Calculates the dot product of two vectors and writes the result to a user-specified variable. If the two vectors are unit vectors, the dot product returns a floating point value between -1 and 1 that can be used to determine some properties of the angle between two vectors. For example, it can show whether the vectors are orthogonal, parallel, or have an acute or obtuse angle between them. - Source vector. - Source vector. - [OutAttribute] The dot product of the two vectors. - - - Determines whether the specified Object is equal to the Vector2. - The Object to compare with the current Vector2. - - - Returns a value that indicates whether the current instance is equal to a specified object. - Object to make the comparison with. - - - Gets the hash code of the vector object. - - - Performs a Hermite spline interpolation. - Source position vector. - Source tangent vector. - Source position vector. - Source tangent vector. - Weighting factor. - - - Performs a Hermite spline interpolation. - Source position vector. - Source tangent vector. - Source position vector. - Source tangent vector. - Weighting factor. - [OutAttribute] The result of the Hermite spline interpolation. - - - Calculates the length of the vector. - - - Calculates the length of the vector squared. - - - Performs a linear interpolation between two vectors. - Source vector. - Source vector. - Value between 0 and 1 indicating the weight of value2. - - - Performs a linear interpolation between two vectors. - Source vector. - Source vector. - Value between 0 and 1 indicating the weight of value2. - [OutAttribute] The result of the interpolation. - - - Returns a vector that contains the highest value from each matching pair of components. - Source vector. - Source vector. - - - Returns a vector that contains the highest value from each matching pair of components. - Source vector. - Source vector. - [OutAttribute] The maximized vector. - - - Returns a vector that contains the lowest value from each matching pair of components. - Source vector. - Source vector. - - - Returns a vector that contains the lowest value from each matching pair of components. - Source vector. - Source vector. - [OutAttribute] The minimized vector. - - - Multiplies the components of two vectors by each other. - Source vector. - Source vector. - - - Multiplies a vector by a scalar value. - Source vector. - Scalar value. - - - Multiplies the components of two vectors by each other. - Source vector. - Source vector. - [OutAttribute] The result of the multiplication. - - - Multiplies a vector by a scalar value. - Source vector. - Scalar value. - [OutAttribute] The result of the multiplication. - - - Returns a vector pointing in the opposite direction. - Source vector. - - - Returns a vector pointing in the opposite direction. - Source vector. - [OutAttribute] Vector pointing in the opposite direction. - - - Turns the current vector into a unit vector. The result is a vector one unit in length pointing in the same direction as the original vector. - - - Creates a unit vector from the specified vector. The result is a vector one unit in length pointing in the same direction as the original vector. - Source Vector2. - - - Creates a unit vector from the specified vector, writing the result to a user-specified variable. The result is a vector one unit in length pointing in the same direction as the original vector. - Source vector. - [OutAttribute] Normalized vector. - - - Returns a Vector2 with both of its components set to one. - - - Adds two vectors. - Source vector. - Source vector. - - - Divides the components of a vector by the components of another vector. - Source vector. - Divisor vector. - - - Divides a vector by a scalar value. - Source vector. - The divisor. - - - Tests vectors for equality. - Source vector. - Source vector. - - - Tests vectors for inequality. - Vector to compare. - Vector to compare. - - - Multiplies the components of two vectors by each other. - Source vector. - Source vector. - - - Multiplies a vector by a scalar value. - Source vector. - Scalar value. - - - Multiplies a vector by a scalar value. - Scalar value. - Source vector. - - - Subtracts a vector from a vector. - Source vector. - source vector. - - - Returns a vector pointing in the opposite direction. - Source vector. - - - Determines the reflect vector of the given vector and normal. - Source vector. - Normal of vector. - - - Determines the reflect vector of the given vector and normal. - Source vector. - Normal of vector. - [OutAttribute] The created reflect vector. - - - Interpolates between two values using a cubic equation. - Source value. - Source value. - Weighting value. - - - Interpolates between two values using a cubic equation. - Source value. - Source value. - Weighting value. - [OutAttribute] The interpolated value. - - - Subtracts a vector from a vector. - Source vector. - Source vector. - - - Subtracts a vector from a vector. - Source vector. - Source vector. - [OutAttribute] The result of the subtraction. - - - Retrieves a string representation of the current object. - - - Transforms the vector (x, y, 0, 1) by the specified matrix. - The source vector. - The transformation matrix. - - - Transforms a single Vector2, or the vector normal (x, y, 0, 0), by a specified Quaternion rotation. - The vector to rotate. - The Quaternion rotation to apply. - - - Transforms a Vector2 by the given Matrix. - The source Vector2. - The transformation Matrix. - [OutAttribute] The Vector2 resulting from the transformation. - - - Transforms a Vector2, or the vector normal (x, y, 0, 0), by a specified Quaternion rotation. - The vector to rotate. - The Quaternion rotation to apply. - [OutAttribute] An existing Vector2 filled in with the result of the rotation. - - - Transforms an array of Vector2s by a specified Matrix. - The array of Vector2s to transform. - The transform Matrix to apply. - An existing array into which the transformed Vector2s are written. - - - Transforms an array of Vector2s by a specified Quaternion. - The array of Vector2s to transform. - The transform Matrix to use. - An existing array into which the transformed Vector2s are written. - - - Transforms a specified range in an array of Vector2s by a specified Matrix and places the results in a specified range in a destination array. - The source array. - The index of the first Vector2 to transform in the source array. - The Matrix to transform by. - The destination array into which the resulting Vector2s will be written. - The index of the position in the destination array where the first result Vector2 should be written. - The number of Vector2s to be transformed. - - - Transforms a specified range in an array of Vector2s by a specified Quaternion and places the results in a specified range in a destination array. - The source array. - The index of the first Vector2 to transform in the source array. - The Quaternion rotation to apply. - The destination array into which the resulting Vector2s are written. - The index of the position in the destination array where the first result Vector2 should be written. - The number of Vector2s to be transformed. - - - Transforms a 2D vector normal by a matrix. - The source vector. - The transformation matrix. - - - Transforms a vector normal by a matrix. - The source vector. - The transformation matrix. - [OutAttribute] The Vector2 resulting from the transformation. - - - Transforms an array of Vector2 vector normals by a specified Matrix. - The array of vector normals to transform. - The transform Matrix to apply. - An existing array into which the transformed vector normals are written. - - - Transforms a specified range in an array of Vector2 vector normals by a specified Matrix and places the results in a specified range in a destination array. - The source array. - The index of the first Vector2 to transform in the source array. - The Matrix to apply. - The destination array into which the resulting Vector2s are written. - The index of the position in the destination array where the first result Vector2 should be written. - The number of vector normals to be transformed. - - - Returns the unit vector for the x-axis. - - - Returns the unit vector for the y-axis. - - - Gets or sets the x-component of the vector. - - - Gets or sets the y-component of the vector. - - - Returns a Vector2 with all of its components set to zero. - - - Defines a vector with three components. - - - Initializes a new instance of Vector3. - A vector containing the values to initialize x and y components with. - Initial value for the z-component of the vector. - - - Creates a new instance of Vector3. - Value to initialize each component to. - - - Initializes a new instance of Vector3. - Initial value for the x-component of the vector. - Initial value for the y-component of the vector. - Initial value for the z-component of the vector. - - - Adds two vectors. - Source vector. - Source vector. - - - Adds two vectors. - Source vector. - Source vector. - [OutAttribute] Sum of the source vectors. - - - Returns a unit Vector3 designating backward in a right-handed coordinate system (0, 0, 1). - - - Returns a Vector3 containing the 3D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 3D triangle. - A Vector3 containing the 3D Cartesian coordinates of vertex 1 of the triangle. - A Vector3 containing the 3D Cartesian coordinates of vertex 2 of the triangle. - A Vector3 containing the 3D Cartesian coordinates of vertex 3 of the triangle. - Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in value2). - Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in value3). - - - Returns a Vector3 containing the 3D Cartesian coordinates of a point specified in barycentric (areal) coordinates relative to a 3D triangle. - A Vector3 containing the 3D Cartesian coordinates of vertex 1 of the triangle. - A Vector3 containing the 3D Cartesian coordinates of vertex 2 of the triangle. - A Vector3 containing the 3D Cartesian coordinates of vertex 3 of the triangle. - Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in value2). - Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in value3). - [OutAttribute] The 3D Cartesian coordinates of the specified point are placed in this Vector3 on exit. - - - Performs a Catmull-Rom interpolation using the specified positions. - The first position in the interpolation. - The second position in the interpolation. - The third position in the interpolation. - The fourth position in the interpolation. - Weighting factor. - - - Performs a Catmull-Rom interpolation using the specified positions. - The first position in the interpolation. - The second position in the interpolation. - The third position in the interpolation. - The fourth position in the interpolation. - Weighting factor. - [OutAttribute] A vector that is the result of the Catmull-Rom interpolation. - - - Restricts a value to be within a specified range. - The value to clamp. - The minimum value. - The maximum value. - - - Restricts a value to be within a specified range. - The value to clamp. - The minimum value. - The maximum value. - [OutAttribute] The clamped value. - - - Calculates the cross product of two vectors. - Source vector. - Source vector. - - - Calculates the cross product of two vectors. - Source vector. - Source vector. - [OutAttribute] The cross product of the vectors. - - - Calculates the distance between two vectors. - Source vector. - Source vector. - - - Calculates the distance between two vectors. - Source vector. - Source vector. - [OutAttribute] The distance between the vectors. - - - Calculates the distance between two vectors squared. - Source vector. - Source vector. - - - Calculates the distance between two vectors squared. - Source vector. - Source vector. - [OutAttribute] The distance between the two vectors squared. - - - Divides the components of a vector by the components of another vector. - Source vector. - Divisor vector. - - - Divides a vector by a scalar value. - Source vector. - The divisor. - - - Divides the components of a vector by the components of another vector. - Source vector. - The divisor. - [OutAttribute] The result of the division. - - - Divides a vector by a scalar value. - Source vector. - The divisor. - [OutAttribute] The result of the division. - - - Calculates the dot product of two vectors. If the two vectors are unit vectors, the dot product returns a floating point value between -1 and 1 that can be used to determine some properties of the angle between two vectors. For example, it can show whether the vectors are orthogonal, parallel, or have an acute or obtuse angle between them. - Source vector. - Source vector. - - - Calculates the dot product of two vectors and writes the result to a user-specified variable. If the two vectors are unit vectors, the dot product returns a floating point value between -1 and 1 that can be used to determine some properties of the angle between two vectors. For example, it can show whether the vectors are orthogonal, parallel, or have an acute or obtuse angle between them. - Source vector. - Source vector. - [OutAttribute] The dot product of the two vectors. - - - Returns a unit Vector3 designating down (0, −1, 0). - - - Determines whether the specified Object is equal to the Vector3. - The Vector3 to compare with the current Vector3. - - - Returns a value that indicates whether the current instance is equal to a specified object. - Object to make the comparison with. - - - Returns a unit Vector3 designating forward in a right-handed coordinate system(0, 0, −1). - - - Gets the hash code of the vector object. - - - Performs a Hermite spline interpolation. - Source position vector. - Source tangent vector. - Source position vector. - Source tangent vector. - Weighting factor. - - - Performs a Hermite spline interpolation. - Source position vector. - Source tangent vector. - Source position vector. - Source tangent vector. - Weighting factor. - [OutAttribute] The result of the Hermite spline interpolation. - - - Returns a unit Vector3 designating left (−1, 0, 0). - - - Calculates the length of the vector. - - - Calculates the length of the vector squared. - - - Performs a linear interpolation between two vectors. - Source vector. - Source vector. - Value between 0 and 1 indicating the weight of value2. - - - Performs a linear interpolation between two vectors. - Source vector. - Source vector. - Value between 0 and 1 indicating the weight of value2. - [OutAttribute] The result of the interpolation. - - - Returns a vector that contains the highest value from each matching pair of components. - Source vector. - Source vector. - - - Returns a vector that contains the highest value from each matching pair of components. - Source vector. - Source vector. - [OutAttribute] The maximized vector. - - - Returns a vector that contains the lowest value from each matching pair of components. - Source vector. - Source vector. - - - Returns a vector that contains the lowest value from each matching pair of components. - Source vector. - Source vector. - [OutAttribute] The minimized vector. - - - Multiplies the components of two vectors by each other. - Source vector. - Source vector. - - - Multiplies a vector by a scalar value. - Source vector. - Scalar value. - - - Multiplies the components of two vectors by each other. - Source vector. - Source vector. - [OutAttribute] The result of the multiplication. - - - Multiplies a vector by a scalar value. - Source vector. - Scalar value. - [OutAttribute] The result of the multiplication. - - - Returns a vector pointing in the opposite direction. - Source vector. - - - Returns a vector pointing in the opposite direction. - Source vector. - [OutAttribute] Vector pointing in the opposite direction. - - - Turns the current vector into a unit vector. The result is a vector one unit in length pointing in the same direction as the original vector. - - - Creates a unit vector from the specified vector. The result is a vector one unit in length pointing in the same direction as the original vector. - The source Vector3. - - - Creates a unit vector from the specified vector, writing the result to a user-specified variable. The result is a vector one unit in length pointing in the same direction as the original vector. - Source vector. - [OutAttribute] The normalized vector. - - - Returns a Vector3 with ones in all of its components. - - - Adds two vectors. - Source vector. - Source vector. - - - Divides the components of a vector by the components of another vector. - Source vector. - Divisor vector. - - - Divides a vector by a scalar value. - Source vector. - The divisor. - - - Tests vectors for equality. - Source vector. - Source vector. - - - Tests vectors for inequality. - Vector to compare. - Vector to compare. - - - Multiplies the components of two vectors by each other. - Source vector. - Source vector. - - - Multiplies a vector by a scalar value. - Source vector. - Scalar value. - - - Multiplies a vector by a scalar value. - Scalar value. - Source vector. - - - Subtracts a vector from a vector. - Source vector. - Source vector. - - - Returns a vector pointing in the opposite direction. - Source vector. - - - Returns the reflection of a vector off a surface that has the specified normal. Reference page contains code sample. - Source vector. - Normal of the surface. - - - Returns the reflection of a vector off a surface that has the specified normal. Reference page contains code sample. - Source vector. - Normal of the surface. - [OutAttribute] The reflected vector. - - - Returns a unit Vector3 pointing to the right (1, 0, 0). - - - Interpolates between two values using a cubic equation. - Source value. - Source value. - Weighting value. - - - Interpolates between two values using a cubic equation. - Source vector. - Source vector. - Weighting value. - [OutAttribute] The interpolated value. - - - Subtracts a vector from a vector. - Source vector. - Source vector. - - - Subtracts a vector from a vector. - Source vector. - Source vector. - [OutAttribute] The result of the subtraction. - - - Retrieves a string representation of the current object. - - - Transforms a 3D vector by the given matrix. - The source vector. - The transformation matrix. - - - Transforms a Vector3 by a specified Quaternion rotation. - The Vector3 to rotate. - The Quaternion rotation to apply. - - - Transforms a Vector3 by the given Matrix. - The source Vector3. - The transformation Matrix. - [OutAttribute] The transformed vector. - - - Transforms a Vector3 by a specified Quaternion rotation. - The Vector3 to rotate. - The Quaternion rotation to apply. - [OutAttribute] An existing Vector3 filled in with the results of the rotation. - - - Transforms a source array of Vector3s by a specified Matrix and writes the results to an existing destination array. - The source array. - The transform Matrix to apply. - An existing destination array into which the transformed Vector3s are written. - - - Transforms a source array of Vector3s by a specified Quaternion rotation and writes the results to an existing destination array. - The source array. - The Quaternion rotation to apply. - An existing destination array into which the transformed Vector3s are written. - - - Applies a specified transform Matrix to a specified range of an array of Vector3s and writes the results into a specified range of a destination array. - The source array. - The index in the source array at which to start. - The transform Matrix to apply. - The existing destination array. - The index in the destination array at which to start. - The number of Vector3s to transform. - - - Applies a specified Quaternion rotation to a specified range of an array of Vector3s and writes the results into a specified range of a destination array. - The source array. - The index in the source array at which to start. - The Quaternion rotation to apply. - The existing destination array. - The index in the destination array at which to start. - The number of Vector3s to transform. - - - Transforms a 3D vector normal by a matrix. - The source vector. - The transformation matrix. - - - Transforms a vector normal by a matrix. - The source vector. - The transformation Matrix. - [OutAttribute] The Vector3 resulting from the transformation. - - - Transforms an array of 3D vector normals by a specified Matrix. - The array of Vector3 normals to transform. - The transform matrix to apply. - An existing Vector3 array into which the results of the transforms are written. - - - Transforms a specified range in an array of 3D vector normals by a specified Matrix and writes the results to a specified range in a destination array. - The source array of Vector3 normals. - The starting index in the source array. - The transform Matrix to apply. - The destination Vector3 array. - The starting index in the destination array. - The number of vectors to transform. - - - Returns the x unit Vector3 (1, 0, 0). - - - Returns the y unit Vector3 (0, 1, 0). - - - Returns the z unit Vector3 (0, 0, 1). - - - Returns a unit vector designating up (0, 1, 0). - - - Gets or sets the x-component of the vector. - - - Gets or sets the y-component of the vector. - - - Gets or sets the z-component of the vector. - - - Returns a Vector3 with all of its components set to zero. - - - Defines a vector with four components. - - - Initializes a new instance of Vector4. - A vector containing the values to initialize x and y components with. - Initial value for the z-component of the vector. - Initial value for the w-component of the vector. - - - Initializes a new instance of Vector4. - A vector containing the values to initialize x, y, and z components with. - Initial value for the w-component of the vector. - - - Creates a new instance of Vector4. - Value to initialize each component to. - - - Initializes a new instance of Vector4. - Initial value for the x-component of the vector. - Initial value for the y-component of the vector. - Initial value for the z-component of the vector. - Initial value for the w-component of the vector. - - - Adds two vectors. - Source vector. - Source vector. - - - Adds two vectors. - Source vector. - Source vector. - [OutAttribute] Sum of the source vectors. - - - Returns a Vector4 containing the 4D Cartesian coordinates of a point specified in barycentric (areal) coordinates relative to a 4D triangle. - A Vector4 containing the 4D Cartesian coordinates of vertex 1 of the triangle. - A Vector4 containing the 4D Cartesian coordinates of vertex 2 of the triangle. - A Vector4 containing the 4D Cartesian coordinates of vertex 3 of the triangle. - Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in value2). - Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in value3). - - - Returns a Vector4 containing the 4D Cartesian coordinates of a point specified in Barycentric (areal) coordinates relative to a 4D triangle. - A Vector4 containing the 4D Cartesian coordinates of vertex 1 of the triangle. - A Vector4 containing the 4D Cartesian coordinates of vertex 2 of the triangle. - A Vector4 containing the 4D Cartesian coordinates of vertex 3 of the triangle. - Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in value2). - Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in value3). - [OutAttribute] The 4D Cartesian coordinates of the specified point are placed in this Vector4 on exit. - - - Performs a Catmull-Rom interpolation using the specified positions. - The first position in the interpolation. - The second position in the interpolation. - The third position in the interpolation. - The fourth position in the interpolation. - Weighting factor. - - - Performs a Catmull-Rom interpolation using the specified positions. - The first position in the interpolation. - The second position in the interpolation. - The third position in the interpolation. - The fourth position in the interpolation. - Weighting factor. - [OutAttribute] A vector that is the result of the Catmull-Rom interpolation. - - - Restricts a value to be within a specified range. - The value to clamp. - The minimum value. - The maximum value. - - - Restricts a value to be within a specified range. - The value to clamp. - The minimum value. - The maximum value. - [OutAttribute] The clamped value. - - - Calculates the distance between two vectors. - Source vector. - Source vector. - - - Calculates the distance between two vectors. - Source vector. - Source vector. - [OutAttribute] The distance between the vectors. - - - Calculates the distance between two vectors squared. - Source vector. - Source vector. - - - Calculates the distance between two vectors squared. - Source vector. - Source vector. - [OutAttribute] The distance between the two vectors squared. - - - Divides the components of a vector by the components of another vector. - Source vector. - Divisor vector. - - - Divides a vector by a scalar value. - Source vector. - The divisor. - - - Divides the components of a vector by the components of another vector. - Source vector. - The divisor. - [OutAttribute] The result of the division. - - - Divides a vector by a scalar value. - Source vector. - The divisor. - [OutAttribute] The result of the division. - - - Calculates the dot product of two vectors. - Source vector. - Source vector. - - - Calculates the dot product of two vectors. - Source vector. - Source vector. - [OutAttribute] The dot product of the two vectors. - - - Determines whether the specified Object is equal to the Vector4. - The Vector4 to compare with the current Vector4. - - - Returns a value that indicates whether the current instance is equal to a specified object. - Object with which to make the comparison. - - - Gets the hash code of this object. - - - Performs a Hermite spline interpolation. - Source position vector. - Source tangent vector. - Source position vector. - Source tangent vector. - Weighting factor. - - - Performs a Hermite spline interpolation. - Source position vector. - Source tangent vector. - Source position vector. - Source tangent vector. - Weighting factor. - [OutAttribute] The result of the Hermite spline interpolation. - - - Calculates the length of the vector. - - - Calculates the length of the vector squared. - - - Performs a linear interpolation between two vectors. - Source vector. - Source vector. - Value between 0 and 1 indicating the weight of value2. - - - Performs a linear interpolation between two vectors. - Source vector. - Source vector. - Value between 0 and 1 indicating the weight of value2. - [OutAttribute] The result of the interpolation. - - - Returns a vector that contains the highest value from each matching pair of components. - Source vector. - Source vector. - - - Returns a vector that contains the highest value from each matching pair of components. - Source vector. - Source vector. - [OutAttribute] The maximized vector. - - - Returns a vector that contains the lowest value from each matching pair of components. - Source vector. - Source vector. - - - Returns a vector that contains the lowest value from each matching pair of components. - Source vector. - Source vector. - [OutAttribute] The minimized vector. - - - Multiplies the components of two vectors by each other. - Source vector. - Source vector. - - - Multiplies a vector by a scalar. - Source vector. - Scalar value. - - - Multiplies the components of two vectors by each other. - Source vector. - Source vector. - [OutAttribute] The result of the multiplication. - - - Multiplies a vector by a scalar value. - Source vector. - Scalar value. - [OutAttribute] The result of the multiplication. - - - Returns a vector pointing in the opposite direction. - Source vector. - - - Returns a vector pointing in the opposite direction. - Source vector. - [OutAttribute] Vector pointing in the opposite direction. - - - Turns the current vector into a unit vector. - - - Creates a unit vector from the specified vector. - The source Vector4. - - - Returns a normalized version of the specified vector. - Source vector. - [OutAttribute] The normalized vector. - - - Returns a Vector4 with all of its components set to one. - - - Adds two vectors. - Source vector. - Source vector. - - - Divides the components of a vector by the components of another vector. - Source vector. - Divisor vector. - - - Divides a vector by a scalar value. - Source vector. - The divisor. - - - Tests vectors for equality. - Source vector. - Source vector. - - - Tests vectors for inequality. - Vector to compare. - Vector to compare. - - - Multiplies the components of two vectors by each other. - Source vector. - Source vector. - - - Multiplies a vector by a scalar. - Source vector. - Scalar value. - - - Multiplies a vector by a scalar. - Scalar value. - Source vector. - - - Subtracts a vector from a vector. - Source vector. - Source vector. - - - Returns a vector pointing in the opposite direction. - Source vector. - - - Interpolates between two values using a cubic equation. - Source value. - Source value. - Weighting value. - - - Interpolates between two values using a cubic equation. - Source vector. - Source vector. - Weighting factor. - [OutAttribute] The interpolated value. - - - Subtracts a vector from a vector. - Source vector. - Source vector. - - - Subtracts a vector from a vector. - Source vector. - Source vector. - [OutAttribute] The result of the subtraction. - - - Retrieves a string representation of the current object. - - - Transforms a Vector2 by the given Matrix. - The source Vector2. - The transformation Matrix. - - - Transforms a Vector2 by a specified Quaternion into a Vector4. - The Vector2 to transform. - The Quaternion rotation to apply. - - - Transforms a Vector2 by the given Matrix. - The source Vector2. - The transformation Matrix. - [OutAttribute] The Vector4 resulting from the transformation. - - - Transforms a Vector2 by a specified Quaternion into a Vector4. - The Vector2 to transform. - The Quaternion rotation to apply. - [OutAttribute] The Vector4 resulting from the transformation. - - - Transforms a Vector3 by the given Matrix. - The source Vector3. - The transformation Matrix. - - - Transforms a Vector3 by a specified Quaternion into a Vector4. - The Vector3 to transform. - The Quaternion rotation to apply. - - - Transforms a Vector3 by the given Matrix. - The source Vector3. - The transformation Matrix. - [OutAttribute] The Vector4 resulting from the transformation. - - - Transforms a Vector3 by a specified Quaternion into a Vector4. - The Vector3 to transform. - The Quaternion rotation to apply. - [OutAttribute] The Vector4 resulting from the transformation. - - - Transforms a Vector4 by the specified Matrix. - The source Vector4. - The transformation Matrix. - - - Transforms a Vector4 by a specified Quaternion. - The Vector4 to transform. - The Quaternion rotation to apply. - - - Transforms a Vector4 by the given Matrix. - The source Vector4. - The transformation Matrix. - [OutAttribute] The Vector4 resulting from the transformation. - - - Transforms a Vector4 by a specified Quaternion. - The Vector4 to transform. - The Quaternion rotation to apply. - [OutAttribute] The Vector4 resulting from the transformation. - - - Transforms an array of Vector4s by a specified Matrix. - The array of Vector4s to transform. - The transform Matrix to apply. - The existing destination array into which the transformed Vector4s are written. - - - Transforms an array of Vector4s by a specified Quaternion. - The array of Vector4s to transform. - The Quaternion rotation to apply. - The existing destination array into which the transformed Vector4s are written. - - - Transforms a specified range in an array of Vector4s by a specified Matrix into a specified range in a destination array. - The array of Vector4s containing the range to transform. - The index in the source array of the first Vector4 to transform. - The transform Matrix to apply. - The existing destination array of Vector4s into which to write the results. - The index in the destination array of the first result Vector4 to write. - The number of Vector4s to transform. - - - Transforms a specified range in an array of Vector4s by a specified Quaternion into a specified range in a destination array. - The array of Vector4s containing the range to transform. - The index in the source array of the first Vector4 to transform. - The Quaternion rotation to apply. - The existing destination array of Vector4s into which to write the results. - The index in the destination array of the first result Vector4 to write. - The number of Vector4s to transform. - - - Returns the Vector4 (0, 0, 0, 1). - - - Returns the Vector4 (1, 0, 0, 0). - - - Returns the Vector4 (0, 1, 0, 0). - - - Returns the Vector4 (0, 0, 1, 0). - - - Gets or sets the w-component of the vector. - - - Gets or sets the x-component of the vector. - - - Gets or sets the y-component of the vector. - - - Gets or sets the z-component of the vector. - - - Returns a Vector4 with all of its components set to zero. - - - Defines the number of channels in the audio data. - - - Indicates audio data is contained in one channel. - - - Indicates audio data contains two channels. - - - Reference page contains links to related code samples. - - - Initializes a new instance of this class. - - - Gets or sets a scalar applied to the level of Doppler effect calculated between this and any AudioListener. - - - Gets or sets the forward orientation vector for this emitter. - - - Gets or sets the position of this emitter. Reference page contains links to related code samples. - - - Gets or sets the upward orientation vector for this emitter. - - - Gets or sets the velocity vector of this emitter. - - - Reference page contains links to related code samples. - - - Initializes a new instance of this class. - - - Gets or sets the forward orientation vector for this listener. - - - Gets or sets the position of this listener. Reference page contains links to related code samples. - - - Gets or sets the upward orientation vector for this listener. - - - Gets or sets the velocity vector of this listener. - - - Provides properties, methods, and events for play back of the audio buffer. - - - Initializes a new instance of this class, which creates a dynamic sound effect based on the specified sample rate and audio channel. - Sample rate, in Hertz (Hz), of audio content. - Number of channels in the audio data. - - - Event that occurs when the number of audio capture buffers awaiting playback is less than or equal to two. - - - - Returns the sample duration based on the specified size of the audio buffer. - Size, in bytes, of the audio data. - - - Returns the size of the audio buffer required to contain audio samples based on the specified duration. - TimeSpan object that contains the duration of the audio sample. - - - Indicates whether the audio playback of the DynamicSoundEffectInstance object is looped. - - - Returns the number of audio buffers in the queue awaiting playback. - - - Begins or resumes audio playback. - - - Submits an audio buffer for playback. Playback starts at the beginning, and the buffer is played in its entirety. Reference page contains links to related conceptual articles. - Buffer that contains the audio data. The audio format must be PCM wave data. - - - Submits an audio buffer for playback. Playback begins at the specifed offset, and the byte count determines the size of the sample played. Reference page contains links to related conceptual articles. - Buffer that contains the audio data. The audio format must be PCM wave data. - Offset, in bytes, to the starting position of the data. - Amount, in bytes, of data sent. - - - The exception that is thrown when there is an attempt to play more than the platform specific maximum SoundEffectInstance sounds concurrently. Reference page contains links to related conceptual articles. - - - Initializes a new instance of the InstancePlayLimitException class. - - - Initializes a new instance of the InstancePlayLimitException class with a specified error message. - A String that describes the error. The content of message is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. - - - Initializes a new instance of the InstancePlayLimitException class with a specified error message and a reference to the inner exception that is the cause of this exception. - Error message that explains the reason for the exception. - Exception that is the cause of the current exception. If innerException is not null, the current exception is raised in a catch block that handles the inner exception. - - - Provides properties, methods, and fields and events for capturing audio data with microphones. - - - Returns the collection of all currently-available microphones. - - - Gets or sets audio capture buffer duration of the microphone. - - - Event that occurs when the audio capture buffer is ready to processed. - - - - Returns the default attached microphone. - - - Gets the latest recorded data from the microphone based on the audio capture buffer. Reference page contains links to related conceptual articles. - Buffer, in bytes, containing the captured audio data. The audio format must be PCM wave data. - - - Gets the latest captured audio data from the microphone based on the specified offset and byte count. Reference page contains links to related conceptual articles. - Buffer, in bytes, containing the captured audio data. The audio format must be PCM wave data. - Offset, in bytes, to the starting position of the data. - Amount, in bytes, of desired audio data. - - - Returns the duration of audio playback based on the size of the buffer. - Size, in bytes, of the audio data. - - - Returns the size of the byte array required to hold the specified duration of audio for this microphone object. - TimeSpan object that contains the duration of the audio sample. - - - Determines if the microphone is a wired headset or a Bluetooth device. - - - Returns the friendly name of the microphone. - - - Returns the sample rate at which the microphone is capturing audio data. - - - Starts microphone audio capture. - - - Returns the recording state of the Microphone object. - - - Stops microphone audio capture. - - - Current state of the Microphone audio capture (started or stopped). - - - The Microphone audio capture has started. - - - The Microphone audio capture has stopped. - - - The exception that is thrown when no audio hardware is present, or when audio hardware is installed, but the device drivers for the audio hardware are not present or enabled. - - - Initializes a new instance of this class. - - - Initializes a new instance of this class with a specified error message. - A message that describes the error. - - - Initializes a new instance of this class with a specified error message and a reference to the inner exception that is the cause of this exception. - A message that describes the error. - The exception that is the cause of the current exception. If the inner parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception. - - - The exception that is thrown when Microphone API calls are made on a disconnected microphone. - - - Initializes a new instance of the NoMicrophoneConnectedException class. - - - Initializes a new instance of the NoMicrophoneConnectedException class with a specified error message. - A String that describes the error. The content of message is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. - - - Initializes a new instance of the NoMicrophoneConnectedException class with a specified error message and a reference to the inner exception that is the cause of this exception. - A String that describes the error. The content of message is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. - Exception that is the cause of the current exception. If innerException is not null, the current exception is raised in a catch block that handles the inner exception. - - - Reference page contains links to related code samples. - - - Initializes a new instance of SoundEffect based on an audio buffer, sample rate, and number of audio channels. Reference page contains links to related conceptual articles. - Buffer that contains the audio data. The audio format must be PCM wave data. - Sample rate, in Hertz (Hz), of audio data. - Number of channels (mono or stereo) of audio data. - - - Initializes a new instance of SoundEffect with specified parameters such as audio sample rate, channels, looping criteria, and a buffer to hold the audio. Reference page contains links to related conceptual articles. - Buffer that contains the audio data. The audio format must be PCM wave data. - Offset, in bytes, to the starting position of the audio data. - Amount, in bytes, of audio data. - Sample rate, in Hertz (Hz), of audio data. - Number of channels (mono or stereo) of audio data. - Loop start in samples. - Loop length in samples. - - - Creates a new SoundEffectInstance for this SoundEffect. Reference page contains links to related code samples. - - - Releases the resources used by the SoundEffect. - - - Gets or sets a value that adjusts the effect of distance calculations on the sound (emitter). - - - Gets or sets a value that adjusts the effect of doppler calculations on the sound (emitter). - - - Gets the duration of the SoundEffect. - - - Creates a SoundEffect object based on the specified data stream. - Stream object that contains the data for this SoundEffect object. - - - Returns the sample duration based on the specified sample size and sample rate. - Size, in bytes, of audio data. - Sample rate, in Hertz (Hz), of audio content. The sampleRate must be between 8000 Hz and 48000 Hz. - Number of channels in the audio data. - - - Returns the size of the audio sample based on duration, sample rate, and audio channels. - TimeSpan object that contains the sample duration. - Sample rate, in Hertz (Hz), of audio content. The sampleRate parameter must be between 8,000 Hz and 48,000 Hz. - Number of channels in the audio data. - - - Gets a value that indicates whether the object is disposed. - - - Gets or sets the master volume that affects all SoundEffectInstance sounds. - - - Gets or sets the asset name of the SoundEffect. - - - Plays a sound. Reference page contains links to related code samples. - - - Plays a sound based on specified volume, pitch, and panning. Reference page contains links to related code samples. - Volume, ranging from 0.0f (silence) to 1.0f (full volume). 1.0f is full volume relative to SoundEffect.MasterVolume. - Pitch adjustment, ranging from -1.0f (down one octave) to 1.0f (up one octave). 0.0f is unity (normal) pitch. - Panning, ranging from -1.0f (full left) to 1.0f (full right). 0.0f is centered. - - - Returns the speed of sound: 343.5 meters per second. - - - Provides a single playing, paused, or stopped instance of a SoundEffect sound. - - - Applies 3D positioning to the sound using a single listener. Reference page contains links to related code samples. - Position of the listener. - Position of the emitter. - - - Applies 3D position to the sound using multiple listeners. Reference page contains links to related code samples. - Positions of each listener. - Position of the emitter. - - - Releases unmanaged resources held by this SoundEffectInstance. - - - Releases the unmanaged resources held by this SoundEffectInstance, and optionally releases the managed resources. - Pass true to release both the managed and unmanaged resources for this SoundEffectInstance. Passing false releases only the unmanaged resources. - - - Releases unmanaged resources and performs other cleanup operations before the SoundEffectInstance is reclaimed by garbage collection. - - - Gets a value that indicates whether the object is disposed. - - - Gets a value that indicates whether looping is enabled for the SoundEffectInstance. Reference page contains links to related code samples. - - - Gets or sets the panning for the SoundEffectInstance. - - - Pauses a SoundEffectInstance. - - - Gets or sets the pitch adjustment for the SoundEffectInstance. Reference page contains links to related code samples. - - - Plays or resumes a SoundEffectInstance. - - - Resumes playback for a SoundEffectInstance. - - - Gets the current state (playing, paused, or stopped) of the SoundEffectInstance. - - - Immediately stops playing a SoundEffectInstance. - - - Stops playing a SoundEffectInstance, either immediately or as authored. - Whether to stop playing immediately, or to break out of the loop region and play the release. Specify true to stop playing immediately, or false to break out of the loop region and play the release phase (the remainder of the sound). - - - Gets or sets the volume of the SoundEffectInstance. Reference page contains links to related code samples. - - - Current state (playing, paused, or stopped) of a SoundEffectInstance. - - - The SoundEffectInstance is paused. - - - The SoundEffectInstance is playing. - - - The SoundEffectInstance is stopped. - - - Exception used to report errors from the ContentManager.Load method. - - - Creates a new instance of ContentLoadException. - - - Creates a new instance of ContentLoadException. - Describes the value types that were being loaded when the exception occurred. - Describes the stream where the exception occurred. - - - Creates a new instance of ContentLoadException. - A message that describes the error. - - - Creates a new instance of ContentLoadException. - A message that describes the error. - The exception that is the cause of the current exception. If the innerException parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception. - - - The ContentManager is the run-time component which loads managed objects from the binary files produced by the design time content pipeline. It also manages the lifespan of the loaded objects, disposing the content manager will also dispose any assets which are themselves IDisposable. - - - Initializes a new instance of ContentManager. Reference page contains code sample. - The service provider that the ContentManager should use to locate services. - - - Initializes a new instance of ContentManager. Reference page contains code sample. - The service provider the ContentManager should use to locate services. - The root directory to search for content. - - - Releases all resources used by the ContentManager class. - - - Releases the unmanaged resources used by the ContentManager and optionally releases the managed resources. - true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - Loads an asset that has been processed by the Content Pipeline. Reference page contains code sample. - Asset name, relative to the loader root directory, and not including the .xnb extension. - - - Opens a stream for reading the specified asset. Derived classes can replace this to implement pack files or asset compression. - The name of the asset being read. - - - Low-level worker method that reads asset data. - The name of the asset to be loaded from disk. - Delegate function for handling the disposition of assets. If recordDisposableObject is null, the default lifespan tracking and management is used, so unloading or disposing of the content manager frees everything that has been loaded through it. If recordDisposableObject specifies a valid delegate, that delegate is used instead of the default lifespan tracking and is called every time the loader encounters a type that implements IDisposable. You must use your own code to unload assets loaded in this fashion, since ContentManager's Unload method will not be aware of them. - - - Gets or sets the root directory associated with this ContentManager. - - - Gets the service provider associated with the ContentManager. - - - Disposes all data that was loaded by this ContentManager. - - - A worker object that implements most of ContentManager.Load. A new ContentReader is constructed for each asset loaded. - - - Gets the name of the asset currently being read by this ContentReader. - - - Gets the ContentManager associated with the ContentReader. - - - Reads a Color value from the currently open stream. - - - Reads a double value from the currently open stream. - - - Reads a link to an external file. - - - Reads a Matrix value from the currently open stream. - - - Reads a single managed object from the current stream. Can be called recursively. - - - Reads a single managed object from the current stream. Can be called recursively. - The ContentTypeReader to use to read the object. - - - Reads a single managed object from the current stream. Can be called recursively. - The ContentTypeReader to use to read the object. - An existing object to write into. - - - Reads a single managed object from the current stream. Can be called recursively. - An existing object to write into. - - - Reads a Quaternion value from the current stream. - - - Reads a single managed object from the current stream as an instance of the specified type. If you specify a base class of the actual object type, this method reads data only from the base type. - - - Reads a single managed object from the current stream as an instance of the specified type. If a base class of the actual object type is specified only data from the base type will be read. - The ContentTypeReader to use to read the object. - - - Reads a single managed object from the current stream as an instance of the specified type. If you specify a base class of the actual object type, this method reads data only from the base type. - The ContentTypeReader to use to read the object. - An existing object to write into. - - - Reads a single managed object from the current stream as an instance of the specified type. If you specify a base class of the actual object type, the method reads data only from the base type. - An existing object to write into. - - - Reads a shared resource ID, and records it for subsequent fix-up. - The fix-up action to perform. - - - Reads a float value from the currently open stream. - - - Reads a Vector2 value from the current stream. - - - Reads a Vector3 value from the current stream. - - - Reads a Vector4 value from the current stream. - - - A custom Attribute that marks a field or property to control how it is serialized or to indicate that protected or private data should be included in serialization. - - - Creates a new instance of ContentSerializerAttribute. Reference page contains code sample. - - - Get or set a value indicating whether this member can have a null value (default=true). Reference page contains code sample. - - - Creates a copy of the ContentSerializerAttribute. - - - Gets or sets the XML element name for each item in a collection (default = "Item"). Reference page contains code sample. - - - Gets or sets the XML element name (default=name of the managed type member). Reference page contains code sample. - - - Gets or sets a value idicating whether to write member contents directly into the current XML context rather than wrapping the member in a new XML element (default=false). Reference page contains code sample. - - - Indicates whether an explicit CollectionItemName string is being used or the default value. Reference page contains code sample. - - - Indicates whether to write this element if the member is null and skip past it if not found when deserializing XML (default=false). Reference page contains code sample. - - - Indicates whether this member is referenced from multiple parents and should be serialized as a unique ID reference (default=false). Reference page contains code sample. - - - A custom Attribute that marks a collection class to specify the XML element name for each item in the collection. - - - Creates a new instance of ContentSerializerCollectionItemNameAttribute. Reference page contains code sample. - The name for each item in the collection. - - - Gets the name that will be used for each item in the collection. - - - A custom Attribute that marks public fields or properties to prevent them from being serialized. - - - Creates a new instance of ContentSerializerIgnoreAttribute. Reference page contains code sample. - - - - - - Creates a new instance of ContentSerializerRuntimeTypeAttribute. - The run-time type name of the object. - - - Gets the run-time type for the object. - - - - - - Creates a new instance of ContentSerializerTypeVersionAttribute. - The run-time type version of the object. - - - Gets the run-time type version for the object. - - - Worker for reading a specific managed type from a binary format. - - - Creates a new instance of ContentTypeReader. - The type handled by this reader component. - - - Determines if deserialization into an existing object is possible. - - - Retrieves and caches nested type readers. Called by the framework at creation time. - The content manager. - - - Reads a strongly typed object from the current stream. - The ContentReader used to read the object. - The object receiving the data, or null if a new instance of the object should be created. - - - Gets the type handled by this reader component. - - - Gets a format version number for this type. - - - Worker for reading a specific managed type from a binary format. Derive from this class to add new data types to the content pipeline system. - - - Creates a new instance of ContentTypeReader. - - - Reads an object from the current stream. - The ContentReader used to read the object. - An existing object to read into. - - - Reads a strongly typed object from the current stream. - The ContentReader used to read the object. - An existing object to read into. - - - A manager that constructs and keeps track of type reader objects. - - - Looks up a reader for the specified type. - The type the reader will handle. - - - Subclass of ContentManager, which is specialized to read from .resx resource files rather than directly from individual files on disk. - - - Creates a new instance of ResourceContentManager. - The service provider the ContentManager should use to locate services. - The resource manager for the ResourceContentManager to read from. - - - Opens a stream for reading the specified resource. Derived classes can replace this to implement pack files or asset compression. - The name of the asset being read. - - - Provides a unified way of converting BoundingBox values to other types, as well as for accessing standard values and subproperties. - - - Initializes a new instance of the BoundingBoxConverter class. - - - Converts the given object to the type of this converter, using the specified context and culture information. - The format context. - The current culture. - The object to convert. - - - Converts the given value object to the specified type, using the specified context and culture information. - The format context. - The culture to use in the conversion. - The object to convert. - The destination type. - - - Creates an instance of the type that this BoundingBoxConverter is associated with, using the specified context, given a set of property values for the object. - The format context. - The new property values. - - - Provides a unified way of converting BoundingSphere values to other types, as well as for accessing standard values and subproperties. - - - Initializes a new instance of the BoundingSphereConverter class. - - - Converts the given object to the type of this converter, using the specified context and culture information. - The format context. - The current culture. - The object to convert. - - - Converts the given value object to the specified type, using the specified context and culture information. - The format context. - The culture to use in the conversion. - The object to convert. - The destination type. - - - Creates an instance of the type that this BoundingSphereConverter is associated with, using the specified context, given a set of property values for the object. - The format context. - The new property values. - - - Provides a unified way of converting Color values to other types, as well as for accessing standard values and subproperties. - - - Initializes a new instance of the ColorConverter class. - - - Converts the given value to the type of this converter. - The format context. - The current culture. - The object to convert. - - - Converts the given value object to the specified type, using the specified context and culture information. - The format context. - The culture to use in the conversion. - The object to convert. - The destination type. - - - Re-creates an object given a set of property values for the object. - The format context. - The new property values. - - - Provides a unified way of converting math type values to other types, as well as for accessing standard values and subproperties. - - - Initializes a new instance of the MathTypeConverter class. - - - Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context. - The format context. - The type you want to convert from. - - - Returns whether this converter can convert an object of one type to the type of this converter. - The format context. - The destination type. - - - Returns whether changing a value on this object requires a call to CreateInstance to create a new value, using the specified context. - The format context. - - - Returns a collection of properties for the type of array specified by the value parameter. - The format context. - The type of array for which to get properties. - An array to use as a filter. - - - Returns whether this object supports properties, using the specified context. - The format context. - - - Represents a collection of PropertyDescriptor objects. - - - Returns whether string conversion is supported. - - - Provides a unified way of converting Matrix values to other types, as well as for accessing standard values and subproperties. - - - Initializes a new instance of the MatrixConverter class. - - - Converts the given value object to the specified type, using the specified context and culture information. - The format context. - The culture to use in the conversion. - The object to convert. - The destination type. - - - Creates an instance of the type that this MatrixConverter is associated with, using the specified context, given a set of property values for the object. - The format context. - The new property values. - - - Provides a unified way of converting Plane values to other types, as well as for accessing standard values and subproperties. - - - Initializes a new instance of the PlaneConverter class. - - - Converts the given value object to the specified type, using the specified context and culture information. - The format context. - The culture to use in the conversion. - The object to convert. - The destination type. - - - Creates an instance of the type that this PlaneConverter is associated with, using the specified context, given a set of property values for the object. - The format context. - The new property values. - - - Provides a unified way of converting Point values to other types, as well as for accessing standard values and subproperties. - - - Initializes a new instance of the PointConverter class. - - - Converts the given object to the type of this converter, using the specified context and culture information. - The format context. - The current culture. - The object to convert. - - - Converts the given value object to the specified type, using the specified context and culture information. - The format context. - The culture to use in the conversion. - The object to convert. - The destination type. - - - Creates an instance of the type that this PointConverter is associated with, using the specified context, given a set of property values for the object. - The format context. - The new property values. - - - Provides a unified way of converting Quaternion values to other types, as well as for accessing standard values and subproperties. - - - Initializes a new instance of the QuaternionConverter class. - - - Converts the given object to the type of this converter, using the specified context and culture information. - The format context. - The current culture. - The object to convert. - - - Converts the given value object to the specified type, using the specified context and culture information. - The format context. - The culture to use in the conversion. - The object to convert. - The destination type. - - - Creates an instance of the type that this QuaternionConverter is associated with, using the specified context, given a set of property values for the object. - The format context. - The new property values. - - - Provides a unified way of converting Ray values to other types, as well as for accessing standard values and subproperties. - - - Initializes a new instance of the RayConverter class. - - - Converts the given object to the type of this converter, using the specified context and culture information. - The format context. - The current culture. - The object to convert. - - - Converts the given value object to the specified type, using the specified context and culture information. - The format context. - The culture to use in the conversion. - The object to convert. - The destination type. - - - Creates an instance of the type that this RayConverter is associated with, using the specified context, given a set of property values for the object. - The format context. - The new property values. - - - Provides a unified way of converting Rectangle values to other types, as well as for accessing standard values and subproperties. - - - Initializes a new instance of the RectangleConverter class. - - - Converts the given value object to the specified type, using the specified context and culture information. - The format context. - The culture to use in the conversion. - The object to convert. - The destination type. - - - Creates an instance of the type that this RectangleConverter is associated with, using the specified context, given a set of property values for the object. - The format context. - The new property values. - - - Provides a unified way of converting Vector2 values to other types, as well as for accessing standard values and subproperties. - - - Initializes a new instance of the Vector2Converter class. - - - Converts the given object to the type of this converter, using the specified context and culture information. - The format context. - The current culture. - The object to convert. - - - Converts the given value object to the specified type, using the specified context and culture information. - The format context. - The culture to use in the conversion. - The object to convert. - The destination type. - - - Creates an instance of the type that this Vector2Converter is associated with, using the specified context, given a set of property values for the object. - The format context. - The new property values. - - - Provides a unified way of converting Vector3 values to other types, as well as for accessing standard values and subproperties. - - - Initializes a new instance of the Vector3Converter class. - - - Converts the given object to the type of this converter, using the specified context and culture information. - The format context. - The current culture. - The object to convert. - - - Converts the given value object to the specified type, using the specified context and culture information. - The format context. - The culture to use in the conversion. - The object to convert. - The destination type. - - - Creates an instance of the type that this Vector3Converter is associated with, using the specified context, given a set of property values for the object. - The format context. - The new property values. - - - Provides a unified way of converting Vector4 values to other types, as well as for accessing standard values and subproperties. - - - Initializes a new instance of the Vector4Converter class. - - - Converts the given object to the type of this converter, using the specified context and culture information. - The format context. - The current culture. - The object to convert. - - - Converts the given value object to the specified type, using the specified context and culture information. - The format context. - The culture to use in the conversion. - The object to convert. - The destination type. - - - Creates an instance of the type that this Vector4Converter is associated with, using the specified context, given a set of property values for the object. - The format context. - The new property values. - - - Packed vector type containing a single 8 bit normalized W value in the range of 0 to 1. - - - Initializes a new instance of the Alpha8 structure. - The initial value for the Alpha8 structure. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Gets the hash code for the current instance. - - - Sets the packed representation from a Vector4. - The vector to create the packed representaion from. - - - Expands the packed representation into a Vector4. - - - Compares the current instance of a class to another instance to determine whether they are the same. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Compares the current instance of a class to another instance to determine whether they are different. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Directly gets or sets the packed representation of the value. - - - Expands the packed representation to a System.Single. - - - Returns a string representation of the current instance. - - - Packed vector type containing unsigned normalized values ranging from 0 to 1. The x and z components use 5 bits, and the y component uses 6 bits. - - - Initializes a new instance of the Bgr565 structure. - A vector containing the initial values for the components of the Bgr565 structure. - - - Initializes a new instance of the Bgr565 class. - Initial value for the x component. - Initial value for the y component. - Initial value for the z component. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Gets the hash code for the current instance. - - - Sets the packed representation from a Vector4. - The vector to create the packed representation from. - - - Expands the packed representation into a Vector4. - - - Compares the current instance of a class to another instance to determine whether they are the same. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Compares the current instance of a class to another instance to determine whether they are different. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Directly gets or sets the packed representation of the value. - - - Returns a string representation of the current instance. - - - Expands the packed representation into a Vector3. - - - Packed vector type containing unsigned normalized values, ranging from 0 to 1, using 4 bits each for x, y, z, and w. - - - Creates an instance of this object. - Input value for all four components (xyzw). - - - Creates an instance of this object. - Initial value for the x component. - Initial value for the y component. - Initial value for the z component. - Initial value for the w component. - - - Tests an object to see if it is equal to this object. - The object to test. - - - Tests an object to see if it is equal to this object. - The object to test. - - - Gets the hash code for this object. - - - Converts a four-component vector into the format for this object. - The four-component vector. - - - Equality operator, which compares two objects to see if they are equal. - The first object. - The second object. - - - Tests two objects to see if they are not equal. - The first object. - The second object. - - - Gets or sets the packed representation of the vector. - - - Returns a string representation. - - - Unpacks this object to a four-component vector. - - - Packed vector type containing unsigned normalized values, ranging from 0 to 1, using 5 bits each for x, y, and z, and 1 bit for w. - - - Initializes a new instance of the Bgra5551 structure. - A vector containing the initial values for the components of the Bgra5551 structure. - - - Initializes a new instance of the Bgra5551 class. - Initial value for the x component. - Initial value for the y component. - Initial value for the z component. - Initial value for the w component. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Gets the hash code for the current instance. - - - Sets the packed representation from a Vector4. - The vector to create the packed representation from. - - - Compares the current instance of a class to another instance to determine whether they are the same. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Compares the current instance of a class to another instance to determine whether they are different. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Directly gets or sets the packed representation of the value. - - - Returns a string representation of the current instance. - - - Expands the packed representation into a Vector4. - - - Packed vector type containing four 8-bit unsigned integer values, ranging from 0 to 255. - - - Initializes a new instance of the Byte4 structure. - A vector containing the initial values for the components of the Byte4 structure. - - - Initializes a new instance of the Byte4 class. - Initial value for the x component. - Initial value for the y component. - Initial value for the z component. - Initial value for the w component. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Gets the hash code for the current instance. - - - Sets the packed representation from a Vector4 - The vector to create packed representation from. - - - Compares the current instance of a class to another instance to determine whether they are the same. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Compares the current instance of a class to another instance to determine whether they are different. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Directly gets or sets the packed representation of the value. - - - Returns a string representation of the current instance. - - - Expands the packed representation into a Vector4. - - - Packed vector type containing a single 16 bit floating point value. - - - Initializes a new instance of the HalfSingle structure. - The initial value of the HalfSingle structure. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Gets the hash code for the current instance. - - - Sets the packed representation from a Vector4. - The vector to create the packed representation from. - - - Expands the packed representation into a Vector4. - - - Compares the current instance of a class to another instance to determine whether they are the same. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Compares the current instance of a class to another instance to determine whether they are different. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Directly gets or sets the packed representation of the value. - - - Expands the HalfSingle to a Single. - - - Returns a string representation of the current instance. - - - Packed vector type containing two 16-bit floating-point values. - - - Initializes a new instance of the HalfVector2 structure. - A vector containing the initial values for the components of the HalfVector2 structure. - - - Initializes a new instance of the HalfVector2 structure. - Initial value for the x component. - Initial value for the y component. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Gets the hash code for the current instance. - - - Sets the packed representation from a Vector4. - The vector to create the packed representation from. - - - Expands the packed representation into a Vector4. - - - Compares the current instance of a class to another instance to determine whether they are the same. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Compares the current instance of a class to another instance to determine whether they are different. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Directly gets or sets the packed representation of the value. - - - Returns a string representation of the current instance. - - - Expands the HalfVector2 to a Vector2. - - - Packed vector type containing four 16-bit floating-point values. - - - Initializes a new instance of the HalfVector4 structure. - A vector containing the initial values for the components of the HalfVector4 structure. - - - Initializes a new instance of the HalfVector4 class. - Initial value for the x component. - Initial value for the y component. - Initial value for the z component. - Initial value for the w component. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Gets the hash code for the current instance. - - - Sets the packed representation from a Vector4. - The vector to create the packed representation from. - - - Compares the current instance of a class to another instance to determine whether they are the same. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Compares the current instance of a class to another instance to determine whether they are different. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Directly gets or sets the packed representation of the value. - - - Returns a string representation of the current instance. - - - Expands the packed representation into a Vector4. - - - Interface that converts packed vector types to and from Vector4 values, allowing multiple encodings to be manipulated in a generic way. - - - Sets the packed representation from a Vector4. - The vector to create the packed representation from. - - - Expands the packed representation into a Vector4. - - - Converts packed vector types to and from Vector4 values. - - - Directly gets or sets the packed representation of the value. - - - Packed vector type containing two 8-bit signed normalized values, ranging from −1 to 1. - - - Initializes a new instance of the NormalizedByte2 structure. - A vector containing the initial values for the components of the NormalizedByte2 structure. - - - Initializes a new instance of the NormalizedByte2 class. - Initial value for the x component. - Initial value for the y component. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Gets the hash code for the current instance. - - - Sets the packed representation from a Vector4. - The vector to create the packed representation from. - - - Expands the packed representation into a Vector4. - - - Compares the current instance of a class to another instance to determine whether they are the same. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Compares the current instance of a class to another instance to determine whether they are different. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Directly gets or sets the packed representation of the value. - - - Returns a string representation of the current instance. - - - Expands the packed representation to a vector. - - - Packed vector type containing four 8-bit signed normalized values, ranging from −1 to 1. - - - Initializes a new instance of the NormalizedByte4 structure. - A vector containing the initial values for the components of the NormalizedByte4 structure. - - - Initializes a new instance of the NormalizedByte4 class. - Initial value for the x component. - Initial value for the y component. - Initial value for the z component. - Initial value for the w component. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Gets the hash code for the current instance. - - - Sets the packed representation from a Vector4. - The vector to create the packed representation from. - - - Compares the current instance of a class to another instance to determine whether they are the same. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Compares the current instance of a class to another instance to determine whether they are different. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Directly gets or sets the packed representation of the value. - - - Returns a string representation of the current instance. - - - Expands the packed representation into a Vector4. - - - Packed vector type containing two 16-bit signed normalized values, ranging from −1 to 1. - - - Initializes a new instance of the NormalizedShort2 structure. - A vector containing the initial values for the components of the NormalizedShort2 structure. - - - Initializes a new instance of the NormalizedShort2 class. - Initial value for the x component. - Initial value for the y component. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Gets the hash code for the current instance. - - - Sets the packed representation from a Vector4. - The vector to create the packed representation from. - - - Expands the packed representation into a Vector4. - - - Compares the current instance of a class to another instance to determine whether they are the same. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Compares the current instance of a class to another instance to determine whether they are different. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Directly gets or sets the packed representation of the value. - - - Returns a string representation of the current instance. - - - Expands the packed representation to a vector. - - - Packed vector type containing four 16-bit signed normalized values, ranging from −1 to 1. - - - Initializes a new instance of the NormalizedShort4 structure. - A vector containing the initial values for the components of the NormalizedShort4 structure. - - - Initializes a new instance of the NormalizedShort4 class. - Initial value for the x component. - Initial value for the y component. - Initial value for the z component. - Initial value for the w component. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Gets the hash code for the current instance. - - - Sets the packed representation from a Vector4. - The vector to create the packed representation from. - - - Compares the current instance of a class to another instance to determine whether they are the same. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Compares the current instance of a class to another instance to determine whether they are different. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Directly gets or sets the packed representation of the value. - - - Returns a string representation of the current instance. - - - Expands the packed representation into a Vector4. - - - Packed vector type containing two 16-bit unsigned normalized values, ranging from 0 to 1. - - - Initializes a new instance of the Rg32 structure. - The vector containing the initial values for the components of the Rg32 structure. - - - Initializes a new instance of the Rg32 structure. - Initial value for the x component. - Initial value for the y component. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Gets the hash code for the current instance. - - - Sets the packed representation from a Vector4 - The vector to create packed representation from. - - - Expands the packed representation into a Vector4. - - - Compares the current instance of a class to another instance to determine whether they are the same. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Compares the current instance of a class to another instance to determine whether they are different. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Directly gets or sets the packed representation of the value. - - - Returns a string representation of the current instance. - - - Expands the packed vector representation into a Vector2. - - - Packed vector type containing unsigned normalized values, ranging from 0 to 1, using 10 bits each for x, y, and z, and 2 bits for w. - - - Initializes a new instance of the Rgba1010102 structure. - A vector containing the initial values for the components of the Rgba1010102 structure. - - - Initializes a new instance of the Rgba1010102 class. - Initial value for the x component. - Initial value for the y component. - Initial value for the z component. - Initial value for the w component. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Gets the hash code for the current instance. - - - Sets the packed representation from a Vector4 - The vector to create the packed representation from. - - - Compares the current instance of a class to another instance to determine whether they are the same. - The object to the left of the equality operator. - The object to the left of the equality operator. - - - Compares the current instance of a class to another instance to determine whether they are different. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Directly gets or sets the packed representation of the value. - - - Returns a string representation of the current instance. - - - Expands the packed representation into a Vector4. - - - Packed vector type containing four 16-bit unsigned normalized values, ranging from 0 to 1. - - - Initializes a new instance of the Rgba64 structure. - A vector containing the initial values for the components of the Rgba64 structure. - - - Initializes a new instance of the Rgba64 structure. - Initial value for the x component. - Initial value for the y component. - Initial value for the z component. - Initial value for the w component. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Gets the hash code for the current instance. - - - Sets the packed representation from a Vector4. - The vector to create the packed representation from. - - - Compares the current instance of a class to another instance to determine whether they are the same. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Compares the current instance of a class to another instance to determine whether they are different. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Directly gets or sets the packed representation of the value. - - - Returns a string representation of the current instance. - - - Expands the packed representation into a Vector4. - - - Packed vector type containing two 16-bit signed integer values. - - - Initializes a new instance of the Short2 structure. - A vector containing the initial values for the components of the Short2 structure. - - - Initializes a new instance of the Short2 class. - Initial value for the x component. - Initial value for the y component. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Gets the hash code for the current instance. - - - Sets the packed representation from a Vector4. - The vector to create the packed representation from. - - - Expands the packed representation into a Vector4. - - - Compares the current instance of a class to another instance to determine whether they are the same. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Compares the current instance of a class to another instance to determine whether they are different. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Directly gets or sets the packed representation of the value. - - - Returns a string representation of the current instance. - - - Expands the packed representation to a vector. - - - Packed vector type containing four 16-bit signed integer values. - - - Initializes a new instance of the Short4 structure. - A vector containing the initial values for the components of the Short4 structure. - - - Initializes a new instance of the Short4 class. - Initial value for the x component. - Initial value for the y component. - Initial value for the z component. - Initial value for the w component. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Returns a value that indicates whether the current instance is equal to a specified object. - The object with which to make the comparison. - - - Gets the hash code for the current instance. - - - Sets the packed representation from a Vector4. - The vector to create the packed representation from. - - - Compares the current instance of a class to another instance to determine whether they are the same. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Compares the current instance of a class to another instance to determine whether they are different. - The object to the left of the equality operator. - The object to the right of the equality operator. - - - Directly gets or sets the packed representation of the value. - - - Returns a string representation of the current instance. - - - Expands the packed representation into a Vector4. - - - Enumerates input device buttons. - - - A button - - - B button - - - BACK button - - - Big button - - - Directional pad up - - - Directional pad left - - - Directional pad right - - - Directional pad down - - - Left bumper (shoulder) button - - - Left stick button (pressing the left stick) - - - Left stick is toward down - - - Left stick is toward the left - - - Left stick is toward the right - - - Left stick is toward up - - - Left trigger - - - Right bumper (shoulder) button - - - Right stick button (pressing the right stick) - - - Right stick is toward down - - - Right stick is toward the left - - - Right stick is toward the right - - - Right stick is toward up - - - Right trigger - - - START button - - - X button - - - Y button - - - Identifies the state of a controller button. - - - The button is pressed. - - - The button is released. - - - Allows retrieval of user interaction with an Xbox 360 Controller and setting of controller vibration motors. Reference page contains links to related code samples. - - - Retrieves the capabilities of an Xbox 360 Controller. - Index of the controller to query. - - - Gets the current state of a game pad controller. Reference page contains links to related code samples. - Player index for the controller you want to query. - - - Gets the current state of a game pad controller, using a specified dead zone on analog stick positions. Reference page contains links to related code samples. - Player index for the controller you want to query. - Enumerated value that specifies what dead zone type to use. - - - Sets the vibration motor speeds on an Xbox 360 Controller. Reference page contains links to related code samples. - Player index that identifies the controller to set. - The speed of the left motor, between 0.0 and 1.0. This motor is a low-frequency motor. - The speed of the right motor, between 0.0 and 1.0. This motor is a high-frequency motor. - - - Identifies whether buttons on an Xbox 360 Controller are pressed or released. Reference page contains links to related code samples. - - - Initializes a new instance of the GamePadButtons class, setting the specified buttons to pressed in. - Buttons to initialize as pressed. Specify a single button or combine multiple buttons using a bitwise OR operation. - - - Identifies if the A button on the Xbox 360 Controller is pressed. - - - Identifies if the B button on the Xbox 360 Controller is pressed. - - - Identifies if the BACK button on the Xbox 360 Controller is pressed. - - - Identifies if the BigButton button is pressed. - - - Returns a value that indicates if the current instance is equal to a specified object. - The object with which to make the comparison. - - - Gets the hash code for this instance. - - - Identifies if the left shoulder (bumper) button on the Xbox 360 Controller is pressed. - - - Identifies if the left stick button on the Xbox 360 Controller is pressed (the stick is "clicked" in). - - - Indicates if the two GamePadButton objects are equal. - The GamePadButtons instance on the left side of the equality. - The GamePadButtons instance on the right side of the equality. - - - Determines whether two GamePadButtons instances are not equal. - Object on the left of the equal sign. - Object on the right of the equal sign. - - - Identifies if the right shoulder (bumper) button on the Xbox 360 Controller is pressed. - - - Identifies if the right stick button on the Xbox 360 Controller is pressed (the stick is "clicked" in). - - - Identifies if the START button on the Xbox 360 Controller is pressed. - - - Retrieves a string representation of this object. - - - Identifies if the X button on the Xbox 360 Controller is pressed. - - - Identifies if the Y button on the Xbox 360 Controller is pressed. - - - Describes the capabilities of an Xbox 360 Controller, including controller type, and identifies if the controller supports voice. - - - Gets the type of controller. - - - Indicates whether the controller has an A button. - - - Indicates whether the controller has a BACK button. - - - Indicates whether the controller has a B button. - - - Indicates whether the controller has a BigButton button. - - - Indicates whether the controller has a directional pad DOWN button. - - - Indicates whether the controller has a directional pad LEFT button. - - - Indicates whether the controller has a directional pad RIGHT button. - - - Indicates whether the controller has a directional pad UP button. - - - Indicates whether the controller has a left bumper button. - - - Indicates whether the controller has a digital button control on the left analog stick. - - - Indicates whether the controller has a left analog trigger. - - - Indicates whether the controller has a low-frequency vibration motor. - - - Indicates whether the controller supports a left analog control with horizontal movement. - - - Indicates whether the controller supports a left analog control with vertical movement. - - - Indicates whether the controller has a right bumper button. - - - Indicates whether the controller has a digital button control on the right analog stick. - - - Indicates whether the controller has a right analog trigger. - - - Indicates whether the controller has a high-frequency vibration motor. - - - Indicates whether the controller supports a right analog control with horizontal movement. - - - Indicates whether the controller supports a right analog control with vertical movement. - - - Indicates whether the controller has a START button. - - - Indicates whether the controller supports voice. - - - Indicates whether the controller has an X button. - - - Indicates whether the controller has a Y button. - - - Indicates whether the Xbox 360 Controller is connected. - - - Specifies a type of dead zone processing to apply to Xbox 360 Controller analog sticks when calling GetState. - - - The combined X and Y position of each stick is compared to the dead zone. This provides better control than IndependentAxes when the stick is used as a two-dimensional control surface, such as when controlling a character's view in a first-person game. - - - The X and Y positions of each stick are compared against the dead zone independently. This setting is the default when calling GetState. - - - The values of each stick are not processed and are returned by GetState as "raw" values. This is best if you intend to implement your own dead zone processing. - - - Identifies which directions on the directional pad of an Xbox 360 Controller are being pressed. - - - Initializes a new instance of the GamePadDPad class. - Directional pad up button state. - Directional pad down button state. - Directional pad left button state. - Directional pad right button state. - - - Identifies whether the Down direction on the Xbox 360 Controller directional pad is pressed. - - - Returns a value that indicates whether the current instance is equal to a specified object. - Object with which to make the comparison. - - - Gets the hash code for this instance. - - - Identifies whether the Left direction on the Xbox 360 Controller directional pad is pressed. - - - Determines whether two GamePadDPad instances are equal. - Object on the left of the equal sign. - Object on the right of the equal sign. - - - Determines whether two GamePadDPad instances are not equal. - Object on the left of the equal sign. - Object on the right of the equal sign. - - - Identifies whether the Right direction on the Xbox 360 Controller directional pad is pressed. - - - Retrieves a string representation of this object. - - - Identifies whether the Up direction on the Xbox 360 Controller directional pad is pressed. - - - Represents specific information about the state of an Xbox 360 Controller, including the current state of buttons and sticks. Reference page contains links to related code samples. - - - Initializes a new instance of the GamePadState class using the specified GamePadThumbSticks, GamePadTriggers, GamePadButtons, and GamePadDPad. - Initial thumbstick state. - Initial trigger state. - Initial button state. - Initial directional pad state. - - - Initializes a new instance of the GamePadState class with the specified stick, trigger, and button values. - Left stick value. Each axis is clamped between −1.0 and 1.0. - Right stick value. Each axis is clamped between −1.0 and 1.0. - Left trigger value. This value is clamped between 0.0 and 1.0. - Right trigger value. This value is clamped between 0.0 and 1.0. - Array or parameter list of Buttons to initialize as pressed. - - - Returns a structure that identifies what buttons on the Xbox 360 controller are pressed. Reference page contains links to related code samples. - - - Returns a structure that identifies what directions of the directional pad on the Xbox 360 Controller are pressed. - - - Returns a value that indicates whether the current instance is equal to a specified object. - Object with which to make the comparison. - - - Gets the hash code for this instance. - - - Determines whether specified input device buttons are pressed in this GamePadState. - Buttons to query. Specify a single button, or combine multiple buttons using a bitwise OR operation. - - - Determines whether specified input device buttons are up (not pressed) in this GamePadState. - Buttons to query. Specify a single button, or combine multiple buttons using a bitwise OR operation. - - - Indicates whether the Xbox 360 Controller is connected. Reference page contains links to related code samples. - - - Determines whether two GamePadState instances are equal. - Object on the left of the equal sign. - Object on the right of the equal sign. - - - Determines whether two GamePadState instances are not equal. - Object on the left of the equal sign. - Object on the right of the equal sign. - - - Gets the packet number associated with this state. Reference page contains links to related code samples. - - - Returns a structure that indicates the position of the Xbox 360 Controller sticks (thumbsticks). - - - Retrieves a string representation of this object. - - - Returns a structure that identifies the position of triggers on the Xbox 360 controller. - - - Structure that represents the position of left and right sticks (thumbsticks) on an Xbox 360 Controller. - - - Initializes a new instance of the GamePadThumbSticks class. - Left stick value. Each axis is clamped between −1.0 and 1.0. - Right stick value. Each axis is clamped between −1.0 and 1.0. - - - Returns a value that indicates whether the current instance is equal to a specified object. - Object with which to make the comparison. - - - Gets the hash code for this instance. - - - Returns the position of the left Xbox 360 Controller stick (thumbstick) as a 2D vector. Reference page contains code sample. - - - Determines whether two GamePadThumbSticks instances are equal. - Object on the left of the equal sign. - Object on the right of the equal sign. - - - Determines whether two GamePadThumbSticks instances are not equal. - Object on the left of the equal sign. - Object on the right of the equal sign. - - - Returns the position of the right Xbox 360 Controller stick (thumbstick) as a 2D vector. - - - Retrieves a string representation of this object. - - - Structure that defines the position of the left and right triggers on an Xbox 360 Controller. - - - Initializes a new instance of the GamePadTriggers class. - Left trigger value. This value is clamped between 0.0 and 1.0. - Right trigger value. This value is clamped between 0.0 and 1.0. - - - Returns a value that indicates whether the current instance is equal to a specified object. - Object with which to make the comparison. - - - Gets the hash code for this instance. - - - Identifies the position of the left trigger on the Xbox 360 Controller. - - - Determines whether two GamePadTriggers instances are equal. - Object on the left of the equal sign. - Object on the right of the equal sign. - - - Determines whether two GamePadTriggers instances are not equal. - Object on the left of the equal sign. - Object on the right of the equal sign. - - - Identifies the position of the right trigger on the Xbox 360 Controller. - - - Retrieves a string representation of this object. - - - Describes the type of a specified Xbox 360 Controller. - - - Controller is an alternate guitar - - - Controller is an Arcade stick - - - Controller is a big button pad - - - Controller is a dance pad - - - Controller is a drum kit - - - Controller is a flight stick - - - Controller is the Xbox 360 Controller - - - Controller is a guitar - - - Controller is an unknown type - - - Controller is a wheel - - - Allows retrieval of keystrokes from a keyboard input device. Reference page contains links to related code samples. - - - Returns the current keyboard state. Reference page contains links to related code samples. - - - Returns the current Chatpad state for the specified player. Reference page contains links to related code samples. - Player index of the Chatpad to query. - - - Represents a state of keystrokes recorded by a keyboard input device. Reference page contains links to related code samples. - - - Initializes a new instance of the KeyboardState class. - Array or parameter list of Keys to initialize as pressed. - - - Returns a value that indicates whether the current instance is equal to a specified object. - Object to compare this object to. - - - Gets the hash code for this instance. - - - Gets an array of values that correspond to the keyboard keys that are currently being pressed. Reference page contains links to related code samples. - - - Returns whether a specified key is currently being pressed. Reference page contains links to related code samples. - Enumerated value that specifies the key to query. - - - Returns whether a specified key is currently not pressed. Reference page contains links to related code samples. - Enumerated value that specifies the key to query. - - - Returns the state of a particular key. Reference page contains links to related code samples. - Enumerated value representing the key to query. - - - Compares two objects to determine whether they are the same. - Object to the left of the equality operator. - Object to the right of the equality operator. - - - Compares two objects to determine whether they are different. - Object to the left of the inequality operator. - Object to the right of the inequality operator. - - - Identifies a particular key on a keyboard. - - - A key - - - Add key - - - Applications key - - - Attn key - - - B key - - - BACKSPACE key - - - Windows 2000/XP: Browser Back key - - - Windows 2000/XP: Browser Favorites key - - - Windows 2000/XP: Browser Forward key - - - Windows 2000/XP: Browser Start and Home key - - - Windows 2000/XP: Browser Refresh key - - - Windows 2000/XP: Browser Search key - - - Windows 2000/XP: Browser Stop key - - - C key - - - CAPS LOCK key - - - Green ChatPad key - - - Orange ChatPad key - - - CrSel key - - - D key - - - Used for miscellaneous characters; it can vary by keyboard. - - - Used for miscellaneous characters; it can vary by keyboard. - - - Used for miscellaneous characters; it can vary by keyboard. - - - Used for miscellaneous characters; it can vary by keyboard. - - - Used for miscellaneous characters; it can vary by keyboard. - - - Used for miscellaneous characters; it can vary by keyboard. - - - Used for miscellaneous characters; it can vary by keyboard. - - - Used for miscellaneous characters; it can vary by keyboard. - - - Used for miscellaneous characters; it can vary by keyboard. - - - Used for miscellaneous characters; it can vary by keyboard. - - - Decimal key - - - DEL key - - - Divide key - - - DOWN ARROW key - - - E key - - - END key - - - ENTER key - - - Erase EOF key - - - ESC key - - - EXECUTE key - - - ExSel key - - - F key - - - F1 key - - - F10 key - - - F11 key - - - F12 key - - - F13 key - - - F14 key - - - F15 key - - - F16 key - - - F17 key - - - F18 key - - - F19 key - - - F2 key - - - F20 key - - - F21 key - - - F22 key - - - F23 key - - - F24 key - - - F3 key - - - F4 key - - - F5 key - - - F6 key - - - F7 key - - - F8 key - - - F9 key - - - G key - - - H key - - - HELP key - - - HOME key - - - I key - - - IME Convert key - - - IME NoConvert key - - - INS key - - - J key - - - K key - - - Kana key on Japanese keyboards - - - Kanji key on Japanese keyboards - - - L key - - - Windows 2000/XP: Start Application 1 key - - - Windows 2000/XP: Start Application 2 key - - - Windows 2000/XP: Start Mail key - - - LEFT ARROW key - - - Left ALT key - - - Left CONTROL key - - - Left SHIFT key - - - Left Windows key - - - M key - - - Windows 2000/XP: Next Track key - - - Windows 2000/XP: Play/Pause Media key - - - Windows 2000/XP: Previous Track key - - - Windows 2000/XP: Stop Media key - - - Multiply key - - - N key - - - Reserved - - - NUM LOCK key - - - Numeric keypad 0 key - - - Numeric keypad 1 key - - - Numeric keypad 2 key - - - Numeric keypad 3 key - - - Numeric keypad 4 key - - - Numeric keypad 5 key - - - Numeric keypad 6 key - - - Numeric keypad 7 key - - - Numeric keypad 8 key - - - Numeric keypad 9 key - - - O key - - - Used for miscellaneous characters; it can vary by keyboard. - - - OEM Auto key - - - Windows 2000/XP: The OEM angle bracket or backslash key on the RT 102 key keyboard - - - CLEAR key - - - Windows 2000/XP: The OEM close bracket key on a US standard keyboard - - - Windows 2000/XP: For any country/region, the ',' key - - - OEM Copy key - - - OEM Enlarge Window key - - - Windows 2000/XP: For any country/region, the '-' key - - - Windows 2000/XP: The OEM open bracket key on a US standard keyboard - - - Windows 2000/XP: For any country/region, the '.' key - - - Windows 2000/XP: The OEM pipe key on a US standard keyboard - - - Windows 2000/XP: For any country/region, the '+' key - - - Windows 2000/XP: The OEM question mark key on a US standard keyboard - - - Windows 2000/XP: The OEM singled/double quote key on a US standard keyboard - - - Windows 2000/XP: The OEM Semicolon key on a US standard keyboard - - - Windows 2000/XP: The OEM tilde key on a US standard keyboard - - - P key - - - PA1 key - - - PAGE DOWN key - - - PAGE UP key - - - PAUSE key - - - Play key - - - PRINT key - - - PRINT SCREEN key - - - Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: IME PROCESS key - - - Q key - - - R key - - - RIGHT ARROW key - - - Right ALT key - - - Right CONTROL key - - - Right SHIFT key - - - Right Windows key - - - S key - - - SCROLL LOCK key - - - SELECT key - - - Windows 2000/XP: Select Media key - - - Separator key - - - Computer Sleep key - - - SPACEBAR - - - Subtract key - - - T key - - - TAB key - - - U key - - - UP ARROW key - - - V key - - - Windows 2000/XP: Volume Down key - - - Windows 2000/XP: Volume Mute key - - - Windows 2000/XP: Volume Up key - - - W key - - - X key - - - Y key - - - Z key - - - Zoom key - - - Identifies the state of a keyboard key. - - - Key is pressed. - - - Key is released. - - - Allows retrieval of position and button clicks from a mouse input device. Reference page contains links to related code samples. - - - Gets the current state of the mouse, including mouse position and buttons pressed. Reference page contains links to related code samples. - - - Sets the position of the mouse cursor relative to the upper-left corner of the window. - The horizontal position of the mouse cursor, relative to the left edge of the game window. - The vertical position of the mouse cursor, relative to the upper edge of the game window. - - - Gets or sets the window used for mouse processing. Mouse coordinates returned by GetState are relative to the upper-left corner of this window. Reference page contains links to related code samples. - - - Represents the state of a mouse input device, including mouse cursor position and buttons pressed. Reference page contains links to related code samples. - - - Initializes a new instance of the MouseState class. - Horizontal mouse position. - Vertical mouse position. - Mouse scroll wheel value. - Left mouse button state. - Middle mouse button state. - Right mouse button state. - XBUTTON1 state. - XBUTTON2 state. - - - Returns a value that indicates whether the current instance is equal to a specified object. - Object with which to make the comparison. - - - Gets the hash code for this instance. - - - Returns the state of the left mouse button. - - - Returns the state of the middle mouse button. - - - Determines whether two MouseState instances are equal. - Object on the left of the equal sign. - Object on the right of the equal sign. - - - Determines whether two MouseState instances are not equal. - Object on the left of the equal sign. - Object on the right of the equal sign. - - - Returns the state of the right mouse button. - - - Gets the cumulative mouse scroll wheel value since the game was started. - - - Retrieves a string representation of this object. - - - Specifies the horizontal position of the mouse cursor. Reference page contains links to related code samples. - - - Returns the state of XBUTTON1. - - - Returns the state of XBUTTON2. - - - Specifies the vertical position of the mouse cursor. Reference page contains links to related code samples. - - - Provides access to an album in the media library. - - - Gets the Artist of the Album. - - - Immediately releases the unmanaged resources used by this object. - - - Gets the duration of the Album. - - - Determines whether the specified Album is equal to this Album. - Album to compare with this instance. - - - Determines whether the specified Object is equal to this Album. - Object to compare with this instance. - - - Gets the Genre of the Album. - - - Returns the stream that contains the album art image data. - - - Gets the hash code for this instance. - - - Returns the stream that contains the album thumbnail image data. - - - Gets a value indicating whether the Album has associated album art. - - - Gets a value indicating whether the object is disposed. - - - Gets the name of the Album. - - - Determines whether the specified Album instances are equal. - Object to the left of the equality operator. - Object to the right of the equality operator. - - - Determines whether the specified Album instances are not equal. - Object to the left of the inequality operator. - Object to the right of the inequality operator. - - - Gets a SongCollection that contains the songs on the album. - - - Returns a String representation of this Album. - - - A collection of albums in the media library. - - - Gets the number of Album objects in the AlbumCollection. - - - Immediately releases the unmanaged resources used by this object. - - - Returns an enumerator that iterates through the AlbumCollection. - - - Gets a value indicating whether the object is disposed. - - - Gets the Album at the specified index in the AlbumCollection. - Index of the Album to get. - - - Returns an enumerator that iterates through the collection. - - - Provides access to artist information in the media library. - - - Gets the AlbumCollection for the Artist. - - - Immediately releases the unmanaged resources used by this object. - - - Determines whether the specified Artist is equal to this Artist. - Artist to compare with this instance. - - - Determines whether the specified Object is equal to this Artist. - Object to compare with this instance. - - - Gets the hash code for this instance. - - - Gets a value indicating whether the object is disposed. - - - Gets the name of the Artist. - - - Determines whether the specified Artist instances are equal. - Object to the left of the equality operator. - Object to the right of the equality operator. - - - Determines whether the specified Artist instances are not equal. - Object to the left of the inequality operator. - Object to the right of the inequality operator. - - - Gets the SongCollection for the Artist. - - - Returns a String representation of the Artist. - - - The collection of all artists in the media library. - - - Gets the number of Artist objects in the ArtistCollection. - - - Immediately releases the unmanaged resources used by this object. - - - Returns an enumerator that iterates through the ArtistCollection. - - - Gets a value indicating whether the object is disposed. - - - Gets the Artist at the specified index in the ArtistCollection. - Index of the Artist to get. - - - Returns an enumerator that iterates through the collection. - - - Provides access to genre information in the media library. - - - Gets the AlbumCollection for the Genre. - - - Immediately releases the unmanaged resources used by this object. - - - Determines whether the specified Genre is equal to this Genre. - Genre to compare with this instance. - - - Determines whether the specified Object is equal to this Genre. - Object to compare with this instance. - - - Gets the hash code for this instance. - - - Gets a value indicating whether the object is disposed. - - - Gets the name of the Genre. - - - Determines whether the specified Genre instances are equal. - Object to the left of the equality operator. - Object to the right of the equality operator. - - - Determines whether the specified Genre instances are not equal. - Object to the left of the inequality operator. - Object to the right of the inequality operator. - - - Gets the SongCollection for the Genre. - - - Returns a String representation of the Genre. - - - The collection of all genres in the media library. - - - Gets the number of Genre objects in the GenreCollection. - - - Immediately releases the unmanaged resources used by this object. - - - Returns an enumerator that iterates through the GenreCollection. - - - Gets a value indicating whether the object is disposed. - - - Gets the Genre at the specified index in the GenreCollection. - Index of the Genre to get. - - - Returns an enumerator that iterates through the collection. - - - Provides access to songs, playlists, and pictures in the device's media library. Reference page contains code sample. - - - Initializes a new instance of the MediaLibrary class. - - - Initializes a new instance of the MediaLibrary class, using a specific media source to create the new media library. Reference page contains code sample. - A media source that will be the source for the media library. - - - Gets the AlbumCollection that contains all albums in the media library. - - - Gets the ArtistCollection that contains all artists in the media library. - - - Releases the resources used by the MediaLibrary. - - - Gets the GenreCollection that contains all genres in the media library. - - - Retrieves a picture from the device's media library based on a picture token. Reference page contains links to related conceptual articles. - The picture token. This cannot be null - - - Gets a value indicating whether the object is disposed. - - - Gets the MediaSource with which this media library was constructed. - - - Gets the PictureCollection that contains all pictures in the media library. - - - Gets the PlaylistCollection that contains all playlists in the media library. - - - Gets the root PictureAlbum for all pictures in the media library. - - - Returns the collection of all saved pictures in the device's media library. - - - Saves the image to the media library, and then returns that saved image as a picture object. Reference page contains links to related conceptual articles. - Name of the image file saved to the media library. - Buffer that contains the image in the required JPEG file format. - - - Saves the image contained in the stream object to the media library, and then returns that saved image as a picture object. Reference page contains links to related conceptual articles. - Name of the image file that is saved to the media library. - Stream object that contains the image information in the required JPEG file format. - - - Gets the SongCollection that contains all songs in the media library. - - - Provides methods and properties to play, pause, resume, and stop songs. MediaPlayer also exposes shuffle, repeat, volume, play position, and visualization capabilities. Reference page contains links to related code samples. - - - Raised when the active song changes due to active playback or due to explicit calls to the MoveNext or MovePrevious methods. - - - - Determines whether the game has control of the background music. - - - Retrieves visualization (frequency and sample) data for the currently-playing song. Reference page contains code sample. - Visualization (frequency and sample) data for the currently playing song. - - - Gets or set the muted setting for the media player. - - - Gets or sets the repeat setting for the media player. - - - Gets or sets the shuffle setting for the media player. - - - Gets or sets the visualization enabled setting for the media player. - - - Raised when the media player play state changes. - - - - Moves to the next song in the queue of playing songs. - - - Moves to the previous song in the queue of playing songs. - - - Pauses the currently playing song. - - - Plays a Song. Reference page contains links to related code samples. - Song to play. - - - Plays a SongCollection. Reference page contains links to related code samples. - SongCollection to play. - - - Plays a SongCollection, starting with the Song at the specified index. Reference page contains links to related code samples. - SongCollection to play. - Index of the song in the collection at which playback should begin. - - - Gets the play position within the currently playing song. - - - Gets the media playback queue, MediaQueue. - - - Resumes a paused song. - - - Gets the media playback state, MediaState. - - - Stops playing a song. - - - Gets or sets the media player volume. - - - Provides methods and properties to access and control the queue of playing songs. - - - Gets the current Song in the queue of playing songs. - - - Gets or sets the index of the current (active) song in the queue of playing songs. - - - Gets the count of songs in the MediaQueue. - - - Gets the Song at the specified index in the MediaQueue. - - - - Provides methods and properties to access the source or sources from which the media will be read. - - - Gets the available media sources. Reference page contains code sample. - - - Gets the MediaSourceType of this media source. - - - Gets the name of this media source. - - - Returns the name of this media source. - - - Type of the media source. - - - A local device. - - - A Windows Media Connect device. - - - Media playback state (playing, paused, or stopped). - - - Media playback is paused. - - - Media is currently playing. - - - Media playback is stopped. - - - Provides access to a picture in the media library. - - - Gets the picture album that contains the picture. - - - Gets the picture's date. - - - Immediately releases the unmanaged resources used by this object. - - - Determines whether the specified Picture is equal to this Picture. - Picture to compare with this instance. - - - Determines whether the specified Object is equal to this Picture. - Object to compare with this instance. - - - Gets the hash code for this instance. - - - Returns the stream that contains the image data. - - - Returns the stream that contains the picture's thumbnail image data. - - - Gets the picture's height. - - - Gets a value indicating whether the object is disposed. - - - Gets the name of the Picture. - - - Determines whether the specified Picture instances are equal. - Object to the left of the equality operator. - Object to the right of the equality operator. - - - Determines whether the specified Picture instances are not equal. - Object to the left of the inequality operator. - Object to the right of the inequality operator. - - - Returns a String representation of the Picture. - - - Gets the picture's width. - - - Provides access to a picture album in the media library. - - - Gets the collection of picture albums that are contained within the picture album (that is, picture albums that are children of the picture album). - - - Immediately releases the unmanaged resources used by this object. - - - Determines whether the specified PictureAlbum is equal to this PictureAlbum. - PictureAlbum to compare with this instance. - - - Determines whether the specified Object is equal to this PictureAlbum. - Object to compare with this instance. - - - Gets the hash code for this instance. - - - Gets a value indicating whether the object is disposed. - - - Gets the name of the PictureAlbum. - - - Determines whether the specified PictureAlbum instances are equal. - Object to the left of the equality operator. - Object to the right of the equality operator. - - - Determines whether the specified PictureAlbum instances are not equal. - Object to the left of the inequality operator. - Object to the right of the inequality operator. - - - Gets the parent picture album. - - - Gets the collection of pictures in this picture album. - - - Returns a String representation of the PictureAlbum. - - - A collection of picture albums in the media library. - - - Gets the number of PictureAlbum objects in the PictureAlbumCollection. - - - Immediately releases the unmanaged resources used by this object. - - - Returns an enumerator that iterates through the PictureAlbumCollection. - - - Gets a value indicating whether the object is disposed. - - - Gets the PictureAlbum at the specified index in the PictureAlbumCollection. - - - - Returns an enumerator that iterates through the collection. - - - A collection of pictures in the media library. - - - Gets the number of Picture objects in the PictureCollection. - - - Immediately releases the unmanaged resources used by this object. - - - Returns an enumerator that iterates through the PictureCollection. - - - Gets a value indicating whether the object is disposed. - - - Gets the Picture at the specified index in the PictureCollection. - - - - Returns an enumerator that iterates through the collection. - - - Provides access to a playlist in the media library. - - - Immediately releases the unmanaged resources used by this object. - - - Gets the duration of the Playlist. - - - Determines whether the specified Playlist is equal to this Playlist. - Playlist to compare with this instance. - - - Determines whether the specified Object is equal to this Playlist. - Object to compare with this instance. - - - Gets the hash code for this instance. - - - Gets a value indicating whether the object is disposed. - - - Gets the name of the Playlist. - - - Determines whether the specified Playlist instances are equal. - Object to the left of the equality operator. - Object to the right of the equality operator. - - - Determines whether the specified Playlist instances are not equal. - Object to the left of the inequality operator. - Object to the right of the inequality operator. - - - Gets a SongCollection that contains the songs in the playlist. - - - Returns a String representation of the Playlist. - - - A collection of playlists in the media library. - - - Gets the number of Playlist objects in the PlaylistCollection. - - - Immediately releases the unmanaged resources used by this object. - - - Returns an enumerator that iterates through the PlaylistCollection. - - - Gets a value indicating whether the object is disposed. - - - Gets the Playlist at the specified index in the PlaylistCollection. - - - - Returns an enumerator that iterates through the collection. - - - Provides access to a song in the song library. - - - Gets the Album on which the Song appears. - - - Gets the Artist of the Song. - - - Immediately releases the unmanaged resources used by this object. - - - Gets the duration of the Song. - - - Determines whether the specified Song is equal to this Song. - Song to compare with this instance. - - - Determines whether the specified Object is equal to this Song. - Object to compare with this instance. - - - Constructs a new Song object based on the specified URI. - Name of the song. - Uri object that represents the URI. - - - Gets the Genre of the Song. - - - Gets the hash code for this instance. - - - Gets a value indicating whether the object is disposed. - - - Gets a value that indicates whether the song is DRM protected content. - - - Gets a value that indicates whether the song has been rated by the user. - - - Gets the name of the Song. - - - Determines whether the specified Song instances are equal. - Object to the left of the equality operator. - Object to the right of the equality operator. - - - Determines whether the specified Song instances are not equal. - Object to the left of the inequality operator. - Object to the right of the inequality operator. - - - Gets the song play count. - - - Gets the user's rating for the Song. - - - Returns a String representation of the Song. - - - Gets the track number of the song on the song's Album. - - - A collection of songs in the song library. - - - Gets the number of Song objects in the SongCollection. - - - Immediately releases the unmanaged resources used by this object. - - - Returns an enumerator that iterates through the SongCollection. - - - Gets a value indicating whether the object is disposed. - - - Gets the Song at the specified index in the SongCollection. - - - - Returns an enumerator that iterates through the collection. - - - Encapsulates visualization (frequency and sample) data for the currently-playing song. - - - Initializes a new instance of the VisualizationData class. - - - Returns a collection of floats that contain frequency data. - - - Returns a collection of floats that contain sample data. - - - \ No newline at end of file diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/WindowsGame2.exe b/WindowsGame2/WindowsGame2/WindowsGame2/bin/x86/Debug/WindowsGame2.exe deleted file mode 100644 index b0e14edc6445365aa893a2aeb1ad6aa3bd20943b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10240 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 - - - - NoEffect.fx - NoEffect - EffectImporter - EffectProcessor - None - C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Content\NoEffect.xnb - - - - GreyScaleEffect.fx - GreyScaleEffect - EffectImporter - EffectProcessor - None - C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Content\GreyScaleEffect.xnb - - - true - - {58C274AC-3DD6-4FC1-9E6B-9E2D8D885F08} - Windows - HiDef - Debug - false - C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2Content\ - C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\ - C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\obj\x86\Debug\ - C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Content\ - - - - C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\Microsoft.Xna.Framework.Content.Pipeline.XImporter.dll - 2011-09-01T16:22:30-07:00 - - - C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\Microsoft.Xna.Framework.Content.Pipeline.VideoImporters.dll - 2011-09-01T16:22:30-07:00 - - - C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\Microsoft.Xna.Framework.Content.Pipeline.TextureImporter.dll - 2011-09-01T16:22:30-07:00 - - - C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\Microsoft.Xna.Framework.Content.Pipeline.FBXImporter.dll - 2011-09-01T16:22:30-07:00 - - - C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\Microsoft.Xna.Framework.Content.Pipeline.EffectImporter.dll - 2011-09-01T16:22:30-07:00 - - - C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\Microsoft.Xna.Framework.Content.Pipeline.AudioImporters.dll - 2011-09-01T16:22:30-07:00 - - - C:\Windows\Microsoft.Net\assembly\GAC_32\Microsoft.Xna.Framework.Content.Pipeline\v4.0_4.0.0.0__842cf8be1de50553\Microsoft.Xna.Framework.Content.Pipeline.dll - 2018-07-16T14:58:20.8638642-07:00 - - - - \ No newline at end of file diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/Microsoft.Xna.Framework.RuntimeProfile.txt b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/Microsoft.Xna.Framework.RuntimeProfile.txt deleted file mode 100644 index afd78152..00000000 --- a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/Microsoft.Xna.Framework.RuntimeProfile.txt +++ /dev/null @@ -1 +0,0 @@ -Windows.v4.0.HiDef diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.csproj.CoreCompileInputs.cache b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.csproj.CoreCompileInputs.cache deleted file mode 100644 index b3f39e63..00000000 --- a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.csproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -195bd43c29a6ba026ccc6f6be4e6865b933bd563 diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.csproj.FileListAbsolute.txt b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.csproj.FileListAbsolute.txt deleted file mode 100644 index 1736ccb3..00000000 --- a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.csproj.FileListAbsolute.txt +++ /dev/null @@ -1,19 +0,0 @@ -C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\WindowsGame2.exe -C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\WindowsGame2.pdb -C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Microsoft.Xna.Framework.dll -C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Microsoft.Xna.Framework.Game.dll -C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Microsoft.Xna.Framework.GamerServices.dll -C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Microsoft.Xna.Framework.Graphics.dll -C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Microsoft.Xna.Framework.Input.Touch.dll -C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Microsoft.Xna.Framework.xml -C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Microsoft.Xna.Framework.Game.xml -C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Microsoft.Xna.Framework.Graphics.xml -C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Microsoft.Xna.Framework.GamerServices.xml -C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Microsoft.Xna.Framework.Input.Touch.xml -C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\obj\x86\Debug\Microsoft.Xna.Framework.RuntimeProfile.txt -C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\obj\x86\Debug\WindowsGame2.csproj.CoreCompileInputs.cache -C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\obj\x86\Debug\WindowsGame2.csproj.CopyComplete -C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\obj\x86\Debug\WindowsGame2.exe -C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\obj\x86\Debug\WindowsGame2.pdb -C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Content\NoEffect.xnb -C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2\bin\x86\Debug\Content\GreyScaleEffect.xnb diff --git a/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.exe b/WindowsGame2/WindowsGame2/WindowsGame2/obj/x86/Debug/WindowsGame2.exe deleted file mode 100644 index b0e14edc6445365aa893a2aeb1ad6aa3bd20943b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10240 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

(CO|K0)nzxIleD zn?!CbX#Wyx!#KP42rFa6GUn&zQ!DYW@ONY^K{lsHn<8S=m{)PM$5@XUj_YdEK@CnJ zLEA!mq0wF7cQO+KxiaE;J%IQ6OPu6Y+vfW2)|!crPDTn0$+$_=o9%VBOcz)u+%03* zvy5;t2>Svn8r!T2F7v=xqsvjYQsn~gDl*V==9X33ER_(MwsZ1A&1R-BiR(pYD`fTIMWb3*19kx!MePEuV^cv;evKTq% z+V{wxIV)V9Nvxl1KVW+=!1PO$^WZFJ)d(F@rtw^Rg{;Hg!|NjRF2L&qq2|EOud&jP gjSPS@%D$%~38td=@Lz)y=)e9YF*t$3RPp}!zms;S6#xJL diff --git a/WindowsGame2/WindowsGame2/WindowsGame2Content/obj/x86/Debug/WindowsGame2Content.contentproj.CoreCompileInputs.cache b/WindowsGame2/WindowsGame2/WindowsGame2Content/obj/x86/Debug/WindowsGame2Content.contentproj.CoreCompileInputs.cache deleted file mode 100644 index fd3257bf..00000000 --- a/WindowsGame2/WindowsGame2/WindowsGame2Content/obj/x86/Debug/WindowsGame2Content.contentproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -26d7de9b62fcad55b2171db2099ba5995f37a3ff diff --git a/WindowsGame2/WindowsGame2/WindowsGame2Content/obj/x86/Debug/WindowsGame2Content.contentproj.FileListAbsolute.txt b/WindowsGame2/WindowsGame2/WindowsGame2Content/obj/x86/Debug/WindowsGame2Content.contentproj.FileListAbsolute.txt deleted file mode 100644 index 9a9f46e8..00000000 --- a/WindowsGame2/WindowsGame2/WindowsGame2Content/obj/x86/Debug/WindowsGame2Content.contentproj.FileListAbsolute.txt +++ /dev/null @@ -1 +0,0 @@ -C:\Users\iD Student\Desktop\Stardew\WindowsGame2\WindowsGame2\WindowsGame2Content\obj\x86\Debug\WindowsGame2Content.contentproj.CoreCompileInputs.cache From 75a70a9f78deb89386a6ae6186a2c724e9176e73 Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Wed, 5 Dec 2018 18:06:11 -0800 Subject: [PATCH 084/110] Added in file loading for birthday gifts. --- .../Framework/MultiplayerSupport.cs | 3 +- GeneralMods/HappyBirthday/GiftManager.cs | 38 ++++++++++++++++--- GeneralMods/HappyBirthday/HappyBirthday.cs | 13 +++++++ .../HappyBirthday/HappyBirthday.csproj | 2 +- 4 files changed, 48 insertions(+), 8 deletions(-) diff --git a/GeneralMods/HappyBirthday/Framework/MultiplayerSupport.cs b/GeneralMods/HappyBirthday/Framework/MultiplayerSupport.cs index c8a7c49b..50925633 100644 --- a/GeneralMods/HappyBirthday/Framework/MultiplayerSupport.cs +++ b/GeneralMods/HappyBirthday/Framework/MultiplayerSupport.cs @@ -1,5 +1,4 @@ - -using StardewValley; +using StardewValley; using System; using System.Collections.Generic; using System.Linq; diff --git a/GeneralMods/HappyBirthday/GiftManager.cs b/GeneralMods/HappyBirthday/GiftManager.cs index 7cee60e1..bdd816f2 100644 --- a/GeneralMods/HappyBirthday/GiftManager.cs +++ b/GeneralMods/HappyBirthday/GiftManager.cs @@ -89,20 +89,48 @@ namespace Omegasis.HappyBirthday public GiftManager() { this.BirthdayGifts = new List(); + this.loadVillagerBirthdayGifts(); } - public void loadVillagerBirthdayGifts() + ///

+ /// Load birthday gift information from disk. Preferably from BirthdayGift.json in the mod's directory. + /// + /// + public Dictionary loadVillagerBirthdayGifts() { - if (File.Exists("BirthdayGifts.json")) + if (HappyBirthday.Config.useLegacyBirthdayFiles == false) { - + if (File.Exists("BirthdayGifts.json")) + { + HappyBirthday.ModMonitor.Log("Load from BirthdayGifts.json"); + this.defaultBirthdayGifts = HappyBirthday.ModHelper.Data.ReadJsonFile>(Path.Combine(HappyBirthday.ModHelper.DirectoryPath, "BirthdayGifts.json")); + return this.defaultBirthdayGifts; + } + else + { + HappyBirthday.ModMonitor.Log("BirthdayGifts.json created from default birthday gift information and can be overridden."); + HappyBirthday.ModHelper.Data.WriteJsonFile>(Path.Combine(HappyBirthday.ModHelper.DirectoryPath, "BirthdayGifts.json"), this.defaultBirthdayGifts); + return defaultBirthdayGifts; + } } else { - HappyBirthday.ModHelper.Data.WriteJsonFile>(HappyBirthday.ModHelper.DirectoryPath, this.defaultBirthdayGifts); + + if (File.Exists(Path.Combine(Game1.content.RootDirectory, "Data", "PossibleBirthdayGifts.xnb"))){ + HappyBirthday.ModMonitor.Log("Legacy loading detected. Attempting to load from StardewValley/Content/Data/PossibleBirthdayGifts.xnb"); + this.defaultBirthdayGifts = Game1.content.Load>(Path.Combine("Data", "PossibleBirthdayGifts")); + return this.defaultBirthdayGifts; + } + else + { + HappyBirthday.ModMonitor.Log("No birthday gift information found. Loading from internal birthday list"); + return this.defaultBirthdayGifts; + } } } + + /// Get the default gift items. @@ -113,7 +141,7 @@ namespace Omegasis.HappyBirthday try { // read from birthday gifts file - IDictionary data = Game1.content.Load>("Data\\BirthdayGifts"); + IDictionary data = loadVillagerBirthdayGifts(); data.TryGetValue(name, out string text); if (text != null) { diff --git a/GeneralMods/HappyBirthday/HappyBirthday.cs b/GeneralMods/HappyBirthday/HappyBirthday.cs index c73c25ee..80ace5cf 100644 --- a/GeneralMods/HappyBirthday/HappyBirthday.cs +++ b/GeneralMods/HappyBirthday/HappyBirthday.cs @@ -64,8 +64,16 @@ namespace Omegasis.HappyBirthday public static IModHelper ModHelper; + public static IMonitor ModMonitor; + + /// + /// Class to handle all birthday messages for this mod. + /// public BirthdayMessages messages; + /// + /// Class to handle all birthday gifts for this mod. + /// public GiftManager giftManager; /********* @@ -89,6 +97,7 @@ namespace Omegasis.HappyBirthday StardewModdingAPI.Events.GraphicsEvents.OnPostRenderHudEvent += GraphicsEvents_OnPostRenderHudEvent; ; //MultiplayerSupport.initializeMultiplayerSupport(); ModHelper = Helper; + ModMonitor = Monitor; messages = new BirthdayMessages(); giftManager = new GiftManager(); @@ -137,6 +146,10 @@ namespace Omegasis.HappyBirthday private void GraphicsEvents_OnPostRenderGuiEvent(object sender, EventArgs e) { if (Game1.activeClickableMenu == null) return; + //Don't do anything if birthday has not been chosen yet. + if (PlayerData == null) return; + if (PlayerData.BirthdaySeason == null || PlayerData.BirthdayDay==0) return; + if (PlayerData.BirthdaySeason.ToLower() != Game1.currentSeason.ToLower()) return; if (Game1.activeClickableMenu is Billboard) { diff --git a/GeneralMods/HappyBirthday/HappyBirthday.csproj b/GeneralMods/HappyBirthday/HappyBirthday.csproj index 6c2773a8..2498969a 100644 --- a/GeneralMods/HappyBirthday/HappyBirthday.csproj +++ b/GeneralMods/HappyBirthday/HappyBirthday.csproj @@ -91,7 +91,7 @@ - + From e5f4cbe7e07889cd4b6b50c2beb22660aa1f31d9 Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Wed, 5 Dec 2018 18:08:12 -0800 Subject: [PATCH 085/110] Testing out commit signing. --- GeneralMods/HappyBirthday/GiftManager.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/GeneralMods/HappyBirthday/GiftManager.cs b/GeneralMods/HappyBirthday/GiftManager.cs index bdd816f2..9c18d41e 100644 --- a/GeneralMods/HappyBirthday/GiftManager.cs +++ b/GeneralMods/HappyBirthday/GiftManager.cs @@ -129,8 +129,11 @@ namespace Omegasis.HappyBirthday } } - + public Dictionary loadSpouseBirthdayGifts() + { + throw new NotImplementedException(); + } /// Get the default gift items. From fa04c757ed7e96e21039358dd2762b5975fd4f69 Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Thu, 6 Dec 2018 00:41:28 -0800 Subject: [PATCH 086/110] Added player's birthday to billboard. Need to remove from request board and fix it for festival days. --- GeneralMods/HappyBirthday/GiftManager.cs | 5 ++++- GeneralMods/HappyBirthday/HappyBirthday.cs | 26 ++++++++-------------- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/GeneralMods/HappyBirthday/GiftManager.cs b/GeneralMods/HappyBirthday/GiftManager.cs index 9c18d41e..9b79c4ee 100644 --- a/GeneralMods/HappyBirthday/GiftManager.cs +++ b/GeneralMods/HappyBirthday/GiftManager.cs @@ -129,7 +129,10 @@ namespace Omegasis.HappyBirthday } } - + /// + /// Used to load spouse birthday gifts from disk. + /// + /// public Dictionary loadSpouseBirthdayGifts() { throw new NotImplementedException(); diff --git a/GeneralMods/HappyBirthday/HappyBirthday.cs b/GeneralMods/HappyBirthday/HappyBirthday.cs index 80ace5cf..b9a7fca0 100644 --- a/GeneralMods/HappyBirthday/HappyBirthday.cs +++ b/GeneralMods/HappyBirthday/HappyBirthday.cs @@ -113,6 +113,8 @@ namespace Omegasis.HappyBirthday private void GraphicsEvents_OnPostRenderHudEvent(object sender, EventArgs e) { if (Game1.activeClickableMenu == null) return; + if (PlayerData == null) return; + if (PlayerData.BirthdaySeason == null) return; if (PlayerData.BirthdaySeason.ToLower() != Game1.currentSeason.ToLower()) return; if (Game1.activeClickableMenu is Billboard) { @@ -124,13 +126,18 @@ namespace Omegasis.HappyBirthday { if (clicky.containsPoint(Game1.getMouseX(), Game1.getMouseY())) { + if (String.IsNullOrEmpty(clicky.hoverText)) continue; hoverText += clicky.hoverText + Environment.NewLine; } + else + { + //hoverText = ""; + } } if (!String.IsNullOrEmpty(hoverText)) { - hoverText.Remove(hoverText.Length - 2, 1); + hoverText=hoverText.Remove(hoverText.Length - 2, 1); var oldText = Helper.Reflection.GetField(Game1.activeClickableMenu, "hoverText", true); oldText.SetValue(hoverText); } @@ -148,28 +155,13 @@ namespace Omegasis.HappyBirthday if (Game1.activeClickableMenu == null) return; //Don't do anything if birthday has not been chosen yet. if (PlayerData == null) return; - if (PlayerData.BirthdaySeason == null || PlayerData.BirthdayDay==0) return; + if (String.IsNullOrEmpty(PlayerData.BirthdaySeason)) return; if (PlayerData.BirthdaySeason.ToLower() != Game1.currentSeason.ToLower()) return; if (Game1.activeClickableMenu is Billboard) { int index = PlayerData.BirthdayDay; Game1.player.FarmerRenderer.drawMiniPortrat(Game1.spriteBatch, new Vector2(Game1.activeClickableMenu.xPositionOnScreen + 152 + (index - 1) % 7 * 32 * 4, Game1.activeClickableMenu.yPositionOnScreen + 230 + (index - 1) / 7 * 32 * 4), 0.5f, 4f, 2, Game1.player); - - string hoverText = ""; - foreach(var clicky in (Game1.activeClickableMenu as Billboard).calendarDays) - { - if (clicky.containsPoint(Game1.getMouseX(), Game1.getMouseY())) - { - hoverText += clicky.hoverText+Environment.NewLine; - } - } - if (hoverText != "") - { - var oldText=Helper.Reflection.GetField(Game1.activeClickableMenu, "hoverText", true); - oldText.SetValue(hoverText); - } - } } From a6ad717d5e520a7e0e3bd708625237256f2a47fa Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Thu, 6 Dec 2018 00:54:12 -0800 Subject: [PATCH 087/110] Fixed festival names not showing up on Billboard. Also player can now have b-day on festival days and have it display properly. --- GeneralMods/HappyBirthday/HappyBirthday.cs | 27 ++++++++++++++++------ 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/GeneralMods/HappyBirthday/HappyBirthday.cs b/GeneralMods/HappyBirthday/HappyBirthday.cs index b9a7fca0..2056067c 100644 --- a/GeneralMods/HappyBirthday/HappyBirthday.cs +++ b/GeneralMods/HappyBirthday/HappyBirthday.cs @@ -122,22 +122,35 @@ namespace Omegasis.HappyBirthday //Game1.player.FarmerRenderer.drawMiniPortrat(Game1.spriteBatch, new Vector2(Game1.activeClickableMenu.xPositionOnScreen + 152 + (index - 1) % 7 * 32 * 4, Game1.activeClickableMenu.yPositionOnScreen + 230 + (index - 1) / 7 * 32 * 4), 1f, 4f, 2, Game1.player); string hoverText = ""; + List texts = new List(); foreach (var clicky in (Game1.activeClickableMenu as Billboard).calendarDays) { if (clicky.containsPoint(Game1.getMouseX(), Game1.getMouseY())) { - if (String.IsNullOrEmpty(clicky.hoverText)) continue; - hoverText += clicky.hoverText + Environment.NewLine; - } - else - { - //hoverText = ""; + if (!String.IsNullOrEmpty(clicky.hoverText)) + { + texts.Add(clicky.hoverText); //catches npc birhday names. + } + else if (!String.IsNullOrEmpty(clicky.name)) + { + texts.Add(clicky.name); //catches festival dates. + } } } + for(int i = 0; i< texts.Count; i++) + { + + hoverText += texts[i]; //Append text. + if (i == texts.Count - 1) continue; + else + { + hoverText += Environment.NewLine; //Append new line. + } + } + if (!String.IsNullOrEmpty(hoverText)) { - hoverText=hoverText.Remove(hoverText.Length - 2, 1); var oldText = Helper.Reflection.GetField(Game1.activeClickableMenu, "hoverText", true); oldText.SetValue(hoverText); } From f522ee19318b5ff01116e8d99285113d7aabd4d8 Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Thu, 6 Dec 2018 01:22:40 -0800 Subject: [PATCH 088/110] Fixed birthday messages not being created into .json files properly. Also re-implemented spouse messages and translations. --- GeneralMods/HappyBirthday/BirthdayMessages.cs | 26 +++++++------------ 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/GeneralMods/HappyBirthday/BirthdayMessages.cs b/GeneralMods/HappyBirthday/BirthdayMessages.cs index 851c566d..36f906f7 100644 --- a/GeneralMods/HappyBirthday/BirthdayMessages.cs +++ b/GeneralMods/HappyBirthday/BirthdayMessages.cs @@ -20,7 +20,7 @@ namespace Omegasis.HappyBirthday /// /// TODO: Make this. /// - private Dictionary defaultSpouseBirthdayWishes = new Dictionary() + public Dictionary defaultSpouseBirthdayWishes = new Dictionary() { ["Alex"] = "", ["Elliott"] = "", @@ -39,7 +39,7 @@ namespace Omegasis.HappyBirthday /// /// Used to contain /// - private Dictionary defaultBirthdayWishes = new Dictionary() + public Dictionary defaultBirthdayWishes = new Dictionary() { ["Robin"] = "Hey @, happy birthday! I'm glad you choose this town to move here to. ", ["Demetrius"] = "Happy birthday @! Make sure you take some time off today to enjoy yourself. $h", @@ -69,7 +69,7 @@ namespace Omegasis.HappyBirthday ["Elliott"] = "What a wonderful day isn't it @? Especially since today is your birthday. I tried to make you a poem but I feel like the best way of putting it is simply, happy birthday. $h ", ["Gus"] = "Hey @ happy birthday! Hopefully you enjoy the rest of the day and make sure you aren't a stranger at the saloon!", ["Dwarf"] = "Happy birthday @. I hope that what I got you is acceptable for humans as well. ", - ["Wizard"] = "The spirits told me that today is your birthday. In that case happy birthday @. ", + ["Wizard"] = "The spirits told me that today is your birthday. In that case happy birthday @. May your year shine bright! ", ["Harvey"] = "Hey @, happy birthday! Make sure to come in for a checkup some time to make sure you live many more years! ", ["Sandy"] = "Hello there @. I heard that today was your birthday and I didn't want you feeling left out, so happy birthday!", ["Willy"] = "Aye @ happy birthday. Looking at you reminds me of ye days when I was just a guppy swimming out to sea. Continue to enjoy them youngin.$h", @@ -90,38 +90,32 @@ namespace Omegasis.HappyBirthday if (!Directory.Exists(defaultPath)) Directory.CreateDirectory(defaultPath); string birthdayFileDict=HappyBirthday.Config.translationInfo.getjsonForTranslation("BirthdayWishes", HappyBirthday.Config.translationInfo.currentTranslation); - string path = Path.Combine(HappyBirthday.ModHelper.DirectoryPath, "Content", "Dialogue", HappyBirthday.Config.translationInfo.currentTranslation, birthdayFileDict); + string path = Path.Combine( "Content", "Dialogue", HappyBirthday.Config.translationInfo.currentTranslation, birthdayFileDict); //Handle normal birthday wishes. if (!File.Exists(path)) { - StreamWriter writer = new StreamWriter(path); - serializer.Serialize(writer, defaultBirthdayWishes); + HappyBirthday.ModHelper.Data.WriteJsonFile>(path, defaultBirthdayWishes); this.birthdayWishes = defaultBirthdayWishes; } else { - StreamReader reader = new StreamReader(path); - birthdayWishes = new Dictionary(); - birthdayWishes = (Dictionary)serializer.Deserialize(reader, typeof(Dictionary)); + birthdayWishes = HappyBirthday.ModHelper.Data.ReadJsonFile>(path); } //handle spouse birthday wishes. string spouseBirthdayFileDict = HappyBirthday.Config.translationInfo.getjsonForTranslation("SpouseBirthdayWishes", HappyBirthday.Config.translationInfo.currentTranslation); - string spousePath = Path.Combine(HappyBirthday.ModHelper.DirectoryPath, "Content", "Dialogue", HappyBirthday.Config.translationInfo.currentTranslation, spouseBirthdayFileDict); - if (!File.Exists(path)) + string spousePath = Path.Combine("Content", "Dialogue", HappyBirthday.Config.translationInfo.currentTranslation, spouseBirthdayFileDict); + if (!File.Exists(spousePath)) { - StreamWriter writer = new StreamWriter(spousePath); - serializer.Serialize(writer, defaultSpouseBirthdayWishes); + HappyBirthday.ModHelper.Data.WriteJsonFile>(spousePath, defaultSpouseBirthdayWishes); this.spouseBirthdayWishes = defaultSpouseBirthdayWishes; } else { - StreamReader reader = new StreamReader(path); - birthdayWishes = new Dictionary(); - birthdayWishes = (Dictionary)serializer.Deserialize(reader, typeof(Dictionary)); + spouseBirthdayWishes = HappyBirthday.ModHelper.Data.ReadJsonFile>(spousePath); } //Non-english logic From edf7d3f801c7e74f1c91848952eba250c849dd23 Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Thu, 6 Dec 2018 01:31:55 -0800 Subject: [PATCH 089/110] Fixed translation files for messages not being created properly. --- GeneralMods/HappyBirthday/BirthdayMessages.cs | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/GeneralMods/HappyBirthday/BirthdayMessages.cs b/GeneralMods/HappyBirthday/BirthdayMessages.cs index 36f906f7..49f72709 100644 --- a/GeneralMods/HappyBirthday/BirthdayMessages.cs +++ b/GeneralMods/HappyBirthday/BirthdayMessages.cs @@ -118,11 +118,11 @@ namespace Omegasis.HappyBirthday spouseBirthdayWishes = HappyBirthday.ModHelper.Data.ReadJsonFile>(spousePath); } - //Non-english logic + //Non-english logic for creating templates. foreach(var translation in HappyBirthday.Config.translationInfo.translationCodes) { if (translation.Key == "English") continue; - string basePath = Path.Combine(HappyBirthday.ModHelper.DirectoryPath, "Content", "Dialogue", translation.Key); + string basePath = Path.Combine("Content", "Dialogue", translation.Key); if (!Directory.Exists(basePath)) Directory.CreateDirectory(basePath); string tempBirthdayFile =Path.Combine(basePath,HappyBirthday.Config.translationInfo.getjsonForTranslation("BirthdayWishes", translation.Key)); string tempSpouseBirthdayFile =Path.Combine(basePath,HappyBirthday.Config.translationInfo.getjsonForTranslation("SpouseBirthdayWishes", translation.Key)); @@ -133,17 +133,23 @@ namespace Omegasis.HappyBirthday { tempBirthdayDict.Add(pair.Key, ""); } - StreamWriter writer = new StreamWriter(tempBirthdayFile); - serializer.Serialize(writer, tempBirthdayDict); - + if(!File.Exists(tempBirthdayFile)) HappyBirthday.ModHelper.Data.WriteJsonFile>(tempBirthdayFile, tempBirthdayDict); Dictionary tempSpouseBirthdayDict = new Dictionary(); foreach (var pair in defaultSpouseBirthdayWishes) { tempSpouseBirthdayDict.Add(pair.Key, ""); } - StreamWriter writer2 = new StreamWriter(tempSpouseBirthdayFile); - serializer.Serialize(writer, tempSpouseBirthdayDict); + + if (!File.Exists(tempSpouseBirthdayFile)) HappyBirthday.ModHelper.Data.WriteJsonFile>(tempSpouseBirthdayFile, tempSpouseBirthdayDict); + + //Set translated birthday info. + if (HappyBirthday.Config.translationInfo.currentTranslation == translation.Key) + { + this.birthdayWishes = tempBirthdayDict; + this.spouseBirthdayWishes = tempSpouseBirthdayDict; + } + } } From b69882cf20601f5067d73ec46cda1b77f45050d3 Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Thu, 6 Dec 2018 15:06:26 -0800 Subject: [PATCH 090/110] Fixed issue where player's portrait would render on quest board. --- GeneralMods/HappyBirthday/HappyBirthday.cs | 27 +++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/GeneralMods/HappyBirthday/HappyBirthday.cs b/GeneralMods/HappyBirthday/HappyBirthday.cs index 2056067c..a58b1097 100644 --- a/GeneralMods/HappyBirthday/HappyBirthday.cs +++ b/GeneralMods/HappyBirthday/HappyBirthday.cs @@ -76,6 +76,11 @@ namespace Omegasis.HappyBirthday ///
public GiftManager giftManager; + /// + /// Checks if the current billboard is the daily quest screen or not. + /// + bool isDailyQuestBoard; + /********* ** Public methods *********/ @@ -92,6 +97,7 @@ namespace Omegasis.HappyBirthday SaveEvents.BeforeSave += this.SaveEvents_BeforeSave; ControlEvents.KeyPressed += this.ControlEvents_KeyPressed; MenuEvents.MenuChanged += MenuEvents_MenuChanged; + MenuEvents.MenuClosed += MenuEvents_MenuClosed; GraphicsEvents.OnPostRenderGuiEvent += GraphicsEvents_OnPostRenderGuiEvent; StardewModdingAPI.Events.GraphicsEvents.OnPostRenderHudEvent += GraphicsEvents_OnPostRenderHudEvent; ; @@ -101,9 +107,15 @@ namespace Omegasis.HappyBirthday messages = new BirthdayMessages(); giftManager = new GiftManager(); + isDailyQuestBoard = false; } + private void MenuEvents_MenuClosed(object sender, EventArgsClickableMenuClosed e) + { + this.isDailyQuestBoard = false; + } + /// /// Used to properly display hovertext for all events happening on a calendar day. @@ -118,11 +130,15 @@ namespace Omegasis.HappyBirthday if (PlayerData.BirthdaySeason.ToLower() != Game1.currentSeason.ToLower()) return; if (Game1.activeClickableMenu is Billboard) { + if (isDailyQuestBoard) return; + if ((Game1.activeClickableMenu as Billboard).calendarDays == null) return; + int index = PlayerData.BirthdayDay; //Game1.player.FarmerRenderer.drawMiniPortrat(Game1.spriteBatch, new Vector2(Game1.activeClickableMenu.xPositionOnScreen + 152 + (index - 1) % 7 * 32 * 4, Game1.activeClickableMenu.yPositionOnScreen + 230 + (index - 1) / 7 * 32 * 4), 1f, 4f, 2, Game1.player); string hoverText = ""; List texts = new List(); + foreach (var clicky in (Game1.activeClickableMenu as Billboard).calendarDays) { if (clicky.containsPoint(Game1.getMouseX(), Game1.getMouseY())) @@ -173,6 +189,7 @@ namespace Omegasis.HappyBirthday if (PlayerData.BirthdaySeason.ToLower() != Game1.currentSeason.ToLower()) return; if (Game1.activeClickableMenu is Billboard) { + if (isDailyQuestBoard) return; int index = PlayerData.BirthdayDay; Game1.player.FarmerRenderer.drawMiniPortrat(Game1.spriteBatch, new Vector2(Game1.activeClickableMenu.xPositionOnScreen + 152 + (index - 1) % 7 * 32 * 4, Game1.activeClickableMenu.yPositionOnScreen + 230 + (index - 1) / 7 * 32 * 4), 0.5f, 4f, 2, Game1.player); } @@ -185,9 +202,17 @@ namespace Omegasis.HappyBirthday /// public void MenuEvents_MenuChanged(object sender, EventArgsClickableMenuChanged e) { - if (Game1.activeClickableMenu == null) return; + if (Game1.activeClickableMenu == null) + { + isDailyQuestBoard = false; + return; + } if(Game1.activeClickableMenu is Billboard) { + isDailyQuestBoard = ModHelper.Reflection.GetField((Game1.activeClickableMenu as Billboard), "dailyQuestBoard", true).GetValue(); + if (isDailyQuestBoard) return; + + Texture2D text = new Texture2D(Game1.graphics.GraphicsDevice,1,1); Color[] col = new Color[1]; col[0] = new Color(0, 0, 0, 1); From 0b914e17b55488ce25f90e8eec74d555c6191010 Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Thu, 6 Dec 2018 16:13:41 -0800 Subject: [PATCH 091/110] Added in spouse specific gifts, spouse birthday messages, and translated birthday messages. --- GeneralMods/HappyBirthday/BirthdayMessages.cs | 45 +++++++---- .../Framework/TranslationInfo.cs | 2 +- GeneralMods/HappyBirthday/GiftManager.cs | 80 ++++++++++++------- GeneralMods/HappyBirthday/HappyBirthday.cs | 34 +++++++- 4 files changed, 112 insertions(+), 49 deletions(-) diff --git a/GeneralMods/HappyBirthday/BirthdayMessages.cs b/GeneralMods/HappyBirthday/BirthdayMessages.cs index 49f72709..67dfe5ba 100644 --- a/GeneralMods/HappyBirthday/BirthdayMessages.cs +++ b/GeneralMods/HappyBirthday/BirthdayMessages.cs @@ -93,7 +93,7 @@ namespace Omegasis.HappyBirthday string path = Path.Combine( "Content", "Dialogue", HappyBirthday.Config.translationInfo.currentTranslation, birthdayFileDict); //Handle normal birthday wishes. - if (!File.Exists(path)) + if (!File.Exists(Path.Combine(HappyBirthday.ModHelper.DirectoryPath,path))) { HappyBirthday.ModHelper.Data.WriteJsonFile>(path, defaultBirthdayWishes); @@ -107,9 +107,9 @@ namespace Omegasis.HappyBirthday //handle spouse birthday wishes. string spouseBirthdayFileDict = HappyBirthday.Config.translationInfo.getjsonForTranslation("SpouseBirthdayWishes", HappyBirthday.Config.translationInfo.currentTranslation); string spousePath = Path.Combine("Content", "Dialogue", HappyBirthday.Config.translationInfo.currentTranslation, spouseBirthdayFileDict); - if (!File.Exists(spousePath)) + if (!File.Exists(Path.Combine(HappyBirthday.ModHelper.DirectoryPath,spousePath))) { - + HappyBirthday.ModMonitor.Log("Creating Spouse Messages", StardewModdingAPI.LogLevel.Alert); HappyBirthday.ModHelper.Data.WriteJsonFile>(spousePath, defaultSpouseBirthdayWishes); this.spouseBirthdayWishes = defaultSpouseBirthdayWishes; } @@ -122,32 +122,49 @@ namespace Omegasis.HappyBirthday foreach(var translation in HappyBirthday.Config.translationInfo.translationCodes) { if (translation.Key == "English") continue; - string basePath = Path.Combine("Content", "Dialogue", translation.Key); + string basePath = Path.Combine(HappyBirthday.ModHelper.DirectoryPath,"Content", "Dialogue", translation.Key); if (!Directory.Exists(basePath)) Directory.CreateDirectory(basePath); - string tempBirthdayFile =Path.Combine(basePath,HappyBirthday.Config.translationInfo.getjsonForTranslation("BirthdayWishes", translation.Key)); - string tempSpouseBirthdayFile =Path.Combine(basePath,HappyBirthday.Config.translationInfo.getjsonForTranslation("SpouseBirthdayWishes", translation.Key)); + string tempBirthdayFile =Path.Combine("Content", "Dialogue", translation.Key, HappyBirthday.Config.translationInfo.getjsonForTranslation("BirthdayWishes", translation.Key)); + string tempSpouseBirthdayFile =Path.Combine("Content", "Dialogue", translation.Key, HappyBirthday.Config.translationInfo.getjsonForTranslation("SpouseBirthdayWishes", translation.Key)); + - Dictionary tempBirthdayDict = new Dictionary(); - foreach(var pair in defaultBirthdayWishes) + if (!File.Exists(Path.Combine(HappyBirthday.ModHelper.DirectoryPath, tempBirthdayFile))) { - tempBirthdayDict.Add(pair.Key, ""); + + foreach (var pair in defaultBirthdayWishes) + { + tempBirthdayDict.Add(pair.Key, ""); + } + HappyBirthday.ModHelper.Data.WriteJsonFile>(tempBirthdayFile, tempBirthdayDict); } - if(!File.Exists(tempBirthdayFile)) HappyBirthday.ModHelper.Data.WriteJsonFile>(tempBirthdayFile, tempBirthdayDict); + else + { + tempBirthdayDict = HappyBirthday.ModHelper.Data.ReadJsonFile>(tempBirthdayFile); + } + Dictionary tempSpouseBirthdayDict = new Dictionary(); - foreach (var pair in defaultSpouseBirthdayWishes) + if (!File.Exists(Path.Combine(HappyBirthday.ModHelper.DirectoryPath, tempSpouseBirthdayFile))) { - tempSpouseBirthdayDict.Add(pair.Key, ""); + + foreach (var pair in defaultSpouseBirthdayWishes) + { + tempSpouseBirthdayDict.Add(pair.Key, ""); + } + HappyBirthday.ModHelper.Data.WriteJsonFile>(tempSpouseBirthdayFile, tempSpouseBirthdayDict); + } + else + { + tempBirthdayDict = HappyBirthday.ModHelper.Data.ReadJsonFile>(tempSpouseBirthdayFile); } - - if (!File.Exists(tempSpouseBirthdayFile)) HappyBirthday.ModHelper.Data.WriteJsonFile>(tempSpouseBirthdayFile, tempSpouseBirthdayDict); //Set translated birthday info. if (HappyBirthday.Config.translationInfo.currentTranslation == translation.Key) { this.birthdayWishes = tempBirthdayDict; this.spouseBirthdayWishes = tempSpouseBirthdayDict; + HappyBirthday.ModMonitor.Log("Language set to: " + translation); } } diff --git a/GeneralMods/HappyBirthday/Framework/TranslationInfo.cs b/GeneralMods/HappyBirthday/Framework/TranslationInfo.cs index 8f5c38bb..abc244eb 100644 --- a/GeneralMods/HappyBirthday/Framework/TranslationInfo.cs +++ b/GeneralMods/HappyBirthday/Framework/TranslationInfo.cs @@ -107,7 +107,7 @@ namespace Omegasis.HappyBirthday.Framework } catch (Exception err) { - + HappyBirthday.ModMonitor.Log("WTF SOMETHING IS WRONG!", StardewModdingAPI.LogLevel.Warn); //Vocalization.ModMonitor.Log(err.ToString()); //Vocalization.ModMonitor.Log("Attempted to get translation: " + translation); return ".json"; diff --git a/GeneralMods/HappyBirthday/GiftManager.cs b/GeneralMods/HappyBirthday/GiftManager.cs index 9b79c4ee..eb313029 100644 --- a/GeneralMods/HappyBirthday/GiftManager.cs +++ b/GeneralMods/HappyBirthday/GiftManager.cs @@ -61,9 +61,7 @@ namespace Omegasis.HappyBirthday public Dictionary defaultSpouseBirthdayGifts = new Dictionary() { - ["Universal_Love_Gift"] = "74 1 446 1 204 1 446 5 773 1", - ["Universal_Like_Gift"] = "-2 3 -7 1 -26 2 -75 5 -80 3 72 1 220 1 221 1 395 1 613 1 634 1 635 1 636 1 637 1 638 1 724 1 233 1 223 1 465 20 -79 5", - ["Universal_Neutral_Gift"] = "194 1 262 5 -74 5 -75 3 334 5 335 1 390 20 388 20 -81 5 -79 3", + ["Universal_Gifts"] = "74 1 446 1 204 1 446 5 773 1", ["Alex"] = "", ["Elliott"] = "", ["Harvey"] = "", @@ -90,28 +88,28 @@ namespace Omegasis.HappyBirthday { this.BirthdayGifts = new List(); this.loadVillagerBirthdayGifts(); + this.loadSpouseBirthdayGifts(); } /// /// Load birthday gift information from disk. Preferably from BirthdayGift.json in the mod's directory. /// /// - public Dictionary loadVillagerBirthdayGifts() + public void loadVillagerBirthdayGifts() { if (HappyBirthday.Config.useLegacyBirthdayFiles == false) { - if (File.Exists("BirthdayGifts.json")) + string villagerGifts = Path.Combine("Content", "Gifts", "BirthdayGifts.json"); + + if (File.Exists(Path.Combine(HappyBirthday.ModHelper.DirectoryPath, villagerGifts))) { - HappyBirthday.ModMonitor.Log("Load from BirthdayGifts.json"); - this.defaultBirthdayGifts = HappyBirthday.ModHelper.Data.ReadJsonFile>(Path.Combine(HappyBirthday.ModHelper.DirectoryPath, "BirthdayGifts.json")); - return this.defaultBirthdayGifts; + this.defaultBirthdayGifts = HappyBirthday.ModHelper.Data.ReadJsonFile>(villagerGifts); } else { - HappyBirthday.ModMonitor.Log("BirthdayGifts.json created from default birthday gift information and can be overridden."); - HappyBirthday.ModHelper.Data.WriteJsonFile>(Path.Combine(HappyBirthday.ModHelper.DirectoryPath, "BirthdayGifts.json"), this.defaultBirthdayGifts); - return defaultBirthdayGifts; + HappyBirthday.ModHelper.Data.WriteJsonFile>(villagerGifts, this.defaultBirthdayGifts); } + } else { @@ -119,12 +117,10 @@ namespace Omegasis.HappyBirthday if (File.Exists(Path.Combine(Game1.content.RootDirectory, "Data", "PossibleBirthdayGifts.xnb"))){ HappyBirthday.ModMonitor.Log("Legacy loading detected. Attempting to load from StardewValley/Content/Data/PossibleBirthdayGifts.xnb"); this.defaultBirthdayGifts = Game1.content.Load>(Path.Combine("Data", "PossibleBirthdayGifts")); - return this.defaultBirthdayGifts; } else { HappyBirthday.ModMonitor.Log("No birthday gift information found. Loading from internal birthday list"); - return this.defaultBirthdayGifts; } } } @@ -133,9 +129,19 @@ namespace Omegasis.HappyBirthday /// Used to load spouse birthday gifts from disk. /// /// - public Dictionary loadSpouseBirthdayGifts() + public void loadSpouseBirthdayGifts() { - throw new NotImplementedException(); + string spouseGifts = Path.Combine("Content", "Gifts", "SpouseBirthdayGifts.json"); + if (File.Exists(Path.Combine(HappyBirthday.ModHelper.DirectoryPath, spouseGifts))) + { + HappyBirthday.ModMonitor.Log("Load from SpouseBirthdayGifts.json"); + this.defaultSpouseBirthdayGifts = HappyBirthday.ModHelper.Data.ReadJsonFile>(spouseGifts); + } + else + { + HappyBirthday.ModMonitor.Log("SpouseBirthdayGifts.json created from default spouse birthday gift information and can be overridden."); + HappyBirthday.ModHelper.Data.WriteJsonFile>(spouseGifts, this.defaultSpouseBirthdayGifts); + } } @@ -147,7 +153,7 @@ namespace Omegasis.HappyBirthday try { // read from birthday gifts file - IDictionary data = loadVillagerBirthdayGifts(); + IDictionary data = defaultBirthdayGifts; data.TryGetValue(name, out string text); if (text != null) { @@ -221,31 +227,43 @@ namespace Omegasis.HappyBirthday if (Game1.player.getFriendshipHeartLevelForNPC(name) >= Config.minNeutralFriendshipGiftLevel && Game1.player.getFriendshipHeartLevelForNPC(name) <= Config.maxNeutralFriendshipGiftLevel) this.BirthdayGifts.AddRange(this.GetUniversalItems("Neutral", false)); } - + + //Add in spouse specific birthday gifts. if (Game1.player.isMarried()) { if (name == Game1.player.spouse) { - this.BirthdayGifts.Add((Item)new StardewValley.Object(204, 1)); - this.BirthdayGifts.Add((Item)new StardewValley.Object(220, 1)); - this.BirthdayGifts.Add((Item)new StardewValley.Object(221, 1)); - this.BirthdayGifts.Add((Item)new StardewValley.Object(223, 3)); - this.BirthdayGifts.Add((Item)new StardewValley.Object(233, 3)); - this.BirthdayGifts.Add((Item)new StardewValley.Object(234, 1)); - this.BirthdayGifts.Add((Item)new StardewValley.Object(608, 1)); //pumpkin pie - this.BirthdayGifts.Add((Item)new StardewValley.Object(612, 5)); - this.BirthdayGifts.Add((Item)new StardewValley.Object(773, 1)); //life elixer + this.BirthdayGifts.AddRange(getSpouseBirthdayGifts(name)); + this.BirthdayGifts.AddRange(getSpouseBirthdayGifts("Universal_Gifts")); } } - //TODO: Make different tiers of gifts depending on the friendship, and if it is the spouse. - /* - - */ - return gifts; } + /// + /// Get + /// + /// + /// + /// + private IEnumerable getSpouseBirthdayGifts(string npcName) + { + Dictionary data = this.defaultSpouseBirthdayGifts; + data.TryGetValue(npcName, out string text); + if (String.IsNullOrEmpty(text)) + yield break; + + // parse + string[] array = text.Split(' '); + for (int i = 0; i < array.Length; i += 2) + { + foreach (SObject obj in this.GetItems(Convert.ToInt32(array[i]), Convert.ToInt32(array[i + 1]))) + yield return obj; + } + } + + /// Get the items loved by all villagers. /// The group to get (one of Like, Love, Neutral). /// Whether to get data from Data\BirthdayGifts.xnb instead of the game data. diff --git a/GeneralMods/HappyBirthday/HappyBirthday.cs b/GeneralMods/HappyBirthday/HappyBirthday.cs index a58b1097..ad25efc2 100644 --- a/GeneralMods/HappyBirthday/HappyBirthday.cs +++ b/GeneralMods/HappyBirthday/HappyBirthday.cs @@ -111,6 +111,11 @@ namespace Omegasis.HappyBirthday } + /// + /// Used to check when a menu is closed. + /// + /// + /// private void MenuEvents_MenuClosed(object sender, EventArgsClickableMenuClosed e) { this.isDailyQuestBoard = false; @@ -318,13 +323,36 @@ namespace Omegasis.HappyBirthday if (npc is Child || npc is Horse || npc is Junimo || npc is Monster || npc is Pet) continue; + //Add in birthday dialogues for npc. try { if (Game1.player.getFriendshipHeartLevelForNPC(npc.Name) >= Config.minimumFriendshipLevelForBirthdayWish) { - Dialogue d = new Dialogue(messages.birthdayWishes[npc.Name], npc); - npc.CurrentDialogue.Push(d); - if (npc.CurrentDialogue.ElementAt(0) != d) npc.setNewDialogue(messages.birthdayWishes[npc.Name]); + bool spouseMessage = false; //Used to determine if there is a valid spouse message for the player. If false load in the generic birthday wish. + //Check if npc name is spouse's name. If no spouse then add in generic dialogue. + if (messages.spouseBirthdayWishes.ContainsKey(npc.Name) && Game1.player.isMarried()) + { + Monitor.Log("Spouse Checks out"); + //Check to see if spouse message exists. + if (!String.IsNullOrEmpty(messages.spouseBirthdayWishes[npc.Name])) + { + spouseMessage = true; + Dialogue d = new Dialogue(messages.spouseBirthdayWishes[npc.Name], npc); + npc.CurrentDialogue.Push(d); + if (npc.CurrentDialogue.ElementAt(0) != d) npc.setNewDialogue(messages.spouseBirthdayWishes[npc.Name]); + } + else + { + Monitor.Log("No spouse message???", LogLevel.Warn); + } + } + if (spouseMessage == false) + { + //Load in + Dialogue d = new Dialogue(messages.birthdayWishes[npc.Name], npc); + npc.CurrentDialogue.Push(d); + if (npc.CurrentDialogue.ElementAt(0) != d) npc.setNewDialogue(messages.birthdayWishes[npc.Name]); + } } } catch From d0f6babb76e641502bfc4e48c8cdaa5cfae531bc Mon Sep 17 00:00:00 2001 From: Joshua Navarro Date: Sun, 9 Dec 2018 19:57:12 -0800 Subject: [PATCH 092/110] Added multiplayer support for HappyBirthday. Fixed night owl glitches. --- .../AdvancedSaveBackup.csproj | 6 +-- .../AdvancedSaveBackup/packages.config | 2 +- GeneralMods/AutoSpeed/AutoSpeed.csproj | 6 +-- GeneralMods/AutoSpeed/packages.config | 2 +- .../BillboardAnywhere.csproj | 6 +-- GeneralMods/BillboardAnywhere/packages.config | 2 +- .../BuildEndurance/BuildEndurance.csproj | 6 +-- GeneralMods/BuildEndurance/packages.config | 2 +- GeneralMods/BuildHealth/BuildHealth.csproj | 6 +-- GeneralMods/BuildHealth/packages.config | 2 +- .../BuyBackCollectables.csproj | 6 +-- .../BuyBackCollectables/packages.config | 2 +- .../CustomNPCFramework.csproj | 6 +-- .../CustomNPCFramework/packages.config | 2 +- .../DailyQuestAnywhere.csproj | 6 +-- .../DailyQuestAnywhere/packages.config | 2 +- .../Fall28SnowDay/Fall28SnowDay.csproj | 6 +-- GeneralMods/Fall28SnowDay/packages.config | 2 +- .../FarmersMarketStall.csproj | 6 +-- .../FarmersMarketStall/packages.config | 2 +- .../Framework/MultiplayerSupport.cs | 50 +++++++------------ .../HappyBirthday/Framework/PlayerData.cs | 2 +- GeneralMods/HappyBirthday/HappyBirthday.cs | 49 ++++++++++++++++-- .../HappyBirthday/HappyBirthday.csproj | 6 +-- GeneralMods/HappyBirthday/manifest.json | 4 +- GeneralMods/HappyBirthday/packages.config | 2 +- GeneralMods/MapEvents/EventSystem.csproj | 6 +-- GeneralMods/MapEvents/packages.config | 2 +- GeneralMods/MoreRain/MoreRain.csproj | 6 +-- GeneralMods/MoreRain/packages.config | 2 +- .../MuseumRearranger/MuseumRearranger.csproj | 6 +-- GeneralMods/MuseumRearranger/packages.config | 2 +- GeneralMods/NightOwl/NightOwl.cs | 23 ++++++++- GeneralMods/NightOwl/NightOwl.csproj | 6 +-- GeneralMods/NightOwl/packages.config | 2 +- GeneralMods/NoMorePets/NoMorePets.csproj | 6 +-- GeneralMods/NoMorePets/packages.config | 2 +- GeneralMods/SaveAnywhere/SaveAnywhere.csproj | 6 +-- GeneralMods/SaveAnywhere/packages.config | 2 +- .../SimpleSoundManager.csproj | 6 +-- .../SimpleSoundManager/packages.config | 2 +- .../StardewSymphonyRemastered.csproj | 6 +-- .../StardewSymphonyRemastered/packages.config | 2 +- GeneralMods/StardustCore/StardustCore.csproj | 6 +-- GeneralMods/StardustCore/packages.config | 2 +- .../SundropMapEvents/SundropMapEvents.csproj | 6 +-- GeneralMods/SundropMapEvents/packages.config | 2 +- GeneralMods/TimeFreeze/TimeFreeze.csproj | 6 +-- GeneralMods/TimeFreeze/packages.config | 2 +- .../Vocalization/Vocalization.csproj | 6 +-- .../Vocalization/Vocalization/packages.config | 2 +- 51 files changed, 181 insertions(+), 131 deletions(-) diff --git a/GeneralMods/AdvancedSaveBackup/AdvancedSaveBackup.csproj b/GeneralMods/AdvancedSaveBackup/AdvancedSaveBackup.csproj index eeae3c37..e3de5277 100644 --- a/GeneralMods/AdvancedSaveBackup/AdvancedSaveBackup.csproj +++ b/GeneralMods/AdvancedSaveBackup/AdvancedSaveBackup.csproj @@ -87,15 +87,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/GeneralMods/AdvancedSaveBackup/packages.config b/GeneralMods/AdvancedSaveBackup/packages.config index af793ad3..98c7e68d 100644 --- a/GeneralMods/AdvancedSaveBackup/packages.config +++ b/GeneralMods/AdvancedSaveBackup/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/GeneralMods/AutoSpeed/AutoSpeed.csproj b/GeneralMods/AutoSpeed/AutoSpeed.csproj index 23545179..fdbcc978 100644 --- a/GeneralMods/AutoSpeed/AutoSpeed.csproj +++ b/GeneralMods/AutoSpeed/AutoSpeed.csproj @@ -85,15 +85,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/GeneralMods/AutoSpeed/packages.config b/GeneralMods/AutoSpeed/packages.config index af793ad3..98c7e68d 100644 --- a/GeneralMods/AutoSpeed/packages.config +++ b/GeneralMods/AutoSpeed/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/GeneralMods/BillboardAnywhere/BillboardAnywhere.csproj b/GeneralMods/BillboardAnywhere/BillboardAnywhere.csproj index a3638df8..7772b107 100644 --- a/GeneralMods/BillboardAnywhere/BillboardAnywhere.csproj +++ b/GeneralMods/BillboardAnywhere/BillboardAnywhere.csproj @@ -87,15 +87,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/GeneralMods/BillboardAnywhere/packages.config b/GeneralMods/BillboardAnywhere/packages.config index af793ad3..98c7e68d 100644 --- a/GeneralMods/BillboardAnywhere/packages.config +++ b/GeneralMods/BillboardAnywhere/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/GeneralMods/BuildEndurance/BuildEndurance.csproj b/GeneralMods/BuildEndurance/BuildEndurance.csproj index 0fd10fa4..955526ea 100644 --- a/GeneralMods/BuildEndurance/BuildEndurance.csproj +++ b/GeneralMods/BuildEndurance/BuildEndurance.csproj @@ -86,15 +86,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/GeneralMods/BuildEndurance/packages.config b/GeneralMods/BuildEndurance/packages.config index af793ad3..98c7e68d 100644 --- a/GeneralMods/BuildEndurance/packages.config +++ b/GeneralMods/BuildEndurance/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/GeneralMods/BuildHealth/BuildHealth.csproj b/GeneralMods/BuildHealth/BuildHealth.csproj index d1627a93..815eb301 100644 --- a/GeneralMods/BuildHealth/BuildHealth.csproj +++ b/GeneralMods/BuildHealth/BuildHealth.csproj @@ -86,15 +86,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/GeneralMods/BuildHealth/packages.config b/GeneralMods/BuildHealth/packages.config index af793ad3..98c7e68d 100644 --- a/GeneralMods/BuildHealth/packages.config +++ b/GeneralMods/BuildHealth/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/GeneralMods/BuyBackCollectables/BuyBackCollectables.csproj b/GeneralMods/BuyBackCollectables/BuyBackCollectables.csproj index 488853fb..f5472a4e 100644 --- a/GeneralMods/BuyBackCollectables/BuyBackCollectables.csproj +++ b/GeneralMods/BuyBackCollectables/BuyBackCollectables.csproj @@ -88,15 +88,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/GeneralMods/BuyBackCollectables/packages.config b/GeneralMods/BuyBackCollectables/packages.config index af793ad3..98c7e68d 100644 --- a/GeneralMods/BuyBackCollectables/packages.config +++ b/GeneralMods/BuyBackCollectables/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/GeneralMods/CustomNPCFramework/CustomNPCFramework.csproj b/GeneralMods/CustomNPCFramework/CustomNPCFramework.csproj index 20071e85..3c28b92c 100644 --- a/GeneralMods/CustomNPCFramework/CustomNPCFramework.csproj +++ b/GeneralMods/CustomNPCFramework/CustomNPCFramework.csproj @@ -119,15 +119,15 @@ - + - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - +

wp#MTUSR+Tje;KsSiC0CcOnL4tlL-9RfV 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 S9=i - - - -

wp#MTUSR+Tje;KsSiC0CcOnL4tlL-9RfV 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 S9=i + + + +