using System.Collections.Generic; using System.Threading.Tasks; using Master.Managers; using WingsAPI.Communication; using WingsAPI.Communication.Player; namespace WingsEmu.Master { public class ClusterCharacterService : IClusterCharacterService { private readonly ClusterCharacterManager _clusterCharacterManager; public ClusterCharacterService(ClusterCharacterManager clusterCharacterManager) => _clusterCharacterManager = clusterCharacterManager; public ValueTask GetCharacterById(ClusterCharacterByIdRequest request) { ClusterCharacterInfo info = _clusterCharacterManager.GetCharacterById(request.CharacterId); return new ValueTask(new ClusterCharacterResponse { ResponseType = info == null ? RpcResponseType.GENERIC_SERVER_ERROR : RpcResponseType.SUCCESS, ClusterCharacterInfo = info }); } public ValueTask GetCharacterByName(ClusterCharacterByNameRequest request) { ClusterCharacterInfo info = _clusterCharacterManager.GetCharacterByName(request.CharacterName); return new ValueTask(new ClusterCharacterResponse { ResponseType = info == null ? RpcResponseType.GENERIC_SERVER_ERROR : RpcResponseType.SUCCESS, ClusterCharacterInfo = info }); } public ValueTask GetCharactersByChannelId(ClusterCharacterByChannelIdRequest request) { IReadOnlyList info = _clusterCharacterManager.GetCharactersByChannelId(request.ChannelId); return new ValueTask(new ClusterCharacterGetMultipleResponse { ResponseType = info == null ? RpcResponseType.GENERIC_SERVER_ERROR : RpcResponseType.SUCCESS, ClusterCharacterInfo = info }); } public ValueTask GetCharactersSortedByChannel(EmptyRpcRequest request) { IReadOnlyCollection>> info = _clusterCharacterManager.GetCharactersSortedByChannel(); return new ValueTask(new ClusterCharacterGetSortedResponse { ResponseType = info == null ? RpcResponseType.GENERIC_SERVER_ERROR : RpcResponseType.SUCCESS, CharactersByChannel = info }); } public ValueTask GetAllCharacters(EmptyRpcRequest request) { IReadOnlyList info = _clusterCharacterManager.GetCharacters(); return new ValueTask(new ClusterCharacterGetMultipleResponse { ResponseType = RpcResponseType.SUCCESS, ClusterCharacterInfo = info }); } } }