mirror of
https://github.com/Bragin-Stepan/project-entity.git
synced 2026-03-05 15:51:10 +00:00
init: add project
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: db8fa6c3e70e4981a03262ef8daaa925
|
||||
timeCreated: 1771254366
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e5bff9d68670434684a58ae2d132ea9d
|
||||
timeCreated: 1771254366
|
||||
@@ -0,0 +1,8 @@
|
||||
using _Project.Develop.Runtime.UI.Common;
|
||||
|
||||
namespace _Project.Develop.Runtime.UI.Features.LevelsMenuPopup
|
||||
{
|
||||
public class LevelTilesListView : ElementsListView<LevelTileView>
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b70d87f107814fc18168ed2dc9d87357
|
||||
timeCreated: 1771254366
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 67b599a9fa6947d8baed6cd4db4dfaca
|
||||
timeCreated: 1771254366
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f8760059e45a42a5bac5cc657ffed36c
|
||||
timeCreated: 1771254366
|
||||
Reference in New Issue
Block a user