示例#1
0
            public PlayResponse Add(PlayRequest request)
            {
                var playResponse = new PlayResponse();

                playResponse.Sum = request.A + request.B;
                return(playResponse);
            }
        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 Execute(PlayRequest PlayRequest)
        {
            _currentPlayer = ((_currentPlayer != null) && _currentPlayer.Equals(_realPlayer1)) ? _realPlayer2 : _realPlayer1;

            PlayResponse response = _currentPlayer.Play(PlayRequest);

            return(response);
        }
示例#4
0
        public async override Task ExecuteAsync(SlarkContext context)
        {
            var request = context.Message as PlayRequest;

            if (context.Server is PlayGameServer gameServer)
            {
                request.TryGet <string>("cid", "", out string cid);
                gameServer.Rooms.TryGet(r => r.Id == cid, out PlayRoom room);

                if (room != null)
                {
                    context.HasNotice = true;
                    var tuple = await room.NewPlayerJoinAsync(request, context.Sender);

                    context.Response = tuple.Item1.MetaText;
                    context.Notice   = tuple.Item2.MetaText;

                    context.Receivers = room.AvailableConnections;
                }
            }
            else if (context.Server is PlayLobbyServer lobby)
            {
                var responseBody = new Dictionary <string, object>()
                {
                    { "cmd", this.Command },
                    { "op", "added" },
                    { "i", request.CommandId },
                };

                var joinRequest = JsonConvert.DeserializeObject <RoomJoinRequest>(request.MetaText);

                var tuple = await lobby.MatchAsync(joinRequest);

                if (tuple.Item1 != null)
                {
                    var gs = tuple.Item1;
                    responseBody.Add("addr", gs.ClientConnectionUrl);
                    responseBody.Add("secureAddr", gs.ClientConnectionUrl);
                }

                if (tuple.Item2 != null)
                {
                    var room = tuple.Item2;
                    responseBody.Add("cid", room.Id);
                    responseBody.Add("open", room.IsOpen);
                    responseBody.Add("m", room.MemberIds);
                    responseBody.Add("memberIds", room.ActorIds);
                    responseBody.Add("visible", room.IsVisible);
                    responseBody.Add("maxMembers", room.MaxPlayerCount);
                }

                var response = new PlayResponse(responseBody);
                response.Timestamplize();
                response.SerializeBody();

                context.Response = response.MetaText;
            }
        }
示例#5
0
        public override Response DoWork(string request)
        {
            var workRequest = JsonConvert.DeserializeObject<PlayRequest>(request);
            var workResponse = new PlayResponse();
            User user;
            workResponse.Status = Server.PlayersQue.TryRemove(workRequest.UserName, out user) ? Statuses.Ok : Statuses.NoUser;

            return workResponse;
        }
 public DataResponse <PlayResponse> ReloadDialogue(PlayResponse playResponse)
 {
     return(Do(() =>
     {
         playResponse.Dialogue = _service.GetOne(playResponse.Dialogue.Id);
         return new DataResponse <PlayResponse> {
             Data = playResponse
         };
     }));
 }
示例#7
0
        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 async Task <ActionResult <PlayResponse> > Tocar(PlayRequest request)
        {
            try
            {
                PlayResponse response = await ChamarSpotifyApi(request);

                return(response);
            }
            catch (Exception ex)
            {
                return(BadRequest(
                           new Models.Response.ErroResponse(500, ex.Message)
                           ));
            }
        }
        public PlayResponse Execute(PlayRequest PlayRequest)
        {
            _currentPlayer = ((_currentPlayer != null) && _currentPlayer.Equals(_realPlayer)) ? _AIPlayer : _realPlayer;
            PlayResponse response = _currentPlayer.Play(PlayRequest);

            if (!response.PlayerWon)
            {
                _currentPlayer = ((_currentPlayer != null) && _currentPlayer.Equals(_realPlayer)) ? _AIPlayer : _realPlayer;

                PlayRequest request = new PlayRequest();
                request.TicTacToeBoard = response.TicTacToeBoard;

                response = _currentPlayer.Play(request);
            }

            return(response);
        }
示例#10
0
        public void TestPlay()
        {
            target = new StandardEngine();

            var board = target.NewGame();

            PlayRequest req = new PlayRequest()
            {
                Board = board.AsArray(), Row = 0, Col = 0
            };
            PlayResponse res = target.Play(req);

            CollectionAssert.AreEquivalent(new MarkType[, ]
            {
                { MarkType.Cross, MarkType.None, MarkType.None },
                { MarkType.None, MarkType.None, MarkType.None },
                { MarkType.None, MarkType.None, MarkType.None }
            }, res.Board);

            req = new PlayRequest()
            {
                Board = res.Board, Row = 1, Col = 1
            };
            res = target.Play(req);

            CollectionAssert.AreEquivalent(new MarkType[, ]
            {
                { MarkType.Cross, MarkType.None, MarkType.None },
                { MarkType.None, MarkType.Nought, MarkType.None },
                { MarkType.None, MarkType.None, MarkType.None }
            }, res.Board);

            req = new PlayRequest()
            {
                Board = res.Board, Row = 2, Col = 2
            };
            res = target.Play(req);

            CollectionAssert.AreEquivalent(new MarkType[, ]
            {
                { MarkType.Cross, MarkType.None, MarkType.None },
                { MarkType.None, MarkType.Nought, MarkType.None },
                { MarkType.None, MarkType.None, MarkType.Cross }
            }, res.Board);
        }
 public DataResponse <PlayResponse> GetPlayerModel(int idDialogue)
 {
     return(Do(() =>
     {
         var dialogue = _service.GetOne(idDialogue);
         var result = new PlayResponse
         {
             Dialogue = dialogue,
             Setting = new PlaySetting
             {
                 VisableMyText = true,
                 VisableOtherText = true,
                 IdNowPlay = -1,
             }
         };
         return new DataResponse <PlayResponse> {
             Data = result
         };
     }));
 }
示例#12
0
        public override Task ExecuteAsync(SlarkContext context)
        {
            var request      = context.Message as PlayRequest;
            var responseBody = new Dictionary <string, object>()
            {
                { "cmd", this.Command },
                { "op", "updated" },
                { "i", request.CommandId },
            };

            if (request.Body.ContainsKey("casAttr") || request.Body.ContainsKey("attr"))
            {
                context.HasNotice = true;
            }

            var response = new PlayResponse(responseBody);

            response.Timestamplize();
            response.SerializeBody();

            return(Task.FromResult(response.MetaText));
        }
示例#13
0
 public override Response DoWork(string request)
 {
     var workRequest = JsonConvert.DeserializeObject<PlayRequest>(request);
     var workResponse = new PlayResponse();
     var u = Server.Users.Values.FirstOrDefault(user => user.Name == workRequest.UserName);
     if (u == null)
     {
         workResponse.Status = Statuses.NoUser;
         return workResponse;
     }
     if (Server.PlayersQue.ContainsKey(workRequest.UserName))
     {
         workResponse.Status = Statuses.DuplicateUser;
         return workResponse;
     }
     if (Server.PlayersQue.TryAdd(workRequest.UserName, u))
     {
         workResponse.Status = Statuses.Ok;
         return workResponse;
     }
     workResponse.Status = Statuses.Unknown;
     return workResponse;
 }
示例#14
0
        public PlayResponse Play(PlayRequest request)
        {
            if (currentPlayer == null)
            {
                return(null);
            }

            PlayResponse response = currentPlayer.Play(request, victoryValidator);

            if (response.IsValidMove)
            {
                BoardChanged?.Invoke(request.Row, request.Col, currentPlayer.Mark);

                if (response.Result != Enums.GameState.Playing)
                {
                    GameOver?.Invoke(response.Result, response.Result == Enums.GameState.Draw ? Enums.MarkType.None : currentPlayer.Mark);
                }

                currentPlayer = NextPlayer;
            }

            return(response);
        }
        public bool MoveNext(CancellationToken token)
        {
            using (var session = new EightTracksSession(EightTracksModule.ApiKey))
            {
                if (_playToken == null)
                {
                    _playToken = session.Query<Play>().GetPlayToken();
                }

                if (_currentPlayResponse == null)
                {
                    _currentPlayResponse = session.Query<Play>().Execute(_playToken.PlayToken, _currentMix.ID);
                }
                else if (!_currentPlayResponse.Set.AtEnd)
                {
                    _currentPlayResponse = session.Query<Play>().Next(_playToken.PlayToken, _currentMix.ID);
                }

                if (_currentPlayResponse.Errors != null)
                {
                    var errorNodes = _currentPlayResponse.Errors as XmlNode[];

                    if (errorNodes != null && errorNodes.Any())
                    {
                        var errorNode = errorNodes.FirstOrDefault();
                        if (errorNode != null && (errorNode.Name != "nil" && errorNode.Value != "true"))
                        {
                            var errorText = errorNode.InnerText;
                            _toastService.Show(errorText);
                        }
                    }
                }

                if (MoveToNextSimilarMixAtEnd)
                {
                    if (_currentPlayResponse.Set == null || _currentPlayResponse.Set.AtEnd)
                    {
                        if (_currentMix != null)
                        {
                            var nextMixResponse = session.Query<Mixes>().GetNextMix(_playToken.PlayToken, _currentMix.ID);
                            _currentMix = nextMixResponse.NextMix;

                            if (_currentMix != null)
                            {
                                Description = _currentMix.Name;

                                _currentPlayResponse = session.Query<Play>().Execute(_playToken.PlayToken,
                                                                                     _currentMix.ID);
                            }
                        }

                        // TODO : Add user-notification and logging if there is any errors
                    }
                }

                if (_currentPlayResponse.Set == null)
                {
                    return false;
                }
            }

            return _currentPlayResponse != null && !_currentPlayResponse.Set.AtEnd;
        }
示例#16
0
 public void Reset()
 {
     _currentMix          = _startMix;
     _playToken           = null;
     _currentPlayResponse = null;
 }
示例#17
0
        public bool MoveNext(CancellationToken token)
        {
            using (var session = new EightTracksSession(EightTracksModule.ApiKey))
            {
                if (_playToken == null)
                {
                    _playToken = session.Query <Play>().GetPlayToken();
                }

                if (_currentPlayResponse == null)
                {
                    _currentPlayResponse = session.Query <Play>().Execute(_playToken.PlayToken, _currentMix.ID);
                }
                else if (!_currentPlayResponse.Set.AtEnd)
                {
                    _currentPlayResponse = session.Query <Play>().Next(_playToken.PlayToken, _currentMix.ID);
                }

                if (_currentPlayResponse.Errors != null)
                {
                    var errorNodes = _currentPlayResponse.Errors as XmlNode[];

                    if (errorNodes != null && errorNodes.Any())
                    {
                        var errorNode = errorNodes.FirstOrDefault();
                        if (errorNode != null && (errorNode.Name != "nil" && errorNode.Value != "true"))
                        {
                            var errorText = errorNode.InnerText;
                            _toastService.Show(errorText);
                        }
                    }
                }

                if (MoveToNextSimilarMixAtEnd)
                {
                    if (_currentPlayResponse.Set == null || _currentPlayResponse.Set.AtEnd)
                    {
                        if (_currentMix != null)
                        {
                            var nextMixResponse = session.Query <Mixes>().GetNextMix(_playToken.PlayToken, _currentMix.ID);
                            _currentMix = nextMixResponse.NextMix;

                            if (_currentMix != null)
                            {
                                Description = _currentMix.Name;

                                _currentPlayResponse = session.Query <Play>().Execute(_playToken.PlayToken,
                                                                                      _currentMix.ID);
                            }
                        }

                        // TODO : Add user-notification and logging if there is any errors
                    }
                }

                if (_currentPlayResponse.Set == null)
                {
                    return(false);
                }
            }

            return(_currentPlayResponse != null && !_currentPlayResponse.Set.AtEnd);
        }
示例#18
0
 public void Dispose()
 {
     _playToken           = null;
     _currentPlayResponse = null;
 }
 public void Reset()
 {
     _currentMix = _startMix;
     _playToken = null;
     _currentPlayResponse = null;
 }
示例#20
0
        public AResponse CreateResponse(string responseData)
        {
            AResponse response = null;

            try
            {
                // validate length
                if (responseData.Length < Protocol.Instance.HeaderLength)
                {
                    throw new ParserException("invalid responseData length");
                }

                // get the header
                string header = responseData.Substring(0, (int)Protocol.Instance.HeaderLength);

                switch (_messageHeaderMapper[header])
                {
                case MessageType.DisplayDevicesInfo:
                    response = new DisplayDeviceInfoResponse();
                    break;

                case MessageType.Pause:
                    response = new PauseResponse();
                    break;

                case MessageType.Play:
                    response = new PlayResponse();
                    break;

                case MessageType.Resume:
                    response = new ResumeResponse();
                    break;

                case MessageType.Seek:
                    response = new SeekResponse();
                    break;

                case MessageType.SetImage:
                    response = new SetImageResponse();
                    break;

                case MessageType.SetText:
                    response = new SetTextResponse();
                    break;

                case MessageType.RemoveAddon:
                    response = new RemoveAddonResponse();
                    break;

                case MessageType.Stop:
                    response = new StopResponse();
                    break;

                case MessageType.Termination:
                    response = new TerminationResponse();
                    break;

                case MessageType.VideoLayout:
                    response = new VideoLayoutResponse();
                    break;

                case MessageType.Volume:
                    response = new VolumeResponse();
                    break;

                case MessageType.WindowLayout:
                    response = new WindowLayoutResponse();
                    break;

                case MessageType.SoundFx:
                    response = new SoundFxResponse();
                    break;

                case MessageType.Sound3d:
                    response = new Sound3dResponse();
                    break;

                case MessageType.MidiProperties:
                    response = new MidiPropertiesResponse();
                    break;

                case MessageType.MidiOutputPortInfo:
                    response = new MidiOutputPortInfoResponse();
                    break;

                case MessageType.SetMidiOutputPort:
                    response = new SetMidiOutputPortResponse();
                    break;

                case MessageType.SetDls:
                    response = new SetDlsResponse();
                    break;

                case MessageType.SetFrequency:
                    response = new SetFrequencyResponse();
                    break;

                case MessageType.SetRate:
                    response = new SetRateResponse();
                    break;

                case MessageType.SetPlayerType:
                    response = new SetPlayerTypeResponse();
                    break;

                default:
                    throw new ParserException("invalid message header");
                }
                response.ParseFromString(responseData);
            }
            catch (System.Exception e)
            {
                throw e;
            }

            return(response);
        }
 public void Dispose()
 {
     _playToken = null;
     _currentPlayResponse = null;
 }
        public ActionResult Play(PlayResponse model)
        {
            var result = _playerApp.ReloadDialogue(model);

            return(View(result.Data));
        }