Skip to content

Commit e325cba

Browse files
authored
Merge pull request #28 from Denifia/develop
fixes and version bump
2 parents c3c03f6 + 5daca82 commit e325cba

16 files changed

+138
-69
lines changed

SendItems/Domain/BasePerson.cs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
using System;
2+
3+
namespace Denifia.Stardew.SendItems.Domain
4+
{
5+
public class BasePerson : IEquatable<BasePerson>
6+
{
7+
public string Id { get; set; }
8+
public string Name { get; set; }
9+
public string FarmName { get; set; }
10+
11+
public string DisplayText
12+
{
13+
get
14+
{
15+
return $"{Name} ({FarmName} Farm)";
16+
}
17+
}
18+
19+
public string ConsoleSafeName
20+
{
21+
get { return MakeConsoleSave(Name); }
22+
}
23+
24+
public string ConsoleSaveFarmName
25+
{
26+
get { return MakeConsoleSave(FarmName); }
27+
}
28+
29+
private string MakeConsoleSave(string text)
30+
{
31+
if (text.Contains(" "))
32+
{
33+
text = $"\"{text}\"";
34+
}
35+
return text;
36+
}
37+
38+
public bool Equals(BasePerson other)
39+
{
40+
return Id == other.Id;
41+
}
42+
}
43+
}

SendItems/Domain/Farmer.cs

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,13 @@
22

33
namespace Denifia.Stardew.SendItems.Domain
44
{
5-
public class Farmer
5+
public class Farmer : BasePerson
66
{
7-
public string Id { get; set; }
8-
public string Name { get; set; }
9-
public string FarmName { get; set; }
107
public List<Friend> Friends { get; set; }
118

129
public Farmer()
1310
{
1411
Friends = new List<Friend>();
1512
}
16-
17-
public string DisplayText
18-
{
19-
get
20-
{
21-
return $"{Name} ({FarmName} Farm)";
22-
}
23-
}
2413
}
2514
}

SendItems/Domain/Friend.cs

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,8 @@
22

33
namespace Denifia.Stardew.SendItems.Domain
44
{
5-
public class Friend : IEquatable<Friend>
5+
public class Friend : BasePerson
66
{
7-
public string Id { get; set; }
8-
public string Name { get; set; }
9-
public string FarmName { get; set; }
107

11-
public string DisplayText
12-
{
13-
get
14-
{
15-
return $"{Name} ({FarmName} Farm)";
16-
}
17-
}
18-
19-
public bool Equals(Friend other)
20-
{
21-
return Id == other.Id;
22-
}
238
}
249
}

SendItems/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@
3232
// You can specify all the values or you can default the Build and Revision Numbers
3333
// by using the '*' as shown below:
3434
// [assembly: AssemblyVersion("1.0.*")]
35-
[assembly: AssemblyVersion("0.2.0.0")]
36-
[assembly: AssemblyFileVersion("0.2.0.0")]
35+
[assembly: AssemblyVersion("1.0.1.0")]
36+
[assembly: AssemblyFileVersion("1.0.1.0")]

SendItems/SendItems.cs

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -38,28 +38,16 @@ public override void Entry(IModHelper helper)
3838
Repository.Instance.Init(_container.Resolve<IConfigurationService>());
3939

4040
// Instance classes that do their own thing
41+
_container.Resolve<IFarmerService>();
4142
_container.Resolve<VersionCheckService>();
4243
_container.Resolve<ICommandService>();
4344
_container.Resolve<IPostboxService>();
4445
_container.Resolve<ILetterboxService>();
46+
_container.Resolve<IPostboxInteractionDetector>();
47+
_container.Resolve<ILetterboxInteractionDetector>();
48+
_container.Resolve<IMailDeliveryService>();
49+
_container.Resolve<IMailCleanupService>();
4550
_container.Resolve<IMailScheduleService>();
46-
47-
// Instance classes to be used later
48-
_farmerService = _container.Resolve<IFarmerService>();
49-
_postboxInteractionDetector = _container.Resolve<IPostboxInteractionDetector>();
50-
_letterboxInteractionDetector = _container.Resolve<ILetterboxInteractionDetector>();
51-
_mailDeliveryService = _container.Resolve<IMailDeliveryService>();
52-
_mailCleanupService = _container.Resolve<IMailCleanupService>();
53-
54-
SaveEvents.AfterLoad += AfterSavedGameLoad;
55-
}
56-
57-
private void AfterSavedGameLoad(object sender, EventArgs e)
58-
{
59-
_postboxInteractionDetector.Init();
60-
_letterboxInteractionDetector.Init();
61-
62-
SaveEvents.AfterLoad -= AfterSavedGameLoad;
6351
}
6452
}
6553
}

