[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
+18
View File
@@ -276,6 +276,7 @@ GameObject:
- component: {fileID: 7313243575525116621}
- component: {fileID: 8390786300108739894}
- component: {fileID: 1091584581727823407}
- component: {fileID: 6241952381746257391}
m_Layer: 5
m_Name: ButtonMine
m_TagString: Untagged
@@ -385,3 +386,20 @@ MonoBehaviour:
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!114 &6241952381746257391
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6406400753494049822}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2904d462d22809c499afe1842f6e6239, type: 3}
m_Name: ""
m_EditorClassIdentifier: Assembly-CSharp::Minesweeper.Presentation.Views.CellView
button: {fileID: 1091584581727823407}
backgroundImage: {fileID: 8390786300108739894}
contentRoot: {fileID: 855905148978497855}
contentImage: {fileID: 2245737607582627579}
label: {fileID: 8958233407636047794}
-4
View File
@@ -636,10 +636,6 @@ MonoBehaviour:
<ResultPanelPrefab>k__BackingField: {fileID: 6869455415096409219, guid: 73d5a09dc8885e64a8c20a68ea82c5dc, type: 3}
contentRoot: {fileID: 1373940536}
topPanelView: {fileID: 1101876296}
mainMenuView: {fileID: 5456992800552396061, guid: 66407cd7142d6a945b37ca8dc5e7c6b7, type: 3}
boardView: {fileID: -4096144217532421454, guid: 91c5885a4fbe47540abf4bfd814a32d0, type: 3}
pauseView: {fileID: 7010459690024596299, guid: ec358f6fec19e3b469f516bd1ade70cd, type: 3}
resultView: {fileID: -2277025653673582644, guid: 73d5a09dc8885e64a8c20a68ea82c5dc, type: 3}
--- !u!4 &1287266282
Transform:
m_ObjectHideFlags: 0
@@ -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;
}
}
}