Files
SVSimServer/SVSim.BattleEngine/Engine/MyPageCardPanelAnimation.cs

147 lines
2.9 KiB
C#

using UnityEngine;
public class MyPageCardPanelAnimation : MonoBehaviour
{
public enum State
{
Start,
End
}
private float ClickRotateTimeTotal;
private float ClickRotateTime;
private float ClickIndex;
private bool _isCutCardMotion;
private State _state = State.End;
private float _timer;
private float[] _randomTimer;
private int[] _randomDir;
private GameObject[] _cardPanel;
private UIPanel[] _panel;
private Vector3[] _defaultPosition;
public bool IsCardMoving
{
get
{
if (!(ClickRotateTime > 0f))
{
return _state != State.End;
}
return true;
}
}
public void SetCardPanelList(GameObject[] list)
{
_cardPanel = new GameObject[list.Length];
for (int i = 0; i < list.Length; i++)
{
_cardPanel[i] = list[i];
MyPageCardPanel component = list[i].GetComponent<MyPageCardPanel>();
if (component != null)
{
component.Index = i;
}
}
InitRandom();
InitializePanel();
}
public void UpdateCardPanelDefaultPosition(Vector3[] newPosition)
{
_defaultPosition = newPosition;
}
private void InitializePanel()
{
if (_panel == null)
{
_panel = new UIPanel[_cardPanel.Length];
_defaultPosition = new Vector3[_cardPanel.Length];
for (int i = 0; i < _cardPanel.Length; i++)
{
GameObject gameObject = _cardPanel[i];
_panel[i] = gameObject.GetComponent<UIPanel>();
_defaultPosition[i] = gameObject.transform.localPosition;
}
}
}
public void StartCardPanelAnimation(bool isCutCardMotion)
{
_state = State.Start;
_timer = 0f;
_isCutCardMotion = isCutCardMotion;
for (int i = 0; i < _cardPanel.Length; i++)
{
GameObject obj = _cardPanel[i];
Vector3 localPosition = obj.transform.transform.localPosition;
localPosition.x = -22100f;
obj.transform.transform.localPosition = localPosition;
iTween.Stop(obj);
}
}
private void ColorChange(bool isForceOpacity = false)
{
if (_panel == null)
{
return;
}
for (int i = 0; i < _cardPanel.Length; i++)
{
if (_panel[i].alpha < 1f && !isForceOpacity)
{
float alpha = _panel[i].alpha;
alpha += Time.deltaTime * 4f;
if (alpha >= 1f)
{
alpha = 1f;
}
_panel[i].alpha = alpha;
}
else
{
_panel[i].alpha = 1f;
}
}
}
public void StopMove()
{
_state = State.End;
for (int i = 0; i < _cardPanel.Length; i++)
{
iTween.Stop(_cardPanel[i]);
if (_panel != null)
{
_panel[i].alpha = 1f;
}
}
InitRandom();
ColorChange(isForceOpacity: true);
}
private void InitRandom()
{
_randomDir = new int[_cardPanel.Length];
_randomTimer = new float[_cardPanel.Length];
for (int i = 0; i < _cardPanel.Length; i++)
{
_randomDir[i] = (((double)Random.value > 0.5) ? 1 : (-1));
_randomTimer[i] = Random.Range(-0.3f, 0f);
}
}
}