SendItems/SendItems.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
<Reference Include="System.Xml" />
5757
</ItemGroup>
5858
<ItemGroup>
59+
<Compile Include="Domain\BasePerson.cs" />
5960
<Compile Include="Domain\Farmer.cs" />
6061
<Compile Include="Domain\Friend.cs" />
6162
<Compile Include="Domain\GameDateTime.cs" />

SendItems/Services/CommandService.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,13 @@ public CommandService(
3838
RegisterCommands();
3939

4040
SaveEvents.AfterLoad += AfterSavedGameLoad;
41-
}
41+
SaveEvents.AfterReturnToTitle += AfterReturnToTitle;
42+
}
43+
44+
private void AfterReturnToTitle(object sender, EventArgs e)
45+
{
46+
_savedGameLoaded = false;
47+
}
4248

4349
private void RegisterCommands()
4450
{
@@ -91,7 +97,7 @@ private void HandleCommand(string command, string[] args)
9197
private void ShowMyDetails(string[] args)
9298
{
9399
_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);
94-
_mod.Monitor.Log($"{_addFriendCommand} {_farmerService.CurrentFarmer.Id} {_farmerService.CurrentFarmer.Name} {_farmerService.CurrentFarmer.FarmName}", LogLevel.Info);
100+
_mod.Monitor.Log($"{_addFriendCommand} {_farmerService.CurrentFarmer.Id} {_farmerService.CurrentFarmer.ConsoleSafeName} {_farmerService.CurrentFarmer.ConsoleSaveFarmName}", LogLevel.Info);
95101
}
96102

97103
private void ListLocalFarmers(string[] args)
@@ -103,7 +109,7 @@ private void ListLocalFarmers(string[] args)
103109
_mod.Monitor.Log("<id> <name> <farm name>", LogLevel.Info);
104110
foreach (var farmer in farmers)
105111
{
106-
_mod.Monitor.Log($"{farmer.Id} {farmer.Name} {farmer.FarmName}", LogLevel.Info);
112+
_mod.Monitor.Log($"{farmer.Id} {farmer.ConsoleSafeName} {farmer.ConsoleSaveFarmName}", LogLevel.Info);
107113
}
108114
}
109115
else
@@ -228,7 +234,7 @@ private void AfterSavedGameLoad(object sender, EventArgs e)
228234
{
229235
_savedGameLoaded = true;
230236
_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);
231-
_mod.Monitor.Log($"{_addFriendCommand} {_farmerService.CurrentFarmer.Id} {_farmerService.CurrentFarmer.Name} {_farmerService.CurrentFarmer.FarmName}", LogLevel.Alert);
237+
_mod.Monitor.Log($"{_addFriendCommand} {_farmerService.CurrentFarmer.Id} {_farmerService.CurrentFarmer.ConsoleSafeName} {_farmerService.CurrentFarmer.ConsoleSaveFarmName}", LogLevel.Alert);
232238
_mod.Monitor.Log($"They need to be using the Send Items mod too :)", LogLevel.Info);
233239
}
234240

SendItems/Services/FarmerService.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
using Denifia.Stardew.SendItems.Domain;
33
using StardewValley;
44
using System.Linq;
5+
using StardewModdingAPI.Events;
6+
using System;
57

