//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, April 10, 2018
|
//--------------------------------------------------------
|
using System.Collections.Generic;
|
using UnityEngine;
|
|
namespace Snxxz.UI
|
{
|
|
public class RightBottomFadeInOut : MonoBehaviour
|
{
|
[SerializeField] List<MainWinRightBottomGrid> m_Grids;
|
[SerializeField] RectTransform m_Container;
|
[SerializeField] Vector2 m_GridSize;
|
[SerializeField] Vector2 m_Space;
|
|
public void Init()
|
{
|
RefreshGridsActiveState();
|
FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChange;
|
}
|
|
public void UnInit()
|
{
|
FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChange;
|
}
|
|
public void Switch(bool show)
|
{
|
var index = 0;
|
foreach (var grid in m_Grids)
|
{
|
var offset = index / 4;
|
grid.Switch(show, offset * (m_GridSize.x + m_Space.x), offset * 0.1f);
|
if (grid.gameObject.activeInHierarchy)
|
{
|
index++;
|
}
|
}
|
}
|
|
public void SwitchImmedidately(bool show)
|
{
|
var index = 0;
|
foreach (var grid in m_Grids)
|
{
|
var offset = index / 4;
|
grid.SwitchImmediately(show, offset * (m_GridSize.x + m_Space.x));
|
if (grid.gameObject.activeInHierarchy)
|
{
|
index++;
|
}
|
}
|
}
|
|
private void OnFuncStateChange(int functionId)
|
{
|
RefreshGridsActiveState();
|
}
|
|
private void RefreshGridsActiveState()
|
{
|
m_Grids.Sort((MainWinRightBottomGrid x, MainWinRightBottomGrid y) =>
|
{
|
return x.index.CompareTo(y.index);
|
});
|
|
foreach (var grid in m_Grids)
|
{
|
var active = grid.IsOpen();
|
if (active && !grid.gameObject.activeSelf)
|
{
|
grid.gameObject.SetActive(true);
|
}
|
|
if (!active && grid.gameObject.activeSelf)
|
{
|
grid.gameObject.SetActive(false);
|
}
|
}
|
|
Layout();
|
}
|
|
[ContextMenu("Layout")]
|
public void Layout()
|
{
|
var index = 0;
|
foreach (var grid in m_Grids)
|
{
|
if (grid.gameObject.activeSelf)
|
{
|
var row = index % 4;
|
var column = index / 4;
|
|
var x = m_Container.rect.width * 0.5f - m_GridSize.x * (column + 0.5f) - m_Space.x * column;
|
var y = m_Container.rect.height * 0.5f - m_GridSize.y * (row + 0.5f) - m_Space.y * row;
|
grid.rectTransform.anchoredPosition = new Vector2(x, y);
|
index++;
|
}
|
}
|
|
foreach (var grid in m_Grids)
|
{
|
if (grid.gameObject.activeSelf)
|
{
|
grid.transform.SetAsFirstSibling();
|
}
|
}
|
}
|
|
}
|
|
|
|
}
|