using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class FashionDressCell : CellView { [SerializeField] ItemBehaviour m_Item; [SerializeField] Text m_ItemName; [SerializeField] Text m_ItemCount; [SerializeField] Text m_GetPath; [SerializeField] RectTransform m_ContainerStars; [SerializeField] Transform[] m_Stars; [SerializeField] Image[] m_StarEquips; [SerializeField] Button m_LevelUp; [SerializeField] Transform m_ContainerDarkMask; [SerializeField] Transform m_Lock; [SerializeField] Button m_Unlock; [SerializeField] Transform m_ContainerSelect; [SerializeField] Transform m_Equiped; [SerializeField] Transform m_Preview; [SerializeField] Transform m_UnlockRedpoint; [SerializeField] Transform m_LevelUpRedpoint; [SerializeField] Button m_Select; int fashionDressId = 0; FashionDressModel model { get { return ModelCenter.Instance.GetModel(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } public void Display(int id) { fashionDressId = id; FashionDress fashionDress; m_LevelUp.RemoveAllListeners(); m_Unlock.RemoveAllListeners(); m_Select.RemoveAllListeners(); var fashionDressLevel = model.GetFashionDressLevel(fashionDressId); var active = fashionDressLevel > 0; m_ContainerDarkMask.SetActive(!active); m_ContainerStars.SetActive(active); m_GetPath.SetActive(!active); m_UnlockRedpoint.SetActive(model.levelUpRedpoint.state == RedPointState.Simple && model.fashionDressRedpointId == fashionDressId); m_LevelUpRedpoint.SetActive(model.levelUpRedpoint.state == RedPointState.Simple && model.fashionDressRedpointId == fashionDressId); if (model.TryGetFashionDress(fashionDressId, out fashionDress)) { var equipItemId = fashionDress.GetEquipItemId(); var virtualEquipFashionId = model.GetVirtualEquipFashionDress(fashionDress.fashionDressType); var selectFashionDress = model.GetSelectFashionDress(fashionDress.fashionDressType); bool isEquiped = virtualEquipFashionId == fashionDressId; m_Equiped.SetActive(isEquiped); bool isSelect = selectFashionDress == fashionDressId; m_Preview.SetActive(!isEquiped && isSelect); m_ContainerSelect.SetActive(isSelect); m_LevelUp.SetActive(active && fashionDressLevel < fashionDress.maxLevel); bool isMax = fashionDressLevel >= fashionDress.maxLevel; var count = packModel.GetItemCountByID(PackType.Item, fashionDress.requireLevelUpItem); m_Item.SetItem(equipItemId, 0); var levelUpRequireCount = fashionDress.GetLevelUpRequireCount(fashionDressLevel); var requireCountDisplay = UIHelper.AppendColor(count >= levelUpRequireCount ? TextColType.DarkGreen : TextColType.Red, count.ToString()); m_ItemCount.text = isMax ? string.Empty : StringUtility.Contact(requireCountDisplay, "/", levelUpRequireCount); var config = FashionDressConfig.Get(fashionDressId); m_ItemName.text = config.name; m_GetPath.text = config.getWay; if (fashionDressLevel > 0) { for (int i = 0; i < m_Stars.Length; i++) { m_Stars[i].SetActive(i < fashionDress.maxLevel); } for (int i = 0; i < m_StarEquips.Length; i++) { m_StarEquips[i].SetActive(i < fashionDressLevel); int loop = ((int)Math.Max(fashionDressLevel - 1, 0)) / m_StarEquips.Length; int index = loop * m_StarEquips.Length + i < fashionDressLevel ? loop : loop - 1; if (i < fashionDressLevel) m_StarEquips[i].SetSprite("ImgStar_" + index); } } m_Lock.SetActive(count < levelUpRequireCount); m_Unlock.SetActive(count >= levelUpRequireCount); m_LevelUp.AddListener(LevelUp); m_Unlock.AddListener(LevelUp); m_Select.AddListener(Select); } } private void Select() { FashionDress fashionDress; if (model.TryGetFashionDress(fashionDressId, out fashionDress)) { var selectFashionDress = model.GetSelectFashionDress(fashionDress.fashionDressType); var virtualEquipFashionDress = model.GetVirtualEquipFashionDress(fashionDress.fashionDressType); if (selectFashionDress != fashionDressId) { if (model.IsFashionDressUnlock(fashionDressId)) { model.SetVirtualEquipFashionDress(fashionDress.fashionDressType, fashionDressId); model.SetSelectFashionDress(fashionDress.fashionDressType, fashionDressId); } else { model.SetSelectFashionDress(fashionDress.fashionDressType, fashionDressId); } } else { if (virtualEquipFashionDress == fashionDressId) { model.SetVirtualEquipFashionDress(fashionDress.fashionDressType, 0); model.SetSelectFashionDress(fashionDress.fashionDressType, 0); } else { model.SetSelectFashionDress(fashionDress.fashionDressType, virtualEquipFashionDress); } } } } private void LevelUp() { var error = 0; if (!model.TryLevelUp(fashionDressId, out error)) { model.DisplayLevelUpError(error); return; } model.SendLevelUp(fashionDressId); } } }