Ejemplo n.º 1
0
        public async Task ShowQuestDetail(QuestDetailAction questAction)
        {
            var result = await DoCommand(async() => {
                var playerId = _account.PlayerId;

                var command = new ShowQuestDetailCommand(playerId, questAction.QuestId);
                await _bus.SendCommand(command);
            });
        }
Ejemplo n.º 2
0
        public async Task <Unit> Handle(ShowQuestDetailCommand command, CancellationToken cancellationToken)
        {
            var playerId = command.PlayerId;
            var questId  = command.QuestId;

            var player = await _playerDomainService.Get(playerId);

            if (player == null)
            {
                await _bus.RaiseEvent(new DomainNotification($"角色不存在!"));

                return(Unit.Value);
            }

            var quest = await _questDomainService.Get(questId);

            if (quest == null)
            {
                await _bus.RaiseEvent(new DomainNotification($"任务不存在!"));

                return(Unit.Value);
            }

            var playerQuest = await _playerQuestDomainService.Get(x => x.PlayerId == playerId && x.QuestId == quest.Id);

            if (playerQuest == null)
            {
                await _mudProvider.ShowMessage(playerId, "请先领取任务!");

                return(Unit.Value);
            }

            var questDetail = _mapper.Map <QuestDetailModel>(quest);

            //questTargets = JsonConvert.DeserializeObject<List<QuestReward>>(quest.Reward);


            await _mudProvider.ShowQuest(playerId, questDetail);

            return(Unit.Value);
        }