using System.Collections; using UnityEngine; using UI.RoleInfo; using FairyGUI; using System.Collections.Generic; using System.Threading.Tasks; namespace GFGGame { public class BadgeChooseView : BaseWindow { private UI_BadgeChooseUI _ui; private List _badgeList; private int selectedID; public override void Dispose() { if (_ui != null) { _ui.Dispose(); } _ui = null; base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_RoleInfoUI.PACKAGE_NAME; _ui = UI_BadgeChooseUI.Create(); this.viewCom = _ui.target; isfullScreen = true; isReturnView = true; _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("bg_hzzs"); _ui.m_btnback.onClick.Add(Hide); _ui.m_list.itemRenderer = OnRenderItem; _badgeList = ItemCfgArray.Instance.GetCfgsByitemType(ConstItemType.BADGE); } protected override void OnShown() { base.OnShown(); selectedID = (viewData == null ? -1 : (int)viewData); _ui.m_list.numItems = _badgeList.Count; _ui.m_list.scrollPane.ScrollTop(); } protected override void OnHide() { base.OnHide(); } protected override void AddEventListener() { base.AddEventListener(); } protected override void RemoveEventListener() { base.RemoveEventListener(); } private void OnRenderItem(int index, GObject gObject) { gObject.data = _badgeList[index].id; UI_BadgeItem badgeItem = UI_BadgeItem.Proxy(gObject); badgeItem.m_name.text = _badgeList[index].name; badgeItem.m_iconImg.url = ResPathUtil.GetIconPath(_badgeList[index]); //badgeItem.m_iconImg.url = "ui://RoleInfo/linshj1_l"; if (RoleDataManager.HaveBadge(_badgeList[index].id)) { // 显示 卸下 if (_badgeList[index].id == selectedID) { badgeItem.m_type.SetSelectedIndex(0); gObject.onClick.Set(RemoveBadge); } // 显示 已选中 else if(RoleDataManager.badgeDatas.Contains(_badgeList[index].id)) { badgeItem.m_type.SetSelectedIndex(1); gObject.onClick.Set(()=> { PromptController.Instance.ShowFloatTextPrompt("该徽章已在展示中"); }); } else { badgeItem.m_type.SetSelectedIndex(2); gObject.onClick.Set(SetBadge); } } else { badgeItem.m_type.SetSelectedIndex(3); gObject.onClick.Set(OnClickUnHaveItem); } UI_BadgeItem.ProxyEnd(); } private void RemoveBadge() { RoleDataManager.badgeDatas.Remove(selectedID); UpdateBadgeList(); } private void SetBadge(EventContext eventContext) { int id = (int)(eventContext.sender as GObject).data; // 点击空位进来的 if(selectedID == -1) { RoleDataManager.badgeDatas.Add(id); } else { int index = RoleDataManager.badgeDatas.FindIndex(x => x.Equals(selectedID)); RoleDataManager.badgeDatas[index] = id; } UpdateBadgeList(); } private async Task UpdateBadgeList() { await RoleInfoSProxy.ReqSaveBadgeList(RoleDataManager.badgeDatas); Hide(); } private void OnClickUnHaveItem(EventContext eventContext) { int id = (int)(eventContext.sender as GObject).data; object[] goBackDatas = ViewManager.GetGoBackDatas(typeof(BadgeChooseView).Name); object[] sourceDatas = new object[] { id, goBackDatas, 1 }; GoodsItemTipsController.ShowItemTips(id, sourceDatas, false); } } }