Show public names in leaderboards
This commit is contained in:
1 parent
1b5b8dc0a4
commit
31ddba0d45
8 files changed
+98
-12
No files matched your search
@@ -1,4 +1,4 @@
|
||||
var GAME_VERSION = "0.22";
|
||||
var GAME_VERSION = "0.23";
|
||||
var MAP_COUNT = 3;
|
||||
var DIFFICULTY_COUNT = 3;
|
||||
var VALID_MODES = ["mission", "endless", "coop_ai", "coop_online"];
|
||||
@@ -43,8 +43,16 @@ function rpcSubmitRun(ctx, logger, nk, payload) {
|
||||
var wave = clampInteger(run.wave,1,mode === "mission" ? 15 : 9999), score = clampInteger(run.score,0,1000000000);
|
||||
if (score > wave*5000+100000) throw new Error("implausible score");
|
||||
var id = leaderboardId(mapIndex,difficulty,mode);
|
||||
var metadata = {map:mapIndex,difficulty:difficulty,mode:mode,wave:wave,clientVersion:String(run.client_version||"unknown"),submittedAt:Date.now()};
|
||||
var record = nk.leaderboardRecordWrite(id,ctx.userId,ctx.username||"Pilot",score,wave,metadata,null);
|
||||
var publicName = "PILOT";
|
||||
try {
|
||||
var account = nk.accountGetId(ctx.userId);
|
||||
var storedName = account && account.user ? normalizeDisplayName(account.user.displayName) : "";
|
||||
if (!validateDisplayName(storedName)) publicName = storedName;
|
||||
} catch (error) {
|
||||
logger.warn("Could not resolve display name for leaderboard user %s: %s", ctx.userId, error);
|
||||
}
|
||||
var metadata = {map:mapIndex,difficulty:difficulty,mode:mode,wave:wave,displayName:publicName,clientVersion:String(run.client_version||"unknown"),submittedAt:Date.now()};
|
||||
var record = nk.leaderboardRecordWrite(id,ctx.userId,publicName,score,wave,metadata,null);
|
||||
return JSON.stringify({accepted:true,leaderboard_id:id,rank:record.rank,score:Number(record.score),wave:wave});
|
||||
}
|
||||
|
||||
|
||||
@@ -38,6 +38,24 @@ assert.strictEqual(JSON.parse(context.rpcUpdateDisplayName({ userId: "pilot-a" }
|
||||
assert.deepStrictEqual(JSON.parse(context.rpcDeleteAccount({ userId: "pilot-a" }, logger, accountNk, "{}")), { accepted: true });
|
||||
assert.deepStrictEqual(deletedAccount, ["pilot-a", false]);
|
||||
|
||||
let leaderboardWrite = null;
|
||||
const leaderboardNk = {
|
||||
accountGetId() { return { user: { displayName: "Kommandant Ägir" } }; },
|
||||
leaderboardRecordWrite(...args) {
|
||||
leaderboardWrite = args;
|
||||
return { rank: 1, score: args[3] };
|
||||
}
|
||||
};
|
||||
const submittedRun = JSON.parse(context.rpcSubmitRun(
|
||||
{ userId: "pilot-a", username: "technical_guest_id" },
|
||||
{ warn() {} },
|
||||
leaderboardNk,
|
||||
JSON.stringify({ map: 0, difficulty: 1, mode: "mission", wave: 4, score: 4700, client_version: "test" })
|
||||
));
|
||||
assert.strictEqual(submittedRun.accepted, true);
|
||||
assert.strictEqual(leaderboardWrite[2], "Kommandant Ägir");
|
||||
assert.strictEqual(leaderboardWrite[5].displayName, "Kommandant Ägir");
|
||||
|
||||
let state = context.matchInit({}, logger, nk, { difficulty: 1 }).state;
|
||||
state = context.matchJoin({}, logger, nk, dispatcher, 1, state, [presenceA]).state;
|
||||
state = context.matchJoin({}, logger, nk, dispatcher, 2, state, [presenceB]).state;
|
||||
|
||||
Reference in new issue
Block a user