// // Copyright (C) 2015 Google Inc. // // 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.Android { using GooglePlayGames.BasicApi; using GooglePlayGames.BasicApi.SavedGame; using OurUtils; using UnityEngine; using UnityEngine.SocialPlatforms; using System; using System.Collections.Generic; internal class AndroidJavaConverter { internal static System.DateTime ToDateTime(long milliseconds) { System.DateTime result = new System.DateTime(1970, 1, 1, 0, 0, 0, 0); return result.AddMilliseconds(milliseconds); } // Convert to LeaderboardVariant.java#TimeSpan internal static int ToLeaderboardVariantTimeSpan(LeaderboardTimeSpan span) { switch (span) { case LeaderboardTimeSpan.Daily: return 0 /* TIME_SPAN_DAILY */; case LeaderboardTimeSpan.Weekly: return 1 /* TIME_SPAN_WEEKLY */; case LeaderboardTimeSpan.AllTime: default: return 2 /* TIME_SPAN_ALL_TIME */; } } // Convert to LeaderboardVariant.java#Collection internal static int ToLeaderboardVariantCollection(LeaderboardCollection collection) { switch (collection) { case LeaderboardCollection.Social: return 3 /* COLLECTION_FRIENDS */; case LeaderboardCollection.Public: default: return 0 /* COLLECTION_PUBLIC */; } } // Convert to PageDirection.java#Direction internal static int ToPageDirection(ScorePageDirection direction) { switch (direction) { case ScorePageDirection.Forward: return 0 /* NEXT */; case ScorePageDirection.Backward: return 1 /* PREV */; default: return -1 /* NONE */; } } internal static Player ToPlayer(AndroidJavaObject player) { if (player == null) { return null; } string displayName = player.Call("getDisplayName"); string playerId = player.Call("getPlayerId"); string avatarUrl = player.Call("getIconImageUrl"); return new Player(displayName, playerId, avatarUrl); } internal static PlayerProfile ToPlayerProfile(AndroidJavaObject player) { if (player == null) { return null; } string displayName = player.Call("getDisplayName"); string playerId = player.Call("getPlayerId"); string avatarUrl = player.Call("getIconImageUrl"); bool isFriend = player.Call("getRelationshipInfo").Call("getFriendStatus") == 4 /* PlayerFriendStatus.Friend*/; return new PlayerProfile(displayName, playerId, avatarUrl, isFriend); } internal static List ToStringList(AndroidJavaObject stringList) { if (stringList == null) { return new List(); } int size = stringList.Call("size"); List converted = new List(size); for (int i = 0; i < size; i++) { converted.Add(stringList.Call("get", i)); } return converted; } // from C#: List to Java: ArrayList internal static AndroidJavaObject ToJavaStringList(List list) { AndroidJavaObject converted = new AndroidJavaObject("java.util.ArrayList"); for (int i = 0; i < list.Count; i++) { converted.Call("add", list[i]); } return converted; } internal static FriendsListVisibilityStatus ToFriendsListVisibilityStatus(int playerListVisibility) { switch (playerListVisibility) { case /* FriendsListVisibilityStatus.UNKNOWN */ 0: return FriendsListVisibilityStatus.Unknown; case /* FriendsListVisibilityStatus.VISIBLE */ 1: return FriendsListVisibilityStatus.Visible; case /* FriendsListVisibilityStatus.REQUEST_REQUIRED */ 2: return FriendsListVisibilityStatus.ResolutionRequired; case /* FriendsListVisibilityStatus.FEATURE_UNAVAILABLE */ 3: return FriendsListVisibilityStatus.Unavailable; default: return FriendsListVisibilityStatus.Unknown; } } internal static IUserProfile[] playersBufferToArray(AndroidJavaObject playersBuffer) { int count = playersBuffer.Call("getCount"); IUserProfile[] users = new IUserProfile[count]; for (int i = 0; i < count; ++i) { using (var player = playersBuffer.Call("get", i)) { users[i] = AndroidJavaConverter.ToPlayerProfile(player); } } playersBuffer.Call("release"); return users; } } } #endif