packages feed

werewolf-1.5.1.1: app/Game/Werewolf/Variant/NoRoleKnowledgeOrReveal/Engine.hs

{-|
Module      : Game.Werewolf.Variant.NoRoleKnowledgeOrReveal.Engine
Description : Suite of engine messages used throughout the game.

Copyright   : (c) Henry J. Wylde, 2016
License     : BSD3
Maintainer  : public@hjwylde.com

A 'Message' is used to relay information back to either all players or a single player. This module
defines suite of engine messages used throughout the werewolf game for the
'NoRoleKnowledgeOrReveal' variant.
-}

{-# LANGUAGE QuasiQuotes #-}

module Game.Werewolf.Variant.NoRoleKnowledgeOrReveal.Engine (
    -- * General
    playerBootedText, spitefulVillagerKilledText,

    -- * Lynching
    playerLynchedText, saintLynchedText, werewolfLynchedText,

    -- * New game
    rolesInGameText,

    -- * Sunrise
    playerDevouredText, playerPoisonedText, playerTurnedToStoneText,
) where

import Control.Lens

import Data.String.Humanise
import Data.String.Interpolate.Extra
import Data.Text                     as T

import Game.Werewolf
import Game.Werewolf.Message

playerBootedText :: Player -> Text
playerBootedText player = [iFile|variant/no-role-knowledge-or-reveal/engine/general/player-booted.txt|]

spitefulVillagerKilledText :: Game -> Text
spitefulVillagerKilledText game = [iFile|variant/no-role-knowledge-or-reveal/engine/general/spiteful-villager-killed.txt|]

playerLynchedText :: Player -> Text
playerLynchedText player = [iFile|variant/no-role-knowledge-or-reveal/engine/lynching/player-lynched.txt|]

saintLynchedText :: [Player] -> Text
saintLynchedText voters = [iFile|variant/no-role-knowledge-or-reveal/engine/lynching/saint-lynched.txt|]

werewolfLynchedText :: Player -> Text
werewolfLynchedText werewolf = [iFile|variant/no-role-knowledge-or-reveal/engine/lynching/werewolf-lynched.txt|]

rolesInGameText :: Game -> Text
rolesInGameText game = [iFile|variant/no-role-knowledge-or-reveal/engine/new-game/roles-in-game.txt|]
    where
        totalBalance = sumOf (players . roles . balance) game

playerDevouredText :: Player -> Text
playerDevouredText player = [iFile|variant/no-role-knowledge-or-reveal/engine/sunrise/player-devoured.txt|]

playerPoisonedText :: Player -> Text
playerPoisonedText player = [iFile|variant/no-role-knowledge-or-reveal/engine/sunrise/player-poisoned.txt|]

playerTurnedToStoneText :: Player -> Text
playerTurnedToStoneText player = [iFile|variant/no-role-knowledge-or-reveal/engine/sunrise/player-turned-to-stone.txt|]