예제 #1
0
    private IEnumerator SendScore(ScoreQuery localEntryData, Action onSuccess, Action onFailure)
    {
        string queryJson = JsonConvert.SerializeObject(localEntryData);

        byte[] queryBytes = new UTF8Encoding().GetBytes(queryJson);
        using (UnityWebRequest request = new UnityWebRequest("https://us-central1-pok-game.cloudfunctions.net/setScoreRequest", "POST"))
        {
            request.uploadHandler   = (UploadHandler) new UploadHandlerRaw(queryBytes);
            request.downloadHandler = (DownloadHandler) new DownloadHandlerBuffer();
            request.SetRequestHeader("Content-Type", "application/json");

            yield return(request.SendWebRequest());

            if (request.isNetworkError == true)
            {
                Debug.LogError("An error has occured while puting Score data: " + request.error);
                onFailure?.Invoke();
            }
            else
            {
                Debug.Log("Successfully send score");
                onSuccess?.Invoke();
            }
        }
    }
예제 #2
0
    public IEnumerator GetRanking(ScoreQuery localEntryData, Action <ScoreResponse> onSuccess, Action onFailure)
    {
        Debug.Log("getRank: " + localEntryData.guid);
        string queryJson = JsonConvert.SerializeObject(localEntryData);

        byte[] queryBytes = new UTF8Encoding().GetBytes(queryJson);
        Debug.Log("getRank: " + queryJson);
        using (UnityWebRequest request = new UnityWebRequest("https://us-central1-pok-game.cloudfunctions.net/getRankingRequest", "POST"))
        {
            request.uploadHandler   = (UploadHandler) new UploadHandlerRaw(queryBytes);
            request.downloadHandler = (DownloadHandler) new DownloadHandlerBuffer();
            request.SetRequestHeader("Content-Type", "application/json");

            yield return(request.SendWebRequest());

            if (request.isNetworkError == true)
            {
                Debug.LogError("An error has occured while puting Rank request: " + request.error);
                onFailure?.Invoke();
            }
            else
            {
                Debug.Log($"Successfully retrieved Ranks: {request.downloadHandler.text}");
                ScoreResponse data = JsonConvert.DeserializeObject <ScoreResponse>(request.downloadHandler.text);
                onSuccess?.Invoke(data);
            }
        }
    }
예제 #3
0
파일: MenuManager.cs 프로젝트: Xemar5/Pok
    private IEnumerator ShowResults()
    {
        ScoreQuery query = new ScoreQuery();

        query.username = nameInput.text;
        query.score    = score.CurrentScore;
        query.invscore = -score.CurrentScore;
        query.guid     = FirebaseManager.Instance.UserGuid;
        rankingManager.SendScoreAndGetRanking(query);


        ChangeVisibility(resultsCanvasGroup, true);
        durationText.text = "-" + score.HighestScoreTime.ToString("F1");
        heightText.text   = score.HighestScore.ToString("F1");

        yield return(new WaitForSeconds(fadeDuration));

        ChangeVisibility(durationCanvasGroup, true);

        yield return(new WaitForSeconds(fadeDuration * 2));

        ChangeVisibility(heightCanvasGroup, true);

        yield return(new WaitForSeconds(fadeDuration * 6));

        ChangeVisibility(resultsCanvasGroup, false);
        ShowRankings();
    }
예제 #4
0
 public void GetRanking(ScoreQuery localEntryData)
 {
     StartCoroutine(FirebaseManager.Instance.GetRanking(localEntryData, (response) =>
     {
         this.response = response;
     }, () =>
     {
         Debug.LogWarning("Couldn't get leaderboards");
     }));
 }
예제 #5
0
    public IEnumerator SendScoreAndGetRanking(ScoreQuery localEntryData, Action <ScoreResponse> onSuccess, Action onFailure)
    {
        bool sendScoreGood = false;

        yield return(StartCoroutine(SendScore(localEntryData, () => sendScoreGood = true, onFailure)));

        if (sendScoreGood == true)
        {
            yield return(StartCoroutine(GetRanking(localEntryData, onSuccess, onFailure)));
        }
    }
예제 #6
0
        public void Setup()
        {
            var scoreCalculator = new SimpleScoreCalculator();

            _scoreQuery = new ScoreQuery(new Mock <ISignaler>().Object, scoreCalculator);
            var eventBus = new DomainBus();

            eventBus.RegisterHandler(() => new GameHandler(_scoreQuery));
            var eventStorage   = new InMemoryEventStorage();
            var sessionFactory = new SessionFactory(eventStorage);
            var gameService    = new GameService(sessionFactory, eventBus);

            _commandbus = new DomainBus();
            _commandbus.RegisterHandler(() => gameService);
        }
예제 #7
0
파일: MenuManager.cs 프로젝트: Xemar5/Pok
    private void ShowLeaderboardsFromMainMenu()
    {
        ScoreQuery query = new ScoreQuery();

        query.username = PlayerPrefs.GetString("PlayerName", "");
        query.score    = PlayerPrefs.GetInt("PlayerScore", 0);
        query.invscore = -query.score;
        query.guid     = string.IsNullOrWhiteSpace(query.username) == true ? "" : FirebaseManager.Instance.UserGuid;
        rankingManager.GetRanking(query);

        ChangeVisibility(startMenuCanvasGroup, false);

        player.CanMove = false;
        StopInform();
        ShowRankings();
    }
        /// <summary>
        /// Load your modules or register your services here!
        /// </summary>
        /// <param name="kernel">The kernel.</param>
        private static void RegisterServices(IKernel kernel)
        {
            var scoreCalculator = new EloCalculator();
            var scoreQuery      = new ScoreQuery(new WebSignaler(), scoreCalculator);
            var eventBus        = new DomainBus();
            var teamService     = new TeamService();

            eventBus.RegisterHandler(() => new GameHandler(scoreQuery));
            eventBus.RegisterHandler(() => teamService);
            kernel.Bind <IScoreQuery>().ToConstant(scoreQuery);
            kernel.Bind <ITeamService>().ToConstant(teamService);
            var eventStorage   = GetEventStorage(eventBus);
            var sessionFactory = new SessionFactory(eventStorage);

            kernel.Bind <IEventStorage>().ToConstant(eventStorage);
            kernel.Bind <ISessionFactory>().ToConstant(sessionFactory);
            var gameService = new GameService(sessionFactory, eventBus);
            var commandbus  = new DomainBus();

            commandbus.RegisterHandler(() => gameService);
            kernel.Bind <IBus>().ToConstant(commandbus);
        }