Advertisement
_EagleOwle_

ProjectilesShortageUI

Nov 1st, 2021
821
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.78 KB | None | 0 0
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using TMPro;
  4. using System.Linq;
  5.  
  6. public class ProjectilesShortageUI : CanvasGroupUI
  7. {   public static ProjectilesShortageUI projectilesShortageUI;
  8.     [Space]
  9.     [TextArea] [SerializeField] private string _title;
  10.     [SerializeField] private Image _projectileIcon;
  11.     [SerializeField] private TMP_Text _countText;
  12.     [SerializeField] private TMP_Text _titleText;
  13.     [Space]
  14.     [SerializeField] private Button _closeBtn;
  15.     [Header("Menu buttons")]
  16.     [SerializeField] private Button _forgeBtn;
  17.     [SerializeField] private Button _characterSettingsBtn;
  18.     [Header("Gameplay buttons")]
  19.     [SerializeField] private Button _diamondsPayBtn;
  20.     [SerializeField] private Button _viewAdBtn;
  21.     [SerializeField] private TMP_Text _diamondsPayText;
  22.     [Space]
  23.     [SerializeField] private int _projectileCount;
  24.     [SerializeField] private int _diamondsPayCost;
  25.     [Space]
  26.     [SerializeField] private bool _inMenu = true;
  27.  
  28.     private void Start()
  29.     {
  30.         projectilesShortageUI = this;
  31.         int index = SLS.Data.Game.SelectedTower.Value.Index;
  32.         _projectileIcon.sprite = AssetsHolder.Instance.TowerConfigs[index].WeaponConfig.ProjectileConfig.Icon;
  33.         _countText.text = SLS.Data.Game.ProjectilesCount.Value[index].ToString();
  34.         _titleText.text = _title;
  35.         _closeBtn.onClick.AddListener(Close);
  36.  
  37.         #region DenisEdit
  38.         //_closeBtn.interactable = false;
  39.         #endregion
  40.  
  41.         if (_inMenu == true)
  42.         {
  43.             _forgeBtn.onClick.AddListener(OpenForge);
  44.             _characterSettingsBtn.onClick.AddListener(OpenCharactrerSettings);
  45.  
  46.             _diamondsPayBtn?.gameObject.SetActive(false);
  47.             _viewAdBtn?.gameObject.SetActive(false);
  48.         }
  49.         else
  50.         {
  51.             _diamondsPayBtn.onClick.AddListener(DiamondsPay);
  52.             _viewAdBtn.onClick.AddListener(ViewAd);
  53.             _diamondsPayBtn.interactable = SLS.Data.Game.Diamonds.Value >= _diamondsPayCost;
  54.             _diamondsPayText.text = _diamondsPayCost.ToString();
  55.             _viewAdBtn.interactable = AdsInitializer.Instance.RewardedAd.IsLoaded;
  56.             AdsInitializer.Instance.RewardedAd.OnAdLoaded += OnAdLoaded;
  57.  
  58.             _forgeBtn.gameObject.SetActive(false);
  59.             _characterSettingsBtn.gameObject.SetActive(false);
  60.         }
  61.     }
  62.  
  63.     public override void Show()
  64.     {
  65.         if (gameObject.activeInHierarchy == true) return;
  66.  
  67.         base.Show();
  68.  
  69.         this.WaitAndDoCoroutine(_fadeTime, () => _closeBtn.interactable = true);
  70.        
  71.         AdsInitializer.Instance.RewardedAd.OnAdComplete += OnAdComplete;
  72.  
  73.         if (_inMenu == false)
  74.         {
  75.             Time.timeScale = 0f;
  76.         }
  77.     }
  78.  
  79.     public override void Hide()
  80.     {
  81.         base.Hide();
  82.  
  83.        
  84.         AdsInitializer.Instance.RewardedAd.OnAdComplete -= OnAdComplete;
  85.  
  86.         if (_inMenu == false)
  87.         {
  88.             Time.timeScale = 1f;
  89.         }
  90.     }
  91.  
  92.     private void Close()
  93.     {
  94.         Hide();
  95.         AudioController.PlayClipAtPosition(_buttonClip, transform.position);
  96.     }
  97.  
  98.     private void OpenForge()
  99.     {
  100.         Hide();
  101.         AudioController.PlayClipAtPosition(_buttonClip, transform.position);
  102.         MenuSwitcher.Instance.HideMap();
  103.         MenuSwitcher.Instance.OpenForge();
  104.     }
  105.  
  106.     private void OpenCharactrerSettings()
  107.     {
  108.         Hide();
  109.         AudioController.PlayClipAtPosition(_buttonClip, transform.position);
  110.         MenuSwitcher.Instance.HideMap();
  111.         MenuSwitcher.Instance.OpenCharacterSettings();
  112.     }
  113.  
  114.     private void DiamondsPay()
  115.     {
  116.         AudioController.PlayClipAtPosition(_buttonClip, transform.position);
  117.         SLS.Data.Game.Diamonds.Value -= _diamondsPayCost;
  118.         int[] projectilesCount = SLS.Data.Game.ProjectilesCount.Value.ToArray();
  119.         projectilesCount[SLS.Data.Game.SelectedTower.Value.Index] += _projectileCount;
  120.         SLS.Data.Game.ProjectilesCount.Value = projectilesCount;
  121.         Hide();
  122.     }
  123.  
  124.     private void ViewAd()
  125.     {
  126.         AudioController.PlayClipAtPosition(_buttonClip, transform.position);
  127.         _viewAdBtn.interactable = false;
  128.         AdsInitializer.Instance.ShowRewarded();
  129.        
  130.     }
  131.  
  132.     private void OnAdComplete()
  133.     {
  134.         int[] projectilesCount = SLS.Data.Game.ProjectilesCount.Value.ToArray();
  135.         projectilesCount[SLS.Data.Game.SelectedTower.Value.Index] += _projectileCount;
  136.         SLS.Data.Game.ProjectilesCount.Value = projectilesCount;
  137.         Hide();
  138.     }
  139.  
  140.     private void OnAdLoaded()
  141.     {
  142.         _viewAdBtn.interactable = true;
  143.     }
  144.  
  145.     private void OnDestroy()
  146.     {
  147.         AdsInitializer.Instance.RewardedAd.OnAdComplete -= OnAdComplete;
  148.         AdsInitializer.Instance.RewardedAd.OnAdLoaded -= OnAdLoaded;
  149.     }
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement