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 + "秒";
}
}
}
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 + "秒";
}
}
}