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.

104 lines
2.2 KiB
Go

package lupus
// StatoPartita rappresenta lo stato della partita
type StatoPartita struct {
Uid string `json:"uid"` // Uid corrispondente come in "Partita"
Players []Player `json:"players"` // Players è una mappa da username a giocatore
Time uint `json:"time"` // Time indica la fase corrente del gioco (la parità indica notte/giorno e si inizia da "Notte 0")
Actions []Action `json:"actions"` // PhaseActions indica quali azioni sono state fatte in una certa fase
}
type Player struct {
Username string `json:"username"`
Ruolo Ruolo `json:"ruolo"`
Vivo bool `json:"vivo"`
}
type Ruolo struct {
Uid string `json:"uid"`
Nome string `json:"nome"`
Fazione string `json:"fazione"`
Aura string `json:"aura"`
}
type Action struct {
Uid string `json:"uid"`
Time uint `json:"time"` // Time indica in quale fase è stata compiuta l'azione
Player string `json:"player"`
TargetPlayer string `json:"targetPlayer"`
}
var (
AuraBianca = "bianca"
AuraNera = "nera"
)
var (
FazioneBuoni = "buoni"
FazioneCattivi = "cattivi"
)
var (
Contadino = Ruolo{
Uid: "contadino",
Nome: "Contadino",
Fazione: FazioneBuoni,
Aura: AuraBianca,
}
Lupo = Ruolo{
Uid: "lupo",
Nome: "Lupo",
Fazione: FazioneCattivi,
Aura: AuraNera,
}
Fattucchiera = Ruolo{
Uid: "fattucchiera",
Nome: "Fattucchiera",
Fazione: FazioneCattivi,
Aura: AuraNera,
}
Indemoniato = Ruolo{
Uid: "indemoniato",
Nome: "Indemoniato",
Fazione: FazioneCattivi,
Aura: AuraBianca,
}
Guardia = Ruolo{
Uid: "guardia",
Nome: "Guardia",
Fazione: FazioneBuoni,
Aura: AuraBianca,
}
Cacciatore = Ruolo{
Uid: "cacciatore",
Nome: "Cacciatore",
Fazione: FazioneBuoni,
Aura: AuraBianca,
}
Medium = Ruolo{
Uid: "medium",
Nome: "Medium",
Fazione: FazioneBuoni,
Aura: AuraBianca,
}
Veggente = Ruolo{
Uid: "veggente",
Nome: "Veggente",
Fazione: FazioneBuoni,
Aura: AuraBianca,
}
)
// Ruoli è una lista di ruoli comuni, l'ordine è puramente casuale
var Ruoli = []Ruolo{
Contadino,
Lupo,
Fattucchiera,
Indemoniato,
Guardia,
Cacciatore,
Medium,
Veggente,
}