using System;
using System.Collections.Generic;
using Minesweeper.Core;
using Minesweeper.Presentation.Factories;

namespace Minesweeper.Presentation.Views
{
    public interface IGameView : IView
    {
        event Action RestartRequested;
        event Action GoToMenuRequested;
        event Action PauseRequested;
        event Action ResumeRequested;
        event Action CellPressStarted;
        event Action CellPressEnded;
        event Action<int, int> CellOpenRequested;
        event Action<int, int> CellFlagRequested;

        void ShowGame();
        void HideGame();
        void ShowPause();
        void HidePause();
        void ShowResult(GameState state);
        void HideResult();
        void SetMineCount(int minesCount);
        void SetTimer(float seconds);
        void RebuildBoard(IReadOnlyList<BoardCellData> cells, int width, int height, ICellViewFactory cellViewFactory);
        void RefreshBoard(IReadOnlyList<BoardCellData> cells);
        void SetBoardInputEnabled(bool enabled);
    }
}
