//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, November 01, 2017
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class BossTrialWin : Window
|
{
|
[SerializeField] Text myRankTxt;
|
[SerializeField] Text subCount;
|
[SerializeField] Text todaySubCount;
|
[SerializeField] ItemCell goodItem;
|
[SerializeField] ScrollerController awardScroller;
|
[SerializeField] ItemCell subItem;
|
[SerializeField] Button submit;
|
[SerializeField] Slider _splitSlider;
|
[SerializeField] Button _addBtn;
|
[SerializeField] Button _reduceBtn;
|
[SerializeField] Text _number;
|
[SerializeField] Text actTime;
|
[SerializeField] Text serverList;
|
[SerializeField] RichText showMoreServerText;
|
[SerializeField] Button showMoreServerBtn;
|
[SerializeField] Button familyRechargeBtn;
|
RankModel rankModel { get { return ModelCenter.Instance.GetModel<RankModel>(); } }
|
BossTrialModel model { get { return ModelCenter.Instance.GetModel<BossTrialModel>(); } }
|
PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
|
protected override void BindController()
|
{
|
|
}
|
|
protected override void AddListeners()
|
{
|
submit.AddListener(OnSubmit);
|
_splitSlider.SetListener(OnSplitValueChange);
|
_addBtn.SetListener(OnClickAddBtn);
|
_reduceBtn.SetListener(OnClickReduceBtn);
|
showMoreServerBtn.SetListener(() => {
|
FuncRules.OpenFuncTip(Language.Get("L2015"), model.operationBossTrialCross.m_ServerListStr);
|
});
|
|
familyRechargeBtn.AddListener(() =>
|
{
|
if (PlayerDatas.Instance.baseData.FamilyId == 0)
|
{
|
SysNotifyMgr.Instance.ShowTip("jiazu_andyshao_0");
|
return;
|
}
|
WindowCenter.Instance.Open<FamilyRechargeConnWin>();
|
});
|
}
|
|
|
protected override void OnPreOpen()
|
{
|
rankModel.QueryRankByPage(BossTrialModel.rankType, watchID: (int)PlayerDatas.Instance.baseData.PlayerID, forceQuery: true);
|
model.OnPlayerInfo += Model_OnPlayerInfo;
|
awardScroller.OnRefreshCell += AwardScroller_OnRefreshCell;
|
rankModel.onMyRankRefresh += RankModel_onMyRankRefresh;
|
GlobalTimeEvent.Instance.secondEvent += secondEvent;
|
|
Display();
|
}
|
|
private void RankModel_onMyRankRefresh(int obj)
|
{
|
var myRank = rankModel.GetMyRank(BossTrialModel.rankType);
|
int rank = myRank == null ? 0 : myRank.index + 1;
|
myRankTxt.text = Language.Get("L2013", Language.Get("CrossBattleField45"), rank == 0 ? Language.Get("CrossServer123") : rank.ToString());
|
}
|
|
|
protected override void OnAfterOpen()
|
{
|
|
}
|
|
protected override void OnPreClose()
|
{
|
model.OnPlayerInfo -= Model_OnPlayerInfo;
|
awardScroller.OnRefreshCell -= AwardScroller_OnRefreshCell;
|
rankModel.onMyRankRefresh -= RankModel_onMyRankRefresh;
|
GlobalTimeEvent.Instance.secondEvent -= secondEvent;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
|
void OnSplitValueChange(float value)
|
{
|
_number.text = Mathf.Ceil(value).ToString();
|
}
|
|
void OnClickAddBtn()
|
{
|
if (_splitSlider.value < _splitSlider.maxValue)
|
{
|
_splitSlider.value++;
|
}
|
}
|
|
void OnClickReduceBtn()
|
{
|
if (_splitSlider.value > _splitSlider.minValue)
|
{
|
_splitSlider.value--;
|
}
|
}
|
|
|
void RefreshSlider()
|
{
|
_splitSlider.minValue = 1;
|
_splitSlider.maxValue = Math.Max(1, packModel.GetItemCountByID(PackType.Item, model.subItemID));
|
_splitSlider.value = _splitSlider.maxValue;
|
_number.text = Mathf.Ceil(_splitSlider.value).ToString();
|
}
|
|
|
|
void OnCreateSubmitScroller()
|
{
|
awardScroller.Refresh();
|
var keys = model.operationBossTrial.bossTrialSubmitInfo.Keys.ToList();
|
keys.Sort();
|
int jumpIndex = -1;
|
int jumpIndex2 = -1; //跳转到未达标的位置
|
for (int i = 0; i < keys.Count; i++)
|
{
|
int tagetCnt = keys[i];
|
awardScroller.AddCell(ScrollerDataType.Header, tagetCnt);
|
|
int state = model.GetSubmitAwardState(tagetCnt);
|
|
if (jumpIndex == -1 && state == 1)
|
{
|
jumpIndex = i;
|
}
|
if (jumpIndex2 == -1 && state == 0)
|
{
|
jumpIndex2 = i;
|
}
|
}
|
awardScroller.Restart();
|
awardScroller.m_Scorller.RefreshActiveCellViews();
|
|
if (jumpIndex == -1)
|
{
|
jumpIndex = jumpIndex2;
|
}
|
|
awardScroller.JumpIndex(jumpIndex - 4);
|
}
|
|
|
void Display()
|
{
|
//OnCreateRankScroller
|
subCount.text = model.submitAllCount.ToString();
|
todaySubCount.text = model.submitCount.ToString();
|
goodItem.Init(new ItemCellModel(model.goodItemID, false, 1));
|
goodItem.button.AddListener(() => {
|
ItemTipUtility.Show(model.goodItemID);
|
});
|
|
subItem.Init(new ItemCellModel(model.subItemID, false, (ulong)packModel.GetItemCountByID(PackType.Item, model.subItemID)));
|
subItem.button.AddListener(() => {
|
ItemTipUtility.Show(model.subItemID);
|
});
|
|
RefreshSlider();
|
OnCreateSubmitScroller();
|
|
//分上榜时间 和 最后展示时间
|
if (model.IsResultShowTime)
|
{
|
actTime.text = StringUtility.Contact(Language.Get("L2013", Language.Get("L2014"), model.operationBossTrialCross.ShowResultTime()), " (",
|
Language.Get("XMZZ110") + ")");
|
}
|
else if (model.operationBossTrialCross != null)
|
{
|
actTime.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"), UIHelper.AppendColor(TextColType.Green, model.operationBossTrialCross.ToDisplayJoinTime(), true));
|
}
|
else
|
{
|
actTime.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"), UIHelper.AppendColor(TextColType.Green, model.operationBossTrial.ToDisplayTime(), true));
|
|
}
|
|
if (model.operationBossTrialCross != null)
|
{
|
serverList.text = Language.Get("L2013", Language.Get("L2015"), model.operationBossTrialCross.m_ServerListStr).Replace(" ", UIHelper.no_breaking_space);
|
showMoreServerText.text = Language.Get("L2018", Language.Get("L2016"));
|
}
|
else
|
{
|
serverList.text = "";
|
showMoreServerText.text = "";
|
}
|
}
|
|
|
private void AwardScroller_OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetComponent<BossTrialSubmitCell>();
|
_cell?.Display(cell.index);
|
}
|
private void Model_OnPlayerInfo()
|
{
|
subCount.text = model.submitAllCount.ToString();
|
todaySubCount.text = model.submitCount.ToString();
|
RefreshSlider();
|
awardScroller.m_Scorller.RefreshActiveCellViews();
|
|
var keys = model.operationBossTrial.bossTrialSubmitInfo.Keys.ToList();
|
keys.Sort();
|
int jumpIndex = -1;
|
int jumpIndex2 = -1; //跳转到未达标的位置
|
for (int i = 0; i < keys.Count; i++)
|
{
|
int tagetCnt = keys[i];
|
|
int state = model.GetSubmitAwardState(tagetCnt);
|
|
if (jumpIndex == -1 && state == 1)
|
{
|
jumpIndex = i;
|
}
|
if (jumpIndex2 == -1 && state == 0)
|
{
|
jumpIndex2 = i;
|
}
|
}
|
|
if (jumpIndex == -1)
|
{
|
jumpIndex = jumpIndex2;
|
}
|
awardScroller.JumpIndex(jumpIndex - 4);
|
|
subItem.countText.text = packModel.GetItemCountByID(PackType.Item, model.subItemID).ToString();
|
}
|
|
private void OnSubmit()
|
{
|
if (!model.IsJoin)
|
{
|
SysNotifyMgr.Instance.ShowTip("ActionUnOpen1");
|
return;
|
}
|
|
ushort cnt = (ushort)int.Parse(_number.text);
|
if (cnt <= 0)
|
{
|
SysNotifyMgr.Instance.ShowTip("NotEnoughMaterial");
|
return;
|
}
|
if (packModel.GetItemCountByID(PackType.Item, model.subItemID) < cnt)
|
{
|
SysNotifyMgr.Instance.ShowTip("NotEnoughMaterial");
|
return;
|
}
|
|
var pack = new CAA23_tagCMActBossTrialSubmit();
|
pack.ActNum = model.actNum;
|
pack.SubmitCount = cnt;
|
GameNetSystem.Instance.SendInfo(pack);
|
Clock.AlarmAfter(1.5f, () =>
|
{
|
rankModel.QueryRankByPage(BossTrialModel.rankType, watchID: (int)PlayerDatas.Instance.baseData.PlayerID, forceQuery: true);
|
});
|
|
}
|
|
|
void secondEvent()
|
{
|
//分上榜时间 和 最后展示时间
|
//actTime.text = Language.Get("BossFHLanguage2", TimeUtility.SecondsToHMS(model.operationBossTrial.GetResetSurplusTime()));
|
|
if (model.IsResultShowTime)
|
{
|
actTime.text = StringUtility.Contact(Language.Get("L2013", Language.Get("L2014"), model.operationBossTrialCross.ShowResultTime()), " (",
|
Language.Get("XMZZ110") + ")");
|
}
|
|
}
|
}
|
|
}
|
|
|
|
|