Skip to content

Releases: ArchipelagoMW/Archipelago.MultiClient.Net

Release 6.3.1

25 Aug 12:42
Compare
Choose a tag to compare

Fixed crash in IPlayerHelper.GetPlayerInfo() when entering negative values

6.3.0

02 Aug 21:44
Compare
Choose a tag to compare

What's Changed

  • PlayerInfo's can now be compared on equality (based on team/slot)
  • New method on PlayerInfo to check if a player IsRelatedTo a group
  • New method on PlayerInfo retreive all members of a group, if that player represends a group
  • Add generic overload for GetSlotData in DataStorageWrapper by BadMagic in #98
  • Fix IsRelatedToActivePlayer logic for itemlink groups by BadMagic in #99
  • Added test to prove duplicate item id's inside a single game wont cause any issues

New Contributors

Full Changelog: 6.2.0...6.3.0

Release 6.2.0

06 Jul 19:09
5ce1ee4
Compare
Choose a tag to compare

Changed:

  • Fixed parsing of longer UTF8 characters past 1kb boundaries on .net 4.5 and higher
  • Improved performance of websockets on .net 4.5 and higher
  • Location scouts will now filter out non existing locations
  • Json parse failures will now raise the Socket's ErrorReceived

PR's

  • fix retrieve typo in DataStorageHelperFixture.cs by @Berserker66 in #94
  • fix retrieve typo in ArchipelagoPacketBase.cs by @Berserker66 in #93
  • Remove superflous line in LoginAsync by @Berserker66 in #92
  • Fix parsing of UTF8 across 1kb boundaries + propagate package parse errors by @Jarno458 in #97

Full Changelog: 6.1.1...6.2.0

Release 6.1.1

19 Jun 18:18
Compare
Choose a tag to compare
  • New:
    • ItemInfo now has an ToSerializable() method to convert its data into an SerializableItemInfo that can be serialized to json
    • SerializableItemInfo has an ToJson(bool) to let you convert it into a json string, and an static FromJson(string, session) method to convert an json string back into an SerializableItemInfo

Release 6.0.1

11 Jun 21:12
Compare
Choose a tag to compare

Changes:

  • session.ConnectionInfo.Game is now updated after successfully connecting, with the game of the slot you connected to
    • This fixes location and item name lookups for games connecting without providing a game

Release 6.0.0

09 Jun 17:38
Compare
Choose a tag to compare

Version 6.0.0 has been released (also available on nuget)

Breaking Changes (oof):

  • All members of ArchiepalgoSession are now provided as interfaces to improve unit testability
    • ReceivedItemsHelper > IReceivedItemsHelper
    • LocationCheckHelper > ILocationCheckHelper
    • PlayerHelper > IPlayerHelper
    • DataStorageHelper > IDataStorageHelper
    • ConnectionInfoHelper > IConnectionInfoProvider
    • RoomStateHelper > IRoomStateHelper
    • MessageLogHelper > IMessageLogHelper
  • Support for older servers that use version based data packages is completely dropped
  • DataStorage callbacks, both session.DataStorage["key"].OnValueChanged() aswel as session.DataStorage["key"] += Callback.Add() have received an additional arguments parameter
    • The parameter of type Dictionary<string, JToken> contains any additional arguments that where send to the server when the corresponding datastorage operation was ran
  • session.DataStorage now has support for BigInterger on .Net Framework 4.0 and higher
  • Changes to LocationCheckHelper:
    • ScoutLocationsAsync() now returns an Dictionary<long, ScoutedItemInfo>
    • GetLocationNameFromId() now has an additional optional games argument to specify the game to lookup the id in
      • game defaults to null where it will look into the game currently connected as
  • Changes to ReceivedItemsHelper:
    • GetItemName() now has an additional optional games argument to specify the game to lookup the id in
      • game defaults to null where it will look into the game currently connected as
    • .AllItemsReceived now returns a ReadOnlyCollection<ItemInfo> rather than ReadOnlyCollection<NetworkItem>
    • .PeekItem() and .DequeueItem now has return a type ItemInfo rather than NetworkItem
      • This means that when there is no item to in the queue, it will return null rather then an default struct
  • ItemSendLogMessage and its descendants HintItemSendLogMessage & ItemCheatLogMessage property Item changed type to ItemInfo rather than NetworkItem
  • Removal of previusly deprecated stuff:
    • ReceivingPlayerSlot and SendingPlayerSlot on ItemSendLogMessage, HintItemSendLogMessage have been removed
    • RoomInfoPacket.DataPackageVersions has been removed
    • Datastorage operation << and >> have been removed

