Add force field gun

This commit is contained in:
2022-05-26 13:17:51 +01:00
parent 58427da0c4
commit 5c41e2823e
7 changed files with 56 additions and 12 deletions
+20 -3
View File
@@ -1,15 +1,18 @@
module Dodge.Item.Weapon.Utility where
import Dodge.Data
--import Dodge.Base
import Dodge.Base.Coordinate
import Dodge.Default
--import Dodge.Picture.Layer
import Dodge.Creature.Action
import Dodge.Item.Weapon.TriggerType
import Dodge.Item.Weapon.ExtraEffect
import Dodge.Default.Weapon
import Dodge.Wall.ForceField
import Dodge.Wall.Move
--import Sound.Data
import Geometry
import Picture
--import qualified IntMapHelp as IM
import qualified IntMapHelp as IM
import Shape
import ShapePicture
@@ -134,9 +137,23 @@ forceFieldGun = defaultGun
, _reloadTime = 40
, _reloadState = Nothing'
}
, _itUse = undefined
, _itUse = ruseInstant useForceFieldGun (HasHammer HammerUp)
[ hammerCheckI , ammoCheckI , useAmmoAmount 1]
-- , _itFloorPict = \_ -> (,) emptySH $ onLayer FlItLayer $ polygon $ map toV2 [(-4,-4),(-4,4),(4,4),(4,0),(0,0),(0,-4)]
, _itTargeting = targetRBPress
, _itParams = ParamMID Nothing
}
useForceFieldGun :: Item -> Creature -> World -> World
useForceFieldGun itm cr w = w
& walls %~ IM.insertWith (\_ x -> x) i forceField {_wlID = i}
& creatures . ix (_crID cr) . crInv . ix (fromJust (_itInvPos itm)) . itParams . paramMID ?~ i
& moveWallIDUnsafe i wlline
where
i = fromMaybe (IM.newKey (_walls w)) $ itm ^? itParams . paramMID . _Just
a = fromJust . _tgPos $ _itTargeting itm
wlline = (a,mouseWorldPos w)
-- grapGun = defaultGun
-- { _itName = "grapGun"
-- , _itIdentity = GrapGun