File size: 907 Bytes
9a42933 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import { pick } from "@/lib/pick"
import { Avatar, GameColor, Player, colors, eyes, mouths } from "@/types"
let nbPlayers = 0
export function newPlayer(player: Partial<Player> = {}): Player {
return {
id: `${nbPlayers++}`,
name: typeof player?.name === "string" && player.name.length ? player.name : "Anon",
color: typeof player?.color === "string" && player.color.length ? player.color : pick(colors) as GameColor,
avatar: {
eye: typeof player?.avatar?.eye === "string" && player.avatar.eye.length ? player.avatar.eye : pick(eyes) as string,
mouth: typeof player?.avatar?.mouth === "string" && player.avatar.mouth.length ? player.avatar.mouth : pick(mouths) as string,
colors: Array.isArray(player?.avatar?.colors) && player?.avatar?.colors.length ? colors : ["#92A1C6", "#146A7C", "#F0AB3D", "#C271B4", "#C20D90"],
} as Avatar,
score: 0,
...player,
}
} |