From 5daca827bc155fd17b5d7f135a990db4adf4ed8b Mon Sep 17 00:00:00 2001 From: Luke Wale Date: Sat, 29 Apr 2017 16:46:10 +0800 Subject: [PATCH] bumped version fixed #27 --- SendItems/Domain/BasePerson.cs | 43 +++++++++++++++++++ SendItems/Domain/Farmer.cs | 13 +----- SendItems/Domain/Friend.cs | 17 +------- SendItems/Properties/AssemblyInfo.cs | 4 +- SendItems/SendItems.cs | 22 +++------- SendItems/SendItems.csproj | 1 + SendItems/Services/CommandService.cs | 14 ++++-- SendItems/Services/FarmerService.cs | 16 ++++++- .../Services/LetterboxInteractionDetector.cs | 25 +++++++++-- .../Services/PostboxInteractionDetector.cs | 22 +++++++++- SendItems/config.json | 2 +- SendItems/manifest.json | 10 ++--- SendItems/release-notes.md | 7 ++- SendItemsApi/SendItemsApi.csproj | 2 +- SendItemsApi/release-notes.md | 7 ++- latest-versions.json | 2 +- 16 files changed, 138 insertions(+), 69 deletions(-) create mode 100644 SendItems/Domain/BasePerson.cs diff --git a/SendItems/Domain/BasePerson.cs b/SendItems/Domain/BasePerson.cs new file mode 100644 index 0000000..470c967 --- /dev/null +++ b/SendItems/Domain/BasePerson.cs @@ -0,0 +1,43 @@ +using System; + +namespace Denifia.Stardew.SendItems.Domain +{ + public class BasePerson : IEquatable + { + public string Id { get; set; } + public string Name { get; set; } + public string FarmName { get; set; } + + public string DisplayText + { + get + { + return $"{Name} ({FarmName} Farm)"; + } + } + + public string ConsoleSafeName + { + get { return MakeConsoleSave(Name); } + } + + public string ConsoleSaveFarmName + { + get { return MakeConsoleSave(FarmName); } + } + + private string MakeConsoleSave(string text) + { + if (text.Contains(" ")) + { + text = $"\"{text}\""; + } + return text; + } + + public bool Equals(BasePerson other) + { + return Id == other.Id; + } + } +} diff --git a/SendItems/Domain/Farmer.cs b/SendItems/Domain/Farmer.cs index 423708f..69d6aab 100644 --- a/SendItems/Domain/Farmer.cs +++ b/SendItems/Domain/Farmer.cs @@ -2,24 +2,13 @@ namespace Denifia.Stardew.SendItems.Domain { - public class Farmer + public class Farmer : BasePerson { - public string Id { get; set; } - public string Name { get; set; } - public string FarmName { get; set; } public List Friends { get; set; } public Farmer() { Friends = new List(); } - - public string DisplayText - { - get - { - return $"{Name} ({FarmName} Farm)"; - } - } } } diff --git a/SendItems/Domain/Friend.cs b/SendItems/Domain/Friend.cs index 3b0e08f..77fb41a 100644 --- a/SendItems/Domain/Friend.cs +++ b/SendItems/Domain/Friend.cs @@ -2,23 +2,8 @@ namespace Denifia.Stardew.SendItems.Domain { - public class Friend : IEquatable + public class Friend : BasePerson { - public string Id { get; set; } - public string Name { get; set; } - public string FarmName { get; set; } - public string DisplayText - { - get - { - return $"{Name} ({FarmName} Farm)"; - } - } - - public bool Equals(Friend other) - { - return Id == other.Id; - } } } diff --git a/SendItems/Properties/AssemblyInfo.cs b/SendItems/Properties/AssemblyInfo.cs index b44382e..01237b8 100644 --- a/SendItems/Properties/AssemblyInfo.cs +++ b/SendItems/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // 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("0.2.0.0")] -[assembly: AssemblyFileVersion("0.2.0.0")] +[assembly: AssemblyVersion("1.0.1.0")] +[assembly: AssemblyFileVersion("1.0.1.0")] diff --git a/SendItems/SendItems.cs b/SendItems/SendItems.cs index 3025f27..cd9001c 100644 --- a/SendItems/SendItems.cs +++ b/SendItems/SendItems.cs @@ -38,28 +38,16 @@ public override void Entry(IModHelper helper) Repository.Instance.Init(_container.Resolve()); // Instance classes that do their own thing + _container.Resolve(); _container.Resolve(); _container.Resolve(); _container.Resolve(); _container.Resolve(); + _container.Resolve(); + _container.Resolve(); + _container.Resolve(); + _container.Resolve(); _container.Resolve(); - - // Instance classes to be used later - _farmerService = _container.Resolve(); - _postboxInteractionDetector = _container.Resolve(); - _letterboxInteractionDetector = _container.Resolve(); - _mailDeliveryService = _container.Resolve(); - _mailCleanupService = _container.Resolve(); - - SaveEvents.AfterLoad += AfterSavedGameLoad; - } - - private void AfterSavedGameLoad(object sender, EventArgs e) - { - _postboxInteractionDetector.Init(); - _letterboxInteractionDetector.Init(); - - SaveEvents.AfterLoad -= AfterSavedGameLoad; } } } diff --git a/SendItems/SendItems.csproj b/SendItems/SendItems.csproj index 1c0a291..ffbffe6 100644 --- a/SendItems/SendItems.csproj +++ b/SendItems/SendItems.csproj @@ -56,6 +56,7 @@ + diff --git a/SendItems/Services/CommandService.cs b/SendItems/Services/CommandService.cs index e821506..6902da9 100644 --- a/SendItems/Services/CommandService.cs +++ b/SendItems/Services/CommandService.cs @@ -38,7 +38,13 @@ public CommandService( RegisterCommands(); SaveEvents.AfterLoad += AfterSavedGameLoad; - } + SaveEvents.AfterReturnToTitle += AfterReturnToTitle; + } + + private void AfterReturnToTitle(object sender, EventArgs e) + { + _savedGameLoaded = false; + } private void RegisterCommands() { @@ -91,7 +97,7 @@ private void HandleCommand(string command, string[] args) private void ShowMyDetails(string[] args) { _mod.Monitor.Log("This is your \"friend command\". Get your friends to run this command in the SMAPI console to add you as a friend. Each farmer (saved game) has it's own list of friends.", LogLevel.Info); - _mod.Monitor.Log($"{_addFriendCommand} {_farmerService.CurrentFarmer.Id} {_farmerService.CurrentFarmer.Name} {_farmerService.CurrentFarmer.FarmName}", LogLevel.Info); + _mod.Monitor.Log($"{_addFriendCommand} {_farmerService.CurrentFarmer.Id} {_farmerService.CurrentFarmer.ConsoleSafeName} {_farmerService.CurrentFarmer.ConsoleSaveFarmName}", LogLevel.Info); } private void ListLocalFarmers(string[] args) @@ -103,7 +109,7 @@ private void ListLocalFarmers(string[] args) _mod.Monitor.Log(" ", LogLevel.Info); foreach (var farmer in farmers) { - _mod.Monitor.Log($"{farmer.Id} {farmer.Name} {farmer.FarmName}", LogLevel.Info); + _mod.Monitor.Log($"{farmer.Id} {farmer.ConsoleSafeName} {farmer.ConsoleSaveFarmName}", LogLevel.Info); } } else @@ -228,7 +234,7 @@ private void AfterSavedGameLoad(object sender, EventArgs e) { _savedGameLoaded = true; _mod.Monitor.Log($"This is your \"friend command\". Get your friends to run this command in the SMAPI console to add you as a friend...", LogLevel.Info); - _mod.Monitor.Log($"{_addFriendCommand} {_farmerService.CurrentFarmer.Id} {_farmerService.CurrentFarmer.Name} {_farmerService.CurrentFarmer.FarmName}", LogLevel.Alert); + _mod.Monitor.Log($"{_addFriendCommand} {_farmerService.CurrentFarmer.Id} {_farmerService.CurrentFarmer.ConsoleSafeName} {_farmerService.CurrentFarmer.ConsoleSaveFarmName}", LogLevel.Alert); _mod.Monitor.Log($"They need to be using the Send Items mod too :)", LogLevel.Info); } diff --git a/SendItems/Services/FarmerService.cs b/SendItems/Services/FarmerService.cs index 10ff52f..d8f585b 100644 --- a/SendItems/Services/FarmerService.cs +++ b/SendItems/Services/FarmerService.cs @@ -2,6 +2,8 @@ using Denifia.Stardew.SendItems.Domain; using StardewValley; using System.Linq; +using StardewModdingAPI.Events; +using System; namespace Denifia.Stardew.SendItems.Services { @@ -33,13 +35,25 @@ public Domain.Farmer CurrentFarmer { public FarmerService(IConfigurationService configService) { _configService = configService; + SaveEvents.AfterReturnToTitle += AfterReturnToTitle; + } + + private void AfterReturnToTitle(object sender, EventArgs e) + { + _currentFarmer = null; } public void LoadCurrentFarmer() { var saves = _configService.GetSavedGames(); var save = saves.FirstOrDefault(x => x.Name == Game1.player.Name && x.FarmName == Game1.player.farmName); - if (save == null) throw new System.Exception("error loading current farmer"); + if (save == null) + { + // Happens during a new game creation + return; + //throw new System.Exception("error loading current farmer"); + } + var newFarmer = new Domain.Farmer() { diff --git a/SendItems/Services/LetterboxInteractionDetector.cs b/SendItems/Services/LetterboxInteractionDetector.cs index c90469a..5d72300 100644 --- a/SendItems/Services/LetterboxInteractionDetector.cs +++ b/SendItems/Services/LetterboxInteractionDetector.cs @@ -1,4 +1,5 @@ using Denifia.Stardew.SendItems.Events; +using Denifia.Stardew.SendItems.Framework; using StardewModdingAPI.Events; using StardewValley; using System; @@ -9,7 +10,6 @@ namespace Denifia.Stardew.SendItems.Services { public interface ILetterboxInteractionDetector { - void Init(); } /// @@ -18,9 +18,26 @@ public interface ILetterboxInteractionDetector public class LetterboxInteractionDetector : ILetterboxInteractionDetector { private const string _locationOfLetterbox = "Farm"; - private const string _playerMailKey = "playerMail"; - public void Init() + public LetterboxInteractionDetector() + { + SaveEvents.AfterLoad += AfterSavedGameLoad; + SaveEvents.AfterReturnToTitle += AfterReturnToTitle; + } + + private void AfterReturnToTitle(object sender, EventArgs e) + { + try + { + ControlEvents.MouseChanged -= MouseChanged; + LocationEvents.CurrentLocationChanged -= CurrentLocationChanged; + } + catch (Exception) + { + } + } + + private void AfterSavedGameLoad(object sender, EventArgs e) { LocationEvents.CurrentLocationChanged += CurrentLocationChanged; } @@ -57,7 +74,7 @@ private void MouseChanged(object sender, EventArgsMouseStateChanged e) private bool CanUseLetterbox() { - return Game1.mailbox != null && Game1.mailbox.Any() && Game1.mailbox.Peek() == _playerMailKey; + return Game1.mailbox != null && Game1.mailbox.Any() && Game1.mailbox.Peek() == ModConstants.PlayerMailKey; } } } diff --git a/SendItems/Services/PostboxInteractionDetector.cs b/SendItems/Services/PostboxInteractionDetector.cs index 2c5a53a..9baf677 100644 --- a/SendItems/Services/PostboxInteractionDetector.cs +++ b/SendItems/Services/PostboxInteractionDetector.cs @@ -9,7 +9,7 @@ namespace Denifia.Stardew.SendItems.Services { public interface IPostboxInteractionDetector { - void Init(); + } /// @@ -19,7 +19,25 @@ public class PostboxInteractionDetector : IPostboxInteractionDetector { private const string locationOfPostbox = "Farm"; - public void Init() + public PostboxInteractionDetector() + { + SaveEvents.AfterLoad += AfterSavedGameLoad; + SaveEvents.AfterReturnToTitle += AfterReturnToTitle; + } + + private void AfterReturnToTitle(object sender, EventArgs e) + { + try + { + ControlEvents.MouseChanged -= MouseChanged; + LocationEvents.CurrentLocationChanged -= CurrentLocationChanged; + } + catch (Exception) + { + } + } + + private void AfterSavedGameLoad(object sender, EventArgs e) { LocationEvents.CurrentLocationChanged += CurrentLocationChanged; } diff --git a/SendItems/config.json b/SendItems/config.json index f4a1c18..65bb66c 100644 --- a/SendItems/config.json +++ b/SendItems/config.json @@ -1,4 +1,4 @@ { "ApiUrl": "http://localhost:5000/api", - "Debug": true + "Debug": false } \ No newline at end of file diff --git a/SendItems/manifest.json b/SendItems/manifest.json index 277e6bb..ca1d490 100644 --- a/SendItems/manifest.json +++ b/SendItems/manifest.json @@ -2,13 +2,13 @@ "Name": "Send Items", "Author": "Denifia", "Version": { - "MajorVersion": 0, - "MinorVersion": 2, - "PatchVersion": 0, - "Build": null + "MajorVersion": 1, + "MinorVersion": 0, + "PatchVersion": 1, + "Build": "beta" }, "MinimumApiVersion": "1.10", - "Description": "Send items to your other farms (saved games) and online friends", + "Description": "Send items to other farmer (saved games and online friends).", "UniqueID": "Denifia.SendItems", "EntryDll": "Denifia.Stardew.SendItems.dll" } \ No newline at end of file diff --git a/SendItems/release-notes.md b/SendItems/release-notes.md index fd1be1d..8699650 100644 --- a/SendItems/release-notes.md +++ b/SendItems/release-notes.md @@ -1,7 +1,12 @@ [← back to readme](readme.md) # Release notes -## 0.2.0 +## 1.0.1-Beta +* Fixed bug with returning to tile screen +* Fixed bug with friend command extra spaces (issue #27) +* Bumped version because of bad release + +## 1.0-Beta * **Renamed project from "SendLetters" to "Send Items" for clarity** * Moved local storage into LiteDb (stores data as binary json in the \Mods\SendItems directory) * Made all web requests run in the background so they don't interfere with the game diff --git a/SendItemsApi/SendItemsApi.csproj b/SendItemsApi/SendItemsApi.csproj index b1e2f73..fa3a3d0 100644 --- a/SendItemsApi/SendItemsApi.csproj +++ b/SendItemsApi/SendItemsApi.csproj @@ -5,7 +5,7 @@ portable-net45+win8 Denifia.Stardew.SendItemsApi Denifia.Stardew.SendItemsApi - 0.2.0 + 1.0.1 Web Api for the Send Items mod for Stardew Valley Denifia Denifia diff --git a/SendItemsApi/release-notes.md b/SendItemsApi/release-notes.md index 67556c5..06c4250 100644 --- a/SendItemsApi/release-notes.md +++ b/SendItemsApi/release-notes.md @@ -1,7 +1,10 @@ [← back to readme](readme.md) # Release notes -## 0.2.0 +## 1.0.1 +* Bumped version because of bad release + +## 1.0-Beta * All code is now async for performance * Moved from LiteDb to Azure Table Storage * Changed mail endpoint paths, names and parameters to be more clear @@ -9,6 +12,6 @@ * Added a /api/mail/count endpoint to check how much mail is on the server * Added a /api/health endpoint that just returns true -## Prior to 0.2.0 +## Prior to 1.0-Beta * Intital cut of api * No release notes available \ No newline at end of file diff --git a/latest-versions.json b/latest-versions.json index fa2cac2..762d18d 100644 --- a/latest-versions.json +++ b/latest-versions.json @@ -1,5 +1,5 @@ { "schema": 1.0, - "Send Items": "0.2.0", + "Send Items": "1.0.1", "Purchase Recipes": "0.1.0" }