public async Task RenderAsync(RenderObjectViewModel request) { SendToGroup(request); switch (request.ObjectType.ToLower()) { case "player": switch (request.Action.ToLower()) { case "kill": await Groups.RemoveAsync(Context.ConnectionId, request.Room); break; case "leaveroom": var room = rooms.FirstOrDefault(r => r.HostId == request.Uid); if (room != null) { SendToAll(room, GameReponseKey.RemoveRoom, true, false); rooms.Remove(room); } await Groups.RemoveAsync(Context.ConnectionId, request.Room); break; default: break; } break; default: break; } }
private void SendToGroup(RenderObjectViewModel message, bool isMySelf = true) { RepositoryResponse <RenderObjectViewModel> result = new RepositoryResponse <RenderObjectViewModel>() { IsSucceed = true, Data = message, ResponseKey = message.Action }; if (isMySelf) { Clients.Group(message.Room).SendAsync(receiveMethod, result); } else { Clients.OthersInGroup(message.Room).SendAsync(receiveMethod, result); } }
public void KillZoombie(RenderObjectViewModel request) { SendToGroup(request, GameAction.Kill, GameObject.Zoombie); }
public void Shoot(RenderObjectViewModel request) { SendToGroup(request, GameReponseKey.Shoot, request.Room); }