Skip to content

Commit facd1d1

Browse files
authored
Merge pull request #141 from playroomkit/get-pr-token
feat: get playroom auth token
2 parents dafb01a + 2d556a7 commit facd1d1

11 files changed

Lines changed: 207 additions & 51 deletions

File tree

Assets/PlayroomKit/PlayroomKit.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,12 @@ public Player Me()
278278
return _playroomService.Me();
279279
}
280280

281+
public string GetPlayroomToken()
282+
{
283+
CheckPlayRoomInitialized();
284+
return _playroomService.GetPlayroomToken();
285+
}
286+
281287
private void UnsubscribeOnQuit()
282288
{
283289
_playroomService.UnsubscribeOnQuit();

Assets/PlayroomKit/modules/Headers.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,9 @@ private static extern void InsertCoinInternal(string options,
9595
private static extern void WaitForPlayerStateInternal(string playerID, string stateKey,
9696
Action<string> onStateSetCallback = null);
9797

98+
[DllImport("__Internal")]
99+
private static extern string GetPlayroomTokenInternal();
100+
98101
[DllImport("__Internal")]
99102
private static extern void SetPlayerStateByPlayerId(string playerID, string key, int value,
100103
bool reliable = false);
@@ -162,5 +165,6 @@ private static extern string GetPersistentDataInternal(string key,
162165
private static extern void ClearTurnsInternal(Action callback = null);
163166

164167
#endregion
168+
165169
}
166170
}

Assets/PlayroomKit/modules/Interfaces/IPlayroomBase.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using System.Collections.Generic;
33
using AOT;
44
using UnityEngine;
5-
using Playroom;
5+
66
namespace Playroom
77
{
88
public partial class PlayroomKit
@@ -54,6 +54,8 @@ public void InsertCoin(InitOptions options = null, Action onLaunchCallBack = nul
5454

5555
public void UnsubscribeOnQuit();
5656

57+
public string GetPlayroomToken();
58+
5759
#region TurnBased
5860

5961
public string GetChallengeId();
@@ -68,7 +70,6 @@ public void InsertCoin(InitOptions options = null, Action onLaunchCallBack = nul
6870

6971
#endregion
7072

71-
7273
#region Callbacks Wrappers
7374

7475
[MonoPInvokeCallback(typeof(Action<string>))]

Assets/PlayroomKit/modules/MockMode/BrowserMode/BrowserMockService.cs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -151,24 +151,24 @@ public void SetState<T>(string key, T value, bool reliable = false)
151151
public T GetState<T>(string key)
152152
{
153153
string result = _ubb.CallJs<string>("GetState", null, null, false, key);
154-
154+
155155
if (typeof(T).IsEnum)
156156
{
157157
try
158158
{
159159
result = result.Trim('\"', ' ');
160-
return (T)Enum.Parse(typeof(T), result, true);
160+
return (T)Enum.Parse(typeof(T), result, true);
161161
}
162162
catch (ArgumentException)
163163
{
164164
Debug.LogError($"Failed to parse '{result}' to Enum of type {typeof(T)}");
165-
return default;
165+
return default;
166166
}
167167
}
168-
168+
169169
return (T)Convert.ChangeType(result, typeof(T));
170170
}
171-
171+
172172
public void WaitForState(string stateKey, Action<string> onStateSetCallback = null)
173173
{
174174
string callbackKey = $"WaitForState_{stateKey}";
@@ -205,7 +205,7 @@ public void ResetPlayersStates(string[] keysToExclude = null, Action onStatesRes
205205
_ubb.CallJs("ResetPlayersStates", null, null, true, keysToExclude ?? Array.Empty<string>());
206206
onStatesReset?.Invoke();
207207
}
208-
208+
209209
#endregion
210210

211211
#region Persistent API
@@ -307,6 +307,12 @@ public static void MockOnPlayerJoinWrapper(string playerId)
307307
PlayroomKit.IPlayroomBase.OnPlayerJoinWrapperCallback(playerId);
308308
}
309309

310+
public string GetPlayroomToken()
311+
{
312+
DebugLogger.LogWarning("[MockMode] Playroom token is currently not supported in browser mock mode!");
313+
return string.Empty;
314+
}
315+
310316
#endregion
311317
}
312318
#endif

Assets/PlayroomKit/modules/MockMode/LocalPlayroomService.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,12 @@ public void ClearTurns(Action callback)
208208
DebugLogger.LogWarning("[MockMode] Turn based API is currently not supported in local mode!");
209209
}
210210

211+
public string GetPlayroomToken()
212+
{
213+
DebugLogger.LogWarning("[MockMode] Playroom token is currently not supported in local mode!");
214+
return default;
215+
}
216+
211217
#endregion
212218
}
213219
}

Assets/PlayroomKit/modules/Player/PlayerService.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ public void Kick(Action onKickCallBack = null)
192192
public void WaitForState(string stateKey, Action<string> onStateSetCallback = null)
193193
{
194194
onSetState = onStateSetCallback;
195+
_interop.WaitForPlayerStateWrapper(_id, stateKey, InvokeKickCallBack);
195196
}
196197

