Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data Color
- type Colors = Set Color
- type CardName = String
- type CardAttribute = String
- data Player
- type ManaPool = String
- type ManaString = String
- data Location
- data CardEffect = CardEffect {
- _effectEnabled :: CardMatcher
- _effectFilter :: Card -> CardMatcher
- _effectAction :: Card -> GameMonad Card
- type EffectMonadEnv = (Board, Card)
- type EffectMonad a = Reader EffectMonadEnv a
- data Layer
- allLayers :: [Layer]
- data LayeredEffectPart = LayeredEffectPart Layer (Card -> EffectMonad Card)
- type LayeredEffect = [LayeredEffectPart]
- data LayeredEffectDefinition = LayeredEffectDefinition {}
- mkEffect :: CardMatcher -> (Card -> CardMatcher) -> (Card -> Identity Card) -> CardEffect
- mkLayeredEffectPart :: EffectMonad CardMatcher -> LayeredEffect -> EffectName -> LayeredEffectDefinition
- data Target
- targetPlayer :: Player -> Target
- targetCard :: CardName -> Target
- type CardLocation = (Player, Location)
- type CardAttributes = Set CardAttribute
- data CardStrength = CardStrength Int Int
- data Phase
- type Timestamp = Integer
- data EffectDuration = EndOfTurn
- data AbilityEffect = AbilityEffect Timestamp EffectDuration [LayeredEffectPart]
- data Card = Card {
- _cardName :: CardName
- _location :: (Player, Location)
- _cardOwner :: Player
- _cardDefaultAttributes :: CardAttributes
- _cardAttributes :: CardAttributes
- _cardStrength :: CardStrength
- _cardStrengthModifier :: CardStrength
- _cardDamage :: Int
- _cardLoyalty :: Int
- _cardEffects :: [CardEffect]
- _cardCmc :: Int
- _cardColors :: Colors
- _cardTargets :: [Target]
- _cardTimestamp :: Timestamp
- _cardPassiveEffects :: [LayeredEffectDefinition]
- _cardAbilityEffects :: [AbilityEffect]
- _cardPlusOneCounters :: Int
- _cardMinusOneCounters :: Int
- newtype BaseCard = BaseCard Card
- data CardMatcher = CardMatcher String (Card -> Bool)
- type EffectName = String
- data Board = Board {}
- data Env = Env {}
- type StepIdentifier = (Maybe String, Int)
- data Step = Step {}
- type GameMonad a = ExceptT String (ReaderT Env (StateT Board (WriterT [Step] Identity))) a
- type Formatter = Board -> String
- incrementStep :: StepIdentifier -> StepIdentifier
- stack :: Lens' Board [CardName]
- resolvedCards :: Lens' Board (HashMap CardName Card)
- phase :: Lens' Board Phase
- manaPool :: Lens' Board (HashMap Player ManaPool)
- life :: Lens' Board (HashMap Player Int)
- deck :: Lens' Board (HashMap Player [CardName])
- currentTime :: Lens' Board Timestamp
- currentStep :: Lens' Board StepIdentifier
- counters :: Lens' Board (HashMap String Int)
- cards :: Lens' Board (HashMap CardName BaseCard)
- location :: Lens' Card (Player, Location)
- cardTimestamp :: Lens' Card Timestamp
- cardTargets :: Lens' Card [Target]
- cardStrengthModifier :: Lens' Card CardStrength
- cardStrength :: Lens' Card CardStrength
- cardPlusOneCounters :: Lens' Card Int
- cardPassiveEffects :: Lens' Card [LayeredEffectDefinition]
- cardOwner :: Lens' Card Player
- cardName :: Lens' Card CardName
- cardMinusOneCounters :: Lens' Card Int
- cardLoyalty :: Lens' Card Int
- cardEffects :: Lens' Card [CardEffect]
- cardDefaultAttributes :: Lens' Card CardAttributes
- cardDamage :: Lens' Card Int
- cardColors :: Lens' Card Colors
- cardCmc :: Lens' Card Int
- cardAttributes :: Lens' Card CardAttributes
- cardAbilityEffects :: Lens' Card [AbilityEffect]
- effectFilter :: Lens' CardEffect (Card -> CardMatcher)
- effectEnabled :: Lens' CardEffect CardMatcher
- effectAction :: Lens' CardEffect (Card -> GameMonad Card)
- envTemplate :: Lens' Env Card
- envSBAEnabled :: Lens' Env Bool
- envOwner :: Lens' Env (Maybe Player)
- envActor :: Lens' Env Player
- stepState :: Lens' Step Board
- stepLabel :: Lens' Step String
- stepId :: Lens' Step StepIdentifier
- leName :: Lens' LayeredEffectDefinition EffectName
- leEffect :: Lens' LayeredEffectDefinition LayeredEffect
- leAppliesTo :: Lens' LayeredEffectDefinition (EffectMonad CardMatcher)
- stepFork :: Lens' Step (Maybe String)
- stepNumber :: Lens' Step Int
- mkStep :: StepIdentifier -> String -> Board -> Step
- cardLocation :: Lens' Card (Player, Location)
- cardPower :: Lens' Card Int
- cardToughness :: Lens' Card Int
- cardController :: Lens' Card Player
- manaPoolFor :: Functor f => Player -> ([Char] -> f [Char]) -> Board -> f Board
- _manaPoolForTyping :: Board -> ManaPool
- emptyEnv :: Env
- mkStrength :: (Int, Int) -> CardStrength
- emptyCard :: Card
- mkCard :: CardName -> (Player, Location) -> Card
- opposing :: Player -> Player
- emptyBoard :: Board
Documentation
type CardAttribute = String Source #
type ManaString = String Source #
data CardEffect Source #
CardEffect | |
|
type EffectMonadEnv = (Board, Card) Source #
type EffectMonad a = Reader EffectMonadEnv a Source #
Layer1A | Copiable effects |
Layer1B | Face down spells and permanents |
Layer2 | Control-changing effects |
Layer3 | Text changing effects |
Layer4 | Type changing effects |
Layer5 | Color changing effects |
Layer6 | Ability changing effects |
Layer7A | P/T from CDAs |
Layer7B | P/T from setting |
Layer7C | P/T adjustments (inc. counters) |
Layer7D | P/T Switching |
LayerOther | Other game rule affecting effects |
type LayeredEffect = [LayeredEffectPart] Source #
data LayeredEffectDefinition Source #
LayeredEffectDefinition | |
|
mkEffect :: CardMatcher -> (Card -> CardMatcher) -> (Card -> Identity Card) -> CardEffect Source #
mkLayeredEffectPart :: EffectMonad CardMatcher -> LayeredEffect -> EffectName -> LayeredEffectDefinition Source #
TargetPlayer Player | Target a player, use |
TargetCard CardName | Target a card, use |
targetPlayer :: Player -> Target Source #
targetCard :: CardName -> Target Source #
type CardLocation = (Player, Location) Source #
type CardAttributes = Set CardAttribute Source #
data CardStrength Source #
Instances
Eq CardStrength Source # | |
Defined in Dovin.Types (==) :: CardStrength -> CardStrength -> Bool # (/=) :: CardStrength -> CardStrength -> Bool # | |
Show CardStrength Source # | |
Defined in Dovin.Types showsPrec :: Int -> CardStrength -> ShowS # show :: CardStrength -> String # showList :: [CardStrength] -> ShowS # | |
Semigroup CardStrength Source # | |
Defined in Dovin.Types (<>) :: CardStrength -> CardStrength -> CardStrength # sconcat :: NonEmpty CardStrength -> CardStrength # stimes :: Integral b => b -> CardStrength -> CardStrength # | |
Monoid CardStrength Source # | |
Defined in Dovin.Types mempty :: CardStrength # mappend :: CardStrength -> CardStrength -> CardStrength # mconcat :: [CardStrength] -> CardStrength # |
A phase or step in a turn. Phases and steps are not distinguished between because haven't seen a need to.
Untap | |
Upkeep | |
DrawStep | |
FirstMain | |
BeginCombat | |
DeclareAttackers | |
DeclareBlockers | |
FirstStrikeDamage | |
CombatDamage | |
EndCombat | |
SecondMain | |
EndStep | |
Won Player |
data CardMatcher Source #
CardMatcher String (Card -> Bool) |
Instances
Show CardMatcher Source # | |
Defined in Dovin.Types showsPrec :: Int -> CardMatcher -> ShowS # show :: CardMatcher -> String # showList :: [CardMatcher] -> ShowS # | |
Semigroup CardMatcher Source # | |
Defined in Dovin.Types (<>) :: CardMatcher -> CardMatcher -> CardMatcher # sconcat :: NonEmpty CardMatcher -> CardMatcher # stimes :: Integral b => b -> CardMatcher -> CardMatcher # | |
Monoid CardMatcher Source # | |
Defined in Dovin.Types mempty :: CardMatcher # mappend :: CardMatcher -> CardMatcher -> CardMatcher # mconcat :: [CardMatcher] -> CardMatcher # |
type EffectName = String Source #
Board | |
|
Env | |
|
Step | |
|
cardEffects :: Lens' Card [CardEffect] Source #
effectFilter :: Lens' CardEffect (Card -> CardMatcher) Source #
effectAction :: Lens' CardEffect (Card -> GameMonad Card) Source #
_manaPoolForTyping :: Board -> ManaPool Source #
mkStrength :: (Int, Int) -> CardStrength Source #
emptyBoard :: Board Source #