//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Monday, January 28, 2019
|
//--------------------------------------------------------
|
|
using System;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using vnxbqy.UI;
|
using System.Collections.Generic;
|
using LitJson;
|
|
public class CrossServerQualifyingOfficialCell : ILBehaviour
|
{
|
Text offcialName;
|
Text playerName;
|
ItemCell itemCell;
|
ButtonEx reqButton;
|
Text reqText;
|
Button seeButton;
|
Text fightPower;
|
protected override void Awake()
|
{
|
offcialName = proxy.GetWidgtEx<Text>("offcialName");
|
playerName = proxy.GetWidgtEx<Text>("playerName");
|
itemCell = proxy.GetWidgtEx<ItemCell>("itemCell");
|
reqButton = proxy.GetWidgtEx<ButtonEx>("reqButton");
|
reqText = proxy.GetWidgtEx<Text>("reqText");
|
seeButton = proxy.GetWidgtEx<Button>("seeButton");
|
fightPower = proxy.GetWidgtEx<Text>("fightPower");
|
|
}
|
|
public void Display(int officialID)
|
{
|
var playerInfo = CrossServerQualifyingModel.Instance.GetOfficialPlayer(officialID);
|
fightPower.text = UIHelper.ReplaceLargeNum(playerInfo.FightPower);
|
offcialName.text = RichTextMsgReplaceConfig.GetRichReplace("ChampionshipOfficial", officialID);
|
playerName.text = playerInfo.PlayerID == 0 ? Language.Get("UnDetermind") : playerInfo.PlayerName;
|
var config = ILChampionshipOfficialConfig.Get(officialID);
|
var awards = JsonMapper.ToObject<int[][]>(config.DailyAwardItemList);
|
var itemId = awards[0][0];
|
var model = new ItemCellModel(itemId, false, (ulong)awards[0][1]);
|
itemCell.Init(model);
|
itemCell.button.SetListener(() =>
|
{
|
ItemTipUtility.Show(itemId);
|
});
|
seeButton.SetActiveIL(config.CanBeReplace == 1);
|
seeButton.SetListener(()=> {
|
|
var pack = new IL_CC023_tagCGChampionshipOfficialChallengeQuery();
|
pack.MainOfficialID = (ushort)CrossServerQualifyingModel.Instance.selectOffcialID;
|
pack.OfficialID = (ushort)officialID;
|
GameNetSystem.Instance.SendInfo(pack);
|
});
|
//非界主: 无官 - 申请 申请中,挑战; 有官-辞官和不显示
|
//界主:无官 - 申请列表或不显示(挑战); 有官-辞官
|
bool hasOfficialInfo = CrossServerQualifyingModel.Instance.rankOfficialDict.ContainsKey(officialID); //有数据,可能是空数据
|
var officialPlayer = CrossServerQualifyingModel.Instance.GetOfficialPlayer(officialID);
|
if (CrossServerQualifyingModel.Instance.selectOffcialID == CrossServerQualifyingModel.Instance.myOfficialID)
|
{
|
//本界主
|
if (officialPlayer.PlayerID != 0)
|
{
|
//辞退
|
reqButton.SetActiveIL(true);
|
reqButton.SetListener(() =>
|
{
|
OffcialKick(officialID);
|
});
|
reqText.text = Language.Get("CrossServerQualifying53");
|
}
|
else if (CrossServerQualifyingModel.Instance.selectOffcialSub == 0)
|
{
|
//申请列表
|
reqButton.SetActiveIL(true);
|
reqButton.SetListener(() =>
|
{
|
OpenApplyList(officialID);
|
});
|
|
var cnt = hasOfficialInfo ? CrossServerQualifyingModel.Instance.rankOfficialDict[officialID].ApplyPlayerList.Count : 0;
|
if (cnt != 0)
|
{
|
reqText.text = Language.Get("TeamApplicationList") + UIHelper.AppendColor(TextColType.Green, "(" + cnt + ")");
|
}
|
else
|
{
|
reqText.text = Language.Get("TeamApplicationList");
|
}
|
}
|
else
|
{
|
reqButton.SetActiveIL(false);
|
}
|
}
|
else if (CrossServerQualifyingModel.Instance.myOfficialID == 0)
|
{
|
//自己无官
|
if (config.CanBeReplace == 1)
|
{
|
reqButton.SetActiveIL(true);
|
reqText.text = Language.Get("Multiple_Challenge");
|
|
reqButton.SetListener(() => {
|
RequestOffcial(officialID, true);
|
});
|
}
|
else
|
{
|
if (hasOfficialInfo && officialPlayer.PlayerID != 0)
|
{
|
//被别人占领了
|
reqButton.SetActiveIL(false);
|
}
|
else
|
{
|
reqButton.SetActiveIL(true);
|
reqButton.SetListener(() => {
|
RequestOffcial(officialID, false);
|
});
|
if (CrossServerQualifyingModel.Instance.IsInApply(officialID))
|
{
|
reqText.text = Language.Get("CrossServerQualifying58");
|
}
|
else
|
{
|
reqText.text = Language.Get("CrossServerQualifying51");
|
}
|
}
|
|
}
|
}
|
else if (CrossServerQualifyingModel.Instance.myOfficialID == officialID)
|
{
|
//有官且是自己的官位
|
reqButton.SetActiveIL(true);
|
reqButton.SetListener(() => {
|
OffcialLeave(officialID);
|
});
|
reqText.text = Language.Get("CrossServerQualifying53");
|
}
|
else
|
{
|
reqButton.SetActiveIL(false);
|
}
|
}
|
|
void OffcialKick(int offcialID)
|
{
|
|
var lastTime = TimeUtility.GetTime(CrossServerQualifyingModel.Instance.rankOfficialDict[CrossServerQualifyingModel.Instance.myOfficialID].LastDismissJuniorTime);
|
if ((ILTimeUtility.ServerCrossNow - lastTime).TotalSeconds < CrossServerQualifyingModel.Instance.kickSeconds)
|
{
|
SysNotifyMgr.Instance.ShowTip("CrossServerQualifying8");
|
return;
|
}
|
|
var player = CrossServerQualifyingModel.Instance.GetOfficialPlayer(offcialID);
|
ConfirmCancel.ShowPopConfirm(
|
Language.Get("Mail101"),
|
Language.Get("CrossServerQualifying54", player.PlayerName),
|
|
(bool _ok) =>
|
{
|
if (_ok)
|
{
|
var pack = new IL_CC024_tagCGChampionshipOfficialKick();
|
pack.MainOfficialID = (ushort)CrossServerQualifyingModel.Instance.myOfficialID;
|
pack.OfficialID = (ushort)offcialID;
|
pack.PlayerID = player.PlayerID;
|
GameNetSystem.Instance.SendInfo(pack);
|
}
|
}
|
);
|
}
|
|
void OffcialLeave(int offcialID)
|
{
|
ConfirmCancel.ShowPopConfirm(
|
Language.Get("Mail101"),
|
Language.Get("CrossServerQualifying55"),
|
(bool _ok) =>
|
{
|
if (_ok)
|
{
|
var pack = new IL_CC025_tagCGChampionshipOfficialLeave();
|
pack.MainOfficialID = (ushort)CrossServerQualifyingModel.Instance.selectOffcialID;
|
pack.OfficialID = (ushort)offcialID;
|
GameNetSystem.Instance.SendInfo(pack);
|
}
|
}
|
);
|
}
|
|
void RequestOffcial(int officialID, bool isChallenge)
|
{
|
if (PlayerDatas.Instance.baseData.realmLevel < CrossServerQualifyingModel.Instance.offcialNeedRealm)
|
{
|
SysNotifyMgr.Instance.ShowTip("RealmLVNoEnough", RealmConfig.Get(CrossServerQualifyingModel.Instance.offcialNeedRealm).Name);
|
return;
|
}
|
if (isChallenge)
|
{
|
var pack = new IL_CC121_tagCMChampionshipOfficialChallenge();
|
pack.ZoneID = (byte)CrossServerQualifyingModel.Instance.officialZoneID;
|
pack.MainOfficialID = (ushort)CrossServerQualifyingModel.Instance.selectOffcialID;
|
pack.OfficialID = (ushort)officialID;
|
pack.PlayerID = CrossServerQualifyingModel.Instance.GetOfficialPlayer(officialID).PlayerID;
|
GameNetSystem.Instance.SendInfo(pack);
|
}
|
else
|
{
|
var pack = new IL_CC120_tagCMChampionshipOfficialApply();
|
pack.ZoneID = (byte)CrossServerQualifyingModel.Instance.officialZoneID;
|
pack.MainOfficialID = (ushort)CrossServerQualifyingModel.Instance.selectOffcialID;
|
pack.OfficialID = (ushort)officialID;
|
if (CrossServerQualifyingModel.Instance.IsInApply(officialID))
|
{
|
pack.Cancel = 1;
|
GameNetSystem.Instance.SendInfo(pack);
|
return;
|
}
|
|
if (CrossServerQualifyingModel.Instance.rankOfficialDict.ContainsKey(officialID) &&
|
CrossServerQualifyingModel.Instance.rankOfficialDict[officialID].ApplyPlayerList.Count >=
|
CrossServerQualifyingModel.Instance.applyPlayerMaxCnt)
|
{
|
SysNotifyMgr.Instance.ShowTip("ChampionshipOfficialApplyFull");
|
return;
|
}
|
|
if (CrossServerQualifyingModel.Instance.myApplyCnt >=
|
CrossServerQualifyingModel.Instance.applyMaxTimes)
|
{
|
SysNotifyMgr.Instance.ShowTip("ChampionshipOfficialApplyMax");
|
return;
|
}
|
|
pack.Cancel = 0;
|
GameNetSystem.Instance.SendInfo(pack);
|
}
|
}
|
|
void OpenApplyList(int offcialID)
|
{
|
CrossServerQualifyingModel.Instance.selectApplyOfficialID = offcialID;
|
WindowCenter.Instance.OpenIL<CrossServerqualifyingOfficialApplyWin>();
|
}
|
|
|
}
|