//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, May 08, 2018 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System.Collections.Generic; namespace vnxbqy.UI { public class RuneTowerSweepResultTotalBehaviour : MonoBehaviour { [SerializeField] RayAccepter m_RayAccepter; [SerializeField] RectTransform m_ContainerTitle; [SerializeField] RectTransform m_ContainerFloor; [SerializeField] Text m_SweepHighestFloor; [SerializeField] RectTransform m_EssenceContainer; [SerializeField] Text m_Essence; [SerializeField] RectTransform m_MagicEssenceContainer; [SerializeField] Text m_MagicEssence; [SerializeField] RuneTowerSweepResultRuneGroup m_OrangeRuneGroup; [SerializeField] RuneTowerSweepResultRuneGroup m_PurpleRuneGroup; [SerializeField] RectTransform m_BlueRuneContainer; [SerializeField] Text m_BlueRuneCount; [SerializeField] RectTransform m_WhiteRuneContainer; [SerializeField] Text m_WhiteRuneCount; public bool interactable { get { return m_RayAccepter.raycastTarget; } set { m_RayAccepter.raycastTarget = value; } } RuneTowerModel runeTowerModel { get { return ModelCenter.Instance.GetModel(); } } public void ShowSweepTotalResult() { var runesTotal = new Dictionary(); var essenceTotal = 0; var magicEssenceTotal = 0; for (int i = 0; i < runeTowerModel.towerSweepResults.Count; i++) { var result = runeTowerModel.towerSweepResults[i]; essenceTotal += result.essence; magicEssenceTotal += result.magicEssence; for (int j = 0; j < result.items.Length; j++) { var item = result.items[j]; if (runesTotal.ContainsKey(item.id)) { runesTotal[item.id] = runesTotal[item.id] + item.count; } else { runesTotal[item.id] = item.count; } } } var highestFloor = runeTowerModel.yesterdayPassFloor; var floorConfig = RuneTowerFloorConfig.Get(highestFloor); var towerConfig = RuneTowerConfig.Get(floorConfig.TowerId); m_SweepHighestFloor.text = StringUtility.Contact(towerConfig.TowerName, floorConfig.FloorName); m_Essence.text = essenceTotal.ToString(); if (magicEssenceTotal > 0) { m_MagicEssenceContainer.SetActive(true); m_MagicEssence.text = magicEssenceTotal.ToString(); } else { m_MagicEssenceContainer.SetActive(false); } var orangeRunes = FiltrateRunes(runesTotal, 4); m_OrangeRuneGroup.SetActive(orangeRunes.Count > 0); if (orangeRunes.Count > 0) { m_OrangeRuneGroup.Display(orangeRunes); } var purpleRunes = FiltrateRunes(runesTotal, 3); m_PurpleRuneGroup.SetActive(purpleRunes.Count > 0); if (purpleRunes.Count > 0) { m_PurpleRuneGroup.Display(purpleRunes); } var blueRunes = FiltrateRunes(runesTotal, 2); m_BlueRuneContainer.SetActive(blueRunes.Count > 0); if (blueRunes.Count > 0) { var count = 0; foreach (var rune in blueRunes) { count += rune.count; } m_BlueRuneCount.text = StringUtility.Contact("x", count); } var whiteRunes = FiltrateRunes(runesTotal, 1); m_WhiteRuneContainer.SetActive(whiteRunes.Count > 0); if (whiteRunes.Count > 0) { var count = 0; foreach (var rune in whiteRunes) { count += rune.count; } m_WhiteRuneCount.text = StringUtility.Contact("x", count); } } public void UpdateSizeAndPosition() { var rectTransform = this.transform as RectTransform; var deltaHeight = m_ContainerTitle.rect.height; var height = m_ContainerTitle.gameObject.activeInHierarchy ? m_ContainerTitle.rect.height : 0; m_ContainerTitle.anchoredPosition = m_ContainerTitle.anchoredPosition.SetY(0); m_ContainerFloor.anchoredPosition = m_ContainerFloor.anchoredPosition.SetY(-height); height += m_ContainerFloor.gameObject.activeInHierarchy ? m_ContainerFloor.rect.height : 0; m_EssenceContainer.anchoredPosition = m_EssenceContainer.anchoredPosition.SetY(-height); height += m_EssenceContainer.gameObject.activeInHierarchy ? m_EssenceContainer.rect.height : 0; m_MagicEssenceContainer.anchoredPosition = m_MagicEssenceContainer.anchoredPosition.SetY(-height); height += m_MagicEssenceContainer.gameObject.activeInHierarchy ? m_MagicEssenceContainer.rect.height : 0; var m_OrangeRectTransform = m_OrangeRuneGroup.transform as RectTransform; m_OrangeRectTransform.anchoredPosition = m_OrangeRectTransform.anchoredPosition.SetY(-height); height += m_OrangeRectTransform.gameObject.activeInHierarchy ? m_OrangeRectTransform.rect.height : 0; var m_PurpleRectTransform = m_PurpleRuneGroup.transform as RectTransform; m_PurpleRectTransform.anchoredPosition = m_PurpleRectTransform.anchoredPosition.SetY(-height); height += m_PurpleRectTransform.gameObject.activeInHierarchy ? m_PurpleRectTransform.rect.height : 0; m_BlueRuneContainer.anchoredPosition = m_BlueRuneContainer.anchoredPosition.SetY(-height); height += m_BlueRuneContainer.gameObject.activeInHierarchy ? m_BlueRuneContainer.rect.height : 0; m_WhiteRuneContainer.anchoredPosition = m_WhiteRuneContainer.anchoredPosition.SetY(-height); height += m_WhiteRuneContainer.gameObject.activeInHierarchy ? m_WhiteRuneContainer.rect.height : 0; rectTransform.sizeDelta = rectTransform.sizeDelta.SetY(height); } private List FiltrateRunes(Dictionary _runeDictory, int _quality) { var runes = new List(); foreach (var rune in _runeDictory.Keys) { var itemConfig = ItemConfig.Get(rune); if (itemConfig.ItemColor == _quality) { runes.Add(new Item(rune, _runeDictory[rune])); } } return runes; } } }