-
Notifications
You must be signed in to change notification settings - Fork 16
/
PacketHandlerGameComponent.cs
48 lines (42 loc) · 1.87 KB
/
PacketHandlerGameComponent.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using AutomaticTypeMapper;
using EndlessClient.Controllers;
using EndlessClient.GameExecution;
using EOLib.Net.Communication;
using EOLib.Net.Handlers;
using Microsoft.Xna.Framework;
namespace EndlessClient.Network
{
[MappedType(BaseType = typeof(IGameComponent), IsSingleton = true)]
public class PacketHandlerGameComponent : GameComponent
{
private readonly IOutOfBandPacketHandler _packetHandler;
private readonly INetworkClientProvider _networkClientProvider;
private readonly IGameStateProvider _gameStateProvider;
private readonly IMainButtonController _mainButtonController;
public PacketHandlerGameComponent(IEndlessGame game,
IOutOfBandPacketHandler packetHandler,
INetworkClientProvider networkClientProvider,
IGameStateProvider gameStateProvider,
IMainButtonController mainButtonController)
: base((Game) game)
{
_packetHandler = packetHandler;
_networkClientProvider = networkClientProvider;
_gameStateProvider = gameStateProvider;
_mainButtonController = mainButtonController;
UpdateOrder = int.MinValue;
}
public override void Update(GameTime gameTime)
{
if (_networkClientProvider.NetworkClient != null &&
_networkClientProvider.NetworkClient.Started &&
!_networkClientProvider.NetworkClient.Connected)
{
var isInGame = _gameStateProvider.CurrentState == GameStates.PlayingTheGame;
_mainButtonController.GoToInitialStateAndDisconnect(showLostConnection: true);
}
_packetHandler.PollForPacketsAndHandle();
base.Update(gameTime);
}
}
}