//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, December 11, 2018 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System.Linq; namespace vnxbqy.UI { //赛季奖励的奖励条 public class SeasonRewardCell : MonoBehaviour { [SerializeField] Text m_Text_Ranking; [SerializeField] Transform m_Itemlist; [SerializeField] Button m_ReceiveBtn; [SerializeField] GameObject m_IsDrawImage;//已领 [SerializeField] GameObject m_IsReachImage;//未达成 [SerializeField] Image m_ImageColor; [SerializeField] Image m_ImageWorld; [SerializeField] Text m_Segmenttext;//段位 CrossServerOneVsOneRewardModel m_CrossServerRewardModel; CrossServerOneVsOneRewardModel crossServerRewardModel { get { return m_CrossServerRewardModel ?? (m_CrossServerRewardModel = ModelCenter.Instance.GetModel()); } } public Button ReceiveBtn { get { return m_ReceiveBtn; } set { m_ReceiveBtn = value; } } public void ScrollerDataTypAndId(ScrollerDataType type, int id) { switch (type) { case ScrollerDataType.Header: SetReceiveH(id); break; case ScrollerDataType.Normal: SetReceiveN(id); break; } } private void SetReceiveH(int id) { if (!crossServerRewardModel.SeasonRewardDic.AwardDic.ContainsKey(id)) { return; } m_Text_Ranking.SetActive(true); m_Segmenttext.SetActive(false); m_ImageColor.SetActive(true); m_ImageWorld.SetActive(true); var keyList = crossServerRewardModel.SeasonRewardDic.AwardDic.Keys.ToList(); int Index = keyList.IndexOf(id); if (Index == 0) { m_Text_Ranking.text = Language.Get("CrossServer_Z5", 1, id); } else { int Number = keyList[(Index - 1)]; m_Text_Ranking.text = Language.Get("CrossServer_Z5", (Number + 1), id); } switch (Index) { case 0: m_ImageColor.SetSprite("CrossServer_1"); m_ImageWorld.SetSprite("CrossServer_6"); break; case 1: m_ImageColor.SetSprite("CrossServer_2"); m_ImageWorld.SetSprite("CrossServer_7"); break; case 2: m_ImageColor.SetSprite("CrossServer_3"); m_ImageWorld.SetSprite("CrossServer_8"); break; } if (CrossServerOneVsOnePKSeason.Instance.SeasonState != 2) { m_ReceiveBtn.SetActive(false); m_IsDrawImage.SetActive(false); m_IsReachImage.SetActive(false); } else { if (IsOnTheList()) { if (ListIndex(crossServerRewardModel.MyRank) == Index) { bool isbool = crossServerRewardModel.IsAwardState(CrossRealmPKAwardStateEnum.SeasonAwardState, -1); if (isbool) { m_IsReachImage.SetActive(false); m_ReceiveBtn.SetActive(false); m_IsDrawImage.SetActive(true); } else { m_ReceiveBtn.SetActive(true); m_IsReachImage.SetActive(false); m_IsDrawImage.SetActive(false); m_ReceiveBtn.SetListener(() => { crossServerRewardModel.CrossRealmPKGetAward(CrossRealmPKAwardStateEnum.SeasonAwardState, 0); }); } } else { m_IsReachImage.SetActive(true); m_ReceiveBtn.SetActive(false); m_IsDrawImage.SetActive(false); } } else { m_IsReachImage.SetActive(true); m_ReceiveBtn.SetActive(false); m_IsDrawImage.SetActive(false); } } ReceiveItemH(id); } private void ReceiveItemH(int Id) { var List = crossServerRewardModel.SeasonRewardDic.GetAwardItem(Id); for (int i = 0; i < m_Itemlist.childCount; i++) { GameObject ObjChild = m_Itemlist.GetChild(i).gameObject; KingRewardItem kingRewardItem = ObjChild.GetComponent(); if (i < List.Count) { ObjChild.SetActive(true); var config = KingTreasureItemConfig.Get(List[i].id); var Itemconfig = ItemConfig.Get(List[i].id); if (config != null) { kingRewardItem.KingText.SetActive(true); kingRewardItem.KingText.text = config.qualityName; if (Itemconfig != null) { kingRewardItem.KingText.color = UIHelper.GetUIColor(Itemconfig.ItemColor,false); } } else { kingRewardItem.KingText.SetActive(false); } ItemCell _ItemCell = kingRewardItem.ItemCell; UIEffect ui = kingRewardItem.ItemCell.GetComponent(); if (Itemconfig.ItemColor >= 5) { ui.Play(); } else { ui.Stop(); } ItemCellModel cellModel = new ItemCellModel(List[i].id, true, (ulong)List[i].count); _ItemCell.Init(cellModel); int type = i; _ItemCell.button.SetListener(() => { ItemTipUtility.Show(List[type].id); }); } else { ObjChild.SetActive(false); } } } private void SetReceiveN(int Id) { if (!crossServerRewardModel.SeasonRewardConfigDic.ContainsKey(Id)) { return; } m_Text_Ranking.SetActive(false); m_Segmenttext.SetActive(true); m_ImageColor.SetActive(true); m_ImageColor.SetSprite("CrossServer_4"); m_ImageWorld.SetActive(false); var config = CrossServerArenaConfig.Get(Id); if (config != null) { m_Segmenttext.text = config.Name; // m_Segmenttext.color = UIHelper.GetDanLVColor(config.DanLV, false); } if (CrossServerOneVsOnePKSeason.Instance.SeasonState != 2) { m_ReceiveBtn.SetActive(false); m_IsDrawImage.SetActive(false); m_IsReachImage.SetActive(false); } else { if (!IsOnTheList()) { if (CrossServerOneVsOnePlayerInfo.Instance.DanLV == Id) { bool isbool = crossServerRewardModel.IsAwardState(CrossRealmPKAwardStateEnum.SeasonAwardState, -1); if (isbool) { m_IsReachImage.SetActive(false); m_ReceiveBtn.SetActive(false); m_IsDrawImage.SetActive(true); } else { m_ReceiveBtn.SetActive(true); m_IsReachImage.SetActive(false); m_IsDrawImage.SetActive(false); m_ReceiveBtn.SetListener(()=> { crossServerRewardModel.CrossRealmPKGetAward(CrossRealmPKAwardStateEnum.SeasonAwardState,0); }); } } else { m_IsReachImage.SetActive(true); m_ReceiveBtn.SetActive(false); m_IsDrawImage.SetActive(false); } } else { m_IsReachImage.SetActive(true); m_ReceiveBtn.SetActive(false); m_IsDrawImage.SetActive(false); } } ReceiveItemN(Id); } private void ReceiveItemN(int Id) { var List = crossServerRewardModel.SeasonRewardConfigDic[Id]; for (int i = 0; i < m_Itemlist.childCount; i++) { GameObject ObjChild = m_Itemlist.GetChild(i).gameObject; KingRewardItem kingRewardItem = ObjChild.GetComponent(); if (i < List.Count) { ObjChild.SetActive(true); var config = KingTreasureItemConfig.Get(List[i].ItemId); var Itemconfig = ItemConfig.Get(List[i].ItemId); if (config != null) { kingRewardItem.KingText.SetActive(true); kingRewardItem.KingText.text = config.qualityName; if (Itemconfig != null) { kingRewardItem.KingText.color = UIHelper.GetUIColor(Itemconfig.ItemColor, false); } } else { kingRewardItem.KingText.SetActive(false); } ItemCell _ItemCell = kingRewardItem.ItemCell; UIEffect ui = kingRewardItem.ItemCell.GetComponent(); if (Itemconfig.ItemColor >= 5) { ui.Play(); } else { ui.Stop(); } ItemCellModel cellModel = new ItemCellModel(List[i].ItemId, true, (ulong)List[i].ItemNumber); _ItemCell.Init(cellModel); int type = i; _ItemCell.button.SetListener(() => { ItemTipUtility.Show(List[type].ItemId); }); } else { ObjChild.SetActive(false); } } } private bool IsOnTheList() { bool Isbool = false; if (CrossServerOneVsOnePlayerInfo.Instance.Score > 0) { int Number = 0; var keyList = crossServerRewardModel.SeasonRewardDic.AwardDic.Keys.ToList(); for (int i = 0; i < keyList.Count; i++) { Number = keyList[i]; } if (crossServerRewardModel.MyRank > -1 && crossServerRewardModel.MyRank < Number) { Isbool = true; } } return Isbool; } private int ListIndex(int myRank) { int type = 0; var keyList = crossServerRewardModel.SeasonRewardDic.AwardDic.Keys.ToList(); for (int i = 0; i < keyList.Count; i++) { if (myRank < keyList[i]) { type= i; return type; } } return type; } } }