This commit is contained in:
CortexCore
2023-11-15 23:54:54 +08:00
parent ee3ecec6cb
commit 3c837a4a33
356 changed files with 73756 additions and 26493 deletions

View File

@@ -19,6 +19,10 @@ namespace BITFALL.Game{
}
public sealed class GameService : StateBasedMonoBehaviour<IGameState>,IGameService
{
[Header(Constant.Header.Settings)]
[SerializeReference,SubclassSelector] private IReference expectedMap;
[Header(Constant.Header.Providers)]
[SerializeReference,SubclassSelector] private INetClient netClient;
[SerializeReference,SubclassSelector] private INetProvider netProvider;
[SerializeReference,SubclassSelector] private ISceneService sceneService;
@@ -29,6 +33,8 @@ namespace BITFALL.Game{
[SerializeField] private Optional<string> allowLoadOfflineMap;
public static IGameService Singleton { get; set; }
private readonly Optional<string> _currentMap = new();
private void Awake()
{
Singleton = this;
@@ -51,6 +57,13 @@ namespace BITFALL.Game{
private void ChangeMap(GameChangeMapCommand obj)
{
sceneService.LoadSceneAsync(obj.MapName,default,LoadSceneMode.Single).Forget();
_currentMap.SetValueThenAllow(obj.MapName);
}
public string ExpectMap
{
get => expectedMap.Value;
set => expectedMap = new Reference(value);
}
public void Play()
@@ -61,14 +74,24 @@ namespace BITFALL.Game{
}
else
{
netProvider.ServerCommand(new GameRequestMapCommand(){MapName = "Map1"});
if (netClient.IsConnected)
{
netProvider.ServerCommand(new GameRequestMapCommand(){MapName = "Map1"});
}
else
{
ChangeMap(new GameChangeMapCommand(){MapName =expectedMap.Value});
}
}
}
public void Stop()
{
//if (allowLoadOfflineMap.Allow)
if (allowLoadOfflineMap.Allow)
{
sceneService.UnloadSceneAsync(allowLoadOfflineMap.Value,default).Forget();
}else if (_currentMap.Allow)
{
sceneService.UnloadSceneAsync(_currentMap.Value,default).Forget();
}
}
}