diff --git a/EOLib/Domain/Account/AccountActions.cs b/EOLib/Domain/Account/AccountActions.cs index 8fb8be073..a7fcd5aee 100644 --- a/EOLib/Domain/Account/AccountActions.cs +++ b/EOLib/Domain/Account/AccountActions.cs @@ -71,7 +71,7 @@ public async Task CheckAccountNameWithServer(string accountName) var reply = (AccountReply)response.ReadShort(); if (reply >= AccountReply.OK_CodeRange) { - _playerInfoRepository.AccountCreateID = (ushort)reply; + _playerInfoRepository.SessionID = (short)reply; // Based on patch: https://github.com/eoserv/eoserv/commit/80dde6d4e7f440a93503aeec79f4a2f5931dc13d // Account may change sequence start depending on the eoserv build being used @@ -93,7 +93,7 @@ public async Task CheckAccountNameWithServer(string accountName) public async Task CreateAccount(ICreateAccountParameters parameters) { var createAccountPacket = new PacketBuilder(PacketFamily.Account, PacketAction.Create) - .AddShort((short)_playerInfoRepository.AccountCreateID) + .AddShort((short)_playerInfoRepository.SessionID) .AddByte(255) .AddBreakString(parameters.AccountName) .AddBreakString(parameters.Password) diff --git a/EOLib/Domain/Login/ILoginRequestGrantedData.cs b/EOLib/Domain/Login/ILoginRequestGrantedData.cs index c93735f07..035097f35 100644 --- a/EOLib/Domain/Login/ILoginRequestGrantedData.cs +++ b/EOLib/Domain/Login/ILoginRequestGrantedData.cs @@ -6,7 +6,7 @@ namespace EOLib.Domain.Login { public interface ILoginRequestGrantedData : ITranslatedData { - short PlayerID { get; } + short SessionID { get; } int CharacterID { get; } short MapID { get; } @@ -38,7 +38,7 @@ public interface ILoginRequestGrantedData : ITranslatedData short JailMap { get; } bool FirstTimePlayer { get; } - ILoginRequestGrantedData WithPlayerID(short playerID); + ILoginRequestGrantedData WithSessionID(short playerID); ILoginRequestGrantedData WithCharacterID(int characterID); ILoginRequestGrantedData WithMapID(short mapID); ILoginRequestGrantedData WithMapRID(IEnumerable mapRID); diff --git a/EOLib/Domain/Login/LoginActions.cs b/EOLib/Domain/Login/LoginActions.cs index 4a9572939..ad4e2fa1f 100644 --- a/EOLib/Domain/Login/LoginActions.cs +++ b/EOLib/Domain/Login/LoginActions.cs @@ -113,7 +113,7 @@ public async Task RequestCharacterLogin(ICharacter character) .WithAdminLevel(data.AdminLevel) .WithStats(data.CharacterStats); - _playerInfoRepository.PlayerID = data.PlayerID; + _playerInfoRepository.SessionID = data.SessionID; _playerInfoRepository.IsFirstTimePlayer = data.FirstTimePlayer; _currentMapStateRepository.CurrentMapID = data.MapID; @@ -133,7 +133,7 @@ public async Task RequestCharacterLogin(ICharacter character) public async Task CompleteCharacterLogin() { var packet = new PacketBuilder(PacketFamily.Welcome, PacketAction.Message) - .AddThree((ushort)_playerInfoRepository.PlayerID) + .AddThree(_playerInfoRepository.SessionID) .AddInt(_characterRepository.MainCharacter.ID) .Build(); diff --git a/EOLib/Domain/Login/LoginRequestGrantedData.cs b/EOLib/Domain/Login/LoginRequestGrantedData.cs index a7926fa7a..bc43bfbb1 100644 --- a/EOLib/Domain/Login/LoginRequestGrantedData.cs +++ b/EOLib/Domain/Login/LoginRequestGrantedData.cs @@ -7,7 +7,7 @@ namespace EOLib.Domain.Login { public class LoginRequestGrantedData : ILoginRequestGrantedData { - public short PlayerID { get; private set; } + public short SessionID { get; private set; } public int CharacterID { get; private set; } public short MapID { get; private set; } @@ -40,10 +40,10 @@ public class LoginRequestGrantedData : ILoginRequestGrantedData public short JailMap { get; private set; } public bool FirstTimePlayer { get; private set; } - public ILoginRequestGrantedData WithPlayerID(short playerID) + public ILoginRequestGrantedData WithSessionID(short sessionID) { var copy = MakeCopy(this); - copy.PlayerID = playerID; + copy.SessionID = sessionID; return copy; } @@ -219,7 +219,7 @@ private static LoginRequestGrantedData MakeCopy(LoginRequestGrantedData source) { return new LoginRequestGrantedData { - PlayerID = source.PlayerID, + SessionID = source.SessionID, CharacterID = source.CharacterID, MapID = source.MapID, diff --git a/EOLib/Domain/Login/PlayerInfoRepository.cs b/EOLib/Domain/Login/PlayerInfoRepository.cs index 023b8443c..a798f3fa8 100644 --- a/EOLib/Domain/Login/PlayerInfoRepository.cs +++ b/EOLib/Domain/Login/PlayerInfoRepository.cs @@ -10,7 +10,7 @@ public interface IPlayerInfoRepository short PlayerID { get; set; } - ushort AccountCreateID { get; set; } + short SessionID { get; set; } bool IsFirstTimePlayer { get; set; } @@ -25,7 +25,7 @@ public interface IPlayerInfoProvider short PlayerID { get; } - ushort AccountCreateID { get; set; } + short SessionID { get; set; } bool IsFirstTimePlayer { get; } @@ -41,7 +41,7 @@ public sealed class PlayerInfoRepository : IPlayerInfoRepository, IPlayerInfoPro public short PlayerID { get; set; } - public ushort AccountCreateID { get; set; } + public short SessionID { get; set; } public bool IsFirstTimePlayer { get; set; } @@ -52,7 +52,7 @@ public void ResetState() LoggedInAccountName = ""; PlayerPassword = ""; PlayerID = 0; - AccountCreateID = 0; + SessionID = 0; IsFirstTimePlayer = false; PlayerIsInGame = false; } diff --git a/EOLib/Domain/Protocol/IInitializationData.cs b/EOLib/Domain/Protocol/IInitializationData.cs index 034511b5e..6b09764eb 100644 --- a/EOLib/Domain/Protocol/IInitializationData.cs +++ b/EOLib/Domain/Protocol/IInitializationData.cs @@ -16,7 +16,7 @@ public enum InitializationDataKey SequenceByte2, SendMultiple, ReceiveMultiple, - ClientID, + PlayerID, HashResponse, //response: Out of Date RequiredVersionNumber, diff --git a/EOLib/Domain/Protocol/InitReply.cs b/EOLib/Domain/Protocol/InitReply.cs index fd03a946b..efc2c4775 100644 --- a/EOLib/Domain/Protocol/InitReply.cs +++ b/EOLib/Domain/Protocol/InitReply.cs @@ -5,14 +5,15 @@ public enum InitReply ClientOutOfDate = 1, Success = 2, BannedFromServer = 3, - MapFile = 4, - ItemFile = 5, - NpcFile = 6, - SpellFile = 7, - AllPlayersList = 8, - MapMutation = 9, - FriendPlayersList = 10, - ClassFile = 11, + WarpMap = 4, + MapFile = 5, + ItemFile = 6, + NpcFile = 7, + SpellFile = 8, + AllPlayersList = 9, + MapMutation = 10, + FriendPlayersList = 11, + ClassFile = 12, ErrorState = 0 } } diff --git a/EOLib/Domain/Protocol/InitializationSuccessData.cs b/EOLib/Domain/Protocol/InitializationSuccessData.cs index 62f05b7cc..e44b8a4b3 100644 --- a/EOLib/Domain/Protocol/InitializationSuccessData.cs +++ b/EOLib/Domain/Protocol/InitializationSuccessData.cs @@ -9,21 +9,21 @@ public class InitializationSuccessData : IInitializationData public int this[InitializationDataKey key] => GetValueHelper(key); private readonly byte _seq1, _seq2, _sendMulti, _recvMulti; - private readonly short _clientID; + private readonly short _playerID; private readonly int _hashResponse; public InitializationSuccessData(byte sequence1, byte sequence2, byte receiveMultiple, byte sendMultiple, - short clientID, + short playerID, int hashResponse) { _seq1 = sequence1; _seq2 = sequence2; _recvMulti = receiveMultiple; _sendMulti = sendMultiple; - _clientID = clientID; + _playerID = playerID; _hashResponse = hashResponse; } @@ -35,7 +35,7 @@ private int GetValueHelper(InitializationDataKey key) case InitializationDataKey.SequenceByte2: return _seq2; case InitializationDataKey.SendMultiple: return _sendMulti; case InitializationDataKey.ReceiveMultiple: return _recvMulti; - case InitializationDataKey.ClientID: return _clientID; + case InitializationDataKey.PlayerID: return _playerID; case InitializationDataKey.HashResponse: return _hashResponse; default: throw new ArgumentOutOfRangeException(nameof(key), key, null); } diff --git a/EOLib/Net/Connection/NetworkConnectionActions.cs b/EOLib/Net/Connection/NetworkConnectionActions.cs index d31938fea..77b0917b4 100644 --- a/EOLib/Net/Connection/NetworkConnectionActions.cs +++ b/EOLib/Net/Connection/NetworkConnectionActions.cs @@ -2,6 +2,7 @@ using System.Threading.Tasks; using AutomaticTypeMapper; using EOLib.Config; +using EOLib.Domain.Login; using EOLib.Domain.Protocol; using EOLib.Net.Communication; using EOLib.Net.PacketProcessing; @@ -21,6 +22,8 @@ public class NetworkConnectionActions : INetworkConnectionActions private readonly IPacketTranslator _initPacketTranslator; private readonly INetworkClientFactory _networkClientFactory; private readonly IPacketSendService _packetSendService; + private readonly IPlayerInfoRepository _playerInfoRepository; + public NetworkConnectionActions(INetworkClientRepository networkClientRepository, IConnectionStateRepository connectionStateRepository, @@ -30,7 +33,8 @@ public class NetworkConnectionActions : INetworkConnectionActions IHDSerialNumberService hdSerialNumberService, IPacketTranslator initPacketTranslator, INetworkClientFactory networkClientFactory, - IPacketSendService packetSendService) + IPacketSendService packetSendService, + IPlayerInfoRepository playerInfoRepository) { _networkClientRepository = networkClientRepository; _connectionStateRepository = connectionStateRepository; @@ -41,6 +45,7 @@ public class NetworkConnectionActions : INetworkConnectionActions _initPacketTranslator = initPacketTranslator; _networkClientFactory = networkClientFactory; _packetSendService = packetSendService; + _playerInfoRepository = playerInfoRepository; } public async Task ConnectToServer() @@ -104,10 +109,12 @@ public async Task BeginHandshake() public void CompleteHandshake(IInitializationData initializationData) { + _playerInfoRepository.PlayerID = (short)initializationData[InitializationDataKey.PlayerID]; + var packet = new PacketBuilder(PacketFamily.Connection, PacketAction.Accept) .AddShort((short)initializationData[InitializationDataKey.SendMultiple]) .AddShort((short)initializationData[InitializationDataKey.ReceiveMultiple]) - .AddShort((short)initializationData[InitializationDataKey.ClientID]) + .AddShort(_playerInfoRepository.PlayerID) .Build(); _packetSendService.SendPacket(packet); diff --git a/EOLib/Net/Translators/LoginRequestGrantedPacketTranslator.cs b/EOLib/Net/Translators/LoginRequestGrantedPacketTranslator.cs index fb6a87365..7d2c7b92a 100644 --- a/EOLib/Net/Translators/LoginRequestGrantedPacketTranslator.cs +++ b/EOLib/Net/Translators/LoginRequestGrantedPacketTranslator.cs @@ -16,7 +16,7 @@ public ILoginRequestGrantedData TranslatePacket(IPacket packet) if (reply != CharacterLoginReply.RequestGranted) throw new MalformedPacketException("Unexpected welcome response in packet: " + reply, packet); - var playerID = packet.ReadShort(); + var sessionID = packet.ReadShort(); var characterID = packet.ReadInt(); var mapID = packet.ReadShort(); @@ -111,7 +111,7 @@ public ILoginRequestGrantedData TranslatePacket(IPacket packet) throw new MalformedPacketException("Missing terminating 255 byte", packet); return new LoginRequestGrantedData() - .WithPlayerID(playerID) + .WithSessionID(sessionID) .WithCharacterID(characterID) .WithMapID(mapID) .WithMapRID(mapRid)