Add file
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
module Dodge.Equipment.Text
|
||||
where
|
||||
|
||||
import Dodge.Data.Equipment.Misc
|
||||
|
||||
eqPosText :: EquipPosition -> String
|
||||
eqPosText ep = case ep of
|
||||
OnHead -> "HEAD"
|
||||
OnChest -> "CHESt"
|
||||
OnBack -> "BACK"
|
||||
OnLeftWrist -> "L.WRIST"
|
||||
OnRightWrist -> "R.WRIST"
|
||||
OnLegs -> "LEGS"
|
||||
OnSpecial -> "EQUIPPED"
|
||||
@@ -0,0 +1,46 @@
|
||||
module Dodge.Hotkey (
|
||||
assignHotkey,
|
||||
assignNewHotkey,
|
||||
removeHotkey,
|
||||
) where
|
||||
|
||||
import Control.Lens
|
||||
import Data.List
|
||||
import qualified Data.Map.Strict as M
|
||||
import qualified IntMapHelp as IM
|
||||
import Data.Maybe
|
||||
import Dodge.Data.World
|
||||
import Control.Monad
|
||||
|
||||
assignNewHotkey :: Int -> Creature -> Creature
|
||||
assignNewHotkey invid cr = assignHotkey invid (newHotkey cr) cr
|
||||
|
||||
newHotkey :: Creature -> Hotkey
|
||||
newHotkey cr = fromMaybe maxBound $ find (not . (`M.member` usedhks)) [minBound .. maxBound]
|
||||
where
|
||||
usedhks = cr ^?! crHotkeys
|
||||
|
||||
-- this will not remove the hotkey from its old slot, assumes there is a hotkey
|
||||
-- to swap with instead
|
||||
-- requires there actually is equipment in the slot, too
|
||||
assignHotkey :: Int -> Hotkey -> Creature -> Creature
|
||||
assignHotkey invid hk cr = fromMaybe cr $ do
|
||||
guard (invid `IM.member` (cr ^. crInvEquipped))
|
||||
_ <- cr ^? crInv . ix invid . itUse . leftUse
|
||||
return $ (setHotkey invid hk . moveOldHotkey invid hk) cr
|
||||
|
||||
moveOldHotkey :: Int -> Hotkey -> Creature -> Creature
|
||||
moveOldHotkey invid hk w = fromMaybe w $ do
|
||||
oldhk <- w ^? crInvHotkeys . ix invid
|
||||
oldid <- w ^? crHotkeys . ix hk
|
||||
return $ w & setHotkey oldid oldhk
|
||||
|
||||
setHotkey :: Int -> Hotkey -> Creature -> Creature
|
||||
setHotkey i hk = (crInvHotkeys . at i ?~ hk) . (crHotkeys . at hk ?~ i)
|
||||
|
||||
removeHotkey :: Int -> Creature -> Creature
|
||||
removeHotkey invid cr = cr & crInvHotkeys . at invid .~ Nothing
|
||||
& fromMaybe id (do
|
||||
hk <- cr ^? crInvHotkeys . ix invid
|
||||
return (crHotkeys . at hk .~ Nothing)
|
||||
)
|
||||
Reference in New Issue
Block a user