Server-side scenario execution: new Rudder.Core.dll, realtime/planstore glue removed
- Rudder.Core.dll rebuilt from csharp-sdk effects rewrite (96,768 bytes) - Realtime/ adapters, UnityRealtimeTransportFactory, UnityPlanStateStore, UnityPlanScheduler, WebGL jslib and RealtimeUrl config deleted (with .meta) - Scenarios sample rewired to client.Effects; samples login path updated - AGENTS.md/README/CHANGELOG/package docs + agent skill updated; realtime.md skill doc removed
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
using RudderSdk.Unity;
|
||||
|
||||
namespace RudderSdk.Unity.Samples
|
||||
{
|
||||
public class LeaderboardsSample : MonoBehaviour
|
||||
{
|
||||
[SerializeField] string nickname = "Player";
|
||||
[SerializeField] string region = "global";
|
||||
[SerializeField] string language = "en";
|
||||
[SerializeField] string slug = "cozy-collector-score";
|
||||
|
||||
readonly SamplePage _page = new SamplePage(
|
||||
"Leaderboards",
|
||||
"Submit a score to a board by slug, then list the top entries.");
|
||||
|
||||
string _scoreText = "10";
|
||||
|
||||
void Start()
|
||||
{
|
||||
_page.Run(this, async () =>
|
||||
{
|
||||
await Rudder.Initialize().Auth.LoginWithDeviceAsync(region, language, nickname);
|
||||
_page.Log("Signed in");
|
||||
await List();
|
||||
});
|
||||
}
|
||||
|
||||
void OnGUI()
|
||||
{
|
||||
_page.Draw(() =>
|
||||
{
|
||||
GUILayout.BeginHorizontal();
|
||||
_page.Label("Score");
|
||||
_scoreText = GUILayout.TextField(_scoreText, GUILayout.MaxWidth(120f));
|
||||
GUILayout.EndHorizontal();
|
||||
|
||||
GUILayout.BeginHorizontal();
|
||||
if (_page.Button("Submit"))
|
||||
_page.Run(this, Submit);
|
||||
if (_page.Button("List top 10"))
|
||||
_page.Run(this, List);
|
||||
GUILayout.EndHorizontal();
|
||||
});
|
||||
}
|
||||
|
||||
async Task Submit()
|
||||
{
|
||||
if (!int.TryParse(_scoreText, out var score))
|
||||
{
|
||||
_page.SetStatus("Score must be an integer.", true);
|
||||
return;
|
||||
}
|
||||
|
||||
var client = Rudder.Initialize();
|
||||
var board = client.Leaderboards.FindBySlug(slug);
|
||||
_page.Log("Leaderboards.FindBySlug(\"" + slug + "\").SubmitAsync(" + score + ")");
|
||||
await board.SubmitAsync(score);
|
||||
_page.SetStatus("Submitted " + score);
|
||||
await List();
|
||||
}
|
||||
|
||||
async Task List()
|
||||
{
|
||||
var client = Rudder.Initialize();
|
||||
var board = client.Leaderboards.FindBySlug(slug);
|
||||
_page.Log("FindBySlug(\"" + slug + "\").ListAsync(10)");
|
||||
var entries = await board.ListAsync(10);
|
||||
|
||||
var text = new StringBuilder();
|
||||
text.AppendLine(slug);
|
||||
if (entries == null || entries.Count == 0)
|
||||
{
|
||||
text.Append("No entries yet.");
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var entry in entries)
|
||||
{
|
||||
var name = entry.PlayerName;
|
||||
if (string.IsNullOrEmpty(name))
|
||||
name = entry.PlayerId;
|
||||
text.AppendLine("#" + entry.Rank + " " + name + " " + entry.Score);
|
||||
}
|
||||
}
|
||||
|
||||
_page.SetOutput(text.ToString());
|
||||
_page.SetStatus("Listed " + (entries == null ? 0 : entries.Count) + " entries");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user