{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE StrictData #-} module Dodge.Annotation.Data where import Dodge.Data import Dodge.Room import Data.Tree import Control.Monad.State import Control.Lens data Annotation g = Lock Int | Key Int | Corridor | AirlockAno | FirstWeapon | EndRoom | OrAno [[Annotation g]] | SpecificRoom (State g (Tree (Either Room Room))) | BossAno Creature | TreasureAno [Creature] [Item] | AnoApplyInt Int (Int -> State g (Tree (Either Room Room))) | SetLabel Int (State g Room) | UseLabel Int (State g Room) | ChainAnos [[Annotation g]] makeLenses ''Annotation