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,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