Add file
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
module Dodge.Equipment (
|
||||
effectOnRemove,
|
||||
effectOnEquip,
|
||||
) where
|
||||
|
||||
import Dodge.Creature.Test
|
||||
import Dodge.Creature.HandPos
|
||||
import Geometry
|
||||
import Dodge.Wall.Move
|
||||
import Dodge.Wall.ForceField
|
||||
import qualified IntMapHelp as IM
|
||||
import Dodge.Wall.Delete
|
||||
import Dodge.Item.Location
|
||||
import Control.Lens
|
||||
import Dodge.Data.World
|
||||
import Data.Maybe
|
||||
|
||||
effectOnRemove :: Item -> Creature -> World -> World
|
||||
effectOnRemove itm = case itm ^. itType of
|
||||
EQUIP WRISTARMOUR -> onRemoveWristShield' itm
|
||||
_ -> \_ -> id
|
||||
|
||||
onRemoveWristShield' :: Item -> Creature -> World -> World
|
||||
onRemoveWristShield' itm _ =
|
||||
--(pointerToItem itm . itUse . uequipEffect . eeParams .~ NoEquipParams) . mremovewall
|
||||
(pointerToItem itm . itParams .~ NoParams) . mremovewall
|
||||
where
|
||||
mremovewall = fromMaybe id $ do
|
||||
--i <- itm ^? itUse . uequipEffect . eeParams . eparamID
|
||||
i <- itm ^? itParams . itParamID
|
||||
return $ deleteWallID i
|
||||
|
||||
effectOnEquip :: Item -> Creature -> World -> World
|
||||
effectOnEquip itm = case itm ^. itType of
|
||||
EQUIP WRISTARMOUR -> onEquipWristShield' itm
|
||||
_ -> \_ -> id
|
||||
|
||||
onEquipWristShield' :: Item -> Creature -> World -> World
|
||||
onEquipWristShield' itm cr w =
|
||||
w
|
||||
-- & pointerToItem itm . itUse . uequipEffect . eeParams .~ EquipID i
|
||||
& pointerToItem itm . itParams .~ ItemParamID {_itParamID = i}
|
||||
& cWorld . lWorld . walls . at i ?~ forceField{_wlID = i}
|
||||
& setWristShieldPos (itm
|
||||
-- & itUse . uequipEffect . eeParams .~ EquipID i
|
||||
& itParams .~ ItemParamID {_itParamID = i}
|
||||
) cr
|
||||
where
|
||||
i = IM.newKey (w ^. cWorld . lWorld . walls)
|
||||
|
||||
setWristShieldPos :: Item -> Creature -> World -> World
|
||||
setWristShieldPos itm cr w = w & moveWallIDUnsafe i wlline
|
||||
where
|
||||
--i = _eparamID $ _eeParams $ _uequipEffect $ _itUse itm
|
||||
i = _itParamID $ _itParams itm
|
||||
wlline = (f (V3 (-10) 7 0), f (V3 10 7 0))
|
||||
invid = _ilInvID (_itLocation itm)
|
||||
handtrans = case cr ^? crInv . ix invid . itLocation . ilEquipSite . _Just of
|
||||
Just OnLeftWrist -> \cr' -> translatePointToLeftHand cr' . g
|
||||
_ -> translatePointToRightHand
|
||||
g
|
||||
| twists cr = (+.+.+ V3 (-5) 10 0)
|
||||
| otherwise = id
|
||||
f = (+.+ _crPos cr) . stripZ . rotate3 (_crDir cr) . handtrans cr
|
||||
Reference in New Issue
Block a user