{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE StrictData #-}
module Dodge.Annotation.Data where
import Dodge.Data
import Dodge.Room
import Dodge.Tree.Compose.Data

import Control.Monad.State
import Control.Lens
data Annotation g
    = Lock Int
    | Key  Int
    | Corridor
    | AirlockAno
    | FirstWeapon
    | EndRoom
    | OrAno [[Annotation g]]
    | SpecificRoom (State g (SubCompTree Room))
    | BossAno Creature
    | TreasureAno [Creature] [Item]
    | AnoApplyInt Int (Int -> State g (SubCompTree Room))
    | PassthroughLockKeyLists Int 
        [(Int -> State g (SubCompTree Room), State g ItemIdentity)]
        [(ItemIdentity, State g (SubCompTree Room))]
--    | SetLabel Int (State g Room)
--    | UseLabel Int (State g Room)
    | ChainAnos [[Annotation g]]

makeLenses ''Annotation
