// ***********************************************************************
// 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
}
}
}