| | |
| | | //-------------------------------------------------------- |
| | | // [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 = ConfigManager.Instance.GetTemplate<DungeonConfig>(model.DungeonMap(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.DungeonMap(_dungeon); |
| | | var config = ConfigManager.Instance.GetTemplate<DungeonConfig>(dungeonId); |
| | | m_DungeonName.text = config.FBName; |
| | | |
| | | var _npcId = config.BossActorID[0]; |
| | | var bossConfig = ConfigManager.Instance.GetTemplate<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.TryGetDungeonRecord(_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"; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | //--------------------------------------------------------
|
| | | // [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.DungeonMap(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.DungeonMap(_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.TryGetDungeonRecord(_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";
|
| | | }
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | |
|
| | |
|