//-------------------------------------------------------- // [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()); } } public override void Display(object _data) { base.Display(_data); dungeon = (Dungeon)_data; var config = Config.Instance.Get(model.GetDungeonId(dungeon)); if (config == null) { return; } if (m_TrailDungeonSelectWin != null) { m_TrailDungeonSelectWin.dungeonSelectEvent -= OnSelected; } m_TrailDungeonSelectWin = WindowCenter.Instance.Get(); 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(dungeonId); m_DungeonName.text = config.FBName; var _npcId = config.BossActorID[0]; var bossConfig = Config.Instance.Get(_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(); } 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"; } } } }