[Fix] Fix Smile Pause

This commit is contained in:
2026-06-07 00:41:35 +07:00
parent 6c9cdaf67d
commit e487795e6f
6 changed files with 42 additions and 40 deletions
@@ -197,7 +197,8 @@ namespace Minesweeper.Commands
public void Handle(PauseCommand command)
{
if (gameStateService.Current == GameState.Playing)
var state = gameStateService.Current;
if (state == GameState.Preparing || state == GameState.Playing)
{
pauseService.Pause();
}
@@ -20,10 +20,6 @@ namespace Minesweeper.Infrastructure
[SerializeField] private MinesweeperScreenCatalog screenCatalog = new MinesweeperScreenCatalog();
[SerializeField] private Transform contentRoot;
[SerializeField] private TopPanelView topPanelView;
[SerializeField] private MainMenuView mainMenuView;
[SerializeField] private BoardView boardView;
[SerializeField] private PauseView pauseView;
[SerializeField] private ResultView resultView;
protected override void Configure(IContainerBuilder builder)
{
@@ -42,25 +38,6 @@ namespace Minesweeper.Infrastructure
builder.Register<CellViewFactory>(Lifetime.Singleton).As<ICellViewFactory>();
var screenRefs = SpawnScreens();
if (screenRefs.MainMenuView != null)
{
mainMenuView = screenRefs.MainMenuView;
}
if (screenRefs.BoardView != null)
{
boardView = screenRefs.BoardView;
}
if (screenRefs.PauseView != null)
{
pauseView = screenRefs.PauseView;
}
if (screenRefs.ResultView != null)
{
resultView = screenRefs.ResultView;
}
if (topPanelView != null)
{
@@ -72,37 +49,37 @@ namespace Minesweeper.Infrastructure
builder.Register<NullTopPanelView>(Lifetime.Singleton).As<ITopPanelView>();
}
if (mainMenuView != null)
if (screenRefs.MainMenuView != null)
{
builder.RegisterComponent(mainMenuView).As<IMainMenuView>();
builder.RegisterComponent(screenRefs.MainMenuView).As<IMainMenuView>();
}
else
{
builder.Register<NullMainMenuView>(Lifetime.Singleton).As<IMainMenuView>();
}
if (boardView != null)
if (screenRefs.BoardView != null)
{
boardView.BindConfig(resolvedUiConfig);
builder.RegisterComponent(boardView).As<IBoardView>();
screenRefs.BoardView.BindConfig(resolvedUiConfig);
builder.RegisterComponent(screenRefs.BoardView).As<IBoardView>();
}
else
{
builder.Register<NullBoardView>(Lifetime.Singleton).As<IBoardView>();
}
if (pauseView != null)
if (screenRefs.PauseView != null)
{
builder.RegisterComponent(pauseView).As<IPauseView>();
builder.RegisterComponent(screenRefs.PauseView).As<IPauseView>();
}
else
{
builder.Register<NullPauseView>(Lifetime.Singleton).As<IPauseView>();
}
if (resultView != null)
if (screenRefs.ResultView != null)
{
builder.RegisterComponent(resultView).As<IResultView>();
builder.RegisterComponent(screenRefs.ResultView).As<IResultView>();
}
else
{
@@ -130,7 +130,7 @@ namespace Minesweeper.Presentation.Presenters
private void OnPauseChanged(bool isPaused)
{
if (isPaused && gameStateService.Current == GameState.Playing)
if (isPaused && CanPause(gameStateService.Current))
{
pauseView.Show();
}
@@ -189,5 +189,10 @@ namespace Minesweeper.Presentation.Presenters
{
commandDispatcher.Dispatch(new PauseCommand());
}
private static bool CanPause(GameState state)
{
return state == GameState.Preparing || state == GameState.Playing;
}
}
}
@@ -75,11 +75,11 @@ namespace Minesweeper.Presentation.Presenters
{
commandDispatcher.Dispatch(new StartGameCommand());
}
else if (state == GameState.Playing && !pauseService.IsPaused)
else if (CanPause(state) && !pauseService.IsPaused)
{
commandDispatcher.Dispatch(new PauseCommand());
}
else if (state == GameState.Playing && pauseService.IsPaused)
else if (CanPause(state) && pauseService.IsPaused)
{
commandDispatcher.Dispatch(new ResumeCommand());
}
@@ -126,5 +126,10 @@ namespace Minesweeper.Presentation.Presenters
return SmileFaceState.Smile;
}
private static bool CanPause(GameState state)
{
return state == GameState.Preparing || state == GameState.Playing;
}
}
}