Skip to content

Commit e50772c

Browse files
committed
Fixed datastorage callback handling
Removed .Net used version tracking (sadly)
1 parent 424af81 commit e50772c

File tree

6 files changed

+47
-55
lines changed

6 files changed

+47
-55
lines changed

Archipelago.MultiClient.Net.Tests/DataStorageHelperFixture.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -758,15 +758,15 @@ public void Should_correctly_handle_deplete()
758758
Key = "DP1",
759759
Value = 120,
760760
OriginalValue = 70,
761-
AdditionalArguments = new Dictionary<string, JToken> { { "Reference", callback1Reference } }
761+
AdditionalArguments = new Dictionary<string, JToken> { { "Reference", callback1Reference.ToString("N") } }
762762
};
763763
var setReplyPacketC = new SetReplyPacket()
764764
{
765765
Key = "DP2",
766766
Value = 0m,
767767
OriginalValue = 10.36m,
768768
AdditionalArguments = new Dictionary<string, JToken> {
769-
{ "Reference", callback2Reference },
769+
{ "Reference", callback2Reference.ToString("N") },
770770
{ "yarg", 10 }
771771
}
772772
};

Archipelago.MultiClient.Net/Archipelago.MultiClient.Net.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
<PackageReadmeFile>README.md</PackageReadmeFile>
1111
<RepositoryUrl>https://github.com/ArchipelagoMW/Archipelago.MultiClient.Net</RepositoryUrl>
1212
<RepositoryType>git</RepositoryType>
13-
<AssemblyVersion>6.6.1.0</AssemblyVersion>
14-
<FileVersion>6.6.1.0</FileVersion>
15-
<Version>6.6.1</Version>
13+
<AssemblyVersion>6.6.2.0</AssemblyVersion>
14+
<FileVersion>6.6.2.0</FileVersion>
15+
<Version>6.6.2</Version>
1616
<PackageLicenseExpression>MIT</PackageLicenseExpression>
1717
<PackageRequireLicenseAcceptance>False</PackageRequireLicenseAcceptance>
1818
<PackageIcon>blue-icon.png</PackageIcon>

Archipelago.MultiClient.Net/ArchipelagoSession.cs

Lines changed: 1 addition & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,7 @@
33
using Archipelago.MultiClient.Net.Helpers;
44
using Archipelago.MultiClient.Net.Models;
55
using Archipelago.MultiClient.Net.Packets;
6-
using Newtonsoft.Json.Linq;
76
using System;
8-
using System.Collections.Generic;
9-
using System.Diagnostics;
10-
using System.Reflection;
117
using System.Threading;
128

139
#if !NET35
@@ -185,9 +181,6 @@ void Socket_PacketReceived(ArchipelagoPacketBase packet)
185181
{
186182
case ConnectedPacket _:
187183
case ConnectionRefusedPacket _:
188-
if (packet is ConnectedPacket && RoomState.Version != null && RoomState.Version >= new Version(0, 3, 8))
189-
LogUsedVersion();
190-
191184
#if NET35
192185
if (expectingLoginResult)
193186
{
@@ -210,42 +203,7 @@ void Socket_PacketReceived(ArchipelagoPacketBase packet)
210203
}
211204
}
212205

