Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions Assets/Talo Game Services/Talo/Runtime/APIs/StatsAPI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,13 @@ public async Task<Stat[]> GetStats()
return res.stats;
}

[Obsolete("Use Find(string internalName) instead.")]
public async Task<Stat> GetStat(string internalName)
{
return await Find(internalName);
}

public async Task<Stat> Find(string internalName)
{
var uri = new Uri($"{baseUrl}/{internalName}");
var json = await Call(uri, "GET");
Expand All @@ -27,6 +33,17 @@ public async Task<Stat> GetStat(string internalName)
return res.stat;
}

public async Task<PlayerStat> FindPlayerStat(string internalName)
{
Talo.IdentityCheck();

var uri = new Uri($"{baseUrl}/{internalName}/player-stat");

var json = await Call(uri, "GET");
var res = JsonUtility.FromJson<PlayerStatResponse>(json);
return res.playerStat;
}

public async Task<StatsPutResponse> Track(string internalName, float change = 1f)
{
Talo.IdentityCheck();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace TaloGameServices
{
[System.Serializable]
public class PlayerStatResponse
{
public PlayerStat playerStat;
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -1936,6 +1936,85 @@ MonoBehaviour:
m_EditorClassIdentifier:
categoryInternalName:
feedbackComment: There is a bug in the game somewhere, go find it
--- !u!1 &685705074
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 685705075}
- component: {fileID: 685705077}
- component: {fileID: 685705076}
m_Layer: 5
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &685705075
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 685705074}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1116317869}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &685705076
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 685705074}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 14
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 10
m_MaxSize: 40
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Get player stat
--- !u!222 &685705077
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 685705074}
m_CullTransparentMesh: 1
--- !u!1 &828856310
GameObject:
m_ObjectHideFlags: 0
Expand Down Expand Up @@ -2756,6 +2835,154 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1112754115}
m_CullTransparentMesh: 1
--- !u!1 &1116317868
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1116317869}
- component: {fileID: 1116317873}
- component: {fileID: 1116317872}
- component: {fileID: 1116317871}
- component: {fileID: 1116317870}
m_Layer: 5
m_Name: GetPlayerStatButton
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1116317869
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1116317868}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 685705075}
m_Father: {fileID: 1550727585}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1116317870
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1116317868}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 1116317871}
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 1116317873}
m_TargetAssemblyTypeName: TaloGameServices.Sample.Playground.GetPlayerStat,
Assembly-CSharp
m_MethodName: OnButtonClick
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!114 &1116317871
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1116317868}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!222 &1116317872
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1116317868}
m_CullTransparentMesh: 1
--- !u!114 &1116317873
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1116317868}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a2aa4391f1eb7460b9c72cdb1e905ec6, type: 3}
m_Name:
m_EditorClassIdentifier:
statInternalName:
--- !u!1 &1128940377
GameObject:
m_ObjectHideFlags: 0
Expand Down Expand Up @@ -4002,6 +4229,7 @@ RectTransform:
- {fileID: 1899797262}
- {fileID: 1909633279}
- {fileID: 1381655565}
- {fileID: 1116317869}
- {fileID: 1324085945}
- {fileID: 1085447291}
- {fileID: 182147968}
Expand Down Expand Up @@ -5472,8 +5700,8 @@ MonoBehaviour:
m_ChildAlignment: 4
m_StartCorner: 0
m_StartAxis: 0
m_CellSize: {x: 300, y: 240}
m_Spacing: {x: 40, y: 20}
m_CellSize: {x: 200, y: 240}
m_Spacing: {x: 40, y: 40}
m_Constraint: 0
m_ConstraintCount: 2
--- !u!1 &2106635468
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using System;
using UnityEngine;

namespace TaloGameServices.Sample.Playground
{
public class GetPlayerStat : MonoBehaviour
{
public string statInternalName;

public void OnButtonClick()
{
FetchPlayerStat();
}

private async void FetchPlayerStat()
{
if (string.IsNullOrEmpty(statInternalName))
{
ResponseMessage.SetText("statInternalName not set on GetPlayerStatButton");
return;
}

try
{
var res = await Talo.Stats.FindPlayerStat(statInternalName);
ResponseMessage.SetText($"{statInternalName} value: {(res == null ? "not set" : res.value)}, last updated: {res?.updatedAt ?? "never"}");
}
catch (Exception err)
{
ResponseMessage.SetText(err.Message);
throw err;
}
}
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ private async void FetchStat()

try
{
var res = await Talo.Stats.GetStat(statInternalName);
var res = await Talo.Stats.Find(statInternalName);
ResponseMessage.SetText($"{res.name} is{(res.global ? "" : " not")} a global stat, with a default value of {res.defaultValue}");
}
catch (Exception err)
Expand Down