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,48 @@
using _Project.Develop.Runtime.UI.Core;
using Assets._Project.Develop.Runtime.Utilities.SceneManagement;
namespace _Project.Develop.Runtime.UI.Features.LevelsMenuPopup
{
public class LevelTilePresenter : ISubscribedPresenter
{
private readonly SceneSwitcherService _sceneSwitcherService;
private readonly LevelTileView _view;
public LevelTilePresenter(
SceneSwitcherService sceneSwitcherService,
LevelTileView view)
{
_sceneSwitcherService = sceneSwitcherService;
_view = view;
}
public LevelTileView View => _view;
public void Initialize()
{
// _view.SetLevel(_gameMode.ToString());
_view.SetActive();
}
public void Dispose()
{
_view.Clicked -= OnViewClicked;
}
public void Subscribe()
{
_view.Clicked += OnViewClicked;
}
public void Unsubscribe()
{
_view.Clicked -= OnViewClicked;
}
private void OnViewClicked()
{
// _gameRunner.Run(_gameMode);
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: db8fa6c3e70e4981a03262ef8daaa925
timeCreated: 1771254366

View File

@@ -0,0 +1,65 @@
using DG.Tweening;
using System;
using _Project.Develop.Runtime.UI.Core;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace _Project.Develop.Runtime.UI.Features.LevelsMenuPopup
{
public class LevelTileView : MonoBehaviour, IShowableView
{
public event Action Clicked;
[SerializeField] private Image _background;
[SerializeField] private TMP_Text _levelNumberText;
[SerializeField] private Button _button;
[SerializeField] private Color _activeColor;
[SerializeField] private Color _completedColor;
[SerializeField] private Color _blockedColor;
private void OnEnable()
{
_button.onClick.AddListener(OnClick);
}
private void OnDisable()
{
_button.onClick.RemoveListener(OnClick);
}
public void SetLevel(string level) => _levelNumberText.text = level;
public void SetBlock() => _background.color = _blockedColor;
public void SetComplete() => _background.color = _completedColor;
public void SetActive() => _background.color = _activeColor;
public Tween Show()
{
transform.DOKill();
return transform
.DOScale(1, 0.1f)
.From(0)
.SetUpdate(true)
.Play();
}
public Tween Hide()
{
transform.DOKill();
return DOTween.Sequence();
}
private void OnDestroy()
{
transform.DOKill();
}
private void OnClick() => Clicked?.Invoke();
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: e5bff9d68670434684a58ae2d132ea9d
timeCreated: 1771254366

View File

@@ -0,0 +1,8 @@
using _Project.Develop.Runtime.UI.Common;
namespace _Project.Develop.Runtime.UI.Features.LevelsMenuPopup
{
public class LevelTilesListView : ElementsListView<LevelTileView>
{
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b70d87f107814fc18168ed2dc9d87357
timeCreated: 1771254366

View File

@@ -0,0 +1,87 @@
using System.Collections.Generic;
using _Project.Develop.Runtime.Configs.Gameplay.Levels;
using _Project.Develop.Runtime.UI.Core;
using Assets._Project.Develop.Runtime.Utilities.ConfigsManagement;
using Assets._Project.Develop.Runtime.Utilities.CoroutinesManagement;
namespace _Project.Develop.Runtime.UI.Features.LevelsMenuPopup
{
public class LevelsMenuPopupPresenter : PopupPresenterBase
{
private const string TitleName = "Levels";
private readonly ConfigsProviderService _configsProviderService;
private readonly ProjectPresentersFactory _presentersFactory;
private readonly ViewsFactory _viewsFactory;
private readonly LevelsMenuPopupView _view;
private readonly List<LevelTilePresenter> _levelTilePresenters = new();
public LevelsMenuPopupPresenter(
ICoroutinesPerformer coroutinesPerformer,
ConfigsProviderService configsProviderService,
ProjectPresentersFactory presentersFactory,
ViewsFactory viewsFactory,
LevelsMenuPopupView view) : base(coroutinesPerformer)
{
_configsProviderService = configsProviderService;
_presentersFactory = presentersFactory;
_viewsFactory = viewsFactory;
_view = view;
}
protected override PopupViewBase PopupView => _view;
public override void Initialize()
{
base.Initialize();
_view.SetTitle(TitleName);
LevelsListConfigSO levelsListConfig = _configsProviderService.GetConfig<LevelsListConfigSO>();
foreach (LevelConfigSO level in levelsListConfig.Levels)
{
LevelTileView levelTileView = _viewsFactory.Create<LevelTileView>();
_view.LevelTilesListView.Add(levelTileView);
LevelTilePresenter levelTilePresenter = _presentersFactory.CreateLevelTilePresenter(levelTileView);
levelTilePresenter.Initialize();
_levelTilePresenters.Add(levelTilePresenter);
}
}
public override void Dispose()
{
base.Dispose();
foreach (LevelTilePresenter levelTilePresenter in _levelTilePresenters)
{
_view.LevelTilesListView.Remove(levelTilePresenter.View);
_viewsFactory.Release(levelTilePresenter.View);
levelTilePresenter.Dispose();
}
_levelTilePresenters.Clear();
}
protected override void OnPreShow()
{
base.OnPreShow();
foreach (LevelTilePresenter levelTilePresenter in _levelTilePresenters)
levelTilePresenter.Subscribe();
}
protected override void OnPreHide()
{
base.OnPreHide();
foreach (LevelTilePresenter levelTilePresenter in _levelTilePresenters)
levelTilePresenter.Unsubscribe();
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 67b599a9fa6947d8baed6cd4db4dfaca
timeCreated: 1771254366

View File

@@ -0,0 +1,28 @@
using _Project.Develop.Runtime.UI.Core;
using DG.Tweening;
using TMPro;
using UnityEngine;
namespace _Project.Develop.Runtime.UI.Features.LevelsMenuPopup
{
public class LevelsMenuPopupView : PopupViewBase
{
[SerializeField] private TMP_Text _title;
[SerializeField] private LevelTilesListView _levelTilesListView;
public LevelTilesListView LevelTilesListView => _levelTilesListView;
public void SetTitle(string title) => _title.text = title;
protected override void ModifyShowAnimation(Sequence animation)
{
base.ModifyShowAnimation(animation);
foreach (LevelTileView levelTileView in _levelTilesListView.Elements)
{
animation.Append(levelTileView.Show());
animation.AppendInterval(0.1f);
}
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: f8760059e45a42a5bac5cc657ffed36c
timeCreated: 1771254366