39 lines
641 B
Go
39 lines
641 B
Go
package game
|
|
|
|
import "slices"
|
|
|
|
// PlayerID is a unique ID for a player.
|
|
// May just be IPv6 (or IPv4-in-6) of their connection, or a UUID.
|
|
type PlayerID [16]byte
|
|
|
|
type Player struct {
|
|
ID PlayerID
|
|
HP int8
|
|
Items [8]Item
|
|
Cuffs CuffState
|
|
}
|
|
|
|
func (p *Player) StartRound() {
|
|
clear(p.Items[:])
|
|
}
|
|
|
|
func (p *Player) StartGroup(rng *RNG, hp int8, items int) {
|
|
p.HP = hp
|
|
for i := 0; i < items; i++ {
|
|
k := slices.Index(p.Items[:], ItemNone)
|
|
if k < 0 {
|
|
break
|
|
}
|
|
p.Items[k] = NewItem(rng)
|
|
}
|
|
p.Cuffs = Uncuffed // TODO(zeph): or is this startround?
|
|
}
|
|
|
|
type CuffState uint8
|
|
|
|
const (
|
|
Uncuffed CuffState = iota
|
|
Cuffed
|
|
CuffedSkip
|
|
)
|