自己优化的ScrollView案例 UIWndSocietyPlayer

来源:互联网 发布:科比2008奥运会数据 编辑:程序博客网 时间:2024/05/17 20:10
using System.Collections;
using System;
using System.Collections.Generic;
using UnityEngine;
using NGUI;
using Core;
using Core.Tools;
using System.Linq;
using Base;
using Net;




//排序
public enum ESortPost
{
    POST,//职位
    DISTANCE,//距离
    CONTR,//贡献
    STATE,//状态
    NULL,//默认
}




public class UIWndSocietyPlayer : UIObject
{
    //public GameObject btnClose = null;
    public GameObject btnExplain = null;


    public UILabel lblLowLeaderNum = null;//副盟主个数
    public UILabel lblElderNum = null;//长老个数
    public UILabel lblPlayerNumber = null;//成员人数


    public UIGrid grid = null;


    public UIScrollView scrollView = null;


    public UIPopupList popupList = null;


    private int maxNum = 5;//Item个数


    private List<SocietyPlayer> mPlayerObjList = new List<SocietyPlayer>();
    private List<SocietyPlayer> mTempPlayerList = new List<SocietyPlayer>();//临时的 maxNumItem;


    private List<GangPlayer> gangList = new List<GangPlayer>();//全部仙盟成员


    private bool mBIsDrag = false;


    private int mIndex = 0;//往上移动了几个


    //private long mSelectPlayer = 0;


    private string mSelectPlayerName;


    private EPostType mType = EPostType.ELDER;
    private ESortPost sortPost = ESortPost.NULL;
    private EHandleType handleType = EHandleType.NULL;
    private HintMessageDataTable mHintMessageDataTable = null;
    private PlayerStateDataTable mPlayerStateDataTable;
    private SocietyLevelUpDataTable mSocietyGrowDataTable = null;
    private SocietyBasicDataTable societyBasicDataTable;


    private long mSelectSocietyPlayerId;//选择的哪个玩家




    private UIWndSocietyManagement management;
    protected override void Awake()
    {
        base.Awake();


       // ListenOnClick(btnClose,OnClickBtnClose);
        ListenOnClick(btnExplain, OnClickBtnExplain);
        mHintMessageDataTable = DataMgr.Instance.hintMessageDataTable;
        mPlayerStateDataTable = DataMgr.Instance.playerStateDataTable;
        mSocietyGrowDataTable = DataMgr.Instance.societyLevelUpDataTable;
        societyBasicDataTable = DataMgr.Instance.societyBasicDataTable;
    }




    protected override void OnEnable()
    {
        base.OnEnable();
        NetworkUtility.scan(this);
        SocietyManager.Instance().ReqSocietySelfInfo();


    }




    protected override void Start()
    {
        base.Start();


        scrollView.onDragStarted = () => { mBIsDrag = true; };
        scrollView.onDragFinished = () => { mBIsDrag = false; };
        popupList.value = "按职位排序";
        popupList.onChange.Add(new EventDelegate(() =>
        {
            GetPostLoad(SocietyManager.Instance().GetPlayerSociety());
        }));


        //management = ResMgr.New<UIWndSocietyManagement>("UI/Item/UIWndSocietyManagement");
        //management.SetActive(false);
    }


    public void GetPopupListChange()
    {
        GetPostLoad(SocietyManager.Instance().GetPlayerSociety());
    }


    private void GetPostLoad(List<GangPlayer> _gangList)
    {
        switch (popupList.value)
        {
            case "按职位排序":
                if (sortPost == ESortPost.POST) return;


                sortPost = ESortPost.POST;
                print("按职位排序");
                _gangList.Sort(SocietyManager.Instance().SortPost);
                LoadInitIcon(_gangList);


                break;
            case "按距离排序":
                if (sortPost == ESortPost.DISTANCE) return;


                sortPost = ESortPost.DISTANCE;
                print("按距离排序");
                _gangList.Sort(SocietyManager.Instance().SortDistance);
                LoadInitIcon(_gangList);


                break;


            case "按贡献排序":
                print("按贡献排序");
                if (sortPost == ESortPost.CONTR) return;


                sortPost = ESortPost.CONTR;
                _gangList.Sort(SocietyManager.Instance().SortContation);
                LoadInitIcon(_gangList);


                break;
            case "按状态排序":
                print("按状态排序");
                if (sortPost == ESortPost.STATE) return;


                sortPost = ESortPost.STATE;
                _gangList.Sort(SocietyManager.Instance().SortState);
                LoadInitIcon(_gangList);
                break;


            default:
                break;
        }
    }
   


