| using UnityEngine; | 
| using UnityEngine.UI; | 
| using System.Collections.Generic; | 
|   | 
| //武将模型站台模块 | 
| public class HeroShowBaseCell : MonoBehaviour | 
| { | 
|   | 
|     Image m_QualityBG; | 
|     Image qualityBG //底座台子 | 
|     { | 
|         get | 
|         { | 
|             if (m_QualityBG == null) | 
|             { | 
|                 m_QualityBG = this.transform.GetComponent<Image>("Container_HeroShow/dz"); | 
|             } | 
|             return m_QualityBG; | 
|         } | 
|     } | 
|   | 
|     UIHeroController m_HeroModel; | 
|     UIHeroController heroModel | 
|     { | 
|         get | 
|         { | 
|             if (m_HeroModel == null) | 
|             { | 
|                 m_HeroModel = this.transform.GetComponent<UIHeroController>("Container_HeroShow/rolemodel"); | 
|             } | 
|             return m_HeroModel; | 
|         } | 
|     } | 
|   | 
|     Transform m_StarRect; | 
|     Transform starRect | 
|     { | 
|         get | 
|         { | 
|             if (m_StarRect == null) | 
|             { | 
|                 m_StarRect = this.transform.Find("Container_HeroShow/layout/layout/stars"); | 
|             } | 
|             return m_StarRect; | 
|         } | 
|     } | 
|   | 
|     List<Image> m_StarsImg; | 
|     List<Image> starsImg | 
|     { | 
|         get | 
|         { | 
|             if (m_StarsImg == null) | 
|             { | 
|                 m_StarsImg = new List<Image>(); | 
|                 for (int i = 0; i < 5; i++) | 
|                 { | 
|                     var star = this.transform.GetComponent<Image>("Container_HeroShow/layout/layout/stars/star" + i); | 
|                     m_StarsImg.Add(star); | 
|                 } | 
|             } | 
|             return m_StarsImg; | 
|         } | 
|     } | 
|   | 
|   | 
|     Image m_LockState; | 
|     Image lockState | 
|     { | 
|         get | 
|         { | 
|             if (m_LockState == null) | 
|             { | 
|                 m_LockState = this.transform.GetComponent<Image>("Container_HeroShow/lockstate"); | 
|             } | 
|             return m_LockState; | 
|         } | 
|     } | 
|   | 
|     Text m_Name; | 
|     Text nameText | 
|     { | 
|         get | 
|         { | 
|             if (m_Name == null) | 
|             { | 
|                 m_Name = this.transform.GetComponent<Text>("Container_HeroShow/layout/name"); | 
|             } | 
|             return m_Name; | 
|         } | 
|     } | 
|   | 
|   | 
|     Text m_LvText;  //武将等级 + 觉醒等级 | 
|     Text lvText | 
|     { | 
|         get | 
|         { | 
|             if (m_LvText == null) | 
|             { | 
|                 m_LvText = this.transform.GetComponent<Text>("Container_HeroShow/layout/layout/lv"); | 
|             } | 
|             return m_LvText; | 
|         } | 
|     } | 
|   | 
|     OutlineEx m_LvTextOutline; | 
|     OutlineEx heroLVOutline | 
|     { | 
|         get | 
|         { | 
|             if (m_LvTextOutline == null) | 
|             { | 
|                 m_LvTextOutline = this.transform.GetComponent<OutlineEx>("Container_HeroShow/layout/layout/lv"); | 
|             } | 
|             return m_LvTextOutline; | 
|         } | 
|     } | 
|   | 
|     Button m_StarBtn; | 
|     Button starBtn | 
|     { | 
|         get | 
|         { | 
|             if (m_StarBtn == null) | 
|             { | 
|                 m_StarBtn = this.transform.GetComponent<Button>("Container_HeroShow/layout/layout/stars"); | 
|             } | 
|             return m_StarBtn; | 
|         } | 
|     } | 
|   | 
|   | 
|     void Awake() | 
|     { | 
|         LoadPrefab(); | 
|     } | 
|   | 
|     // 武将模型站台显示 | 
|     public void Init(int heroID, int skinID, int breakLevel = 0, int star = 0, int awakelv = 0, int lv = 0, bool isShowLock = false) | 
|     { | 
|         LoadPrefab();   //存在被卸载的可能,重新加载 | 
|         var heroConfig = HeroConfig.Get(heroID); | 
|         qualityBG.SetSprite("herodz" + heroConfig.Quality); | 
|         // int skinID = 0; | 
|         // if (heroGuid != "") | 
|         // { | 
|         //     var hero = HeroManager.Instance.GetHero(heroGuid); | 
|         //     skinID = hero.SkinID; | 
|         // } | 
|         // else | 
|         // { | 
|         //     skinID = heroConfig.SkinIDList[0]; | 
|         // } | 
|   | 
|         heroModel.Create(skinID, heroConfig.UIScale); | 
|   | 
|         if (star == 0) | 
|         { | 
|             starRect.SetActive(false); | 
|         } | 
|         else | 
|         { | 
|             starRect.SetActive(true); | 
|             for (int i = 0; i < starsImg.Count; i++) | 
|             { | 
|                 if ((star - 1) % starsImg.Count >= i) | 
|                 { | 
|                     starsImg[i].SetActive(true); | 
|                     starsImg[i].SetSprite("herostar" + (((star - 1) / starsImg.Count) + 1) * starsImg.Count); | 
|                 } | 
|                 else | 
|                 { | 
|                     starsImg[i].SetActive(false); | 
|                 } | 
|             } | 
|         } | 
|   | 
|         lockState.SetActive(isShowLock); | 
|   | 
|         nameText.text = breakLevel == 0 ? heroConfig.Name : Language.Get("herocardbreaklv", heroConfig.Name, breakLevel); | 
|         nameText.color = UIHelper.GetUIColorByFunc(heroConfig.Quality); | 
|         if (lv == 0) | 
|         { | 
|             lvText.SetActive(false); | 
|         } | 
|         else | 
|         { | 
|             lvText.SetActive(true); | 
|             if (awakelv == 0) | 
|             { | 
|                 lvText.text = string.Format("{0}{1}", Language.Get("L1094"), lv); | 
|             } | 
|             else | 
|             {  | 
|                 lvText.text = string.Format("{0}{1} {2}", Language.Get("L1094"), lv, Language.Get("herocard12", awakelv)); | 
|             } | 
|             heroLVOutline.colorType = awakelv == 0 ? QualityTextColType.None : QualityTextColType.red; | 
|         } | 
|   | 
|         starBtn.AddListener(() => | 
|         {  | 
|             SmallTipWin.showText = Language.Get("HeroGift14", star); | 
|             SmallTipWin.worldPos = CameraManager.uiCamera.ScreenToWorldPoint(Input.mousePosition); | 
|             UIManager.Instance.OpenWindow<SmallTipWin>(); | 
|         }); | 
|     } | 
|   | 
|     GameObject cellContainer; | 
|     protected void LoadPrefab() | 
|     { | 
|         if (cellContainer != null) | 
|             return; | 
|   | 
|         var tmp = transform.Find("Container_HeroShow"); | 
|         if (tmp != null) | 
|         { | 
|             cellContainer = tmp.gameObject; | 
|             return; | 
|         } | 
|         if (cellContainer == null) | 
|         { | 
|             cellContainer = UIUtility.CreateWidget("HeroShowBaseCell", "Container_HeroShow"); | 
|   | 
|             if (cellContainer != null) | 
|             { | 
|                 cellContainer.transform.SetParentEx(this.transform, Vector3.zero, Quaternion.identity, Vector3.one); | 
|                 cellContainer.transform.SetAsFirstSibling(); | 
|             } | 
|         } | 
|   | 
|         //缩放到和父rect一样大 | 
|         // var scale = 1f; | 
|         // var rect = cellContainer.GetComponent<RectTransform>(); | 
|         // var parentRect = transform.GetComponent<RectTransform>(); | 
|         // float width = parentRect.sizeDelta.x; | 
|         // if (width <= 0f) | 
|         // { | 
|         //     //外部控制了尺寸获取为0 | 
|         //     GridLayoutGroup grid = GetComponentInParent<GridLayoutGroup>(); | 
|         //     if (grid != null) | 
|         //     { | 
|         //         width = grid.cellSize.x; | 
|         //     } | 
|   | 
|         // } | 
|         // scale = width / rect.sizeDelta.x; | 
|         // cellContainer.transform.localScale = cellContainer.transform.localScale * scale; | 
|     } | 
| } |