//------------------------------------------------------------
// Author: 亦亦
// Mail: 379338943@qq.com
// Data: 2023年2月12日
//------------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using YIUIFramework;
using UnityEngine;
using UnityEngine.UI;
namespace ET.Client
{
///
/// 无限循环列表 (异步)
/// 文档: https://lib9kmxvq7k.feishu.cn/wiki/HPbwwkhsKi9aDik5VEXcqPhDnIh
///
[ChildOf]
public partial class YIUILoopScrollChild : Entity, IAwake, IAwake, IAwake, IDestroy, IYIUILoopScrollPrefabAsyncSource, IYIUILoopScrollDataSource
{
public EntityRef m_OwnerEntity;
public Entity OwnerEntity => m_OwnerEntity;
public YIUIBindVo m_BindVo;
public Type m_DefaultDataType;
public Type m_DataType;
public LoopScrollRect m_Owner;
public Type m_ItemType;
public Type m_LoopRendererSystemType;
public Type m_LoopOnClickSystemType;
public Type m_LoopOnClickCheckSystemType;
public ObjAsyncCache> m_ItemPool;
public Dictionary> m_ItemTransformDic = new();
public Dictionary m_ItemTransformIndexDic = new();
public YIUIInvokeEntity_LoadInstantiateByVo m_InvokeLoadInstantiate;
public HashSet m_BanLayerOptionForeverHashSet = new();
private IList m_Data;
public IList Data
{
get => m_Data;
set
{
m_Data = value;
if (m_Data is { Count: > 0 })
{
m_DataType = m_DefaultDataType ?? m_Data[0].GetType();
m_LoopRendererSystemType = typeof(IYIUILoopRenderer<,,>).MakeGenericType(OwnerEntity?.GetType(), m_ItemType, m_DataType);
m_LoopOnClickSystemType = typeof(IYIUILoopOnClick<,,>).MakeGenericType(OwnerEntity?.GetType(), m_ItemType, m_DataType);
m_LoopOnClickCheckSystemType = typeof(IYIUILoopOnClickCheck<,,>).MakeGenericType(OwnerEntity?.GetType(), m_ItemType, m_DataType);
}
else
{
m_DataType = null;
m_LoopRendererSystemType = null;
m_LoopOnClickSystemType = null;
m_LoopOnClickCheckSystemType = null;
}
}
}
#if UNITY_EDITOR
public bool m_FirstCheckLayoutElement;
#endif
}
}