private static BaseItemDefinitions DeserializeAll() { /* Base items in base_items.json: (from game version 3.4.0) * Archon Kite Shield, Mystery Leaguestone, Quicksilver Flask */ var itemJson = JObject.Parse(TestUtils.ReadDataFile("base_items.json")); var modJson = JObject.Parse(TestUtils.ReadDataFile("mods.json")); var modifiers = ModifierJsonDeserializer.Deserialize(modJson); return(BaseItemJsonDeserializer.Deserialize(itemJson, modifiers)); }
/// <param name="passiveNodeDefinitions">The passive skill tree definition</param> /// <param name="runOnThreadPool">If true, all tasks are run on the thread pool instead of on the calling /// thread. I/O operations will always run asynchronously regardless of this parameter.</param> public GameData( IEnumerable <PassiveNodeDefinition> passiveNodeDefinitions, bool runOnThreadPool = false) { var asyncLazyFlags = runOnThreadPool ? AsyncLazyFlags.None : AsyncLazyFlags.ExecuteOnCallingThread; _passiveTree = new AsyncLazy <PassiveTreeDefinition>( () => Task.FromResult(new PassiveTreeDefinition(passiveNodeDefinitions.ToList())), asyncLazyFlags); _modifiers = new AsyncLazy <ModifierDefinitions>( () => ModifierJsonDeserializer.DeserializeAsync(runOnThreadPool), asyncLazyFlags); _baseItems = new AsyncLazy <BaseItemDefinitions>( () => BaseItemJsonDeserializer.DeserializeAsync(runOnThreadPool, _modifiers.Task), asyncLazyFlags); _skills = new AsyncLazy <SkillDefinitions>( () => SkillJsonDeserializer.DeserializeAsync(runOnThreadPool), asyncLazyFlags); _statTranslators = new AsyncLazy <StatTranslators>( () => StatTranslation.StatTranslators.CreateAsync(runOnThreadPool), asyncLazyFlags); _characterBaseStats = new AsyncLazy <CharacterBaseStats>( GameModel.CharacterBaseStats.CreateAsync, asyncLazyFlags); _monsterBaseStats = new AsyncLazy <MonsterBaseStats>(GameModel.MonsterBaseStats.CreateAsync, asyncLazyFlags); }