// *********************************************************************** // Assembly : Game // Author : Kimch // Created : 2021-01-12 // Description : // Last Modified By : // Last Modified On : // *********************************************************************** // // // *********************************************************************** using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; namespace G.UI { partial class MapPanel { /// /// 章节组件 /// class ChapterWidget : KUIWidget { #region Field #pragma warning disable CS0649 // 从未对字段赋值,字段将一直保持其默认值 null [KUIFlag] KUIList __listLevel; //[KUIFlag("__listLevel")] //Image _imgMap; [KUIFlag] KUIList __listMaps; [KUIFlag] TextMeshProUGUI _tmpName; [KUIFlag] Image _imgCloud; #pragma warning restore CS0649 // 从未对字段赋值,字段将一直保持其默认值 null private int _curMapIndex; private int _maxMapIndex; private List _levelWidgets; #endregion #region Method public override void Refresh() { if (this.data is ItemChapter chapter) { if (_levelWidgets == null) { ((RectTransform)_tmpName.transform.parent).anchoredPosition = GlobalUtils.GetVector2(chapter.iconPos); _tmpName.text = chapter.name; //_imgMap.gameObject.SetActive(true); //var spriteAddr = $"{chapter.atlas}[{chapter.mapAsset}]"; //_imgMap.enabled = false; //AssetProxy.Instance.TryGetGlobalAssetAsync(spriteAddr).Completed += (handle) => //{ // _imgMap.enabled = true; // _imgMap.overrideSprite = handle.Result;//.GetSprite(chapter.mapAsset); //}; AssetProxy.Instance.TryGetGlobalAssetAsync(chapter.mapAsset).Completed += (handle) => { if (handle.Status == UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationStatus.Succeeded) { var mapGO = Instantiate(handle.Result, this.transform); mapGO.transform.SetAsFirstSibling(); //mapGO.GetComponent().enabled = false; } }; _imgCloud.gameObject.SetActive(true); var levelIds = chapter.levels; _levelWidgets = new List(levelIds.Length); if (levelIds != null && levelIds.Length > 0) for (int i = levelIds[levelIds.Length - 1]; i >= levelIds[0]; i--) { var levelId = i; var levelItem = ItemProxy.Instance.GetStaticItem(levelId); if (levelItem != null) { var levelWidget = __listLevel.GetItem(); levelWidget.SetData(levelItem); ((RectTransform)levelWidget.transform).anchoredPosition = GlobalUtils.GetVector2(levelItem.iconPos); _levelWidgets.Add(levelWidget); } } } else { for (int i = _levelWidgets.Count - 1; i >= 0; i--) { _levelWidgets[i].Refresh(); } } } } public void SetIndex(int index, int maxIndex) { _curMapIndex = index; _maxMapIndex = maxIndex; } public void SetScroll(float y) { float index = _curMapIndex; float maxIndex = _maxMapIndex; float minY = Mathf.Max(0, index - 1) / maxIndex; float maxY = Mathf.Min(maxIndex, index + 1) / maxIndex; if (y >= minY && y <= maxY) { float d = Mathf.Clamp01(Mathf.Abs(index / maxIndex - y)); float s = 1f + (d * 0.05f - 0.02f); //this.transform.localScale = Vector3.one * s; //float c = 1f - d * 0.5f; //_imgMap.color = new Color(c, c, c, 1f); float a = 1f - d; _imgCloud.color = new Color(1f, 1f, 1f, a); } else { //float s = (0.8f + 0 * 0.2f); //_imgMap.transform.localScale = Vector3.one * s; //float c = 0; //_imgMap.color = new Color(c, c, c, 1f); //float a = 0; //_imgCloud.color = new Color(1f, 1f, 1f, a); } } #endregion #region Unity /// /// /// private void Awake() { SetViewData(); __listLevel.AddTemplate(true); } #endregion } } }