werewolf-1.5.2.0: A game engine for playing werewolf within an arbitrary chat client

Copyright(c) Henry J. Wylde 2016
LicenseBSD3
Maintainerpublic@hjwylde.com
Safe HaskellNone
LanguageHaskell2010

Game.Werewolf.Player

Contents

Description

Players are quite simple in themselves. They have a name, role and state.

Synopsis

Player

data Player Source #

A player has a name, role and state. Any stateful information needed for a player's role is held on the Game itself.

N.B., player equality is defined on just the name.

data State Source #

Surprise surprise, players may be Dead or Alive.

Constructors

Alive 
Dead 

newPlayer :: Text -> Role -> Player Source #

Creates a new Alive player.

Traversals

druid :: Traversal' Player () Source #

The traversal of Players with a druidRole.

druid = role . only druidRole

lycan :: Traversal' Player () Source #

The traversal of Players with a lycanRole.

lycan = role . only lycanRole

orphan :: Traversal' Player () Source #

The traversal of Players with an orphanRole.

orphan = role . only orphanRole

saint :: Traversal' Player () Source #

The traversal of Players with a saintRole.

saint = role . only saintRole

seer :: Traversal' Player () Source #

The traversal of Players with a seerRole.

seer = role . only seerRole

witch :: Traversal' Player () Source #

The traversal of Players with a witchRole.

witch = role . only witchRole

loner :: Traversal' Player () Source #

The traversal of Players aligned with NoOne.

loner = role . allegiance . _NoOne

villager :: Traversal' Player () Source #

The traversal of Players aligned with the Villagers.

villager = role . allegiance . _Villagers

werewolf :: Traversal' Player () Source #

The traversal of Players aligned with the Werewolves.

werewolf = role . allegiance . _Werewolves

The following traversals are provided just as a bit of sugar to avoid continually writing traverse ..

names :: Traversable t => Traversal' (t Player) Text Source #

The traversal of Player names.

names = traverse . name

roles :: Traversable t => Traversal' (t Player) Role Source #

The traversal of Player roles.

roles = traverse . role

states :: Traversable t => Traversal' (t Player) State Source #

The traversal of Player states.

states = traverse . state

N.B., the following traversals are not legal for the same reason filtered isn't!

named :: Text -> Traversal' Player Player Source #

The traversal of Players with the given name.

named name' = filteredBy . name name'