    /// <summary>
    /// 
    /// </summary>
    /// <param name="type">自己职位类型</param>
    /// <param name="strPlayer">玩家个数</param>
    /// <param name="strlowLeader">副盟主个数</param>
    /// <param name="strElder">长老个数</param>
    public void Init(EPostType type, string strPlayer,string strlowLeader, string strElder,string strMaxElder)
    {
        mType = type;
        lblPlayerNumber.text = strPlayer;
        lblElderNum.text = strElder + "/" + strMaxElder;//TODO
        lblLowLeaderNum.text = strlowLeader + "/" + 1;
    }




    protected override void Update()
    {
        base.Update();
        if (!mBIsDrag) return;


        if (mPlayerObjList[0].societyPlayerItem.GetComponent<UIWidget>().isVisible == false)
        {
            if (maxNum + mIndex < gangList.Count)//mPlayerDataList.Count
            {
                float y = mPlayerObjList[0].societyPlayerItem.transform.localPosition.y - grid.cellHeight * maxNum;
                mPlayerObjList[0].societyPlayerItem.transform.localPosition = new Vector3(0, y, 0);
                SocietyPlayer go = mPlayerObjList[0];
                mPlayerObjList.RemoveAt(0);
                mPlayerObjList.Add(go);
                LoadSocietyPlayInfo(gangList[mIndex + maxNum], true);
                mIndex += 1;
            }
        }
        else
        {
            if (mPlayerObjList[maxNum - 1].societyPlayerItem.GetComponent<UIWidget>().isVisible == false && mPlayerObjList[0].societyPlayerItem.GetComponent<UIWidget>().isVisible == true)
            {
                if (mIndex != 0)
                {
                    float y = mPlayerObjList[maxNum - 1].societyPlayerItem.transform.localPosition.y + grid.cellHeight * maxNum;
                    mPlayerObjList[maxNum - 1].societyPlayerItem.transform.localPosition = new Vector3(0, y, 0);
                    SocietyPlayer go = mPlayerObjList[maxNum - 1];
                    mPlayerObjList.RemoveAt(maxNum - 1);
                    mPlayerObjList.Insert(0, go);
                    mIndex -= 1;
                    LoadSocietyPlayInfo(gangList[mIndex], false);
                }
            }
        }
    }


    /// <summary>
    /// 开始的时候创建Item 
    /// </summary>
    /// <param name="_list"></param>
    private void LoadInitIcon(List<GangPlayer> _list)
    {
        scrollView.transform.localPosition = new Vector3();
        scrollView.GetComponent<UIPanel>().clipOffset = new Vector2();
        //scrollView.strength = 10;


        foreach (var item in mPlayerObjList)
        {
            if (null != item)
                item.societyPlayerItem.SetActive(false);
        }


        if (null == _list || _list.Count == 0) return;


        mIndex = 0;
        //gangList.Clear();
        gangList = new List<GangPlayer>(_list);
        int min = Math.Min(maxNum, _list.Count);
    


        //for (int i = 0; i < min; i++)
        //{
        //    SocietyPlayer allSociety = new SocietyPlayer();
        //    InitSyn(allSociety, _list[i]);
        //    mPlayerObjList.Add(mTempPlayerList[i]);
        //}




        if (grid.transform.childCount != maxNum)
        {
            for (int i = 0; i < maxNum; i++)
            {
                SocietyPlayer allSociety = new SocietyPlayer();
                allSociety.societyPlayerItem = ResMgr.New<UISocietyPlayerItem>("UI/Item/UISocietyPlayerItem");
                U3DUtil.AddChild(grid.gameObject, allSociety.societyPlayerItem.gameObject);
                allSociety.societyPlayerItem.SetActive(false);
                mPlayerObjList.Add(allSociety);
            }
        }


        for (int i = 0; i < min; i++)
        {
            mPlayerObjList[i].societyPlayerItem.SetActive(true);
            InitSyn(mPlayerObjList[i], gangList[i]);


            float y = (grid.cellHeight) * i;//mPlayerObjList[0].societyItem.transform.localPosition.y + 
            mPlayerObjList[i].societyPlayerItem.transform.localPosition = new Vector3(0, -y, 0);
        }






    }


