using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
using NadekoBot.Modules.Pokemon.Common;
using NadekoBot.Core.Services;
using Newtonsoft.Json;
using NLog;

namespace NadekoBot.Modules.Pokemon.Services
{
    public class PokemonService : INService
    {
        public readonly List<PokemonType> PokemonTypes = new List<PokemonType>();
        public readonly ConcurrentDictionary<ulong, PokeStats> Stats = new ConcurrentDictionary<ulong, PokeStats>();

        public const string PokemonTypesFile = "data/pokemon_types.json";

        private Logger _log { get; }

        public PokemonService()
        {
            _log = LogManager.GetCurrentClassLogger();
            if (File.Exists(PokemonTypesFile))
            {
                PokemonTypes = JsonConvert.DeserializeObject<List<PokemonType>>(File.ReadAllText(PokemonTypesFile));
            }
            else
            {
                PokemonTypes = new List<PokemonType>();
                _log.Warn(PokemonTypesFile + " is missing. Pokemon types not loaded.");
            }
        }
    }
}