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); }
/// <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);