using System.Collections; using System.Collections.Generic; using System.Threading; using cfg.LevelCfg; using Cysharp.Threading.Tasks; using Gameplay.Level; using Gameplay.Net; using LC.Google.Protobuf.WellKnownTypes; using PhxhSDK; using TMPro; using UnityEngine; using UnityEngine.Serialization; using UnityEngine.UI; using UnityEngine.UIElements; using Utils; using Button = UnityEngine.UI.Button; using Enum = Google.Protobuf.WellKnownTypes.Enum; using Image = UnityEngine.UI.Image; using ScrollView = AillieoUtils.ScrollView; public class UI_LevelSelectController : UIWindow { //UI GameObj ///Auto Gen Start/// public Button Button_Back; public TMP_Text Text_Back; public Button Button_Home; public Button Button_MainLevel; public TMP_Text Text_MainLevel; public TMP_Text Text_MainLevelNum; public TMP_Text Text_MainLevelName; public Image Image_MainlevelLogo; public Image Image_BlackBar; public TMP_Text Text_MainLevelProcess; public Button Button_BranchLevel; public Button Button_DungeonlEVEL; public Image Image_ChapterBG; public Image Image_LevelBG; public Image Image_LevelTitle; public TMP_Text Text_ChapterNum; public TMP_Text Text_ChapterName; public Image Image_ProcessBG; public Image Image_LevelProcess; public Image Image_ProcessBar; public TMP_Text Text_StarNum; public Image Image_SelectBG; public Button Button_Plot; public TMP_Text Text_Read; public Button Button_Easy; public TMP_Text Text_Simple; public Button Button_Hard; public TMP_Text Text_Hard; public Image Image_WhiteRect; [FormerlySerializedAs("Image_Read")] public Image Image_Plot; [FormerlySerializedAs("Image_Simple")] public Image Image_Easy; public Image Image_RedRect; public Image Image_Hard; ///Auto Gen End/// private enum PageType { Mode = 1, LevelGroup = 2, Level = 3, } private PageType _currPage = PageType.Mode; private LevelGroupType _currGroupType; private LevelGroupInfo _currLevelGroupInfo; private ChapterInfo _currEasyChapterInfo; private ChapterInfo _currHardChapterInfo; private ChapterInfo _currPlotChapterInfo; private ChapterInfo _currChapterInfo; private LevelInfo _currSelectLevelInfo; private List _showLevelGroupInfoList = new(); private List _showLevelInfoList = new(); private RectTransform UI_ModeChoose; private RectTransform UI_LevelGroupChoose; private RectTransform UI_LevelChoose; private RectTransform _modeParent; private ScrollView _levelGroupScrollView; private ScrollView _levelScrollView; private RectTransform _starRewardsParent; private const string STAR_REWARD_PREFAB_PATH = "Assets/Art/UI/Prefab/LevelSelect/Button_StarReward.prefab"; private List _starRewardPool = new(); private List _showStarReward = new(); private float _totalMoveTime = 1f; private CancellationTokenSource _cts; public override void OnAwake() { //bind UI GameObj UI_LevelSelectBinder.GetComponents(this); BindProperty(); BindEvent(); RegisterSignal(); } private void BindProperty() { UI_ModeChoose = transform.Find("UI_ModeChoose") as RectTransform; UI_LevelGroupChoose = transform.Find("UI_LevelGroupChoose") as RectTransform; UI_LevelChoose = transform.Find("UI_LevelChoose") as RectTransform; _modeParent = UI_ModeChoose.Find("Scroll View/Viewport/Content") as RectTransform; _levelGroupScrollView = UI_LevelGroupChoose.Find("Image_ChapterBG/Scroll View").GetComponent(); _levelScrollView = UI_LevelChoose.Find("Image_LevelBG/Scroll View").GetComponent(); _starRewardsParent = Image_LevelProcess.transform.Find("StarRewardProgress/starRewards") as RectTransform; _levelGroupScrollView.SetUpdateFunc(OnRenderLevelGroup); _levelGroupScrollView.SetItemCountFunc(GetLevelGroupCount); _levelGroupScrollView.SetButton(SetOnLevelGroupClick); _levelScrollView.SetUpdateFunc(OnRenderLevelInfo); _levelScrollView.SetItemCountFunc(GetLevelCount); _levelScrollView.SetButton(SetOnLevelClick); } private void BindEvent() { BindButton("UI_Topbtn/Button_Back", OnClickBack); BindButton("UI_Topbtn/Button_Home", OnClickHome); BindButton("UI_LevelChoose/Image_ProcessBG/Image_SelectBG/Button_Easy", OnClickEasy); BindButton("UI_LevelChoose/Image_ProcessBG/Image_SelectBG/Button_Hard", OnClickHard); BindButton("UI_LevelChoose/Image_ProcessBG/Image_SelectBG/Button_Plot", OnClickPlot); var modeButtonCount = _modeParent.childCount; for (int i = 0; i < modeButtonCount; i++) { var modeButton = _modeParent.GetChild(i).GetComponent