﻿using UnityEngine;

namespace JLGames.RocketDriver.Samples.ServiceDemo.Service.Material
{
    internal class GameMaterialUniqueFactory
    {
        private int m_MaxUId;

        public int MaxUId => m_MaxUId;

        public override string ToString()
        {
            return $"Unique[Max={m_MaxUId}]";
        }

        public GameMaterialUniqueFactory(int maxUId)
        {
            m_MaxUId = maxUId;
        }

        public int GetNextUId()
        {
            var nextUId = m_MaxUId + 1;
            m_MaxUId = nextUId;
            return nextUId;
        }

        public static GameMaterialUniqueFactory GetUniqueFactory(IGameUserMaterial[] iums)
        {
            if (null == iums || iums.Length == 0) return new GameMaterialUniqueFactory(0);
            var maxId = 0;
            foreach (var ium in iums)
            {
                maxId = Mathf.Max(ium.UId, maxId);
            }

            return new GameMaterialUniqueFactory(maxId);
        }
    }
}