using System.Linq;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using vnxbqy.UI;
|
|
public class CrossServerGodBattleFieldAssortWin : Window
|
{
|
[SerializeField] TextEx txtTeamName;
|
[SerializeField] TextEx txtTeamID;
|
[SerializeField] TextEx txtTeamPowerNum;
|
[SerializeField] TextEx txtTeamCount;
|
[SerializeField] ClickScreenOtherSpace clickScreenOtherSpace;
|
[SerializeField] ImageEx imgChannelBG;
|
[SerializeField] ButtonEx btnApplicationList;
|
[SerializeField] ButtonEx btnInvitationTeamMembers;
|
[SerializeField] ButtonEx btnWorldChannel;
|
[SerializeField] ButtonEx btnCrossServiceChannel;
|
[SerializeField] ScrollerController scroller;
|
[SerializeField] TextEx txtWorldChannel;
|
[SerializeField] TextEx txtCrossServiceChannel;
|
[SerializeField] RichText txtRichCopy;
|
|
bool buttonShow = false;
|
bool isHaveTeam;
|
bool isCaptain;
|
uint teamID;
|
AssortTeamInfo teamInfo;
|
AssortMemberInfo memberInfo;
|
CrossServerGodBattleFieldAssortModel model { get { return ModelCenter.Instance.GetModel<CrossServerGodBattleFieldAssortModel>(); } }
|
|
protected override void BindController()
|
{
|
|
}
|
|
protected override void AddListeners()
|
{
|
clickScreenOtherSpace.RemoveAllListeners();
|
clickScreenOtherSpace.AddListener(() =>
|
{
|
imgChannelBG.SetActive(false);
|
});
|
|
btnInvitationTeamMembers.SetListener(() =>
|
{
|
buttonShow = !buttonShow;
|
imgChannelBG.SetActive(buttonShow);
|
});
|
|
btnApplicationList.SetListener(() =>
|
{
|
WindowCenter.Instance.Open<CrossServerGodBattleFieldAssortApplicationListWin>();
|
});
|
|
btnWorldChannel.SetListener(WorldChannel);
|
btnCrossServiceChannel.SetListener(CrossServiceChannel);
|
}
|
|
protected override void OnPreOpen()
|
{
|
scroller.OnRefreshCell += OnRefreshCell;
|
model.UpdateTeamDissolveEvent += OnUpdateTeamDissolveEvent;
|
model.UpdateTeamInfoEvent += OnUpdateTeamInfoEvent;
|
GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
|
model.UpdatePlayerOnlineStateInfoEvent += OnUpdatePlayerOnlineStateInfoEvent;
|
Display();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
if (TimeUtility.OpenDay < GeneralDefine.crossServerBattleFieldOpenDay)
|
{
|
//防范其他情况误打开
|
Close();
|
return;
|
}
|
CreateScroller();
|
}
|
|
void Display()
|
{
|
isHaveTeam = model.TryGetPlayerTeamInfo(out isCaptain, out teamID, out teamInfo);
|
if (!isHaveTeam || !model.TryGetTeamCaptainMemberInfo(teamInfo, out memberInfo) || teamInfo.MemberDict == null)
|
{
|
WindowCenter.Instance.Close<CrossServerGodBattleFieldAssortWin>();
|
return;
|
}
|
imgChannelBG.SetActive(false);
|
btnApplicationList.SetActive(isCaptain);
|
string serverName = ServerListCenter.Instance.GetServerName((int)memberInfo.ServerID);
|
txtTeamName.text = Language.Get("GodBattleFieldAssort11", Language.Get("BlessedLand043", serverName, model.IsNoTeamName() ? memberInfo.Name : teamInfo.TeamName));
|
txtTeamID.text = Language.Get("GodBattleFieldAssort12", teamID);
|
txtTeamPowerNum.text = Language.Get("GodBattleFieldAssort13", UIHelper.ReplaceLargeNum(model.GetTeamTotalPower(teamInfo)));
|
txtTeamCount.text = Language.Get("GodBattleFieldAssort40", StringUtility.Contact(teamInfo.MemberDict.Count, "/", FunctionTeamSetConfig.Get((int)model.FuncMapID).MemberMax));
|
txtRichCopy.text = Language.Get("GodBattleFieldAssort35", teamID);
|
}
|
|
void CreateScroller()
|
{
|
scroller.Refresh();
|
var keyList = teamInfo.MemberDict.Keys.ToList();
|
for (int i = 0; i < keyList.Count; i++)
|
{
|
uint playerID = keyList[i];
|
CellInfo cell = new CellInfo();
|
cell.infoInt1 = (int)playerID;
|
scroller.AddCell(ScrollerDataType.Header, i, cell);
|
}
|
scroller.Restart();
|
}
|
|
private void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell as CrossServerGodBattleFieldAssortCell;
|
_cell.Display(_cell.index, cell);
|
}
|
|
protected override void OnAfterClose()
|
{
|
|
}
|
|
protected override void OnPreClose()
|
{
|
scroller.OnRefreshCell -= OnRefreshCell;
|
model.UpdateTeamDissolveEvent -= OnUpdateTeamDissolveEvent;
|
model.UpdateTeamInfoEvent -= OnUpdateTeamInfoEvent;
|
GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
|
model.UpdatePlayerOnlineStateInfoEvent -= OnUpdatePlayerOnlineStateInfoEvent;
|
}
|
private void OnUpdatePlayerOnlineStateInfoEvent()
|
{
|
Display();
|
CreateScroller();
|
}
|
private void OnUpdateTeamInfoEvent()
|
{
|
if (!model.TryGetPlayerTeamInfo(out isCaptain, out teamID, out teamInfo))
|
{
|
WindowCenter.Instance.Close<CrossServerGodBattleFieldAssortWin>();
|
}
|
else
|
{
|
Display();
|
CreateScroller();
|
}
|
}
|
|
void OnUpdateTeamDissolveEvent()
|
{
|
if (!model.TryGetPlayerTeamInfo(out isCaptain, out teamID, out teamInfo))
|
{
|
WindowCenter.Instance.Close<CrossServerGodBattleFieldAssortWin>();
|
}
|
}
|
void OnSecondEvent()
|
{
|
ChangeCdTime();
|
}
|
|
void ChangeCdTime()
|
{
|
btnWorldChannel.SetColorful(null, model.GetWorldChannelCoolDownEndTime() <= 0);
|
btnCrossServiceChannel.SetColorful(null, model.GetCrossServiceChannelCoolDownEndTime() <= 0);
|
txtWorldChannel.text = model.GetWorldChannelCoolDownEndTime() > 0 ? Language.Get("GodBattleFieldAssort38", model.GetWorldChannelCoolDownEndTime()) : Language.Get("GodBattleFieldAssort16");
|
txtCrossServiceChannel.text = model.GetCrossServiceChannelCoolDownEndTime() > 0 ? Language.Get("GodBattleFieldAssort39", model.GetCrossServiceChannelCoolDownEndTime()) : Language.Get("GodBattleFieldAssort17");
|
}
|
|
void WorldChannel()
|
{
|
if (model.IsOpenAction())
|
{
|
SysNotifyMgr.Instance.ShowTip("GodBattleFieldAssort03");
|
return;
|
}
|
//在冷却时间中
|
if (model.GetWorldChannelCoolDownEndTime() > 0)
|
return;
|
model.SetWorldChannelTime();
|
model.SaveAllTime();
|
|
int serverID = UIHelper.GetServerIDByAccount(PlayerDatas.Instance.baseData.AccID);
|
string serverName = ServerListCenter.Instance.GetServerName(serverID);
|
string playerName = PlayerDatas.Instance.baseData.PlayerName;
|
uint playerID = PlayerDatas.Instance.baseData.PlayerID;
|
ChatCtrl.Inst.SendChatInfo(ChatInfoType.World, Language.Get("GodBattleFieldAssort28", serverName, playerName, teamID, playerID), null, false, false);
|
}
|
|
void CrossServiceChannel()
|
{
|
if (model.IsOpenAction())
|
{
|
SysNotifyMgr.Instance.ShowTip("GodBattleFieldAssort03");
|
return;
|
}
|
//在冷却时间中
|
if (model.GetCrossServiceChannelCoolDownEndTime() > 0)
|
return;
|
model.SetCrossServiceChannelTime();
|
model.SaveAllTime();
|
int serverID = UIHelper.GetServerIDByAccount(PlayerDatas.Instance.baseData.AccID);
|
string serverName = ServerListCenter.Instance.GetServerName(serverID);
|
string playerName = PlayerDatas.Instance.baseData.PlayerName;
|
uint playerID = PlayerDatas.Instance.baseData.PlayerID;
|
ChatCtrl.Inst.SendChatInfo(ChatInfoType.CrossServer, Language.Get("GodBattleFieldAssort28", serverName, playerName, teamID, playerID), null, false, false);
|
}
|
}
|