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.

44 lines
1.3 KiB
Go

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() {}