using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using FVS;
using LitJson;



public class DemoData : FVSBaseData<SingleTableDataConfig>
{
    public override SingleTableDataConfig GetDataConfig()
    {
        DataField[] fields = new DataField[]
        {
            new DataField("x", "x"),
            new DataField("y", "y"),
        };

        return new SingleTableDataConfig(fields, "λ÷ֲ", true);
    }

    public override void SetDataConfig(string dataConfig) 
    { 
        Datum[] data = JsonMapper.ToObject<Datum[]>(dataConfig);
        GameObject prefab = (GameObject)Resources.Load("people");
        int childCount = transform.childCount;

        List<Transform> removedChildren = new List<Transform>();

        for (int i = 0; i < childCount; i++)
        {
            Transform child = transform.GetChild(i);
            if (i < data.Length)
            {
                UpdatePosition(child, data[i]);
            }
            else
            {
                removedChildren.Add(child.transform);
            }
        }

        foreach (Transform child in removedChildren)
        {
            DestroyImmediate(child.gameObject);
        }

        for (int i = childCount; i < data.Length; i++)
        {
            GameObject sphere = Instantiate(prefab);
            UpdatePosition(sphere.transform, data[i]);
            sphere.transform.parent = transform;
        }

    }

    private void UpdatePosition(Transform transform, Datum datum)
    {
        transform.localPosition = new Vector3(datum.x, 0f, datum.y);
    }

    public class Datum : DatumBase
    {
        public float x { set; get; }
        public float y { set; get; }
    }
}
