Skip to content

Commit bf2bdcf

Browse files
committed
update LobbyPresenter (CreateRoom)
1 parent 9532bf0 commit bf2bdcf

11 files changed

Lines changed: 250 additions & 79 deletions

File tree

Assets/AddressableAssetsData/AddressableAssetSettings.asset

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ MonoBehaviour:
1515
m_DefaultGroup: cb9fdeb479027b04a86f0ce41bde1562
1616
m_currentHash:
1717
serializedVersion: 2
18-
Hash: 00000000000000000000000000000000
18+
Hash: 7efe3f1891c612956ee32ac8240399e3
1919
m_OptimizeCatalogSize: 0
2020
m_BuildRemoteCatalog: 0
2121
m_CatalogRequestsTimeout: 0

Assets/AddressableAssetsData/AssetGroups/Scenes.asset

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,6 @@ MonoBehaviour:
1515
m_GroupName: Scenes
1616
m_GUID: cb9fdeb479027b04a86f0ce41bde1562
1717
m_SerializeEntries:
18-
- m_GUID: 2297913b469c09745acead7cea4daf28
19-
m_Address: Boot
20-
m_ReadOnly: 0
21-
m_SerializedLabels: []
22-
FlaggedDuringContentUpdateRestriction: 0
2318
- m_GUID: 577d8755a2f544647ade77b926c889f3
2419
m_Address: MainMenu
2520
m_ReadOnly: 0

Assets/Scenes/Lobby.unity

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -309,8 +309,8 @@ MonoBehaviour:
309309
m_TargetGraphic: {fileID: 532933919}
310310
m_HandleRect: {fileID: 532933918}
311311
m_Direction: 2
312-
m_Value: 1
313-
m_Size: 0.81766665
312+
m_Value: 0
313+
m_Size: 1
314314
m_NumberOfSteps: 0
315315
m_OnValueChanged:
316316
m_PersistentCalls:
@@ -1376,7 +1376,7 @@ MonoBehaviour:
13761376
m_faceColor:
13771377
serializedVersion: 2
13781378
rgba: 4294967295
1379-
m_fontSize: 18.35
1379+
m_fontSize: 36.05
13801380
m_fontSizeBase: 24
13811381
m_fontWeight: 400
13821382
m_enableAutoSizing: 1

Assets/Scenes/Room.unity

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -999,7 +999,7 @@ MonoBehaviour:
999999
m_PrefabInstance: {fileID: 0}
10001000
m_PrefabAsset: {fileID: 0}
10011001
m_GameObject: {fileID: 1387671572}
1002-
m_Enabled: 1
1002+
m_Enabled: 0
10031003
m_EditorHideFlags: 0
10041004
m_Script: {fileID: 11500000, guid: b84226317d6e4db9a8228affdc62aaff, type: 3}
10051005
m_Name:
@@ -1018,7 +1018,7 @@ MonoBehaviour:
10181018
m_PrefabInstance: {fileID: 0}
10191019
m_PrefabAsset: {fileID: 0}
10201020
m_GameObject: {fileID: 1387671572}
1021-
m_Enabled: 1
1021+
m_Enabled: 0
10221022
m_EditorHideFlags: 0
10231023
m_Script: {fileID: 11500000, guid: 9565f16881fb48409650da3a76fd6471, type: 3}
10241024
m_Name:
@@ -1030,7 +1030,7 @@ MonoBehaviour:
10301030
m_PrefabInstance: {fileID: 0}
10311031
m_PrefabAsset: {fileID: 0}
10321032
m_GameObject: {fileID: 1387671572}
1033-
m_Enabled: 1
1033+
m_Enabled: 0
10341034
m_EditorHideFlags: 0
10351035
m_Script: {fileID: 11500000, guid: 86aa42d22b504d9eb0fa61295dd89c15, type: 3}
10361036
m_Name:
@@ -1407,7 +1407,7 @@ MonoBehaviour:
14071407
m_PrefabInstance: {fileID: 0}
14081408
m_PrefabAsset: {fileID: 0}
14091409
m_GameObject: {fileID: 1941859875}
1410-
m_Enabled: 1
1410+
m_Enabled: 0
14111411
m_EditorHideFlags: 0
14121412
m_Script: {fileID: 11500000, guid: 14dde6c42819493e9759c28840e64b96, type: 3}
14131413
m_Name:

