コード例 #1
0
ファイル: GameData.cs プロジェクト: zsmj007/PoESkillTree
        /// <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);
            _baseItems = new AsyncLazy <BaseItemDefinitions>(
                async() => await BaseItemJsonDeserializer.DeserializeAsync(runOnThreadPool), asyncLazyFlags);
            _skills = new AsyncLazy <SkillDefinitions>(
                async() => await SkillJsonDeserializer.DeserializeAsync(runOnThreadPool), asyncLazyFlags);
            _statTranslators = new AsyncLazy <StatTranslators>(
                async() => await StatTranslation.StatTranslators.CreateAsync(runOnThreadPool), asyncLazyFlags);
            _characterBaseStats = new AsyncLazy <CharacterBaseStats>(
                GameModel.CharacterBaseStats.CreateAsync, asyncLazyFlags);
            _monsterBaseStats = new AsyncLazy <MonsterBaseStats>(GameModel.MonsterBaseStats.CreateAsync, asyncLazyFlags);
        }