public ActionResult Play( [FromRoute, Required] string sessionId, [FromQuery, Required] PlayCommand playCommand, [FromQuery, Required, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] itemIds, [FromQuery] long?startPositionTicks, [FromQuery] string?mediaSourceId, [FromQuery] int?audioStreamIndex, [FromQuery] int?subtitleStreamIndex, [FromQuery] int?startIndex) { var playRequest = new PlayRequest { ItemIds = itemIds, StartPositionTicks = startPositionTicks, PlayCommand = playCommand, MediaSourceId = mediaSourceId, AudioStreamIndex = audioStreamIndex, SubtitleStreamIndex = subtitleStreamIndex, StartIndex = startIndex }; _sessionManager.SendPlayCommand( RequestHelpers.GetSession(_sessionManager, _authContext, Request).Id, sessionId, playRequest, CancellationToken.None); return(NoContent()); }
public void Game_Missing_PlayerType_And_ActionChoice_Throws_BadRequestError() { var playRequest = new PlayRequest(); var response = _gameController.Play(playRequest); Assert.IsType <BadRequestObjectResult>(response); }
/// <summary> /// Executes the command. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The arguments.</param> /// <returns></returns> public override CommandResult Execute(IClient sender, string[] args) { if (args.Length != 1) { return(new CommandResult(false, Command.Play, "Usage: play <move>", true)); } Direction dir; if (!DirectionParser.TryParse(args[0], out dir)) { return(new CommandResult(false, Command.Play, "Bad <move> field.", true)); } PlayRequest request = new PlayRequest(sender, dir); try { _model.Play(request); return(new CommandResult(true, Command.Play, dir.ToString(), true)); } catch (Exception e) { return(new CommandResult(false, Command.Play, e.Message, true)); } }
private void OnPlaybackPlay() { // Send sound effects SoundFxRequest soundFxRequest = new SoundFxRequest(); soundFxRequest.Effects = _effectsForm.GetEnabledEffects(); _playerCommunicatorControl.SendRequest(soundFxRequest); // Send play request PlayRequest request = (PlayRequest)RequestFactory.CreateRequest(MessageType.Play); if (_playlistForm.GetCurrent().Count.Equals(0)) { MessageBox.Show("Playlist is empty. Nothing to play", "Information"); return; } request.Tracks = _playlistForm.GetCurrent(); _playerCommunicatorControl.SendRequest(request); // TODO set state based on response // set controls state _mediaInfo.Open(_playlistForm.GetCurrent()[0]); _playbackControl.PlaybackStarted(_mediaInfo.GetDuration()); _mediaInfo.Close(); }
/// <inheritdoc /> public void SessionJoin(SessionInfo session, JoinGroupRequest request, CancellationToken cancellationToken) { if (session.NowPlayingItem?.Id == _group.PlayingItem.Id && request.PlayingItemId == _group.PlayingItem.Id) { _group.AddSession(session); _syncPlayManager.AddSessionToGroup(session, this); var updateSession = NewSyncPlayGroupUpdate(GroupUpdateType.GroupJoined, DateToUTCString(DateTime.UtcNow)); SendGroupUpdate(session, BroadcastType.CurrentSession, updateSession, cancellationToken); var updateOthers = NewSyncPlayGroupUpdate(GroupUpdateType.UserJoined, session.UserName); SendGroupUpdate(session, BroadcastType.AllExceptCurrentSession, updateOthers, cancellationToken); // Client join and play, syncing will happen client side if (!_group.IsPaused) { var playCommand = NewSyncPlayCommand(SendCommandType.Play); SendCommand(session, BroadcastType.CurrentSession, playCommand, cancellationToken); } else { var pauseCommand = NewSyncPlayCommand(SendCommandType.Pause); SendCommand(session, BroadcastType.CurrentSession, pauseCommand, cancellationToken); } } else { var playRequest = new PlayRequest(); playRequest.ItemIds = new Guid[] { _group.PlayingItem.Id }; playRequest.StartPositionTicks = _group.PositionTicks; var update = NewSyncPlayGroupUpdate(GroupUpdateType.PrepareSession, playRequest); SendGroupUpdate(session, BroadcastType.CurrentSession, update, cancellationToken); } }
/// <summary> /// Sends the play command. /// </summary> /// <param name="sessionId">The session id.</param> /// <param name="command">The command.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> public Task SendPlayCommand(Guid sessionId, PlayRequest command, CancellationToken cancellationToken) { var session = GetSessionForRemoteControl(sessionId); var items = command.ItemIds.Select(i => _libraryManager.GetItemById(new Guid(i))) .Where(i => i.LocationType != LocationType.Virtual) .ToList(); if (session.UserId.HasValue) { var user = _userManager.GetUserById(session.UserId.Value); if (items.Any(i => i.GetPlayAccess(user) != PlayAccess.Full)) { throw new ArgumentException(string.Format("{0} is not allowed to play media.", user.Name)); } } if (command.PlayCommand != PlayCommand.PlayNow) { if (items.Any(i => !session.QueueableMediaTypes.Contains(i.MediaType, StringComparer.OrdinalIgnoreCase))) { throw new ArgumentException(string.Format("{0} is unable to queue the requested media type.", session.DeviceName ?? session.Id.ToString())); } } else { if (items.Any(i => !session.PlayableMediaTypes.Contains(i.MediaType, StringComparer.OrdinalIgnoreCase))) { throw new ArgumentException(string.Format("{0} is unable to play the requested media type.", session.DeviceName ?? session.Id.ToString())); } } return(session.SessionController.SendPlayCommand(command, cancellationToken)); }
private Task SendPlayCommand(PlayRequest command, string messageId, CancellationToken cancellationToken) { var dict = new Dictionary<string, string>(); dict["ItemIds"] = string.Join(",", command.ItemIds.Select(i => i.ToString("N", CultureInfo.InvariantCulture)).ToArray()); if (command.StartPositionTicks.HasValue) { dict["StartPositionTicks"] = command.StartPositionTicks.Value.ToString(CultureInfo.InvariantCulture); } if (command.AudioStreamIndex.HasValue) { dict["AudioStreamIndex"] = command.AudioStreamIndex.Value.ToString(CultureInfo.InvariantCulture); } if (command.SubtitleStreamIndex.HasValue) { dict["SubtitleStreamIndex"] = command.SubtitleStreamIndex.Value.ToString(CultureInfo.InvariantCulture); } if (command.StartIndex.HasValue) { dict["StartIndex"] = command.StartIndex.Value.ToString(CultureInfo.InvariantCulture); } if (!string.IsNullOrEmpty(command.MediaSourceId)) { dict["MediaSourceId"] = command.MediaSourceId; } return SendMessage(command.PlayCommand.ToString(), messageId, dict, cancellationToken); }
private void OnPlaybackPlay() { PlayRequest request = (PlayRequest)RequestFactory.CreateRequest(MessageType.Play); if (_playlistForm.GetCurrent().Count.Equals(0)) { MessageBox.Show("Playlist is empty. Nothing to play", "Information"); return; } request.Tracks = _playlistForm.GetCurrent(); AResponse response = _playerCommunicatorControl.SendRequest(request); try { // if success if (response.ResponseType == ServerResponseType.Success) { // set controls state _mediaInfo.Open(_playlistForm.GetCurrent()[0]); _playbackControl.PlaybackStarted(_mediaInfo.GetDuration()); _mediaInfo.Close(); _addonsForm.PlaybackStarted(); // Set volume OnPlaybackVolume(_playbackControl.Volume); } } catch (System.Exception) { } }
private void SendAudioData(IAudioClient audioClient, PlayRequest request) { try { var file = request.File; var cancellationToken = request.TokenSource.Token; using (var reader = File.OpenRead(file)) { byte[] buffer = new byte[BLOCK_SIZE]; int byteCount; while ((byteCount = reader.Read(buffer, 0, BLOCK_SIZE)) > 0) { if (cancellationToken.IsCancellationRequested) { audioClient.Clear(); return; } audioClient.Send(buffer, 0, byteCount); } } audioClient.Wait(); } catch (Exception ex) { Logger.Error(ex.Message, ex); } }
public Task SendPlayCommand(PlayRequest command, CancellationToken cancellationToken) { var dict = new Dictionary <string, string>(); dict["ItemIds"] = string.Join(",", command.ItemIds); if (command.StartPositionTicks.HasValue) { dict["StartPositionTicks"] = command.StartPositionTicks.Value.ToString(CultureInfo.InvariantCulture); } if (command.AudioStreamIndex.HasValue) { dict["AudioStreamIndex"] = command.AudioStreamIndex.Value.ToString(CultureInfo.InvariantCulture); } if (command.SubtitleStreamIndex.HasValue) { dict["SubtitleStreamIndex"] = command.SubtitleStreamIndex.Value.ToString(CultureInfo.InvariantCulture); } if (command.StartIndex.HasValue) { dict["StartIndex"] = command.StartIndex.Value.ToString(CultureInfo.InvariantCulture); } if (!string.IsNullOrWhiteSpace(command.MediaSourceId)) { dict["MediaSourceId"] = command.MediaSourceId; } return(SendMessage(command.PlayCommand.ToString(), dict, cancellationToken)); }
public IActionResult Play([FromBody] PlayRequest playRequestModel) { try { if (playRequestModel.Player1Type == null && playRequestModel.Player1ChosenAction == null) { return(BadRequest("No player or action has been chosen!")); } var gameModel = _gameModeBuilder.CreateFrom(playRequestModel); var response = _gameProcessor.Play(gameModel); switch (response.StatusCode) { case HttpStatusCode.OK: return(Ok(response)); case HttpStatusCode.NotFound: return(NotFound()); case HttpStatusCode.BadRequest: return(BadRequest(response.Message)); default: return(Ok(response)); } } catch (Exception ex) { _logger.LogError($"Error playing game: {ex.ToString()}"); return(StatusCode(500, "Internal server error")); } }
public async Task <PlayResponse> ChamarSpotifyApi(PlayRequest playRequest) { // Gera token de acesso string token = await GerarTokenAcesso(); // Cria objeto de conexao com spotify-api RestClient api = new RestClient(); api.AddDefaultHeader("Authorization", "Bearer " + token); // Cria body-request para enviar para spotify-api RestRequest request = new RestRequest(URL_SPOTIFY_PLAY, Method.PUT); request.AddJsonBody(new SpotifyPlayRequest(playRequest.MusicaURI)); // Chama spotify-api verbo PUT IRestResponse spotifyResponse = await api.ExecuteAsync(request); // Se api expirou, reseta token if (spotifyResponse.StatusCode == HttpStatusCode.Unauthorized) { TOKEN = string.Empty; } // Cria objeto reponse PlayResponse response = new PlayResponse((int)spotifyResponse.StatusCode, spotifyResponse.Content); return(response); }
public PlayResponse Add(PlayRequest request) { var playResponse = new PlayResponse(); playResponse.Sum = request.A + request.B; return(playResponse); }
public Task SendPlayCommand(PlayRequest command, CancellationToken cancellationToken) { return(SendMessage(new WebSocketMessage <PlayRequest> { MessageType = "Play", Data = command }, cancellationToken)); }
public PlayResponse Execute(PlayRequest PlayRequest) { _currentPlayer = ((_currentPlayer != null) && _currentPlayer.Equals(_realPlayer1)) ? _realPlayer2 : _realPlayer1; PlayResponse response = _currentPlayer.Play(PlayRequest); return(response); }
public void OnDataEvent(int socketID, int connectionId, byte[] buffer, NetworkError error) { DataEvent?.Invoke(); var JsonText = Encoding.Unicode.GetString(buffer); NetworkMessage message = JsonConvert.DeserializeObject <NetworkMessage>(JsonText); switch (message.MessageType) { case DataEvents.ConnectionInfoRequest: // Get connection info and save in connections pool //OnConnectionInfoEvent(hostId, connectionId, message, buffer, error); break; case DataEvents.PlayRequest: // if connection response is ok, continue. Else, disconnect from node. PlayRequest?.Invoke(); break; case DataEvents.PecasDoJogo: // if connection response is ok, continue. Else, disconnect from node. try { DominoPecas dominoPecas = JsonConvert.DeserializeObject <DominoPecas>(message.Message.ToString()); GlobalConfigInfo.blockchain.CreateTransaction(GlobalConfigInfo.CurrentAdversary.connectedNode.nickName, GlobalConfigInfo.ThisNode.nickName, dominoPecas); PecasDoJogo?.Invoke(dominoPecas); } catch (Exception e) { string exc = e.ToString(); } break; case DataEvents.PlayerMove: // call event to deal with this event and every gameplay script who sould know about network info should do your action try { Peca peca = JsonConvert.DeserializeObject <Peca>(message.Message.ToString()); GlobalConfigInfo.blockchain.CreateTransaction(GlobalConfigInfo.CurrentAdversary.connectedNode.nickName, GlobalConfigInfo.ThisNode.nickName, peca); PecaEvent?.Invoke(peca); } catch (Exception e) { string exc = e.ToString(); } //PlayerMove?.Invoke(); break; case DataEvents.EndGame: // call event to deal with this event and every gameplay script who sould know about network info should do your action EndGame?.Invoke(); break; } print("|Data event: " + "/n|HostId: " + socketID + "/n|ConnectionId : " + connectionId + "/n|Error: " + error.ToString()); }
private void Play(string debuggerHost, int debuggerPort) { DispatchToMainThread(() => { CurrentPlayRequest = new PlayRequest(debuggerHost, debuggerPort); Internal.EditorRunPlay(); CurrentPlayRequest = null; }); }
private void Play() { DispatchToMainThread(() => { CurrentPlayRequest = new PlayRequest(); Internal.EditorRunPlay(); CurrentPlayRequest = null; }); }
private PlayRequest BuildPlayRequest(int[] movePositions) { PlayRequest PlayRequest = new PlayRequest(); PlayRequest.TicTacToeBoard = TicTacToeBoard; PlayRequest.PositionX = movePositions[1]; PlayRequest.PositionY = movePositions[0]; return(PlayRequest); }
public Task SendPlayCommand(PlayRequest command, CancellationToken cancellationToken) { _logger.LogDebug("{0} - Received PlayRequest: {1}", this._session.DeviceName, command.PlayCommand); var user = command.ControllingUserId.Equals(Guid.Empty) ? null : _userManager.GetUserById(command.ControllingUserId); var items = new List <BaseItem>(); foreach (var id in command.ItemIds) { AddItemFromId(id, items); } var startIndex = command.StartIndex ?? 0; if (startIndex > 0) { items = items.Skip(startIndex).ToList(); } var playlist = new List <PlaylistItem>(); var isFirst = true; foreach (var item in items) { if (isFirst && command.StartPositionTicks.HasValue) { playlist.Add(CreatePlaylistItem(item, user, command.StartPositionTicks.Value, command.MediaSourceId, command.AudioStreamIndex, command.SubtitleStreamIndex)); isFirst = false; } else { playlist.Add(CreatePlaylistItem(item, user, 0, null, null, null)); } } _logger.LogDebug("{0} - Playlist created", _session.DeviceName); if (command.PlayCommand == PlayCommand.PlayLast) { _playlist.AddRange(playlist); } if (command.PlayCommand == PlayCommand.PlayNext) { _playlist.AddRange(playlist); } if (!command.ControllingUserId.Equals(Guid.Empty)) { _sessionManager.LogSessionActivity(_session.Client, _session.ApplicationVersion, _session.DeviceId, _session.DeviceName, _session.RemoteEndPoint, user); } return(PlayItems(playlist, cancellationToken)); }
public Task SendPlayCommand(PlayRequest command, CancellationToken cancellationToken) { var socket = GetActiveSocket(); return(socket.SendAsync(new WebSocketMessage <PlayRequest> { MessageType = "Play", Data = command }, cancellationToken)); }
public Task SendPlayCommand(PlayRequest command, CancellationToken cancellationToken) { _logger.LogDebug("{0} - Received PlayRequest: {1}", _session.DeviceName, command.PlayCommand); var user = command.ControllingUserId.Equals(Guid.Empty) ? null : _userManager.GetUserById(command.ControllingUserId); var items = new List <BaseItem>(); foreach (var id in command.ItemIds) { AddItemFromId(id, items); } var startIndex = command.StartIndex ?? 0; int len = items.Count - startIndex; if (startIndex > 0) { items = items.GetRange(startIndex, len); } var playlist = new PlaylistItem[len]; playlist[0] = CreatePlaylistItem(items[0], user, command.StartPositionTicks.Value, command.MediaSourceId, command.AudioStreamIndex, command.SubtitleStreamIndex); for (int i = 1; i < len; i++) { playlist[i] = CreatePlaylistItem(items[i], user, 0, null, null, null); } _logger.LogDebug("{0} - Playlist created", _session.DeviceName); if (command.PlayCommand == PlayCommand.PlayLast) { _playlist.AddRange(playlist); } if (command.PlayCommand == PlayCommand.PlayNext) { _playlist.AddRange(playlist); } if (!command.ControllingUserId.Equals(Guid.Empty)) { _sessionManager.LogSessionActivity( _session.Client, _session.ApplicationVersion, _session.DeviceId, _session.DeviceName, _session.RemoteEndPoint, user); } return(PlayItems(playlist, cancellationToken)); }
/// <summary> /// Plays the one move int the multiplyer game. /// </summary> /// <param name="request">The request.</param> /// <exception cref="System.InvalidOperationException">You did not join any game.</exception> public void Play(PlayRequest request) { MazeGame game = gameManager.GetGame(request.Client); if (game == null) { throw new InvalidOperationException("You did not join any game."); } game.PlayMove(request.Client, request.Move); }
public void Game_User_Selects_Valid_Player_Type_Returns_Ok() { var playRequest = new PlayRequest { Player1Type = Application.Constants.PlayerType.Computer }; var response = _gameController.Play(playRequest); var result = (((OkObjectResult)response).Value as Response <GameResult>); Assert.IsType <OkObjectResult>(response); }
public async Task SendPlayCommand(PlayRequest command, CancellationToken cancellationToken) { _logger.Debug("{0} - Received PlayRequest: {1}", this._session.DeviceName, command.PlayCommand); var items = new List <BaseItem>(); foreach (string id in command.ItemIds) { AddItemFromId(Guid.Parse(id), items); } var playlist = new List <PlaylistItem>(); var isFirst = true; var serverAddress = GetServerAddress(); foreach (var item in items) { if (isFirst && command.StartPositionTicks.HasValue) { playlist.Add(CreatePlaylistItem(item, command.StartPositionTicks.Value, serverAddress)); isFirst = false; } else { playlist.Add(CreatePlaylistItem(item, 0, serverAddress)); } } _logger.Debug("{0} - Playlist created", _session.DeviceName); if (command.PlayCommand == PlayCommand.PlayLast) { Playlist.AddRange(playlist); } if (command.PlayCommand == PlayCommand.PlayNext) { Playlist.AddRange(playlist); } _logger.Debug("{0} - Playing {1} items", _session.DeviceName, playlist.Count); if (!string.IsNullOrWhiteSpace(command.ControllingUserId)) { var userId = new Guid(command.ControllingUserId); var user = _userManager.GetUserById(userId); await _sessionManager.LogSessionActivity(_session.Client, _session.ApplicationVersion, _session.DeviceId, _session.DeviceName, _session.RemoteEndPoint, user).ConfigureAwait(false); } await PlayItems(playlist).ConfigureAwait(false); }
private void MakeMove(int[] movePositions) { if (_ticTacToeControlsViewModel.GameStarted && TicTacToeBoard[movePositions[1]][movePositions[0]] == ControlEnums.Player.None) { PlayRequest request = BuildPlayRequest(movePositions); PlayResponse response = _ticTacToeControlsViewModel.GameScenario.Execute(request); PlayerWon = response.PlayerWon; } }
public void Game_User_Selects_Valid_Action_Returns_Ok() { var playRequest = new PlayRequest { Player1ChosenAction = Application.Constants.GameAction.Paper }; var response = _gameController.Play(playRequest); var result = (((OkObjectResult)response).Value as Response <GameResult>); Assert.IsType <OkObjectResult>(response); Assert.True(result.Data.Player1Action == Application.Constants.GameAction.Paper.ToString()); }
private void OnPlaybackNext() { PlayRequest request = (PlayRequest)RequestFactory.CreateRequest(MessageType.Play); if (String.IsNullOrEmpty(_playlistForm.GoToNext())) { MessageBox.Show("Nothing to play. Check playlist", "Information"); return; } OnPlaybackPlay(); }
private void OnPlaybackPrevious() { PlayRequest request = (PlayRequest)RequestFactory.CreateRequest(MessageType.Play); if (string.IsNullOrEmpty(_playlistForm.GoToPrevious())) { MessageBox.Show("Playlist is empty. Nothing to play", "Information"); return; } OnPlaybackPlay(); }
public Task SendPlayCommand(PlayRequest command, CancellationToken cancellationToken) { var dict = new Dictionary <string, string>(); dict["ItemIds"] = string.Join(",", command.ItemIds); if (command.StartPositionTicks.HasValue) { dict["StartPositionTicks"] = command.StartPositionTicks.Value.ToString(CultureInfo.InvariantCulture); } return(SendMessage(command.PlayCommand.ToString(), dict, cancellationToken)); }
public GameplayScreen(PlayRequest request) { mRequest = request; TransitionOnTime = TimeSpan.FromSeconds(1.5); TransitionOffTime = TimeSpan.FromSeconds(0.5); mScene = null; mViews = new ObservableCollection<PlayerView>(); mActorMan = null; mScreenLayout = ViewportLayout.Invalid; mDrawSegments = new List<DrawSegment>(); mViewContentLoader = null; mPauseAlpha = 0.5f; mFrameCounter = 0; mFrameRate = 0; mFrameRateTimer = new TimeSpan(); mFrameTimes = new Queue<double>(); for (int f = 0; f < 30; ++f) { mFrameTimes.Enqueue(160.0d); } mPrevFrameTime = -1.0d; }
private void StartGame(PlayerIndex inputIndex) { GameResources.PlaySession = new PlaySession(); // Depend on the screen manager to clean this up. PlayerInfo playerOne = new PlayerInfo(0, PlayerInfo.PlayerType.Local); GameResources.PlaySession.Players.Add(playerOne); GameResources.PlaySession.LocalPlayers.Add(playerOne.PlayerId, inputIndex); // TODO: P2: Go through character selection screen first. PlayRequest testPlay = new PlayRequest(); testPlay.LevelName = "levels\\Hub"; CharacterInfo testChar = new CharacterInfo(); testChar.TemplateName = "Mechadrone"; testPlay.CharacterSelections.Add(playerOne.PlayerId, testChar); LoadingScreen.Load(ScreenManager, true, inputIndex, new GameplayScreen(testPlay)); }
private void LoadNewLevel(string levelName) { PlayRequest pr = new PlayRequest(); pr.LevelName = levelName; for (int p = 0; p < GameResources.PlaySession.Players.Count; ++p) { CharacterInfo testChar; if (p < GameResources.GameDossier.Characters.Count) { testChar = GameResources.GameDossier.Characters[p]; } else { testChar = new CharacterInfo(); } pr.CharacterSelections.Add(GameResources.PlaySession.Players[p].PlayerId, testChar); } LoadingScreen.Load(ScreenManager, true, ControllingPlayer, new GameplayScreen(pr)); }