    /// <summary>
    /// 给Item赋值
    /// </summary>
    /// <param name="gang"></param>
    private void InitSyn(SocietyPlayer se, GangPlayer gang)
    {
        se.playerId = (long)gang.playerId;
        se.level = gang.level.ToString();
        se.name = gang.playerName;
        se.headName = gang.headUrl;
        se.sex = gang.gender == 0 ? "nvtubiao":"nan" ;
        se.state = mPlayerStateDataTable.GetDataById((int)gang.stateId).name;
        se.contribute = (long)gang.gangContribute;
        se.job = (int)gang.job;
        se.postType = mType;
        se.line = (int)gang.isOnline;
        se.fight = 0;//未知的 以后要改变的TODO
        //0:不在线 1:在线 如果在线 显示距离 ,如果不在线 要显示离线了多长时间


        if (0 == gang.isOnline)
            se.leaveTime = (long)gang.leaveTime;


        if (gang.distance <= 1)
        {
            se.distance = "0.01";
        }
        else if ((int)gang.distance >= 1000)
        {
            se.distance = ((int)gang.distance / 1000).ToString();
        }
        else
        {
            se.distance = String.Format("{0:N2}", ((float)gang.distance / 1000)); //result: 56,789.00   
        }
        //se.distance = gang.distance;


        se.OnClickItemHandle = OnClickPlayerItem;
        se.OnClickHideHandle = OnClickPlayerHideItem;
        se.OnClickTransferHandle = OnClickBtnTransfer;
        se.OnClickDetailsHandle = OnClickBtnDetails;
        se.OnClickAppointLowLeaderHandle = OnClickBtnAppointLowLeader;
        se.OnClickAppointRepealLowLeaderHandle = OnClickBtnAppointRepealLowLeader;
        se.OnClickAppointElderHandle = OnClickBtnAppointElder;
        se.OnClickAppointRepealElderHandle = OnClickBtnAppointRepealElder;
        se.OnClickExpelHandle = OnClickBtnExpel;


        se.Load();
        //if (!isLoad)
        //{
        //    U3DUtil.AddChild(grid.gameObject, se.societyPlayerItem.gameObject);
        //    grid.repositionNow = true;
        //    mTempPlayerList.Add(se);
        //}
        se.societyPlayerItem.objSelect.spriteName = mSelectSocietyPlayerId == (long)gang.playerId ? "list_xuanzhong" : "list";
    }


    /// <summary>
    /// 拖动列表 给改变的Item赋值
    /// </summary>
    /// <param name="_index"></param>
    /// <param name="_list"></param>
    private void LoadSocietyPlayInfo(GangPlayer gang, bool Up)
    {
        //int dataIndex = _index + maxNum;//List<Gang> gang  要用的索引


        if (Up)
        {
            InitSyn(mPlayerObjList[maxNum - 1], gang);
        }
        else
        {
            InitSyn(mPlayerObjList[0], gang);
        }
    }




    private void ReLoadData(List<GangPlayer> _list)
    {
        if (null == _list || _list.Count == 0)
        {
            foreach (var item in mPlayerObjList)
                item.Clear();


            mPlayerObjList.Clear();
            mTempPlayerList.Clear();
            return;
        }


        //mIndex = 0;
        //gangList.Clear();


        gangList = new List<GangPlayer>(_list);
        int min = Math.Min(maxNum, _list.Count);


        if (maxNum == min)
        {
            if ((maxNum + mIndex - 1) == _list.Count)
            {
                mIndex -= 1;


                for (int i = 0; i < maxNum; i++)
                {
                    InitSyn(mPlayerObjList[i], gangList[mIndex + i]);
                }


            }
            else
            {
                for (int i = mIndex; i < maxNum; i++)
                {
                    InitSyn(mPlayerObjList[i], gangList[mIndex + i]);
                }
            }
        }
        else
        {
            foreach (var item in mPlayerObjList)
                item.Clear();


            scrollView.GetComponent<UIPanel>().clipOffset = new Vector2();


            mIndex = 0;
            gangList.Clear();
            mTempPlayerList.Clear();
            mPlayerObjList.Clear();
            gangList = new List<GangPlayer>(_list);
            int min2 = Math.Min(maxNum, _list.Count);


            for (int i = 0; i < min2; i++)
            {
                SocietyPlayer allSociety = new SocietyPlayer();
                InitSyn(allSociety, _list[i]);
                mPlayerObjList.Add(mTempPlayerList[i]);
            }
        }
    }


