Skip to content

Commit 6b3ac0f

Browse files
committed
reorganized DI so that only states get injected in
(cherry picked from commit 0e07a94)
1 parent 0461c0b commit 6b3ac0f

File tree

7 files changed

+43
-48
lines changed

7 files changed

+43
-48
lines changed

Assets/Scripts/Gameplay/ConnectionManagement/ConnectionManager.cs

Lines changed: 12 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,8 @@
22
using System.Collections.Generic;
33
using System.Threading.Tasks;
44
using Unity.Collections;
5-
using Unity.Multiplayer.Samples.BossRoom.ApplicationLifecycle.Messages;
65
using Unity.Multiplayer.Samples.BossRoom.Client;
7-
using Unity.Multiplayer.Samples.BossRoom.Shared;
86
using Unity.Multiplayer.Samples.BossRoom.Shared.Infrastructure;
9-
using Unity.Multiplayer.Samples.BossRoom.Shared.Net.UnityServices.Lobbies;
107
using Unity.Netcode;
118
using UnityEngine;
129

@@ -39,31 +36,9 @@ public class ConnectionManager : MonoBehaviour
3936
NetworkObject m_GameState;
4037
public NetworkObject GameState => m_GameState;
4138

42-
ProfileManager m_ProfileManager;
43-
LobbyServiceFacade m_LobbyServiceFacade;
44-
LocalLobby m_LocalLobby;
45-
IPublisher<ConnectionEventMessage> m_ConnectionEventPublisher;
46-
IPublisher<QuitGameSessionMessage> m_QuitGameSessionPublisher;
47-
IPublisher<ConnectStatus> m_ConnectStatusPublisher;
48-
IPublisher<ReconnectMessage> m_ReconnectMessagePublisher;
49-
5039
DisconnectReason m_DisconnectReason = new DisconnectReason();
5140
public DisconnectReason DisconnectReason => m_DisconnectReason;
5241

