//--------------------------------------------------------
|
// [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 CrossServerQualifying64Win : ILWindow
|
{
|
Button btn64;
|
Button btn32;
|
Button btn16;
|
List<Image> selectImgs = new List<Image>();
|
Button timeBtn;
|
ScrollerController scroller;
|
Button guessBtn;
|
Image lineImg;
|
Text waitTxt;
|
Image arrow;
|
|
ButtonEx enterGame;
|
Text pkResultText;
|
RectTransform pkTagetObjs; //有比赛场次的时候显示
|
Text timeTip; //显示自己当前进场信息和小窗推送配合
|
Text pkTimesText;
|
Text pkScoreText;
|
RectTransform tagPlayerObj;
|
RectTransform todayRaceObj;
|
Text todayRaceText;
|
Button littleCloseBtn;
|
|
RectTransform queryScoreObj;
|
Text queryScoreText;
|
|
|
#region Built-in
|
protected override void BindController()
|
{
|
btn64 = proxy.GetWidgtEx<Button>("btn1");
|
btn32 = proxy.GetWidgtEx<Button>("btn2");
|
btn16 = proxy.GetWidgtEx<Button>("btn3");
|
|
for (int i = 1; i < 4; i++)
|
{
|
selectImgs.Add(proxy.GetWidgtEx<Image>("select" + i));
|
}
|
|
timeBtn = proxy.GetWidgtEx<Button>("timeBtn");
|
enterGame = proxy.GetWidgtEx<ButtonEx>("enterGame");
|
scroller = proxy.GetWidgtEx<ScrollerController>("scroller");
|
timeTip = proxy.GetWidgtEx<Text>("TIPTime");
|
waitTxt = proxy.GetWidgtEx<Text>("waitTxt");
|
lineImg = proxy.GetWidgtEx<Image>("line");
|
guessBtn = proxy.GetWidgtEx<Button>("guessBtn");
|
arrow = proxy.GetWidgtEx<Image>("arrow");
|
|
pkResultText = proxy.GetWidgtEx<Text>("pkResult");
|
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");
|
|
queryScoreObj = proxy.GetWidgtEx<RectTransform>("scoreTip");
|
queryScoreText = proxy.GetWidgtEx<Text>("scoreText");
|
|
}
|
|
protected override void AddListeners()
|
{
|
btn64.SetListener(()=> {
|
CrossServerQualifyingModel.Instance.select64Index = 0;
|
OnSelectGroup();
|
});
|
|
btn32.SetListener(() => {
|
CrossServerQualifyingModel.Instance.select64Index = 1;
|
OnSelectGroup();
|
});
|
|
btn16.SetListener(() => {
|
CrossServerQualifyingModel.Instance.select64Index = 2;
|
OnSelectGroup();
|
});
|
|
timeBtn.SetListener(()=> {
|
if (CrossServerQualifyingModel.Instance.GetOpenTimeIndex() == -1)
|
return;
|
|
WindowCenter.Instance.OpenIL<CrossServerQualifyingTimeWin>();
|
});
|
|
enterGame.SetListener(EnterGame);
|
guessBtn.SetListener(()=> {
|
arrow.SetActiveIL(false);
|
WindowCenter.Instance.OpenIL<CrossServerQualifyingGuess8Win>();
|
});
|
|
littleCloseBtn.SetListener(()=>{
|
CrossServerQualifyingModel.Instance.isShowRaceInfoYet = true;
|
todayRaceObj.SetActive(!CrossServerQualifyingModel.Instance.isShowRaceInfoYet);
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
CrossServerQualifyingModel.Instance.QueryRaceScoreEvent += QueryRaceScoreEvent;
|
var findIndex = CrossServerQualifyingModel.Instance.groupBtnMarks.IndexOf(CrossServerQualifyingModel.Instance.nowGroupMark);
|
CrossServerQualifyingModel.Instance.select64Index = findIndex == -1 ? 2 : findIndex;
|
|
scroller.OnRefreshCell += OnRefreshCell;
|
GlobalTimeEvent.Instance.minuteEvent += OnMinuteEvent;
|
CrossServerQualifyingModel.Instance.UpdateCrossChampionshipPKZoneGroupInfoEvent += UpdateRace;
|
var battleID = CrossServerQualifyingModel.Instance.GetBattleID();
|
if (battleID == -1)
|
{
|
arrow.SetActiveIL(false);
|
}
|
else
|
{
|
arrow.SetActiveIL(ILChampionshipTimeConfig.Get(battleID).StateValue == 80);
|
}
|
|
//顶部晋级信息显示
|
var nextBattle = CrossServerQualifyingModel.Instance.GetMyNextBattle();
|
pkResultText.SetActive(nextBattle != 0);
|
pkResultText.text = Language.Get("CrossServerQualifying71", nextBattle);
|
queryScoreObj.SetActiveIL(false);
|
}
|
|
|
protected override void OnPreClose()
|
{
|
scroller.OnRefreshCell -= OnRefreshCell;
|
GlobalTimeEvent.Instance.minuteEvent -= OnMinuteEvent;
|
CrossServerQualifyingModel.Instance.UpdateCrossChampionshipPKZoneGroupInfoEvent -= UpdateRace;
|
CrossServerQualifyingModel.Instance.QueryRaceScoreEvent -= QueryRaceScoreEvent;
|
}
|
|
protected override void OnAfterOpen()
|
{
|
OnSelectGroup();
|
}
|
#endregion
|
|
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);
|
}
|
|
|
void OnSelectGroup()
|
{
|
for (int i = 0; i < selectImgs.Count; i++)
|
{
|
selectImgs[i].SetActiveIL(i == CrossServerQualifyingModel.Instance.select64Index);
|
}
|
|
if (CrossServerQualifyingModel.Instance.battleInfo.ContainsKey(CrossServerQualifyingModel.Instance.select64Mark))
|
{
|
scroller.SetActiveIL(true);
|
lineImg.SetActiveIL(true);
|
waitTxt.SetActiveIL(false);
|
CreateGroupScroller();
|
}
|
else
|
{
|
scroller.SetActiveIL(false);
|
lineImg.SetActiveIL(false);
|
waitTxt.SetActiveIL(true);
|
}
|
|
OnMinuteEvent();
|
}
|
|
void CreateGroupScroller()
|
{
|
var playerID = PlayerDatas.Instance.baseData.PlayerID;
|
scroller.Refresh();
|
var battleInfo = CrossServerQualifyingModel.Instance.battleInfo[CrossServerQualifyingModel.Instance.select64Mark];
|
var battleNums = battleInfo.Keys.ToList();
|
int jumpIndex = -1;
|
for (int i = 0; i < battleNums.Count; i++)
|
{
|
//1行2组
|
if (i % 2 == 0)
|
{
|
var battleNum = battleNums[i];
|
scroller.AddCell(ScrollerDataType.Header, (int)battleNum);
|
|
if (jumpIndex == -1)
|
{
|
//搜索玩家是否参赛者
|
if (battleInfo[battleNum].PlayerIDA == playerID || battleInfo[battleNum].PlayerIDB == playerID)
|
{
|
jumpIndex = i / 2;
|
}
|
else if (battleInfo.ContainsKey(battleNum + 1) && (
|
battleInfo[battleNum + 1].PlayerIDA == playerID || battleInfo[battleNum + 1].PlayerIDB == playerID
|
))
|
{
|
jumpIndex = i / 2;
|
}
|
|
}
|
}
|
}
|
|
scroller.Restart();
|
scroller.m_Scorller.RefreshActiveCellViews();
|
|
scroller.JumpIndex(jumpIndex);
|
}
|
|
void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetILBehaviour<CSQShootOutCell>();
|
_cell?.Display(cell.index);
|
}
|
|
void EnterGame()
|
{
|
var findIndex = CrossServerQualifyingModel.Instance.groupBtnMarks.IndexOf(CrossServerQualifyingModel.Instance.nowGroupMark);
|
if (findIndex != -1)
|
{
|
var battleID = CrossServerQualifyingModel.Instance.GetBattleID();
|
var config = ILChampionshipTimeConfig.Get(battleID);
|
Debug.LogFormat("64强排位赛 流程ID {0}", battleID);
|
if (config.StateValue % 10 == 2)
|
{
|
//进场时间
|
CrossServerQualifyingModel.Instance.EnterCrossServerQualifying();
|
}
|
else
|
{
|
//非比赛时间
|
SysNotifyMgr.Instance.ShowTip("CrossServerQualifying3");
|
}
|
}
|
else
|
{
|
//非比赛时间
|
SysNotifyMgr.Instance.ShowTip("CrossServerQualifying3");
|
}
|
}
|
|
void OnMinuteEvent()
|
{
|
var groupMark = CrossServerQualifyingModel.Instance.nowGroupMark;
|
pkTagetObjs.SetActiveIL(false);
|
todayRaceObj.SetActiveIL(false);
|
timeTip.text = string.Empty;
|
var findIndex = CrossServerQualifyingModel.Instance.groupBtnMarks.IndexOf(groupMark);
|
if (findIndex != -1 && groupMark <= 64 && groupMark >= 16)
|
{
|
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.groupBtnMarks)
|
{
|
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 (!scroller.gameObject.activeSelf)
|
{
|
var findIndex = CrossServerQualifyingModel.Instance.groupBtnMarks.IndexOf(CrossServerQualifyingModel.Instance.nowGroupMark);
|
CrossServerQualifyingModel.Instance.select64Index = findIndex == -1 ? 2 : findIndex;
|
OnSelectGroup();
|
}
|
else
|
{
|
scroller.m_Scorller.RefreshActiveCellViews();
|
OnMinuteEvent();
|
}
|
}
|
}
|