    /// <summary>
    /// 交付盟主之位
    /// </summary>
    /// <param name="obj"></param>
    void OnClickBtnTransfer(long playerid)
    {
        if (mType != EPostType.LEADER) return;


        if (playerid != (long)SocietyManager.Instance().GetSelfSociety().deputyChiefId)
        {
            UIMgr.Instance.ShowWindow<UITextMsgPanel>().ShowTextMsg(mHintMessageDataTable.GetDataById(80035).message);
        }
        else
        {
           // UIWndHandleSociety handle = UIMgr.Instance.ShowWindow<UIWndHandleSociety>();
            foreach (var item in gangList)
            {
                if ((long)item.playerId == playerid)
                {
                    mSelectPlayerName = item.playerName;
                    mSelectSocietyPlayerId = playerid;
                }
            }


            handleType = EHandleType.TRANSFER;
            UIWndMsgBox box = UIMgr.Instance.ShowWindow<UIWndMsgBox>();
            box.ShowMsgBox(mHintMessageDataTable.GetDataById(20007).message, "是否解散仙盟", MsgStyle.YesAndNo, GetSocietyHandleResult);




            //handle.Init(EHandleType.TRANSFER, mSelectPlayerName, playerid);
        }


    }


    /// <summary>
    /// 详情
    /// </summary>
    /// <param name="obj"></param>
    void OnClickBtnDetails(long playerid)
    {
        UIWndplayerCheck playerCheck = UIMgr.Instance.ShowWindow<UIWndplayerCheck>();
        playerCheck.ChangePanel((ulong)playerid);
    }


    /// <summary>
    /// 任命副盟主
    /// </summary>
    /// <param name="obj"></param>
    void OnClickBtnAppointLowLeader(long playerid)
    {
        if (mType != EPostType.LEADER) return;
        //1.变更为长老 2.变更为副盟主 3.变更为普通成员
        if (playerid == (long)SocietyManager.Instance().GetSelfSociety().chiefId) return;


        if (0 != (long)SocietyManager.Instance().GetSelfSociety().deputyChiefId)
        {
            UIMgr.Instance.ShowWindow<UITextMsgPanel>().ShowTextMsg(mHintMessageDataTable.GetDataById(80037).message);
            return;
        }
        else
        {
            mSelectSocietyPlayerId = playerid;
            SocietyManager.Instance().ReqSocietyTransfer((ulong)playerid, 2);
        }


        //if (playerid != (long)SocietyManager.Instance().GetSelfSociety().deputyChiefId)
        //{
        //    //if (SocietyManager.Instance().GetSelfSociety().presbytersId.Contains((ulong)playerid))
        //    //{
        //    //    SocietyManager.Instance().ReqSocietyTransfer((ulong)playerid, 5);
        //    //    return;
        //    //}
        //}
    }


    /// <summary>
    /// 撤销副盟主
    /// </summary>
    /// <param name="obj"></param>
    void OnClickBtnAppointRepealLowLeader(long playerid)
    {
        if (mType != EPostType.LEADER) return;
        //1.变更为长老 2.变更为副盟主 3.变更为普通成员
        if (playerid == (long)SocietyManager.Instance().GetSelfSociety().deputyChiefId)
        {
            mSelectSocietyPlayerId = playerid;
            SocietyManager.Instance().ReqSocietyTransfer((ulong)playerid, 3);
        }
    }


