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