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 _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(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(); 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()); } _PagerUpDate(); UIGrid component = _pagerBaseObject.GetComponent(); 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(); 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; } }