51 lines
1.4 KiB
C#
51 lines
1.4 KiB
C#
using Minesweeper.Commands;
|
|
using Minesweeper.Presentation.ReadModels;
|
|
using Minesweeper.Presentation.Views;
|
|
|
|
namespace Minesweeper.Presentation.Presenters
|
|
{
|
|
public sealed class GamePresenter : IPresenter
|
|
{
|
|
private readonly IGameCommandDispatcher commandDispatcher;
|
|
private readonly IGameReadModel readModel;
|
|
private readonly IGameView view;
|
|
|
|
public GamePresenter(IGameCommandDispatcher commandDispatcher, IGameReadModel readModel, IGameView view = null)
|
|
{
|
|
this.commandDispatcher = commandDispatcher;
|
|
this.readModel = readModel;
|
|
this.view = view;
|
|
}
|
|
|
|
public void Initialize()
|
|
{
|
|
_ = readModel.State;
|
|
|
|
if (view != null)
|
|
{
|
|
view.RestartRequested += OnRestartRequested;
|
|
view.GoToMenuRequested += OnGoToMenuRequested;
|
|
}
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
if (view != null)
|
|
{
|
|
view.RestartRequested -= OnRestartRequested;
|
|
view.GoToMenuRequested -= OnGoToMenuRequested;
|
|
}
|
|
}
|
|
|
|
private void OnRestartRequested()
|
|
{
|
|
commandDispatcher.Dispatch(new RestartCommand());
|
|
}
|
|
|
|
private void OnGoToMenuRequested()
|
|
{
|
|
commandDispatcher.Dispatch(new GoToMenuCommand());
|
|
}
|
|
}
|
|
}
|