New Features:

  • Support added for overlapping id's in datapackage
  • Api documentation is now available on https://archipelagomw.github.io/Archipelago.MultiClient.Net/index.html
  • New methods on ArchipelagoSession so the client can avoid using session.socket.SendPacket
    • Say() send a message on behalf of the player
    • SetGoalAchieved() mark the current slot as completed
    • SetClientState() update the status of the current client
  • ScoutLocationsAsync has a new overload with an HintCreationPolicy that allows the creation of hints that only get broadcasted once
  • ItemInfo is now used in instead of NetworkItem,
    • its now a class rather than struct
      • this means the default value will be null rather then an default empty struct
      • this also means it can nolonger be implicitly compared itemA == itemB
    • it provides properties to easily resolve names: .ItemName, .LocationName, .ItemDisplayName, .LocationDisplayName
    • it provides properties to access the associated games: .ItemGame, .LocationGame
  • New readonly datastorage methods have been added:
    • session.DataStorage.GetLocationNameGroups() to look up location name groups
    • session.DataStorage.GetClientStatus() to look up the status of a specific slot
    • session.DataStorage.TrackClientStatus() to keep track of changes to a specific slot
  • New datastorage opperations have been added:
    • + Operation.Floor() - round the data storage value down to the nearest integer
    • + Operation.Ceiling() - rounds the data storage value up to the nearest integer
    • + AdditionalArgument.Add() - Allows addition arguments to be added to an data storage operation
  • Improved error reporting on websockets for clients running .Net Framework 4.5 or higher, it will now fire the session.Socket.ErrorReceived with the issues encountered during connection
    • The same change was made to the .Net framework 3.5 or 4.0 but it still doesn't seem report anything
  • PlayerHelper now has a GetPlayerInfo() to easily retrieve information about a specific slot
  • PlayerInfo now implicitly convert to an integer of its slotid, (so it can be used inplace of a slotId)
  • GeneratorVersion is now available for reading on the session.RoomStateHelper
  • ItemMessagePart and LocationMessagePart now contain a .Player property

Changes:

  • Clients that use .Net framework 4.0 or 4.5 version of the library will now use a more framework appropriate version of newtonsoft.json (previously they used the 3.5 version)
  • session.CompleteLocationChecks() will now fully ignore location id's that aren't part of your current multiworld

Fixes:

  • HintCosts are now properly calculated and available on the session.RoomStateHelper
  • DataPackage contents are now also accepted if they are only partly loaded
  • .IsRelatedToActivePlayer on log messages should now work, if not plz let me know in more details to further investigate
  • CompleteLocationChecksAsync() will now wait until the message is published to the websocket

Release 6.0.0-rc5

31 May 22:03
23fbc23
Compare
Choose a tag to compare
Release 6.0.0-rc5 Pre-release
Pre-release

Version 6.0.0 has an release candidate ready for testing, plz give a spin (also available on nuget)

Breaking Changes (oof):

  • All members of ArchiepalgoSession are now provided as interfaces to improve unit testability
    • ReceivedItemsHelper > IReceivedItemsHelper
    • LocationCheckHelper > ILocationCheckHelper
    • PlayerHelper > IPlayerHelper
    • DataStorageHelper > IDataStorageHelper
    • ConnectionInfoHelper > IConnectionInfoProvider
    • RoomStateHelper > IRoomStateHelper
    • MessageLogHelper > IMessageLogHelper
  • Support for older servers that use version based data packages is completely dropped
  • DataStorage callbacks, both session.DataStorage["key"].OnValueChanged() aswel as session.DataStorage["key"] += Callback.Add() have received an additional arguments parameter
    • The parameter of type Dictionary<string, JToken> contains any additional arguments that where send to the server when the corresponding datastorage operation was ran
  • session.DataStorage now has support for BigInterger on .Net Framework 4.0 and higher
  • Changes to LocationCheckHelper:
    • ScoutLocationsAsync() now returns an Dictionary<long, ScoutedItemInfo>
    • GetLocationNameFromId() now has an additional optional games argument to specify the game to lookup the id in
      • game defaults to null where it will look into the game currently connected as
  • Changes to ReceivedItemsHelper:
    • GetItemName() now has an additional optional games argument to specify the game to lookup the id in
      • game defaults to null where it will look into the game currently connected as
    • .AllItemsReceived now returns a ReadOnlyCollection<ItemInfo> rather than ReadOnlyCollection<NetworkItem>
    • .PeekItem() and .DequeueItem now has return a type ItemInfo rather than NetworkItem
      • This means that when there is no item to in the queue, it will return null rather then an default struct
  • ItemSendLogMessage and its descendants HintItemSendLogMessage & ItemCheatLogMessage property Item changed type to ItemInfo rather than NetworkItem
  • Removal of previusly deprecated stuff:
    • ReceivingPlayerSlot and SendingPlayerSlot on ItemSendLogMessage, HintItemSendLogMessage have been removed
    • RoomInfoPacket.DataPackageVersions has been removed
    • Datastorage operation << and >> have been removed

