//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, March 08, 2018 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; namespace vnxbqy.UI { public class DemonTreasureCollectPanel : MonoBehaviour { [SerializeField] Text m_LevelLimit; [SerializeField] Button m_Challenge; [SerializeField] Text m_RecommendPower; [SerializeField] Image m_GotSign; [SerializeField] DemonTreasureCollectConditionBehaviour[] m_PowerConditions; int treasureId = 0; TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel(); } } public void Display(int _treasureId) { treasureId = _treasureId; var config = DemonRecommondPropertyConfig.Get(_treasureId); var myPower = PlayerDatas.Instance.baseData.FightPoint; m_RecommendPower.text = StringUtility.Contact(myPower, "/", config.RecommendPower); m_RecommendPower.color = UIHelper.GetUIColor(myPower >= (ulong)config.RecommendPower ? TextColType.Green : TextColType.Red, true); var conditions = config.RecommendWay; for (int i = 0; i < m_PowerConditions.Length; i++) { var behaviour = m_PowerConditions[i]; if (i < conditions.Length) { behaviour.SetActive(true); behaviour.Display(conditions[i]); } else { behaviour.SetActive(false); } } m_Challenge.RemoveAllListeners(); m_Challenge.AddListener(Challenge); Treasure treasure; if (treasureModel.TryGetTreasure(treasureId, out treasure)) { m_Challenge.SetActive(treasure.state == TreasureState.Collecting); m_LevelLimit.SetActive(treasure.state != TreasureState.Collected); m_GotSign.SetActive(treasure.state == TreasureState.Collected); var treasureConfig = TreasureConfig.Get(treasure.id); if (treasure.state != TreasureState.Collected) { if (treasureConfig.PreTreasure == 0) { var levelLimitHint = UIHelper.AppendColor( PlayerDatas.Instance.baseData.LV >= treasureConfig.ChallengeLevel ? TextColType.Green : TextColType.Red, treasureConfig.ChallengeLevel.ToString(), true); m_LevelLimit.text = Language.Get("TreasureLevelLimit", levelLimitHint); } else { var levelLimitHint = UIHelper.AppendColor( PlayerDatas.Instance.baseData.LV >= treasureConfig.ChallengeLevel ? TextColType.Green : TextColType.Red, treasureConfig.ChallengeLevel.ToString(), true); var preTreasureConfig = TreasureConfig.Get(treasureConfig.PreTreasure); var treasureLimitHint = UIHelper.AppendColor( treasure.state == TreasureState.Collecting ? TextColType.Green : TextColType.Red, preTreasureConfig.Name, true); m_LevelLimit.text = Language.Get("TreasureLvLimit", levelLimitHint, treasureLimitHint); } } } else { m_Challenge.SetActive(false); } } bool EquipConditionReached(int _condition) { var itemConfig = ItemConfig.Get(_condition); var place = itemConfig.EquipPlace; var model = ModelCenter.Instance.GetModel(); var itemModel = model.GetItemByIndex(PackType.Equip, place); if (itemModel == null) { return false; } if (itemModel.config.StarLevel < itemConfig.StarLevel || itemModel.config.ItemColor < itemConfig.ItemColor || itemModel.config.LV < itemConfig.LV) { return false; } return true; } private void Challenge() { var treasureConfig = TreasureConfig.Get(treasureId); if (PlayerDatas.Instance.baseData.LV < treasureConfig.ChallengeLevel) { ServerTipDetails.DisplayNormalTip(Language.Get("TrialDungeonLevelLimit")); } else { var config = DemonRecommondPropertyConfig.Get(treasureId); var myPower = PlayerDatas.Instance.baseData.FightPoint; if (myPower < (ulong)config.RecommendPower) { ConfirmCancel.ShowPopConfirm( Language.Get("Mail101"), Language.Get("TreasureDemonPowerLack"), (bool _ok) => { if (_ok) { var dungeonModel = ModelCenter.Instance.GetModel(); dungeonModel.SingleChallenge(treasureConfig.MapId, treasureConfig.LineId); } } ); } else { var dungeonModel = ModelCenter.Instance.GetModel(); dungeonModel.SingleChallenge(treasureConfig.MapId, treasureConfig.LineId); } } } } }