mirror of
https://github.com/Bragin-Stepan/project-entity.git
synced 2026-03-05 07:41:10 +00:00
init: add project
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8cbb0d7029e44b3e89d77dafd247facc
|
||||
timeCreated: 1771254327
|
||||
@@ -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
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5d22d0fc68a146ebb59f28768ea0e018
|
||||
timeCreated: 1771177329
|
||||
@@ -0,0 +1,51 @@
|
||||
using System;
|
||||
using _Project.Develop.Runtime.Configs.Meta;
|
||||
using _Project.Develop.Runtime.Logic.Meta.Features.Wallet;
|
||||
using _Project.Develop.Runtime.UI.Common;
|
||||
using _Project.Develop.Runtime.UI.Core;
|
||||
using _Project.Develop.Runtime.Utils.ReactiveManagement;
|
||||
|
||||
namespace _Project.Develop.Runtime.UI.Features.Wallet
|
||||
{
|
||||
public class CurrencyPresenter : IPresenter
|
||||
{
|
||||
private readonly IReadOnlyVariable<int> _currency;
|
||||
private readonly CurrencyTypes _currencyType;
|
||||
private readonly CurrencyIconsConfigSO _currencyIconsConfig;
|
||||
|
||||
private readonly IconTextView _view;
|
||||
|
||||
private IDisposable _disposable;
|
||||
|
||||
public CurrencyPresenter(
|
||||
IReadOnlyVariable<int> currency,
|
||||
CurrencyTypes currencyType,
|
||||
CurrencyIconsConfigSO currencyIconsConfig,
|
||||
IconTextView view)
|
||||
{
|
||||
_currency = currency;
|
||||
_currencyType = currencyType;
|
||||
_currencyIconsConfig = currencyIconsConfig;
|
||||
_view = view;
|
||||
}
|
||||
|
||||
public IconTextView View => _view;
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
UpdateValue(_currency.Value);
|
||||
_view.SetIcon(_currencyIconsConfig.GetSpriteFor(_currencyType));
|
||||
|
||||
_disposable = _currency.Subscribe(OnCurrencyChanged);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_disposable.Dispose();
|
||||
}
|
||||
|
||||
private void OnCurrencyChanged(int arg1, int newValue) => UpdateValue(newValue);
|
||||
|
||||
private void UpdateValue(int value) => _view.SetText(value.ToString());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 969e239137404e7e9d12b4b229fe7efb
|
||||
timeCreated: 1771177336
|
||||
@@ -0,0 +1,62 @@
|
||||
using Assets._Project.Develop.Runtime.Meta.Features.Wallet;
|
||||
|
||||
using System.Collections.Generic;
|
||||
using _Project.Develop.Runtime.Logic.Meta.Features.Wallet;
|
||||
using _Project.Develop.Runtime.UI.Common;
|
||||
using _Project.Develop.Runtime.UI.Core;
|
||||
|
||||
namespace _Project.Develop.Runtime.UI.Features.Wallet
|
||||
{
|
||||
public class WalletPresenter : IPresenter
|
||||
{
|
||||
private readonly WalletService _walletService;
|
||||
private readonly ProjectPresentersFactory _presentersFactory;
|
||||
private readonly ViewsFactory _viewsFactory;
|
||||
|
||||
private readonly IconTextListView _view;
|
||||
|
||||
private readonly List<CurrencyPresenter> _currencyPresenters = new();
|
||||
|
||||
public WalletPresenter(
|
||||
WalletService walletService,
|
||||
ProjectPresentersFactory presentersFactory,
|
||||
ViewsFactory viewsFactory,
|
||||
IconTextListView view)
|
||||
{
|
||||
_walletService = walletService;
|
||||
_presentersFactory = presentersFactory;
|
||||
_viewsFactory = viewsFactory;
|
||||
_view = view;
|
||||
}
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
foreach (CurrencyTypes currencyType in _walletService.AvailableCurrencies)
|
||||
{
|
||||
IconTextView currencyView = _viewsFactory.Create<IconTextView>();
|
||||
|
||||
_view.Add(currencyView);
|
||||
|
||||
CurrencyPresenter currencyPresenter = _presentersFactory.CreateCurrencyPresenter(
|
||||
currencyView,
|
||||
_walletService.GetCurrency(currencyType),
|
||||
currencyType);
|
||||
|
||||
currencyPresenter.Initialize();
|
||||
_currencyPresenters.Add(currencyPresenter);
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
foreach (CurrencyPresenter currencyPresenter in _currencyPresenters)
|
||||
{
|
||||
_view.Remove(currencyPresenter.View);
|
||||
_viewsFactory.Release(currencyPresenter.View);
|
||||
currencyPresenter.Dispose();
|
||||
}
|
||||
|
||||
_currencyPresenters.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b59b18c1bd074e5fa613924a9bd36a54
|
||||
timeCreated: 1771177336
|
||||
Reference in New Issue
Block a user