ModalPanel.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. public void NewChoice(ModalPanelDetails details) {
  43. modalPanelObject.SetActive(true);
  44. this.iconImage.gameObject.SetActive(false);
  45. button1.gameObject.SetActive(false);
  46. button2.gameObject.SetActive(false);
  47. button3.gameObject.SetActive(false);
  48. this.question.text = details.question;
  49. if (details.iconImage) {
  50. this.iconImage.sprite = details.iconImage;
  51. this.iconImage.gameObject.SetActive(true);
  52. }
  53. button1.onClick.RemoveAllListeners();
  54. button1.onClick.AddListener(details.button1Details.action);
  55. button1.onClick.AddListener(ClosePanel);
  56. button1Text.text = details.button1Details.buttonTitle;
  57. button1.gameObject.SetActive(true);
  58. if (details.button2Details != null) {
  59. button2.onClick.RemoveAllListeners();
  60. button2.onClick.AddListener(details.button2Details.action);
  61. button2.onClick.AddListener(ClosePanel);
  62. button2Text.text = details.button2Details.buttonTitle;
  63. button2.gameObject.SetActive(true);
  64. }
  65. if (details.button3Details != null) {
  66. button3.onClick.RemoveAllListeners();
  67. button3.onClick.AddListener(details.button3Details.action);
  68. button3.onClick.AddListener(ClosePanel);
  69. button3Text.text = details.button3Details.buttonTitle;
  70. button3.gameObject.SetActive(true);
  71. }
  72. }
  73. void ClosePanel() {
  74. modalPanelObject.SetActive(false);
  75. }
  76. }