Permet de fixer manuellement certains Citoyens à un palier précis
Build and deploy / deploy (push) Successful in 35s
Build and deploy / deploy (push) Successful in 35s
TIER_OVERRIDES (id de profil → index de palier) + applyTierOverrides() placent d'abord les Citoyens fixés à la main, puis remplissent le reste dans l'ordre alphabétique existant. Épicure est placé en position 7. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -43,3 +43,40 @@ export const MAX_FRAME_DT_MS = 250;
|
||||
|
||||
export const MIN_SCORE = 0;
|
||||
export const MAX_SCORE = 1000000;
|
||||
|
||||
// Positions figées à la main pour certains Citoyens (id de profil → index
|
||||
// de palier, 0 = le plus petit) — les Citoyens restants remplissent les
|
||||
// paliers non réservés, dans leur ordre existant (alphabétique par
|
||||
// pseudo, voir corne/page.tsx). "Position N" telle que demandée par un
|
||||
// humain (compte à partir de 1) correspond à l'index N-1 ici.
|
||||
export const TIER_OVERRIDES: Record<number, string> = {
|
||||
6: "7f0f24dc-ede0-4190-a64d-976393073c28", // Épicure, position 7
|
||||
};
|
||||
|
||||
export function applyTierOverrides<T extends { id: string }>(
|
||||
citizens: T[],
|
||||
overrides: Record<number, string>,
|
||||
): T[] {
|
||||
const byId = new Map(citizens.map((c) => [c.id, c]));
|
||||
const usedIds = new Set<string>();
|
||||
const result: (T | undefined)[] = new Array(citizens.length);
|
||||
|
||||
for (const [tierKey, id] of Object.entries(overrides)) {
|
||||
const tier = Number(tierKey);
|
||||
const citizen = byId.get(id);
|
||||
if (citizen && tier >= 0 && tier < citizens.length) {
|
||||
result[tier] = citizen;
|
||||
usedIds.add(id);
|
||||
}
|
||||
}
|
||||
|
||||
const remaining = citizens.filter((c) => !usedIds.has(c.id));
|
||||
let remainingIndex = 0;
|
||||
for (let tier = 0; tier < result.length; tier++) {
|
||||
if (!result[tier]) {
|
||||
result[tier] = remaining[remainingIndex++];
|
||||
}
|
||||
}
|
||||
|
||||
return result as T[];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user