[Add] UI, menu, pause and timer

This commit is contained in:
2026-06-06 22:03:20 +07:00
parent 1483964eaf
commit f4ecf8b6f9
23 changed files with 2440 additions and 11 deletions
@@ -1,4 +1,5 @@
using Minesweeper.Commands;
using Minesweeper.Core;
using Minesweeper.Presentation.Views;
namespace Minesweeper.Presentation.Presenters
@@ -6,11 +7,13 @@ namespace Minesweeper.Presentation.Presenters
public sealed class MainMenuPresenter : IPresenter
{
private readonly IGameCommandDispatcher commandDispatcher;
private readonly IGameStateService gameStateService;
private readonly IMainMenuView view;
public MainMenuPresenter(IGameCommandDispatcher commandDispatcher, IMainMenuView view = null)
public MainMenuPresenter(IGameCommandDispatcher commandDispatcher, IGameStateService gameStateService, IMainMenuView view = null)
{
this.commandDispatcher = commandDispatcher;
this.gameStateService = gameStateService;
this.view = view;
}
@@ -19,6 +22,8 @@ namespace Minesweeper.Presentation.Presenters
if (view != null)
{
view.StartClicked += OnStartClicked;
gameStateService.StateChanged += OnStateChanged;
OnStateChanged(gameStateService.Current);
}
}
@@ -27,6 +32,7 @@ namespace Minesweeper.Presentation.Presenters
if (view != null)
{
view.StartClicked -= OnStartClicked;
gameStateService.StateChanged -= OnStateChanged;
}
}
@@ -34,5 +40,17 @@ namespace Minesweeper.Presentation.Presenters
{
commandDispatcher.Dispatch(new StartGameCommand());
}
private void OnStateChanged(GameState state)
{
if (state == GameState.FieldSelection)
{
view.Show();
}
else
{
view.Hide();
}
}
}
}