157 lines
4.2 KiB
C#
157 lines
4.2 KiB
C#
![]() |
// ***********************************************************************
|
|||
|
// Assembly : Game
|
|||
|
// Author : Kimch
|
|||
|
// Created : 2021-01-12
|
|||
|
// Description :
|
|||
|
// Last Modified By :
|
|||
|
// Last Modified On :
|
|||
|
// ***********************************************************************
|
|||
|
// <copyright file= "MapPanel.ChapterWidget" company="Kunpo"></copyright>
|
|||
|
// <summary></summary>
|
|||
|
// ***********************************************************************
|
|||
|
|
|||
|
using System.Collections.Generic;
|
|||
|
using TMPro;
|
|||
|
using UnityEngine;
|
|||
|
using UnityEngine.UI;
|
|||
|
|
|||
|
namespace G.UI
|
|||
|
{
|
|||
|
partial class MapPanel
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 章节组件
|
|||
|
/// </summary>
|
|||
|
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<LevelWidget> _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<Sprite>(spriteAddr).Completed += (handle) =>
|
|||
|
//{
|
|||
|
// _imgMap.enabled = true;
|
|||
|
// _imgMap.overrideSprite = handle.Result;//.GetSprite(chapter.mapAsset);
|
|||
|
//};
|
|||
|
|
|||
|
AssetProxy.Instance.TryGetGlobalAssetAsync<GameObject>(chapter.mapAsset).Completed += (handle) =>
|
|||
|
{
|
|||
|
if (handle.Status == UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationStatus.Succeeded)
|
|||
|
{
|
|||
|
var mapGO = Instantiate(handle.Result, this.transform);
|
|||
|
mapGO.transform.SetAsFirstSibling();
|
|||
|
//mapGO.GetComponent<LayoutGroup>().enabled = false;
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
_imgCloud.gameObject.SetActive(true);
|
|||
|
|
|||
|
var levelIds = chapter.levels;
|
|||
|
_levelWidgets = new List<LevelWidget>(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<ItemLevel>(levelId);
|
|||
|
if (levelItem != null)
|
|||
|
{
|
|||
|
var levelWidget = __listLevel.GetItem<LevelWidget>();
|
|||
|
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
|
|||
|
|
|||
|
/// <summary>
|
|||
|
///
|
|||
|
/// </summary>
|
|||
|
private void Awake()
|
|||
|
{
|
|||
|
SetViewData();
|
|||
|
__listLevel.AddTemplate<LevelWidget>(true);
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
}
|
|||
|
}
|
|||
|
}
|