    /// <summary>
    /// 任命长老
    /// </summary>
    /// <param name="obj"></param> 
    void OnClickBtnAppointElder(long playerid)
    {
        if (mType == EPostType.LEADER || mType == EPostType.LOWLEADER)
        {
            if (SocietyManager.Instance().GetSelfSociety().presbytersId.Count >= mSocietyGrowDataTable.GetDataById((int)SocietyManager.Instance().GetSelfSociety().GangLevel).allianceChairNum)
            {
                UIMgr.Instance.ShowWindow<UITextMsgPanel>().ShowTextMsg(mHintMessageDataTable.GetDataById(80038).message);
                return;
            } 


            //1.变更为长老 2.变更为副盟主 3.变更为普通成员


            foreach (var item in SocietyManager.Instance().GetSelfSociety().presbytersId)
            {
                if (playerid == (long)item)
                    return;
            }


            mSelectSocietyPlayerId = playerid;
            SocietyManager.Instance().ReqSocietyTransfer((ulong)playerid, 1);
                //if (playerid == (long)SocietyManager.Instance().GetSelfSociety().deputyChiefId)
                //{
                //    SocietyManager.Instance().ReqSocietyTransfer((ulong)playerid, 1);
                //    return;
                //}
                //else if (playerid != (long)SocietyManager.Instance().GetSelfSociety().chiefId)
                //{
                //    SocietyManager.Instance().ReqSocietyTransfer((ulong)playerid, 1);
                //}
            }
    }




    /// <summary>
    /// 撤销长老
    /// </summary>
    /// <param name="obj"></param>
    void OnClickBtnAppointRepealElder(long playerid)
    {
        //1.变更为长老 2.变更为副盟主 3.变更为普通成员
        if (mType == EPostType.LEADER || mType == EPostType.LOWLEADER)
        {
            if (SocietyManager.Instance().GetSelfSociety().presbytersId.Contains((ulong)playerid))
            {
                mSelectSocietyPlayerId = playerid;
                SocietyManager.Instance().ReqSocietyTransfer((ulong)playerid, 3);
            }
        }
    }


    /// <summary>
    /// 逐出仙盟
    /// </summary>
    /// <param name="obj"></param>
    void OnClickBtnExpel(long playerid)
    {
        if (mType == EPostType.LEADER || mType == EPostType.LOWLEADER)
        {
            mSelectSocietyPlayerId = playerid;
            SocietyManager.Instance().ReqSocietyKick((ulong)playerid);
        }
    }


    /// <summary>
    /// 弹劾盟主
    /// </summary>
    /// <param name="obj"></param>
    void OnClickBtnImpeach(long playerid)
    {
        //mSelectSocietyPlayerId = playerid;


        //UIWndImpeach impeach = UIMgr.Instance.ShowWindow<UIWndImpeach>();
        //impeach.impeachHandle = () => 
        //{


        //};
        //return;


        foreach (var item in gangList)
        {
            if (item.job == 1 && item.leaveTime + 7*24*60*60*1000 >= SynTimeManager.GetInstance().GetCurSynTime())
            {
                UIWndImpeach impeach = UIMgr.Instance.ShowWindow<UIWndImpeach>();
                impeach.impeachHandle = () =>
                {
                    List<GangPlayer> gangPlayerList = SocietyManager.Instance().GetPlayerSociety();
                    sortPost = ESortPost.NULL;
                    GetPopupListChange();
                };
            }
            else if (item.job == 1 && item.leaveTime + 7 * 24 * 60 * 60 * 1000 < SynTimeManager.GetInstance().GetCurSynTime())
            {
                UIMgr.Instance.ShowWindow<UITextMsgPanel>().ShowTextMsg(mHintMessageDataTable.GetDataById(80049).message);
            }
        }
    }


