ModalPanel.cs 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using UnityEngine.Events;
  4. using System.Collections;
  5. public class EventButtonDetails {
  6. public string buttonTitle;
  7. public Sprite buttonBackground; // Not implemented
  8. public UnityAction action;
  9. }
  10. public class EventSliderDetails {
  11. }
  12. public class ModalPanelDetails {
  13. public string title; // Not implemented
  14. public string question;
  15. public Sprite iconImage;
  16. public Sprite panelBackgroundImage; // Not implemented
  17. public EventButtonDetails button1Details;
  18. public EventButtonDetails button2Details;
  19. public EventButtonDetails button3Details;
  20. public EventButtonDetails button4Details;
  21. public EventSliderDetails sliderDetails;
  22. }
  23. public class ModalPanel : MonoBehaviour {
  24. public Text question;
  25. public Image iconImage;
  26. public Button button1;
  27. public Button button2;
  28. public Button button3;
  29. public Text button1Text;
  30. public Text button2Text;
  31. public Text button3Text;
  32. public GameObject modalPanelObject;
  33. private static ModalPanel modalPanel;
  34. public static ModalPanel Instance() {
  35. if (!modalPanel) {
  36. modalPanel = FindObjectOfType(typeof(ModalPanel)) as ModalPanel;
  37. if (!modalPanel)
  38. Debug.LogError("There needs to be one active ModalPanel script on a GameObject in your scene.");
  39. }
  40. return modalPanel;
  41. }
  42. // // Announcement with Image: A string, a Sprite and Cancel event;
  43. // public void Choice (string question, UnityAction cancelEvent, Sprite iconImage = null) {
  44. // modalPanelObject.SetActive (true);
  45. //
  46. // button3.onClick.RemoveAllListeners();
  47. // button3.onClick.AddListener (cancelEvent);
  48. // button3.onClick.AddListener (ClosePanel);
  49. //
  50. // this.question.text = question;
  51. // if (iconImage)
  52. // this.iconImage.sprite = iconImage;
  53. //
  54. // if (iconImage)
  55. // this.iconImage.gameObject.SetActive(true);
  56. // else
  57. // this.iconImage.gameObject.SetActive(false);
  58. // button1.gameObject.SetActive(false);
  59. // button2.gameObject.SetActive(false);
  60. // button3.gameObject.SetActive(true);
  61. // }
  62. public void NewChoice(ModalPanelDetails details) {
  63. modalPanelObject.SetActive(true);
  64. this.iconImage.gameObject.SetActive(false);
  65. button1.gameObject.SetActive(false);
  66. button2.gameObject.SetActive(false);
  67. button3.gameObject.SetActive(false);
  68. this.question.text = details.question;
  69. if (details.iconImage) {
  70. this.iconImage.sprite = details.iconImage;
  71. this.iconImage.gameObject.SetActive(true);
  72. }
  73. button1.onClick.RemoveAllListeners();
  74. button1.onClick.AddListener(details.button1Details.action);
  75. button1.onClick.AddListener(ClosePanel);
  76. button1Text.text = details.button1Details.buttonTitle;
  77. button1.gameObject.SetActive(true);
  78. if (details.button2Details != null) {
  79. button2.onClick.RemoveAllListeners();
  80. button2.onClick.AddListener(details.button2Details.action);
  81. button2.onClick.AddListener(ClosePanel);
  82. button2Text.text = details.button2Details.buttonTitle;
  83. button2.gameObject.SetActive(true);
  84. }
  85. if (details.button3Details != null) {
  86. button3.onClick.RemoveAllListeners();
  87. button3.onClick.AddListener(details.button3Details.action);
  88. button3.onClick.AddListener(ClosePanel);
  89. button3Text.text = details.button3Details.buttonTitle;
  90. button3.gameObject.SetActive(true);
  91. }
  92. }
  93. // // Yes/No: A string, a Yes event, a No event (No Cancel Button);
  94. // public void Choice (string question, UnityAction yesEvent, UnityAction noEvent) {
  95. // modalPanelObject.SetActive (true);
  96. //
  97. // button1.onClick.RemoveAllListeners();
  98. // button1.onClick.AddListener (yesEvent);
  99. // button1.onClick.AddListener (ClosePanel);
  100. //
  101. // button2.onClick.RemoveAllListeners();
  102. // button2.onClick.AddListener (noEvent);
  103. // button2.onClick.AddListener (ClosePanel);
  104. //
  105. // this.question.text = question;
  106. //
  107. // this.iconImage.gameObject.SetActive(false);
  108. // button1.gameObject.SetActive(true);
  109. // button2.gameObject.SetActive(true);
  110. // button3.gameObject.SetActive(false);
  111. // }
  112. //
  113. // // Yes/No/Cancel: A string, a Yes event, a No event and Cancel event;
  114. // public void Choice (string question, UnityAction yesEvent, UnityAction noEvent, UnityAction cancelEvent) {
  115. // modalPanelObject.SetActive (true);
  116. //
  117. // button1.onClick.RemoveAllListeners();
  118. // button1.onClick.AddListener (yesEvent);
  119. // button1.onClick.AddListener (ClosePanel);
  120. //
  121. // button2.onClick.RemoveAllListeners();
  122. // button2.onClick.AddListener (noEvent);
  123. // button2.onClick.AddListener (ClosePanel);
  124. //
  125. // button3.onClick.RemoveAllListeners();
  126. // button3.onClick.AddListener (cancelEvent);
  127. // button3.onClick.AddListener (ClosePanel);
  128. //
  129. // this.question.text = question;
  130. //
  131. // this.iconImage.gameObject.SetActive(false);
  132. // button1.gameObject.SetActive(true);
  133. // button2.gameObject.SetActive(true);
  134. // button3.gameObject.SetActive(true);
  135. // }
  136. //
  137. // // Yes/No with Image: A string, a Sprite, a Yes event, a No event (No Cancel Button);
  138. // public void Choice (string question, Sprite iconImage, UnityAction yesEvent, UnityAction noEvent) {
  139. // modalPanelObject.SetActive (true);
  140. //
  141. // button1.onClick.RemoveAllListeners();
  142. // button1.onClick.AddListener (yesEvent);
  143. // button1.onClick.AddListener (ClosePanel);
  144. //
  145. // button2.onClick.RemoveAllListeners();
  146. // button2.onClick.AddListener (noEvent);
  147. // button2.onClick.AddListener (ClosePanel);
  148. //
  149. // this.question.text = question;
  150. // this.iconImage.sprite = iconImage;
  151. //
  152. // this.iconImage.gameObject.SetActive(true);
  153. // button1.gameObject.SetActive(true);
  154. // button2.gameObject.SetActive(true);
  155. // button3.gameObject.SetActive(false);
  156. // }
  157. //
  158. // // Yes/No/Cancel with Image: A string, a Sprite, a Yes event, a No event and Cancel event;
  159. // public void Choice (string question, Sprite iconImage, UnityAction yesEvent, UnityAction noEvent, UnityAction cancelEvent) {
  160. // modalPanelObject.SetActive (true);
  161. //
  162. // button1.onClick.RemoveAllListeners();
  163. // button1.onClick.AddListener (yesEvent);
  164. // button1.onClick.AddListener (ClosePanel);
  165. //
  166. // button2.onClick.RemoveAllListeners();
  167. // button2.onClick.AddListener (noEvent);
  168. // button2.onClick.AddListener (ClosePanel);
  169. //
  170. // button3.onClick.RemoveAllListeners();
  171. // button3.onClick.AddListener (cancelEvent);
  172. // button3.onClick.AddListener (ClosePanel);
  173. //
  174. // this.question.text = question;
  175. // this.iconImage.sprite = iconImage;
  176. //
  177. // this.iconImage.gameObject.SetActive(true);
  178. // button1.gameObject.SetActive(true);
  179. // button2.gameObject.SetActive(true);
  180. // button3.gameObject.SetActive(true);
  181. // }
  182. void ClosePanel() {
  183. modalPanelObject.SetActive(false);
  184. }
  185. }