Newer
Older
app-47-android / Assets / FacebookSDK / Examples / Mobile / Scripts / SubMenus / TournamentsMenu.cs
@a_kuznecov a_kuznecov on 22 Jun 2023 4 KB First Commit

/**
 * Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
 *
 * You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
 * copy, modify, and distribute this software in source code or binary form for use
 * in connection with the web services and APIs provided by Facebook.
 *
 * As with any software that integrates with the Facebook platform, your use of
 * this software is subject to the Facebook Developer Principles and Policies
 * [http://developers.facebook.com/policy/]. This copyright notice shall be
 * included in all copies or substantial portions of the software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

namespace Facebook.Unity.Example
{
    using System;
    using System.Collections.Generic;
    using UnityEngine;

    internal class TournamentsMenu : MenuBase
    {
        private string score = string.Empty;
        private string tournamentID = string.Empty;

        protected override void GetGui()
        {
            bool enabled = GUI.enabled;
            GUI.enabled = enabled && FB.IsLoggedIn;

            if (this.Button("Get Tournament"))
            {
                FB.Mobile.GetTournaments(this.GetTournamentsHandleResult);
            }

            GUILayout.Space(24);
            this.LabelAndTextField("Score:", ref this.score);
            this.LabelAndTextField("TournamentID:", ref this.tournamentID);
            if (this.Button("Post Score to Tournament"))
            {
                FB.Mobile.UpdateTournament(tournamentID, int.Parse(score), this.HandleResult);
            }

            if (this.Button("Update Tournament and Share"))
            {
                FB.Mobile.UpdateAndShareTournament(tournamentID, int.Parse(score), this.HandleResult);
            }

            if (this.Button("Create Tournament and Share"))
            {
                FB.Mobile.CreateAndShareTournament(
                    int.Parse(score),
                    "Unity Tournament",
                    TournamentSortOrder.HigherIsBetter,
                    TournamentScoreFormat.Numeric,
                    DateTime.UtcNow.AddHours(2),
                    "Unity SDK Tournament",
                    this.HandleResult
                );

            }

            GUI.enabled = enabled;
        }

        private void GetTournamentsHandleResult(IGetTournamentsResult result)
        {
            LogView.AddLog("Getting first tournament id...");

            if (result == null)
            {
                this.tournamentID = "Empty result";
                LogView.AddLog("NULL result");
                return;
            }

            if (result.ResultDictionary != null)
            {
                string dic;
                result.ResultDictionary.TryGetValue("0", out dic);
                if (dic != null)
                {
                    LogView.AddLog("ResultDictionary");
                    TournamentResult tournament = new TournamentResult(new ResultContainer(dic));
                    if (tournament != null)
                    {
                        LogView.AddLog("Tournament info ready");
                        this.tournamentID = tournament.TournamentId;
                        LogView.AddLog("First id: " + this.tournamentID + " / " + tournament.TournamentTitle);
                    }
                    else
                    {
                        LogView.AddLog("No tournament info");
                    }
                }
                else
                {
                    LogView.AddLog("No TryGetValue data");
                }
            }
            else
            {
                this.tournamentID = "Empty result";
                LogView.AddLog("Empty result");
            }
            this.HandleResult(result);
        }
    }
}