shotgun/game/player.go

61 lines
972 B
Go
Raw Normal View History

2024-01-20 22:06:56 -06:00
package game
import (
"slices"
"git.sunturtle.xyz/studio/shotgun/player"
2024-01-21 00:56:45 -06:00
"git.sunturtle.xyz/studio/shotgun/serve"
)
2024-01-20 22:06:56 -06:00
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[:])
2024-01-20 22:06:56 -06:00
}
func (p *Player) StartGroup(rng *RNG, items int) {
2024-01-20 22:06:56 -06:00
for i := 0; i < items; i++ {
k := slices.Index(p.Items[:], ItemNone)
if k < 0 {
break
}
p.Items[k] = NewItem(rng)
2024-01-20 22:06:56 -06:00
}
p.Cuffs = Uncuffed // TODO(zeph): or is this startround?
2024-01-20 22:06:56 -06:00
}
2024-01-21 00:56:45 -06:00
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
)
2024-01-21 00:13:23 -06:00
func (c CuffState) NextState() CuffState {
var m = [...]CuffState{Uncuffed, Uncuffed, Cuffed}
return m[c]
}