using UI.RoleInfo; using System.Collections.Generic; using FairyGUI; using UI.CommonGame; using UnityEngine; namespace GFGGame { public class ChangeHeadView : BaseWindow { private UI_ChangeHead _ui; private List _headCfgs = new List(); private List _headBorderCfgs = new List(); private int _selectHeadId = 0; private int _selectHeadBorderId = 0; private bool showHeadBorderRedDot = false; private EffectUI _effectUI1; private EffectUI _effectUI2; public override void Dispose() { EffectUIPool.Recycle(_effectUI1); _effectUI1 = null; EffectUIPool.Recycle(_effectUI2); _effectUI2 = null; if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_ChangeHead.PACKAGE_NAME; _ui = UI_ChangeHead.Create(); this.viewCom = _ui.target; this.viewCom.Center(); this.modal = true; viewAnimationType = EnumViewAnimationType.ZOOM_CENTER; _ui.m_list.SetVirtual(); _ui.m_list.itemRenderer = RenderListItem; _ui.m_list.onClickItem.Add(OnListItemClick); _ui.m_listBorder.SetVirtual(); _ui.m_listBorder.itemRenderer = RenderListBorderItem; _ui.m_listBorder.onClickItem.Add(OnListBorderItemClick); _ui.m_c1.onChanged.Add(OnTabChange); _ui.m_btnSure.onClick.Add(OnBtnSureClick); _ui.m_btnClose.onClick.Add(Hide); AddEffect(); } protected override void OnShown() { base.OnShown(); RoleInfoManager.Instance.SortHeadDatas(); RoleInfoManager.Instance.SortHeadBorderDatas(); _headCfgs.AddRange(ItemCfgArray.Instance.GetCfgsByitemTypeAndsubType(ConstItemType.HEAD, ConstItemSubType.ROLE_HEAD)); _headCfgs = SortItemCfgDatas(_headCfgs); _headBorderCfgs.AddRange(ItemCfgArray.Instance.GetCfgsByitemTypeAndsubType(ConstItemType.HEAD, ConstItemSubType.ROLE_HEADBORDER)); _headBorderCfgs = SortItemCfgDatas(_headBorderCfgs); OnTabChange(); // _ui.m_list.selectedIndex = 0; // _ui.m_listBorder.selectedIndex = 0; // 头像框红点显示 showHeadBorderRedDot = RedDotDataManager.Instance.GetHeadBorderRed(); UpdateRedDot(); } protected override void OnHide() { base.OnHide(); _ui.m_c1.selectedIndex = 0; _headCfgs.Clear(); _headBorderCfgs.Clear(); } private async void OnBtnSureClick() { if (_ui.m_c1.selectedIndex == 0) { if (ItemDataManager.GetItemNum(_selectHeadId) <= 0) { PromptController.Instance.ShowFloatTextPrompt("暂未获得"); return; } bool result = await RoleInfoSProxy.ReqModifyRoleHead(_selectHeadId); if (result) { OnTabChange(); PromptController.Instance.ShowFloatTextPrompt("保存成功"); } } else { if (ItemDataManager.GetItemNum(_selectHeadBorderId) <= 0) { PromptController.Instance.ShowFloatTextPrompt("暂未获得"); return; } bool result = await RoleInfoSProxy.ReqModifyRoleHeadBorder(_selectHeadBorderId); if (result) { OnTabChange(); PromptController.Instance.ShowFloatTextPrompt("保存成功"); } } } private void RenderListItem(int index, GObject obj) { if (index >= _headCfgs.Count) { return; } int headId = _headCfgs[index].id; UI_ListHeadItem item = UI_ListHeadItem.Proxy(obj); item.m_loaIcon.url = ResPathUtil.GetHeadPath(_headCfgs[index].res); item.m_imgNew.visible = RoleInfoManager.Instance.isNewHead(headId); item.m_grpUnGet.visible = ItemDataManager.GetItemNum(headId) <= 0; if (RoleInfoManager.Instance.isNewHead(headId)) { ItemProxy.ReqSetItemRead(headId).Coroutine(); } if (headId == RoleDataManager.headId) { _ui.m_list.selectedIndex = index; } item.target.data = headId; UI_ListHeadItem.ProxyEnd(); } private void RenderListBorderItem(int index, GObject obj) { if (index >= _headBorderCfgs.Count) { return; } ItemCfg headCfg = ItemCfgArray.Instance.GetCfg(RoleDataManager.headId); ItemCfg borderCfg = _headBorderCfgs[index]; int headBorderId = borderCfg.id; UI_ListHeadBorderItem item = UI_ListHeadBorderItem.Proxy(obj); item.m_loaIcon.url = ResPathUtil.GetHeadPath(headCfg.res); item.m_loaBorder.url = ResPathUtil.GetHeadBorderPath(borderCfg.res); item.m_imgNew.visible = RoleInfoManager.Instance.isNewHeadBorder(headBorderId); item.m_grpUnGet.visible = ItemDataManager.GetItemNum(headBorderId) <= 0; if (RoleInfoManager.Instance.isNewHeadBorder(headBorderId)) { ItemProxy.ReqSetItemRead(headBorderId).Coroutine(); } if (headBorderId == RoleDataManager.headBorderId) { _ui.m_listBorder.selectedIndex = index; } item.target.data = headBorderId; UI_ListHeadBorderItem.ProxyEnd(); } private void OnListItemClick(EventContext context) { GObject obj = context.data as GObject; _selectHeadId = (int)obj.data; UpdateView(); } private void OnListBorderItemClick(EventContext context) { GObject obj = context.data as GObject; _selectHeadBorderId = (int)obj.data; UpdateView(); } private void OnTabChange() { _selectHeadId = RoleDataManager.headId; _selectHeadBorderId = RoleDataManager.headBorderId; _ui.m_btnTab0.m_color.selectedIndex = 1 - _ui.m_c1.selectedIndex; _ui.m_btnTab1.m_color.selectedIndex = _ui.m_c1.selectedIndex; if (_ui.m_c1.selectedIndex == 0) { _ui.m_list.numItems = _headCfgs.Count; _ui.m_list.scrollPane.ScrollTop(); } else { if (showHeadBorderRedDot) { showHeadBorderRedDot = false; UpdateRedDot(); } _ui.m_listBorder.numItems = _headBorderCfgs.Count; _ui.m_listBorder.scrollPane.ScrollTop(); } UpdateView(); } private void UpdateView() { ItemCfg headCfg = ItemCfgArray.Instance.GetCfg(_selectHeadId); ItemCfg headBorderCfg = ItemCfgArray.Instance.GetCfg(_selectHeadBorderId); RoleInfoManager.Instance.UpdateHead(_ui.m_comHead, _selectHeadId, _selectHeadBorderId); if (_ui.m_c1.selectedIndex == 0) { _ui.m_txtName.text = headCfg.name; _ui.m_txtDesc.text = headCfg.desc; } else { _ui.m_txtName.text = headBorderCfg.name; _ui.m_txtDesc.text = headBorderCfg.desc; } } private List SortItemCfgDatas(List list) { list.Sort((ItemCfg a, ItemCfg b) => { long hasA = ItemDataManager.GetItemNum(a.id); long hasB = ItemDataManager.GetItemNum(b.id); if (hasA > 0 && hasB <= 0) return -1; if (hasB > 0 && hasA <= 0) return 1; return a.id - b.id; }); return list; } private void UpdateRedDot() { RedDotController.Instance.SetComRedDot(_ui.m_btnTab1.target, showHeadBorderRedDot, "", -33, 0); } private void AddEffect() { //邊框左上角特效 _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_holderLeftTop, "ui_Activity", "Com_window_L_up"); //邊框右下角特效 _effectUI2 = EffectUIPool.CreateEffectUI(_ui.m_holderRightDowm, "ui_Activity", "Com_window_R_Down"); } } }