using System;
using System.Collections;
using System.Linq;
using UnityEngine.Pool;
using UnityEngine.UIElements;
namespace RosettaUI.UIToolkit
{
///
/// Itemを追加するとき最後のアイテムをコピーするListViewController
///
public class ListViewControllerCustom : ListViewController
{
private readonly Func _createItemFunc;
public ListViewControllerCustom(Func createItemFunc = null)
{
_createItemFunc = createItemFunc;
}
public override void AddItems(int itemCount)
{
if (itemCount <= 0) return;
var previousCount = GetItemsCount();
var listType = itemsSource.GetType();
var itemType = ListUtility.GetItemType(listType);
for (var i = 0; i < itemCount; ++i)
{
if (_createItemFunc != null)
{
var newItem = _createItemFunc(itemsSource, itemType, previousCount + i);
itemsSource = ListUtility.AddItemAtLast(itemsSource,listType, itemType, newItem);
}
else
{
itemsSource = ListUtility.AddItemAtLast(itemsSource, listType, itemType);
}
}
using var _ = ListPool.Get(out var intList);
intList.AddRange(Enumerable.Range(previousCount, itemCount));
RaiseItemsAdded(intList);
RaiseOnSizeChanged();
}
}
}