22 lines
626 B
Haskell
22 lines
626 B
Haskell
module Dodge.AssignHotkey (
|
|
assignHotkey,
|
|
) where
|
|
|
|
import Dodge.Data.Equipment.Misc
|
|
import Control.Lens
|
|
import Data.Maybe
|
|
import Dodge.Data.World
|
|
import NewInt
|
|
|
|
-- it is not obvious to me whether hotkeys should belong to LWorld, CWorld or
|
|
-- World
|
|
assignHotkey :: NewInt ItmInt -> Hotkey -> LWorld -> LWorld
|
|
assignHotkey (NInt itid) hk lw = lw
|
|
& handleoldposition
|
|
& hotkeys . at hk ?~ NInt itid
|
|
& imHotkeys . unNIntMap . at itid ?~ hk
|
|
where
|
|
handleoldposition = fromMaybe id $ do
|
|
olditid <- lw ^? hotkeys . ix hk . unNInt
|
|
return $ imHotkeys . unNIntMap . at olditid .~ Nothing
|