//--------------------------------------------------------
|
// [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;
|
ButtonEx enterGame;
|
ScrollerController scroller;
|
Text timeTip; //显示自己当前进场信息和小窗推送配合
|
Button guessBtn;
|
Image lineImg;
|
Text waitTxt;
|
Image arrow;
|
|
|
|
#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");
|
}
|
|
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>();
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
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);
|
}
|
}
|
|
|
protected override void OnPreClose()
|
{
|
scroller.OnRefreshCell -= OnRefreshCell;
|
GlobalTimeEvent.Instance.minuteEvent -= OnMinuteEvent;
|
CrossServerQualifyingModel.Instance.UpdateCrossChampionshipPKZoneGroupInfoEvent -= UpdateRace;
|
}
|
|
protected override void OnAfterOpen()
|
{
|
OnSelectGroup();
|
}
|
#endregion
|
|
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;
|
enterGame.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);
|
enterGame.SetActiveIL(isInBattle);
|
if (isInBattle)
|
{
|
var battleID = ILChampionshipTimeConfig.GetBattleID((int)groupMark * 10 + 2);
|
if (battleID != 0)
|
{
|
timeTip.text = Language.Get("CrossServerQualifying20", CrossServerQualifyingModel.Instance.GetStartBattleTime(battleID));
|
return;
|
}
|
}
|
}
|
|
|
}
|
|
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();
|
}
|
}
|
}
|