Exemplo n.º 1
0
        /// <inheritdoc />
        public void Initialize(IPlayerEntity player)
        {
            IEnumerable <QuestInfo> playerQuests = _database.Quests.Where(x => x.CharacterId == player.PlayerData.Id)
                                                   .AsNoTracking()
                                                   .AsEnumerable()
                                                   .Select(x =>
            {
                IQuestScript questScript = _gameResources.Quests.GetValueOrDefault(x.QuestId);

                if (questScript == null)
                {
                    return(null);
                }

                var quest = new QuestInfo(x.QuestId, x.CharacterId, questScript, x.Id)
                {
                    IsChecked    = x.IsChecked,
                    IsFinished   = x.Finished,
                    StartTime    = x.StartTime,
                    IsPatrolDone = x.IsPatrolDone
                };

                if (questScript.EndConditions.Monsters != null && questScript.EndConditions.Monsters.Any())
                {
                    quest.Monsters = new Dictionary <int, short>
                    {
                        { _gameResources.GetDefinedValue(questScript.EndConditions.Monsters.ElementAtOrDefault(0)?.Id), (short)x.MonsterKilled1 },
                        { _gameResources.GetDefinedValue(questScript.EndConditions.Monsters.ElementAtOrDefault(1)?.Id), (short)x.MonsterKilled2 }
                    };
                }

                return(quest);
            })
                                                   .Where(x => x != null);

            player.QuestDiary = new QuestDiaryComponent(playerQuests);
        }