44 lines
		
	
	
		
			668 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			668 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package game
 | |
| 
 | |
| import (
 | |
| 	"slices"
 | |
| 
 | |
| 	"git.sunturtle.xyz/studio/shotgun/player"
 | |
| )
 | |
| 
 | |
| 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 // TODO(zeph): or is this startround?
 | |
| }
 | |
| 
 | |
| type CuffState uint8
 | |
| 
 | |
| const (
 | |
| 	Uncuffed CuffState = iota
 | |
| 	Cuffed
 | |
| 	CuffedSkip
 | |
| )
 | |
| 
 | |
| func (c CuffState) NextState() CuffState {
 | |
| 	var m = [...]CuffState{Uncuffed, Uncuffed, Cuffed}
 | |
| 	return m[c]
 | |
| }
 |