Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections.Generic;
- using StatefulUI.Core;
- namespace Game.RewardsSystem.Presenters
- {
- public class RewardPresenter
- {
- private readonly IEnumerable<IRewardPresenter> _visitors;
- public RewardPresenter(IEnumerable<IRewardPresenter> visitors) =>
- _visitors = visitors;
- public void Display(StatefulComponent view, IReward reward)
- {
- foreach(IRewardPresenter visitor in _visitors)
- if (visitor.IsMy(reward))
- visitor.Display(view, reward);
- }
- }
- public abstract class RewardPresenter<TRewardType> : IRewardPresenter where TRewardType : IReward
- {
- public bool IsMy<T>(T reward) where T : IReward => reward is TRewardType;
- public void Display(StatefulComponent view, IReward reward)
- {
- if (reward is TRewardType typedReward)
- Display(view, typedReward);
- }
- protected abstract void Display(StatefulComponent view, TRewardType reward);
- }
- }
- using StatefulUI.Core;
- using StatefulUISupport.Scripts.Components;
- namespace Game.RewardsSystem.Presenters
- {
- public class CardRewardPresenter : RewardPresenter<CollectibleCardsReward>
- {
- protected override void Display(StatefulComponent root, CollectibleCardsReward reward)
- {
- root.SetState(StateRole.Card);
- StatefulComponent view = root.GetInnerComponent(InnerComponentRole.Card);
- view.SetImageSprite(ImageRole.Icon, reward.Icon);
- }
- }
- }
- using StatefulUI.Core;
- using StatefulUISupport.Scripts.Components;
- namespace Game.RewardsSystem.Presenters
- {
- public class CurrencyRewardPresenter : RewardPresenter<CurrencyReward>
- {
- protected override void Display(StatefulComponent root, CurrencyReward reward)
- {
- root.SetState(StateRole.Currency);
- StatefulComponent view = root.GetInnerComponent(InnerComponentRole.Currency);
- view.GetImage(ImageRole.Icon).SetSprite(reward.Type.Icon);
- view.GetText(TextRole.Value).SetText(reward.Amount.ToString());
- }
- }
- }
- using Game.RewardsSystem.Factories;
- using StatefulUI.Core;
- using StrongExtensions;
- namespace Game.RewardsSystem.Presenters
- {
- public class EmptyRewardPresenter : RewardPresenter<EmptyReward>
- {
- protected override void Display(StatefulComponent view, EmptyReward reward) =>
- view.gameObject.Destroy();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement