module Dodge.Base.You (you , yourInv , yourSelectedItem , yourRootItem , yourRootItemDT )where import Dodge.Item.Grammar import Dodge.Data.ComposedItem import Dodge.Data.DoubleTree import NewInt import Dodge.Data.World --import qualified IntMapHelp as IM import Control.Lens you :: World -> Creature you w = w ^?! cWorld . lWorld . creatures . ix 0 yourSelectedItem :: World -> Maybe Item yourSelectedItem w = do i <- you w ^? crManipulation . manObject . imSelectedItem j <- _crInv (you w) ^? ix i w ^? cWorld . lWorld . items . ix j yourRootItem :: World -> Maybe Item yourRootItem w = do i <- you w ^? crManipulation . manObject . imRootSelectedItem j <- _crInv (you w) ^? ix i w ^? cWorld . lWorld . items . ix j yourRootItemDT :: World -> Maybe (DTree OItem) yourRootItemDT w = do i <- you w ^? crManipulation . manObject . imRootSelectedItem . unNInt invIMDT ((\k -> w ^?! cWorld . lWorld . items . ix k) <$> you w ^. crInv) ^? ix i yourInv :: World -> NewIntMap InvInt Item yourInv w = fmap (\i -> w ^?! cWorld . lWorld . items . ix i) . _crInv . you $ w