New Features:

  • Support added for overlapping id's in datapackage
  • Api documentation is now available on https://archipelagomw.github.io/Archipelago.MultiClient.Net/index.html
  • New methods on ArchipelagoSession so the client can avoid using session.socket.SendPacket
    • Say() send a message on behalf of the player
    • SetGoalAchieved() mark the current slot as completed
    • SetClientState() update the status of the current client
  • ScoutLocationsAsync has a new overload with an HintCreationPolicy that allows the creation of hints that only get broadcasted once
  • ItemInfo is now used in instead of NetworkItem,
    • its now a class rather than struct
      • this means the default value will be null rather then an default empty struct
      • this also means it can nolonger be implicitly compared itemA == itemB
    • it provides properties to easily resolve names: .ItemName, .LocationName, .ItemDisplayName, .LocationDisplayName
    • it provides properties to access the associated games: .ItemGame, .LocationGame
  • New readonly datastorage methods have been added:
    • session.DataStorage.GetLocationNameGroups() to look up location name groups
    • session.DataStorage.GetClientStatus() to look up the status of a specific slot
    • session.DataStorage.TrackClientStatus() to keep track of changes to a specific slot
  • New datastorage opperations have been added:
    • + Operation.Floor() - round the data storage value down to the nearest integer
    • + Operation.Ceiling() - rounds the data storage value up to the nearest integer
    • + AdditionalArgument.Add() - Allows addition arguments to be added to an data storage operation
  • Improved error reporting on websockets for clients running .Net Framework 4.5 or higher, it will now fire the session.Socket.ErrorReceived with the issues encountered during connection
    • The same change was made to the .Net framework 3.5 or 4.0 but it still doesn't seem report anything
  • PlayerHelper now has a GetPlayerInfo() to easily retrieve information about a specific slot
  • PlayerInfo now implicitly convert to an integer of its slotid, (so it can be used inplace of a slotId)
  • GeneratorVersion is now available for reading on the session.RoomStateHelper
  • ItemMessagePart and LocationMessagePart now contain a .Player property

Changes:

  • Clients that use .Net framework 4.0 or 4.5 version of the library will now use a more framework appropriate version of newtonsoft.json (previously they used the 3.5 version)
  • session.CompleteLocationChecks() will now fully ignore location id's that aren't part of your current multiworld

Fixes:

  • HintCosts are now properly calculated and available on the session.RoomStateHelper
  • DataPackage contents are now also accepted if they are only partly loaded
  • .IsRelatedToActivePlayer on log messages should now work, if not plz let me know in more details to further investigate
  • CompleteLocationChecksAsync() will now wait until the message is published to the websocket

Release 5.0.6

22 Jul 16:21
Compare
Choose a tag to compare

Improved some Tasks handling to fix an exception that was reported

Release 5.0.5

11 Jun 12:27
Compare
Choose a tag to compare

Greatly reduced CPU usage on .net 4.5 and greater thanks to @dariof4 in #79
Reduced errors logged during disconnecting

Full Changelog: 5.0.4...5.0.5

Release 5.0.4

07 May 13:35
636bf32
Compare
Choose a tag to compare

Fixed bug for .Net 3.5 & 4.0 where using session.Socket.Connected would result in a null reference exception

What's Changed

Full Changelog: 5.0.3...5.0.4