public void RequestDeleteCharacterInSlot(Client client, RequestDeleteCharacterInSlotPacket packet) { try { var charactersBySlot = client.AccountEntry.GetCharacterBySlot(packet.Slot); if (charactersBySlot == null) { return; } using (var unitOfWork = _gameUnitOfWorkFactory.CreateChar()) { unitOfWork.CharacterAppearances.DeleteForChar(charactersBySlot.Id); // TODO delete ClanMember entry unitOfWork.Characters.Delete(charactersBySlot.Id); unitOfWork.Complete(); } client.ReloadGameAccountEntry(); client.CallMethod(SysEntity.ClientMethodId, new CharacterDeleteSuccessPacket(client.AccountEntry.Characters.Any())); SendCharacterInfo(client, packet.Slot, null); } catch { client.CallMethod(SysEntity.ClientMethodId, new DeleteCharacterFailedPacket()); } }
private void RequestDeleteCharacterInSlot(RequestDeleteCharacterInSlotPacket packet) { _characterManager.RequestDeleteCharacterInSlot(Client, packet); }