[Fix] Rename Scripts Folder

This commit is contained in:
2026-06-07 00:30:10 +07:00
parent 79a928ae52
commit 6c9cdaf67d
140 changed files with 0 additions and 0 deletions
@@ -0,0 +1,193 @@
using Minesweeper.Commands;
using Minesweeper.Core;
using Minesweeper.Presentation.Factories;
using Minesweeper.Presentation.ReadModels;
using Minesweeper.Presentation.Views;
namespace Minesweeper.Presentation.Presenters
{
public sealed class GamePresenter : IPresenter
{
private readonly IGameCommandDispatcher commandDispatcher;
private readonly ICellViewFactory cellViewFactory;
private readonly IGamePauseService pauseService;
private readonly IGameReadModel readModel;
private readonly IGameStateService gameStateService;
private readonly TopPanelPresenter topPanelPresenter;
private readonly IBoardView boardView;
private readonly IPauseView pauseView;
private readonly IResultView resultView;
private bool boardBuilt;
public GamePresenter(IGameCommandDispatcher commandDispatcher, ICellViewFactory cellViewFactory, IGamePauseService pauseService, IGameReadModel readModel, IGameStateService gameStateService, TopPanelPresenter topPanelPresenter, IBoardView boardView, IPauseView pauseView, IResultView resultView)
{
this.commandDispatcher = commandDispatcher;
this.cellViewFactory = cellViewFactory;
this.pauseService = pauseService;
this.readModel = readModel;
this.gameStateService = gameStateService;
this.topPanelPresenter = topPanelPresenter;
this.boardView = boardView;
this.pauseView = pauseView;
this.resultView = resultView;
}
public void Initialize()
{
boardView.CellPressStarted += OnCellPressStarted;
boardView.CellPressEnded += OnCellPressEnded;
boardView.PauseRequested += OnPauseRequested;
boardView.CellOpenRequested += OnCellOpenRequested;
boardView.CellFlagRequested += OnCellFlagRequested;
pauseView.RestartRequested += OnRestartRequested;
pauseView.ResumeRequested += OnResumeRequested;
pauseView.GoToMenuRequested += OnGoToMenuRequested;
resultView.RestartRequested += OnRestartRequested;
resultView.GoToMenuRequested += OnGoToMenuRequested;
gameStateService.StateChanged += OnStateChanged;
pauseService.PauseChanged += OnPauseChanged;
OnStateChanged(gameStateService.Current);
OnPauseChanged(pauseService.IsPaused);
}
public void Dispose()
{
boardView.CellPressStarted -= OnCellPressStarted;
boardView.CellPressEnded -= OnCellPressEnded;
boardView.PauseRequested -= OnPauseRequested;
boardView.CellOpenRequested -= OnCellOpenRequested;
boardView.CellFlagRequested -= OnCellFlagRequested;
pauseView.RestartRequested -= OnRestartRequested;
pauseView.ResumeRequested -= OnResumeRequested;
pauseView.GoToMenuRequested -= OnGoToMenuRequested;
resultView.RestartRequested -= OnRestartRequested;
resultView.GoToMenuRequested -= OnGoToMenuRequested;
gameStateService.StateChanged -= OnStateChanged;
pauseService.PauseChanged -= OnPauseChanged;
}
private void OnCellOpenRequested(int x, int y)
{
topPanelPresenter.SetCellPressActive(false);
commandDispatcher.Dispatch(new OpenCellCommand(x, y));
RefreshBoard();
topPanelPresenter.RefreshCounters();
UpdateBoardInput();
}
private void OnCellFlagRequested(int x, int y)
{
commandDispatcher.Dispatch(new ToggleFlagCommand(x, y));
RefreshBoard();
topPanelPresenter.RefreshCounters();
UpdateBoardInput();
}
private void OnCellPressStarted()
{
topPanelPresenter.SetCellPressActive(true);
}
private void OnCellPressEnded()
{
topPanelPresenter.SetCellPressActive(false);
}
private void OnStateChanged(GameState state)
{
if (state == GameState.FieldSelection)
{
boardBuilt = false;
boardView.Hide();
pauseView.Hide();
resultView.Hide();
return;
}
boardView.Show();
if (state == GameState.Won || state == GameState.Lost)
{
pauseView.Hide();
resultView.Show(state);
}
else
{
resultView.Hide();
}
if (!boardBuilt || state == GameState.Preparing)
{
RebuildBoard();
}
else
{
RefreshBoard();
}
UpdateBoardInput();
}
private void OnPauseChanged(bool isPaused)
{
if (isPaused && gameStateService.Current == GameState.Playing)
{
pauseView.Show();
}
else
{
pauseView.Hide();
}
UpdateBoardInput();
}
private void RebuildBoard()
{
var cells = readModel.GetCells();
boardView.Rebuild(cells, readModel.Width, readModel.Height, cellViewFactory, IsFinalState());
boardBuilt = true;
topPanelPresenter.RefreshCounters();
UpdateBoardInput();
}
private void RefreshBoard()
{
boardView.Refresh(readModel.GetCells(), IsFinalState());
}
private bool IsFinalState()
{
var state = gameStateService.Current;
return state == GameState.Lost || state == GameState.Won;
}
private void UpdateBoardInput()
{
var state = gameStateService.Current;
boardView.SetInputEnabled(!pauseService.IsPaused && (state == GameState.Preparing || state == GameState.Playing));
}
private void OnRestartRequested()
{
commandDispatcher.Dispatch(new RestartCommand());
RebuildBoard();
topPanelPresenter.RefreshCounters();
}
private void OnGoToMenuRequested()
{
commandDispatcher.Dispatch(new GoToMenuCommand());
}
private void OnResumeRequested()
{
commandDispatcher.Dispatch(new ResumeCommand());
}
private void OnPauseRequested()
{
commandDispatcher.Dispatch(new PauseCommand());
}
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 9f85646fc4851054e9efffa3ab1f6853
@@ -0,0 +1,9 @@
using System;
namespace Minesweeper.Presentation.Presenters
{
public interface IPresenter : IDisposable
{
void Initialize();
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: e0fcee9aa500b62429eb4ffa2249de9c
@@ -0,0 +1,81 @@
using Minesweeper.Commands;
using Minesweeper.Config;
using Minesweeper.Core;
using Minesweeper.Presentation.Views;
namespace Minesweeper.Presentation.Presenters
{
public sealed class MainMenuPresenter : IPresenter
{
private readonly IGameCommandDispatcher commandDispatcher;
private readonly MinesweeperGameConfig config;
private readonly IGameSettingsService settingsService;
private readonly IGameStateService gameStateService;
private readonly IMainMenuView view;
public MainMenuPresenter(IGameCommandDispatcher commandDispatcher, MinesweeperGameConfig config, IGameSettingsService settingsService, IGameStateService gameStateService, IMainMenuView view = null)
{
this.commandDispatcher = commandDispatcher;
this.config = config;
this.settingsService = settingsService;
this.gameStateService = gameStateService;
this.view = view;
}
public void Initialize()
{
if (view != null)
{
view.StartClicked += OnStartClicked;
view.SizeChanged += OnSizeChanged;
gameStateService.StateChanged += OnStateChanged;
RefreshMenuValues(settingsService.Current);
OnStateChanged(gameStateService.Current);
}
}
public void Dispose()
{
if (view != null)
{
view.StartClicked -= OnStartClicked;
view.SizeChanged -= OnSizeChanged;
gameStateService.StateChanged -= OnStateChanged;
}
}
private void OnStartClicked()
{
settingsService.ApplyAndSaveIfChanged(view.SelectedSettings);
commandDispatcher.Dispatch(new StartGameCommand());
}
private void OnSizeChanged()
{
var selected = settingsService.Clamp(view.SelectedSettings);
var maxMines = settingsService.GetMaxMines(selected.SizeX, selected.SizeY);
view.ConfigureMines(1, maxMines, selected.MinesCount);
}
private void OnStateChanged(GameState state)
{
if (state == GameState.FieldSelection)
{
RefreshMenuValues(settingsService.Current);
view.Show();
}
else
{
view.Hide();
}
}
private void RefreshMenuValues(GameSettingsValue settings)
{
var clamped = settingsService.Clamp(settings);
view.ConfigureSizeX(config.MinSizeX, config.MaxSizeX, clamped.SizeX);
view.ConfigureSizeY(config.MinSizeY, config.MaxSizeY, clamped.SizeY);
view.ConfigureMines(1, settingsService.GetMaxMines(clamped.SizeX, clamped.SizeY), clamped.MinesCount);
}
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 835a3b63609e9864fa6154be8b8283ad
@@ -0,0 +1,130 @@
using Minesweeper.Commands;
using Minesweeper.Config;
using Minesweeper.Core;
using Minesweeper.Presentation.ReadModels;
using Minesweeper.Presentation.Views;
namespace Minesweeper.Presentation.Presenters
{
public sealed class TopPanelPresenter : IPresenter
{
private readonly IGameCommandDispatcher commandDispatcher;
private readonly IGamePauseService pauseService;
private readonly IGameReadModel readModel;
private readonly IGameStateService gameStateService;
private readonly IGameTimerService timerService;
private readonly ITopPanelView view;
public TopPanelPresenter(IGameCommandDispatcher commandDispatcher, IGamePauseService pauseService, IGameReadModel readModel, IGameStateService gameStateService, IGameTimerService timerService, ITopPanelView view)
{
this.commandDispatcher = commandDispatcher;
this.pauseService = pauseService;
this.readModel = readModel;
this.gameStateService = gameStateService;
this.timerService = timerService;
this.view = view;
}
public void Initialize()
{
view.SmileClicked += OnSmileClicked;
gameStateService.StateChanged += OnStateChanged;
pauseService.PauseChanged += OnPauseChanged;
timerService.TimeChanged += OnTimeChanged;
RefreshAll();
}
public void Dispose()
{
view.SmileClicked -= OnSmileClicked;
gameStateService.StateChanged -= OnStateChanged;
pauseService.PauseChanged -= OnPauseChanged;
timerService.TimeChanged -= OnTimeChanged;
}
public void RefreshCounters()
{
view.SetRemainingMines(readModel.RemainingMinesCount);
}
public void SetCellPressActive(bool active)
{
var state = gameStateService.Current;
if (active && !pauseService.IsPaused && (state == GameState.Preparing || state == GameState.Playing))
{
view.SetSmile(SmileFaceState.Surprised);
return;
}
view.SetSmile(GetSmileState(state));
}
private void RefreshAll()
{
view.SetActive(true);
view.SetRemainingMines(readModel.RemainingMinesCount);
view.SetTimer(timerService.ElapsedSeconds);
view.SetSmile(GetSmileState(gameStateService.Current));
}
private void OnSmileClicked()
{
var state = gameStateService.Current;
if (state == GameState.FieldSelection)
{
commandDispatcher.Dispatch(new StartGameCommand());
}
else if (state == GameState.Playing && !pauseService.IsPaused)
{
commandDispatcher.Dispatch(new PauseCommand());
}
else if (state == GameState.Playing && pauseService.IsPaused)
{
commandDispatcher.Dispatch(new ResumeCommand());
}
else
{
commandDispatcher.Dispatch(new RestartCommand());
}
RefreshAll();
}
private void OnStateChanged(GameState state)
{
if (state == GameState.FieldSelection || state == GameState.Preparing)
{
view.SetTimer(0f);
}
view.SetSmile(GetSmileState(state));
view.SetRemainingMines(readModel.RemainingMinesCount);
}
private void OnPauseChanged(bool isPaused)
{
view.SetSmile(GetSmileState(gameStateService.Current));
}
private void OnTimeChanged(float seconds)
{
view.SetTimer(seconds);
}
private SmileFaceState GetSmileState(GameState state)
{
if (state == GameState.Won)
{
return SmileFaceState.Cool;
}
if (state == GameState.Lost)
{
return SmileFaceState.Dead;
}
return SmileFaceState.Smile;
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b3ac57cd2e63497d9d0d7e23659a4d45
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: