using System.Collections.Generic; using _Project.Develop.Runtime.UI.Core; using _Project.Develop.Runtime.UI.Features.Wallet; namespace _Project.Develop.Runtime.UI.Screens.MainMenu { public class MainMenuScreenPresenter : IPresenter { private readonly MainMenuScreenView _screen; private readonly ProjectPresentersFactory _projectPresentersFactory; private readonly MainMenuPopupService _popupService; private readonly List _childPresenters = new(); public MainMenuScreenPresenter( MainMenuScreenView screen, ProjectPresentersFactory projectPresentersFactory, MainMenuPopupService popupService) { _screen = screen; _projectPresentersFactory = projectPresentersFactory; _popupService = popupService; } public void Initialize() { _screen.OpenLevelsMenuButtonClicked += OnOpenLevelsMenuButtonClicked; CreateWallet(); foreach (IPresenter presenter in _childPresenters) presenter.Initialize(); } public void Dispose() { _screen.OpenLevelsMenuButtonClicked -= OnOpenLevelsMenuButtonClicked; foreach (IPresenter presenter in _childPresenters) presenter.Dispose(); _childPresenters.Clear(); } private void CreateWallet() { WalletPresenter walletPresenter = _projectPresentersFactory.CreateWalletPresenter(_screen.WalletView); _childPresenters.Add(walletPresenter); } private void OnOpenLevelsMenuButtonClicked() { _popupService.OpenLevelsMenuPopup(); } } }