stub state
parent
7216ac1620
commit
3954d3cc6a
|
|
@ -0,0 +1,16 @@
|
||||||
|
package game
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"local/secret-hitler-via-matrix/game/state"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Master struct{}
|
||||||
|
|
||||||
|
func New() (*Master, error) {
|
||||||
|
return nil, errors.New("not impl")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Master) State() (state.State, error) {
|
||||||
|
return state.State{}, errors.New("not impl")
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
package state
|
||||||
|
|
||||||
|
type Alignment int
|
||||||
|
|
||||||
|
const (
|
||||||
|
LIBERAL = Alignment(iota)
|
||||||
|
FACIST
|
||||||
|
HITLER
|
||||||
|
)
|
||||||
|
|
||||||
|
func (a Alignment) CanSeeFacist() bool {
|
||||||
|
return a == FACIST
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a Alignment) CanSeeHitler() bool {
|
||||||
|
return a == FACIST
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
package state
|
||||||
|
|
||||||
|
type CardState struct {
|
||||||
|
IsFacist bool
|
||||||
|
|
||||||
|
IsDrawn bool
|
||||||
|
IsPlayed bool
|
||||||
|
IsDiscarded bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (state CardState) Redact(alignment Alignment) CardState {
|
||||||
|
state2 := state
|
||||||
|
|
||||||
|
state2.IsFacist = false
|
||||||
|
|
||||||
|
return state2
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
package state
|
||||||
|
|
||||||
|
type PlayerState struct {
|
||||||
|
ID string
|
||||||
|
Name string
|
||||||
|
|
||||||
|
IsFacist bool
|
||||||
|
IsHitler bool
|
||||||
|
|
||||||
|
IsDead bool
|
||||||
|
|
||||||
|
IsChancellor bool
|
||||||
|
IsCandidateChancellor bool
|
||||||
|
IsPresident bool
|
||||||
|
IsCandidatePresident bool
|
||||||
|
|
||||||
|
IsVoting bool
|
||||||
|
IsShooting bool
|
||||||
|
IsInspecting bool
|
||||||
|
IsPeeking bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (state PlayerState) Redact(alignment Alignment) PlayerState {
|
||||||
|
state2 := state
|
||||||
|
|
||||||
|
state2.IsFacist = state2.IsFacist && alignment.CanSeeFacist()
|
||||||
|
state2.IsHitler = state2.IsHitler && alignment.CanSeeHitler()
|
||||||
|
|
||||||
|
return state2
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
package state
|
||||||
|
|
||||||
|
type State struct {
|
||||||
|
Players []PlayerState
|
||||||
|
Cards []CardState
|
||||||
|
}
|
||||||
|
|
||||||
|
func (state State) Copy() State {
|
||||||
|
return State{
|
||||||
|
Players: append([]PlayerState{}, state.Players...),
|
||||||
|
Cards: append([]CardState{}, state.Cards...),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (state State) RedactLiberal() State {
|
||||||
|
return state.Redact(LIBERAL)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (state State) RedactFacist() State {
|
||||||
|
return state.Redact(FACIST)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (state State) RedactHitler() State {
|
||||||
|
return state.Redact(HITLER)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (state State) Redact(alignment Alignment) State {
|
||||||
|
state2 := state.Copy()
|
||||||
|
for i := range state2.Players {
|
||||||
|
state2.Players[i] = state2.Players[i].Redact(alignment)
|
||||||
|
}
|
||||||
|
for i := range state2.Cards {
|
||||||
|
state2.Cards[i] = state2.Cards[i].Redact(alignment)
|
||||||
|
}
|
||||||
|
return state2
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
package server
|
||||||
|
|
||||||
|
import "errors"
|
||||||
|
|
||||||
|
type Server struct{}
|
||||||
|
|
||||||
|
func New() (*Server, error) {
|
||||||
|
return &Server{}, errors.New("not impl")
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue