init: add project

This commit is contained in:
Bragin Stepan
2026-02-18 23:02:28 +05:00
commit 4f01e66894
620 changed files with 52253 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
using _Project.Develop.Runtime.UI.Core;
using UnityEngine;
namespace _Project.Develop.Runtime.UI.Screens.MainMenu
{
public class MainMenuPopupService : PopupService
{
private readonly MainMenuUIRoot _uiRoot;
public MainMenuPopupService(
ViewsFactory viewsFactory,
ProjectPresentersFactory presentersFactory,
MainMenuUIRoot uiRoot)
: base(viewsFactory, presentersFactory)
{
_uiRoot = uiRoot;
}
protected override Transform PopupLayer => _uiRoot.PopupsLayer;
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b8915fbd3a06462882defa0995a7f382
timeCreated: 1771177835

View File

@@ -0,0 +1,22 @@
using Assets._Project.Develop.Runtime.Infrastructure.DI;
namespace _Project.Develop.Runtime.UI.Screens.MainMenu
{
public class MainMenuPresentersFactory
{
private readonly DIContainer _container;
public MainMenuPresentersFactory(DIContainer container)
{
_container = container;
}
public MainMenuScreenPresenter CreateMainMenuScreen(MainMenuScreenView view)
{
return new MainMenuScreenPresenter(
view,
_container.Resolve<ProjectPresentersFactory>(),
_container.Resolve<MainMenuPopupService>());
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 5db00ccae66241c39f8040ef76137734
timeCreated: 1771177835

View File

@@ -0,0 +1,57 @@
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<IPresenter> _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();
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 95604473adb94e25b30a819cd13b7b48
timeCreated: 1771177835

View File

@@ -0,0 +1,35 @@
using System;
using _Project.Develop.Runtime.UI.Common;
using _Project.Develop.Runtime.UI.Core;
using UnityEngine;
using UnityEngine.UI;
namespace _Project.Develop.Runtime.UI.Screens.MainMenu
{
public class MainMenuScreenView : MonoBehaviour, IView
{
public event Action OpenLevelsMenuButtonClicked;
public event Action ResetStatsButtonClicked;
[field: SerializeField] public IconTextListView WalletView { get; private set; }
[field: SerializeField] public IconTextListView StatsView { get; private set; }
[SerializeField] private Button _openLevelsMenuButton;
[SerializeField] private Button _resetStatsButton;
private void OnEnable()
{
_openLevelsMenuButton.onClick.AddListener(OnOpenLevelsMenuButtonClicked);
_resetStatsButton.onClick.AddListener(OnResetStatsButtonClicked);
}
private void OnDisable()
{
_openLevelsMenuButton.onClick.RemoveListener(OnOpenLevelsMenuButtonClicked);
_resetStatsButton.onClick.RemoveListener(OnResetStatsButtonClicked);
}
private void OnOpenLevelsMenuButtonClicked() => OpenLevelsMenuButtonClicked?.Invoke();
private void OnResetStatsButtonClicked() => ResetStatsButtonClicked?.Invoke();
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 75ddbca774384573879ac9aaa9f84738
timeCreated: 1771177835

View File

@@ -0,0 +1,12 @@
using UnityEngine;
namespace _Project.Develop.Runtime.UI.Screens.MainMenu
{
public class MainMenuUIRoot : MonoBehaviour
{
[field: SerializeField] public Transform HUDLayer { get; private set; }
[field: SerializeField] public Transform PopupsLayer { get; private set; }
[field: SerializeField] public Transform VFXUnderPopupsLayer { get; private set; }
[field: SerializeField] public Transform VFXOverPopupsLayer { get; private set; }
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 76e84f5cbfeb49d48f6c97834fc81f0e
timeCreated: 1771177835