@@ -72,51 +72,29 @@ void OnNetworkSpawn()
72
72
return ;
73
73
}
74
74
75
- NetworkManager . Singleton . SceneManager . OnLoadComplete += OnServerLoadComplete ;
76
- NetworkManager . Singleton . SceneManager . OnUnloadComplete += OnServerUnloadComplete ;
77
- }
78
-
79
- void OnNetworkDespawn ( )
80
- {
81
- NetworkManager . Singleton . SceneManager . OnLoadComplete -= OnServerLoadComplete ;
82
- NetworkManager . Singleton . SceneManager . OnUnloadComplete -= OnServerUnloadComplete ;
83
- }
84
-
85
- void OnServerLoadComplete ( ulong clientId , string sceneName , LoadSceneMode loadSceneMode )
86
- {
87
- if ( clientId != NetworkManager . ServerClientId )
88
- {
89
- return ;
90
- }
91
-
92
75
// reset win state
93
76
SetWinState ( WinState . Invalid ) ;
94
77
95
- NetworkManager . Singleton . OnClientDisconnectCallback += OnClientDisconnect ;
96
- NetworkManager . Singleton . SceneManager . OnLoadEventCompleted += OnLoadEventCompleted ;
97
- NetworkManager . Singleton . SceneManager . OnSynchronizeComplete += OnSynchronizeComplete ;
78
+ NetworkManager . Singleton . OnClientDisconnectCallback += OnClientDisconnectCheckGameOver ;
79
+ NetworkManager . Singleton . SceneManager . OnLoadEventCompleted += OnLoadEventCompletedSpawnAllPlayers ;
80
+ NetworkManager . Singleton . SceneManager . OnSynchronizeComplete += OnSynchronizeCompleteForLateJoin ;
98
81
99
82
SessionManager < SessionPlayerData > . Instance . OnSessionStarted ( ) ;
100
83
m_Subscription = m_LifeStateChangedEventMessageSubscriber . Subscribe ( OnLifeStateChangedEventMessage ) ;
101
84
}
102
85
103
- void OnServerUnloadComplete ( ulong clientId , string sceneName )
86
+ void OnNetworkDespawn ( )
104
87
{
105
- if ( clientId != NetworkManager . ServerClientId )
106
- {
107
- return ;
108
- }
88
+ NetworkManager . Singleton . OnClientDisconnectCallback -= OnClientDisconnectCheckGameOver ;
89
+ NetworkManager . Singleton . SceneManager . OnLoadEventCompleted -= OnLoadEventCompletedSpawnAllPlayers ;
90
+ NetworkManager . Singleton . SceneManager . OnSynchronizeComplete -= OnSynchronizeCompleteForLateJoin ;
109
91
110
- NetworkManager . Singleton . OnClientDisconnectCallback -= OnClientDisconnect ;
111
- NetworkManager . Singleton . SceneManager . OnLoadEventCompleted -= OnLoadEventCompleted ;
112
- NetworkManager . Singleton . SceneManager . OnSynchronizeComplete -= OnSynchronizeComplete ;
92
+ SessionManager < SessionPlayerData > . Instance . OnSessionEnded ( ) ;
113
93
m_Subscription ? . Dispose ( ) ;
114
94
}
115
95
116
96
protected override void OnDestroy ( )
117
97
{
118
- m_Subscription ? . Dispose ( ) ;
119
-
120
98
if ( m_NetcodeHooks )
121
99
{
122
100
m_NetcodeHooks . OnNetworkSpawnHook -= OnNetworkSpawn ;
@@ -126,7 +104,7 @@ protected override void OnDestroy()
126
104
base . OnDestroy ( ) ;
127
105
}
128
106
129
- void OnSynchronizeComplete ( ulong clientId )
107
+ void OnSynchronizeCompleteForLateJoin ( ulong clientId )
130
108
{
131
109
if ( InitialSpawnDone && ! PlayerServerCharacter . GetPlayerServerCharacter ( clientId ) )
132
110
{
@@ -138,7 +116,7 @@ void OnSynchronizeComplete(ulong clientId)
138
116
}
139
117
}
140
118
141
- void OnLoadEventCompleted ( string sceneName , LoadSceneMode loadSceneMode , List < ulong > clientsCompleted , List < ulong > clientsTimedOut )
119
+ void OnLoadEventCompletedSpawnAllPlayers ( string sceneName , LoadSceneMode loadSceneMode , List < ulong > clientsCompleted , List < ulong > clientsTimedOut )
142
120
{
143
121
if ( ! InitialSpawnDone && loadSceneMode == LoadSceneMode . Single )
144
122
{
@@ -150,8 +128,9 @@ void OnLoadEventCompleted(string sceneName, LoadSceneMode loadSceneMode, List<ul
150
128
}
151
129
}
152
130
153
- void OnClientDisconnect ( ulong clientId )
131
+ void OnClientDisconnectCheckGameOver ( ulong clientId )
154
132
{
133
+ //TODO exception in on client disconnect causes a bunch of bugs in NGO?
155
134
if ( clientId != NetworkManager . Singleton . LocalClientId )
156
135
{
157
136
// If a client disconnects, check for game over in case all other players are already down
0 commit comments