Cleanup
This commit is contained in:
@@ -68,43 +68,38 @@ toggleEquipmentAt invid cr w = case equipmentDesignation invid w of
|
||||
DoNotMoveEquipment -> w
|
||||
PutOnEquipment{_allocNewPos = newp} ->
|
||||
w
|
||||
& crpoint . crEquipment . at newp ?~ NInt itid
|
||||
& toequipment . at newp ?~ NInt itid
|
||||
& toitems . ix itid . itLocation . ilEquipSite ?~ newp
|
||||
& onequip itm cr
|
||||
& effectOnEquip itm cr
|
||||
MoveEquipment{_allocNewPos = newp, _allocOldPos = oldp} ->
|
||||
w
|
||||
& crpoint . crEquipment . at newp ?~ NInt itid
|
||||
& crpoint . crEquipment . at oldp .~ Nothing
|
||||
& toequipment . at newp ?~ NInt itid
|
||||
& toequipment . at oldp .~ Nothing
|
||||
& toitems . ix itid . itLocation . ilEquipSite ?~ newp
|
||||
SwapEquipment{_allocNewPos = newp, _allocOldPos = oldp, _allocSwapID = sid} ->
|
||||
w
|
||||
& crpoint . crEquipment . at newp ?~ NInt itid
|
||||
& crpoint . crEquipment . at oldp ?~ sid
|
||||
& toequipment . at newp ?~ NInt itid
|
||||
& toequipment . at oldp ?~ sid
|
||||
& toitems . ix itid . itLocation . ilEquipSite ?~ newp
|
||||
& toitems . ix (_unNInt sid) . itLocation . ilEquipSite ?~ oldp
|
||||
ReplaceEquipment{_allocNewPos = newp, _allocRemoveID = rid} ->
|
||||
w
|
||||
& crpoint . crEquipment . at newp ?~ NInt itid
|
||||
& toequipment . at newp ?~ NInt itid
|
||||
& toitems . ix itid . itLocation . ilEquipSite ?~ newp
|
||||
& toitems . ix (_unNInt rid) . itLocation . ilEquipSite .~ Nothing
|
||||
& onremove (itmat' rid) cr
|
||||
& onequip itm cr
|
||||
& effectOnRemove (itmat rid) cr
|
||||
& effectOnEquip itm cr
|
||||
RemoveEquipment{_allocOldPos = oldp} ->
|
||||
w
|
||||
& crpoint . crEquipment . at oldp .~ Nothing
|
||||
& toequipment . at oldp .~ Nothing
|
||||
& toitems . ix itid . itLocation . ilEquipSite .~ Nothing
|
||||
& onremove itm cr
|
||||
& effectOnRemove itm cr
|
||||
where
|
||||
invidtoitid :: NewInt InvInt -> Int
|
||||
invidtoitid i = cr ^?! crInv . ix i -- _crInv cr IM.! i
|
||||
toitems = cWorld . lWorld . items
|
||||
itid = invidtoitid invid
|
||||
crpoint = cWorld . lWorld . creatures . ix (_crID cr)
|
||||
itmat i = w ^?! cWorld . lWorld . items . ix (invidtoitid i)
|
||||
itmat' i = w ^?! cWorld . lWorld . items . ix (_unNInt i)
|
||||
itm = itmat invid
|
||||
onequip itm' = effectOnEquip itm'
|
||||
onremove itm' = effectOnRemove itm'
|
||||
itid = cr ^?! crInv . ix invid
|
||||
toequipment = cWorld . lWorld . creatures . ix (_crID cr) . crEquipment
|
||||
itmat i = w ^?! cWorld . lWorld . items . ix (_unNInt i)
|
||||
itm = w ^?! cWorld . lWorld . items . ix itid
|
||||
|
||||
toggleExamineInv :: World -> World
|
||||
toggleExamineInv w = case w ^? hud . subInventory of
|
||||
|
||||
@@ -1,27 +1,24 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE DeriveAnyClass #-}
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.RightButtonOptions where
|
||||
|
||||
import Dodge.Data.Item.Location
|
||||
import NewInt
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
import Dodge.Data.Equipment.Misc
|
||||
import Dodge.Data.Item.Location
|
||||
import NewInt
|
||||
|
||||
data RightButtonState
|
||||
= NoRightButtonState
|
||||
| EquipOptions { _opSel :: Int }
|
||||
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
||||
| EquipOptions {_opSel :: Int}
|
||||
|
||||
data EquipmentAllocation
|
||||
= DoNotMoveEquipment
|
||||
| PutOnEquipment
|
||||
{ _allocNewPos :: EquipSite
|
||||
}
|
||||
| PutOnEquipment {_allocNewPos :: EquipSite}
|
||||
| MoveEquipment
|
||||
{ _allocNewPos :: EquipSite
|
||||
, _allocOldPos :: EquipSite
|
||||
@@ -35,10 +32,7 @@ data EquipmentAllocation
|
||||
{ _allocNewPos :: EquipSite
|
||||
, _allocRemoveID :: NewInt ItmInt
|
||||
}
|
||||
| RemoveEquipment
|
||||
{ _allocOldPos :: EquipSite
|
||||
}
|
||||
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
||||
| RemoveEquipment {_allocOldPos :: EquipSite}
|
||||
|
||||
makeLenses ''RightButtonState
|
||||
makeLenses ''EquipmentAllocation
|
||||
|
||||
@@ -1,21 +1,22 @@
|
||||
{-# LANGUAGE TupleSections #-}
|
||||
|
||||
module Dodge.Inventory.RBList (
|
||||
updateRBList,
|
||||
equipmentDesignation,
|
||||
eqTypeToSites,
|
||||
) where
|
||||
|
||||
import NewInt
|
||||
--import qualified Data.IntMap.Strict as IM
|
||||
import Dodge.Data.Equipment.Misc
|
||||
import Dodge.Data.EquipType
|
||||
|
||||
--import Control.Applicative
|
||||
import Control.Lens
|
||||
import Data.List (elemIndex, findIndex)
|
||||
import qualified Data.Map.Strict as M
|
||||
import Data.Maybe
|
||||
import Dodge.Base.You
|
||||
import Dodge.Data.EquipType
|
||||
import Dodge.Data.World
|
||||
import NewInt
|
||||
import qualified SDL
|
||||
|
||||
updateRBList :: World -> World
|
||||
@@ -27,8 +28,9 @@ updateRBList w = case w ^. rbState of
|
||||
itid <- cr ^? crInv . ix i
|
||||
itm <- w ^? cWorld . lWorld . items . ix itid
|
||||
etype <- equipType itm
|
||||
return $ w & rbState
|
||||
.~ EquipOptions (chooseEquipPosition itm cr (eqTypeToSites etype))
|
||||
return $
|
||||
w & rbState
|
||||
.~ EquipOptions (chooseEquipPosition itm cr (eqTypeToSites etype))
|
||||
where
|
||||
--norightclick = not $ SDL.ButtonRight `M.member` (w ^. input . mouseButtons)
|
||||
norightclick = null $ w ^. input . mouseButtons . at SDL.ButtonRight
|
||||
@@ -40,6 +42,7 @@ chooseEquipPosition :: Item -> Creature -> [EquipSite] -> Int
|
||||
chooseEquipPosition itm cr eps = fromMaybe (chooseFreeSite cr eps) $ do
|
||||
ep <- itm ^? itLocation . ilEquipSite . _Just
|
||||
elemIndex ep eps
|
||||
-- (elemIndex <$> (itm ^? itLocation . ilEquipSite . _Just)) ?? eps
|
||||
|
||||
chooseFreeSite :: Creature -> [EquipSite] -> Int
|
||||
chooseFreeSite cr = fromMaybe 0 . findIndex hasnoequipment
|
||||
@@ -52,27 +55,24 @@ equipmentDesignation invid w = fromMaybe DoNotMoveEquipment $ do
|
||||
etype <- w ^? cWorld . lWorld . items . ix itid >>= equipType
|
||||
let mesite = w ^? cWorld . lWorld . items . ix itid . itLocation . ilEquipSite . _Just
|
||||
i <- w ^? rbState . opSel
|
||||
es <- eqTypeToSites etype ^? ix i
|
||||
new <- eqTypeToSites etype ^? ix i
|
||||
return $ case mesite of
|
||||
Just epos | es == epos -> RemoveEquipment{_allocOldPos = epos}
|
||||
Just epos | isJust (you w ^? crEquipment . ix es) ->
|
||||
Just old | new == old -> RemoveEquipment{_allocOldPos = old}
|
||||
Just old
|
||||
| isJust (you w ^? crEquipment . ix new) ->
|
||||
SwapEquipment
|
||||
{ _allocOldPos = epos
|
||||
, _allocNewPos = es
|
||||
, _allocSwapID = _crEquipment (you w) M.! es
|
||||
{ _allocOldPos = old
|
||||
, _allocNewPos = new
|
||||
, _allocSwapID = _crEquipment (you w) M.! new
|
||||
}
|
||||
Just epos ->
|
||||
MoveEquipment
|
||||
{ _allocOldPos = epos
|
||||
, _allocNewPos = es
|
||||
}
|
||||
Just old -> MoveEquipment{_allocOldPos = old, _allocNewPos = new}
|
||||
Nothing
|
||||
| isJust (you w ^? crEquipment . ix es) ->
|
||||
| isJust (you w ^? crEquipment . ix new) ->
|
||||
ReplaceEquipment
|
||||
{ _allocNewPos = es
|
||||
, _allocRemoveID = _crEquipment (you w) M.! es
|
||||
{ _allocNewPos = new
|
||||
, _allocRemoveID = _crEquipment (you w) M.! new
|
||||
}
|
||||
Nothing -> PutOnEquipment{_allocNewPos = es}
|
||||
Nothing -> PutOnEquipment{_allocNewPos = new}
|
||||
|
||||
eqTypeToSites :: EquipType -> [EquipSite]
|
||||
eqTypeToSites es = case es of
|
||||
|
||||
Reference in New Issue
Block a user