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