Add force field gun
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user