public async Task SetDefaultSkill(SkillDetailAction questAction) { var result = await DoCommand(async() => { var playerId = _account.PlayerId; var command = new SetDefaultSkillCommand(playerId, questAction.ObjectSkillId); await _bus.SendCommand(command); }); }
public async Task <Unit> Handle(SetDefaultSkillCommand command, CancellationToken cancellationToken) { var playerId = command.PlayerId; var mySkillId = command.MySkillId; var player = await _playerDomainService.Get(playerId); if (player == null) { return(Unit.Value); } var playerSkills = await _playerSkillDomainService.GetAll(player.Id); if (playerSkills.Count(x => x.Id == mySkillId && !x.IsDefault) == 0) { return(Unit.Value); } int defaultSkillId = 0; foreach (var playerSkill in playerSkills) { if (playerSkill.IsDefault) { defaultSkillId = playerSkill.Id; playerSkill.IsDefault = false; await _playerSkillDomainService.Update(playerSkill); } if (playerSkill.Id == mySkillId) { playerSkill.IsDefault = true; await _playerSkillDomainService.Update(playerSkill); } } await _mudProvider.SetDefaultSkill(playerId, mySkillId); return(Unit.Value); }