Beispiel #1
0
        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);
        }