|
3 | 3 | using DotNetty.Transport.Channels; |
4 | 4 | using NetScape.Abstractions; |
5 | 5 | using NetScape.Abstractions.Extensions; |
| 6 | +using NetScape.Abstractions.Interfaces.Game.Player; |
6 | 7 | using NetScape.Abstractions.Interfaces.Login; |
7 | 8 | using NetScape.Abstractions.Interfaces.Messages; |
8 | 9 | using NetScape.Abstractions.Interfaces.World; |
@@ -52,13 +53,14 @@ public class LoginDecoder : StatefulFrameDecoder<LoginDecoderState> |
52 | 53 | private readonly ILoginProcessor<Rs2LoginRequest, Rs2LoginResponse> _loginProcessor; |
53 | 54 | private readonly IMessageProvider _gameMessageProvider; |
54 | 55 | private readonly IWorld _world; |
55 | | - |
56 | | - public LoginDecoder(ILogger logger, ILoginProcessor<Rs2LoginRequest, Rs2LoginResponse> loginProcessor, IMessageProvider gameMessageProvider, IWorld world) : base(LoginDecoderState.LoginHandshake) |
| 56 | + private readonly IPlayerInitializer _playerInitializer; |
| 57 | + public LoginDecoder(ILogger logger, ILoginProcessor<Rs2LoginRequest, Rs2LoginResponse> loginProcessor, IMessageProvider gameMessageProvider, IWorld world, IPlayerInitializer playerInitializer) : base(LoginDecoderState.LoginHandshake) |
57 | 58 | { |
58 | 59 | _logger = logger; |
59 | 60 | _gameMessageProvider = gameMessageProvider; |
60 | 61 | _loginProcessor = loginProcessor; |
61 | 62 | _world = world; |
| 63 | + _playerInitializer = playerInitializer; |
62 | 64 | } |
63 | 65 |
|
64 | 66 | protected override void Decode(IChannelHandlerContext context, IByteBuffer input, List<object> output, LoginDecoderState state) |
@@ -246,7 +248,8 @@ private async Task WriteProcessorResponseAsync(Rs2LoginResponse loginResult, ICh |
246 | 248 | { |
247 | 249 | await ctx.WriteAndFlushAsync(loginResult); |
248 | 250 | HandleLoginProcessorResponse(loginResult.Player, loginResult.Status, ctx, randomPair); |
249 | | - } catch(Exception e) |
| 251 | + } |
| 252 | + catch (Exception e) |
250 | 253 | { |
251 | 254 | Log.Logger.Error(e, nameof(WriteProcessorResponseAsync)); |
252 | 255 | await ctx.CloseAsync(); |
@@ -300,10 +303,7 @@ private void HandleLoginProcessorResponse(Player player, LoginStatus response, I |
300 | 303 | ctx.GetAttribute(Constants.PlayerAttributeKey).SetIfAbsent(player); |
301 | 304 | player.ChannelHandlerContext = ctx; |
302 | 305 | _world.Add(player); |
303 | | - |
304 | | - var initMessage = new IdAssignmentMessage { IsMembers = (byte)1, NewId = 1 }; |
305 | | - _ = player.SendAsync(initMessage); |
306 | | - player.UpdateAppearance(); |
| 306 | + _ = _playerInitializer.InitializeAsync(player); |
307 | 307 | } |
308 | 308 | } |
309 | 309 | } |
|
0 commit comments