using UnityEngine; using UnityEngine.UI; using System.Collections; public class InviteBarItem : ItemRenderer { public InviteBar inviteBar; public Text nickTxt; public Text stateTxt; public Text btnLabel; public Image btnImage; public Button btn; void Awake() { btnLabel.text = Language.GetStr ("Invite", "invite"); } public override object data { get { return base.data; } set { InviteData inviteData = null; if(base.data != null) { inviteData = base.data as InviteData; inviteData.ActionChanged.RemoveListener (OnActionChanged); inviteData.StateChanged.RemoveListener (OnStateChanged); } base.data = value; if(value != null) { inviteData = value as InviteData; inviteData.ActionChanged.AddListener (OnActionChanged); inviteData.StateChanged.AddListener (OnStateChanged); } OnStateChanged (); OnActionChanged (); } } void FixedUpdate() { if (data == null) return; InviteData inviteData = data as InviteData; if(inviteData.action == InviteData.Action.Waiting) { float cd = InviteData.INVITE_HOLD_ON - (GameTime.time - inviteData.lastActionTime); cd = Mathf.Max (0, cd); if (cd == 0) inviteData.action = InviteData.Action.Invite; else btnLabel.text = Language.GetStr ("Invite", "action" + inviteData.action.GetHashCode ()).Replace("%SEC%", Mathf.CeilToInt (cd).ToString()); } else if(inviteData.action == InviteData.Action.Refuse) { float cd = InviteData.INVITE_REFUSE_HOLD_ON - (GameTime.time - inviteData.lastActionTime); cd = Mathf.Max (0, cd); if (cd == 0) inviteData.action = InviteData.Action.Invite; else btnLabel.text = Language.GetStr ("Invite", "action" + inviteData.action.GetHashCode ()).Replace("%SEC%", Mathf.CeilToInt (cd).ToString()); } } public void OnClick() { if(data != null) { InviteData inviteData = data as InviteData; if (inviteData.action == InviteData.Action.Invite) { inviteData.action = InviteData.Action.Waiting; inviteBar.Invite (inviteData.id); } } } private void OnActionChanged() { if(data != null) { InviteData inviteData = data as InviteData; btnLabel.text = Language.GetStr ("Invite", "action"+inviteData.action.GetHashCode()); switch(inviteData.action) { case InviteData.Action.Invite: btnImage.enabled = true; break; default: btnImage.enabled = false; break; } } } private void OnStateChanged() { if (data != null) { InviteData inviteData = data as InviteData; int stateCode = inviteData.state.GetHashCode (); stateTxt.text = Language.GetStr ("Invite", "state" + stateCode); nickTxt.text = Language.GetStr("Invite", "nameState" + stateCode).Replace("%NICK%", UserCache.GetNick (inviteData.id)); if(inviteData.id != Session.myUserId) btn.gameObject.SetActive (inviteData.state == InviteData.State.Online); else btn.gameObject.SetActive (false); } else { stateTxt.text = ""; } } }