//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, August 01, 2018
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI {
|
|
public class TrialExchangeWin : Window
|
{
|
[SerializeField] ScrollerController m_Controller;
|
[SerializeField] Text m_SelectClass;
|
[SerializeField] Button m_SelectClassUp;
|
[SerializeField] TrialSelectClassBehaviour m_SelectClassBehaviour;
|
//[SerializeField] ItemBehaviour[] m_Tokens;
|
//[SerializeField] Text[] m_TokenCounts;
|
[SerializeField] Button m_Close;
|
|
TrialDungeonModel model { get { return ModelCenter.Instance.GetModel<TrialDungeonModel>(); } }
|
DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
|
PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
#region Built-in
|
protected override void BindController()
|
{
|
|
}
|
|
protected override void AddListeners()
|
{
|
m_Controller.OnRefreshCell += OnRefreshCell;
|
m_Close.onClick.AddListener(CloseClick);
|
m_SelectClassUp.onClick.AddListener(SelectClassUp);
|
}
|
|
protected override void OnPreOpen()
|
{
|
model.selectEquipClass = 1;
|
m_SelectClassBehaviour.gameObject.SetActive(false);
|
m_SelectClassUp.transform.localEulerAngles = Vector3.zero.SetZ(180);
|
foreach (var mapID in dungeonModel.GetDungeonIds(60010))
|
{
|
DungeonConfig _tagDungeonModel = DungeonConfig.Get(mapID);
|
DungeonRecord dungeonRecord;
|
if (dungeonModel.TryGetRecord(60010, out dungeonRecord))
|
{
|
if (dungeonRecord.lineGrades != null && dungeonRecord.lineGrades.ContainsKey(_tagDungeonModel.LineID)
|
&& dungeonRecord.lineGrades[_tagDungeonModel.LineID] > 0)
|
{
|
model.selectEquipClass = model.LineToTokenClass(_tagDungeonModel.LineID);
|
}
|
}
|
}
|
|
var maxClass = 0;
|
if (model.TryGetSatisfyExchange(out maxClass))
|
{
|
model.selectEquipClass = maxClass;
|
}
|
|
if (WindowJumpMgr.Instance.IsJumpState)
|
{
|
if (ItemOperateUtility.Instance.useItemModel != null
|
&& model.trialTokens.Contains(ItemOperateUtility.Instance.useItemModel.itemId))
|
{
|
var itemId = ItemOperateUtility.Instance.useItemModel.itemId;
|
var config = ItemConfig.Get(itemId);
|
if (config != null)
|
{
|
model.selectEquipClass = config.LV;
|
}
|
ItemOperateUtility.Instance.useItemModel = null;
|
}
|
}
|
|
if (model.openFromTask)
|
{
|
model.selectEquipClass = 1;
|
}
|
|
model.SelectEquipClassEvent += SelectEquipClassEvent;
|
packModel.refreshItemCountEvent += RefreshItemCountAct;
|
Display();
|
if (!model.openFromTask)
|
{
|
JumpToRedpoint();
|
}
|
model.openFromTask = false;
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
model.SelectEquipClassEvent -= SelectEquipClassEvent;
|
packModel.refreshItemCountEvent -= RefreshItemCountAct;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
#endregion
|
private void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
switch (type)
|
{
|
case ScrollerDataType.Header:
|
var _class = cell.index / 100;
|
var _line = cell.index % 100;
|
TrialExchangeCell trialExchangeCell = cell as TrialExchangeCell;
|
trialExchangeCell.Display(_class, _line);
|
break;
|
case ScrollerDataType.Normal:
|
TrialExchangeTitleCell trialExchangeTitleCell = cell as TrialExchangeTitleCell;
|
trialExchangeTitleCell.Display(cell.index);
|
break;
|
}
|
}
|
|
private void SelectClassUp()
|
{
|
bool _up = m_SelectClassBehaviour.gameObject.activeSelf;
|
m_SelectClassBehaviour.gameObject.SetActive(!_up);
|
if (!_up)
|
{
|
m_SelectClassBehaviour.Display();
|
}
|
m_SelectClassUp.transform.localEulerAngles = Vector3.zero.SetZ(_up ? 180 : 0);
|
}
|
|
void Display()
|
{
|
DisplayTrialExchanges();
|
DisplaySelectClass();
|
DisplayTokens();
|
}
|
|
void DisplayTrialExchanges()
|
{
|
m_Controller.Refresh();
|
if (model.selectEquipClass == 1)
|
{
|
var trialClasses = model.GetTotalClass();
|
for (int i = 0; i < trialClasses.Count; i++)
|
{
|
List<TrialExchangeConfig> list;
|
if (model.TryGetTrialExchanges(trialClasses[i], out list))
|
{
|
m_Controller.AddCell(ScrollerDataType.Normal, trialClasses[i]);
|
var line = Mathf.CeilToInt((float)list.Count / 3);
|
for (int k = 0; k < line; k++)
|
{
|
m_Controller.AddCell(ScrollerDataType.Header, trialClasses[i] * 100 + k);
|
}
|
}
|
}
|
}
|
else
|
{
|
List<TrialExchangeConfig> list;
|
if (model.TryGetTrialExchanges(model.selectEquipClass, out list))
|
{
|
var line = Mathf.CeilToInt((float)list.Count / 3);
|
for (int i = 0; i < line; i++)
|
{
|
m_Controller.AddCell(ScrollerDataType.Header, model.selectEquipClass * 100 + i);
|
}
|
}
|
}
|
m_Controller.Restart();
|
}
|
|
private void RefreshItemCountAct(PackType packtype, int arg2, int itemId)
|
{
|
var config = ItemConfig.Get(itemId);
|
if (config == null)
|
{
|
return;
|
}
|
if (packtype == PackType.Item)
|
{
|
if (model.trialTokens.Contains(itemId) || config.EquipPlace > 0)
|
{
|
m_Controller.m_Scorller.RefreshActiveCellViews();
|
DisplayTokens();
|
}
|
}
|
else if (packtype == PackType.Equip)
|
{
|
m_Controller.m_Scorller.RefreshActiveCellViews();
|
}
|
}
|
|
void DisplaySelectClass()
|
{
|
m_SelectClass.text = model.selectEquipClass == 1 ? Language.Get("TrialClassSeleclAll") :
|
Language.Get("EquipSuitLV", Language.Get(StringUtility.Contact("Num_CHS_", model.selectEquipClass)));
|
}
|
|
void DisplayTokens()
|
{
|
//var list = model.trialClassTokens.ContainsKey(model.selectEquipClass) ? model.trialClassTokens[model.selectEquipClass] : null;
|
//for (int i = 0; i < m_Tokens.Length; i++)
|
//{
|
// if (list != null && i < list.Count)
|
// {
|
// m_Tokens[i].gameObject.SetActive(model.selectEquipClass != 1);
|
// if (model.selectEquipClass != 1)
|
// {
|
// m_Tokens[i].SetItem(list[i], 0);
|
// m_TokenCounts[i].text = model.GetTrialTokenCount(list[i]).ToString();
|
// }
|
// }
|
// else
|
// {
|
// m_Tokens[i].gameObject.SetActive(false);
|
// }
|
//}
|
}
|
|
private void SelectEquipClassEvent()
|
{
|
DisplayTrialExchanges();
|
DisplaySelectClass();
|
DisplayTokens();
|
bool _up = m_SelectClassBehaviour.gameObject.activeSelf;
|
m_SelectClassUp.transform.localEulerAngles = Vector3.zero.SetZ(_up ? 0 : 180);
|
JumpToRedpoint();
|
}
|
|
private void JumpToRedpoint()
|
{
|
if (model.selectEquipClass == 1)
|
{
|
var trialClasses = model.GetTotalClass();
|
var index = 0;
|
for (int i = 0; i < trialClasses.Count; i++)
|
{
|
var line = 0;
|
index += 1;
|
if (JumpToRedpoint(trialClasses[i], out line))
|
{
|
m_Controller.JumpIndex(index + line);
|
return;
|
}
|
else
|
{
|
List<TrialExchangeConfig> list;
|
if (model.TryGetTrialExchanges(trialClasses[i], out list))
|
{
|
index += Mathf.CeilToInt((float)list.Count / 3);
|
}
|
}
|
}
|
}
|
else
|
{
|
var line = 0;
|
JumpToRedpoint(model.selectEquipClass, out line);
|
m_Controller.JumpIndex(line);
|
}
|
}
|
|
private bool JumpToRedpoint(int _class, out int line)
|
{
|
var itemId = 0;
|
line = 0;
|
if (model.IsAnySatisfyExchangeBetterEquip(_class, out itemId))
|
{
|
List<TrialExchangeConfig> list;
|
if (model.TryGetTrialExchanges(_class, out list))
|
{
|
for (int i = 0; i < list.Count; i++)
|
{
|
if (list[i].id == itemId)
|
{
|
line = i / 3;
|
return true;
|
}
|
}
|
}
|
}
|
return false;
|
}
|
}
|
|
}
|
|
|
|
|