online game working

This commit is contained in:
2025-10-05 19:54:30 +02:00
parent 73595994d1
commit 807e8fc5f3
4 changed files with 89 additions and 6 deletions

View File

@@ -79,6 +79,7 @@ namespace MegaKoop.UI
// Steam service
private SteamLobbyService steam;
private LobbyGameSceneCoordinator lobbyGameCoordinator;
private SteamCoopNetworkManager coopNetworkManager;
// Local state cache
private bool IsInLobby => steam != null && steam.IsInLobby;
@@ -386,12 +387,33 @@ namespace MegaKoop.UI
EnsureComponent<SteamLobbyManager>();
EnsureComponent<SteamP2PTransport>();
var coopManager = EnsureComponent<SteamCoopNetworkManager>();
coopManager.SynchronizeWithLobby(steam);
coopNetworkManager = EnsureComponent<SteamCoopNetworkManager>();
coopNetworkManager.SynchronizeWithLobby(steam);
lobbyGameCoordinator = servicesRoot.GetComponent<LobbyGameSceneCoordinator>() ?? servicesRoot.AddComponent<LobbyGameSceneCoordinator>();
DontDestroyOnLoad(servicesRoot);
}
SyncCoopNetwork();
}
private void SyncCoopNetwork()
{
if (steam == null)
{
return;
}
if (coopNetworkManager == null)
{
#if UNITY_2023_1_OR_NEWER
coopNetworkManager = Object.FindFirstObjectByType<SteamCoopNetworkManager>(FindObjectsInactive.Include);
#else
coopNetworkManager = Object.FindObjectOfType<SteamCoopNetworkManager>();
#endif
}
coopNetworkManager?.SynchronizeWithLobby(steam);
}
private void RegisterSteamEvents()
@@ -404,6 +426,11 @@ namespace MegaKoop.UI
steam.OnLobbyDataUpdated += OnLobbyDataUpdated;
steam.OnJoinFailed += OnJoinFailed;
steam.OnAvatarUpdated += OnAvatarUpdated;
steam.OnLobbyCreated += HandleLobbyCreatedSync;
steam.OnLobbyEntered += HandleLobbyEnteredSync;
steam.OnLobbyLeft += HandleLobbyLeftSync;
steam.OnMembersChanged += HandleMembersChangedSync;
steam.OnLobbyDataUpdated += HandleLobbyDataUpdatedSync;
}
private void UnregisterSteamEvents()
@@ -416,6 +443,11 @@ namespace MegaKoop.UI
steam.OnLobbyDataUpdated -= OnLobbyDataUpdated;
steam.OnJoinFailed -= OnJoinFailed;
steam.OnAvatarUpdated -= OnAvatarUpdated;
steam.OnLobbyCreated -= HandleLobbyCreatedSync;
steam.OnLobbyEntered -= HandleLobbyEnteredSync;
steam.OnLobbyLeft -= HandleLobbyLeftSync;
steam.OnMembersChanged -= HandleMembersChangedSync;
steam.OnLobbyDataUpdated -= HandleLobbyDataUpdatedSync;
}
private void OnLobbyCreated()
@@ -451,6 +483,31 @@ namespace MegaKoop.UI
UpdateUIFromSteam();
}
private void HandleLobbyCreatedSync()
{
SyncCoopNetwork();
}
private void HandleLobbyEnteredSync()
{
SyncCoopNetwork();
}
private void HandleLobbyLeftSync()
{
SyncCoopNetwork();
}
private void HandleMembersChangedSync()
{
SyncCoopNetwork();
}
private void HandleLobbyDataUpdatedSync()
{
SyncCoopNetwork();
}
private void OnMembersChanged() => UpdateUIFromSteam();
private void OnLobbyDataUpdated() => UpdateUIFromSteam();
private void OnJoinFailed(string reason) { Debug.LogWarning($"[Lobby] Join failed: {reason}"); UpdateUIFromSteam(); }