/Assets/Script/Game/Controller/PopupController.cs

https://bitbucket.org/norris_abu/wanttodoodle · C# · 114 lines · 92 code · 21 blank · 1 comment · 12 complexity · dd173d1b3e5c382c75615e40fcf679ae MD5 · raw file

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using UnityEngine.Events;
  6. using DG.Tweening;
  7. using TMPro;
  8. public class PopupController : MonoBehaviour
  9. {
  10. public RectTransform rectPopupPanel;
  11. public Button okButton;
  12. public Button cancelButton;
  13. public TextMeshProUGUI txtTitle;
  14. public TextMeshProUGUI txtDescription;
  15. public CanvasGroup canvasGroup;
  16. public static void ShowPopup(string title, string description,
  17. string ok, string cancel, bool showOk, bool showCancel, bool showClose,
  18. UnityAction OnClickOk = null, UnityAction OnClickCancel = null)
  19. {
  20. PopupController pc = GameManager.Instance.popupController;
  21. pc.ShowPopup();
  22. pc.txtTitle.text = string.Format("{0}", title);
  23. pc.txtDescription.text = string.Format("{0}", description);
  24. pc.okButton.gameObject.SetActive(showOk);
  25. pc.cancelButton.gameObject.SetActive(showCancel);
  26. if (showOk && showCancel)
  27. {
  28. pc.okButton.GetComponent<RectTransform>().
  29. anchoredPosition = new Vector2(-110, -130);
  30. pc.cancelButton.GetComponent<RectTransform>().
  31. anchoredPosition = new Vector2(-110, -130);
  32. }
  33. else if(showOk && !showCancel)
  34. {
  35. pc.okButton.GetComponent<RectTransform>().
  36. anchoredPosition = new Vector2(0, -130);
  37. }
  38. else if (!showOk && showCancel)
  39. {
  40. pc.cancelButton.GetComponent<RectTransform>().
  41. anchoredPosition = new Vector2(0, -130);
  42. }
  43. pc.okButton.onClick.AddListener(() =>
  44. {
  45. if (OnClickOk != null)
  46. OnClickOk();
  47. pc.HidePopup();
  48. AudioManager.Instance.play_sfx("Audio/SFX/Click1", Vector3.zero);
  49. });
  50. pc.cancelButton.onClick.AddListener(() =>
  51. {
  52. if (OnClickCancel != null)
  53. OnClickCancel();
  54. pc.HidePopup();
  55. AudioManager.Instance.play_sfx("Audio/SFX/Click1", Vector3.zero);
  56. });
  57. }
  58. public static void ShowCommonPopup(string title, string description,
  59. UnityAction OnClickOk = null, UnityAction OnClickCancel = null)
  60. {
  61. ShowPopup(title, description, "OK", "CANCEL", true, true, true, OnClickOk, OnClickCancel);
  62. }
  63. public static void ShowConfirmPopup(string title, string description,
  64. UnityAction OnClickOk = null)
  65. {
  66. ShowPopup(title, description, "OK", "CANCEL", true, false, false, OnClickOk);
  67. }
  68. public void ShowPopup()
  69. {
  70. float showTime = 0.1f;
  71. canvasGroup.DOFade(1f, showTime)
  72. .OnComplete(() =>
  73. {
  74. canvasGroup.blocksRaycasts = true;
  75. canvasGroup.interactable = true;
  76. rectPopupPanel.DOScale(1, showTime);
  77. AudioManager.Instance.play_sfx("Audio/SFX/Popup", Vector3.zero);
  78. }).SetUpdate(true);
  79. }
  80. public void HidePopup()
  81. {
  82. //AudioManager.Instance.play_sfx("Audio/SFX/Close", Vector3.zero);
  83. float showTime = 0.1f;
  84. rectPopupPanel.DOScale(0, showTime).OnComplete(() =>
  85. {
  86. canvasGroup.blocksRaycasts = false;
  87. canvasGroup.interactable = false;
  88. canvasGroup.DOFade(0f, showTime);
  89. }).SetUpdate(true);
  90. cancelButton.onClick.RemoveAllListeners();
  91. okButton.onClick.RemoveAllListeners();
  92. }
  93. }