DialogueOptionWidget.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System;
  2. using System.Linq;
  3. using Core.Language;
  4. using Excel2Json;
  5. using Fort23.UTool;
  6. using UnityEngine;
  7. using UnityEngine.UI;
  8. namespace Fort23.Mono
  9. {
  10. [UIBinding(prefab = "DialogueOptionWidget")]
  11. public partial class DialogueOptionWidget : UIComponent
  12. {
  13. public EventConditionConfig eventConditionConfig;
  14. private Action<DialogueOptionWidget> callback;
  15. public int type;
  16. private void Init()
  17. {
  18. }
  19. public override void AddEvent()
  20. {
  21. }
  22. public override void DelEvent()
  23. {
  24. }
  25. public override void AddButtonEvent()
  26. {
  27. OptionWidget.onClick.AddListener(() => { callback?.Invoke(this); });
  28. }
  29. public void CustomInit(int id, int mainOpid, Action<DialogueOptionWidget> callback)
  30. {
  31. type = 1;
  32. eventConditionConfig = ConfigComponent.Instance.Get<EventConditionConfig>(id);
  33. var mainEventConditionConfig = ConfigComponent.Instance.Get<EventConditionConfig>(mainOpid);
  34. int index = mainEventConditionConfig.optionPara1.ToList().IndexOf(eventConditionConfig.ID);
  35. Text_desc.text = LanguageManager.Instance.Text(mainEventConditionConfig.optionPara2[index]);
  36. this.callback = callback;
  37. if (!EventSystemManager.Instance.CheckCondition(eventConditionConfig.ConditionType, eventConditionConfig.ConditionPara))
  38. {
  39. transform.Gray();
  40. }
  41. else
  42. {
  43. transform.RecoverColor();
  44. }
  45. LayoutRebuilder.ForceRebuildLayoutImmediate(Text_desc.GetComponent<RectTransform>());
  46. LayoutRebuilder.ForceRebuildLayoutImmediate(transform);
  47. }
  48. public void CustomInit(Action<DialogueOptionWidget> callback)
  49. {
  50. type = 2;
  51. Text_desc.text = "取消事件";
  52. this.callback = callback;
  53. transform.RecoverColor();
  54. LayoutRebuilder.ForceRebuildLayoutImmediate(Text_desc.GetComponent<RectTransform>());
  55. LayoutRebuilder.ForceRebuildLayoutImmediate(transform);
  56. }
  57. }
  58. }