Files
SVSimServer/SVSim.BattleEngine/Engine/MyPageBanner.cs
gamer147 957af3d1ec feat(battle-engine): full Unity/VFX/god-object shims + expanded copy closure (2570 files)
Authored Unity primitive/object-model shim, VFX layer (control-flow-preserving, InstantVfx never invokes its action -- headless suppression), god-object stubs (GameMgr/EffectMgr/UIManager with faithfully-extracted nested enums), View/UI/Touch tree, LitJson+BetterList+Tuple copied, third-party stubs. Discovered Roslyn header-error masking: fixing class-header type errors unmasks body references, so the true copy closure is ~2570 files (was 782 under masking). Errors: masked-25720 -> 268; our shim files compile clean. Remaining: ~50 residual shim/external types, 24 NGUI UI-base overrides, static-type fixes, plus likely 1-2 more unmask waves.
2026-06-05 17:22:20 -04:00

295 lines
7.7 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Wizard;
public class MyPageBanner : MyPageBannerBase
{
protected enum MoveSide
{
Left,
Right
}
[SerializeField]
protected UICenterOnChild _uiCenterOnChild;
[SerializeField]
protected GameObject _pagerPrefab;
[SerializeField]
protected UIWrapContent _uiWrapContent;
[SerializeField]
protected GameObject _pagerBaseObject;
[SerializeField]
protected GameObject _buttonBase;
[SerializeField]
protected GameObject _buttonLeftObject;
[SerializeField]
protected GameObject _buttonRightObject;
[SerializeField]
private GameObject _bgObject;
protected bool _isAnimation;
protected bool _isCanSlide;
protected bool _isClickStart;
protected Vector3 _touchPoint;
protected int _bannerNo;
protected List<UISprite> _pagerSpriteList;
protected float _updateTimer;
protected GameObject _centerObject;
protected bool _isLeftButtonPressed;
protected bool _isRightButtonPressed;
private const int SLIDE_LIMIT_VALUE = 30;
private const string PAGER_OFF_SPRITE_NAME = "carousel_marker_off";
private const string PAGER_ON_SPRITE_NAME = "carousel_marker_on";
private const string CSV_NAME = "banner";
private void Start()
{
UIEventListener.Get(_buttonLeftObject).onPress = LeftButtonOnPress;
UIEventListener.Get(_buttonRightObject).onPress = RightButtonOnPress;
}
private void Update()
{
if (!base.IsCreateEnd)
{
return;
}
slideMoveUpdate();
if (_bannerList.Count > 1 && _isCanSlide)
{
_updateTimer += Time.deltaTime;
float changeTime = _bannerList[_bannerNo]._changeTime;
if (_updateTimer >= changeTime)
{
SlideStartSetting(MoveSide.Right);
}
}
if (_isCanSlide)
{
if (_isLeftButtonPressed)
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_SLIDE_BTN);
SlideStartSetting(MoveSide.Left);
}
else if (_isRightButtonPressed)
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_SLIDE_BTN);
SlideStartSetting(MoveSide.Right);
}
}
}
protected override IEnumerator CreateBannerImage()
{
_bannerList = new List<BannerInfo>(Data.MyPage.data._bannerList);
if (!base.IsEnableBanner)
{
base.gameObject.SetActive(value: false);
yield break;
}
yield return LoadBannerImage();
while (!base.gameObject.activeInHierarchy)
{
yield return null;
}
for (int i = 0; i < _bannerList.Count; i++)
{
GameObject gameObject = UnityEngine.Object.Instantiate(_bannerImagePrefab);
gameObject.transform.SetParent(_uiWrapContent.transform);
gameObject.transform.localScale = Vector3.one;
gameObject.transform.localPosition = Vector3.zero;
_bannerList[i].BannerGameObject = gameObject;
}
_uiWrapContent.onInitializeItem = _OnInitializeItem;
_uiWrapContent.SortBasedOnScrollMovement();
_uiCenterOnChild.onFinished = _OnFinishedCenterChild;
if (_bannerList.Count > 1)
{
GameObject gameObject2 = _uiWrapContent.transform.Find("0").gameObject;
_uiWrapContent.transform.Find((_bannerList.Count - 1).ToString()).gameObject.transform.localPosition = new Vector3(gameObject2.transform.localPosition.x - (float)_uiWrapContent.itemSize, gameObject2.transform.localPosition.y, gameObject2.transform.localPosition.z);
_pagerSpriteList = new List<UISprite>();
for (int j = 0; j < _bannerList.Count; j++)
{
GameObject gameObject3 = UnityEngine.Object.Instantiate(_pagerPrefab);
gameObject3.transform.SetParent(_pagerBaseObject.transform);
gameObject3.transform.localScale = Vector3.one;
gameObject3.transform.localPosition = Vector3.zero;
gameObject3.name = j.ToString();
_pagerSpriteList.Add(gameObject3.GetComponent<UISprite>());
}
_PagerUpDate();
UIGrid component = _pagerBaseObject.GetComponent<UIGrid>();
component.enabled = true;
float x = component.transform.localPosition.x - component.cellWidth * (float)(_bannerList.Count - 1) / 2f;
component.transform.localPosition = new Vector3(x, component.transform.localPosition.y, component.transform.localPosition.z);
}
else
{
_buttonBase.SetActive(value: false);
}
_centerObject = _uiWrapContent.transform.Find(_bannerNo.ToString()).gameObject;
}
protected void BannerOnPress(GameObject inObject, bool inState)
{
if (inState && Input.GetMouseButtonDown(0))
{
_touchPoint = Input.mousePosition;
_isClickStart = true;
_isCanSlide = true;
StartCoroutine(BannerPressAnimation(inObject));
}
}
private void slideMoveUpdate()
{
if (!_isAnimation)
{
_isCanSlide = true;
}
if (_isClickStart && Input.GetMouseButton(0) && _isCanSlide)
{
if (Input.mousePosition.x < _touchPoint.x - 30f)
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_SLIDE_BTN);
SlideStartSetting(MoveSide.Right);
}
else if (Input.mousePosition.x > _touchPoint.x + 30f)
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_SLIDE_BTN);
SlideStartSetting(MoveSide.Left);
}
}
}
protected void LeftButtonOnPress(GameObject inObject, bool isPressed)
{
_isLeftButtonPressed = isPressed;
_OnFinishedCenterChild();
}
protected void RightButtonOnPress(GameObject inObject, bool isPressed)
{
_isRightButtonPressed = isPressed;
_OnFinishedCenterChild();
}
protected void SlideStartSetting(MoveSide inMoveSide)
{
_isAnimation = true;
_isCanSlide = false;
_isClickStart = false;
_touchPoint = Input.mousePosition;
_updateTimer = 0f;
if (inMoveSide == MoveSide.Left)
{
_bannerNo = ((_bannerNo - 1 < 0) ? (_bannerList.Count - 1) : (_bannerNo - 1));
}
else
{
_bannerNo = (_bannerNo + 1) % _bannerList.Count;
}
if (_bannerList.Count == 2)
{
GameObject gameObject = _uiWrapContent.transform.Find(_bannerNo.ToString()).gameObject;
Vector3 localPosition = _centerObject.transform.localPosition;
if (inMoveSide == MoveSide.Left)
{
localPosition.x -= _uiWrapContent.itemSize;
gameObject.transform.localPosition = localPosition;
}
else
{
localPosition.x += _uiWrapContent.itemSize;
gameObject.transform.localPosition = localPosition;
}
}
_centerObject = _uiWrapContent.transform.Find(_bannerNo.ToString()).gameObject;
_uiCenterOnChild.CenterOn(_centerObject.transform);
_PagerUpDate();
}
protected void _OnInitializeItem(GameObject go, int wrapIndex, int realIndex)
{
int index = wrapIndex;
UIEventListener.Get(go).onPress = BannerOnPress;
go.name = index.ToString();
InitializeEventHandler(go, _bannerList[index]);
UIEventListener uIEventListener = UIEventListener.Get(go);
uIEventListener.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener.onClick, (UIEventListener.VoidDelegate)delegate
{
_isClickStart = false;
});
}
protected void _OnFinishedCenterChild()
{
_isAnimation = false;
}
protected void _PagerUpDate()
{
if (_bannerList.Count <= 1)
{
return;
}
for (int i = 0; i < _bannerList.Count; i++)
{
if (i == _bannerNo)
{
_pagerSpriteList[i].spriteName = "carousel_marker_on";
}
else
{
_pagerSpriteList[i].spriteName = "carousel_marker_off";
}
}
}
private IEnumerator BannerPressAnimation(GameObject inTweenObject)
{
TweenScale tweenScaleComponent = inTweenObject.GetComponent<TweenScale>();
if ((bool)tweenScaleComponent)
{
tweenScaleComponent.PlayForward();
while (Input.GetMouseButton(0))
{
yield return null;
}
tweenScaleComponent.PlayReverse();
}
}
protected void OnDisable()
{
_isClickStart = false;
}
public void SetChild(GameObject obj)
{
obj.transform.parent = _bgObject.transform;
}
}