You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
920 B
Go

package lupus
import (
"log"
"github.com/aziis98/lupus-lite/util"
)
type ruleset1 struct{}
var Ruleset1 ruleset1
func (ruleset1) Start(config PartitaConfig) PartitaState {
state := PartitaState{
Players: make([]Player, len(config.Players)),
Time: 0,
Actions: []Action{},
}
ruoli := []Ruolo{}
for ruolo, count := range config.RoleCounts {
ruoli = append(ruoli, util.RepeatedSlice(ruolo, count)...)
}
for len(ruoli) < len(config.Players) { // riempi il resto dei ruoli con contadini
ruoli = append(ruoli, Contadino)
}
util.Shuffle(ruoli) // mischia la lista di ruoli
for _, username := range config.Players {
var ruolo Ruolo
ruolo, ruoli = ruoli[0], ruoli[1:]
log.Printf(`Al giocatore %q è stato assegnato il ruolo di %q`, username, ruolo.Nome)
state.Players = append(state.Players, Player{
Username: username,
Ruolo: ruolo,
Vivo: true,
})
}
return state
}