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.

75 lines
1.5 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.
2 years ago
Update func(state PartitaState, responses []Msg) (PartitaState, []Cmd)
}
2 years ago
// Commands
2 years ago
type Cmd interface {
TargetPlayer() string
}
type baseCmd struct {
targetPlayer string
}
func (c baseCmd) TargetPlayer() string {
return c.targetPlayer
}
// Messages
2 years ago
type Msg interface {
TargetPlayer() string
}
2 years ago
type baseMsg struct {
targetPlayer string
}
2 years ago
func (m baseMsg) TargetPlayer() string {
return m.targetPlayer
}
2 years ago
// -------------------- //
// Commands and Message //
// -------------------- //
//
2 years ago
// Choose Option Form
//
2 years ago
type ChooseOptionCmd struct {
baseCmd
Message string
Options []string
}
2 years ago
func NewChooseOptionCmd(player, message string, options []string) Cmd {
return &ChooseOptionCmd{baseCmd{player}, message, options}
}
2 years ago
type ChooseOptionMsg struct {
baseMsg
Answer string
}
2 years ago
//
// Display Message Form
//
type DisplayMessageCmd struct {
baseMsg
Message string
}
func NewDisplayCmd(option, message string) Cmd {
return &DisplayMessageCmd{baseMsg{option}, message}
}