[Add] End game, Restart, Final Check
This commit is contained in:
@@ -169,12 +169,18 @@ namespace Minesweeper.Commands
|
||||
|
||||
public void Handle(RestartCommand command)
|
||||
{
|
||||
var shouldNotifyReset = gameStateService.Current == GameState.Preparing;
|
||||
pauseService.Resume();
|
||||
timerService.Reset();
|
||||
boardService.InitializeEmptyBoard();
|
||||
gameStateService.SetState(GameState.Preparing);
|
||||
boardEcsSyncService.SyncBoard(boardService);
|
||||
boardEcsSyncService.SyncGameState(gameStateService.Current, false);
|
||||
|
||||
if (shouldNotifyReset)
|
||||
{
|
||||
gameStateService.NotifyCurrentStateChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -233,6 +239,7 @@ namespace Minesweeper.Commands
|
||||
pauseService.Resume();
|
||||
timerService.Reset();
|
||||
gameStateService.SetState(GameState.FieldSelection);
|
||||
boardEcsSyncService.ClearBoard();
|
||||
boardEcsSyncService.SyncGameState(gameStateService.Current, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,5 +18,10 @@ namespace Minesweeper.Core
|
||||
Current = state;
|
||||
StateChanged?.Invoke(Current);
|
||||
}
|
||||
|
||||
public void NotifyCurrentStateChanged()
|
||||
{
|
||||
StateChanged?.Invoke(Current);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,5 +9,6 @@ namespace Minesweeper.Core
|
||||
GameState Current { get; }
|
||||
|
||||
void SetState(GameState state);
|
||||
void NotifyCurrentStateChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,16 @@ namespace Minesweeper.ECS
|
||||
{
|
||||
public sealed class BoardEcsSyncService : IBoardEcsSyncService
|
||||
{
|
||||
public void ClearBoard()
|
||||
{
|
||||
if (!TryGetEntityManager(out var entityManager))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ClearCells(entityManager);
|
||||
}
|
||||
|
||||
public void SyncBoard(IBoardService boardService)
|
||||
{
|
||||
if (!TryGetEntityManager(out var entityManager))
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace Minesweeper.ECS
|
||||
{
|
||||
public interface IBoardEcsSyncService
|
||||
{
|
||||
void ClearBoard();
|
||||
void SyncBoard(IBoardService boardService);
|
||||
void SyncGameState(GameState state, bool hasFirstClick);
|
||||
}
|
||||
|
||||
@@ -155,7 +155,7 @@ namespace Minesweeper.Presentation.Presenters
|
||||
|
||||
private void OnPauseChanged(bool isPaused)
|
||||
{
|
||||
if (isPaused)
|
||||
if (isPaused && gameStateService.Current == GameState.Playing)
|
||||
{
|
||||
view.ShowPause();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user