using UnityEngine; using UnityEngine.UI; using System.Collections; using Games.Item; using GCGame.Table; public class QianghuaLvInfo { public int Level; public GameItem EquipItem; public int CurPerfect; public int MinPerfect; public int MaxPerfect; public int PlayerLevel; public bool IsCanSelect = true; public bool IsAuto; } public class EquipQianghuaLevelItem : UIItemSelect { public Text _LevelName; public Slider _PerfectPro; public Text _ProDisable; public Text _CurPro; public Text _MaxPro; public GameObject _CanSelectGO; public ParticleSystem _EffectPrefab; public float beginPercentage = 0.1f; // 百分比显示的初始长度:当处于等级的最底完美度,也需要显示一定长度。 private ParticleSystem _Effect; public bool CanSelect; private QianghuaLvInfo _QianghuaInfo; void OnEnable() { if (_Effect != null) { _Effect.gameObject.SetActive(false); } } public override void Show(Hashtable hash) { base.Show(); _QianghuaInfo = (QianghuaLvInfo)hash["InitObj"]; InitQianghua(); //var image = _Effect.GetComponent<Image>(); //image.color = new Color(image.color.r, image.color.g, image.color.b, 0); //_Effect.gameObject.SetActive(false); } public void PlayEffect() { if (_Effect == null) { _Effect = GameObject.Instantiate<ParticleSystem>(_EffectPrefab); _Effect.transform.SetParent(transform); _Effect.transform.localPosition = Vector2.zero; _Effect.transform.localRotation = Quaternion.Euler( Vector2.zero); _Effect.transform.localScale = Vector3.one; _Effect.gameObject.AddComponent<UIParticleSystem>(); } _Effect.gameObject.SetActive(true); //_Effect.Stop(); _Effect.Play(); //_Effect.CrossFade("dengjiqianghua", 0); } public override void Refresh() { base.Refresh(); var qianghua = _QianghuaInfo.EquipItem.GetEquipStarRate(_QianghuaInfo.Level); _QianghuaInfo.CurPerfect = (int)qianghua.x; _QianghuaInfo.MinPerfect = (int)qianghua.y; _QianghuaInfo.MaxPerfect = (int)qianghua.z; InitQianghua(); } private void InitQianghua() { _LevelName.text = StrDictionary.GetClientDictionaryString("#{2162}", _QianghuaInfo.Level); //if (!_QianghuaInfo.IsAuto) { if (_QianghuaInfo.CurPerfect >= _QianghuaInfo.MaxPerfect || !_QianghuaInfo.IsCanSelect) { _CanSelectGO.SetActive(false); CanSelect = false; _ProDisable.text = StrDictionary.GetClientDictionaryString("#{5432}"); } else { _CanSelectGO.SetActive(true); CanSelect = true; _ProDisable.text = ""; } } _CurPro.text = _QianghuaInfo.CurPerfect + "%"; _MaxPro.text = StrDictionary.GetClientDictionaryString("#{5392}", _QianghuaInfo.MinPerfect, _QianghuaInfo.MaxPerfect); Tab_EquipEnchanceRandRate tab = TableManager.GetEquipEnchanceRandRateByID(_QianghuaInfo.Level, 0); if(GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level >= tab.PlayerLevel) { if (_QianghuaInfo.CurPerfect > 0 || _QianghuaInfo.IsCanSelect) { _PerfectPro.gameObject.SetActive(true); _ProDisable.gameObject.SetActive(false); //if (_QianghuaInfo.CurPerfect == _QianghuaInfo.MinPerfect) //{ // _PerfectPro.value = beginPercentage; //} //else { float deltaPro = ((float)(_QianghuaInfo.CurPerfect - _QianghuaInfo.MinPerfect + 1)) / (_QianghuaInfo.MaxPerfect - _QianghuaInfo.MinPerfect + 1); _PerfectPro.value = deltaPro; } //_AttrDesc.text = StrDictionary.GetClientDictionaryString("#{5300}", _QianghuaInfo.CurPerfect, _QianghuaInfo.MaxPerfect); } else { _PerfectPro.gameObject.SetActive(false); _ProDisable.gameObject.SetActive(true); //_AttrDesc.text = StrDictionary.GetClientDictionaryString("#{5301}", _QianghuaInfo.MinPerfect, _QianghuaInfo.MaxPerfect); } } else { _PerfectPro.gameObject.SetActive(false); _ProDisable.text = StrDictionary.GetClientDictionaryString("#{5401}", tab.PlayerLevel); _ProDisable.gameObject.SetActive(true); } } }