40 lines
1.1 KiB
Haskell
40 lines
1.1 KiB
Haskell
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
|
|
|