package lupus import ( "log" "github.com/aziis98/lupus-lite/util" ) var Ruleset1 = Ruleset{ Start: func(config PartitaConfig) PartitaState { state := PartitaState{ Players: make([]Player, len(config.Players)), Time: 0, Actions: []Action{}, } // Creo uno slice con il numero di ruoli in base al numero corrispondente per ruolo in "config.RoleCounts" ruoli := make([]Ruolo, 0, len(config.Players)) for ruolo, count := range config.RoleCounts { ruoli = append(ruoli, util.RepeatedSlice(ruolo, count)...) } // ed i rimanenti sono contadini for len(ruoli) < len(config.Players) { // riempi il resto dei ruoli con contadini ruoli = append(ruoli, Contadino) } // mischio la lista di ruoli util.Shuffle(ruoli) for i, username := range config.Players { log.Printf(`Al giocatore %q รจ stato assegnato il ruolo di %q`, username, ruoli[i].Nome) state.Players[i] = Player{ Username: username, Ruolo: ruoli[i], Vivo: true, } } return state }, Update: func(state PartitaState, responses []PlayerMessage) (PartitaState, []PlayerCommand) { if state.Time == 0 { ruoliAgenti := map[Ruolo]struct{}{ Fattucchiera: {}, Veggente: {}, } playerCommands := []PlayerCommand{} for _, player := range state.Players { if _, present := ruoliAgenti[player.Ruolo]; present { if cmd, noop := RuoloMainCmd(player, state); !noop { playerCommands = append(playerCommands, cmd) } } } state.Time++ return state, playerCommands } else { } return state, []PlayerCommand{} }, }