358 lines
8.1 KiB
C#
358 lines
8.1 KiB
C#
using DG.Tweening;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class UiManager : Singleton<UiManager>
|
|
{
|
|
public Transform settingsPanel;
|
|
|
|
public Transform getCoinsPanel;
|
|
|
|
public Transform shopPanel;
|
|
|
|
public Transform newSkinUnlockPanel;
|
|
|
|
public Transform removeAdPanel;
|
|
|
|
public Transform noInternetAvailable;
|
|
|
|
public Transform ratePanel;
|
|
|
|
public Transform exitPanel;
|
|
|
|
public Transform hintsPanel;
|
|
|
|
public Transform LevelCompletePanel;
|
|
|
|
public Transform LevelFailedPanel;
|
|
|
|
public Text levelNumTextGameplay;
|
|
|
|
public Text levelNumTextGameover;
|
|
|
|
public Transform levelNumTag;
|
|
|
|
public Image currentBallImg;
|
|
|
|
public Animator SettingPanelAnim;
|
|
|
|
public GameObject RemoveAdsBtn;
|
|
|
|
public GameObject BannerPati;
|
|
|
|
private float currentBallInitialScale;
|
|
|
|
public bool isSettingsOpen;
|
|
|
|
[Header("Progressive UI Unlock")]
|
|
public GameObject topUISkipLevelBtn;
|
|
|
|
public GameObject[] iconsUnlockedAfterAd;
|
|
|
|
[Header("Reload Button")]
|
|
public RectTransform reloadBtnRect;
|
|
|
|
private Vector2 _reloadBtnHidePos;
|
|
|
|
private readonly Vector2 _reloadBtnShowPos = new Vector2(20f, -7f);
|
|
|
|
private bool isGameCompleted;
|
|
|
|
private void Start()
|
|
{
|
|
Application.targetFrameRate = 60;
|
|
|
|
MonetizationServices.Ads.ShowBanner();
|
|
if (RemoveAdsBtn != null)
|
|
{
|
|
RemoveAdsBtn.SetActive(false);
|
|
}
|
|
if (topUISkipLevelBtn != null)
|
|
{
|
|
topUISkipLevelBtn.SetActive(false);
|
|
}
|
|
for (int i = 0; i < iconsUnlockedAfterAd.Length; i++)
|
|
{
|
|
if (iconsUnlockedAfterAd[i] != null)
|
|
{
|
|
iconsUnlockedAfterAd[i].SetActive(false);
|
|
}
|
|
}
|
|
if (PlayerPrefs.GetInt("FirstAdShown", 0) == 1)
|
|
{
|
|
ShowRemoveAdsBtn();
|
|
}
|
|
if (PlayerPrefs.GetInt("RemoveAdsPanelShown", 0) == 1)
|
|
{
|
|
ShowPostAdIcons();
|
|
}
|
|
if (AdConstants.AdsRemoved && RemoveAdsBtn != null)
|
|
{
|
|
RemoveAdsBtn.SetActive(false);
|
|
}
|
|
if (PlayerPrefs.GetInt("EverFailed", 0) == 1)
|
|
{
|
|
if (LevelScript.Instance != null)
|
|
{
|
|
ShowFailButtons(false);
|
|
}
|
|
}
|
|
if (reloadBtnRect != null)
|
|
{
|
|
_reloadBtnHidePos = reloadBtnRect.anchoredPosition;
|
|
reloadBtnRect.gameObject.SetActive(false);
|
|
}
|
|
Input.multiTouchEnabled = false;
|
|
currentBallInitialScale = currentBallImg.transform.localScale.x;
|
|
levelNumTag.localScale = Vector3.one;
|
|
levelNumTextGameplay.text = "Level " + PersistableData.Instance.itemsData.currentLevelNumProgressive;
|
|
levelNumTag.DOScale(0.5f, 1f);
|
|
UpdateBallImgIcon(PersistableData.Instance.shopItemSprite[PersistableData.Instance.itemsData.currentShopItemId]);
|
|
}
|
|
|
|
public void UpdateBallImgIcon(Sprite ballSprite)
|
|
{
|
|
currentBallImg.sprite = ballSprite;
|
|
currentBallImg.transform.DOKill();
|
|
currentBallImg.transform.localScale = Vector3.one * currentBallInitialScale;
|
|
currentBallImg.transform.DOPunchScale(Vector3.one * currentBallInitialScale * 0.5f, 0.5f, 1, 1f).OnComplete(delegate
|
|
{
|
|
currentBallImg.transform.localScale = Vector3.one * currentBallInitialScale;
|
|
});
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
GameManager.OnGameComplete += OnGameComplete;
|
|
GameManager.OnLineDrawingStarts += OnLineDrawingStarts;
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
GameManager.OnGameComplete -= OnGameComplete;
|
|
GameManager.OnLineDrawingStarts -= OnLineDrawingStarts;
|
|
}
|
|
|
|
private void OnGameComplete()
|
|
{
|
|
isGameCompleted = true;
|
|
if (reloadBtnRect != null)
|
|
{
|
|
reloadBtnRect.gameObject.SetActive(false);
|
|
}
|
|
}
|
|
|
|
private void OnLineDrawingStarts()
|
|
{
|
|
if (reloadBtnRect == null)
|
|
{
|
|
return;
|
|
}
|
|
reloadBtnRect.anchoredPosition = _reloadBtnHidePos;
|
|
reloadBtnRect.gameObject.SetActive(true);
|
|
reloadBtnRect.DOAnchorPos(_reloadBtnShowPos, 0.7f).SetEase(Ease.OutBack);
|
|
}
|
|
|
|
public void OpenSettingsPanel()
|
|
{
|
|
if (isGameCompleted)
|
|
{
|
|
return;
|
|
}
|
|
isSettingsOpen = !isSettingsOpen;
|
|
SettingPanelAnim.enabled = true;
|
|
if (isSettingsOpen)
|
|
{
|
|
SettingPanelAnim.SetBool("SettingIn", true);
|
|
SettingPanelAnim.SetBool("SettingOut", false);
|
|
}
|
|
else
|
|
{
|
|
SettingPanelAnim.SetBool("SettingIn", false);
|
|
SettingPanelAnim.SetBool("SettingOut", true);
|
|
}
|
|
LevelAnalytics.Send(new string[] { "SettingPanel" });
|
|
}
|
|
|
|
public void ShowRatePopUp()
|
|
{
|
|
AppConstants.IsAnyPanelOpen = true;
|
|
ratePanel.gameObject.SetActive(true);
|
|
}
|
|
|
|
public void CloseRatePanel()
|
|
{
|
|
AppConstants.IsAnyPanelOpen = false;
|
|
ratePanel.gameObject.SetActive(false);
|
|
}
|
|
|
|
public void OpenShopPanel()
|
|
{
|
|
if (isGameCompleted)
|
|
{
|
|
return;
|
|
}
|
|
shopPanel.gameObject.SetActive(true);
|
|
}
|
|
|
|
public void ShowRemoveAdPanelAtLevel()
|
|
{
|
|
if (PersistableData.Instance != null && PersistableData.Instance.itemsData.isRemoveAdPurchased)
|
|
{
|
|
return;
|
|
}
|
|
AppConstants.removeAdsPanelFromLevelFlow = false;
|
|
AppConstants.IsAnyPanelOpen = true;
|
|
removeAdPanel.gameObject.SetActive(true);
|
|
LevelAnalytics.Send(new string[] { "RemoveAds_LevelShow" });
|
|
}
|
|
|
|
public void ShowRemoveAdPanel()
|
|
{
|
|
SettingPanelAnim.SetBool("SettingIn", false);
|
|
SettingPanelAnim.SetBool("SettingOut", true);
|
|
isSettingsOpen = false;
|
|
AppConstants.IsAnyPanelOpen = true;
|
|
removeAdPanel.gameObject.SetActive(true);
|
|
if (PersistableData.Instance.itemsData.isRemoveAdPurchased)
|
|
{
|
|
return;
|
|
}
|
|
LevelAnalytics.Send(new string[] { "RemoveAds_Screen" });
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (Input.GetKeyDown(KeyCode.Escape))
|
|
{
|
|
ShowExitPanel();
|
|
}
|
|
}
|
|
|
|
private void ShowExitPanel()
|
|
{
|
|
SettingPanelAnim.SetBool("SettingIn", false);
|
|
SettingPanelAnim.SetBool("SettingOut", true);
|
|
AppConstants.IsAnyPanelOpen = true;
|
|
exitPanel.gameObject.SetActive(true);
|
|
}
|
|
|
|
public void CloseExitPanel()
|
|
{
|
|
AppConstants.IsAnyPanelOpen = false;
|
|
exitPanel.gameObject.SetActive(false);
|
|
}
|
|
|
|
public void CloseShopPanel()
|
|
{
|
|
shopPanel.gameObject.GetComponent<DialogueBaseClass>().ClosePanel();
|
|
}
|
|
|
|
public void OpenNotEnoughCoinsPanel()
|
|
{
|
|
AppConstants.IsAnyPanelOpen = true;
|
|
getCoinsPanel.gameObject.SetActive(true);
|
|
}
|
|
|
|
public void CloseNotEnoughCoinsPanel()
|
|
{
|
|
AppConstants.IsAnyPanelOpen = false;
|
|
getCoinsPanel.gameObject.SetActive(false);
|
|
}
|
|
|
|
public void ShowNoInternetPanel()
|
|
{
|
|
AppConstants.IsAnyPanelOpen = true;
|
|
noInternetAvailable.gameObject.SetActive(true);
|
|
}
|
|
|
|
public void CloseNoInternetPanel()
|
|
{
|
|
AppConstants.IsAnyPanelOpen = false;
|
|
noInternetAvailable.gameObject.SetActive(false);
|
|
}
|
|
|
|
public void ShowNewSkinPopUp()
|
|
{
|
|
newSkinUnlockPanel.gameObject.SetActive(true);
|
|
}
|
|
|
|
public void ShowFailButtons(bool isAutoHintLevel)
|
|
{
|
|
if (topUISkipLevelBtn != null)
|
|
{
|
|
topUISkipLevelBtn.SetActive(true);
|
|
}
|
|
}
|
|
|
|
public void ShowRemoveAdsBtn()
|
|
{
|
|
if (!AdConstants.AdsRemoved && RemoveAdsBtn != null)
|
|
{
|
|
RemoveAdsBtn.SetActive(true);
|
|
}
|
|
}
|
|
|
|
public void ShowPostAdIcons()
|
|
{
|
|
if (!AdConstants.AdsRemoved && RemoveAdsBtn != null)
|
|
{
|
|
RemoveAdsBtn.SetActive(true);
|
|
}
|
|
for (int i = 0; i < iconsUnlockedAfterAd.Length; i++)
|
|
{
|
|
if (iconsUnlockedAfterAd[i] != null)
|
|
{
|
|
iconsUnlockedAfterAd[i].SetActive(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void ShowRemoveAdPanelFromFlow()
|
|
{
|
|
AppConstants.IsAnyPanelOpen = true;
|
|
removeAdPanel.gameObject.SetActive(true);
|
|
LevelAnalytics.Send(new string[] { "RemoveAds_FirstTime" });
|
|
}
|
|
|
|
public void CloseRemoveAdPanel_NoThanks()
|
|
{
|
|
if (AppConstants.removeAdsPanelFromLevelFlow)
|
|
{
|
|
AppConstants.removeAdsPanelFromLevelFlow = false;
|
|
PlayerPrefs.SetInt("RemoveAdsPanelShown", 1);
|
|
PlayerPrefs.Save();
|
|
LevelAnalytics.Send(new string[] { "RemoveAds_NoThanks" });
|
|
|
|
AppConstants.IsAnyPanelOpen = false;
|
|
removeAdPanel.gameObject.SetActive(false);
|
|
ShowPostAdIcons();
|
|
}
|
|
else
|
|
{
|
|
AppConstants.IsAnyPanelOpen = false;
|
|
removeAdPanel.gameObject.SetActive(false);
|
|
}
|
|
}
|
|
|
|
public void CloseRemoveAdPanel_IAPSuccess()
|
|
{
|
|
AppConstants.removeAdsPanelFromLevelFlow = false;
|
|
PlayerPrefs.SetInt("RemoveAdsPanelShown", 1);
|
|
PlayerPrefs.Save();
|
|
ShowPostAdIcons();
|
|
}
|
|
|
|
public void OpenHintsPanel()
|
|
{
|
|
AppConstants.IsAnyPanelOpen = true;
|
|
hintsPanel.gameObject.SetActive(true);
|
|
}
|
|
|
|
public void CloseHintsPanel()
|
|
{
|
|
AppConstants.IsAnyPanelOpen = false;
|
|
hintsPanel.gameObject.SetActive(false);
|
|
}
|
|
}
|