Copyright | (c) Henry J. Wylde, 2016 |
---|---|
License | BSD3 |
Maintainer | public@hjwylde.com |
Safe Haskell | None |
Language | Haskell2010 |
Players are quite simple in themselves. They have a name
, role
and state
. Any complex
behaviour is handled in Game.Werewolf.Command and Game.Werewolf.Engine.
- data Player
- name :: Lens' Player Text
- role :: Lens' Player Role
- state :: Lens' Player State
- data State
- _Alive :: Prism' State ()
- _Dead :: Prism' State ()
- newPlayer :: Text -> Role -> Player
- angel :: Traversal' Player ()
- devotedServant :: Traversal' Player ()
- druid :: Traversal' Player ()
- jester :: Traversal' Player ()
- protector :: Traversal' Player ()
- scapegoat :: Traversal' Player ()
- seer :: Traversal' Player ()
- simpleVillager :: Traversal' Player ()
- simpleWerewolf :: Traversal' Player ()
- villagerVillager :: Traversal' Player ()
- wildChild :: Traversal' Player ()
- witch :: Traversal' Player ()
- wolfHound :: Traversal' Player ()
- villager :: Traversal' Player ()
- werewolf :: Traversal' Player ()
- names :: Traversable t => Traversal' (t Player) Text
- roles :: Traversable t => Traversal' (t Player) Role
- states :: Traversable t => Traversal' (t Player) State
- angels :: Traversable t => Traversal' (t Player) Player
- devotedServants :: Traversable t => Traversal' (t Player) Player
- druids :: Traversable t => Traversal' (t Player) Player
- jesters :: Traversable t => Traversal' (t Player) Player
- protectors :: Traversable t => Traversal' (t Player) Player
- scapegoats :: Traversable t => Traversal' (t Player) Player
- seers :: Traversable t => Traversal' (t Player) Player
- simpleVillagers :: Traversable t => Traversal' (t Player) Player
- simpleWerewolves :: Traversable t => Traversal' (t Player) Player
- villagerVillagers :: Traversable t => Traversal' (t Player) Player
- wildChildren :: Traversable t => Traversal' (t Player) Player
- witches :: Traversable t => Traversal' (t Player) Player
- wolfHounds :: Traversable t => Traversal' (t Player) Player
- villagers :: Traversable t => Traversal' (t Player) Player
- werewolves :: Traversable t => Traversal' (t Player) Player
- alive :: Traversal' Player Player
- dead :: Traversal' Player Player
- is :: Getting Any s a -> s -> Bool
- isn't :: Getting All s a -> s -> Bool
- filteredBy :: Eq b => Lens' a b -> b -> Traversal' a a
Player
Traversals
angel :: Traversal' Player () Source
devotedServant :: Traversal' Player () Source
The traversal of Player
s with a devotedServantRole
.
devotedServant
=role
.only
devotedServantRole
druid :: Traversal' Player () Source
jester :: Traversal' Player () Source
The traversal of Player
s with a jesterRole
.
jester
=role
.only
jesterRole
protector :: Traversal' Player () Source
The traversal of Player
s with a protectorRole
.
protector
=role
.only
protectorRole
scapegoat :: Traversal' Player () Source
The traversal of Player
s with a scapegoatRole
.
scapegoat
=role
.only
scapegoatRole
seer :: Traversal' Player () Source
simpleVillager :: Traversal' Player () Source
The traversal of Player
s with a simpleVillagerRole
.
simpleVillager
=role
.only
simpleVillagerRole
simpleWerewolf :: Traversal' Player () Source
The traversal of Player
s with a simpleWerewolfRole
.
simpleWerewolf
=role
.only
simpleWerewolfRole
villagerVillager :: Traversal' Player () Source
The traversal of Player
s with a villagerVillagerRole
.
villagerVillager
=role
.only
villagerVillagerRole
wildChild :: Traversal' Player () Source
The traversal of Player
s with a wildChildRole
.
wildChild
=role
.only
wildChildRole
witch :: Traversal' Player () Source
wolfHound :: Traversal' Player () Source
The traversal of Player
s with a wolfHoundRole
.
wolfHound
=role
.only
wolfHoundRole
villager :: Traversal' Player () Source
The traversal of Player
s aligned with the Villagers
.
villager
=role
.allegiance
._Villagers
werewolf :: Traversal' Player () Source
The traversal of Player
s aligned with the Werewolves
.
werewolf
=role
.allegiance
._Werewolves
These are provided just as a bit of sugar to avoid continually writing
.traverse
.
names :: Traversable t => Traversal' (t Player) Text Source
roles :: Traversable t => Traversal' (t Player) Role Source
states :: Traversable t => Traversal' (t Player) State Source
N.B., these are not legal traversals for the same reason filtered
isn't!
angels :: Traversable t => Traversal' (t Player) Player Source
devotedServants :: Traversable t => Traversal' (t Player) Player Source
This Traversal
provides the traversal of devotedServant
Player
s.
devotedServants
=traverse
.filtered
(is
devotedServant
)
druids :: Traversable t => Traversal' (t Player) Player Source
jesters :: Traversable t => Traversal' (t Player) Player Source
protectors :: Traversable t => Traversal' (t Player) Player Source
scapegoats :: Traversable t => Traversal' (t Player) Player Source
seers :: Traversable t => Traversal' (t Player) Player Source
simpleVillagers :: Traversable t => Traversal' (t Player) Player Source
This Traversal
provides the traversal of simpleVillager
Player
s.
simpleVillagers
=traverse
.filtered
(is
simpleVillager
)
simpleWerewolves :: Traversable t => Traversal' (t Player) Player Source
This Traversal
provides the traversal of simpleWerewolf
Player
s.
simpleWerewolves
=traverse
.filtered
(is
simpleWerewolf
)
villagerVillagers :: Traversable t => Traversal' (t Player) Player Source
This Traversal
provides the traversal of villagerVillager
Player
s.
villagerVillagers
=traverse
.filtered
(is
villagerVillager
)
wildChildren :: Traversable t => Traversal' (t Player) Player Source
witches :: Traversable t => Traversal' (t Player) Player Source
wolfHounds :: Traversable t => Traversal' (t Player) Player Source
villagers :: Traversable t => Traversal' (t Player) Player Source
werewolves :: Traversable t => Traversal' (t Player) Player Source
Utility functions
filteredBy :: Eq b => Lens' a b -> b -> Traversal' a a Source
A companion to filtered
that, rather than using a predicate, filters on the given lens for
matches.