213-
void LogUsedVersion()
214-
{
215-
#if NET35
216-
const string libVersion = "NET35";
217-
#elif NET40
218-
const string libVersion = "NET40";
219-
#elif NET45
220-
const string libVersion = "NET45";
221-
#elif NETSTANDARD2_0
222-
const string libVersion = "NETSTANDARD2_0";
223-
#elif NET6_0
224-
const string libVersion = "NET6_0";
225-
#else
226-
const string libVersion = "OTHER";
227-
#endif
228-
try
229-
{
230-
var assemblyVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion;
231-
232-
Socket.SendPacketAsync(new SetPacket {
233-
Key = ".NetUsedVersions",
234-
DefaultValue = JObject.FromObject(new Dictionary<string, bool>()),
235-
Operations = new[] {
236-
Operation.Update(new Dictionary<string, bool> {
237-
{ $"{ConnectionInfo.Game}:{assemblyVersion}:{libVersion}", true }
238-
})
239-
}
240-
});
241-
}
242-
catch
243-
{
244-
// ignored
245-
}
246-
}
247-
248-
#if !NET35
206+
#if !NET35
249207
/// <inheritdoc/>
250208
public Task<RoomInfoPacket> ConnectAsync()
251209
{
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
6+
#if NET35
7+
using System.Text.RegularExpressions;
8+
#endif
9+
10+
namespace Archipelago.MultiClient.Net.Extensions
11+
{
12+
static class GuidExtensions
13+
{
14+
internal static bool TryParseNGuid(this string s, out Guid g)
15+
{
16+
#if NET35
17+
var format = new Regex("^[A-Fa-f0-9]{32}$");
18+
var match = format.Match(s);
19+
if (match.Success)
20+
{
21+
g = new Guid(s);
22+
return true;
23+
}
24+
else
25+
{
26+
g = Guid.Empty;
27+
return false;
28+
}
29+
#else
30+
return Guid.TryParseExact(s, "N", out g);
31+
#endif
32+
}
33+
}
34+
}

Archipelago.MultiClient.Net/Helpers/DataStorageHelper.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
using Archipelago.MultiClient.Net.Enums;
2+
using Archipelago.MultiClient.Net.Extensions;
23
using Archipelago.MultiClient.Net.Models;
34
using Archipelago.MultiClient.Net.Packets;
45
using Newtonsoft.Json.Linq;
56
using System;
67
using System.Collections.Generic;
7-
using System.Runtime.InteropServices;
88

99
#if NET35
1010
using System.Threading;
@@ -98,12 +98,13 @@ void OnPacketReceived(ArchipelagoPacketBase packet)
9898
case SetReplyPacket setReplyPacket:
9999
if (setReplyPacket.AdditionalArguments != null
100100
&& setReplyPacket.AdditionalArguments.ContainsKey("Reference")
101-
&& setReplyPacket.AdditionalArguments["Reference"].Type == JTokenType.Guid
102-
&& operationSpecificCallbacks.TryGetValue((Guid)setReplyPacket.AdditionalArguments["Reference"], out var operationCallback))
101+
&& setReplyPacket.AdditionalArguments["Reference"].Type == JTokenType.String
102+
&& ((string)setReplyPacket.AdditionalArguments["Reference"]).TryParseNGuid(out var guid)
103+
&& operationSpecificCallbacks.TryGetValue(guid, out var operationCallback))
103104
{
104105
operationCallback(setReplyPacket.OriginalValue, setReplyPacket.Value, setReplyPacket.AdditionalArguments);
105106

106-
operationSpecificCallbacks.Remove((Guid)setReplyPacket.AdditionalArguments["Reference"]);
107+
operationSpecificCallbacks.Remove(guid);
107108
}
108109

109110
if (onValueChangedEventHandlers.TryGetValue(setReplyPacket.Key, out var handler))
@@ -228,7 +229,7 @@ void SetValue(string key, DataStorageElement e)
228229

229230
operationSpecificCallbacks[guid] = e.Callbacks;
230231

231-
additionalArguments["Reference"] = JToken.FromObject(guid);
232+
additionalArguments["Reference"] = guid.ToString("N");
232233

233234
socket.SendPacketAsync(new SetPacket
234235
{

Archipelago.MultiClient.Net/Packets/PrintJsonPacket.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using Archipelago.MultiClient.Net.Enums;
22
using Archipelago.MultiClient.Net.Models;
33
using Newtonsoft.Json;
4-
using Newtonsoft.Json.Converters;
54

65
#pragma warning disable CS1591
76

@@ -15,7 +14,7 @@ public class PrintJsonPacket : ArchipelagoPacketBase
1514
public JsonMessagePart[] Data { get; set; }
1615

1716
[JsonProperty("type")]
18-
[JsonConverter(typeof(StringEnumConverter))]
17+
[JsonConverter(typeof(AttemptingStringEnumConverter))]
1918
public JsonMessageType? MessageType { get; set; }
2019
}
2120

0 commit comments

Comments
 (0)