//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, April 26, 2019 //-------------------------------------------------------- using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.UI; using System; namespace vnxbqy.UI { public class OtherPlayerSuitWidget : MonoBehaviour { [SerializeField] Text m_SuitName; [SerializeField] StarToggle[] m_StarToggles; [SerializeField] Text[] m_SuitEquipNames; [SerializeField] EquipSuitPropertyBar m_TwoSuit; [SerializeField] EquipSuitPropertyBar m_FiveSuit; [SerializeField] Text m_EightSuitTitle; [SerializeField] Text m_EightSuitDescription; Dictionary placeStars; int level; int job; int twoSuitLevel; int fiveSuitLevel; int eightSuitLevel; public void Display(OtherPlayerEquipModel.SuitInfo suitInfo) { placeStars = suitInfo.placeStars; level = suitInfo.level; job = suitInfo.job; twoSuitLevel = suitInfo.suitLevels[EquipSuitType.TwoSuit]; fiveSuitLevel = suitInfo.suitLevels[EquipSuitType.FiveSuit]; eightSuitLevel = suitInfo.suitLevels[EquipSuitType.EightSuit]; m_SuitName.text = EquipSuitConfig.GetConfigs(job, level, EquipSuitType.TwoSuit)[0].name; var maxLevel = EquipStarModel.GetMaxStarLevel(level); m_StarToggles[3].SetActive(maxLevel >= 9); m_StarToggles[2].SetActive(maxLevel >= 6); m_StarToggles[1].SetActive(maxLevel >= 3); m_StarToggles[0].SetActive(true); m_StarToggles[3].AddListener(() => { DisplaySuitInfo(9); }); m_StarToggles[2].AddListener(() => { DisplaySuitInfo(6); }); m_StarToggles[1].AddListener(() => { DisplaySuitInfo(3); }); m_StarToggles[0].AddListener(() => { DisplaySuitInfo(0); }); m_StarToggles[0].Select(); DisplaySuitInfo(0); } void DisplaySuitInfo(int star) { DisplaySuitCollections(star); DisplayProperty(star); } void DisplaySuitCollections(int star) { for (int i = 1; i <= 8; i++) { var hasSuit = placeStars.ContainsKey(i) && placeStars[i] >= star; m_SuitEquipNames[i - 1].color = UIHelper.GetUIColor(hasSuit ? TextColType.Green : TextColType.White, true); m_SuitEquipNames[i - 1].text = UIHelper.GetEquipPlaceName(i); } } void DisplayProperty(int star) { var twoConfigs = EquipSuitConfig.GetConfigs(PlayerDatas.Instance.baseData.Job, level, EquipSuitType.TwoSuit); var fiveConfigs = EquipSuitConfig.GetConfigs(PlayerDatas.Instance.baseData.Job, level, EquipSuitType.FiveSuit); var eightConfigs = EquipSuitConfig.GetConfigs(PlayerDatas.Instance.baseData.Job, level, EquipSuitType.EightSuit); var config = twoConfigs.Find(x => { return x.star == star; }); var properties = new List(); var twoSuit = new EquipSuitPropertyEntry() { type = EquipSuitType.TwoSuit, actived = twoSuitLevel >= star, properties = new List(config.attr), }; config = fiveConfigs.Find(x => { return x.star == star; }); properties = new List(); var fiveSuit = new EquipSuitPropertyEntry() { type = EquipSuitType.FiveSuit, actived = fiveSuitLevel >= star, properties = new List(config.attr), }; config = eightConfigs.Find(x => { return x.star == star; }); m_TwoSuit.Display(twoSuit, true); m_FiveSuit.Display(fiveSuit, true); m_EightSuitDescription.text = GetEightSuitDescription(config.id); var color = UIHelper.GetUIColor(eightSuitLevel >= star ? TextColType.Green : TextColType.White, true); m_EightSuitTitle.color = color; m_EightSuitDescription.color = color; } public void Dispose() { } private string GetEightSuitDescription(int suitId) { var config = EquipSuitConfig.Get(suitId); if (config.skillID > 0) { return config.description; } else { return PlayerPropertyConfig.GetFullDescription(config.attr[0]); } } [System.Serializable] public class StarToggle { public int star; public Text title; public Toggle toggle; Action onSelect; public void SetActive(bool active) { title.SetActive(active); toggle.interactable = active; if (active) { toggle.SetListener(OnValueChange); } else { toggle.RemoveAllListeners(); } } public void Select() { toggle.isOn = true; } public void AddListener(Action callBack) { onSelect = callBack; } private void OnValueChange(bool value) { if (value) { if (onSelect != null) { onSelect(); } } } } } }