diff --git a/GeneralMods/AdvancedSaveBackup/manifest.json b/GeneralMods/AdvancedSaveBackup/manifest.json index f4afb5a4..8db3680c 100644 --- a/GeneralMods/AdvancedSaveBackup/manifest.json +++ b/GeneralMods/AdvancedSaveBackup/manifest.json @@ -1,7 +1,7 @@ { "Name": "Advanced Save Backup", "Author": "Alpha_Omegasis", - "Version": "1.5.0", + "Version": "1.6.0", "Description": "Backs up your save files when loading SMAPI and every in game night when saving.", "UniqueID": "Omegasis.AdvancedSaveBackup", "EntryDll": "AdvancedSaveBackup.dll", diff --git a/GeneralMods/AutoSpeed/manifest.json b/GeneralMods/AutoSpeed/manifest.json index 5dd4808f..39a0695d 100644 --- a/GeneralMods/AutoSpeed/manifest.json +++ b/GeneralMods/AutoSpeed/manifest.json @@ -1,7 +1,7 @@ { "Name": "Auto Speed", "Author": "Alpha_Omegasis", - "Version": "1.6.0", + "Version": "1.7.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 d8d45b95..c35ec23e 100644 --- a/GeneralMods/BillboardAnywhere/manifest.json +++ b/GeneralMods/BillboardAnywhere/manifest.json @@ -1,7 +1,7 @@ { "Name": "Billboard Anywhere", "Author": "Alpha_Omegasis", - "Version": "1.6.0", + "Version": "1.7.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 6829e663..3b75abd3 100644 --- a/GeneralMods/BuildEndurance/manifest.json +++ b/GeneralMods/BuildEndurance/manifest.json @@ -1,7 +1,7 @@ { "Name": "Build Endurance", "Author": "Alpha_Omegasis", - "Version": "1.6.0", + "Version": "1.7.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 dff2d592..808dd39d 100644 --- a/GeneralMods/BuildHealth/manifest.json +++ b/GeneralMods/BuildHealth/manifest.json @@ -1,7 +1,7 @@ { "Name": "Build Health", "Author": "Alpha_Omegasis", - "Version": "1.6.0", + "Version": "1.7.0", "Description": "Increase your health as you play.", "UniqueID": "Omegasis.BuildHealth", "EntryDll": "BuildHealth.dll", diff --git a/GeneralMods/BuyBackCollectables/manifest.json b/GeneralMods/BuyBackCollectables/manifest.json index e700b1b2..a420d9ca 100644 --- a/GeneralMods/BuyBackCollectables/manifest.json +++ b/GeneralMods/BuyBackCollectables/manifest.json @@ -1,7 +1,7 @@ { "Name": "Buy Back Collectables", "Author": "Alpha_Omegasis", - "Version": "1.5.0", + "Version": "1.6.0", "Description": "Lets you buy back any obtained collectable.", "UniqueID": "Omegasis.BuyBackCollectables", "EntryDll": "BuyBackCollectables.dll", diff --git a/GeneralMods/CustomNPCFramework/Class1.cs b/GeneralMods/CustomNPCFramework/Class1.cs index 03bac289..117b59eb 100644 --- a/GeneralMods/CustomNPCFramework/Class1.cs +++ b/GeneralMods/CustomNPCFramework/Class1.cs @@ -66,6 +66,8 @@ namespace CustomNPCFramework /// Keeps track of all of the asets/textures added in by the framework. Also manages all of the asset managers that are the ones actually managing the textures. /// public static AssetPool assetPool; + + public static IManifest Manifest; /// /// Ran when loading the SMAPI. Used to initialize data. @@ -75,6 +77,7 @@ namespace CustomNPCFramework { ModHelper = this.Helper; ModMonitor = this.Monitor; + Manifest = ModManifest; StardewModdingAPI.Events.SaveEvents.AfterLoad += SaveEvents_LoadChar; diff --git a/GeneralMods/CustomNPCFramework/Framework/Graphics/DirectionalTexture.cs b/GeneralMods/CustomNPCFramework/Framework/Graphics/DirectionalTexture.cs index d5a3aca5..4303cf5a 100644 --- a/GeneralMods/CustomNPCFramework/Framework/Graphics/DirectionalTexture.cs +++ b/GeneralMods/CustomNPCFramework/Framework/Graphics/DirectionalTexture.cs @@ -66,7 +66,7 @@ namespace CustomNPCFramework.Framework.Graphics public DirectionalTexture(IModHelper helper ,NamePairings info, string path, Direction direction = Direction.down) { - new Texture2DExtended(helper, path); + new Texture2DExtended(helper, Class1.Manifest, path); string leftString= Class1.getShortenedDirectory(Path.Combine(path, info.leftString + ".png")).Remove(0, 1); string rightString = Class1.getShortenedDirectory(Path.Combine(path, info.rightString + ".png")).Remove(0, 1); @@ -74,10 +74,10 @@ namespace CustomNPCFramework.Framework.Graphics string downString = Class1.getShortenedDirectory(Path.Combine(path, info.downString + ".png")).Remove(0, 1); - this.leftTexture = new Texture2DExtended(helper, leftString); - this.rightTexture = new Texture2DExtended(helper, rightString); - this.upTexture = new Texture2DExtended(helper, upString); - this.downTexture = new Texture2DExtended(helper, downString); + this.leftTexture = new Texture2DExtended(helper, Class1.Manifest, leftString); + this.rightTexture = new Texture2DExtended(helper, Class1.Manifest, rightString); + this.upTexture = new Texture2DExtended(helper, Class1.Manifest, upString); + this.downTexture = new Texture2DExtended(helper, Class1.Manifest, downString); if (direction == Direction.left) this.currentTexture = leftTexture; if (direction == Direction.right) this.currentTexture = rightTexture; diff --git a/GeneralMods/DailyQuestAnywhere/manifest.json b/GeneralMods/DailyQuestAnywhere/manifest.json index 1bc9f1fb..319acf00 100644 --- a/GeneralMods/DailyQuestAnywhere/manifest.json +++ b/GeneralMods/DailyQuestAnywhere/manifest.json @@ -1,7 +1,7 @@ { "Name": "Daily Quest Anywhere", "Author": "Alpha_Omegasis", - "Version": "1.5.0", + "Version": "1.6.0", "Description": "Open the daily quest board from anywhere in the game.", "UniqueID": "Omegasis.DailyQuestAnywhere", "EntryDll": "DailyQuestAnywhere.dll", diff --git a/GeneralMods/Fall28SnowDay/manifest.json b/GeneralMods/Fall28SnowDay/manifest.json index be64d502..5681c600 100644 --- a/GeneralMods/Fall28SnowDay/manifest.json +++ b/GeneralMods/Fall28SnowDay/manifest.json @@ -1,7 +1,7 @@ { "Name": "Fall 28 Snow Day", "Author": "Alpha_Omegasis", - "Version": "1.5.0", + "Version": "1.6.0", "Description": "Makes it snow on Fall 28, which makes a good explanation for all the snow on the next day.", "UniqueID": "Omegasis.Fall28SnowDay", "EntryDll": "Fall28SnowDay.dll", diff --git a/GeneralMods/HappyBirthday/BirthdayMessages.cs b/GeneralMods/HappyBirthday/BirthdayMessages.cs index 67dfe5ba..49c33786 100644 --- a/GeneralMods/HappyBirthday/BirthdayMessages.cs +++ b/GeneralMods/HappyBirthday/BirthdayMessages.cs @@ -95,7 +95,7 @@ namespace Omegasis.HappyBirthday //Handle normal birthday wishes. if (!File.Exists(Path.Combine(HappyBirthday.ModHelper.DirectoryPath,path))) { - + HappyBirthday.ModMonitor.Log("Creating Villager Birthday Messages", StardewModdingAPI.LogLevel.Alert); HappyBirthday.ModHelper.Data.WriteJsonFile>(path, defaultBirthdayWishes); this.birthdayWishes = defaultBirthdayWishes; } @@ -156,7 +156,7 @@ namespace Omegasis.HappyBirthday } else { - tempBirthdayDict = HappyBirthday.ModHelper.Data.ReadJsonFile>(tempSpouseBirthdayFile); + tempSpouseBirthdayDict = HappyBirthday.ModHelper.Data.ReadJsonFile>(tempSpouseBirthdayFile); } //Set translated birthday info. diff --git a/GeneralMods/HappyBirthday/Changelog.txt b/GeneralMods/HappyBirthday/Changelog.txt index 0ce95022..e4b23240 100644 --- a/GeneralMods/HappyBirthday/Changelog.txt +++ b/GeneralMods/HappyBirthday/Changelog.txt @@ -1,26 +1,27 @@ Happy Birthday Change Log ~~~~~~~~~~~~~~~~ -1.8.0 Changelog +Manifest 1.8.0 Changelog ~~~~~~~~~~~~~~~~ -General Changes +General Changes + -NPCs now wish you a happy birthday if you have 2+ hearts with them. (Configurable in config file) + -A language can be set for birthday messages in the Config.json file. -Added support for birthday messages to be in .json files for easier editing. -Added support for birthday messages to be in multiple supported languages - -English - -Spanish - -German - -Chinese - -Japanese - -Brazillian Portuguese - -Added in spouse specific birthday dialogue messages which can be selected by the players. - -Added in multiple langages for spouse birthday messages. + -English + -Spanish + -German + -Chinese + -Japanese + -Brazilian Portuguese + -Added in spouse specific birthday dialogue messages which can be created by the players. + -Added in multiple languages for spouse birthday messages. -Added in birthday gifts to be in .json files. -Added in a new pool of spouse specific gifts that can be set by the player located in SpouseBirthdayGifts.json -Added in support for loading legacy birthday gift.xnb info from StardewValley/Content/Data/PossibleBirthdayGifts.xnb -Added in support for loading legacy birthday messages from StardewValley/Content/Data/BirthdayMessages.xnb -Added in player portraits to be shown on the callendar. - Multiplayer changes: - -Added in multiplayer portraits to be shown on the callendar. + -Added in multiplayer farmhand portraits to be shown on the callendar. -Added in a hud message that displays when another player has a birthday. \ No newline at end of file diff --git a/GeneralMods/HappyBirthday/GiftManager.cs b/GeneralMods/HappyBirthday/GiftManager.cs index eb313029..18972ab3 100644 --- a/GeneralMods/HappyBirthday/GiftManager.cs +++ b/GeneralMods/HappyBirthday/GiftManager.cs @@ -117,6 +117,9 @@ 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")); + + string villagerGifts = Path.Combine("Content", "Gifts", "BirthdayGifts.json"); + HappyBirthday.ModHelper.Data.WriteJsonFile>(villagerGifts, this.defaultBirthdayGifts); } else { diff --git a/GeneralMods/HappyBirthday/HappyBirthday.cs b/GeneralMods/HappyBirthday/HappyBirthday.cs index f41f8a82..86742385 100644 --- a/GeneralMods/HappyBirthday/HappyBirthday.cs +++ b/GeneralMods/HappyBirthday/HappyBirthday.cs @@ -127,6 +127,7 @@ namespace Omegasis.HappyBirthday messages = new BirthdayMessages(); giftManager = new GiftManager(); + messages.createBirthdayGreetings(); isDailyQuestBoard = false; ModHelper.Events.Multiplayer.ModMessageReceived += Multiplayer_ModMessageReceived; @@ -368,7 +369,7 @@ namespace Omegasis.HappyBirthday this.MigrateLegacyData(); this.PlayerData = this.Helper.Data.ReadJsonFile(this.DataFilePath) ?? new PlayerData(); - messages.createBirthdayGreetings(); + ; if (PlayerBirthdayData != null) { @@ -495,6 +496,7 @@ namespace Omegasis.HappyBirthday if (Game1.currentSpeaker != null) { string name = Game1.currentSpeaker.Name; + if (Game1.player.getFriendshipHeartLevelForNPC(name) <= Config.minNeutralFriendshipGiftLevel) return; if (this.IsBirthday() && this.VillagerQueue.Contains(name)) { try diff --git a/GeneralMods/HappyBirthday/manifest.json b/GeneralMods/HappyBirthday/manifest.json index 6b5cc92c..8a984cae 100644 --- a/GeneralMods/HappyBirthday/manifest.json +++ b/GeneralMods/HappyBirthday/manifest.json @@ -1,16 +1,11 @@ { "Name": "Happy Birthday", "Author": "Alpha_Omegasis", - "Version": { - "MajorVersion": 1, - "MinorVersion": 8, - "PatchVersion": 0, - "Build": null - }, + "Version": "1.8.0", "MinimumApiVersion": "1.15", "Description": "Adds the farmer's birthday to the game.", "UniqueID": "Omegasis.HappyBirthday", "EntryDll": "HappyBirthday.dll", - "MinimumApiVersion": "2.0", + "MinimumApiVersion": "2.9", "UpdateKeys": [ "Nexus:520" ] } diff --git a/GeneralMods/MoreRain/manifest.json b/GeneralMods/MoreRain/manifest.json index 481fc266..2923d02b 100644 --- a/GeneralMods/MoreRain/manifest.json +++ b/GeneralMods/MoreRain/manifest.json @@ -1,7 +1,7 @@ { "Name": "More Rain", "Author": "Alpha_Omegasis", - "Version": "1.6.1", + "Version": "1.7.0", "Description": "Change how much it rains in the game.", "UniqueID": "Omegasis.MoreRain", "EntryDll": "MoreRain.dll", diff --git a/GeneralMods/MuseumRearranger/manifest.json b/GeneralMods/MuseumRearranger/manifest.json index 4f390cda..8f28f6fe 100644 --- a/GeneralMods/MuseumRearranger/manifest.json +++ b/GeneralMods/MuseumRearranger/manifest.json @@ -1,7 +1,7 @@ { "Name": "Museum Rearranger", "Author": "Alpha_Omegasis", - "Version": "1.6.0", + "Version": "1.7.0", "Description": "Lets you rearrange the museum without needing to donate something.", "UniqueID": "Omegasis.MuseumRearranger", "EntryDll": "MuseumRearranger.dll", diff --git a/GeneralMods/NightOwl/manifest.json b/GeneralMods/NightOwl/manifest.json index d937a0fe..070c5081 100644 --- a/GeneralMods/NightOwl/manifest.json +++ b/GeneralMods/NightOwl/manifest.json @@ -1,7 +1,7 @@ { "Name": "Night Owl", "Author": "Alpha_Omegasis", - "Version": "1.7.1", + "Version": "1.8.0", "Description": "Lets you stay up all night.", "UniqueID": "Omegasis.NightOwl", "EntryDll": "NightOwl.dll", diff --git a/GeneralMods/NoMorePets/manifest.json b/GeneralMods/NoMorePets/manifest.json index 64ca1569..4f44bd43 100644 --- a/GeneralMods/NoMorePets/manifest.json +++ b/GeneralMods/NoMorePets/manifest.json @@ -1,7 +1,7 @@ { "Name": "No More Pets", "Author": "Alpha_Omegasis", - "Version": "1.5.0", + "Version": "1.6.0", "Description": "Removes all pets from the game.", "UniqueID": "Omegasis.NoMorePets", "EntryDll": "NoMorePets.dll", diff --git a/GeneralMods/Revitalize/Framework/Graphics/Animations/Animation.cs b/GeneralMods/Revitalize/Framework/Graphics/Animations/Animation.cs new file mode 100644 index 00000000..70c86246 --- /dev/null +++ b/GeneralMods/Revitalize/Framework/Graphics/Animations/Animation.cs @@ -0,0 +1,80 @@ +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 Revitalize.Framework.Graphics.Animations +{ + /// + /// A custom class used to deal with custom animations/ + /// + public class Animation + { + /// + /// The source rectangle on the texture to display. + /// + public Rectangle sourceRectangle; + /// + /// 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(); + + public Animation() + { + this.sourceRectangle = new Rectangle(0,0,16,16); + this.frameCountUntilNextAnimation = -1; + this.frameDuration = -1; + } + + /// + /// Constructor that causes the animation frame count to be set to -1; This forces it to never change. + /// + /// The draw source for this animation. + public Animation(Rectangle SourceRectangle) + { + sourceRectangle = SourceRectangle; + this.frameCountUntilNextAnimation = -1; + frameDuration = -1; + } + + /// + /// Constructor. + /// + /// The draw source for this animation. + /// How many on screen frames this animation stays for. Every draw frame decrements an active animation by 1 frame. Set this to -1 to have it be on the screen infinitely. + public Animation(Rectangle SourceRectangle,int existForXFrames) + { + sourceRectangle = SourceRectangle; + frameDuration = existForXFrames; + } + + /// + /// Decrements the amount of frames this animation is on the screen for by 1. + /// + public void tickAnimationFrame() + { + frameCountUntilNextAnimation--; + } + + /// + /// This sets the animation frame count to be the max duration. I.E restart the timer. + /// + public void startAnimation() + { + frameCountUntilNextAnimation = frameDuration; + } + + + } +} diff --git a/GeneralMods/Revitalize/Framework/Graphics/Animations/AnimationManager.cs b/GeneralMods/Revitalize/Framework/Graphics/Animations/AnimationManager.cs new file mode 100644 index 00000000..4611ceba --- /dev/null +++ b/GeneralMods/Revitalize/Framework/Graphics/Animations/AnimationManager.cs @@ -0,0 +1,290 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using StardewModdingAPI; +using StardewValley; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Revitalize.Framework.Graphics.Animations +{ + /// + /// Used to play animations for Stardust.CoreObject type objects and all objects that extend from it. In draw code of object make sure to use this info instead. + /// + public class AnimationManager + { + 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; + public bool enabled; + + + public string animationDataString; + + + public bool IsNull + { + get + { + if (this.defaultDrawFrame == null && this.objectTexture == null) return true; + else return false; + } + } + /// + /// Empty constructor. + /// + public AnimationManager() + { + + } + + + /// + /// Constructor for Animation Manager class. + /// + /// The texture that will be used for the animation. This is typically the same as the object this class is attached to. + /// This is used if no animations will be available to the animation manager. + /// Whether or not animations play by default. Default value is true. + public AnimationManager (Texture2DExtended ObjectTexture,Animation DefaultFrame, bool EnabledByDefault=true) + { + currentAnimationListIndex = 0; + this.objectTexture = ObjectTexture; + this.defaultDrawFrame = DefaultFrame; + this.enabled = EnabledByDefault; + currentAnimation = this.defaultDrawFrame; + this.currentAnimationName = ""; + this.animationDataString = ""; + } + + 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.animationDataString = animationString; + this.animations = parseAnimationsFromXNB(animationString); + bool f = animations.TryGetValue(startingAnimationKey, out currentAnimationList); + if (f == true) + { + setAnimation(startingAnimationKey, startingAnimationFrame); + } + else + { + currentAnimation = this.defaultDrawFrame; + this.currentAnimationName = ""; + } + } + + 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; + this.currentAnimationName = ""; + } + } + + /// + /// Update the animation frame once after drawing the object. + /// + public void tickAnimation() + { + try + { + if (this.currentAnimation.frameDuration == -1 || this.enabled == false || this.currentAnimation == this.defaultDrawFrame) return; //This is if this is a default animation or the animation stops here. + if (this.currentAnimation.frameCountUntilNextAnimation == 0) getNextAnimation(); + this.currentAnimation.tickAnimationFrame(); + } + catch(Exception err) + { + ModCore.ModMonitor.Log("An internal error occured when trying to tick the animation."); + ModCore.ModMonitor.Log(err.ToString(), StardewModdingAPI.LogLevel.Error); + } + } + + /// + /// Get the next animation in the list of animations. + /// + public void getNextAnimation() + { + currentAnimationListIndex++; + if(currentAnimationListIndex==currentAnimationList.Count) //If the animation frame I'm tryting to get is 1 outside my list length, reset the list. + { + currentAnimationListIndex = 0; + } + + //Get the next animation from the list and reset it's counter to the starting frame value. + this.currentAnimation = currentAnimationList[currentAnimationListIndex]; + this.currentAnimation.startAnimation(); + } + + /// + /// Gets the animation from the dictionary of all animations available. + /// + /// + /// + /// + public bool setAnimation(string AnimationName, int StartingFrame=0) + { + List dummyList = new List(); + bool f = animations.TryGetValue(AnimationName, out dummyList); + if (f == true) + { + if (dummyList.Count != 0 || StartingFrame>=dummyList.Count) + { + currentAnimationList = dummyList; + currentAnimation = currentAnimationList[StartingFrame]; + currentAnimationName = AnimationName; + return true; + } + else + { + if(dummyList.Count==0) ModCore.ModMonitor.Log("Error: Current animation " + AnimationName+ " has no animation frames associated with it."); + if (dummyList.Count > dummyList.Count) ModCore.ModMonitor.Log("Error: Animation frame "+ StartingFrame+ " is outside the range of provided animations. Which has a maximum count of "+ dummyList.Count); + return false; + } + } + else + { + ModCore.ModMonitor.Log("Error setting animation: " + AnimationName + " animation does not exist in list of available animations. Did you make sure to add it in?"); + return false; + } + } + + /// + /// Sets the animation manager to an on state, meaning that this animation will update on the draw frame. + /// + public void enableAnimation() + { + this.enabled = true; + } + + /// + /// Sets the animation manager to an off state, meaning that this animation will no longer update on the draw frame. + /// + public void disableAnimation() + { + this.enabled = false; + } + + public static Dictionary> parseAnimationsFromXNB(string s) + { + string[] array = s.Split('*'); + Dictionary> parsedDic = new Dictionary>(); + foreach(var v in array) + { + // Log.AsyncC(v); + string[] AnimationArray = v.Split(' '); + if (parsedDic.ContainsKey(AnimationArray[0])) + { + List aniList = new List(); + aniList = parseAnimationFromString(v); + foreach(var ani in aniList) { + parsedDic[AnimationArray[0]].Add(ani); + } + + } + else + { + parsedDic.Add(AnimationArray[0], new List()); + List aniList = new List(); + aniList = parseAnimationFromString(v); + foreach (var ani in aniList) + { + parsedDic[AnimationArray[0]].Add(ani); + } + } + } + return parsedDic; + } + + public static List parseAnimationFromString(string s) + { + List ok = new List(); + string[] array2 = s.Split('>'); + foreach(var q in array2) { + string[] array = q.Split(' '); + try + { + Animation ani = new Animation(new Rectangle(Convert.ToInt32(array[1]), Convert.ToInt32(array[2]), Convert.ToInt32(array[3]), Convert.ToInt32(array[4])), Convert.ToInt32(array[5])); + // ModCore.ModMonitor.Log(ani.sourceRectangle.ToString()); + ok.Add(ani); + } + catch(Exception err) + { + err.ToString(); + continue; + } + + } + return ok; + } + /// + /// Used to handle general drawing functionality using the animation manager. + /// + /// We need a spritebatch to draw. + /// The texture to draw. + /// The onscreen position to draw to. + /// The source rectangle on the texture to draw. + /// The color to draw the thing passed in. + /// The rotation of the animation texture being drawn. + /// The origin of the texture. + /// The scale of the texture. + /// Effects that get applied to the sprite. + /// The dept at which to draw the texture. + public void draw(SpriteBatch spriteBatch,Texture2D texture, Vector2 Position, Rectangle? sourceRectangle,Color drawColor, float rotation, Vector2 origin, float scale,SpriteEffects spriteEffects, float LayerDepth) + { + //Log.AsyncC("Animation Manager is working!"); + spriteBatch.Draw(texture, Position, sourceRectangle, drawColor, rotation, origin, scale, spriteEffects, LayerDepth); + try + { + this.tickAnimation(); + // Log.AsyncC("Tick animation"); + } + catch (Exception err) + { + ModCore.ModMonitor.Log(err.ToString()); + } + } + + public Texture2DExtended getExtendedTexture() + { + 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/Revitalize/Framework/Objects/BasicItemInformation.cs b/GeneralMods/Revitalize/Framework/Objects/BasicItemInformation.cs index 7c32791c..3f29e0f4 100644 --- a/GeneralMods/Revitalize/Framework/Objects/BasicItemInformation.cs +++ b/GeneralMods/Revitalize/Framework/Objects/BasicItemInformation.cs @@ -1,6 +1,7 @@ using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using PyTK.CustomElementHandler; +using Revitalize.Framework.Graphics.Animations; using System; using System.Collections.Generic; using System.Linq; @@ -23,6 +24,9 @@ namespace Revitalize.Framework.Objects public bool canBeSetOutdoors; public bool isLamp; + public AnimationManager animationManager; + public Vector2 drawPosition; + public BasicItemInformation() : base() { name = ""; @@ -34,9 +38,12 @@ namespace Revitalize.Framework.Objects this.edibility = -300; this.canBeSetIndoors = false; this.canBeSetOutdoors = false; + + this.animationManager = null; + this.drawPosition = Vector2.Zero; } - public BasicItemInformation(string name, string description, string categoryName, Color categoryColor,int edibility,int fragility,bool isLamp,int price, Vector2 TileLocation,bool canBeSetOutdoors,bool canBeSetIndoors,string id, string data, Texture2D texture, Color color,int tileIndex, bool bigCraftable, Type type, CraftingData craftingData ):base(id,data,texture,color,tileIndex,bigCraftable,type,craftingData) + public BasicItemInformation(string name, string description, string categoryName, Color categoryColor,int edibility,int fragility,bool isLamp,int price, Vector2 TileLocation,bool canBeSetOutdoors,bool canBeSetIndoors,string id, string data, Texture2D texture, Color color,int tileIndex, bool bigCraftable, Type type, CraftingData craftingData, AnimationManager animationManager):base(id,data,texture,color,tileIndex,bigCraftable,type,craftingData) { this.name = name; this.description = description; @@ -51,6 +58,19 @@ namespace Revitalize.Framework.Objects this.fragility = fragility; this.isLamp = isLamp; + this.animationManager = animationManager; + if (this.animationManager.IsNull) + { + this.animationManager = new AnimationManager(new Graphics.Texture2DExtended(), new Animation(new Rectangle(0, 0, 16, 16)), false); + this.animationManager.getExtendedTexture().texture = this.texture; + } + else + { + this.texture = this.animationManager.getTexture(); + } + + this.drawPosition = Vector2.Zero; + recreateDataString(); } @@ -59,5 +79,7 @@ namespace Revitalize.Framework.Objects this.data=this.name+"/"+this.price+"/"+this.edibility+"/"+"Crafting -9"+"/"+this.description+"/"+this.canBeSetOutdoors+"/"+this.canBeSetIndoors+"/"+this.fragility+"/"+this.isLamp+"/"+this.name; } + + } } diff --git a/GeneralMods/Revitalize/Framework/Objects/CustomObject.cs b/GeneralMods/Revitalize/Framework/Objects/CustomObject.cs index 3654203c..b569f9cb 100644 --- a/GeneralMods/Revitalize/Framework/Objects/CustomObject.cs +++ b/GeneralMods/Revitalize/Framework/Objects/CustomObject.cs @@ -3,6 +3,7 @@ using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using PyTK.CustomElementHandler; using Revitalize.Framework.Graphics; +using Revitalize.Framework.Graphics.Animations; using StardewValley; using StardewValley.Objects; using System; @@ -21,13 +22,23 @@ namespace Revitalize.Framework.Objects { public string id; - public Texture2DExtended texture; public BasicItemInformation info; + + + public AnimationManager animationManager + { + get + { + return info.animationManager; + } + } + + public Texture2D displayTexture { get { - return texture.texture; + return animationManager.getTexture(); } } @@ -60,6 +71,10 @@ namespace Revitalize.Framework.Objects this.setIndoors.Value = true; this.isLamp.Value = false; this.fragility.Value = 0; + + this.updateDrawPosition(); + + } public override bool checkForAction(Farmer who, bool justCheckingForActivity = false) @@ -141,21 +156,88 @@ namespace Revitalize.Framework.Objects return Game1.parseText(text, smallFont, width); } + public override bool placementAction(GameLocation location, int x, int y, Farmer who = null) + { + this.updateDrawPosition(); + return base.placementAction(location, x, y, who); + } + + public virtual void updateDrawPosition() + { + this.info.drawPosition = new Vector2((float)this.boundingBox.X, (float)(this.boundingBox.Y - (this.animationManager.currentAnimation.sourceRectangle.Height * Game1.pixelZoom - this.boundingBox.Height))); + } + public override Item getOne() { return new CustomObject((BasicItemInformation)this.data); } - public override void draw(SpriteBatch spriteBatch, int x, int y, float alpha = 1) + public override void draw(SpriteBatch spriteBatch, int x, int y, float alpha = 1f) { - base.draw(spriteBatch, x, y, alpha); + if (x == -1) + { + spriteBatch.Draw(this.info.animationManager.getTexture(), Game1.GlobalToLocal(Game1.viewport, this.info.drawPosition), new Rectangle?(this.animationManager.currentAnimation.sourceRectangle), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, 0); + } + else + { + //The actual planter box being drawn. + if (animationManager == null) + { + if (this.animationManager.getExtendedTexture() == null) + { + ModCore.ModMonitor.Log("Tex Extended is null???"); + + } + + spriteBatch.Draw(this.displayTexture, 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); + // Log.AsyncG("ANIMATION IS NULL?!?!?!?!"); + } + + else + { + //Log.AsyncC("Animation Manager is working!"); + this.animationManager.draw(spriteBatch, this.displayTexture, 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(); + // 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)); + + + + } } - public override void draw(SpriteBatch spriteBatch, int xNonTile, int yNonTile, float layerDepth, float alpha = 1) + public override void draw(SpriteBatch spriteBatch, int xNonTile, int yNonTile, float layerDepth, float alpha = 1f) { - base.draw(spriteBatch, xNonTile, yNonTile, layerDepth, alpha); + + 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(this.displayTexture, local, sourceRectangle, color, (float)num1, origin, (float)num2, (SpriteEffects)num3, (float)num4); + } + public override void drawAsProp(SpriteBatch b) { base.drawAsProp(b); @@ -166,9 +248,16 @@ namespace Revitalize.Framework.Objects base.drawAttachments(b, x, y); } - public override void drawInMenu(SpriteBatch spriteBatch, Vector2 location, float scaleSize, float transparency, float layerDepth, bool drawStackNumber, Color color, bool drawShadow) + public override void drawInMenu(SpriteBatch spriteBatch, Vector2 location, float scaleSize, float transparency, float layerDepth, bool drawStackNumber, Color c, bool drawShadow) { - base.drawInMenu(spriteBatch, location, scaleSize, transparency, layerDepth, drawStackNumber, color, drawShadow); + if (drawStackNumber && this.maximumStackSize() > 1 && ((double)scaleSize > 0.3 && this.Stack != int.MaxValue) && this.Stack > 1) + Utility.drawTinyDigits(this.Stack, spriteBatch, location + new Vector2((float)(Game1.tileSize - Utility.getWidthOfTinyDigitString(this.Stack, 3f * scaleSize)) + 3f * scaleSize, (float)((double)Game1.tileSize - 18.0 * (double)scaleSize + 2.0)), 3f * scaleSize, 1f, Color.White); + if (drawStackNumber && this.Quality > 0) + { + 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(this.displayTexture, location + new Vector2((float)(Game1.tileSize), (float)(Game1.tileSize)), new Rectangle?(this.animationManager.currentAnimation.sourceRectangle), Color.White * transparency, 0f, new Vector2((float)(this.animationManager.currentAnimation.sourceRectangle.Width / 2), (float)(this.animationManager.currentAnimation.sourceRectangle.Height)), 1f * 1 * scaleSize * .5f, SpriteEffects.None, layerDepth); } public override void drawPlacementBounds(SpriteBatch spriteBatch, GameLocation location) @@ -176,9 +265,29 @@ namespace Revitalize.Framework.Objects base.drawPlacementBounds(spriteBatch, location); } - public override void drawWhenHeld(SpriteBatch spriteBatch, Vector2 objectPosition, Farmer f) + public override void drawWhenHeld(SpriteBatch spriteBatch, Vector2 objectPosition, StardewValley.Farmer f) { - base.drawWhenHeld(spriteBatch, objectPosition, f); + if (f.ActiveObject.bigCraftable.Value) + { + spriteBatch.Draw(this.displayTexture, objectPosition, this.animationManager.currentAnimation.sourceRectangle, Color.White, 0f, Vector2.Zero, (float)Game1.pixelZoom, SpriteEffects.None, Math.Max(0f, (float)(f.getStandingY() + 2) / 10000f)); + return; + } + + spriteBatch.Draw(this.displayTexture, objectPosition, this.animationManager.currentAnimation.sourceRectangle, Color.White, 0f, Vector2.Zero, (float)Game1.pixelZoom, SpriteEffects.None, Math.Max(0f, (float)(f.getStandingY() + 2) / 10000f)); + if (f.ActiveObject != null && f.ActiveObject.Name.Contains("=")) + { + spriteBatch.Draw(this.displayTexture, objectPosition + new Vector2((float)(Game1.tileSize / 2), (float)(Game1.tileSize / 2)), this.animationManager.currentAnimation.sourceRectangle, Color.White, 0f, new Vector2((float)(Game1.tileSize / 2), (float)(Game1.tileSize / 2)), (float)Game1.pixelZoom + Math.Abs(Game1.starCropShimmerPause) / 8f, SpriteEffects.None, Math.Max(0f, (float)(f.getStandingY() + 2) / 10000f)); + if (Math.Abs(Game1.starCropShimmerPause) <= 0.05f && Game1.random.NextDouble() < 0.97) + { + return; + } + Game1.starCropShimmerPause += 0.04f; + if (Game1.starCropShimmerPause >= 0.8f) + { + Game1.starCropShimmerPause = -0.8f; + } + } + //base.drawWhenHeld(spriteBatch, objectPosition, f); } diff --git a/GeneralMods/Revitalize/ModCore.cs b/GeneralMods/Revitalize/ModCore.cs index 5d37151b..a98f6f94 100644 --- a/GeneralMods/Revitalize/ModCore.cs +++ b/GeneralMods/Revitalize/ModCore.cs @@ -30,7 +30,7 @@ namespace Revitalize private void GameLoop_SaveLoaded(object sender, StardewModdingAPI.Events.SaveLoadedEventArgs e) { - CustomObject obj = new CustomObject(new BasicItemInformation("CoreObjectTest","YAY FUN!","Omegasis.Revitalize.CoreObject",Color.Violet,-300,1,false,100,Vector2.Zero,true,true,"Omegasis.bleh", "2048/0/-300/Crafting -9/Play '2048 by Platonymous' at home!/true/true/0/2048", Game1.objectSpriteSheet,Color.White,0,true,typeof(CustomObject),null)); + CustomObject obj = new CustomObject(new BasicItemInformation("CoreObjectTest","YAY FUN!","Omegasis.Revitalize.CoreObject",Color.Violet,-300,1,false,100,Vector2.Zero,true,true,"Omegasis.bleh", "2048/0/-300/Crafting -9/Play '2048 by Platonymous' at home!/true/true/0/2048", Game1.objectSpriteSheet,Color.White,0,true,typeof(CustomObject),null,new Framework.Graphics.Animations.AnimationManager())); new InventoryItem(obj, 100,1).addToNPCShop("Gus"); diff --git a/GeneralMods/Revitalize/Revitalize.csproj b/GeneralMods/Revitalize/Revitalize.csproj index b2e8891d..b74de180 100644 --- a/GeneralMods/Revitalize/Revitalize.csproj +++ b/GeneralMods/Revitalize/Revitalize.csproj @@ -45,6 +45,8 @@ + + diff --git a/GeneralMods/SaveAnywhere/manifest.json b/GeneralMods/SaveAnywhere/manifest.json index f2a0325d..bfaa6bb2 100644 --- a/GeneralMods/SaveAnywhere/manifest.json +++ b/GeneralMods/SaveAnywhere/manifest.json @@ -1,7 +1,7 @@ { "Name": "Save Anywhere", "Author": "Alpha_Omegasis", - "Version": "3.0.0", + "Version": "2.10.0", "Description": "Lets you save almost anywhere.", "UniqueID": "Omegasis.SaveAnywhere", "EntryDll": "SaveAnywhere.dll", diff --git a/GeneralMods/SimpleSoundManager/manifest.json b/GeneralMods/SimpleSoundManager/manifest.json index e5e92fab..a63ef698 100644 --- a/GeneralMods/SimpleSoundManager/manifest.json +++ b/GeneralMods/SimpleSoundManager/manifest.json @@ -1,7 +1,7 @@ { "Name": "Simple Sound Manager", "Author": "Alpha_Omegasis", - "Version": "2.0.1", + "Version": "2.1.0", "Description": "A simple framework to play sounds from wave banks and wav files.", "UniqueID": "Omegasis.SimpleSoundManager", "EntryDll": "SimpleSoundManager.dll", diff --git a/GeneralMods/StardewMods.sln b/GeneralMods/StardewMods.sln index 6c9f6d9a..47b5fc95 100644 --- a/GeneralMods/StardewMods.sln +++ b/GeneralMods/StardewMods.sln @@ -13,8 +13,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildHealth", "BuildHealth\ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuyBackCollectables", "BuyBackCollectables\BuyBackCollectables.csproj", "{A19025C4-E194-4CAD-B156-4AC00BDD2AA3}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomShopsRedux", "CustomShopsRedux\CustomShopsRedux.csproj", "{29F7DE68-4C76-471E-86FB-873794802ADC}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DailyQuestAnywhere", "DailyQuestAnywhere\DailyQuestAnywhere.csproj", "{AC4B84F5-31E4-4A55-B13F-A5189C552343}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Fall28SnowDay", "Fall28SnowDay\Fall28SnowDay.csproj", "{1DBB583D-4A4F-4A46-8CC5-42017C93D292}" @@ -68,8 +66,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FarmersMarketStall", "Farme {BB737337-2D82-4245-AA46-F3B82FC6F228} = {BB737337-2D82-4245-AA46-F3B82FC6F228} EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DebugSandBoxAndReferences", "DebugSandBoxAndReferences\DebugSandBoxAndReferences.csproj", "{B196EB60-5042-46B9-BEAA-3020E539CB9F}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdditionalCropsFramework", "AdditionalCropsFramework\AdditionalCropsFramework.csproj", "{C5F88D48-EA20-40CD-91E2-C8725DC11795}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdvancedSaveBackup", "AdvancedSaveBackup\AdvancedSaveBackup.csproj", "{12984468-2B79-4B3B-B045-EE917301DEE0}" @@ -79,8 +75,6 @@ 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 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Revitalize", "Revitalize\Revitalize.csproj", "{44EF6CEC-FBF1-4B45-8135-81D4EBE84DDD}" EndProject Global @@ -153,18 +147,6 @@ Global {A19025C4-E194-4CAD-B156-4AC00BDD2AA3}.x86|Any CPU.Build.0 = x86|Any CPU {A19025C4-E194-4CAD-B156-4AC00BDD2AA3}.x86|x86.ActiveCfg = x86|x86 {A19025C4-E194-4CAD-B156-4AC00BDD2AA3}.x86|x86.Build.0 = x86|x86 - {29F7DE68-4C76-471E-86FB-873794802ADC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {29F7DE68-4C76-471E-86FB-873794802ADC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {29F7DE68-4C76-471E-86FB-873794802ADC}.Debug|x86.ActiveCfg = Debug|x86 - {29F7DE68-4C76-471E-86FB-873794802ADC}.Debug|x86.Build.0 = Debug|x86 - {29F7DE68-4C76-471E-86FB-873794802ADC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {29F7DE68-4C76-471E-86FB-873794802ADC}.Release|Any CPU.Build.0 = Release|Any CPU - {29F7DE68-4C76-471E-86FB-873794802ADC}.Release|x86.ActiveCfg = Release|x86 - {29F7DE68-4C76-471E-86FB-873794802ADC}.Release|x86.Build.0 = Release|x86 - {29F7DE68-4C76-471E-86FB-873794802ADC}.x86|Any CPU.ActiveCfg = x86|Any CPU - {29F7DE68-4C76-471E-86FB-873794802ADC}.x86|Any CPU.Build.0 = x86|Any CPU - {29F7DE68-4C76-471E-86FB-873794802ADC}.x86|x86.ActiveCfg = x86|x86 - {29F7DE68-4C76-471E-86FB-873794802ADC}.x86|x86.Build.0 = x86|x86 {AC4B84F5-31E4-4A55-B13F-A5189C552343}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AC4B84F5-31E4-4A55-B13F-A5189C552343}.Debug|Any CPU.Build.0 = Debug|Any CPU {AC4B84F5-31E4-4A55-B13F-A5189C552343}.Debug|x86.ActiveCfg = Debug|x86 @@ -357,18 +339,6 @@ Global {0E37BE57-6B3C-4C79-A134-D16283D5306D}.x86|Any CPU.Build.0 = x86|Any CPU {0E37BE57-6B3C-4C79-A134-D16283D5306D}.x86|x86.ActiveCfg = x86|x86 {0E37BE57-6B3C-4C79-A134-D16283D5306D}.x86|x86.Build.0 = x86|x86 - {B196EB60-5042-46B9-BEAA-3020E539CB9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B196EB60-5042-46B9-BEAA-3020E539CB9F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B196EB60-5042-46B9-BEAA-3020E539CB9F}.Debug|x86.ActiveCfg = Debug|x86 - {B196EB60-5042-46B9-BEAA-3020E539CB9F}.Debug|x86.Build.0 = Debug|x86 - {B196EB60-5042-46B9-BEAA-3020E539CB9F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B196EB60-5042-46B9-BEAA-3020E539CB9F}.Release|Any CPU.Build.0 = Release|Any CPU - {B196EB60-5042-46B9-BEAA-3020E539CB9F}.Release|x86.ActiveCfg = Release|x86 - {B196EB60-5042-46B9-BEAA-3020E539CB9F}.Release|x86.Build.0 = Release|x86 - {B196EB60-5042-46B9-BEAA-3020E539CB9F}.x86|Any CPU.ActiveCfg = x86|Any CPU - {B196EB60-5042-46B9-BEAA-3020E539CB9F}.x86|Any CPU.Build.0 = x86|Any CPU - {B196EB60-5042-46B9-BEAA-3020E539CB9F}.x86|x86.ActiveCfg = x86|x86 - {B196EB60-5042-46B9-BEAA-3020E539CB9F}.x86|x86.Build.0 = x86|x86 {C5F88D48-EA20-40CD-91E2-C8725DC11795}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C5F88D48-EA20-40CD-91E2-C8725DC11795}.Debug|Any CPU.Build.0 = Debug|Any CPU {C5F88D48-EA20-40CD-91E2-C8725DC11795}.Debug|x86.ActiveCfg = Debug|x86 @@ -405,18 +375,6 @@ 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 {44EF6CEC-FBF1-4B45-8135-81D4EBE84DDD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {44EF6CEC-FBF1-4B45-8135-81D4EBE84DDD}.Debug|Any CPU.Build.0 = Debug|Any CPU {44EF6CEC-FBF1-4B45-8135-81D4EBE84DDD}.Debug|x86.ActiveCfg = Debug|Any CPU diff --git a/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json b/GeneralMods/StardewSymphonyRemastered/StardewSymphonyRemastered/manifest.json index 8a0c53a7..7e6a067f 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.7", + "Version": "2.2.0", "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/manifest.json b/GeneralMods/StardustCore/manifest.json index 033a06b3..48a12f4b 100644 --- a/GeneralMods/StardustCore/manifest.json +++ b/GeneralMods/StardustCore/manifest.json @@ -1,7 +1,7 @@ { "Name": "StardustCore", "Author": "Alpha_Omegasis", - "Version": "2.0.5", + "Version": "2.1.0", "Description": "A core mod that allows for other mods of mine to be run.", "UniqueID": "Omegasis.StardustCore", "EntryDll": "StardustCore.dll", diff --git a/GeneralMods/TimeFreeze/manifest.json b/GeneralMods/TimeFreeze/manifest.json index 24129c43..f96a7755 100644 --- a/GeneralMods/TimeFreeze/manifest.json +++ b/GeneralMods/TimeFreeze/manifest.json @@ -1,7 +1,7 @@ { "Name": "Time Freeze", "Author": "Alpha_Omegasis", - "Version": "1.5.1", + "Version": "1.6.0", "Description": "Emulates old Harvest Moon-style games where time is frozen inside.", "UniqueID": "Omegasis.TimeFreeze", "EntryDll": "TimeFreeze.dll",