//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Monday, January 28, 2019
|
//--------------------------------------------------------
|
|
using System;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using vnxbqy.UI;
|
using System.Collections.Generic;
|
using System.Linq;
|
|
public class CrossServerQualifying8Win : ILWindow
|
{
|
Transform raceTable;
|
Text waitTxt;
|
Button raceBtn;
|
Button giftBtn;
|
Button guessBtn;
|
Text time1;
|
Text time11;
|
Text time2;
|
Text time22;
|
Text time3;
|
List<Transform> players8 = new List<Transform>();
|
List<Transform> players4 = new List<Transform>();
|
ImageEx winA;
|
ImageEx winB;
|
Image failAGrayImg;
|
Image failBGrayImg;
|
Text nameA;
|
Text nameB;
|
Text fightPowerA;
|
Text fightPowerB;
|
Image arrow;
|
Text nextTime;
|
|
ButtonEx enterGame;
|
RectTransform pkTagetObjs; //有比赛场次的时候显示
|
Text timeTip; //显示自己当前进场信息和小窗推送配合
|
Text pkTimesText;
|
Text pkScoreText;
|
RectTransform tagPlayerObj;
|
RectTransform todayRaceObj;
|
Text todayRaceText;
|
Button littleCloseBtn;
|
|
Button finalsBtn; //查看决赛积分按钮
|
RectTransform queryScoreObj;
|
Text queryScoreText;
|
|
|
#region Built-in
|
protected override void BindController()
|
{
|
waitTxt = proxy.GetWidgtEx<Text>("waitTxt");
|
raceTable = proxy.GetWidgtEx<Transform>("8qiang");
|
timeTip = proxy.GetWidgtEx<Text>("TIPTime");
|
raceBtn = proxy.GetWidgtEx<Button>("battleTableBtn");
|
enterGame = proxy.GetWidgtEx<ButtonEx>("enterGame");
|
giftBtn = proxy.GetWidgtEx<Button>("giftBtn");
|
guessBtn = proxy.GetWidgtEx<Button>("guessBtn");
|
time1 = proxy.GetWidgtEx<Text>("time1");
|
time11 = proxy.GetWidgtEx<Text>("time11");
|
time2 = proxy.GetWidgtEx<Text>("time2");
|
time22 = proxy.GetWidgtEx<Text>("time22");
|
time3 = proxy.GetWidgtEx<Text>("time3");
|
|
for (int i = 0; i < 8; i++)
|
{
|
players8.Add(proxy.GetWidgtEx<Transform>("player" + i));
|
}
|
|
for (int i = 0; i < 4; i++)
|
{
|
players4.Add(proxy.GetWidgtEx<Transform>("player2_" + i));
|
}
|
|
winA = proxy.GetWidgtEx<ImageEx>("trophyA");
|
winB = proxy.GetWidgtEx<ImageEx>("trophyB");
|
failAGrayImg = proxy.GetWidgtEx<Image>("grayleft");
|
failBGrayImg = proxy.GetWidgtEx<Image>("grayright");
|
nameA = proxy.GetWidgtEx<Text>("nameA");
|
nameB = proxy.GetWidgtEx<Text>("nameB");
|
fightPowerA = proxy.GetWidgtEx<Text>("fightPowerA");
|
fightPowerB = proxy.GetWidgtEx<Text>("fightPowerB");
|
arrow = proxy.GetWidgtEx<Image>("arrow");
|
nextTime = proxy.GetWidgtEx<Text>("nextTime");
|
|
pkTagetObjs = proxy.GetWidgtEx<RectTransform>("chanllenge");
|
pkTimesText = proxy.GetWidgtEx<Text>("challengeTimes");
|
pkScoreText = proxy.GetWidgtEx<Text>("score");
|
tagPlayerObj = proxy.GetWidgtEx<RectTransform>("tagetPlayer");
|
todayRaceObj = proxy.GetWidgtEx<RectTransform>("raceTip");
|
todayRaceText = proxy.GetWidgtEx<Text>("todayrace");
|
littleCloseBtn = proxy.GetWidgtEx<Button>("littleClose");
|
|
finalsBtn = proxy.GetWidgtEx<Button>("finalsBtn");
|
queryScoreObj = proxy.GetWidgtEx<RectTransform>("scoreTip");
|
queryScoreText = proxy.GetWidgtEx<Text>("scoreText");
|
}
|
|
protected override void AddListeners()
|
{
|
enterGame.SetListener(EnterGame);
|
guessBtn.SetListener(() => {
|
arrow.SetActiveIL(false);
|
WindowCenter.Instance.OpenIL<CrossServerQualifyingGuess4Win>();
|
});
|
|
raceBtn.SetListener(()=> {
|
if (CrossServerQualifyingModel.Instance.GetOpenTimeIndex() == -1)
|
return;
|
WindowCenter.Instance.OpenIL<CrossServerQualifyingRaceWin>();
|
});
|
|
giftBtn.SetListener(() => {
|
WindowCenter.Instance.OpenIL<CrossServerQualifyingRankWin>();
|
});
|
|
littleCloseBtn.SetListener(() => {
|
CrossServerQualifyingModel.Instance.isShowRaceInfoYet = true;
|
todayRaceObj.SetActive(!CrossServerQualifyingModel.Instance.isShowRaceInfoYet);
|
});
|
|
finalsBtn.AddListener(() => {
|
uint playerID = 0;
|
var battle = CrossServerQualifyingModel.Instance.battleInfo[2];
|
if (battle.Count > 0)
|
{
|
var playerIDs = battle[battle.Keys.ToList()[0]];
|
playerID = playerIDs.PlayerIDA == 0 ? playerIDs.PlayerIDB : playerIDs.PlayerIDA;
|
}
|
QueryRaceScoreEvent(playerID, 2);
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
CrossServerQualifyingModel.Instance.QueryRaceScoreEvent += QueryRaceScoreEvent;
|
GlobalTimeEvent.Instance.minuteEvent += OnMinuteEvent;
|
CrossServerQualifyingModel.Instance.UpdateCrossChampionshipPKZoneGroupInfoEvent += UpdateRace;
|
|
var battleID = CrossServerQualifyingModel.Instance.GetBattleID();
|
if (battleID == -1)
|
{
|
arrow.SetActiveIL(false);
|
var index = CrossServerQualifyingModel.Instance.GetNextOpenTimeIndex();
|
if (index > -1)
|
{
|
nextTime.text = Language.Get("CrossServerQualifying64") + CrossServerQualifyingModel.Instance.openTimes[index].ToString("yyyy-MM-dd");
|
}
|
else
|
{
|
nextTime.text = "";
|
}
|
}
|
else
|
{
|
nextTime.text = "";
|
arrow.SetActiveIL(ILChampionshipTimeConfig.Get(battleID).StateValue == 40);
|
}
|
|
failAGrayImg.SetActiveIL(false);
|
failBGrayImg.SetActiveIL(false);
|
queryScoreObj.SetActiveIL(false);
|
}
|
protected override void OnAfterOpen()
|
{
|
if (CrossServerQualifyingModel.Instance.battleInfo.ContainsKey(8))
|
{
|
raceTable.SetActiveIL(true);
|
waitTxt.SetActiveIL(false);
|
|
OnMinuteEvent();
|
DisplayTime();
|
DisplayRace();
|
|
}
|
else
|
{
|
pkTagetObjs.SetActiveIL(false);
|
todayRaceObj.SetActiveIL(false);
|
DisplayTime();
|
raceTable.SetActiveIL(false);
|
waitTxt.SetActiveIL(true);
|
}
|
}
|
|
protected override void OnPreClose()
|
{
|
CrossServerQualifyingModel.Instance.QueryRaceScoreEvent -= QueryRaceScoreEvent;
|
GlobalTimeEvent.Instance.minuteEvent -= OnMinuteEvent;
|
CrossServerQualifyingModel.Instance.UpdateCrossChampionshipPKZoneGroupInfoEvent -= UpdateRace;
|
}
|
#endregion
|
void DisplayTime()
|
{
|
time1.text = CrossServerQualifyingModel.Instance.GetStartBattleTime(ILChampionshipTimeConfig.GetBattleID(82));
|
time11.text = CrossServerQualifyingModel.Instance.GetStartBattleTime(ILChampionshipTimeConfig.GetBattleID(82));
|
time2.text = CrossServerQualifyingModel.Instance.GetStartBattleTime(ILChampionshipTimeConfig.GetBattleID(42));
|
time22.text = CrossServerQualifyingModel.Instance.GetStartBattleTime(ILChampionshipTimeConfig.GetBattleID(42));
|
var timeStr = CrossServerQualifyingModel.Instance.GetStartBattleTime(ILChampionshipTimeConfig.GetBattleID(22));
|
if (timeStr.Length > 0)
|
{
|
time3.text = timeStr.Split(' ')[1];
|
}
|
else
|
{
|
time3.text = string.Empty;
|
}
|
}
|
|
//决赛的两个人
|
void DisplayFinals()
|
{
|
if (CrossServerQualifyingModel.Instance.battleInfo.ContainsKey(2))
|
{
|
var battle = CrossServerQualifyingModel.Instance.battleInfo[2];
|
if (battle.Count > 0)
|
{
|
var playerIDs = battle[battle.Keys.ToList()[0]];
|
var playerAID = playerIDs.PlayerIDA;
|
var playerBID = playerIDs.PlayerIDB;
|
if (playerIDs.WinPlayerID == 0)
|
{
|
winA.SetActiveIL(false);
|
winB.SetActiveIL(false);
|
failAGrayImg.SetActiveIL(false);
|
failBGrayImg.SetActiveIL(false);
|
}
|
else if (playerIDs.WinPlayerID == playerIDs.PlayerIDA)
|
{
|
winA.SetActiveIL(true);
|
winA.gray = false;
|
winB.SetActiveIL(true);
|
winB.gray = true;
|
failAGrayImg.SetActiveIL(false);
|
failBGrayImg.SetActiveIL(true);
|
}
|
else
|
{
|
winA.SetActiveIL(true);
|
winA.gray = true;
|
winB.SetActiveIL(true);
|
winB.gray = false;
|
failAGrayImg.SetActiveIL(true);
|
failBGrayImg.SetActiveIL(false);
|
}
|
if (playerAID == 0)
|
{
|
nameA.text = Language.Get("UnDetermind");
|
fightPowerA.text = "0";
|
}
|
else
|
{
|
nameA.text = CrossServerQualifyingModel.Instance.fightersInfo[playerAID].PlayerName;
|
fightPowerA.text = UIHelper.ReplaceLargeNum(CrossServerQualifyingModel.Instance.fightersInfo[playerAID].FightPower);
|
}
|
|
if (playerBID == 0)
|
{
|
nameB.text = Language.Get("UnDetermind");
|
fightPowerB.text = "0";
|
}
|
else
|
{
|
nameB.text = CrossServerQualifyingModel.Instance.fightersInfo[playerBID].PlayerName;
|
fightPowerB.text = UIHelper.ReplaceLargeNum(CrossServerQualifyingModel.Instance.fightersInfo[playerBID].FightPower);
|
}
|
}
|
}
|
else
|
{
|
winA.SetActiveIL(false);
|
winB.SetActiveIL(false);
|
failAGrayImg.SetActiveIL(false);
|
failBGrayImg.SetActiveIL(false);
|
nameA.text = Language.Get("UnDetermind");
|
fightPowerA.text = "0";
|
nameB.text = Language.Get("UnDetermind");
|
fightPowerB.text = "0";
|
}
|
}
|
|
void DisplayRace()
|
{
|
DisplayFinals();
|
|
//8强
|
var battles = CrossServerQualifyingModel.Instance.battleInfo[8];
|
var keys = battles.Keys.ToList();
|
keys.Sort();
|
List<Int2> player8List = new List<Int2>();
|
for (int i = 0; i < keys.Count; i++)
|
{
|
var battleNum = keys[i];
|
player8List.Add(new Int2 ((int)battles[battleNum].PlayerIDA, (int)battles[battleNum].WinPlayerID));
|
player8List.Add(new Int2((int)battles[battleNum].PlayerIDB, (int)battles[battleNum].WinPlayerID));
|
}
|
for (int i = 0; i < players8.Count; i++)
|
{
|
var playerID = i >= player8List.Count ? new Int2(0, 0) : player8List[i];
|
var _cell = players8[i].GetILBehaviour<CSQShootOutPlayerCell>();
|
_cell.Display((uint)playerID.x, (uint)playerID.y, 8);
|
}
|
|
//4强
|
if (CrossServerQualifyingModel.Instance.battleInfo.ContainsKey(4))
|
{
|
battles = CrossServerQualifyingModel.Instance.battleInfo[4];
|
keys = battles.Keys.ToList();
|
keys.Sort();
|
List<Int2> player4List = new List<Int2>();
|
for (int i = 0; i < keys.Count; i++)
|
{
|
var battleNum = keys[i];
|
player4List.Add(new Int2((int)battles[battleNum].PlayerIDA, (int)battles[battleNum].WinPlayerID));
|
player4List.Add(new Int2((int)battles[battleNum].PlayerIDB, (int)battles[battleNum].WinPlayerID));
|
}
|
for (int i = 0; i < players4.Count; i++)
|
{
|
var playerID = i >= player4List.Count ? new Int2(0, 0) : player4List[i];
|
var _cell = players4[i].GetILBehaviour<CSQShootOutPlayerCell>();
|
_cell.Display((uint)playerID.x, (uint)playerID.y, 4);
|
}
|
}
|
else
|
{
|
for (int i = 0; i < players4.Count; i++)
|
{
|
var _cell = players4[i].GetILBehaviour<CSQShootOutPlayerCell>();
|
_cell.Display(0, 0);
|
}
|
}
|
}
|
|
|
void EnterGame()
|
{
|
if (CrossServerQualifyingModel.Instance.nowGroupMark <= 8)
|
{
|
var battleID = CrossServerQualifyingModel.Instance.GetBattleID();
|
Debug.LogFormat("8强排位赛 流程ID {0}", battleID);
|
var config = ILChampionshipTimeConfig.Get(battleID);
|
if (config.StateValue % 10 == 2)
|
{
|
//进场时间
|
CrossServerQualifyingModel.Instance.EnterCrossServerQualifying();
|
}
|
else
|
{
|
//非比赛时间
|
SysNotifyMgr.Instance.ShowTip("CrossServerQualifying3");
|
}
|
}
|
else
|
{
|
//非比赛时间
|
SysNotifyMgr.Instance.ShowTip("CrossServerQualifying3");
|
}
|
}
|
|
void OnMinuteEvent()
|
{
|
pkTagetObjs.SetActiveIL(false);
|
todayRaceObj.SetActiveIL(false);
|
|
var groupMark = CrossServerQualifyingModel.Instance.nowGroupMark;
|
if (groupMark <= 8 && groupMark != 0)
|
{
|
var isInBattle = CrossServerQualifyingModel.Instance.HaveMyBattle(groupMark);
|
//如果玩家界面一直开着就需要刷新
|
int battleID = CrossServerQualifyingModel.Instance.GetBattleID();
|
if (isInBattle && ILChampionshipTimeConfig.Get(battleID).StateValue % 10 == 2)
|
{
|
pkTagetObjs.SetActiveIL(true);
|
//ItemOverdue104 {0}分
|
//ItemTipTime1 剩余时间:
|
//OSCActivityNotOpen 活动未开始
|
//FamilyMatchAlreadyEnd < color =#109d06>已结束</color>
|
double minute = CrossServerQualifyingModel.Instance.GetRaceEndRemindMinute(battleID);
|
if (minute >= 0)
|
{
|
timeTip.text = StringUtility.Contact(Language.Get("ItemTipTime1"), " ", Language.Get("ItemOverdue104", (int)minute));
|
}
|
else
|
{
|
timeTip.text = Language.Get("FamilyMatchAlreadyEnd");
|
}
|
ShowBattleInfo(groupMark);
|
}
|
|
if (isInBattle)
|
{
|
ShowTodayRaceInfo();
|
}
|
}
|
|
}
|
|
|
void ShowBattleInfo(uint groupMark)
|
{
|
uint tagPlayerID;
|
var battleResult = CrossServerQualifyingModel.Instance.GetMyBattleInfo(groupMark, out tagPlayerID);
|
int challengeCnt = battleResult.ContainsKey((int)PlayerDatas.Instance.baseData.PlayerID) ? battleResult[(int)PlayerDatas.Instance.baseData.PlayerID].Length : 0;
|
//FindPrecious_14 挑战次数:
|
pkTimesText.text = StringUtility.Contact(Language.Get("FindPrecious_14"), " ",
|
CrossServerQualifyingModel.Instance.challengeMaxCnt - challengeCnt,
|
"/", CrossServerQualifyingModel.Instance.challengeMaxCnt);
|
|
// 战斗结果明细 {"playerID":[[第1局胜负,第1局总积分,胜负基础分,hp分,时间分], ...], ...}
|
int myScore = 0;
|
int tagScore = 0;
|
var keys = battleResult.Keys.ToList();
|
for (int i = 0; i < keys.Count; i++)
|
{
|
var key = keys[i];
|
if (key == (int)PlayerDatas.Instance.baseData.PlayerID)
|
{
|
for (int j = 0; j < battleResult[key].Length; j++)
|
{
|
myScore += battleResult[key][j][1];
|
}
|
}
|
else
|
{
|
for (int j = 0; j < battleResult[key].Length; j++)
|
{
|
tagScore += battleResult[key][j][1];
|
}
|
}
|
}
|
//L2033 比分:
|
pkScoreText.text = StringUtility.Contact(Language.Get("L2033"), " ", myScore, " - ", tagScore);
|
|
var _cell = tagPlayerObj.GetILBehaviour<CSQShootOutPlayerCell>();
|
_cell.Display(tagPlayerID, 0);
|
}
|
void ShowTodayRaceInfo()
|
{
|
var index = CrossServerQualifyingModel.Instance.GetOpenTimeIndex();
|
todayRaceObj.SetActiveIL(!CrossServerQualifyingModel.Instance.isShowRaceInfoYet);
|
|
string raceInfo = StringUtility.Contact(Language.Get("CrossServerQualifying70"), "</r>");
|
foreach (int mark in CrossServerQualifyingModel.Instance.group8BtnMarks)
|
{
|
int tmpBattleID = ILChampionshipTimeConfig.GetBattleID(mark * 10 + 2);
|
var tmpConfig = ILChampionshipTimeConfig.Get(tmpBattleID);
|
|
var showTime = CrossServerQualifyingModel.Instance.openTimes[index].AddDays(tmpConfig.StartDay - 1);
|
showTime = showTime.AddSeconds(tmpConfig.StartHour * 60 * 60 + tmpConfig.StartMinute * 60);
|
|
raceInfo = StringUtility.Contact(raceInfo, "</r>", tmpConfig.Title, " ",
|
showTime.ToString("yyyy-MM-dd HH:mm"), " -> ",
|
tmpConfig.EndHour.ToString("D2"), ":", tmpConfig.EndMinute.ToString("D2"));
|
}
|
todayRaceText.text = raceInfo;
|
}
|
|
void UpdateRace()
|
{
|
if (!raceTable.gameObject.activeSelf)
|
{
|
OnAfterOpen();
|
}
|
else
|
{
|
DisplayRace();
|
}
|
}
|
|
void QueryRaceScoreEvent(uint playerID, uint groupMark)
|
{
|
if (groupMark == 0 || playerID == 0)
|
{
|
todayRaceObj.SetActiveIL(false);
|
queryScoreObj.SetActiveIL(false);
|
return;
|
}
|
|
var battleInfo = CrossServerQualifyingModel.Instance.QueryPKScoreInfoByPlayerID(groupMark, playerID);
|
if (battleInfo.PlayerIDA == 0 || battleInfo.PlayerIDB == 0)
|
{
|
todayRaceObj.SetActiveIL(false);
|
queryScoreObj.SetActiveIL(false);
|
return;
|
}
|
|
todayRaceObj.SetActiveIL(false);
|
queryScoreObj.SetActiveIL(true);
|
|
int tagScoreA = 0;
|
int tagScoreB = 0;
|
var battleResult = battleInfo.battleResult;
|
var keys = battleResult.Keys.ToList();
|
for (int i = 0; i < keys.Count; i++)
|
{
|
var key = keys[i];
|
if (key == battleInfo.PlayerIDA)
|
{
|
for (int j = 0; j < battleResult[key].Length; j++)
|
{
|
tagScoreA += battleResult[key][j][1];
|
}
|
}
|
else
|
{
|
for (int j = 0; j < battleResult[key].Length; j++)
|
{
|
tagScoreB += battleResult[key][j][1];
|
}
|
}
|
}
|
|
var nameA = CrossServerQualifyingModel.Instance.fightersInfo.ContainsKey(battleInfo.PlayerIDA) ? CrossServerQualifyingModel.Instance.fightersInfo[battleInfo.PlayerIDA].PlayerName : Language.Get("UnDetermind");
|
var nameB = CrossServerQualifyingModel.Instance.fightersInfo.ContainsKey(battleInfo.PlayerIDB) ? CrossServerQualifyingModel.Instance.fightersInfo[battleInfo.PlayerIDB].PlayerName : Language.Get("UnDetermind");
|
|
queryScoreText.text = StringUtility.Contact(nameA, UIHelper.AppendColor(TextColType.Orange, " VS "), nameB, "</r>",
|
Language.Get("L2033"), " ", tagScoreA, " - ", tagScoreB);
|
}
|
|
}
|