#nullable enable
using IGP.UnitySDK;
using IGP.UnitySDK.GameKit;
using UnityEngine;

public sealed class IGPExampleGameKit : MonoBehaviour
{
    [SerializeField] private IGPRuntimeManager? runtime = null;

    private void Awake()
    {
        runtime ??= FindObjectOfType<IGPRuntimeManager>();
    }

    public async void LoadProfile()
    {
        if (runtime == null)
        {
            return;
        }

        IGPUserProfile profile = await IGPProfile.GetProfileAsync(runtime);
        Debug.Log(profile.avatarUrl);
    }

    public async void ListLeaderboards()
    {
        if (runtime == null)
        {
            return;
        }

        IGPListLeaderboardsByGameResult result =
            await IGPLeaderboard.ListLeaderboardsByGameAsync(runtime);
        foreach (IGPLeaderboardMetadataItem leaderboard in result.leaderboards)
        {
            Debug.Log($"{leaderboard.leaderboardId}: {leaderboard.displayName}");
        }
    }
}