197198
[MonoPInvokeCallback(typeof(Action<string>))]

Assets/PlayroomKit/modules/PlayroomBuildService.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using SimpleJSON;
55
using System;
66
using System.Collections.Generic;
7-
using OpenQA.Selenium.DevTools.V96.Browser;
87

98
namespace Playroom
109
{
@@ -96,6 +95,11 @@ public void OnDisconnect(Action callback)
9695
_interop.OnDisconnectWrapper(OnDisconnectCallbackHandler);
9796
}
9897

98+
public string GetPlayroomToken()
99+
{
100+
return GetPlayroomTokenInternal();
101+
}
102+
99103
#endregion
100104

101105
#region Unsubscribers

Assets/PlayroomKit/src/index.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1072,6 +1072,28 @@ mergeInto(LibraryManager.library, {
10721072
//#endregion
10731073

10741074
//#region Utils
1075+
GetPlayroomTokenInternal: function () {
1076+
try {
1077+
var str = window.sessionStorage.getItem('pr_dcd_jwt');
1078+
1079+
if (!str) {
1080+
console.warn("[JSLIB]: No Playroom token found in session storage, it only works in discord.");
1081+
return null;
1082+
}
1083+
1084+
console.log("Playroom token: ", str);
1085+
1086+
var bufferSize = lengthBytesUTF8(str) + 1;
1087+
var buffer = _malloc(bufferSize);
1088+
stringToUTF8(str, buffer, bufferSize);
1089+
return buffer;
1090+
} catch (error) {
1091+
console.error(`[JSLIB:] Error getting Playroom token: ${str}`, error);
1092+
return null;
1093+
}
1094+
},
1095+
1096+
10751097
/**
10761098
* Converts a given string into a UTF-8 encoded string and stores it in memory.
10771099
*
Lines changed: 139 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,140 @@ NavMeshSettings:
123123
debug:
124124
m_Flags: 0
125125
m_NavMeshData: {fileID: 0}
126+
--- !u!1 &1547747
127+
GameObject:
128+
m_ObjectHideFlags: 0
129+
m_CorrespondingSourceObject: {fileID: 0}
130+
m_PrefabInstance: {fileID: 0}
131+
m_PrefabAsset: {fileID: 0}
132+
serializedVersion: 6
133+
m_Component:
134+
- component: {fileID: 1547748}
135+
- component: {fileID: 1547750}
136+
- component: {fileID: 1547749}
137+
m_Layer: 5
138+
m_Name: Text (TMP)
139+
m_TagString: Untagged
140+
m_Icon: {fileID: 0}
141+
m_NavMeshLayer: 0
142+
m_StaticEditorFlags: 0
143+
m_IsActive: 1
144+
--- !u!224 &1547748
145+
RectTransform:
146+
m_ObjectHideFlags: 0
147+
m_CorrespondingSourceObject: {fileID: 0}
148+
m_PrefabInstance: {fileID: 0}
149+
m_PrefabAsset: {fileID: 0}
150+
m_GameObject: {fileID: 1547747}
151+
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
152+
m_LocalPosition: {x: 0, y: 0, z: 0}
153+
m_LocalScale: {x: 1, y: 1, z: 1}
154+
m_ConstrainProportionsScale: 0
155+
m_Children: []
156+
m_Father: {fileID: 9039050244923637231}
157+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
158+
m_AnchorMin: {x: 0.5, y: 0.5}
159+
m_AnchorMax: {x: 0.5, y: 0.5}
160+
m_AnchoredPosition: {x: 0, y: 0}
161+
m_SizeDelta: {x: 200, y: 50}
162+
m_Pivot: {x: 0.5, y: 0.5}
163+
--- !u!114 &1547749
164+
MonoBehaviour:
165+
m_ObjectHideFlags: 0
166+
m_CorrespondingSourceObject: {fileID: 0}
167+
m_PrefabInstance: {fileID: 0}
168+
m_PrefabAsset: {fileID: 0}
169+
m_GameObject: {fileID: 1547747}
170+
m_Enabled: 1
171+
m_EditorHideFlags: 0
172+
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
173+
m_Name:
174+
m_EditorClassIdentifier:
175+
m_Material: {fileID: 0}
176+
m_Color: {r: 1, g: 1, b: 1, a: 1}
177+
m_RaycastTarget: 1
178+
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
179+
m_Maskable: 1
180+
m_OnCullStateChanged:
181+
m_PersistentCalls:
182+
m_Calls: []
183+
m_text: New Text
184+
m_isRightToLeft: 0
185+
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
186+
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
187+
m_fontSharedMaterials: []
188+
m_fontMaterial: {fileID: 0}
189+
m_fontMaterials: []
190+
m_fontColor32:
191+
serializedVersion: 2
192+
rgba: 4294967295
193+
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
194+
m_enableVertexGradient: 0
195+
m_colorMode: 3
196+
m_fontColorGradient:
197+
topLeft: {r: 1, g: 1, b: 1, a: 1}
198+
topRight: {r: 1, g: 1, b: 1, a: 1}
199+
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
200+
bottomRight: {r: 1, g: 1, b: 1, a: 1}
201+
m_fontColorGradientPreset: {fileID: 0}
202+
m_spriteAsset: {fileID: 0}
203+
m_tintAllSprites: 0
204+
m_StyleSheet: {fileID: 0}
205+
m_TextStyleHashCode: -1183493901
206+
m_overrideHtmlColors: 0
207+
m_faceColor:
208+
serializedVersion: 2
209+
rgba: 4294967295
210+
m_fontSize: 36
211+
m_fontSizeBase: 36
212+
m_fontWeight: 400
213+
m_enableAutoSizing: 0
214+
m_fontSizeMin: 18
215+
m_fontSizeMax: 72
216+
m_fontStyle: 0
217+
m_HorizontalAlignment: 1
218+
m_VerticalAlignment: 256
219+
m_textAlignment: 65535
220+
m_characterSpacing: 0
221+
m_wordSpacing: 0
222+
m_lineSpacing: 0
223+
m_lineSpacingMax: 0
224+
m_paragraphSpacing: 0
225+
m_charWidthMaxAdj: 0
226+
m_enableWordWrapping: 1
227+
m_wordWrappingRatios: 0.4
228+
m_overflowMode: 0
229+
m_linkedTextComponent: {fileID: 0}
230+
parentLinkedComponent: {fileID: 0}
231+
m_enableKerning: 1
232+
m_enableExtraPadding: 0
233+
checkPaddingRequired: 0
234+
m_isRichText: 1
235+
m_parseCtrlCharacters: 1
236+
m_isOrthographic: 1
237+
m_isCullingEnabled: 0
238+
m_horizontalMapping: 0
239+
m_verticalMapping: 0
240+
m_uvLineOffset: 0
241+
m_geometrySortingOrder: 0
242+
m_IsTextObjectScaleStatic: 0
243+
m_VertexBufferAutoSizeReduction: 0
244+
m_useMaxVisibleDescender: 1
245+
m_pageToDisplay: 1
246+
m_margin: {x: 0, y: 0, z: 0, w: 0}
247+
m_isUsingLegacyAnimationComponent: 0
248+
m_isVolumetricText: 0
249+
m_hasFontAssetChanged: 0
250+
m_baseMaterial: {fileID: 0}
251+
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
252+
--- !u!222 &1547750
253+
CanvasRenderer:
254+
m_ObjectHideFlags: 0
255+
m_CorrespondingSourceObject: {fileID: 0}
256+
m_PrefabInstance: {fileID: 0}
257+
m_PrefabAsset: {fileID: 0}
258+
m_GameObject: {fileID: 1547747}
259+
m_CullTransparentMesh: 1
126260
--- !u!1 &1054460205
127261
GameObject:
128262
m_ObjectHideFlags: 0
@@ -152,8 +286,7 @@ MonoBehaviour:
152286
m_Script: {fileID: 11500000, guid: dc3a2b9cdc24aab40906ce4bcdee9943, type: 3}
153287
m_Name:
154288
m_EditorClassIdentifier:
155-
gunsAction: 0
156-
playersAction: 1
289+
text: {fileID: 1547749}
157290
--- !u!4 &1054460207
158291
Transform:
159292
m_ObjectHideFlags: 0
@@ -295,7 +428,7 @@ PrefabInstance:
295428
objectReference: {fileID: 0}
296429
- target: {fileID: 8987662522597341863, guid: 1b30fa3a265114a45a7e23165a20aecc, type: 3}
297430
propertyPath: mockMode
298-
value: 1
431+
value: 0
299432
objectReference: {fileID: 0}
300433
- target: {fileID: 8987662522597341863, guid: 1b30fa3a265114a45a7e23165a20aecc, type: 3}
301434
propertyPath: insertCoinCaller
@@ -342,7 +475,7 @@ Camera:
342475
m_Enabled: 1
343476
serializedVersion: 2
344477
m_ClearFlags: 1
345-
m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0}
478+
m_BackGroundColor: {r: 0.23189344, g: 0.37832788, b: 0.42138356, a: 0}
346479
m_projectionMatrixMode: 1
347480
m_GateFitMode: 2
348481
m_FOVAxisMode: 0
@@ -491,7 +624,8 @@ RectTransform:
491624
m_LocalPosition: {x: 0, y: 0, z: 0}
492625
m_LocalScale: {x: 0, y: 0, z: 0}
493626
m_ConstrainProportionsScale: 0
494-
m_Children: []
627+
m_Children:
628+
- {fileID: 1547748}
495629
m_Father: {fileID: 0}
496630
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
497631
m_AnchorMin: {x: 0, y: 0}

0 commit comments

Comments
 (0)