InviteBarItem.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using System.Collections;
  4. public class InviteBarItem : ItemRenderer
  5. {
  6. public InviteBar inviteBar;
  7. public Text nickTxt;
  8. public Text stateTxt;
  9. public Text btnLabel;
  10. public Image btnImage;
  11. public Button btn;
  12. void Awake()
  13. {
  14. btnLabel.text = Language.GetStr ("Invite", "invite");
  15. }
  16. public override object data {
  17. get {
  18. return base.data;
  19. }
  20. set {
  21. InviteData inviteData = null;
  22. if(base.data != null)
  23. {
  24. inviteData = base.data as InviteData;
  25. inviteData.ActionChanged.RemoveListener (OnActionChanged);
  26. inviteData.StateChanged.RemoveListener (OnStateChanged);
  27. }
  28. base.data = value;
  29. if(value != null)
  30. {
  31. inviteData = value as InviteData;
  32. inviteData.ActionChanged.AddListener (OnActionChanged);
  33. inviteData.StateChanged.AddListener (OnStateChanged);
  34. }
  35. OnStateChanged ();
  36. OnActionChanged ();
  37. }
  38. }
  39. void FixedUpdate()
  40. {
  41. if (data == null)
  42. return;
  43. InviteData inviteData = data as InviteData;
  44. if(inviteData.action == InviteData.Action.Waiting)
  45. {
  46. float cd = InviteData.INVITE_HOLD_ON - (GameTime.time - inviteData.lastActionTime);
  47. cd = Mathf.Max (0, cd);
  48. if (cd == 0)
  49. inviteData.action = InviteData.Action.Invite;
  50. else
  51. btnLabel.text = Language.GetStr ("Invite", "action" + inviteData.action.GetHashCode ()).Replace("%SEC%", Mathf.CeilToInt (cd).ToString());
  52. }
  53. else if(inviteData.action == InviteData.Action.Refuse)
  54. {
  55. float cd = InviteData.INVITE_REFUSE_HOLD_ON - (GameTime.time - inviteData.lastActionTime);
  56. cd = Mathf.Max (0, cd);
  57. if (cd == 0)
  58. inviteData.action = InviteData.Action.Invite;
  59. else
  60. btnLabel.text = Language.GetStr ("Invite", "action" + inviteData.action.GetHashCode ()).Replace("%SEC%", Mathf.CeilToInt (cd).ToString());
  61. }
  62. }
  63. public void OnClick()
  64. {
  65. if(data != null)
  66. {
  67. InviteData inviteData = data as InviteData;
  68. if (inviteData.action == InviteData.Action.Invite) {
  69. inviteData.action = InviteData.Action.Waiting;
  70. inviteBar.Invite (inviteData.id);
  71. }
  72. }
  73. }
  74. private void OnActionChanged()
  75. {
  76. if(data != null)
  77. {
  78. InviteData inviteData = data as InviteData;
  79. btnLabel.text = Language.GetStr ("Invite", "action"+inviteData.action.GetHashCode());
  80. switch(inviteData.action)
  81. {
  82. case InviteData.Action.Invite:
  83. btnImage.enabled = true;
  84. break;
  85. default:
  86. btnImage.enabled = false;
  87. break;
  88. }
  89. }
  90. }
  91. private void OnStateChanged()
  92. {
  93. if (data != null) {
  94. InviteData inviteData = data as InviteData;
  95. int stateCode = inviteData.state.GetHashCode ();
  96. stateTxt.text = Language.GetStr ("Invite", "state" + stateCode);
  97. nickTxt.text = Language.GetStr("Invite", "nameState" + stateCode).Replace("%NICK%", UserCache.GetNick (inviteData.id));
  98. if(inviteData.id != Session.myUserId)
  99. btn.gameObject.SetActive (inviteData.state == InviteData.State.Online);
  100. else
  101. btn.gameObject.SetActive (false);
  102. } else {
  103. stateTxt.text = "";
  104. }
  105. }
  106. }