//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, September 20, 2017
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using UnityEngine.UI;
|
using TableConfig;
|
|
namespace Snxxz.UI
|
{
|
|
public class TrialDungeonSelectBehaviour : ScrollItem
|
{
|
|
[Header("Button")]
|
[SerializeField]
|
Button m_SelectButton;
|
|
[Header("Image")]
|
[SerializeField]
|
Image m_BackGround;
|
[SerializeField]
|
Image m_SceneBG;
|
[SerializeField]
|
Image m_TitleIcon;
|
[SerializeField]
|
Image m_BossIcon;
|
[SerializeField]
|
Image m_BossFrame;
|
|
[SerializeField]
|
Text m_DungeonName;
|
[SerializeField]
|
Text m_BossLevel;
|
[SerializeField]
|
Text m_LevelLimit;
|
|
[SerializeField] RectTransform m_ContainerHighest;
|
[SerializeField] Image m_HighestGrade;
|
|
[SerializeField] SmoothMask m_SmoothMask;
|
|
[SerializeField]
|
Transform m_Other;
|
|
Dungeon dungeon;
|
DungeonRecord dungeonRecord;
|
TrialDungeonSelectWin m_TrailDungeonSelectWin;
|
|
DungeonModel m_Model;
|
DungeonModel model {
|
get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<DungeonModel>()); }
|
}
|
|
public override void Display(object _data)
|
{
|
base.Display(_data);
|
dungeon = (Dungeon)_data;
|
var config = Config.Instance.Get<DungeonConfig>(model.GetDungeonId(dungeon));
|
if (config == null)
|
{
|
return;
|
}
|
|
if (m_TrailDungeonSelectWin != null)
|
{
|
m_TrailDungeonSelectWin.dungeonSelectEvent -= OnSelected;
|
}
|
m_TrailDungeonSelectWin = WindowCenter.Instance.Get<TrialDungeonSelectWin>();
|
m_TrailDungeonSelectWin.dungeonSelectEvent += OnSelected;
|
|
m_SelectButton.RemoveAllListeners();
|
m_SelectButton.AddListener(Select);
|
DrawDungeonInfo(dungeon);
|
}
|
|
public override void Dispose()
|
{
|
base.Dispose();
|
}
|
|
private void DrawDungeonInfo(Dungeon _dungeon)
|
{
|
var dungeonId = model.GetDungeonId(_dungeon);
|
var config = Config.Instance.Get<DungeonConfig>(dungeonId);
|
m_DungeonName.text = config.FBName;
|
|
var _npcId = config.BossActorID[0];
|
var bossConfig = Config.Instance.Get<NPCConfig>(_npcId);
|
m_BossLevel.text = Language.Get("Z1024", config.LVLimitMin);
|
m_BossLevel.color = PlayerDatas.Instance.baseData.LV >= config.LVLimitMin ?
|
UIHelper.GetUIColor(TextColType.Green, true) : UIHelper.GetUIColor(TextColType.Red, true);
|
|
model.TryGetRecord(_dungeon.mapId, out dungeonRecord);
|
int prestar = 1;
|
int star = 0;
|
dungeonRecord.lineGrades.TryGetValue(config.LineID, out star);
|
if (config.LineID > 0)
|
{
|
dungeonRecord.lineGrades.TryGetValue(config.LineID - 1, out prestar);
|
}
|
else
|
{
|
prestar = 5;
|
}
|
|
m_ContainerHighest.gameObject.SetActive(star > 0);
|
if (star > 0)
|
{
|
m_HighestGrade.SetSprite(StringUtility.Contact("Remark_", GetStar(star)));
|
m_HighestGrade.SetNativeSize();
|
var sizeDelta = m_HighestGrade.rectTransform.sizeDelta;
|
m_HighestGrade.rectTransform.sizeDelta = sizeDelta * 0.76f;
|
}
|
|
if (PlayerDatas.Instance.baseData.LV < config.LVLimitMin)
|
{
|
m_LevelLimit.text = Language.Get("TrialDungeonLevelLimit");
|
m_LevelLimit.color = UIHelper.GetUIColor(TextColType.Red, true);
|
SetImageGray(true);
|
}
|
else if (prestar < GeneralConfig.Instance.munekadolockLimit)
|
{
|
m_LevelLimit.text = Language.Get("TrialDungeonGradeLimit",
|
Language.Get(StringUtility.Contact("Num_CHS_", config.LineID)), UIHelper.GetGrade(GeneralConfig.Instance.munekadolockLimit));
|
m_LevelLimit.color = UIHelper.GetUIColor(TextColType.Red, true);
|
SetImageGray(true);
|
}
|
else
|
{
|
m_LevelLimit.text = Language.Get("TrialDungeonLocked");
|
m_LevelLimit.color = UIHelper.GetUIColor(TextColType.Green, true);
|
SetImageGray(false);
|
}
|
|
if (GeneralConfig.Instance.trailBossHeadIcons.ContainsKey(_npcId))
|
{
|
m_BossIcon.SetSprite(GeneralConfig.Instance.trailBossHeadIcons[_npcId]);
|
}
|
|
var selected = m_TrailDungeonSelectWin.currentSelectDungeon == _dungeon;
|
}
|
|
private void Select()
|
{
|
m_TrailDungeonSelectWin.currentSelectDungeon=dungeon;
|
model.selectedTrialDungeon = dungeon;
|
WindowCenter.Instance.Open<TrialDungeonEntranceWin>();
|
}
|
|
private void OnSelected(Dungeon _dungeon)
|
{
|
//m_Selected.gameObject.SetActive(dungeon == _dungeon);
|
}
|
|
private void SetImageGray(bool _gray)
|
{
|
m_SceneBG.material = _gray ? m_SmoothMask.imageMaterials[1] : m_SmoothMask.imageMaterials[0];
|
m_BossIcon.material = _gray ? m_SmoothMask.imageMaterials[1] : m_SmoothMask.imageMaterials[0];
|
m_TitleIcon.material = _gray ? m_SmoothMask.imageMaterials[1] : m_SmoothMask.imageMaterials[0];
|
}
|
|
private string GetStar(int star)
|
{
|
switch (star)
|
{
|
case 5:
|
return "S";
|
case 4:
|
return "A";
|
case 3:
|
return "B";
|
case 2:
|
return "C";
|
default:
|
return "D";
|
}
|
}
|
|
}
|
|
}
|
|
|
|