//
// Copyright (C) 2015 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#if UNITY_ANDROID
namespace GooglePlayGames.BasicApi
{
using System.Collections.Generic;
using UnityEngine.SocialPlatforms;
///
/// Leaderboard score data. This is the callback data
/// when loading leaderboard scores. There are several SDK
/// API calls needed to be made to collect all the required data,
/// so this class is used to simplify the response.
///
public class LeaderboardScoreData
{
private string mId;
private ResponseStatus mStatus;
private ulong mApproxCount;
private string mTitle;
private IScore mPlayerScore;
private ScorePageToken mPrevPage;
private ScorePageToken mNextPage;
private List mScores = new List();
internal LeaderboardScoreData(string leaderboardId)
{
mId = leaderboardId;
}
internal LeaderboardScoreData(string leaderboardId, ResponseStatus status)
{
mId = leaderboardId;
mStatus = status;
}
public bool Valid
{
get
{
return mStatus == ResponseStatus.Success ||
mStatus == ResponseStatus.SuccessWithStale;
}
}
public ResponseStatus Status
{
get { return mStatus; }
internal set { mStatus = value; }
}
public ulong ApproximateCount
{
get { return mApproxCount; }
internal set { mApproxCount = value; }
}
public string Title
{
get { return mTitle; }
internal set { mTitle = value; }
}
public string Id
{
get { return mId; }
internal set { mId = value; }
}
public IScore PlayerScore
{
get { return mPlayerScore; }
internal set { mPlayerScore = value; }
}
public IScore[] Scores
{
get { return mScores.ToArray(); }
}
internal int AddScore(PlayGamesScore score)
{
mScores.Add(score);
return mScores.Count;
}
public ScorePageToken PrevPageToken
{
get { return mPrevPage; }
internal set { mPrevPage = value; }
}
public ScorePageToken NextPageToken
{
get { return mNextPage; }
internal set { mNextPage = value; }
}
public override string ToString()
{
return string.Format("[LeaderboardScoreData: mId={0}, " +
" mStatus={1}, mApproxCount={2}, mTitle={3}]",
mId, mStatus, mApproxCount, mTitle);
}
}
}
#endif