using System.Collections; using System.Collections.Generic; using BehaviorDesigner.Runtime.Tasks.Unity.UnityGameObject; using cfg.CharacterCfg; using cfg.ShowCfg; using Cysharp.Threading.Tasks; using TMPro; using UnityEngine; using UnityEngine.UI; using UnityEngine.UIElements; using Button = UnityEngine.UI.Button; using Image = UnityEngine.UI.Image; using Toggle = UnityEngine.UI.Toggle; using ScrollView = PhxhSDK.PhxhScrollView; using Framework; using Gameplay; using Gameplay.SubSystems; using PhxhSDK; public class UICameraAndPosterChangeController : UIWindow { //UI GameObj ///Auto Gen Start/// public Image Image_CBG; public Button Button_Back; public TMP_Text Text_Back; public Button Button_Home; public Button Button_Scene01; public Button Button_Scene02; public Image Image_View01; public Image Image_View02; public Image Image_View03; public TMP_Text Text_ChangeThisScene; public Button Button_Scene03; public Button Button_Scene04; public Button Button_Confirm; public TMP_Text Text_BtnConfirm; public Button Button_Cancel; public Button Button_ChangePoster; public TMP_Text Text_ChangePoster; public Button Button_ChangeScene; public TMP_Text Text_ChangeScene; public Image Image_Menu; public Button Button_Rarity; public TMP_Text Text_Rarity; public TMP_Text Text_RaritySelect; public Button Button_Level; public TMP_Text Text_Lv; public TMP_Text Text_LvSelect; public Image Image_Lv; public Image Image_Down1; public Button Button_AdvanceLevel; public TMP_Text Text_AdvSelect; public TMP_Text Text_Advance; public Image Image_Down2; public TMP_Dropdown Dropdown_ChangeLevel; public TMP_Text Text_Profession; public Button Button_Confirm01; public TMP_Text Text_Confirm; public Button Button_Cancel01; ///Auto Gen End/// //test data private List _testImgList = new() { "Assets/Art/UI/Texture/CameraChange/NewCameraChange/UI_Pic01.png", "Assets/Art/UI/Texture/CameraChange/NewCameraChange/UI_Pic02.png", "Assets/Art/UI/Texture/CameraChange/NewCameraChange/UI_Pic03.png", "Assets/Art/UI/Texture/CameraChange/NewCameraChange/UI_Pic04.png", }; private enum PageEnum { Scene, Poster } private enum SortType { Rarity, Level, Likely } private PageEnum _curPage = PageEnum.Poster;//当前切页 private GameObject _sceneObj; private GameObject _posterObj; //场景切换页面 private ScrollRect _sceneScrollRect; private GameObject _sceneScrollContent; //场景滑动列表相关 private List _itemPosYList; private List _sceneItemList; private int _curSceneIndex; private int _curCameraPosIdx; private float _scrollMidPosY; private RectTransform _itemFullRectTrans; private RectTransform _itemRectTrans; //立绘切换页面 private ScrollView _scrollPosterPool; private ScrollView _scrollSkin; private List _charIDList; private List _displayIDList; private int _curSelect; //当前选择的角色 private int _curSelectSkin; //当前选择的皮肤 private List _skinDataList; //当前选择角色的皮肤列表 private MainPanelSceneStoreData _saveData; // deal with input data public override void PreLoad(object data = null) { } // Use this for initialization public override void OnInit() { //bind UI GameObj UICameraAndPosterChangeBinder.GetComponents(this); _sceneObj = FindObj("ImageBG/SceneChange"); _posterObj = FindObj("ImageBG/PosterChange"); _sceneScrollRect = GetComponent("ImageBG/SceneChange/SceneScrollView"); _sceneScrollContent = CommonUtils.GetGameObject(_sceneScrollRect.gameObject,"Viewport/Content"); _sceneItemList = new List(); _itemPosYList = new List(); for (int i = 0; i < _sceneScrollContent.transform.childCount; i++) { var item = _sceneScrollContent.transform.GetChild(i); _sceneItemList.Add(item.gameObject); } _scrollMidPosY = -_sceneScrollRect.GetComponent().rect.height * 0.5f; _itemRectTrans = CommonUtils.GetComponent(_sceneItemList[0], "ButtonScene"); _itemFullRectTrans = CommonUtils.GetComponent(_sceneItemList[0], "ButtonSceneFull"); _scrollPosterPool = GetComponent("ImageBG/PosterChange/ChangeHeadPic/PosterScrollView"); _scrollSkin = GetComponent("ImageBG/PosterChange/ChangeSkin/SkinScrollView"); _charIDList = new List(); var charList = CharacterDataInfoManager.Instance.DataList; for (int i = 0; i < charList.Count; i++) { _charIDList.Add(charList[i].Uid); } _sceneScrollRect.onValueChanged.AddListener(_OnScrollViewValChange); BindButton(Button_Back, _OnClickClose); BindButton(Button_ChangePoster, _OnClickPosterTab); BindButton(Button_ChangeScene, _OnClickSceneTab); BindButton(Button_Confirm, _OnClickSceneConfirm); BindButton(Button_Confirm01, _OnClickPosterConfirm); } //invoke when open window protected override void OnShowWindow(object data = null) { _InitSceneScroll(); _InitPosterScroll(); _Refresh(); } //invoke when reload window protected override void OnReloadWindow(object data = null) { } //invoke when close window protected override void OnHideWindow() { } //invoke when destroy public override void OnRelease() { base.OnRelease(); _sceneItemList.Clear(); _itemPosYList.Clear(); } #region #Event Function protected override void OnUpdate() { base.OnUpdate(); } #endregion /// /// 刷新界面 /// #region RefreshPanel private void _Refresh() { _RefreshTab(); } private void _RefreshTab() { switch (_curPage) { case PageEnum.Scene: { Button_ChangePoster.gameObject.SetActive(false); Button_ChangeScene.gameObject.SetActive(true); _sceneObj.SetActive(true); _posterObj.SetActive(false); Image_CBG.gameObject.SetActive(false); break; } case PageEnum.Poster: { Button_ChangePoster.gameObject.SetActive(true); Button_ChangeScene.gameObject.SetActive(false); _sceneObj.SetActive(false); _posterObj.SetActive(true); Image_CBG.gameObject.SetActive(true); _RefreshPosterButton(); break; } default: break; } } private void _RefreshPanel() { } #region DropDown private void _DropDown() { } #endregion /// /// 更换场景 /// #region ScenePage private void _RefreshScenePage() { _RefreshSceneListView(); } private void _RefreshSceneButtons() { if (_saveData != null) { if (_curSceneIndex == _saveData.SceneIdx && _curCameraPosIdx == _saveData.CameraPosIdx) { Button_Confirm.gameObject.SetActive(false); Button_Cancel.gameObject.SetActive(true); } else { Button_Confirm.gameObject.SetActive(true); Button_Cancel.gameObject.SetActive(false); } return; } var storeData = StorageMgr.Instance.GetStorage("MainPanelSceneStoreData"); if (storeData != null) { if (_curSceneIndex == storeData.SceneIdx && _curCameraPosIdx == storeData.CameraPosIdx) { Button_Confirm.gameObject.SetActive(false); Button_Cancel.gameObject.SetActive(true); } else { Button_Confirm.gameObject.SetActive(true); Button_Cancel.gameObject.SetActive(false); } } } private void _RefreshSceneListView() { if(_sceneScrollContent) { _InitSceneScroll(); } _RefreshSceneScroll(); } private void _RefreshSceneScroll() { for (int i = 0; i < _sceneItemList.Count; i++) { var item = _sceneItemList[i]; _RefreshSingleItem(item, i); } _RefreshSceneButtons(); LayoutRebuilder.ForceRebuildLayoutImmediate(_sceneScrollContent.GetComponent()); } private void _RefreshSingleItem(GameObject go, int index) { var btnScene = CommonUtils.GetComponent