53-
[Inject]
54-
void InjectDependencies(ProfileManager profileManager, LobbyServiceFacade lobbyServiceFacade, LocalLobby localLobby,
55-
IPublisher<ConnectionEventMessage> connectionEventPublisher, IPublisher<QuitGameSessionMessage> quitGameSessionPublisher,
56-
IPublisher<ConnectStatus> connectStatusPublisher, IPublisher<ReconnectMessage> reconnectMessagePublisher)
57-
{
58-
m_ProfileManager = profileManager;
59-
m_LobbyServiceFacade = lobbyServiceFacade;
60-
m_LocalLobby = localLobby;
61-
m_ConnectionEventPublisher = connectionEventPublisher;
62-
m_QuitGameSessionPublisher = quitGameSessionPublisher;
63-
m_ConnectStatusPublisher = connectStatusPublisher;
64-
m_ReconnectMessagePublisher = reconnectMessagePublisher;
65-
}
66-
6742
void Awake()
6843
{
6944
DontDestroyOnLoad(gameObject);
@@ -73,14 +48,20 @@ void Start()
7348
{
7449
m_Logics = new Dictionary<ConnectionStateType, ConnectionState>()
7550
{
76-
[ConnectionStateType.Offline] = new OfflineConnectionState(this, m_LobbyServiceFacade, m_LocalLobby, m_ProfileManager),
77-
[ConnectionStateType.Connecting] = new ConnectingConnectionState(this, m_QuitGameSessionPublisher, m_ConnectStatusPublisher),
78-
[ConnectionStateType.Connected] = new ConnectedConnectionState(this, m_QuitGameSessionPublisher, m_ConnectStatusPublisher),
79-
[ConnectionStateType.Reconnecting] = new ReconnectingConnectionState(this, m_LobbyServiceFacade, m_LocalLobby, m_ReconnectMessagePublisher, m_ProfileManager),
80-
[ConnectionStateType.Hosting] = new HostingConnectionState(this, m_LobbyServiceFacade, m_ConnectionEventPublisher)
51+
[ConnectionStateType.Offline] = new OfflineConnectionState(this),
52+
[ConnectionStateType.Connecting] = new ConnectingConnectionState(this),
53+
[ConnectionStateType.Connected] = new ConnectedConnectionState(this),
54+
[ConnectionStateType.Reconnecting] = new ReconnectingConnectionState(this),
55+
[ConnectionStateType.Hosting] = new HostingConnectionState(this)
8156
};
8257
m_CurrentState = ConnectionStateType.Offline;
8358

59+
var scope = DIScope.RootScope;
60+
foreach (var connectionState in m_Logics.Values)
61+
{
62+
scope.InjectIn(connectionState);
63+
}
64+
8465
NetworkManager.OnClientConnectedCallback += OnClientConnectedCallback;
8566
NetworkManager.OnClientDisconnectCallback += OnClientDisconnectCallback;
8667
NetworkManager.ConnectionApprovalCallback += ApprovalCheck;
@@ -95,7 +76,7 @@ void OnDestroy()
9576

9677
public void ChangeState(ConnectionStateType newState)
9778
{
98-
Debug.Log(newState);
79+
Debug.Log($"Changed connection sate from {m_CurrentState} to {newState}.");
9980
m_Logics[m_CurrentState].Exit();
10081
m_CurrentState = newState;
10182
m_Logics[m_CurrentState].Enter();

Assets/Scripts/Gameplay/ConnectionManagement/ConnectionState/ConnectedConnectionState.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,12 @@ public class ConnectedConnectionState : ConnectionState
1010
IPublisher<QuitGameSessionMessage> m_QuitGameSessionPublisher;
1111
IPublisher<ConnectStatus> m_ConnectStatusPublisher;
1212

13-
public ConnectedConnectionState(ConnectionManager connectionManager, IPublisher<QuitGameSessionMessage> quitGameSessionPublisher,
13+
public ConnectedConnectionState(ConnectionManager connectionManager)
14+
: base(connectionManager) { }
15+
16+
[Inject]
17+
void InjectDependencies(IPublisher<QuitGameSessionMessage> quitGameSessionPublisher,
1418
IPublisher<ConnectStatus> connectStatusPublisher)
15-
: base(connectionManager)
1619
{
1720
m_QuitGameSessionPublisher = quitGameSessionPublisher;
1821
m_ConnectStatusPublisher = connectStatusPublisher;

Assets/Scripts/Gameplay/ConnectionManagement/ConnectionState/ConnectingConnectionState.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@ public class ConnectingConnectionState : ConnectionState
1010
IPublisher<QuitGameSessionMessage> m_QuitGameSessionPublisher;
1111
IPublisher<ConnectStatus> m_ConnectStatusPublisher;
1212

13-
public ConnectingConnectionState(ConnectionManager connectionManager, IPublisher<QuitGameSessionMessage> quitGameSessionPublisher,
14-
IPublisher<ConnectStatus> connectStatusPublisher)
15-
: base(connectionManager)
13+
public ConnectingConnectionState(ConnectionManager connectionManager)
14+
: base(connectionManager) { }
15+
16+
[Inject]
17+
void InjectDependencies(IPublisher<QuitGameSessionMessage> quitGameSessionPublisher, IPublisher<ConnectStatus> connectStatusPublisher)
1618
{
1719
m_QuitGameSessionPublisher = quitGameSessionPublisher;
1820
m_ConnectStatusPublisher = connectStatusPublisher;

Assets/Scripts/Gameplay/ConnectionManagement/ConnectionState/ConnectionState.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public abstract class ConnectionState
88
{
99
protected ConnectionManager m_ConnectionManager;
1010

11-
public ConnectionState(ConnectionManager connectionManager)
11+
protected ConnectionState(ConnectionManager connectionManager)
1212
{
1313
m_ConnectionManager = connectionManager;
1414
}

Assets/Scripts/Gameplay/ConnectionManagement/ConnectionState/HostingConnectionState.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,12 @@ public class HostingConnectionState : ConnectionState
1717
// used in ApprovalCheck. This is intended as a bit of light protection against DOS attacks that rely on sending silly big buffers of garbage.
1818
const int k_MaxConnectPayload = 1024;
1919

20-
public HostingConnectionState(ConnectionManager connectionManager, LobbyServiceFacade lobbyServiceFacade, IPublisher<ConnectionEventMessage> connectionEventPublisher)
21-
: base(connectionManager)
20+
public HostingConnectionState(ConnectionManager connectionManager)
21+
: base(connectionManager) { }
22+
23+
[Inject]
24+
void InjectDependencies(LobbyServiceFacade lobbyServiceFacade,
25+
IPublisher<ConnectionEventMessage> connectionEventPublisher)
2226
{
2327
m_LobbyServiceFacade = lobbyServiceFacade;
2428
m_ConnectionEventPublisher = connectionEventPublisher;

Assets/Scripts/Gameplay/ConnectionManagement/ConnectionState/OfflineConnectionState.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Threading.Tasks;
33
using Unity.Multiplayer.Samples.BossRoom.Client;
44
using Unity.Multiplayer.Samples.BossRoom.Shared;
5+
using Unity.Multiplayer.Samples.BossRoom.Shared.Infrastructure;
56
using Unity.Multiplayer.Samples.BossRoom.Shared.Net.UnityServices.Lobbies;
67
using Unity.Netcode;
78
using Unity.Netcode.Transports.UTP;
@@ -22,13 +23,15 @@ public class OfflineConnectionState : ConnectionState
2223
/// </summary>
2324
private const int k_MaxUnityRelayConnections = 8;
2425

25-
public OfflineConnectionState(ConnectionManager connectionManager, LobbyServiceFacade lobbyServiceFacade,
26-
LocalLobby localLobby, ProfileManager profileManager)
27-
: base(connectionManager)
26+
public OfflineConnectionState(ConnectionManager connectionManager)
27+
: base(connectionManager) { }
28+
29+
[Inject]
30+
protected void InjectDependencies(ProfileManager profileManager, LobbyServiceFacade lobbyServiceFacade, LocalLobby localLobby)
2831
{
32+
m_ProfileManager = profileManager;
2933
m_LobbyServiceFacade = lobbyServiceFacade;
3034
m_LocalLobby = localLobby;
31-
m_ProfileManager = profileManager;
3235
}
3336

3437
public override void Enter() { }

Assets/Scripts/Gameplay/ConnectionManagement/ConnectionState/ReconnectingConnectionState.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
using System;
22
using System.Collections;
33
using System.Threading.Tasks;
4-
using Unity.Multiplayer.Samples.BossRoom.ApplicationLifecycle.Messages;
54
using Unity.Multiplayer.Samples.BossRoom.Shared;
65
using Unity.Multiplayer.Samples.BossRoom.Shared.Infrastructure;
76
using Unity.Multiplayer.Samples.BossRoom.Shared.Net.UnityServices.Lobbies;
87
using Unity.Multiplayer.Samples.Utilities;
98
using Unity.Netcode;
10-
using Unity.Netcode.Transports.UTP;
119
using UnityEngine;
1210

1311
namespace Unity.Multiplayer.Samples.BossRoom
@@ -22,11 +20,14 @@ public class ReconnectingConnectionState : OfflineConnectionState
2220
string m_LobbyCode = "";
2321
int m_NbAttempts;
2422

25-
public ReconnectingConnectionState(ConnectionManager connectionManager, LobbyServiceFacade lobbyServiceFacade,
26-
LocalLobby localLobby, IPublisher<ReconnectMessage> reconnectMessagePublisher, ProfileManager profileManager)
27-
: base(connectionManager, lobbyServiceFacade, localLobby, profileManager)
23+
public ReconnectingConnectionState(ConnectionManager connectionManager)
24+
: base(connectionManager) { }
25+
26+
[Inject]
27+
void InjectDependencies(ProfileManager profileManager, LobbyServiceFacade lobbyServiceFacade, LocalLobby localLobby, IPublisher<ReconnectMessage> reconnectMessagePublisher)
2828
{
2929
m_ReconnectMessagePublisher = reconnectMessagePublisher;
30+
base.InjectDependencies(profileManager, lobbyServiceFacade, localLobby);
3031
}
3132

3233
public override void Enter()
@@ -75,6 +76,7 @@ public override void OnClientDisconnect(ulong clientId)
7576

7677
public override void OnUserRequestedShutdown()
7778
{
79+
m_ConnectionManager.NetworkManager.Shutdown();
7880
m_ConnectionManager.ChangeState(ConnectionStateType.Offline);
7981
}
8082

0 commit comments

Comments
 (0)