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