Files
2026-02-21 16:45:37 +08:00

644 lines
18 KiB
C#

using UnityEngine;
using Viveport;
using Viveport.Core;
public class ViveportDemo : MonoBehaviour
{
private class MyLicenseChecker : Api.LicenseChecker
{
public override void OnSuccess(long issueTime, long expirationTime, int latestVersion, bool updateRequired)
{
Viveport.Core.Logger.Log("[MyLicenseChecker] issueTime: " + issueTime);
Viveport.Core.Logger.Log("[MyLicenseChecker] expirationTime: " + expirationTime);
Viveport.Core.Logger.Log("[MyLicenseChecker] latestVersion: " + latestVersion);
Viveport.Core.Logger.Log("[MyLicenseChecker] updateRequired: " + updateRequired);
}
public override void OnFailure(int errorCode, string errorMessage)
{
Viveport.Core.Logger.Log("[MyLicenseChecker] errorCode: " + errorCode);
Viveport.Core.Logger.Log("[MyLicenseChecker] errorMessage: " + errorMessage);
}
}
private int nInitValue;
private int nResult;
private int nWidth = 110;
private int nHeight = 40;
private int nXStart = 10;
private int nYStart = 35;
private string stringToEdit = "ID_Stat1";
private string StatsCount = "80";
private string achivToEdit = "ID_Achievement1";
private string leaderboardToEdit = "ID_Leaderboard1";
private string leaderboardUserName = "Karl";
private string leaderboardScore = "1000";
private static bool bInit = true;
private static bool bIsReady;
private static bool bUserProfileIsReady;
private static bool bArcadeIsReady;
private static bool bTokenIsReady;
private static string msgBuffer = string.Empty;
private static string APP_ID = "bd67b286-aafc-449d-8896-bb7e9b351876";
private static string APP_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFypCg0OHfBC+VZLSWPbNSgDo9qg/yQORDwGy1rKIboMj3IXn4Zy6h6bgn8kiMY7VI0lPwIj9lijT3ZxkzuTsI5GsK//Y1bqeTol4OUFR+47gj+TUuekAS2WMtglKox+/7mO6CA1gV+jZrAKo6YSVmPd+oFsgisRcqEgNh5MIURQIDAQAB";
private static void Log(string msg)
{
msgBuffer = msg + "\n" + msgBuffer;
Viveport.Core.Logger.Log(msg);
}
private void Start()
{
Api.Init(InitStatusHandler, APP_ID);
}
private void Update()
{
}
private void OnGUI()
{
GUIStyle style = new GUIStyle("button");
GUIStyle gUIStyle = new GUIStyle("button");
gUIStyle.fontSize = 10;
if (!bInit)
{
GUI.contentColor = Color.white;
}
else
{
GUI.contentColor = Color.grey;
}
if (GUI.Button(new Rect(nXStart, nYStart, nWidth, nHeight), "Init", style) && !bInit)
{
Api.Init(InitStatusHandler, APP_ID);
}
if (bInit)
{
GUI.contentColor = Color.white;
}
else
{
GUI.contentColor = Color.grey;
}
if (GUI.Button(new Rect(nXStart + (nWidth + 10), nYStart, nWidth, nHeight), "Shutdown", style) && bInit)
{
Api.Shutdown(ShutdownHandler);
}
if (GUI.Button(new Rect(nXStart + 2 * (nWidth + 10), nYStart, nWidth, nHeight), "Version", style) && bInit)
{
Viveport.Core.Logger.Log("Version: " + Api.Version());
}
if (GUI.Button(new Rect(nXStart + 3 * (nWidth + 10), nYStart, nWidth, nHeight), "QueryRunMode", style) && bInit)
{
Api.QueryRuntimeMode(QueryRunTimeHandler);
}
if (GUI.Button(new Rect(nXStart + 4 * (nWidth + 10), nYStart, nWidth, nHeight), "StatIsReady", style) && bInit)
{
UserStats.IsReady(IsReadyHandler);
}
if (GUI.Button(new Rect(nXStart + 6 * (nWidth + 10), nYStart, nWidth, nHeight), "DRM", style))
{
if (bInit)
{
Api.GetLicense(new MyLicenseChecker(), APP_ID, APP_KEY);
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
if (GUI.Button(new Rect(nXStart + 5 * (nWidth + 10), nYStart, nWidth, nHeight), "ArcadeIsReady", style) && bInit)
{
ArcadeLeaderboard.IsReady(IsArcadeLeaderboardReadyHandler);
}
if (bInit && bIsReady)
{
GUI.contentColor = Color.white;
}
else
{
GUI.contentColor = Color.grey;
}
if (GUI.Button(new Rect(nXStart + 7 * (nWidth + 10), nYStart, nWidth, nHeight), "UserProfileIsReady", gUIStyle))
{
if (bInit && bIsReady)
{
User.IsReady(UserProfileIsReadyHandler);
}
else
{
Log("Please make sure init & isReady are successful.");
}
}
if (GUI.Button(new Rect(nXStart + 8 * (nWidth + 10), nYStart, nWidth, nHeight), "UserProfile", style))
{
if (bInit && bIsReady && bUserProfileIsReady)
{
Log("UserId: " + User.GetUserId());
Log("userName: " + User.GetUserName());
Log("userAvatarUrl: " + User.GetUserAvatarUrl());
}
else
{
Log("Please make sure init & isReady are successful.");
}
}
stringToEdit = GUI.TextField(new Rect(10f, nWidth + 10, 120f, 20f), stringToEdit, 50);
StatsCount = GUI.TextField(new Rect(130f, nWidth + 10, 220f, 20f), StatsCount, 50);
if (GUI.Button(new Rect(nXStart, nYStart + nWidth + 10, nWidth, nHeight), "DownloadStat", style))
{
if (bInit && bIsReady)
{
UserStats.DownloadStats(DownloadStatsHandler);
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
if (GUI.Button(new Rect(nXStart + (nWidth + 10), nYStart + nWidth + 10, nWidth, nHeight), "UploadStat", style))
{
if (bInit && bIsReady)
{
UserStats.UploadStats(UploadStatsHandler);
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
if (GUI.Button(new Rect(nXStart + 2 * (nWidth + 10), nYStart + nWidth + 10, nWidth, nHeight), "GetStat", style))
{
if (bInit && bIsReady)
{
nResult = UserStats.GetStat(stringToEdit, nInitValue);
Viveport.Core.Logger.Log("Get " + stringToEdit + " stat name as => " + nResult);
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
if (GUI.Button(new Rect(nXStart + 3 * (nWidth + 10), nYStart + nWidth + 10, nWidth, nHeight), "SetStat", style))
{
if (bInit && bIsReady)
{
Viveport.Core.Logger.Log("MaxStep is => " + int.Parse(StatsCount));
nResult = int.Parse(StatsCount);
UserStats.SetStat(stringToEdit, nResult);
Viveport.Core.Logger.Log("Set" + stringToEdit + " stat name as =>" + nResult);
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
achivToEdit = GUI.TextField(new Rect(10f, 2 * nWidth + 15, 120f, 20f), achivToEdit, 50);
if (GUI.Button(new Rect(nXStart, nYStart + 2 * nWidth + 10, nWidth, nHeight), "GetAchieve", style))
{
if (bInit && bIsReady)
{
bool flag = false;
flag = UserStats.GetAchievement(achivToEdit);
Viveport.Core.Logger.Log("Get achievement => " + achivToEdit + " , and value is => " + flag);
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
if (GUI.Button(new Rect(nXStart + nWidth + 10, nYStart + 2 * nWidth + 10, nWidth, nHeight), "SetAchieve", style))
{
if (bInit && bIsReady)
{
UserStats.SetAchievement(achivToEdit);
Viveport.Core.Logger.Log("Set achievement => " + achivToEdit);
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
if (GUI.Button(new Rect(nXStart + 2 * (nWidth + 10), nYStart + 2 * nWidth + 10, nWidth, nHeight), "ClearAchieve", style))
{
if (bInit && bIsReady)
{
UserStats.ClearAchievement(achivToEdit);
Viveport.Core.Logger.Log("Clear achievement => " + achivToEdit);
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
if (GUI.Button(new Rect(nXStart + 3 * (nWidth + 10), nYStart + 2 * nWidth + 10, nWidth, nHeight), "Achieve&Time", style))
{
if (bInit && bIsReady)
{
int num = 0;
num = UserStats.GetAchievementUnlockTime(achivToEdit);
Viveport.Core.Logger.Log("The achievement's unlock time is =>" + num);
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
leaderboardToEdit = GUI.TextField(new Rect(10f, 3 * nWidth + 20, 160f, 20f), leaderboardToEdit, 150);
if (GUI.Button(new Rect(nXStart, nYStart + 3 * nWidth + 20, nWidth, nHeight), "DL Around", style))
{
if (bInit && bIsReady)
{
UserStats.DownloadLeaderboardScores(DownloadLeaderboardHandler, leaderboardToEdit, UserStats.LeaderBoardRequestType.GlobalDataAroundUser, UserStats.LeaderBoardTimeRange.AllTime, -5, 5);
Viveport.Core.Logger.Log("DownloadLeaderboardScores");
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
if (GUI.Button(new Rect(nXStart + (nWidth + 10), nYStart + 3 * nWidth + 20, nWidth, nHeight), "DL not Around", style))
{
if (bInit && bIsReady)
{
UserStats.DownloadLeaderboardScores(DownloadLeaderboardHandler, leaderboardToEdit, UserStats.LeaderBoardRequestType.GlobalData, UserStats.LeaderBoardTimeRange.AllTime, 0, 10);
Viveport.Core.Logger.Log("DownloadLeaderboardScores");
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
leaderboardScore = GUI.TextField(new Rect(170f, 3 * nWidth + 20, 160f, 20f), leaderboardScore, 50);
if (GUI.Button(new Rect(nXStart + 2 * (nWidth + 10), nYStart + 3 * nWidth + 20, nWidth, nHeight), "Upload LB", style))
{
if (bInit && bIsReady)
{
UserStats.UploadLeaderboardScore(UploadLeaderboardScoreHandler, leaderboardToEdit, int.Parse(leaderboardScore));
Viveport.Core.Logger.Log("UploadLeaderboardScore");
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
if (GUI.Button(new Rect(nXStart + 3 * (nWidth + 10), nYStart + 3 * nWidth + 20, nWidth, nHeight), "Get LB count", style))
{
if (bInit && bIsReady)
{
nResult = UserStats.GetLeaderboardScoreCount();
Viveport.Core.Logger.Log("GetLeaderboardScoreCount=> " + nResult);
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
if (GUI.Button(new Rect(nXStart + 4 * (nWidth + 10), nYStart + 3 * nWidth + 20, nWidth, nHeight), "Get LB Score", style))
{
if (bInit && bIsReady)
{
int leaderboardScoreCount = UserStats.GetLeaderboardScoreCount();
Viveport.Core.Logger.Log("GetLeaderboardScoreCount => " + leaderboardScoreCount);
for (int i = 0; i < leaderboardScoreCount; i++)
{
Leaderboard leaderboard = UserStats.GetLeaderboardScore(i);
Viveport.Core.Logger.Log("UserName = " + leaderboard.UserName + ", Score = " + leaderboard.Score + ", Rank = " + leaderboard.Rank);
}
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
if (GUI.Button(new Rect(nXStart + 5 * (nWidth + 10), nYStart + 3 * nWidth + 20, nWidth, nHeight), "Get Sort Method", style))
{
if (bInit && bIsReady)
{
int leaderboardSortMethod = (int)UserStats.GetLeaderboardSortMethod();
Viveport.Core.Logger.Log("GetLeaderboardSortMethod=> " + leaderboardSortMethod);
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
if (GUI.Button(new Rect(nXStart + 6 * (nWidth + 10), nYStart + 3 * nWidth + 20, nWidth, nHeight), "Get Disp Type", style))
{
if (bInit && bIsReady)
{
int leaderboardDisplayType = (int)UserStats.GetLeaderboardDisplayType();
Viveport.Core.Logger.Log("GetLeaderboardDisplayType=> " + leaderboardDisplayType);
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
if (bInit && bArcadeIsReady)
{
GUI.contentColor = Color.white;
}
else
{
GUI.contentColor = Color.grey;
}
leaderboardToEdit = GUI.TextField(new Rect(10f, 4 * nWidth + 20, 160f, 20f), leaderboardToEdit, 150);
if (GUI.Button(new Rect(nXStart, nYStart + 4 * nWidth + 20, nWidth, nHeight), "DL Arca LB", style))
{
if (bInit && bArcadeIsReady)
{
ArcadeLeaderboard.DownloadLeaderboardScores(DownloadLeaderboardHandler, leaderboardToEdit, ArcadeLeaderboard.LeaderboardTimeRange.AllTime, 10);
Viveport.Core.Logger.Log("DownloadLeaderboardScores");
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
leaderboardUserName = GUI.TextField(new Rect(170f, 4 * nWidth + 20, 160f, 20f), leaderboardUserName, 150);
leaderboardScore = GUI.TextField(new Rect(330f, 4 * nWidth + 20, 160f, 20f), leaderboardScore, 50);
if (GUI.Button(new Rect(nXStart + (nWidth + 10), nYStart + 4 * nWidth + 20, nWidth, nHeight), "UL Arca LB", style))
{
if (bInit && bArcadeIsReady)
{
ArcadeLeaderboard.UploadLeaderboardScore(UploadLeaderboardScoreHandler, leaderboardToEdit, leaderboardUserName, int.Parse(leaderboardScore));
Viveport.Core.Logger.Log("UploadLeaderboardScore");
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
if (GUI.Button(new Rect(nXStart + 2 * (nWidth + 10), nYStart + 4 * nWidth + 20, nWidth, nHeight), "Get Arca Count", style))
{
if (bInit && bArcadeIsReady)
{
nResult = ArcadeLeaderboard.GetLeaderboardScoreCount();
Viveport.Core.Logger.Log("GetLeaderboardScoreCount=> " + nResult);
}
else
{
Viveport.Core.Logger.Log("Please make sure init & Arcade isReady are successful.");
}
}
if (GUI.Button(new Rect(nXStart + 3 * (nWidth + 10), nYStart + 4 * nWidth + 20, nWidth, nHeight), "Get Arca Score", style))
{
if (bInit && bArcadeIsReady)
{
int leaderboardScoreCount2 = ArcadeLeaderboard.GetLeaderboardScoreCount();
Viveport.Core.Logger.Log("GetLeaderboardScoreCount => " + leaderboardScoreCount2);
for (int j = 0; j < leaderboardScoreCount2; j++)
{
Leaderboard leaderboard2 = ArcadeLeaderboard.GetLeaderboardScore(j);
Viveport.Core.Logger.Log("UserName = " + leaderboard2.UserName + ", Score = " + leaderboard2.Score + ", Rank = " + leaderboard2.Rank);
}
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
if (GUI.Button(new Rect(nXStart + 4 * (nWidth + 10), nYStart + 4 * nWidth + 20, nWidth, nHeight), "Get AC UScore", style))
{
if (bInit && bArcadeIsReady)
{
int leaderboardUserScore = ArcadeLeaderboard.GetLeaderboardUserScore();
Viveport.Core.Logger.Log("GetLeaderboardUserScore=> " + leaderboardUserScore);
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
if (GUI.Button(new Rect(nXStart + 5 * (nWidth + 10), nYStart + 4 * nWidth + 20, nWidth, nHeight), "Get AC URank", style))
{
if (bInit && bArcadeIsReady)
{
int leaderboardUserRank = ArcadeLeaderboard.GetLeaderboardUserRank();
Viveport.Core.Logger.Log("GetLeaderboardUserRank=> " + leaderboardUserRank);
}
else
{
Viveport.Core.Logger.Log("Please make sure init & isReady are successful.");
}
}
if (bInit)
{
GUI.contentColor = Color.white;
}
else
{
GUI.contentColor = Color.grey;
}
if (GUI.Button(new Rect(nXStart, nYStart + 5 * nWidth + 20, nWidth, nHeight), "TokenIsReady", style) && bInit)
{
Token.IsReady(IsTokenReadyHandler);
}
if (bInit && bTokenIsReady)
{
GUI.contentColor = Color.white;
}
else
{
GUI.contentColor = Color.grey;
}
if (GUI.Button(new Rect(nXStart + (nWidth + 10), nYStart + 5 * nWidth + 20, nWidth, nHeight), "SessionToken", style))
{
if (bInit && bTokenIsReady)
{
Token.GetSessionToken(GetSessionTokenHandler);
}
else
{
Viveport.Core.Logger.Log("Please make sure init & tokenIsReady are successful.");
}
}
}
private static void InitStatusHandler(int nResult)
{
if (nResult == 0)
{
bInit = true;
bIsReady = false;
bArcadeIsReady = false;
Viveport.Core.Logger.Log("InitStatusHandler is successful");
}
else
{
bInit = false;
Viveport.Core.Logger.Log("InitStatusHandler error : " + nResult);
}
}
private static void IsReadyHandler(int nResult)
{
if (nResult == 0)
{
bIsReady = true;
bArcadeIsReady = false;
Viveport.Core.Logger.Log("IsReadyHandler is successful");
}
else
{
bIsReady = false;
Viveport.Core.Logger.Log("IsReadyHandler error: " + nResult);
}
}
private static void IsTokenReadyHandler(int nResult)
{
if (nResult == 0)
{
bTokenIsReady = true;
Viveport.Core.Logger.Log("IsTokenReadyHandler is successful");
}
else
{
bTokenIsReady = false;
Viveport.Core.Logger.Log("IsTokenReadyHandler error: " + nResult);
}
}
private static void UserProfileIsReadyHandler(int nResult)
{
if (nResult == 0)
{
bUserProfileIsReady = true;
Log("UserProfileIsReadyHandler is successful");
}
else
{
bUserProfileIsReady = false;
Log("UserProfileIsReadyHandler error: " + nResult);
}
}
private static void GetSessionTokenHandler(int nResult, string message)
{
if (nResult == 0)
{
Viveport.Core.Logger.Log("GetSessionTokenHandler is successful, token:" + message);
}
else if (message.Length != 0)
{
Viveport.Core.Logger.Log("GetSessionTokenHandler error: " + nResult + ", message:" + message);
}
else
{
Viveport.Core.Logger.Log("GetSessionTokenHandler error: " + nResult);
}
}
private static void QueryRunTimeHandler(int nResult, int nMode)
{
if (nResult == 0)
{
Viveport.Core.Logger.Log("QueryRunTimeHandler is successful" + nResult + "Running mode is " + nMode);
}
else
{
Viveport.Core.Logger.Log("QueryRunTimeHandler error: " + nResult);
}
}
private static void IsArcadeLeaderboardReadyHandler(int nResult)
{
if (nResult == 0)
{
bArcadeIsReady = true;
bIsReady = false;
Viveport.Core.Logger.Log("IsArcadeLeaderboardReadyHandler is successful");
}
else
{
bArcadeIsReady = false;
Viveport.Core.Logger.Log("IsArcadeLeaderboardReadyHandler error: " + nResult);
}
}
private static void ShutdownHandler(int nResult)
{
if (nResult == 0)
{
bInit = false;
bIsReady = false;
Viveport.Core.Logger.Log("ShutdownHandler is successful");
}
else
{
Viveport.Core.Logger.Log("ShutdownHandler error: " + nResult);
}
}
private static void DownloadStatsHandler(int nResult)
{
if (nResult == 0)
{
Viveport.Core.Logger.Log("DownloadStatsHandler is successful ");
}
else
{
Viveport.Core.Logger.Log("DownloadStatsHandler error: " + nResult);
}
}
private static void UploadStatsHandler(int nResult)
{
if (nResult == 0)
{
Viveport.Core.Logger.Log("UploadStatsHandler is successful");
}
else
{
Viveport.Core.Logger.Log("UploadStatsHandler error: " + nResult);
}
}
private static void DownloadLeaderboardHandler(int nResult)
{
if (nResult == 0)
{
Viveport.Core.Logger.Log("DownloadLeaderboardHandler is successful");
}
else
{
Viveport.Core.Logger.Log("DownloadLeaderboardHandler error: " + nResult);
}
}
private static void UploadLeaderboardScoreHandler(int nResult)
{
if (nResult == 0)
{
Viveport.Core.Logger.Log("UploadLeaderboardScoreHandler is successful.");
}
else
{
Viveport.Core.Logger.Log("UploadLeaderboardScoreHandler error : " + nResult);
}
}
}