﻿using JLGames.RocketDriver.Games.RpgMaterial.User;
using JLGames.RocketDriver.Samples.RpgMaterialDemo.Cfg.CfgConst;
using JLGames.RocketDriver.Samples.RpgMaterialDemo.Cfg.CfgTitle;

namespace JLGames.RocketDriver.Samples.RpgMaterialDemo.Service.Material
{
    public sealed class MaterialResourceService : GameMaterialServiceBase<IUserResource, IMaterialResource, CfgMaterialResource>,
        IMaterialResourceService
    {
        public MaterialResourceService() : base(ConstMaterialType.Resource, false)
        {
        }

        public override IUserMaterial GenUserMaterial(int mid, int num = 0)
        {
            var rs = new UserResource();
            rs.SetType(MaterialType);
            rs.SetMId(mid);
            rs.SetNum(num);
            return rs;
        }

        public override void Clear()
        {
            RemoveNotifyListeners();
            m_UserMaterials = null;
            m_Materials = null;
            base.Clear();
        }

        public void Init()
        {
            InitService();
            var set = InitMaterialData<MaterialResource>(ConstCfgData.MaterialResource);
            m_Materials.UpdateSet(set);
            InvokeInited();
        }

        public void InitData()
        {
            AddNotifyListeners();
            InvokeDataInited();
        }
    }
}