This commit is contained in:
33333-33333 2026-08-01 16:06:14 +09:00
commit 4c4e767ec6
73 changed files with 3502 additions and 741 deletions

View file

@ -5,14 +5,18 @@ function createPlayerService(deps){
randomHex,now,cleanName,defaultName,hashToken,writePlayer,readPlayer,
withPlayerQueue,withWorldQueue,readWorld,readWorldBoard,normalizeBonuses,
earnedScore,publicState,bonusAmount,bonusDelayMs,notifyProfile,
purchaseContext,findPurchase,assertAffordable,createPurchase,boardPattern
purchaseContext,findPurchase,assertAffordable,createPurchase,starterLineColor,boardPattern
}=deps||{};
const createSession=async nameInput=>{
const playerId=randomHex(12),token=randomHex(32),timestamp=now(),name=cleanName(nameInput,defaultName(playerId));
const record={playerId,name,tokenHash:hashToken(token),purchases:[],generationBonuses:[],earnedScore:0,economyRevision:0,createdAt:timestamp,updatedAt:timestamp};
const record={
playerId,name,tokenHash:hashToken(token),purchases:[],generationBonuses:[],
starterLineColor:starterLineColor?.(playerId)||null,earnedScore:0,economyRevision:0,
createdAt:timestamp,updatedAt:timestamp
};
await writePlayer(record);
return{status:201,body:{playerId,token,name,revision:0,serverTime:timestamp}};
return{status:201,body:{playerId,token,name,starterLineColor:record.starterLineColor,revision:0,serverTime:timestamp}};
};
const updateProfile=async(playerId,nameInput)=>{
const name=cleanName(nameInput);if(!name)throw Object.assign(new Error('Player name is required'),{status:400});