/*
<copyright file="BGGCGetRelatedList.cs" company="BansheeGz">
    Copyright (c) 2018-2022 All Rights Reserved
</copyright>
*/

using System;
using System.Collections.Generic;
using GameCreator.Runtime.Common;
using GameCreator.Runtime.Variables;
using UnityEngine;


namespace BansheeGz.BGDatabase
{
    /// <summary>
    ///  get indexes of related entities 
    /// </summary>
    [Title("BGDatabase: get related list")]
    [Category("BansheeGz/get related list")]
    [Serializable]
    public class BGGCGetRelatedList : BGGCGetA
    {
        [SerializeField] private CollectorListVariable saveToVar = new CollectorListVariable();

        public override string Title => "BGDatabase: Get related list";

        public override bool IsSupported(BGField field) => field is BGFieldRelationMultiple || field is BGFieldNested;

        protected override void Set(BGGCCell cell, Args args)
        {
            var related = (List<BGEntity>)cell.Value;
            saveToVar.Clear();
            if (!(related?.Count > 0)) return;
            
            var values = new object[related.Count];
            for (var i = 0; i < related.Count; i++) values[i] = related[i].Index;
            saveToVar.Fill(values);
        }
    }
}