    private void OnClickPlayerItem(long playerid)
    {
        mSelectSocietyPlayerId = playerid;
        foreach (var item in mPlayerObjList)
        {
            item.societyPlayerItem.objSelect.spriteName = (long)item.playerId == playerid ? "list_xuanzhong" : "list";


            if (item.playerId == playerid)
            {
                if (playerid == (long)PlayerManager.GetInstance().GetPlayerData().playerId)
                {
                    item.societyPlayerItem.objBtnHandle.SetActive(false);
                    item.societyPlayerItem.mShow = true;
                }
                else
                {
                    //item.societyPlayerItem.objBtnHandle.SetActive(true);
                    management = UIMgr.Instance.ShowWindow<UIWndSocietyManagement>();


                    management.transform.localPosition = new Vector3();
                    management.grid.transform.position = item.societyPlayerItem.point.transform.position;


                    //if (management.grid.transform.position.y <= grid.GetChild(maxNum - 3).transform.position.y)
                    //{
                    //    management.grid.transform.position = grid.GetChild(maxNum - 3).GetComponent<UISocietyPlayerItem>().point.transform.position;
                    //}




                    if (management.grid.transform.localPosition.y < -110f)
                        management.grid.transform.localPosition = new Vector3(management.grid.transform.localPosition.x, -110f, management.grid.transform.localPosition.z);


                    management.SetActive(true);


                    management.Init(item.postType, item.job,item.playerId);
                    management.transferHandle = OnClickBtnTransfer;
                    management.detailsHandle = OnClickBtnDetails;
                    management.appointLowLeaderHandle = OnClickBtnAppointLowLeader;
                    management.appointRepealLowLeaderHandle = OnClickBtnAppointRepealLowLeader;
                    management.appointElderHandle = OnClickBtnAppointElder;
                    management.appointRepealElderHandle = OnClickBtnAppointRepealElder;
                    management.expelHandle = OnClickBtnExpel;
                    management.impeachHandle = OnClickBtnImpeach;
                    management.onClickItemHideHandle = OnClickPlayerHideItem;
                }
            }
        }
    }


    private void OnClickPlayerHideItem(long playerid)
    {
        foreach (var item in mPlayerObjList)
        {
            item.societyPlayerItem.objSelect.spriteName = "list";
            mSelectSocietyPlayerId = 0;
        }
    }


    void OnClickBtnClose(GameObject obj)
    {
        AudioManager.Instance.PlayerEffectMp3(EEffectMp3Type.TongYong);
        //UIMgr.Instance.DestroyWindow<UIWndSocietyPlayer>();
    }


    void OnClickBtnExplain(GameObject obj)
    {
        AudioManager.Instance.PlayerEffectMp3(EEffectMp3Type.TongYong);
        UIMgr.Instance.ShowWindow<UIWndPostDescription>();
    }




    void GetPlayerList()
    {
        List<ulong> tempPlayerList = new List<ulong>();


        if (SocietyManager.Instance().GetSelfSociety().chiefId != 0)
        {
            tempPlayerList.Add(SocietyManager.Instance().GetSelfSociety().chiefId);
        }


        if (SocietyManager.Instance().GetSelfSociety().deputyChiefId != 0)
        {
            tempPlayerList.Add(SocietyManager.Instance().GetSelfSociety().deputyChiefId);
        }


        if (SocietyManager.Instance().GetSelfSociety().presbytersId.Count > 0)
        {
            tempPlayerList.AddRange(SocietyManager.Instance().GetSelfSociety().presbytersId);
        }


        if (SocietyManager.Instance().GetSelfSociety().membersPid.Count > 0)
        {
            tempPlayerList.AddRange(SocietyManager.Instance().GetSelfSociety().membersPid);
        }


        SocietyManager.Instance().ReqSocietyPlayer(tempPlayerList);


    }


    private void GetSocietyHandleResult(MsgResult result)
    {
        switch (result)
        {
            case MsgResult.Yes:
                //给服务器发送创建消息
                switch (handleType)
                {
                    case EHandleType.DISSOLVE:


                        break;
                    case EHandleType.QUIT:


                        break;
                    case EHandleType.TRANSFER:
                        SocietyManager.Instance().ReqSocietyLeaderTran((ulong)mSelectSocietyPlayerId);
                        break;
                    default:
                        break;
                }
                break;
            case MsgResult.No:


                return;
            case MsgResult.Cancel:
                break;
            default:
                break;
        }
    }


