Files
SVSimServer/SVSim.BattleEngine/Engine/Wizard/DrumrollScrollManager.cs
gamer147 0d9d8acae0 feat(battle-engine): M1 auto-copy closure (782 battle-logic files)
Compile-driven bulk-copy loop (tools/engine-port/m1_copy_loop.py) pulled the precise reference closure of the battle-core roots, stopping at the classify god-object/View-VFX-UI boundary. 782 files; no re-explosion (M0 had estimated ~order 1000). Residual frontier = 52 shim-classified + 80 external (Unity/BCL) types to author next.
2026-06-05 16:57:20 -04:00

168 lines
4.2 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using Cute;
using UnityEngine;
namespace Wizard;
public class DrumrollScrollManager : MonoBehaviour
{
private const float SPRING_STRENGTH_FAST = 5000f;
private const int MOMENTUM_AMOUNT = 70;
[SerializeField]
private UIScrollView _scrollView;
[SerializeField]
private UIGrid _itemListParent;
[SerializeField]
private UICenterOnChild _gridCenter;
[SerializeField]
private UIButton _ButtonScrollPrev;
[SerializeField]
private UIButton _ButtonScrollNext;
private List<GameObject> _itemList = new List<GameObject>();
private bool _isDrag;
private int _CurrentIndex;
private Action<int> _SelectCallBack;
public IEnumerator CreateDrumrollScroll_Coroutine(List<GameObject> itemObjList, int defaultIndex, Action<int> selectCallback, Action onCreateCallBack = null)
{
InitItemList(itemObjList);
_CurrentIndex = defaultIndex;
_SelectCallBack = selectCallback;
yield return null;
_gridCenter.onCenter = null;
float springStrength = _gridCenter.springStrength;
_gridCenter.springStrength = 5000f;
_gridCenter.onFinished = delegate
{
_gridCenter.onFinished = null;
TweenAlpha.Begin(base.gameObject, 0f, 1f);
};
_gridCenter.CenterOn(_itemList[defaultIndex].transform);
_gridCenter.springStrength = springStrength;
_gridCenter.onCenter = null;
_gridCenter.onCenter = delegate(GameObject g)
{
_isDrag = true;
OnChangeScroll(g);
};
_ButtonScrollPrev.onClick.Clear();
_ButtonScrollPrev.onClick.Add(new EventDelegate(delegate
{
OnPushBtnPrev();
}));
_ButtonScrollNext.onClick.Clear();
_ButtonScrollNext.onClick.Add(new EventDelegate(delegate
{
OnPushBtnNext();
}));
SetDrumrollButton();
if (_itemList.Count <= 1)
{
_scrollView.enabled = false;
}
onCreateCallBack.Call();
}
private void InitItemList(List<GameObject> itemObjList)
{
_scrollView.currentMomentum = Vector3.zero;
_scrollView.DisableSpring();
_scrollView.momentumAmount = 70f;
_itemList = itemObjList;
for (int i = 0; i < _itemList.Count; i++)
{
GameObject obj = _itemList[i];
obj.transform.parent = _itemListParent.transform;
obj.transform.localScale = Vector3.one;
obj.transform.localPosition = Vector3.down * i * _itemListParent.cellHeight;
obj.name = i.ToString();
obj.gameObject.SetActive(value: true);
UIEventListener uIEventListener = UIEventListener.Get(obj);
uIEventListener.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener.onClick, (UIEventListener.VoidDelegate)delegate(GameObject g)
{
OnChangeScroll(g);
});
}
_itemListParent.repositionNow = true;
_scrollView.ResetPosition();
}
private void OnChangeScroll(GameObject g)
{
int num = int.Parse(g.name);
if (_CurrentIndex != num)
{
_CurrentIndex = num;
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_SLIDE_BTN);
if (!_isDrag)
{
_gridCenter.CenterOn(g.transform);
}
else
{
_isDrag = false;
}
SetDrumrollButton();
_SelectCallBack.Call(_CurrentIndex);
}
}
private void SetDrumrollButton()
{
if (_itemList.Count <= 1)
{
_ButtonScrollNext.gameObject.SetActive(value: false);
_ButtonScrollPrev.gameObject.SetActive(value: false);
}
else if (_CurrentIndex == _itemList.Count - 1)
{
_ButtonScrollNext.gameObject.SetActive(value: false);
_ButtonScrollPrev.gameObject.SetActive(value: true);
}
else if (_CurrentIndex == 0)
{
_ButtonScrollNext.gameObject.SetActive(value: true);
_ButtonScrollPrev.gameObject.SetActive(value: false);
}
else
{
_ButtonScrollNext.gameObject.SetActive(value: true);
_ButtonScrollPrev.gameObject.SetActive(value: true);
}
}
private void OnPushBtnNext()
{
int currentIndex = _CurrentIndex;
if (_CurrentIndex < _itemList.Count - 1)
{
currentIndex++;
_isDrag = false;
OnChangeScroll(_itemList[currentIndex].gameObject);
}
}
private void OnPushBtnPrev()
{
int currentIndex = _CurrentIndex;
if (_CurrentIndex > 0)
{
currentIndex--;
_isDrag = false;
OnChangeScroll(_itemList[currentIndex].gameObject);
}
}
}