package lupus // Ruleset si occupa di far avanzare la partita type Ruleset struct { // Start viene chiamata all'inizio di una partita per inizializzare una partita partendo da alcune info di configurazione Start func(PartitaConfig) PartitaState // Update prende lo stato della partita e ne ritorna uno nuovo eventualmente utilizzando delle "UserResponse" fatte precedentemente all'utente (alla prima chiamata questa lista è vuota), successivamente c'è una corrispondenza tra lo slice di "[]UserRequest" ritornato ed il successivo slice "[]UserResponse" ricevuto. Update func(state PartitaState, responses []PlayerMessage) (PartitaState, []PlayerCommand) } type Cmd interface{ Cmd() } type Msg interface{ Msg() } // PlayerCommand rappresenta un "comando" per un certo giocatore, nella fattispecie può dire di mostrare al giocatore un messaggio o anche un prompt che chiede qualcosa all'utente type PlayerCommand struct { TargetPlayer string Request Cmd // TODO: Work in progress } // PlayerMessage è una risposta da parte del giocatore ad un comando type PlayerMessage struct { TargetPlayer string Response Msg // TODO: Work in progress } // // Cmd & Msg // type ChoosePlayerCmd struct { Players []string } func (ChoosePlayerCmd) Cmd() {} type ChoosePlayerMsg struct { Player string } func (ChoosePlayerMsg) Msg() {}