68
namespace Denifia.Stardew.SendItems.Services
79
{
@@ -33,13 +35,25 @@ public Domain.Farmer CurrentFarmer {
3335
public FarmerService(IConfigurationService configService)
3436
{
3537
_configService = configService;
38+
SaveEvents.AfterReturnToTitle += AfterReturnToTitle;
39+
}
40+
41+
private void AfterReturnToTitle(object sender, EventArgs e)
42+
{
43+
_currentFarmer = null;
3644
}
3745

3846
public void LoadCurrentFarmer()
3947
{
4048
var saves = _configService.GetSavedGames();
4149
var save = saves.FirstOrDefault(x => x.Name == Game1.player.Name && x.FarmName == Game1.player.farmName);
42-
if (save == null) throw new System.Exception("error loading current farmer");
50+
if (save == null)
51+
{
52+
// Happens during a new game creation
53+
return;
54+
//throw new System.Exception("error loading current farmer");
55+
}
56+
4357

4458
var newFarmer = new Domain.Farmer()
4559
{

SendItems/Services/LetterboxInteractionDetector.cs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Denifia.Stardew.SendItems.Events;
2+
using Denifia.Stardew.SendItems.Framework;
23
using StardewModdingAPI.Events;
34
using StardewValley;
45
using System;
@@ -9,7 +10,6 @@ namespace Denifia.Stardew.SendItems.Services
910
{
1011
public interface ILetterboxInteractionDetector
1112
{
12-
void Init();
1313
}
1414

1515
/// <summary>
@@ -18,9 +18,26 @@ public interface ILetterboxInteractionDetector
1818
public class LetterboxInteractionDetector : ILetterboxInteractionDetector
1919
{
2020
private const string _locationOfLetterbox = "Farm";
21-
private const string _playerMailKey = "playerMail";
2221

23-
public void Init()
22+
public LetterboxInteractionDetector()
23+
{
24+
SaveEvents.AfterLoad += AfterSavedGameLoad;
25+
SaveEvents.AfterReturnToTitle += AfterReturnToTitle;
26+
}
27+
28+
private void AfterReturnToTitle(object sender, EventArgs e)
29+
{
30+
try
31+
{
32+
ControlEvents.MouseChanged -= MouseChanged;
33+
LocationEvents.CurrentLocationChanged -= CurrentLocationChanged;
34+
}
35+
catch (Exception)
36+
{
37+
}
38+
}
39+
40+
private void AfterSavedGameLoad(object sender, EventArgs e)
2441
{
2542
LocationEvents.CurrentLocationChanged += CurrentLocationChanged;
2643
}
@@ -57,7 +74,7 @@ private void MouseChanged(object sender, EventArgsMouseStateChanged e)
5774

5875
private bool CanUseLetterbox()
5976
{
60-
return Game1.mailbox != null && Game1.mailbox.Any() && Game1.mailbox.Peek() == _playerMailKey;
77+
return Game1.mailbox != null && Game1.mailbox.Any() && Game1.mailbox.Peek() == ModConstants.PlayerMailKey;
6178
}
6279
}
6380
}

SendItems/Services/PostboxInteractionDetector.cs

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace Denifia.Stardew.SendItems.Services
99
{
1010
public interface IPostboxInteractionDetector
1111
{
12-
void Init();
12+
1313
}
1414

1515
/// <summary>
@@ -19,7 +19,25 @@ public class PostboxInteractionDetector : IPostboxInteractionDetector
1919
{
2020
private const string locationOfPostbox = "Farm";
2121

22-
public void Init()
22+
public PostboxInteractionDetector()
23+
{
24+
SaveEvents.AfterLoad += AfterSavedGameLoad;
25+
SaveEvents.AfterReturnToTitle += AfterReturnToTitle;
26+
}
27+
28+
private void AfterReturnToTitle(object sender, EventArgs e)
29+
{
30+
try
31+
{
32+
ControlEvents.MouseChanged -= MouseChanged;
33+
LocationEvents.CurrentLocationChanged -= CurrentLocationChanged;
34+
}
35+
catch (Exception)
36+
{
37+
}
38+
}
39+
40+
private void AfterSavedGameLoad(object sender, EventArgs e)
2341
{
2442
LocationEvents.CurrentLocationChanged += CurrentLocationChanged;
2543
}

0 commit comments

Comments
 (0)