public object GenerateData(SimcParsedFileType fileType, Dictionary <string, string> incomingRawData)
        {
            Stopwatch sw = new Stopwatch();

            sw.Start();
            object result = fileType switch
            {
                SimcParsedFileType.CombatRatingMultipliers => GenerateCombatRatingMultipliers(incomingRawData),
                SimcParsedFileType.StaminaMultipliers => GenerateStaminaMultipliers(incomingRawData),
                SimcParsedFileType.ItemDataNew => GenerateItemData(incomingRawData, 157759),
                SimcParsedFileType.ItemDataOld => GenerateItemData(incomingRawData, 0, 157760),
                SimcParsedFileType.ItemBonusData => GenerateItemBonusData(incomingRawData),
                SimcParsedFileType.RandomPropPoints => GenerateRandomPropData(incomingRawData),
                SimcParsedFileType.SpellData => GenerateSpellData(incomingRawData),
                SimcParsedFileType.GemData => GenerateGemData(incomingRawData),
                SimcParsedFileType.ItemEnchantData => GenerateItemEnchantData(incomingRawData),
                SimcParsedFileType.SpellScaleMultipliers => GenerateSpellScalingMultipliers(incomingRawData),
                SimcParsedFileType.CurvePoints => GenerateCurveData(incomingRawData),
                SimcParsedFileType.RppmData => GenerateRppmData(incomingRawData),
                SimcParsedFileType.CovenantData => GenerateConduitRankData(incomingRawData),
                SimcParsedFileType.ItemEffectData => GenerateItemEffectData(incomingRawData),
                SimcParsedFileType.GameDataVersion => GenerateGameDataVersion(incomingRawData),
                _ => throw new ArgumentOutOfRangeException($"FileType {fileType} is invalid."),
            };

            sw.Stop();
            _logger?.LogTrace($"Time taken to process {fileType}: {sw.ElapsedMilliseconds}ms");

            return(result);
        }
示例#2
0
        /// <summary>
        /// Get the parsed .json file contents deserialised into T, based on the provided file type.
        /// </summary>
        /// <typeparam name="T">Type to deserialise the json into</typeparam>
        /// <param name="fileType">Type of file to return data from</param>
        async Task <T> ICacheService.GetParsedFileContentsAsync <T>(SimcParsedFileType fileType)
        {
            // First check if we already have the data loaded:
            if (_cachedFileData.ContainsKey(fileType))
            {
                var cachedData = _cachedFileData[fileType];

                if (cachedData is T t)
                {
                    return(t);
                }

                try
                {
                    return((T)Convert.ChangeType(cachedData, typeof(T)));
                }
                catch (InvalidCastException)
                {
                    return(default);