Assets/Scripts/Infrastructure/GameStateMachines/States/Implementations/RoomState.cs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,32 @@
22
using Infrastructure.GameStateMachines.States.Interfaces;
33
using UI.LobbyPanel.Presenters;
44
using UI.RoomPanel.Presenters;
5+
using UnityEngine;
56
using VContainer;
67

78
namespace Infrastructure.GameStateMachines.States.Implementations
89
{
910
public sealed class RoomState : IState
1011
{
11-
private readonly ISceneScopeResolverProxy _scopeResolverProxy;
12-
13-
private IRoomPresenter _roomPresenter;
14-
15-
public RoomState(ISceneScopeResolverProxy scopeResolverProxy)
16-
{
17-
_scopeResolverProxy = scopeResolverProxy;
18-
}
12+
// private readonly ISceneScopeResolverProxy _scopeResolverProxy;
13+
//
14+
// private IRoomPresenter _roomPresenter;
15+
//
16+
// public RoomState(ISceneScopeResolverProxy scopeResolverProxy)
17+
// {
18+
// _scopeResolverProxy = scopeResolverProxy;
19+
// }
1920

2021
public void Enter()
2122
{
22-
_roomPresenter = _scopeResolverProxy.Resolver.Resolve<IRoomPresenter>();
23-
_roomPresenter.Enable();
23+
// _roomPresenter = _scopeResolverProxy.Resolver.Resolve<IRoomPresenter>();
24+
// _roomPresenter.Enable();
25+
Debug.Log("Entered RoomState");
2426
}
2527

2628
public void Exit()
2729
{
28-
_roomPresenter.Disable();
30+
// _roomPresenter.Disable();
2931
}
3032
}
3133
}

Assets/Scripts/Network/LobbyServices/ILobbyService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace Network.LobbyServices
77
{
88
public interface ILobbyService
99
{
10-
Task CreateAndHostAsync(NetworkSceneInfo sceneBuildIndex = default);
10+
UniTask CreateAndHostAsync(NetworkSceneInfo sceneBuildIndex = default);
1111
Task JoinByNameAsync(string sessionName);
1212
Task JoinRandomAsync();
1313
Task LeaveAsync();

Assets/Scripts/Network/LobbyServices/LobbyService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public LobbyService(INetworkRunnerProvider networkRunnerProvider, INetworkRunner
2121
_networkRunnerFactory = networkRunnerFactory;
2222
}
2323

24-
public async Task CreateAndHostAsync(NetworkSceneInfo sceneBuildIndex = default)
24+
public async UniTask CreateAndHostAsync(NetworkSceneInfo sceneBuildIndex = default)
2525
{
2626
NetworkRunner runner = _networkRunnerProvider.Runner;
2727

@@ -46,7 +46,7 @@ public async Task CreateAndHostAsync(NetworkSceneInfo sceneBuildIndex = default)
4646
//SessionProperties = props
4747
};
4848

49-
StartGameResult result = await runner.StartGame(args);
49+
StartGameResult result = await runner.StartGame(args).AsUniTask();
5050

5151
if (result.Ok == false)
5252
{

Assets/Scripts/UI/LobbyPanel/Presenters/LobbyPanelPresenter.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,11 @@ public void UpdateSessionData(SessionInfo sessionInfo)
7373

7474
_sessionInfo = sessionInfo;
7575

76-
if (nameChanged) RoomNameChanged?.Invoke(_sessionInfo.Name);
77-
if (countChanged) PlayerCountChanged?.Invoke(_sessionInfo.PlayerCount);
76+
if (nameChanged)
77+
RoomNameChanged?.Invoke(_sessionInfo.Name);
78+
79+
if (countChanged)
80+
PlayerCountChanged?.Invoke(_sessionInfo.PlayerCount);
7881
}
7982
}
8083
}

Assets/Scripts/UI/LobbyPanel/Presenters/LobbyPresenter.cs

