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,
  }
}