packages feed

werewolf-1.5.0.0: app/Game/Werewolf/Message/Error.hs

{-|
Module      : Game.Werewolf.Message.Error
Description : Suite of error 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 error messages used throughout the werewolf game.
-}

module Game.Werewolf.Message.Error (
    -- * Command

    -- ** Boot
    playerHasAlreadyVotedToBootMessage,

    -- ** Choose
    playerCannotChooseJesterMessage, playerCannotChooseSelfMessage, playerCannotChooseZombieMessage,
    playerMustChooseAtLeastOneTargetMessage,

    -- ** General
    noGameRunningMessage, playerCannotDoThatMessage, playerCannotDoThatRightNowMessage,
    playerIsDeadMessage, playerDoesNotExistMessage, targetIsDeadMessage,

    -- ** Heal
    playerHasAlreadyHealedMessage,

    -- ** Poison
    playerHasAlreadyPoisonedMessage,

    -- ** Protect
    playerCannotProtectSamePlayerTwiceInARowMessage,

    -- ** Start
    gameAlreadyRunningMessage, mustHaveAtLeast7PlayersMessage, playerNamesMustBeUniqueMessage,
    roleCountRestrictedMessage, roleDoesNotExistMessage, variantDoesNotExistMessage,

    -- ** Unvote
    playerHasNotVotedMessage,

    -- ** Vote
    playerHasAlreadyVotedMessage, playerCannotDevourAnotherWerewolfMessage,
) where

import Data.Text (Text)

import Game.Werewolf.Player
import Game.Werewolf.Response
import Game.Werewolf.Role
import Game.Werewolf.Variant.Standard.Error

playerHasAlreadyVotedToBootMessage :: Text -> Player -> Message
playerHasAlreadyVotedToBootMessage to = privateMessage to . callerAlreadyVotedBootText

playerCannotChooseJesterMessage :: Text -> Message
playerCannotChooseJesterMessage to = privateMessage to callerCannotChooseJesterText

playerCannotChooseSelfMessage :: Text -> Message
playerCannotChooseSelfMessage to = privateMessage to callerCannotChooseSelfText

playerCannotChooseZombieMessage :: Text -> Message
playerCannotChooseZombieMessage to = privateMessage to callerCannotChooseZombieText

playerMustChooseAtLeastOneTargetMessage :: Text -> Message
playerMustChooseAtLeastOneTargetMessage to = privateMessage to noTargetText

noGameRunningMessage :: Text -> Message
noGameRunningMessage to = privateMessage to noGameRunningText

playerCannotDoThatMessage :: Text -> Message
playerCannotDoThatMessage to = privateMessage to callerCannotDoThatText

playerCannotDoThatRightNowMessage :: Text -> Message
playerCannotDoThatRightNowMessage to = privateMessage to callerCannotDoThatRightNowText

playerIsDeadMessage :: Text -> Message
playerIsDeadMessage to = privateMessage to callerDeadText

playerDoesNotExistMessage :: Text -> Text -> Message
playerDoesNotExistMessage to = privateMessage to . playerDoesNotExistText

targetIsDeadMessage :: Text -> Player -> Message
targetIsDeadMessage to = privateMessage to . targetDeadText

playerHasAlreadyHealedMessage :: Text -> Message
playerHasAlreadyHealedMessage to = privateMessage to callerAlreadyHealedText

playerHasAlreadyPoisonedMessage :: Text -> Message
playerHasAlreadyPoisonedMessage to = privateMessage to callerAlreadyPoisonedText

playerCannotProtectSamePlayerTwiceInARowMessage :: Text -> Message
playerCannotProtectSamePlayerTwiceInARowMessage to = privateMessage to callerCannotProtectSamePlayerText

gameAlreadyRunningMessage :: Text -> Message
gameAlreadyRunningMessage to = privateMessage to gameAlreadyRunningText

mustHaveAtLeast7PlayersMessage :: Text -> Message
mustHaveAtLeast7PlayersMessage to = privateMessage to playerCountTooLowText

playerNamesMustBeUniqueMessage :: Text -> Message
playerNamesMustBeUniqueMessage to = privateMessage to playerNamesNotUniqueText

roleCountRestrictedMessage :: Text -> Role -> Message
roleCountRestrictedMessage to = privateMessage to . roleCountRestrictedText

roleDoesNotExistMessage :: Text -> Text -> Message
roleDoesNotExistMessage to = privateMessage to . roleDoesNotExistText

variantDoesNotExistMessage :: Text -> Text -> Message
variantDoesNotExistMessage to = privateMessage to . variantDoesNotExistText

playerHasNotVotedMessage :: Text -> Message
playerHasNotVotedMessage to = privateMessage to callerNotVotedText

playerHasAlreadyVotedMessage :: Text -> Message
playerHasAlreadyVotedMessage to = privateMessage to callerAlreadyVotedText

playerCannotDevourAnotherWerewolfMessage :: Text -> Message
playerCannotDevourAnotherWerewolfMessage to = privateMessage to callerCannotDevourAnotherWerewolfText