    [GameEvent(EGameEvent.GA_SOCIETYRESULTHANDLE)]
    private void GetSocietyResult(object param)
    {
        if (null != management)
            management.OnHide();


        ESocietyResult result = (ESocietyResult)param;
        switch (result)
        {
            case ESocietyResult.TRANSFER:
                sortPost = ESortPost.NULL;
                //用心的服务器数据


                //从重新从LBS得到数据 (有可能 增加了 某个人)


                GetPlayerList();


                break;
            case ESocietyResult.KICK:
                sortPost = ESortPost.NULL;


                GangPlayer tempApply = new GangPlayer();
                foreach (var item in gangList)
                {
                    if ((long)item.playerId == mSelectSocietyPlayerId)
                        tempApply = item;
                }
                gangList.Remove(tempApply);


                //ReLoadData(gangList);
                LoadInitIcon(gangList);
                break;
            case ESocietyResult.BACKSPACE:
                sortPost = ESortPost.NULL;
                GetPlayerList();
                UIMgr.Instance.ShowWindow<UITextMsgPanel>().ShowTextMsg(mHintMessageDataTable.GetDataById(80011).message);
                // GetPostLoad(SocietyManager.Instance().GetPlayerSociety());
                break;


            case ESocietyResult.INFO:
                GetPlayerData();
                sortPost = ESortPost.NULL;
                GetPlayerList();
                break;


            case ESocietyResult.LIMITNOTENOUGH:




                break;


            case ESocietyResult.FULL:




                break;
            case ESocietyResult.PLAYERLIST:
                GetPlayerData();
                List<GangPlayer> gangPlayerList = SocietyManager.Instance().GetPlayerSociety();
                sortPost = ESortPost.NULL;
                GetPopupListChange();


                break;
        }


    }


    private void GetPlayerData()
    {
        int deputyChief = 0;
        int presbyters = 0;
        string playerNum = SocietyManager.Instance().GetSelfSociety().curNumber + "/" + mSocietyGrowDataTable.GetDataById((int)SocietyManager.Instance().GetSelfSociety().GangLevel).allianceNum;
        if (SocietyManager.Instance().GetSelfSociety().deputyChiefId != 0) deputyChief = 1;


        foreach (var item in SocietyManager.Instance().GetSelfSociety().presbytersId)
        {
            if (0 != item)
                presbyters++;
        }


        if (SocietyManager.Instance().GetSelfSociety().chiefId == PlayerManager.GetInstance().GetPlayerData().playerId)
            mType = EPostType.LEADER;
        if (SocietyManager.Instance().GetSelfSociety().deputyChiefId == PlayerManager.GetInstance().GetPlayerData().playerId)
            mType = EPostType.LOWLEADER;
        if (SocietyManager.Instance().GetSelfSociety().presbytersId.Contains(PlayerManager.GetInstance().GetPlayerData().playerId))
            mType = EPostType.ELDER;
        if (SocietyManager.Instance().GetSelfSociety().membersPid.Contains(PlayerManager.GetInstance().GetPlayerData().playerId))
            mType = EPostType.NORMAL;


        Init(mType, playerNum, deputyChief.ToString(), presbyters.ToString(), mSocietyGrowDataTable.GetDataById((int)SocietyManager.Instance().GetSelfSociety().GangLevel).allianceChairNum.ToString());
    }


    private void OnDisable()
    {
        mSelectSocietyPlayerId = 0;
        popupList.value = "按职位排序";
        GameEvents.GetInstance().RemoveEventListener(this);


    }




    protected override void OnDestroy()
    {
        base.OnDestroy();
        GameEvents.GetInstance().RemoveEventListener(this);
    }




    /*****************************************************************************************/


    public class SocietyPlayer
    {
        public long playerId;
        public long leaveTime;
        public long fight;
        public long contribute;


        public int line;//是不是在线 0:不在线 1:在线
        public int job;


        public string level;
        public string name;
        public string headName;
        public string sex;
        public string state;
        public string distance;


        public EPostType postType;//自己的职位


        public UISocietyPlayerItem societyPlayerItem;


