| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325 | using System.Collections.Generic;using ET;using FairyGUI;using UI.League;using UnityEngine;namespace GFGGame{    //联盟成员    public class LeagueMemberView : BaseWindow    {        private UI_LeagueMemberUI _ui;        private LeagueData _leagueData;        private List<long> _memberIds;        public override void Dispose()        {            if (_ui != null)            {                _ui.Dispose();                _ui = null;            }            base.Dispose();        }        protected override void OnInit()        {            base.OnInit();            packageName = UI_LeagueMemberUI.PACKAGE_NAME;            _ui = UI_LeagueMemberUI.Create();            this.viewCom = _ui.target;            isfullScreen = true;            isReturnView = true;            _ui.m_btnBack.onClick.Add(OnBtnBackClick);            _ui.m_btnRecruit.target.onClick.Add(OnBtnRecruitClick);            _ui.m_btnApplyList.onClick.Add(OnBtnApplyListClick);            _ui.m_btnMemberLog.onClick.Add(OnBtnMemberLogClick);            _ui.m_btnExit.onClick.Add(OnBtnExitClick);            _ui.m_btnExit1.onClick.Add(OnBtnExitClick);            _ui.m_comChairman.m_comHead.target.onClick.Add(OnShowOhterInfo);            _ui.m_comCoChairman.m_comHead.target.onClick.Add(OnShowOhterInfo);            _ui.m_list.itemRenderer = RenderListItem;            _ui.m_list.SetVirtual();            _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("lm_beijing");        }        protected override void AddEventListener()        {            base.AddEventListener();            EventAgent.AddEventListener(ConstMessage.LEAGUE_MEMBER_CHANGE, UpdateMember);            EventAgent.AddEventListener(ConstMessage.RED_CHANGE, UpdateRedDot);        }        protected override void OnShown()        {            base.OnShown();            UpdateMember();            UpdateBtnRecruit();            UpdateRedDot();        }        protected override void OnHide()        {            base.OnHide();            if (_ui.m_list.numItems > 0) _ui.m_list.ScrollToView(0);            Timers.inst.Remove(OnUpdateTimer);        }        protected override void RemoveEventListener()        {            base.RemoveEventListener();            EventAgent.RemoveEventListener(ConstMessage.LEAGUE_MEMBER_CHANGE, UpdateMember);            EventAgent.RemoveEventListener(ConstMessage.RED_CHANGE, UpdateRedDot);        }        private void OnBtnBackClick()        {            ViewManager.GoBackFrom(typeof(LeagueMemberView).FullName);        }        //招募        private void OnBtnRecruitClick()        {            ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(GlobalCfgArray.globalCfg.consumeWantedArr[0][0]);            long needCount = GlobalCfgArray.globalCfg.consumeWantedArr[0][1];            long hasCount = ItemDataManager.GetItemNum(GlobalCfgArray.globalCfg.consumeWantedArr[0][0]);            if (needCount > hasCount)            {                PromptController.Instance.ShowFloatTextPrompt("消耗不足");                return;            }            string tips = string.Format("是否花费{0}*{1}发布24小时招募成员信息,并临时增加新加入成员上限?", itemCfg.name, needCount);            AlertUI.Show(tips).            SetLeftButton(true, "取消").             SetRightButton(true, "确认", async (object param) =>             {                 bool result = await LeagueSproxy.ReqSendLeagueAD();                 if (result)                 {                     UpdateBtnRecruit();                 }             });        }        //申请列表        private void OnBtnApplyListClick()        {            ViewManager.Show<LeagueApplyView>();        }        //联盟日志        private void OnBtnMemberLogClick()        {            ViewManager.Show<LeagueMemberLogView>();        }        //退出联盟        private void OnBtnExitClick()        {            long joinLeagueTime = LeagueDataManager.Instance.LeagueData.LeagueMemberDatas[RoleDataManager.roleId].JoinLeagueTime;            long curTime = TimeHelper.ServerNow();            long ms = (curTime - joinLeagueTime);            if (LeagueDataManager.Instance.LeagueData.OwnerId == RoleDataManager.roleId)            {                AlertUI.Show("一家之主不可无呀,先把会长职位给别人吧~").SetRightButton(true, "确认");            }            else if (ms < TimeUtil.SECOND_PER_DAY * 1000)            {                AlertUI.Show("您加入的时间不足一天").SetRightButton(true, "确认");            }            else if (LeagueDataManager.Instance.CheckTeaPartyRewardCanGet())            {                AlertUI.Show("当前茶话会奖励未领取无法退出雅集,是否前往领取!")                .SetLeftButton(true, "取消")                .SetRightButton(true, "确认", (object param) =>                {                    ViewManager.Show<LeagueTeaPartyView>();                });            }            else            {                AlertUI.Show("您忍心退出雅集,离开小伙伴们吗?")                .SetLeftButton(true, "取消")                .SetRightButton(true, "确认", async (object param) =>                {                    bool result = await LeagueSproxy.ReqQuitLeague();                    if (result)                    {                        ViewManager.Show<MainUIView>(null, true);                    }                });            }        }        private void UpdateMember()        {            int myPos = LeagueDataManager.Instance.GetMyPos();            _ui.m_c1.selectedIndex = myPos == LeaguePos.Owner || myPos == LeaguePos.SubOwner ? 1 : 0;            _leagueData = LeagueDataManager.Instance.LeagueData;            _memberIds = new List<long>(_leagueData.LeagueMemberDatas.Keys);            int ownerIndex = _memberIds.IndexOf(_leagueData.OwnerId);            if (ownerIndex >= 0) _memberIds.RemoveAt(ownerIndex);            int subOwnerIndex = _memberIds.IndexOf(_leagueData.SubOwnerId);            if (subOwnerIndex >= 0) _memberIds.RemoveAt(subOwnerIndex);            _memberIds = SortMemberIds(_memberIds);            _ui.m_list.numItems = _memberIds.Count;            UpdateLeader(_ui.m_comChairman.target, LeagueDataManager.Instance.LeagueData.OwnerId);            UpdateLeader(_ui.m_comCoChairman.target, LeagueDataManager.Instance.LeagueData.SubOwnerId);        }        private void UpdateBtnRecruit()        {            ItemUtil.UpdateItemNeedNum(_ui.m_btnRecruit.m_comcost, GlobalCfgArray.globalCfg.consumeWantedArr[0][0], GlobalCfgArray.globalCfg.consumeWantedArr[0][1]);            int myPos = _leagueData.LeagueMemberDatas[RoleDataManager.roleId].Pos;            bool isLeader = myPos == LeaguePos.Owner || myPos == LeaguePos.SubOwner;            long timeCount = (LeagueDataManager.Instance.GetNumeriValue(LeagueNumericType.AdEndTime) - TimeHelper.ServerNow()) / 1000;            _ui.m_btnRecruit.target.touchable = timeCount <= 0;            _ui.m_btnRecruit.m_touchable.selectedIndex = timeCount <= 0 ? 1 : 0;            // _ui.m_btnRecruit.m_comcost.visible = timeCount > 0 ? false : true;            // _ui.m_btnRecruit.m_txtTime.text = "";            if (isLeader && timeCount > 0)            {                _ui.m_btnRecruit.m_txtTime.visible = timeCount > 0 ? true : false;                Timers.inst.Add(1, (int)timeCount, OnUpdateTimer);            }        }        private void OnUpdateTimer(object param)        {            long timeCount = LeagueDataManager.Instance.GetNumeriValue(LeagueNumericType.AdEndTime) - TimeHelper.ServerNow();            if (timeCount <= 0)            {                _ui.m_btnRecruit.target.touchable = true;                _ui.m_btnRecruit.m_touchable.selectedIndex = 1;                // _ui.m_btnRecruit.m_txtTime.text = "";                Timers.inst.Remove(OnUpdateTimer);            }            string time = TimeUtil.FormattingTimeTo_HHmmss(timeCount);            _ui.m_btnRecruit.m_txtTime.text = string.Format("剩余时间: {0}", time);        }        private void UpdateLeader(GObject obj, long roleId)        {            LeagueMemberData memberData = _leagueData.LeagueMemberDatas.ContainsKey(roleId) ? _leagueData.LeagueMemberDatas[roleId] : null;            UI_ComLeader com = UI_ComLeader.Proxy(obj);            if (memberData == null)            {                com.m_txtName.text = "虚位以待";                com.m_txtLvl.text = "--";                com.m_comHead.m_loaIcon.url = "";                com.m_loaHeadBorder.url = "";                com.m_btnAppoint.visible = false;                com.m_loaTitle.url = "";                com.m_comHead.target.data = null;            }            else            {                ItemCfg headCfg = ItemCfgArray.Instance.GetCfg(memberData.RoleInfo.headId == 0 ? ConstItemID.HEADID : memberData.RoleInfo.headId);                ItemCfg headBorderCfg = ItemCfgArray.Instance.GetCfg(memberData.RoleInfo.headBorderId == 0 ? ConstItemID.HEADBORDERID : memberData.RoleInfo.headBorderId);                com.m_comHead.m_loaIcon.url = ResPathUtil.GetHeadPath(headCfg.res);                com.m_loaHeadBorder.url = "";// ResPathUtil.GetHeadBorderPath(headBorderCfg.res);                com.m_txtLvl.text = memberData.RoleInfo.roleLv.ToString();                com.m_txtName.text = memberData.RoleInfo.roleName;                com.m_loaTitle.url = string.Format("ui://League/lm_chenghao_{0}", memberData.Pos);                com.m_btnAppoint.visible = memberData.Pos == LeaguePos.SubOwner && _leagueData.LeagueMemberDatas[RoleDataManager.roleId].Pos == LeaguePos.Owner;                if (com.m_btnAppoint.data == null)                {                    com.m_btnAppoint.onClick.Add(OnBtnAppointClick);                }                com.m_btnAppoint.data = memberData;                com.m_comHead.target.data = roleId;            }            UI_ComLeader.Proxy();        }        private async void OnShowOhterInfo(EventContext context)        {            GObject gObject = context.sender as GObject;            if (gObject.data == null)            {                return;            }            long roleId = (long)gObject.data;            OtherRoleInfoData roleInfoData = LeagueDataManager.Instance.GetMemberRoleInfo(roleId);            OtherRoleInfoDetailData detailData = await RoleInfoSProxy.ReqOtherRoleDetailInfo(roleId);            ViewManager.Show<OtherRoleInfoView>(new object[] { roleInfoData, detailData });        }        private void RenderListItem(int index, GObject obj)        {            LeagueMemberData memberData = _leagueData.LeagueMemberDatas[_memberIds[index]];            UI_ListMemberItem item = UI_ListMemberItem.Proxy(obj);            RoleInfoManager.Instance.UpdateHeadWithLv(item.m_comHead, memberData.RoleInfo.headId, memberData.RoleInfo.headBorderId, memberData.RoleInfo.roleLv);            item.m_txtName.text = memberData.RoleInfo.roleName;            item.m_txtAllContribuation.text = memberData.AllContribution.ToString();            item.m_txtWeekContribuation.text = memberData.AllCoin.ToString();            // item.m_loaTitle.visible = memberData.Pos != LeaguePos.Member;            item.m_loaTitle.url = memberData.Pos == LeaguePos.Member ? "" : string.Format("ui://League/lm_chenghao_{0}", memberData.Pos);            if (memberData.RoleInfo.offlineTimeSec == 0)            {                item.m_txtState.text = "在线";            }            else            {                TimeUtil.FormattingTime(memberData.RoleInfo.offlineTimeSec, TimeHelper.ServerNow(), out int num, out string strState);                strState = strState == "秒" ? "刚刚" : num + strState + "前";                item.m_txtState.text = strState;            }            int myPos = _leagueData.LeagueMemberDatas[RoleDataManager.roleId].Pos;            item.m_btnAppoint.visible = myPos == LeaguePos.Owner || myPos == LeaguePos.SubOwner;            if (item.m_btnAppoint.data == null)            {                item.m_btnAppoint.onClick.Add(OnBtnAppointClick);            }            item.m_btnAppoint.data = memberData;            if (item.m_comHead.data == null)            {                item.m_comHead.onClick.Add(OnShowOhterInfo);            }            item.m_comHead.data = memberData.RoleInfo.roleId;            UI_ListMemberItem.ProxyEnd();        }        private void OnBtnAppointClick(EventContext context)        {            GObject obj = context.sender as GObject;            LeagueMemberData memberData = obj.data as LeagueMemberData;            if (!_leagueData.LeagueMemberDatas.ContainsKey(memberData.RoleInfo.roleId))            {                PromptController.Instance.ShowFloatTextPrompt("该玩家已离开雅集");                return;            }            ViewManager.Show<LeagueMemberAppointView>(memberData);        }        private List<long> SortMemberIds(List<long> memberIds)        {            memberIds.Sort((long a, long b) =>            {                LeagueMemberData memberDataA = _leagueData.LeagueMemberDatas[a];                LeagueMemberData memberDataB = _leagueData.LeagueMemberDatas[b];                if (memberDataA.Pos == LeaguePos.Flower && memberDataB.Pos != LeaguePos.Flower) return -1;                if (memberDataA.Pos != LeaguePos.Flower && memberDataB.Pos == LeaguePos.Flower) return 1;                if (memberDataA.RoleInfo.offlineTimeSec == 0 && memberDataB.RoleInfo.offlineTimeSec != 0) return -1;                if (memberDataA.RoleInfo.offlineTimeSec != 0 && memberDataB.RoleInfo.offlineTimeSec == 0) return 1;                if (memberDataA.AllCoin > memberDataB.AllCoin) return -1;                if (memberDataA.AllCoin < memberDataB.AllCoin) return 1;                if (memberDataA.AllContribution > memberDataB.AllContribution) return -1;                if (memberDataA.AllContribution < memberDataB.AllContribution) return 1;                if (memberDataA.RoleInfo.roleLv > memberDataB.RoleInfo.roleLv) return -1;                if (memberDataA.RoleInfo.roleLv < memberDataB.RoleInfo.roleLv) return 1;                if (memberDataA.RoleInfo.offlineTimeSec > memberDataB.RoleInfo.offlineTimeSec) return -1;                if (memberDataA.RoleInfo.offlineTimeSec < memberDataB.RoleInfo.offlineTimeSec) return 1;                return 0;            });            return memberIds;        }        private void UpdateRedDot()        {            RedDotController.Instance.SetComRedDot(_ui.m_btnApplyList, RedDotDataManager.Instance.GetLeagueMemberJoinRed());        }    }}
 |