public ComplexController(IRepository complexRepository, ILogger <ComplexController> logger, IRoomServiceSender rss, IAddressRequest ar, IRoomRequest rr) { _complexRepository = complexRepository ?? throw new ArgumentNullException(nameof(complexRepository), "Complex repo cannot be null"); _log = logger; _roomServiceSender = rss; _addressRequest = ar; _roomRequest = rr; }
internal void HandleRoom <TPlayer>(TPlayer ws, RoomManager <TPlayer> rooms, IRoomRequest req) where TPlayer : Player, new() { if (req.RoomId != null && req.RoomType != null) { // room id & type isn't null, connect them to that room var room = rooms.FindOrCreateBy(new RoomRequest(req.RoomId, req.RoomType)); if (room != null) { room.Connect(ws); ws.Socket.Send(ProtoSerializer.Serialize(GetSuccess(true))); } else { ws.Socket.Send(ProtoSerializer.Serialize(GetSuccess(false, "A room of that room type couldn't be found."))); } } else { // it's null if (ws.ConnectedTo != null) { // if they're connected somewhere, disconnect them var room = ws.ConnectedTo; DisconnectPlayerFrom(rooms, ((Room <TPlayer>)room), ws); ws.Socket.Send(ProtoSerializer.Serialize(GetSuccess(true))); } else { // send an error } } }