summaryrefslogtreecommitdiff
path: root/src/SMAPI
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2020-05-16 11:29:40 -0400
committerJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2020-05-16 11:29:40 -0400
commita090b6c21c877e8835f25e1d70d667abf07d1d3c (patch)
treebcd67890749d2f1c7dcdc7e82aba229cbba65d26 /src/SMAPI
parent896f531f4f6fc7f0e8dfcfc0d6433850233ee749 (diff)
downloadSMAPI-a090b6c21c877e8835f25e1d70d667abf07d1d3c.tar.gz
SMAPI-a090b6c21c877e8835f25e1d70d667abf07d1d3c.tar.bz2
SMAPI-a090b6c21c877e8835f25e1d70d667abf07d1d3c.zip
use newer C# features
Diffstat (limited to 'src/SMAPI')
-rw-r--r--src/SMAPI/Framework/Input/GamePadStateBuilder.cs17
-rw-r--r--src/SMAPI/Framework/Input/MouseStateBuilder.cs23
-rw-r--r--src/SMAPI/Framework/ModLoading/AssemblyLoader.cs10
-rw-r--r--src/SMAPI/Framework/Networking/SGalaxyNetServer.cs29
-rw-r--r--src/SMAPI/Framework/Networking/SLidgrenServer.cs31
-rw-r--r--src/SMAPI/Framework/PerformanceMonitoring/AlertContext.cs2
-rw-r--r--src/SMAPI/Framework/PerformanceMonitoring/AlertEntry.cs2
-rw-r--r--src/SMAPI/Framework/PerformanceMonitoring/PeakEntry.cs2
-rw-r--r--src/SMAPI/Framework/PerformanceMonitoring/PerformanceCounterEntry.cs2
-rw-r--r--src/SMAPI/Framework/Serialization/ColorConverter.cs2
-rw-r--r--src/SMAPI/Framework/Serialization/PointConverter.cs2
-rw-r--r--src/SMAPI/Framework/Serialization/RectangleConverter.cs2
-rw-r--r--src/SMAPI/Framework/Serialization/Vector2Converter.cs2
13 files changed, 58 insertions, 68 deletions
diff --git a/src/SMAPI/Framework/Input/GamePadStateBuilder.cs b/src/SMAPI/Framework/Input/GamePadStateBuilder.cs
index 36622066..2657fd12 100644
--- a/src/SMAPI/Framework/Input/GamePadStateBuilder.cs
+++ b/src/SMAPI/Framework/Input/GamePadStateBuilder.cs
@@ -205,16 +205,13 @@ namespace StardewModdingAPI.Framework.Input
/// <summary>Get the equivalent state.</summary>
public GamePadState GetState()
{
- if (this.State == null)
- {
- this.State = new GamePadState(
- leftThumbStick: this.LeftStickPos,
- rightThumbStick: this.RightStickPos,
- leftTrigger: this.LeftTrigger,
- rightTrigger: this.RightTrigger,
- buttons: this.GetButtonBitmask() // MonoGame requires one bitmask here; don't specify multiple values
- );
- }
+ this.State ??= new GamePadState(
+ leftThumbStick: this.LeftStickPos,
+ rightThumbStick: this.RightStickPos,
+ leftTrigger: this.LeftTrigger,
+ rightTrigger: this.RightTrigger,
+ buttons: this.GetButtonBitmask() // MonoGame requires one bitmask here; don't specify multiple values
+ );
return this.State.Value;
}
diff --git a/src/SMAPI/Framework/Input/MouseStateBuilder.cs b/src/SMAPI/Framework/Input/MouseStateBuilder.cs
index 59956feb..1cc16ca9 100644
--- a/src/SMAPI/Framework/Input/MouseStateBuilder.cs
+++ b/src/SMAPI/Framework/Input/MouseStateBuilder.cs
@@ -89,19 +89,16 @@ namespace StardewModdingAPI.Framework.Input
/// <summary>Get the equivalent state.</summary>
public MouseState GetState()
{
- if (this.State == null)
- {
- this.State = new MouseState(
- x: this.X,
- y: this.Y,
- scrollWheel: this.ScrollWheelValue,
- leftButton: this.ButtonStates[SButton.MouseLeft],
- middleButton: this.ButtonStates[SButton.MouseMiddle],
- rightButton: this.ButtonStates[SButton.MouseRight],
- xButton1: this.ButtonStates[SButton.MouseX1],
- xButton2: this.ButtonStates[SButton.MouseX2]
- );
- }
+ this.State ??= new MouseState(
+ x: this.X,
+ y: this.Y,
+ scrollWheel: this.ScrollWheelValue,
+ leftButton: this.ButtonStates[SButton.MouseLeft],
+ middleButton: this.ButtonStates[SButton.MouseMiddle],
+ rightButton: this.ButtonStates[SButton.MouseRight],
+ xButton1: this.ButtonStates[SButton.MouseX1],
+ xButton2: this.ButtonStates[SButton.MouseX2]
+ );
return this.State.Value;
}
diff --git a/src/SMAPI/Framework/ModLoading/AssemblyLoader.cs b/src/SMAPI/Framework/ModLoading/AssemblyLoader.cs
index b5533335..8df492eb 100644
--- a/src/SMAPI/Framework/ModLoading/AssemblyLoader.cs
+++ b/src/SMAPI/Framework/ModLoading/AssemblyLoader.cs
@@ -125,12 +125,10 @@ namespace StardewModdingAPI.Framework.ModLoading
{
if (!oneAssembly)
this.Monitor.Log($" Loading {assembly.File.Name} (rewritten in memory)...", LogLevel.Trace);
- using (MemoryStream outStream = new MemoryStream())
- {
- assembly.Definition.Write(outStream);
- byte[] bytes = outStream.ToArray();
- lastAssembly = Assembly.Load(bytes);
- }
+ using MemoryStream outStream = new MemoryStream();
+ assembly.Definition.Write(outStream);
+ byte[] bytes = outStream.ToArray();
+ lastAssembly = Assembly.Load(bytes);
}
else
{
diff --git a/src/SMAPI/Framework/Networking/SGalaxyNetServer.cs b/src/SMAPI/Framework/Networking/SGalaxyNetServer.cs
index 7dbfa767..ac9cf313 100644
--- a/src/SMAPI/Framework/Networking/SGalaxyNetServer.cs
+++ b/src/SMAPI/Framework/Networking/SGalaxyNetServer.cs
@@ -45,23 +45,22 @@ namespace StardewModdingAPI.Framework.Networking
[SuppressMessage("ReSharper", "AccessToDisposedClosure", Justification = "The callback is invoked synchronously.")]
protected override void onReceiveMessage(GalaxyID peer, Stream messageStream)
{
- using (IncomingMessage message = new IncomingMessage())
- using (BinaryReader reader = new BinaryReader(messageStream))
+ using IncomingMessage message = new IncomingMessage();
+ using BinaryReader reader = new BinaryReader(messageStream);
+
+ message.Read(reader);
+ ulong peerID = peer.ToUint64(); // note: GalaxyID instances get reused, so need to store the underlying ID instead
+ this.OnProcessingMessage(message, outgoing => this.SendMessageToPeerID(peerID, outgoing), () =>
{
- message.Read(reader);
- ulong peerID = peer.ToUint64(); // note: GalaxyID instances get reused, so need to store the underlying ID instead
- this.OnProcessingMessage(message, outgoing => this.SendMessageToPeerID(peerID, outgoing), () =>
+ if (this.peers.ContainsLeft(message.FarmerID) && (long)this.peers[message.FarmerID] == (long)peerID)
+ this.gameServer.processIncomingMessage(message);
+ else if (message.MessageType == StardewValley.Multiplayer.playerIntroduction)
{
- if (this.peers.ContainsLeft(message.FarmerID) && (long)this.peers[message.FarmerID] == (long)peerID)
- this.gameServer.processIncomingMessage(message);
- else if (message.MessageType == StardewValley.Multiplayer.playerIntroduction)
- {
- NetFarmerRoot farmer = this.Multiplayer.readFarmer(message.Reader);
- GalaxyID capturedPeer = new GalaxyID(peerID);
- this.gameServer.checkFarmhandRequest(Convert.ToString(peerID), this.getConnectionId(peer), farmer, msg => this.sendMessage(capturedPeer, msg), () => this.peers[farmer.Value.UniqueMultiplayerID] = capturedPeer.ToUint64());
- }
- });
- }
+ NetFarmerRoot farmer = this.Multiplayer.readFarmer(message.Reader);
+ GalaxyID capturedPeer = new GalaxyID(peerID);
+ this.gameServer.checkFarmhandRequest(Convert.ToString(peerID), this.getConnectionId(peer), farmer, msg => this.sendMessage(capturedPeer, msg), () => this.peers[farmer.Value.UniqueMultiplayerID] = capturedPeer.ToUint64());
+ }
+ });
}
/// <summary>Send a message to a remote peer.</summary>
diff --git a/src/SMAPI/Framework/Networking/SLidgrenServer.cs b/src/SMAPI/Framework/Networking/SLidgrenServer.cs
index f2c61917..05c8b872 100644
--- a/src/SMAPI/Framework/Networking/SLidgrenServer.cs
+++ b/src/SMAPI/Framework/Networking/SLidgrenServer.cs
@@ -44,25 +44,24 @@ namespace StardewModdingAPI.Framework.Networking
{
// add hook to call multiplayer core
NetConnection peer = rawMessage.SenderConnection;
- using (IncomingMessage message = new IncomingMessage())
- using (Stream readStream = new NetBufferReadStream(rawMessage))
- using (BinaryReader reader = new BinaryReader(readStream))
+ using IncomingMessage message = new IncomingMessage();
+ using Stream readStream = new NetBufferReadStream(rawMessage);
+ using BinaryReader reader = new BinaryReader(readStream);
+
+ while (rawMessage.LengthBits - rawMessage.Position >= 8)
{
- while (rawMessage.LengthBits - rawMessage.Position >= 8)
+ message.Read(reader);
+ NetConnection connection = rawMessage.SenderConnection; // don't pass rawMessage into context because it gets reused
+ this.OnProcessingMessage(message, outgoing => this.sendMessage(connection, outgoing), () =>
{
- message.Read(reader);
- NetConnection connection = rawMessage.SenderConnection; // don't pass rawMessage into context because it gets reused
- this.OnProcessingMessage(message, outgoing => this.sendMessage(connection, outgoing), () =>
+ if (this.peers.ContainsLeft(message.FarmerID) && this.peers[message.FarmerID] == peer)
+ this.gameServer.processIncomingMessage(message);
+ else if (message.MessageType == StardewValley.Multiplayer.playerIntroduction)
{
- if (this.peers.ContainsLeft(message.FarmerID) && this.peers[message.FarmerID] == peer)
- this.gameServer.processIncomingMessage(message);
- else if (message.MessageType == StardewValley.Multiplayer.playerIntroduction)
- {
- NetFarmerRoot farmer = this.Multiplayer.readFarmer(message.Reader);
- this.gameServer.checkFarmhandRequest("", this.getConnectionId(rawMessage.SenderConnection), farmer, msg => this.sendMessage(peer, msg), () => this.peers[farmer.Value.UniqueMultiplayerID] = peer);
- }
- });
- }
+ NetFarmerRoot farmer = this.Multiplayer.readFarmer(message.Reader);
+ this.gameServer.checkFarmhandRequest("", this.getConnectionId(rawMessage.SenderConnection), farmer, msg => this.sendMessage(peer, msg), () => this.peers[farmer.Value.UniqueMultiplayerID] = peer);
+ }
+ });
}
}
}
diff --git a/src/SMAPI/Framework/PerformanceMonitoring/AlertContext.cs b/src/SMAPI/Framework/PerformanceMonitoring/AlertContext.cs
index 01197f74..af630055 100644
--- a/src/SMAPI/Framework/PerformanceMonitoring/AlertContext.cs
+++ b/src/SMAPI/Framework/PerformanceMonitoring/AlertContext.cs
@@ -1,7 +1,7 @@
namespace StardewModdingAPI.Framework.PerformanceMonitoring
{
/// <summary>The context for an alert.</summary>
- internal struct AlertContext
+ internal readonly struct AlertContext
{
/*********
** Accessors
diff --git a/src/SMAPI/Framework/PerformanceMonitoring/AlertEntry.cs b/src/SMAPI/Framework/PerformanceMonitoring/AlertEntry.cs
index f5b80189..d5a0b343 100644
--- a/src/SMAPI/Framework/PerformanceMonitoring/AlertEntry.cs
+++ b/src/SMAPI/Framework/PerformanceMonitoring/AlertEntry.cs
@@ -1,7 +1,7 @@
namespace StardewModdingAPI.Framework.PerformanceMonitoring
{
/// <summary>A single alert entry.</summary>
- internal struct AlertEntry
+ internal readonly struct AlertEntry
{
/*********
** Accessors
diff --git a/src/SMAPI/Framework/PerformanceMonitoring/PeakEntry.cs b/src/SMAPI/Framework/PerformanceMonitoring/PeakEntry.cs
index cff502ad..1746e358 100644
--- a/src/SMAPI/Framework/PerformanceMonitoring/PeakEntry.cs
+++ b/src/SMAPI/Framework/PerformanceMonitoring/PeakEntry.cs
@@ -3,7 +3,7 @@ using System;
namespace StardewModdingAPI.Framework.PerformanceMonitoring
{
/// <summary>A peak invocation time.</summary>
- internal struct PeakEntry
+ internal readonly struct PeakEntry
{
/*********
** Accessors
diff --git a/src/SMAPI/Framework/PerformanceMonitoring/PerformanceCounterEntry.cs b/src/SMAPI/Framework/PerformanceMonitoring/PerformanceCounterEntry.cs
index 8adbd88d..18cca628 100644
--- a/src/SMAPI/Framework/PerformanceMonitoring/PerformanceCounterEntry.cs
+++ b/src/SMAPI/Framework/PerformanceMonitoring/PerformanceCounterEntry.cs
@@ -3,7 +3,7 @@ using System;
namespace StardewModdingAPI.Framework.PerformanceMonitoring
{
/// <summary>A single performance counter entry.</summary>
- internal struct PerformanceCounterEntry
+ internal readonly struct PerformanceCounterEntry
{
/*********
** Accessors
diff --git a/src/SMAPI/Framework/Serialization/ColorConverter.cs b/src/SMAPI/Framework/Serialization/ColorConverter.cs
index 19979981..7315f1a5 100644
--- a/src/SMAPI/Framework/Serialization/ColorConverter.cs
+++ b/src/SMAPI/Framework/Serialization/ColorConverter.cs
@@ -35,7 +35,7 @@ namespace StardewModdingAPI.Framework.Serialization
{
string[] parts = str.Split(',');
if (parts.Length != 4)
- throw new SParseException($"Can't parse {typeof(Color).Name} from invalid value '{str}' (path: {path}).");
+ throw new SParseException($"Can't parse {nameof(Color)} from invalid value '{str}' (path: {path}).");
int r = Convert.ToInt32(parts[0]);
int g = Convert.ToInt32(parts[1]);
diff --git a/src/SMAPI/Framework/Serialization/PointConverter.cs b/src/SMAPI/Framework/Serialization/PointConverter.cs
index 3481c9b2..6cf795dc 100644
--- a/src/SMAPI/Framework/Serialization/PointConverter.cs
+++ b/src/SMAPI/Framework/Serialization/PointConverter.cs
@@ -33,7 +33,7 @@ namespace StardewModdingAPI.Framework.Serialization
{
string[] parts = str.Split(',');
if (parts.Length != 2)
- throw new SParseException($"Can't parse {typeof(Point).Name} from invalid value '{str}' (path: {path}).");
+ throw new SParseException($"Can't parse {nameof(Point)} from invalid value '{str}' (path: {path}).");
int x = Convert.ToInt32(parts[0]);
int y = Convert.ToInt32(parts[1]);
diff --git a/src/SMAPI/Framework/Serialization/RectangleConverter.cs b/src/SMAPI/Framework/Serialization/RectangleConverter.cs
index fbb2e253..a5780d8a 100644
--- a/src/SMAPI/Framework/Serialization/RectangleConverter.cs
+++ b/src/SMAPI/Framework/Serialization/RectangleConverter.cs
@@ -39,7 +39,7 @@ namespace StardewModdingAPI.Framework.Serialization
var match = Regex.Match(str, @"^\{X:(?<x>\d+) Y:(?<y>\d+) Width:(?<width>\d+) Height:(?<height>\d+)\}$", RegexOptions.IgnoreCase);
if (!match.Success)
- throw new SParseException($"Can't parse {typeof(Rectangle).Name} from invalid value '{str}' (path: {path}).");
+ throw new SParseException($"Can't parse {nameof(Rectangle)} from invalid value '{str}' (path: {path}).");
int x = Convert.ToInt32(match.Groups["x"].Value);
int y = Convert.ToInt32(match.Groups["y"].Value);
diff --git a/src/SMAPI/Framework/Serialization/Vector2Converter.cs b/src/SMAPI/Framework/Serialization/Vector2Converter.cs
index 1d9b08e0..3e2ab776 100644
--- a/src/SMAPI/Framework/Serialization/Vector2Converter.cs
+++ b/src/SMAPI/Framework/Serialization/Vector2Converter.cs
@@ -33,7 +33,7 @@ namespace StardewModdingAPI.Framework.Serialization
{
string[] parts = str.Split(',');
if (parts.Length != 2)
- throw new SParseException($"Can't parse {typeof(Vector2).Name} from invalid value '{str}' (path: {path}).");
+ throw new SParseException($"Can't parse {nameof(Vector2)} from invalid value '{str}' (path: {path}).");
float x = Convert.ToSingle(parts[0]);
float y = Convert.ToSingle(parts[1]);