Lines changed: 19 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Network.LobbyServices;
99
using Network.NetworkRunnerProvider;
1010
using UI.LobbyPanel.Views;
11+
using Unity.VisualScripting;
1112
using UnityEngine;
1213
using UnityEngine.AddressableAssets;
1314
using UnityEngine.AddressableAssets.ResourceLocators;
@@ -115,68 +116,49 @@ public void Dispose() =>
115116
//
116117
private async void OnLobbyCreated()
117118
{
118-
// 1) Создаём/хостим
119119
try
120120
{
121-
await _lobbyService.CreateAndHostAsync(); // внутри должен успешно стартовать Runner.StartGame(...)
121+
await _lobbyService.CreateAndHostAsync();
122122
}
123-
catch (System.Exception e)
123+
catch (Exception e)
124124
{
125125
Debug.LogError($"Error creating lobby: {e}");
126126
return;
127127
}
128-
129-
// 2) Убеждаемся, что у Runner есть SceneManager
130-
var runner = _networkRunnerProvider.Runner;
131-
if (!runner)
128+
129+
if (_networkRunnerProvider.Runner.IsSceneAuthority == false)
132130
{
133-
Debug.LogError("Runner is null");
131+
Debug.LogWarning("This peer is not scene authority; skip LoadScene");
134132
return;
135133
}
136134

137-
if (runner.SceneManager == null)
138-
runner.gameObject.AddComponent<NetworkSceneManagerDefault>();
135+
const string SceneAddress = "Room";
136+
IList<IResourceLocation> resourceLocations = new List<IResourceLocation>();
139137

140-
if (runner.IsSceneAuthority == false)
138+
try
141139
{
142-
Debug.LogWarning("This peer is not scene authority; skip LoadScene");
143-
return;
140+
resourceLocations = await Addressables.LoadResourceLocationsAsync(SceneAddress, typeof(SceneInstance)).Task.AsUniTask();
144141
}
145-
146-
// 3) Адрес сцены (Addressable Address). НЕ InternalId!
147-
const string sceneAddress = "Room"; // или "Assets/Scenes/Room.unity"
148-
149-
// (Необязательно, но можно проверить, что адрес существует)
150-
AsyncOperationHandle<IList<UnityEngine.ResourceManagement.ResourceLocations.IResourceLocation>> handle =
151-
Addressables.LoadResourceLocationsAsync(sceneAddress, typeof(SceneInstance));
152-
await handle.Task;
153-
154-
if (handle.Status != AsyncOperationStatus.Succeeded || handle.Result.Count == 0)
142+
catch (Exception e)
155143
{
156-
Debug.LogError($"Scene address '{sceneAddress}' not found in Addressables.");
157-
Addressables.Release(handle);
158-
return;
144+
throw new Exception($"Failed to load scene '{SceneAddress}' . Exception: {e}");
159145
}
160146

161-
var loc = handle.Result[0];
162-
Debug.Log($"Found scene: address={loc.PrimaryKey} | internal={loc.InternalId}");
163-
164-
// 4) Собираем SceneRef ИМЕННО из Address (PrimaryKey)
165-
var sceneRef = SceneRef.FromPath(loc.PrimaryKey);
147+
if (resourceLocations.Count == 0)
148+
throw new Exception($"Not find scene '{SceneAddress}'");
166149

167-
Addressables.Release(handle);
150+
SceneRef sceneRef = SceneRef.FromPath(resourceLocations[0].InternalId);
168151

169-
// 5) Грузим через Fusion (Host триггерит, все клиенты подтянутся)
170152
try
171153
{
172-
// В Fusion 2 это Task → ToUniTask норм
173-
await runner.LoadScene(sceneRef, LoadSceneMode.Single).ToUniTask();
174-
_stateMachine.ChangeState<RoomState>();
154+
await _networkRunnerProvider.Runner.LoadScene(sceneRef, LoadSceneMode.Single).ToUniTask();
175155
}
176-
catch (System.Exception e)
156+
catch (Exception e)
177157
{
178158
Debug.LogError($"Error loading scene via Fusion: {e}");
179159
}
160+
161+
_stateMachine.ChangeState<RoomState>();
180162
}
181163
}
182164
}

0 commit comments

Comments
 (0)