werewolf-1.3.1.0: app/Game/Werewolf/Variant/Standard/Command.hs
{-|
Module : Game.Werewolf.Variant.Standard.Command
Description : Suite of command 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 command messages used throughout the werewolf game for the 'Standard' variant.
-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
module Game.Werewolf.Variant.Standard.Command (
-- * Boot
callerVotedBootText,
-- * Circle
gameCircleText,
-- * Choose
playerShotText,
-- * End
gameEndedText,
-- * Help
druidsTurnText, gameDescriptionText, gameRulesText, globalCommandsText, helpCommandsText,
hunterCommandsText, huntersTurnText, oracleCommandsText, oraclesTurnText, orphanCommandsText,
orphansTurnText, protectorCommandsText, protectorsTurnText, roleDescriptionText,
scapegoatCommandsText, scapegoatsTurnText, seerCommandsText, seersTurnText,
standardCommandsText, standardCycleText, statusCommandsText, sunriseText, sunsetText,
villageDrunksTurnText, villagesTurnText, werewolvesTurnText, winConditionText,
witchCommandsText, witchsTurnText,
-- * Ping
diurnalRolePingedText, nocturnalRolePingedText, playerPingedText, villagePingedText,
werewolvesPingedText,
-- * Quit
callerQuitText,
-- * Status
aliveMarksText, alivePlayersText, currentDiurnalTurnText, currentNocturnalTurnText,
deadMarksText, deadPlayersText, gameOverText,
-- * Unvote
callerRescindedVoteText,
-- * Version
engineVersionText,
-- * Vote
callerVotedDevourText, callerVotedLynchText,
) where
import Control.Lens
import Data.String.Humanise
import Data.String.Interpolate.Extra
import Data.Text (Text)
import qualified Data.Text as T
import Data.Version
import Game.Werewolf
import Game.Werewolf.Message
import Werewolf.Version
callerVotedBootText :: Player -> Player -> Text
callerVotedBootText caller target = [iFile|variant/standard/command/boot/player-voted-boot.txt|]
gameCircleText :: [Player] -> Text
gameCircleText players = [iFile|variant/standard/command/circle/game-circle.txt|]
playerShotText :: Player -> Text
playerShotText player = [iFile|variant/standard/command/choose/player-shot.txt|]
gameEndedText :: Text -> Text
gameEndedText callerName = [iFile|variant/standard/command/end/game-ended.txt|]
druidsTurnText :: Text
druidsTurnText = [iFile|variant/standard/command/help/druids-turn.txt|]
gameDescriptionText :: Text
gameDescriptionText = [iFile|variant/standard/command/help/game-description.txt|]
gameRulesText :: Text
gameRulesText = [iFile|variant/standard/command/help/rules.txt|]
globalCommandsText :: Text
globalCommandsText = [iFile|variant/standard/command/help/global-commands.txt|]
helpCommandsText :: Text
helpCommandsText = [iFile|variant/standard/command/help/help-commands.txt|]
hunterCommandsText :: Text
hunterCommandsText = [iFile|variant/standard/command/help/hunter-commands.txt|]
huntersTurnText :: Text
huntersTurnText = [iFile|variant/standard/command/help/hunters-turn.txt|]
oracleCommandsText :: Text
oracleCommandsText = [iFile|variant/standard/command/help/oracle-commands.txt|]
oraclesTurnText :: Text
oraclesTurnText = [iFile|variant/standard/command/help/oracles-turn.txt|]
orphanCommandsText :: Text
orphanCommandsText = [iFile|variant/standard/command/help/orphan-commands.txt|]
orphansTurnText :: Text
orphansTurnText = [iFile|variant/standard/command/help/orphans-turn.txt|]
protectorCommandsText :: Text
protectorCommandsText = [iFile|variant/standard/command/help/protector-commands.txt|]
protectorsTurnText :: Text
protectorsTurnText = [iFile|variant/standard/command/help/protectors-turn.txt|]
roleDescriptionText :: Role -> Text
roleDescriptionText role = [iFile|variant/standard/command/help/role.txt|]
scapegoatCommandsText :: Text
scapegoatCommandsText = [iFile|variant/standard/command/help/scapegoat-commands.txt|]
scapegoatsTurnText :: Text
scapegoatsTurnText = [iFile|variant/standard/command/help/scapegoats-turn.txt|]
seerCommandsText :: Text
seerCommandsText = [iFile|variant/standard/command/help/seer-commands.txt|]
seersTurnText :: Text
seersTurnText = [iFile|variant/standard/command/help/seers-turn.txt|]
standardCommandsText :: Text
standardCommandsText = [iFile|variant/standard/command/help/standard-commands.txt|]
standardCycleText :: Text
standardCycleText = [iFile|variant/standard/command/help/standard-cycle.txt|]
statusCommandsText :: Text
statusCommandsText = [iFile|variant/standard/command/help/status-commands.txt|]
sunriseText :: Text
sunriseText = [iFile|variant/standard/command/help/sunrise.txt|]
sunsetText :: Text
sunsetText = [iFile|variant/standard/command/help/sunset.txt|]
villageDrunksTurnText :: Text
villageDrunksTurnText = [iFile|variant/standard/command/help/village-drunks-turn.txt|]
villagesTurnText :: Text
villagesTurnText = [iFile|variant/standard/command/help/villages-turn.txt|]
werewolvesTurnText :: Text
werewolvesTurnText = [iFile|variant/standard/command/help/werewolves-turn.txt|]
winConditionText :: Text
winConditionText = [iFile|variant/standard/command/help/win-condition.txt|]
witchCommandsText :: Text
witchCommandsText = [iFile|variant/standard/command/help/witch-commands.txt|]
witchsTurnText :: Text
witchsTurnText = [iFile|variant/standard/command/help/witchs-turn.txt|]
diurnalRolePingedText :: Role -> Text
diurnalRolePingedText role = [iFile|variant/standard/command/ping/diurnal-role-pinged.txt|]
nocturnalRolePingedText :: Role -> Text
nocturnalRolePingedText role = [iFile|variant/standard/command/ping/nocturnal-role-pinged.txt|]
playerPingedText :: Text
playerPingedText = [iFile|variant/standard/command/ping/player-pinged.txt|]
villagePingedText :: Text
villagePingedText = [iFile|variant/standard/command/ping/village-pinged.txt|]
werewolvesPingedText :: Text
werewolvesPingedText = [iFile|variant/standard/command/ping/werewolves-pinged.txt|]
callerQuitText :: Player -> Text
callerQuitText caller = [iFile|variant/standard/command/quit/caller-quit.txt|]
aliveMarksText :: Game -> Text
aliveMarksText game = [iFile|variant/standard/command/status/alive-marks.txt|]
where
aliveMarks = game ^.. players . traverse . alive . filtered (\player -> player ^. name `elem` game ^. marks)
alivePlayersText :: Game -> Text
alivePlayersText game = [iFile|variant/standard/command/status/alive-players.txt|]
currentDiurnalTurnText :: Game -> Text
currentDiurnalTurnText game = [iFile|variant/standard/command/status/current-diurnal-turn.txt|]
currentNocturnalTurnText :: Game -> Text
currentNocturnalTurnText game = [iFile|variant/standard/command/status/current-nocturnal-turn.txt|]
deadMarksText :: Game -> Text
deadMarksText game = [iFile|variant/standard/command/status/dead-marks.txt|]
where
deadMarks = game ^.. players . traverse . dead . filtered (\player -> player ^. name `elem` game ^. marks)
deadPlayersText :: Game -> Text
deadPlayersText game = [iFile|variant/standard/command/status/dead-players.txt|]
gameOverText :: Text
gameOverText = [iFile|variant/standard/command/status/game-over.txt|]
callerRescindedVoteText :: Player -> Text
callerRescindedVoteText caller = [iFile|variant/standard/command/unvote/player-rescinded-vote.txt|]
engineVersionText :: Text
engineVersionText = [iFile|variant/standard/command/version/engine-version.txt|]
callerVotedDevourText :: Player -> Player -> Text
callerVotedDevourText caller target = [iFile|variant/standard/command/vote/player-made-devour-vote.txt|]
callerVotedLynchText :: Player -> Player -> Text
callerVotedLynchText caller target = [iFile|variant/standard/command/vote/player-made-lynch-vote.txt|]