//--------------------------------------------------------
|
// [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<RuneTowerModel>(); } }
|
|
public void ShowSweepTotalResult()
|
{
|
var runesTotal = new Dictionary<int, int>();
|
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<Item> FiltrateRunes(Dictionary<int, int> _runeDictory, int _quality)
|
{
|
var runes = new List<Item>();
|
|
foreach (var rune in _runeDictory.Keys)
|
{
|
var itemConfig = ItemConfig.Get(rune);
|
if (itemConfig.ItemColor == _quality)
|
{
|
runes.Add(new Item(rune, _runeDictory[rune]));
|
}
|
}
|
|
return runes;
|
}
|
|
}
|
|
}
|
|
|
|