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 Sel 0 i <- w ^? hud . diSelection . _Just j <- w ^? cWorld . lWorld . creatures . ix 0 . crInv . ix (NInt i) w ^? cWorld . lWorld . items . ix j yourRootItem :: World -> Maybe Item yourRootItem w = do i <- w ^? hud . manObject . hiRootSelectedItem j <- w ^? cWorld . lWorld . creatures . ix 0 . crInv . ix i w ^? cWorld . lWorld . items . ix j yourRootItemDT :: World -> Maybe (DTree OItem) yourRootItemDT w = do i <- w^?hud. manObject . hiRootSelectedItem . 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