Commit to check password
This commit is contained in:
+26
-29
@@ -643,16 +643,13 @@ retireRemoteBomb itid t pjid w = setScope w
|
||||
|
||||
moveRemoteBomb :: Int -> Int -> Int -> World -> World
|
||||
moveRemoteBomb itid time pID w
|
||||
| time < -4 = setScope
|
||||
$ updatePicture
|
||||
| time < -4 = updatePicture
|
||||
$ set (projectiles .ix pID.pjUpdate) (\_ -> moveRemoteBomb itid (f time) pID)
|
||||
w
|
||||
| time < 2
|
||||
= case hitWl of
|
||||
| time < 2 = case hitWl of
|
||||
Just _ -> soundOnce (fromIntegral tapQuiet) $ halfV updatedWorld
|
||||
_ -> halfV updatedWorld
|
||||
| otherwise
|
||||
= case hitWl of
|
||||
| otherwise = case hitWl of
|
||||
Just _ -> soundOnce (fromIntegral tapQuiet) updatedWorld
|
||||
_ -> updatedWorld
|
||||
where
|
||||
@@ -660,15 +657,7 @@ moveRemoteBomb itid time pID w
|
||||
= updateV $ set (projectiles . ix pID . pjPos) finalPos
|
||||
$ updatePicture
|
||||
$ set (projectiles .ix pID.pjUpdate) (\_ -> moveRemoteBomb itid (time-1) pID)
|
||||
$ setScope
|
||||
w
|
||||
setScope w' = case _itemPositions w' IM.! itid of
|
||||
InInv cid invid
|
||||
-> w' & creatures . ix cid . crInv . ix invid . itAttachment
|
||||
. _Just . scopePos .~ (newPos -.- _crPos (_creatures w' IM.! cid))
|
||||
& creatures . ix cid . crInv . ix invid . itZoom
|
||||
.~ (defaultItZoom {_itAimZoomMax = 0.5, _itAimZoomMin = 0.5})
|
||||
_ -> w'
|
||||
pj = _projectiles w IM.! pID
|
||||
oldPos = _pjPos pj
|
||||
newPos = _pjVel pj +.+ oldPos
|
||||
@@ -690,6 +679,22 @@ moveRemoteBomb itid time pID w
|
||||
newPos
|
||||
(50 *.* unitVectorAtAngle (negate $ degToRad (10 * fromIntegral time)))
|
||||
[-0.2,-0.15,-0.1,-0.05,0,0.05,0.1,0.15,0.2]
|
||||
|
||||
setRemoteScope :: Int -> Projectile -> World -> World
|
||||
setRemoteScope itid pj w' = case w' ^? itemPositions . ix itid of
|
||||
Just (InInv cid' invid )
|
||||
-> w' & creatures . ix cid' . crInv . ix invid . itAttachment
|
||||
. _Just . scopePos .~ (_pjPos pj -.- _crPos (_creatures w' IM.! cid'))
|
||||
_ -> w'
|
||||
|
||||
setRemoteBombScope :: Int -> Projectile -> World -> World
|
||||
setRemoteBombScope itid pj w' = case _itemPositions w' IM.! itid of
|
||||
InInv cid invid
|
||||
-> w' & creatures . ix cid . crInv . ix invid . itAttachment
|
||||
. _Just . scopePos .~ (_pjPos pj -.- _crPos (_creatures w' IM.! cid))
|
||||
& creatures . ix cid . crInv . ix invid . itZoom
|
||||
.~ (defaultItZoom {_itAimZoomMax = 0.5, _itAimZoomMin = 0.5})
|
||||
_ -> w'
|
||||
|
||||
grenade :: Item
|
||||
grenade = Throwable
|
||||
@@ -771,7 +776,7 @@ fireRemoteLauncher cr w = setLocation
|
||||
, _pjVel = rotateV dir (1,0)
|
||||
, _pjDraw = remoteShellPic'
|
||||
, _pjID = i
|
||||
, _pjUpdate = \pj -> decTimMvVel pj . moveRemoteShell cid itid pj
|
||||
, _pjUpdate = \pj -> decTimMvVel pj . setRemoteScope itid pj . moveRemoteShell cid itid pj
|
||||
, _pjAcc = (0,0)
|
||||
, _pjDir = dir
|
||||
, _pjSpin = 0
|
||||
@@ -795,10 +800,10 @@ moveRemoteShell :: Int -> Int -> Projectile -> World -> World
|
||||
moveRemoteShell cid itid pj w
|
||||
| time > 40 = if circOnSomeWall oldPos 4 w
|
||||
then doExplosion w
|
||||
else w & setScope
|
||||
else w
|
||||
| time >= 20 = case thingHit of
|
||||
Just _ -> doExplosion w
|
||||
Nothing -> setScope w & projectiles . ix i . pjDir .~ newdir
|
||||
Nothing -> w & projectiles . ix i . pjDir .~ newdir
|
||||
| time > -99 = case thingHit of
|
||||
Just _ -> doExplosion $ stopSoundFrom (ShellSound i) w
|
||||
Nothing -> w & set randGen g
|
||||
@@ -809,10 +814,9 @@ moveRemoteShell cid itid pj w
|
||||
& soundFromPos (ShellSound i) newPos (fromIntegral smokeTrailSound) 1 250
|
||||
& smokeGen
|
||||
& makeFlameletTimed oldPos (0.5 *.* rotateV (pi+sparkD) accel) Nothing 3 10
|
||||
& setScope
|
||||
| time > -200 = case thingHit of
|
||||
Just _ -> doExplosion $ stopSoundFrom (ShellSound i) w
|
||||
Nothing -> setScope w
|
||||
Nothing -> w
|
||||
| otherwise = doExplosion $ stopSoundFrom (ShellSound i) w
|
||||
where
|
||||
time = _pjTimer pj
|
||||
@@ -821,26 +825,19 @@ moveRemoteShell cid itid pj w
|
||||
vel = _pjVel pj
|
||||
newPos = oldPos +.+ vel
|
||||
newdir
|
||||
| SDL.ButtonRight `S.member` _mouseButtons w
|
||||
&& w ^? creatures . ix cid . crInvSel == w ^? itemPositions . ix itid . itInvId
|
||||
| SDL.ButtonRight `S.member` _mouseButtons w
|
||||
&& w ^? creatures . ix cid . crInvSel == w ^? itemPositions . ix itid . itInvId
|
||||
= _cameraRot w + argV (_mousePos w)
|
||||
| otherwise = dir
|
||||
| otherwise = _pjDir pj
|
||||
accel = rotateV newdir (2,0)
|
||||
(frict,g) = randomR (0.6,0.9) $ _randGen w
|
||||
(sparkD,_) = randomR (-0.5,0.5) $ _randGen w
|
||||
dir = argV vel
|
||||
hitCr = fst <$> collideCircCrsPoint oldPos newPos 4 w
|
||||
hitWl = fst <$> collideCircWalls' oldPos newPos 2 (wallsNearPoint newPos w)
|
||||
thingHit = hitCr <|> hitWl
|
||||
|
||||
r1 = _randGen w & evalState (randInCirc 10)
|
||||
smokeGen = makeSmokeCloudAt $ oldPos +.+ r1 +.+ 30 *.* normalizeV (oldPos -.- newPos)
|
||||
doExplosion = explodeRemoteRocket itid i
|
||||
setScope w' = case _itemPositions w' IM.! itid of
|
||||
InInv cid' invid
|
||||
-> w' & creatures . ix cid' . crInv . ix invid . itAttachment
|
||||
. _Just . scopePos .~ (newPos -.- _crPos (_creatures w' IM.! cid'))
|
||||
_ -> w'
|
||||
|
||||
explodeRemoteRocket
|
||||
:: Int -- ^ Item id
|
||||
|
||||
Reference in New Issue
Block a user