namespace Oculus.Platform.Samples.SimplePlatformSample
|
|
{
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using Oculus.Platform;
|
|
using Oculus.Platform.Models;
|
|
|
|
public class DataEntry : MonoBehaviour
|
|
{
|
|
|
|
public Text dataOutput;
|
|
|
|
void Start()
|
|
{
|
|
Core.Initialize();
|
|
checkEntitlement();
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
string currentText = GetComponent<InputField>().text;
|
|
|
|
if (Input.GetKey(KeyCode.Return))
|
|
{
|
|
if (currentText != "")
|
|
{
|
|
SubmitCommand(currentText);
|
|
}
|
|
|
|
GetComponent<InputField>().text = "";
|
|
}
|
|
|
|
// Handle all messages being returned
|
|
Request.RunCallbacks();
|
|
}
|
|
|
|
private void SubmitCommand(string command)
|
|
{
|
|
string[] commandParams = command.Split(' ');
|
|
|
|
if (commandParams.Length > 0)
|
|
{
|
|
switch (commandParams[0])
|
|
{
|
|
case "p":
|
|
if (commandParams.Length > 2)
|
|
{
|
|
createAndJoinPrivateRoom(commandParams[1], commandParams[2]);
|
|
}
|
|
break;
|
|
case "c":
|
|
getCurrentRoom();
|
|
break;
|
|
case "g":
|
|
if (commandParams.Length > 1)
|
|
{
|
|
getRoom(commandParams[1]);
|
|
}
|
|
break;
|
|
case "j":
|
|
if (commandParams.Length > 1)
|
|
{
|
|
joinRoom(commandParams[1]);
|
|
}
|
|
break;
|
|
case "l":
|
|
if (commandParams.Length > 1)
|
|
{
|
|
leaveRoom(commandParams[1]);
|
|
}
|
|
break;
|
|
case "k":
|
|
if (commandParams.Length > 2)
|
|
{
|
|
kickUser(commandParams[1], commandParams[2]);
|
|
}
|
|
break;
|
|
case "m":
|
|
getLoggedInUser();
|
|
break;
|
|
case "u":
|
|
if (commandParams.Length > 1)
|
|
{
|
|
getUser(commandParams[1]);
|
|
}
|
|
break;
|
|
case "d":
|
|
getLoggedInFriends();
|
|
break;
|
|
case "i":
|
|
getInvitableUsers();
|
|
break;
|
|
case "o":
|
|
if (commandParams.Length > 2)
|
|
{
|
|
inviteUser(commandParams[1], commandParams[2]);
|
|
}
|
|
break;
|
|
case "s":
|
|
if (commandParams.Length > 2)
|
|
{
|
|
setRoomDescription(commandParams[1], commandParams[2]);
|
|
}
|
|
break;
|
|
case "w":
|
|
if (commandParams.Length > 3)
|
|
{
|
|
updateRoomDataStore(commandParams[1], commandParams[2], commandParams[3]);
|
|
}
|
|
break;
|
|
case "n":
|
|
getUserNonce();
|
|
break;
|
|
case "e":
|
|
checkEntitlement();
|
|
break;
|
|
case "a":
|
|
if (commandParams.Length > 1)
|
|
{
|
|
getAchievementDefinition(commandParams[1]);
|
|
}
|
|
break;
|
|
case "b":
|
|
if (commandParams.Length > 1)
|
|
{
|
|
getAchievementProgress(commandParams[1]);
|
|
}
|
|
break;
|
|
case "3":
|
|
if (commandParams.Length > 1)
|
|
{
|
|
unlockAchievement(commandParams[1]);
|
|
}
|
|
break;
|
|
case "4":
|
|
if (commandParams.Length > 2)
|
|
{
|
|
addCountAchievement(commandParams[1], commandParams[2]);
|
|
}
|
|
break;
|
|
case "5":
|
|
if (commandParams.Length > 2)
|
|
{
|
|
addFieldsAchievement(commandParams[1], commandParams[2]);
|
|
}
|
|
break;
|
|
case "1":
|
|
if (commandParams.Length > 2)
|
|
{
|
|
writeLeaderboardEntry(commandParams[1], commandParams[2]);
|
|
}
|
|
break;
|
|
case "2":
|
|
if (commandParams.Length > 1)
|
|
{
|
|
getLeaderboardEntries(commandParams[1]);
|
|
}
|
|
break;
|
|
default:
|
|
printOutputLine("Invalid Command");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void getLeaderboardEntries(string leaderboardName)
|
|
{
|
|
Leaderboards.GetEntries(leaderboardName, 10, LeaderboardFilterType.None, LeaderboardStartAt.Top).OnComplete(leaderboardGetCallback);
|
|
}
|
|
|
|
void writeLeaderboardEntry(string leaderboardName, string value)
|
|
{
|
|
byte[] extraData = new byte[] { 0x54, 0x65, 0x73, 0x74 };
|
|
|
|
Leaderboards.WriteEntry(leaderboardName, Convert.ToInt32(value), extraData, false).OnComplete(leaderboardWriteCallback);
|
|
}
|
|
|
|
void addFieldsAchievement(string achievementName, string fields)
|
|
{
|
|
Achievements.AddFields(achievementName, fields).OnComplete(achievementFieldsCallback);
|
|
}
|
|
|
|
void addCountAchievement(string achievementName, string count)
|
|
{
|
|
Achievements.AddCount(achievementName, Convert.ToUInt64(count)).OnComplete(achievementCountCallback);
|
|
}
|
|
|
|
void unlockAchievement(string achievementName)
|
|
{
|
|
Achievements.Unlock(achievementName).OnComplete(achievementUnlockCallback);
|
|
}
|
|
|
|
void getAchievementProgress(string achievementName)
|
|
{
|
|
string[] Names = new string[1];
|
|
Names[0] = achievementName;
|
|
|
|
Achievements.GetProgressByName(Names).OnComplete(achievementProgressCallback);
|
|
}
|
|
|
|
void getAchievementDefinition(string achievementName)
|
|
{
|
|
string[] Names = new string[1];
|
|
Names[0] = achievementName;
|
|
|
|
Achievements.GetDefinitionsByName(Names).OnComplete(achievementDefinitionCallback);
|
|
}
|
|
|
|
void checkEntitlement()
|
|
{
|
|
Entitlements.IsUserEntitledToApplication().OnComplete(getEntitlementCallback);
|
|
}
|
|
|
|
void getUserNonce()
|
|
{
|
|
printOutputLine("Trying to get user nonce");
|
|
|
|
Users.GetUserProof().OnComplete(userProofCallback);
|
|
}
|
|
|
|
void createAndJoinPrivateRoom(string joinPolicy, string maxUsers)
|
|
{
|
|
printOutputLine("Trying to create and join private room");
|
|
Rooms.CreateAndJoinPrivate((RoomJoinPolicy)Convert.ToUInt32(joinPolicy), Convert.ToUInt32(maxUsers)).OnComplete(createAndJoinPrivateRoomCallback);
|
|
}
|
|
|
|
void getCurrentRoom()
|
|
{
|
|
printOutputLine("Trying to get current room");
|
|
Rooms.GetCurrent().OnComplete(getCurrentRoomCallback);
|
|
}
|
|
|
|
void getRoom(string roomID)
|
|
{
|
|
printOutputLine("Trying to get room " + roomID);
|
|
Rooms.Get(Convert.ToUInt64(roomID)).OnComplete(getCurrentRoomCallback);
|
|
}
|
|
|
|
void joinRoom(string roomID)
|
|
{
|
|
printOutputLine("Trying to join room " + roomID);
|
|
Rooms.Join(Convert.ToUInt64(roomID), true).OnComplete(joinRoomCallback);
|
|
}
|
|
|
|
void leaveRoom(string roomID)
|
|
{
|
|
printOutputLine("Trying to leave room " + roomID);
|
|
Rooms.Leave(Convert.ToUInt64(roomID)).OnComplete(leaveRoomCallback);
|
|
}
|
|
|
|
void kickUser(string roomID, string userID)
|
|
{
|
|
printOutputLine("Trying to kick user " + userID + " from room " + roomID);
|
|
Rooms.KickUser(Convert.ToUInt64(roomID), Convert.ToUInt64(userID), 10 /*kick duration */).OnComplete(getCurrentRoomCallback);
|
|
}
|
|
|
|
void getLoggedInUser()
|
|
{
|
|
printOutputLine("Trying to get currently logged in user");
|
|
Users.GetLoggedInUser().OnComplete(getUserCallback);
|
|
}
|
|
|
|
void getUser(string userID)
|
|
{
|
|
printOutputLine("Trying to get user " + userID);
|
|
Users.Get(Convert.ToUInt64(userID)).OnComplete(getUserCallback);
|
|
}
|
|
|
|
void getLoggedInFriends()
|
|
{
|
|
printOutputLine("Trying to get friends of logged in user");
|
|
Users.GetLoggedInUserFriends().OnComplete(getFriendsCallback);
|
|
}
|
|
|
|
void getInvitableUsers()
|
|
{
|
|
printOutputLine("Trying to get invitable users");
|
|
Rooms.GetInvitableUsers().OnComplete(getInvitableUsersCallback);
|
|
}
|
|
|
|
void inviteUser(string roomID, string inviteToken)
|
|
{
|
|
printOutputLine("Trying to invite token " + inviteToken + " to room " + roomID);
|
|
Rooms.InviteUser(Convert.ToUInt64(roomID), inviteToken).OnComplete(inviteUserCallback);
|
|
}
|
|
|
|
void setRoomDescription(string roomID, string description)
|
|
{
|
|
printOutputLine("Trying to set description " + description + " to room " + roomID);
|
|
Rooms.SetDescription(Convert.ToUInt64(roomID), description).OnComplete(getCurrentRoomCallback);
|
|
}
|
|
|
|
void updateRoomDataStore(string roomID, string key, string value)
|
|
{
|
|
Dictionary<string, string> kvPairs = new Dictionary<string, string>();
|
|
kvPairs.Add(key, value);
|
|
|
|
printOutputLine("Trying to set k=" + key + " v=" + value + " for room " + roomID);
|
|
Rooms.UpdateDataStore(Convert.ToUInt64(roomID), kvPairs).OnComplete(getCurrentRoomCallback);
|
|
}
|
|
|
|
void printOutputLine(String newLine)
|
|
{
|
|
dataOutput.text = "> " + newLine + System.Environment.NewLine + dataOutput.text;
|
|
}
|
|
|
|
void outputRoomDetails(Room room)
|
|
{
|
|
printOutputLine("Room ID: " + room.ID + ", AppID: " + room.ApplicationID + ", Description: " + room.Description);
|
|
int numUsers = (room.UsersOptional != null) ? room.UsersOptional.Count : 0;
|
|
printOutputLine("MaxUsers: " + room.MaxUsers.ToString() + " Users in room: " + numUsers);
|
|
if (room.OwnerOptional != null)
|
|
{
|
|
printOutputLine("Room owner: " + room.OwnerOptional.ID + " " + room.OwnerOptional.OculusID);
|
|
}
|
|
printOutputLine("Join Policy: " + room.JoinPolicy.ToString());
|
|
printOutputLine("Room Type: " + room.Type.ToString());
|
|
|
|
Message.MessageType.Matchmaking_Enqueue.GetHashCode();
|
|
|
|
}
|
|
|
|
void outputUserArray(UserList users)
|
|
{
|
|
foreach (User user in users)
|
|
{
|
|
printOutputLine("User: " + user.ID + " " + user.OculusID + " " + user.Presence + " " + user.InviteToken);
|
|
}
|
|
}
|
|
|
|
|
|
// Callbacks
|
|
void userProofCallback(Message<UserProof> msg)
|
|
{
|
|
if (!msg.IsError)
|
|
{
|
|
printOutputLine("Received user nonce generation success");
|
|
UserProof userNonce = msg.Data;
|
|
printOutputLine("Nonce: " + userNonce.Value);
|
|
}
|
|
else
|
|
{
|
|
printOutputLine("Received user nonce generation error");
|
|
Error error = msg.GetError();
|
|
printOutputLine("Error: " + error.Message);
|
|
}
|
|
|
|
}
|
|
|
|
void getEntitlementCallback(Message msg)
|
|
{
|
|
if (!msg.IsError)
|
|
{
|
|
printOutputLine("You are entitled to use this app.");
|
|
}
|
|
else
|
|
{
|
|
printOutputLine("You are NOT entitled to use this app.");
|
|
}
|
|
}
|
|
|
|
void leaderboardGetCallback(Message<LeaderboardEntryList> msg)
|
|
{
|
|
if (!msg.IsError)
|
|
{
|
|
printOutputLine("Leaderboard entry get success.");
|
|
var entries = msg.Data;
|
|
|
|
foreach (var entry in entries)
|
|
{
|
|
printOutputLine(entry.Rank + ". " + entry.User.OculusID + " " + entry.Score + " " + entry.Timestamp);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
printOutputLine("Received leaderboard get error");
|
|
Error error = msg.GetError();
|
|
printOutputLine("Error: " + error.Message);
|
|
}
|
|
}
|
|
|
|
void leaderboardWriteCallback(Message msg)
|
|
{
|
|
if (!msg.IsError)
|
|
{
|
|
printOutputLine("Leaderboard entry write success.");
|
|
var didUpdate = (Message<bool>)msg;
|
|
|
|
if (didUpdate.Data)
|
|
{
|
|
printOutputLine("Score updated.");
|
|
}
|
|
else
|
|
{
|
|
printOutputLine("Score NOT updated.");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
printOutputLine("Received leaderboard write error");
|
|
Error error = msg.GetError();
|
|
printOutputLine("Error: " + error.Message);
|
|
}
|
|
}
|
|
|
|
void achievementFieldsCallback(Message msg)
|
|
{
|
|
if (!msg.IsError)
|
|
{
|
|
printOutputLine("Achievement fields added.");
|
|
}
|
|
else
|
|
{
|
|
printOutputLine("Received achievement fields add error");
|
|
Error error = msg.GetError();
|
|
printOutputLine("Error: " + error.Message);
|
|
}
|
|
}
|
|
|
|
void achievementCountCallback(Message msg)
|
|
{
|
|
if (!msg.IsError)
|
|
{
|
|
printOutputLine("Achievement count added.");
|
|
}
|
|
else
|
|
{
|
|
printOutputLine("Received achievement count add error");
|
|
Error error = msg.GetError();
|
|
printOutputLine("Error: " + error.Message);
|
|
}
|
|
}
|
|
|
|
void achievementUnlockCallback(Message msg)
|
|
{
|
|
if (!msg.IsError)
|
|
{
|
|
printOutputLine("Achievement unlocked");
|
|
}
|
|
else
|
|
{
|
|
printOutputLine("Received achievement unlock error");
|
|
Error error = msg.GetError();
|
|
printOutputLine("Error: " + error.Message);
|
|
}
|
|
}
|
|
|
|
void achievementProgressCallback(Message<AchievementProgressList> msg)
|
|
{
|
|
if (!msg.IsError)
|
|
{
|
|
printOutputLine("Received achievement progress success");
|
|
AchievementProgressList progressList = msg.GetAchievementProgressList();
|
|
|
|
foreach (var progress in progressList)
|
|
{
|
|
if (progress.IsUnlocked)
|
|
{
|
|
printOutputLine("Achievement Unlocked");
|
|
}
|
|
else
|
|
{
|
|
printOutputLine("Achievement Locked");
|
|
}
|
|
printOutputLine("Current Bitfield: " + progress.Bitfield.ToString());
|
|
printOutputLine("Current Count: " + progress.Count.ToString());
|
|
}
|
|
}
|
|
else
|
|
{
|
|
printOutputLine("Received achievement progress error");
|
|
Error error = msg.GetError();
|
|
printOutputLine("Error: " + error.Message);
|
|
}
|
|
}
|
|
|
|
void achievementDefinitionCallback(Message<AchievementDefinitionList> msg)
|
|
{
|
|
if (!msg.IsError)
|
|
{
|
|
printOutputLine("Received achievement definitions success");
|
|
AchievementDefinitionList definitionList = msg.GetAchievementDefinitions();
|
|
|
|
foreach (var definition in definitionList)
|
|
{
|
|
switch (definition.Type)
|
|
{
|
|
case AchievementType.Simple:
|
|
printOutputLine("Achievement Type: Simple");
|
|
break;
|
|
case AchievementType.Bitfield:
|
|
printOutputLine("Achievement Type: Bitfield");
|
|
printOutputLine("Bitfield Length: " + definition.BitfieldLength.ToString());
|
|
printOutputLine("Target: " + definition.Target.ToString());
|
|
break;
|
|
case AchievementType.Count:
|
|
printOutputLine("Achievement Type: Count");
|
|
printOutputLine("Target: " + definition.Target.ToString());
|
|
break;
|
|
case AchievementType.Unknown:
|
|
default:
|
|
printOutputLine("Achievement Type: Unknown");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
printOutputLine("Received achievement definitions error");
|
|
Error error = msg.GetError();
|
|
printOutputLine("Error: " + error.Message);
|
|
}
|
|
}
|
|
|
|
void createAndJoinPrivateRoomCallback(Message<Room> msg)
|
|
{
|
|
if (!msg.IsError)
|
|
{
|
|
printOutputLine("Received create and join room success");
|
|
outputRoomDetails(msg.Data);
|
|
}
|
|
else
|
|
{
|
|
printOutputLine("Received create and join room error");
|
|
Error error = msg.GetError();
|
|
printOutputLine("Error: " + error.Message);
|
|
}
|
|
}
|
|
|
|
void getCurrentRoomCallback(Message<Room> msg)
|
|
{
|
|
if (!msg.IsError)
|
|
{
|
|
printOutputLine("Received get room success");
|
|
outputRoomDetails(msg.Data);
|
|
}
|
|
else
|
|
{
|
|
printOutputLine("Received get room error");
|
|
Error error = msg.GetError();
|
|
printOutputLine("Error: " + error.Message);
|
|
}
|
|
}
|
|
|
|
void joinRoomCallback(Message<Room> msg)
|
|
{
|
|
if (!msg.IsError)
|
|
{
|
|
printOutputLine("Received join room success");
|
|
outputRoomDetails(msg.Data);
|
|
}
|
|
else
|
|
{
|
|
printOutputLine("Received join room error");
|
|
Error error = msg.GetError();
|
|
printOutputLine("Error: " + error.Message);
|
|
}
|
|
}
|
|
|
|
void leaveRoomCallback(Message<Room> msg)
|
|
{
|
|
if (!msg.IsError)
|
|
{
|
|
printOutputLine("Received leave room success");
|
|
outputRoomDetails(msg.Data);
|
|
}
|
|
else
|
|
{
|
|
printOutputLine("Received leave room error");
|
|
Error error = msg.GetError();
|
|
printOutputLine("Error: " + error.Message);
|
|
}
|
|
}
|
|
|
|
void getUserCallback(Message<User> msg)
|
|
{
|
|
if (!msg.IsError)
|
|
{
|
|
printOutputLine("Received get user success");
|
|
User user = msg.Data;
|
|
printOutputLine("User: " + user.ID + " " + user.OculusID + " " + user.Presence + " " + user.InviteToken);
|
|
}
|
|
else
|
|
{
|
|
printOutputLine("Received get user error");
|
|
Error error = msg.GetError();
|
|
printOutputLine("Error: " + error.Message);
|
|
}
|
|
}
|
|
|
|
void getFriendsCallback(Message<UserList> msg)
|
|
{
|
|
if (!msg.IsError)
|
|
{
|
|
printOutputLine("Received get friends success");
|
|
UserList users = msg.Data;
|
|
outputUserArray(users);
|
|
}
|
|
else
|
|
{
|
|
printOutputLine("Received get friends error");
|
|
Error error = msg.GetError();
|
|
printOutputLine("Error: " + error.Message);
|
|
}
|
|
}
|
|
|
|
void getInvitableUsersCallback(Message<UserList> msg)
|
|
{
|
|
if (!msg.IsError)
|
|
{
|
|
printOutputLine("Received get invitable users success");
|
|
UserList users = msg.Data;
|
|
outputUserArray(users);
|
|
}
|
|
else
|
|
{
|
|
printOutputLine("Received get invitable users error");
|
|
Error error = msg.GetError();
|
|
printOutputLine("Error: " + error.Message);
|
|
}
|
|
}
|
|
|
|
void inviteUserCallback(Message msg)
|
|
{
|
|
if (!msg.IsError)
|
|
{
|
|
printOutputLine("Received invite user success");
|
|
}
|
|
else
|
|
{
|
|
printOutputLine("Received invite user error");
|
|
Error error = msg.GetError();
|
|
printOutputLine("Error: " + error.Message);
|
|
}
|
|
}
|
|
}
|
|
}
|