        public Action<long> OnClickItemHandle = null;
        public Action<long> OnClickHideHandle = null;
        public Action<long> OnClickTransferHandle = null;
        public Action<long> OnClickDetailsHandle = null;
        public Action<long> OnClickAppointLowLeaderHandle = null;
        public Action<long> OnClickAppointRepealLowLeaderHandle = null;
        public Action<long> OnClickAppointElderHandle = null;
        public Action<long> OnClickAppointRepealElderHandle = null;
        public Action<long> OnClickExpelHandle = null;
        public void Load()
        {
            //if (!isLoad)
            //    societyPlayerItem = ResMgr.New<UISocietyPlayerItem>("UI/Item/UISocietyPlayerItem");
            societyPlayerItem.lblName.text = name;
            societyPlayerItem.lblLevel.text = level;
            societyPlayerItem.lblState.text = state;
            societyPlayerItem.lblContribute.text = contribute.ToString();
            //societyPlayerItem.lblTime.text = time;
            societyPlayerItem.lblFight.text = fight.ToString();


            societyPlayerItem.sprHead.spriteName = headName;
            societyPlayerItem.sprSex.spriteName = sex;


            societyPlayerItem.objSelect.spriteName = "list";
            societyPlayerItem.OnClickItemShowHandle = OnClickItem;
            societyPlayerItem.OnClickItemHideHandle = OnClickItem;
            societyPlayerItem.transferHandle = OnClickTransfer;
            societyPlayerItem.detailsHandle = OnClickDetails;
            societyPlayerItem.appointLowLeaderHandle = OnClickAppointLowLeader;
            societyPlayerItem.appointRepealLowLeaderHandle = OnClickAppointRepealLowLeader;
            societyPlayerItem.appointElderHandle = OnClickAppointElder;
            societyPlayerItem.appointRepealElderHandle = OnClickAppointRepealElder;
            societyPlayerItem.expelHandle = OnClickExpel;
            societyPlayerItem.Init(postType,job);
            societyPlayerItem.objBtnHandle.SetActive(false);
            societyPlayerItem.mShow = true;
            societyPlayerItem.lblTime.text = line == 0 ? ConvertToLocalTime(leaveTime) : "在线";
            societyPlayerItem.lblTime.color = line == 0 ? Color.gray : Color.green;
            societyPlayerItem.lblDistance.text =  distance + "km";
            societyPlayerItem.lblPost.gameObject.SetActive(true);
            GetPost();
        }


        private void GetPost()
        {
            switch (job)
            {
                case 1:
                    societyPlayerItem.lblPost.text = "盟主";
                    break;
                case 2:
                    societyPlayerItem.lblPost.text = "副盟主";
                    break;
                case 3:
                    societyPlayerItem.lblPost.text = "长老";
                    break;
                default:
                    societyPlayerItem.lblPost.text = "队员";
                    break;
            }
        }


        public void Clear()
        {
            if (null != societyPlayerItem.gameObject)
                Destroy(societyPlayerItem.gameObject);
        }


        public void OnClickItem()
        {
            OnClickItemHandle?.Invoke(playerId);
        }


        public void OnClickHideItem()
        {
            OnClickHideHandle?.Invoke(playerId);
            
        }


        public void OnClickTransfer()
        {
            OnClickTransferHandle?.Invoke(playerId);
        }


        public void OnClickDetails()
        {
            OnClickDetailsHandle?.Invoke(playerId);
        }


        public void OnClickAppointLowLeader()
        {
            OnClickAppointLowLeaderHandle?.Invoke(playerId);
        }


        public void OnClickAppointRepealLowLeader()
        {
            OnClickAppointRepealLowLeaderHandle?.Invoke(playerId);
        }


        public void OnClickAppointElder()
        {
            OnClickAppointElderHandle?.Invoke(playerId);
        }


        public void OnClickAppointRepealElder()
        {
            OnClickAppointRepealElderHandle?.Invoke(playerId);
        }


        public void OnClickExpel()
        {
            OnClickExpelHandle?.Invoke(playerId);
        }


        string ConvertToLocalTime(long seconds)
        {
            DateTime t = new DateTime(1970, 1, 1, 8, 0, 0).AddMilliseconds(seconds);
            DateTime t2 = SynTimeManager.GetInstance().GetDateTime();
            TimeSpan ts = t2 - t;
            if (ts.Days > 0)
                return "离线" + ts.Days + "天";
            else if (ts.Hours > 0)
                return "离线" + ts.Hours + "小时";
            else if(ts.Minutes > 0)
                return "离线" + ts.Minutes + "分钟";
            else
                return "离线" + ts.Seconds + "秒";




        }
    }
}
原创粉丝点击