27 lines
643 B
Haskell
27 lines
643 B
Haskell
{-# 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
|