public async Task <Unit> Handle(LoadWareCommand command, CancellationToken cancellationToken) { var wareId = command.WareId; var playerId = command.PlayerId; var player = await _playerDomainService.Get(playerId); if (player == null) { await _bus.RaiseEvent(new DomainNotification($"角色不存在!")); return(Unit.Value); } var ware = await _wareDomainService.Get(wareId); if (ware == null) { await _bus.RaiseEvent(new DomainNotification($"武器不存在!")); return(Unit.Value); } return(Unit.Value); }
public async Task Load(WareAction wareAction) { var result = await DoCommand(async() => { var playerId = _account.PlayerId; var command = new LoadWareCommand(playerId, wareAction.MyWareId); await _bus.SendCommand(command); }); }
public async Task <Unit> Handle(LoadWareCommand command, CancellationToken cancellationToken) { var myWareId = command.MyWareId; var playerId = command.PlayerId; var player = await _playerDomainService.Get(playerId); if (player == null) { await _bus.RaiseEvent(new DomainNotification($"角色不存在!")); return(Unit.Value); } var playerWare = await _playerWareDomainService.Get(myWareId); if (playerWare == null || playerWare.PlayerId != playerId) { await _bus.RaiseEvent(new DomainNotification($"武器不存在!")); return(Unit.Value); } if (playerWare.Status == WareStatusEnum.装备) { await _bus.RaiseEvent(new DomainNotification($"武器已装备!")); return(Unit.Value); } var ware = await _wareDomainService.Get(playerWare.WareId); if (ware == null) { await _bus.RaiseEvent(new DomainNotification($"武器状态异常!")); return(Unit.Value); } var playerWares = await _playerWareDomainService.GetAll(playerId); var ids = playerWares.Where(x => x.Status == WareStatusEnum.装备).Select(x => x.WareId).ToList(); var wareQuery = await _wareDomainService.GetAll(); var wares = wareQuery.Where(x => ids.Contains(x.Id)); WareTypeEnum[] wareTypes = null; WareEntity loadWare = null; switch (ware.Type) { case WareTypeEnum.刀: case WareTypeEnum.剑: case WareTypeEnum.枪: wareTypes = new[] { WareTypeEnum.刀, WareTypeEnum.剑, WareTypeEnum.枪 }; break; case WareTypeEnum.衣服: wareTypes = new[] { WareTypeEnum.衣服 }; break; case WareTypeEnum.鞋: wareTypes = new[] { WareTypeEnum.鞋 }; break; case WareTypeEnum.帽: wareTypes = new[] { WareTypeEnum.帽 }; break; } if (wareTypes != null) { loadWare = wares.FirstOrDefault(x => wareTypes.Contains(x.Type)); } if (loadWare != null) { await _bus.RaiseEvent(new DomainNotification($"你已经装备了 [{loadWare.Name}]!")); return(Unit.Value); } playerWare.Status = WareStatusEnum.装备; await _playerWareDomainService.Update(playerWare); var wareEffectAttr = await Computed(playerId); player.Atk = wareEffectAttr.Atk; player.Def = wareEffectAttr.Def; await _playerDomainService.Update(player); /* * var wareModel = _mapper.Map<WareModel>(ware); * wareModel.PlayerWareId = playerWare.Id; * wareModel.Number = playerWare.Number; * wareModel.Status = playerWare.Status; * await _mudProvider.LoadWare(playerId, wareModel); */ var wareModel = await Computed(ware, playerWare); await _mudProvider.ShowWare(playerId, wareModel); await _mudProvider.ShowMessage(playerId, $"你装备了 [{wareModel.Name}]!"); return(Unit.Value); }