Show public names in leaderboards

This commit is contained in:
Emporex committed 2026-10-04 09:02:38 +02:00
1 parent 1b5b8dc0a4
commit 31ddba0d45
8 files changed
+98 -12

No files matched your search

+11 -3
View File
@@ -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});
}