shotgun/game/player.go

58 lines
829 B
Go

package game
import (
"slices"
"git.sunturtle.xyz/studio/shotgun/player"
"git.sunturtle.xyz/studio/shotgun/serve"
)
type playerState struct {
id player.ID
hp int8
items [8]item
cuffs cuffState
}
func (p *playerState) startRound(hp int8) {
p.hp = hp
clear(p.items[:])
}
func (p *playerState) startGame(items int) {
for i := 0; i < items; i++ {
k := slices.Index(p.items[:], itemNone)
if k < 0 {
break
}
p.items[k] = newItem()
}
p.cuffs = uncuffed
}
func (p *playerState) dto() serve.Player {
r := serve.Player{
HP: p.hp,
Cuffs: p.cuffs != uncuffed,
}
for k, i := range p.items {
r.Items[k] = i.String()
}
return r
}
type cuffState uint8
const (
uncuffed cuffState = iota
cuffed
cuffedSkip
)
func (c cuffState) nextState() cuffState {
if c != uncuffed {
c--
}
return c
}