package game import ( "slices" "git.sunturtle.xyz/studio/shotgun/player" "git.sunturtle.xyz/studio/shotgun/serve" ) type Player struct { id player.ID hp int8 items [8]Item cuffs CuffState } func (p *Player) StartRound(hp int8) { p.hp = hp clear(p.items[:]) } func (p *Player) StartGroup(rng *RNG, items int) { for i := 0; i < items; i++ { k := slices.Index(p.items[:], ItemNone) if k < 0 { break } p.items[k] = NewItem(rng) } p.cuffs = Uncuffed } func (p *Player) DTO() serve.Player { r := serve.Player{ HP: p.hp, Items: make([]string, 0, 8), Cuffs: p.cuffs != Uncuffed, } for _, i := range p.items { s := i.String() if s == "" { continue } r.Items = append(r.Items, s) } return r } type CuffState uint8 const ( Uncuffed CuffState = iota Cuffed CuffedSkip ) func (c CuffState) NextState() CuffState { var m = [...]CuffState{Uncuffed, Uncuffed, Cuffed} return m[c] }