//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Friday, January 18, 2019
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
|
namespace vnxbqy.UI
|
{
|
|
public class SkyTowerServerGift : Window, SecondWindowInterface
|
{
|
[SerializeField] ScrollerController m_ChallengeScroll;
|
[SerializeField] FunctionButton m_Btn1;
|
[SerializeField] FunctionButton m_Btn5;
|
[SerializeField] FunctionButtonGroup btnGroup;
|
[SerializeField] Transform m_Challenge5;
|
[SerializeField] ScrollerController m_ChallengeRankScroll;
|
[SerializeField] TextEx tagetTxt;
|
[SerializeField] List<ItemCell> items;
|
[SerializeField] ButtonEx getAward;
|
[SerializeField] Image gotImg;
|
[SerializeField] Text noRank;
|
[SerializeField] ButtonEx rightBtn;
|
[SerializeField] ButtonEx leftBtn;
|
SkyTowerModel model { get { return ModelCenter.Instance.GetModel<SkyTowerModel>(); } }
|
|
|
public Button close { get; set; }
|
#region Built-in
|
protected override void BindController()
|
{
|
if (this is SecondWindowInterface)
|
{
|
var frame = this.GetComponentInChildren<SecondFrameLoader>();
|
frame.Create();
|
close = frame.GetComponentInChildren<Button>();
|
}
|
}
|
protected override void OnActived()
|
{
|
base.OnActived();
|
btnGroup.TriggerByOrder(functionOrder);
|
}
|
|
|
protected override void AddListeners()
|
{
|
close.AddListener(CloseClick);
|
m_Btn1.AddListener(Choose1);
|
m_Btn5.AddListener(Choose5);
|
rightBtn.AddListener(() => {
|
if (model.chooseFloorIndex < model.ChallengeFloors.Count - 1)
|
model.chooseFloorIndex++;
|
});
|
|
leftBtn.AddListener(() =>
|
{
|
if (model.chooseFloorIndex > 0)
|
model.chooseFloorIndex--;
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
m_ChallengeScroll.OnRefreshCell += OnRefreshCell;
|
m_ChallengeRankScroll.OnRefreshCell += OnRefreshRankCell;
|
model.OnChallengeState += OnRefreshAllCell;
|
model.OnChooseFloorIndexChange += OnChooseFloorIndexChange;
|
Display();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
m_ChallengeScroll.OnRefreshCell -= OnRefreshCell;
|
model.OnChallengeState -= OnRefreshAllCell;
|
model.OnChooseFloorIndexChange -= OnChooseFloorIndexChange;
|
m_ChallengeRankScroll.OnRefreshCell -= OnRefreshRankCell;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
|
#endregion
|
|
void OnChooseFloorIndexChange()
|
{
|
DisplayRankInfo();
|
}
|
|
void Display()
|
{
|
if (functionOrder == 0)
|
{
|
DisplayChallengeInfo();
|
m_ChallengeScroll.JumpIndex(JumpIndex());
|
}
|
else
|
{
|
model.chooseFloorIndex = GetJumpChallenge5Floor();
|
DisplayRankInfo();
|
}
|
}
|
|
void DisplayRankInfo()
|
{
|
int chooseFloor = model.ChallengeFloors[model.chooseFloorIndex];
|
var playerIDs = model.GetPlayerIDs(chooseFloor);
|
if (playerIDs.Length == 0)
|
{
|
noRank.SetActive(true);
|
m_ChallengeRankScroll.SetActive(false);
|
}
|
else
|
{
|
noRank.SetActive(false);
|
m_ChallengeRankScroll.SetActive(true);
|
|
m_ChallengeRankScroll.Refresh();
|
for (int i = 0; i < playerIDs.Length; i++)
|
{
|
m_ChallengeRankScroll.AddCell(ScrollerDataType.Header, i);
|
}
|
m_ChallengeRankScroll.Restart();
|
m_ChallengeRankScroll.m_Scorller.RefreshActiveCellViews();
|
}
|
|
tagetTxt.text = Language.Get("SkyTowerChallenge5", SkyTowerModel.fullServerPassNum2, chooseFloor, playerIDs.Length);
|
|
for (int i = 0; i < items.Count; i++)
|
{
|
var awards = SkyTowerServerChallengeConfig.GetPassAwards(chooseFloor, SkyTowerModel.fullServerPassNum2);
|
if (i < awards.Length)
|
{
|
items[i].SetActive(true);
|
int itemID = awards[i][0];
|
items[i].Init(new ItemCellModel(itemID, false, (ulong)awards[i][1]));
|
items[i].button.AddListener(() => {
|
ItemTipUtility.Show(itemID);
|
});
|
}
|
else
|
{
|
items[i].SetActive(false);
|
}
|
}
|
|
int state = model.CanGetChallengeRewardEx(chooseFloor, SkyTowerModel.fullServerPassNum2);
|
getAward.SetActive(state == 1);
|
getAward.AddListener(() => {
|
var pack = new CA504_tagCMPlayerGetReward();
|
pack.RewardType = 31;
|
pack.DataEx = (uint)chooseFloor;
|
pack.DataExStr = "5";
|
pack.DataExStrLen = (byte)pack.DataExStr.Length;
|
GameNetSystem.Instance.SendInfo(pack);
|
});
|
gotImg.SetActive(state == 2);
|
}
|
|
int GetJumpChallenge5Floor()
|
{
|
int chooseIndex = 0;
|
foreach (var floorID in model.ChallengeFloors)
|
{
|
int state = model.CanGetChallengeRewardEx(floorID, 5);
|
if (state < 2)
|
{
|
return chooseIndex;
|
}
|
chooseIndex++;
|
}
|
return chooseIndex - 1;
|
}
|
|
private int JumpIndex()
|
{
|
int index = 0;
|
foreach (var floorInfo in model.rankFloorPlayerIDs)
|
{
|
int floorID = floorInfo.Key;
|
if (model.CanGetChallengeReward(floorID, 1))
|
{
|
return index;
|
}
|
index++;
|
}
|
index = index == 0 ? 0 : index - 1;
|
return index;
|
}
|
|
|
private void DisplayChallengeInfo()
|
{
|
m_ChallengeScroll.Refresh();
|
|
foreach (var floorID in model.ChallengeFloors)
|
{
|
m_ChallengeScroll.AddCell(ScrollerDataType.Header, floorID);
|
}
|
m_ChallengeScroll.Restart();
|
m_ChallengeScroll.m_Scorller.RefreshActiveCellViews();
|
}
|
|
private void OnRefreshAllCell()
|
{
|
m_ChallengeScroll.m_Scorller.RefreshActiveCellViews();
|
DisplayRankInfo();
|
}
|
|
private void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
if (type == ScrollerDataType.Header)
|
{
|
SkyTowerServeChallengeCell curCell = cell as SkyTowerServeChallengeCell;
|
curCell.Display(cell.index);
|
}
|
|
}
|
|
private void OnRefreshRankCell(ScrollerDataType type, CellView cell)
|
{
|
var curCell = cell as SkyTowerChallengeRankCell;
|
curCell.Display(cell.index);
|
|
}
|
|
private void Choose1()
|
{
|
m_ChallengeScroll.SetActive(true);
|
m_Challenge5.SetActive(false);
|
functionOrder = m_Btn1.order;
|
Display();
|
}
|
private void Choose5()
|
{
|
m_ChallengeScroll.SetActive(false);
|
m_Challenge5.SetActive(true);
|
functionOrder = m_Btn5.order;
|
Display();
|
}
|
}
|
|
|
|
}
|
|
|
|
|