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
|
|
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
|
|
|