Cleanup
This commit is contained in:
+23
-26
@@ -1,3 +1,5 @@
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
|
||||
module Dodge.Barreloid (updateBarreloid) where
|
||||
|
||||
import Data.List
|
||||
@@ -9,37 +11,32 @@ import Dodge.Spark
|
||||
import Dodge.WorldEvent.Explosion
|
||||
import Geometry
|
||||
import LensHelp
|
||||
import System.Random
|
||||
|
||||
updateBarreloid :: Creature -> World -> World
|
||||
updateBarreloid cr = case cr ^?! crType . barrelType of
|
||||
ExplosiveBarrel{} -> updateExpBarrel cr
|
||||
PlainBarrel -> updateBarrel cr
|
||||
updateBarreloid :: BarrelType -> Creature -> World -> World
|
||||
updateBarreloid = \case
|
||||
ExplosiveBarrel ps -> updateExpBarrel ps
|
||||
PlainBarrel -> updateBarrel
|
||||
|
||||
-- should generate the sparks externally using new random generators
|
||||
updateExpBarrel :: Creature -> World -> World
|
||||
updateExpBarrel cr w
|
||||
| _crHP cr > 0 = foldl' (flip ($)) (hiss w & cWorld . lWorld . creatures . at (_crID cr) .~ newCr) pierceSparks
|
||||
| otherwise = makeExplosionAt (_crPos cr) 0 $ stopSounds w & cWorld . lWorld . creatures . at (_crID cr) .~ Nothing
|
||||
updateExpBarrel :: [Point2] -> Creature -> World -> World
|
||||
updateExpBarrel ps cr w
|
||||
| cr ^. crHP > 0 =
|
||||
w
|
||||
& hiss
|
||||
& cWorld . lWorld . creatures . ix (_crID cr) %~ damsToExpBarrel damages
|
||||
& cWorld . lWorld . creatures . ix (_crID cr) . crHP
|
||||
-~ length (_piercedPoints . _barrelType $ _crType cr)
|
||||
& cWorld . lWorld . creatures . ix (_crID cr) . crDamage .~ mempty
|
||||
& flip (foldl' f) ps
|
||||
| otherwise =
|
||||
w
|
||||
& makeExplosionAt (cr ^. crPos) 0
|
||||
& cWorld . lWorld . creatures . at (_crID cr) .~ Nothing
|
||||
where
|
||||
g = _randGen w
|
||||
f w' p = makeSpark NormalSpark (p + normalizeV p + cr ^. crPos) (argV p) w'
|
||||
damages = cr ^. crDamage
|
||||
pierceSparks :: [World -> World]
|
||||
pierceSparks =
|
||||
zipWith
|
||||
(\p a -> sparkRandDir 0.1 (_crPos cr +.+ p) (a + argV p))
|
||||
poss
|
||||
as
|
||||
as = randomRs (-0.7, 0.7) g
|
||||
poss = _piercedPoints $ _barrelType $ _crType cr
|
||||
newCr = Just $ applyFuseDamage $ set crDamage [] $ damsToExpBarrel damages cr
|
||||
applyFuseDamage cr' =
|
||||
cr' & crHP
|
||||
%~ subtract (length . _piercedPoints . _barrelType $ _crType cr')
|
||||
hiss
|
||||
| null poss = id
|
||||
| otherwise = soundMultiFrom [BarrelHiss 0, BarrelHiss 1] (_crPos cr) foamSprayLoopS (Just 1)
|
||||
stopSounds = stopSoundFrom (BarrelHiss 0) . stopSoundFrom (BarrelHiss 1)
|
||||
| null ps = id
|
||||
| otherwise = soundContinue (BarrelHiss (_crID cr)) (_crPos cr) foamSprayLoopS (Just 1)
|
||||
|
||||
updateBarrel :: Creature -> World -> World
|
||||
updateBarrel cr
|
||||
|
||||
@@ -15,7 +15,7 @@ updateCreature cr = case _crType cr of
|
||||
Avatar{} -> (cWorld . lWorld . creatures . ix 0 . crType . avatarPulse %~ updatePulse)
|
||||
. crUpdate yourControl cr
|
||||
LampCrit{} -> updateLampoid cr
|
||||
BarrelCrit{} -> updateBarreloid cr
|
||||
BarrelCrit bt -> updateBarreloid bt cr
|
||||
AvatarDead -> id
|
||||
_ -> updateHumanoid cr
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ makeFlameExplosionAt p w =
|
||||
makeExplosionAt :: Point2 -> Point2 -> World -> World
|
||||
makeExplosionAt p vel w =
|
||||
w
|
||||
& soundMultiFrom [Explosion 0, Explosion 1] p bangS Nothing
|
||||
& soundStart (Explosion (w ^. cWorld . lWorld . lClock)) p bangS Nothing
|
||||
& addFlames
|
||||
& cWorld . lWorld . worldEvents
|
||||
.:~ MakeTempLight (LSParam (addZ 20 p) 150 (V3 1 0.5 0)) 20
|
||||
|
||||
@@ -3389,7 +3389,7 @@ applyGravityPU src/Dodge/Projectile/Update.hs 56;" f
|
||||
applyIndividualDamage src/Dodge/Creature/Damage.hs 47;" f
|
||||
applyInvLock src/Dodge/HeldUse.hs 423;" f
|
||||
applyMagnetsToBul src/Dodge/Bullet.hs 30;" f
|
||||
applyPastDamages src/Dodge/Creature/State.hs 135;" f
|
||||
applyPastDamages src/Dodge/Creature/State.hs 131;" f
|
||||
applyPiercingDamage src/Dodge/Creature/Damage.hs 52;" f
|
||||
applyPosition src/Sound.hs 111;" f
|
||||
applyRecoil src/Dodge/HeldUse.hs 455;" f
|
||||
@@ -3577,7 +3577,7 @@ centerVaultRoom src/Dodge/Room/Procedural.hs 289;" f
|
||||
centroid src/Geometry/Polygon.hs 130;" f
|
||||
centroidNum src/Geometry/Polygon.hs 133;" f
|
||||
chainCreatureUpdates src/Dodge/Creature/ChainUpdates.hs 6;" f
|
||||
chainLinkOrientation src/Dodge/Creature/State.hs 270;" f
|
||||
chainLinkOrientation src/Dodge/Creature/State.hs 261;" f
|
||||
chainPairs src/Geometry.hs 359;" f
|
||||
changeSwapOther src/Dodge/Inventory.hs 144;" f
|
||||
changeSwapSel src/Dodge/Inventory.hs 137;" f
|
||||
@@ -3592,7 +3592,7 @@ chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 31;" f
|
||||
chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 37;" f
|
||||
checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f
|
||||
checkConnection src/Dodge/Inventory/Swap.hs 64;" f
|
||||
checkDeath src/Dodge/Creature/State.hs 78;" f
|
||||
checkDeath src/Dodge/Creature/State.hs 76;" f
|
||||
checkEndGame src/Dodge/Update.hs 705;" f
|
||||
checkErrorGL src/Shader/Compile.hs 255;" f
|
||||
checkFBO src/Framebuffer/Check.hs 6;" f
|
||||
@@ -3704,13 +3704,13 @@ convexHull src/Geometry/Polygon.hs 104;" f
|
||||
convexHullSafe src/Geometry/Polygon.hs 111;" f
|
||||
convexPolysOverlap src/Geometry/ConvexPoly.hs 50;" f
|
||||
copier src/Dodge/Item/Scope.hs 88;" f
|
||||
copierItemUpdate src/Dodge/Creature/State.hs 176;" f
|
||||
copierItemUpdate src/Dodge/Creature/State.hs 168;" f
|
||||
copierItemUpdate src/Dodge/ItEffect.hs 37;" f
|
||||
copyItemToFloor src/Dodge/FloorItem.hs 18;" f
|
||||
copyItemToFloorID src/Dodge/FloorItem.hs 22;" f
|
||||
corDoor src/Dodge/Room/Room.hs 376;" f
|
||||
cornerList src/Preload/Render.hs 195;" f
|
||||
corpseOrGib src/Dodge/Creature/State.hs 107;" f
|
||||
corpseOrGib src/Dodge/Creature/State.hs 105;" f
|
||||
corridor src/Dodge/Room/Corridor.hs 17;" f
|
||||
corridorBoss src/Dodge/LockAndKey.hs 133;" f
|
||||
corridorN src/Dodge/Room/Corridor.hs 52;" f
|
||||
@@ -3821,7 +3821,7 @@ cylinderPoly src/Shape.hs 87;" f
|
||||
cylinderRoundIndices src/Shader/Poke.hs 389;" f
|
||||
dShadCol src/Dodge/Render/List.hs 215;" f
|
||||
damThingHitWith src/Dodge/WorldEvent/Damage.hs 10;" f
|
||||
damToExpBarrel src/Dodge/Barreloid.hs 52;" f
|
||||
damToExpBarrel src/Dodge/Barreloid.hs 44;" f
|
||||
damageBlocksBy src/Dodge/Wall/Damage.hs 36;" f
|
||||
damageCircle src/Dodge/DamageCircle.hs 12;" f
|
||||
damageCircle src/Dodge/EnergyBall.hs 104;" f
|
||||
@@ -3842,7 +3842,7 @@ damageWallEffect src/Dodge/Wall/DamageEffect.hs 12;" f
|
||||
damageWlCircle src/Dodge/DamageCircle.hs 26;" f
|
||||
damageWlCircle src/Dodge/EnergyBall.hs 125;" f
|
||||
dampField src/Dodge/Magnet.hs 8;" f
|
||||
damsToExpBarrel src/Dodge/Barreloid.hs 49;" f
|
||||
damsToExpBarrel src/Dodge/Barreloid.hs 41;" f
|
||||
dark src/Color.hs 108;" f
|
||||
darkenBackground src/Dodge/Render/MenuScreen.hs 52;" f
|
||||
dbArg src/Dodge/Base.hs 165;" f
|
||||
@@ -3999,7 +3999,7 @@ dmType src/Dodge/Damage.hs 34;" f
|
||||
doAfterPlacement src/Dodge/Layout.hs 86;" f
|
||||
doAfterPlacements src/Dodge/Layout.hs 83;" f
|
||||
doAimTwist src/Dodge/Creature/YourControl.hs 140;" f
|
||||
doAnyEquipmentEffect src/Dodge/Creature/State.hs 187;" f
|
||||
doAnyEquipmentEffect src/Dodge/Creature/State.hs 178;" f
|
||||
doArcStep src/Dodge/Tesla/Arc.hs 135;" f
|
||||
doBackspace src/Dodge/Update/Input/Text.hs 31;" f
|
||||
doBlBl src/Dodge/BlBl.hs 5;" f
|
||||
@@ -4015,7 +4015,7 @@ doCrImp src/Dodge/CreatureEffect.hs 28;" f
|
||||
doCrWdAc src/Dodge/CreatureEffect.hs 77;" f
|
||||
doCrWdImp src/Dodge/CreatureEffect.hs 16;" f
|
||||
doCrWdWd src/Dodge/CreatureEffect.hs 20;" f
|
||||
doDamage src/Dodge/Creature/State.hs 129;" f
|
||||
doDamage src/Dodge/Creature/State.hs 127;" f
|
||||
doDeathToggle src/Dodge/WorldEffect.hs 98;" f
|
||||
doDeathTriggers src/Dodge/WorldEffect.hs 93;" f
|
||||
doDebugTest src/Dodge/Update/Input/DebugTest.hs 22;" f
|
||||
@@ -4096,7 +4096,7 @@ doublePair src/Geometry.hs 161;" f
|
||||
doublePairSet src/Geometry.hs 165;" f
|
||||
doubleTreeToIndentList src/Dodge/DoubleTree.hs 72;" f
|
||||
doubleV2 src/Geometry.hs 168;" f
|
||||
drawARHUD src/Dodge/Creature/State.hs 297;" f
|
||||
drawARHUD src/Dodge/Creature/State.hs 288;" f
|
||||
drawAimSweep src/Dodge/Render/Picture.hs 271;" f
|
||||
drawAllShadows src/Dodge/Shadows.hs 5;" f
|
||||
drawBaseMachine src/Dodge/Machine/Draw.hs 57;" f
|
||||
@@ -4223,7 +4223,7 @@ drawWlIDs src/Dodge/Debug/Picture.hs 367;" f
|
||||
drawZoneCol src/Dodge/Debug/Picture.hs 142;" f
|
||||
drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 279;" f
|
||||
droneLauncher src/Dodge/Item/Weapon/Drone.hs 11;" f
|
||||
dropAll src/Dodge/Creature/State.hs 126;" f
|
||||
dropAll src/Dodge/Creature/State.hs 124;" f
|
||||
dropExcept src/Dodge/Creature/Action.hs 166;" f
|
||||
dropInventoryPath src/Dodge/HeldUse.hs 1354;" f
|
||||
dropItem src/Dodge/Creature/Action.hs 172;" f
|
||||
@@ -4644,16 +4644,15 @@ invCursorParams src/Dodge/ListDisplayParams.hs 36;" f
|
||||
invDP src/Dodge/ListDisplayParams.hs 30;" f
|
||||
invDimColor src/Dodge/DisplayInventory.hs 192;" f
|
||||
invHead src/Dodge/Render/HUD.hs 405;" f
|
||||
invItemLocUpdate src/Dodge/Creature/State.hs 160;" f
|
||||
invItemLocUpdate src/Dodge/Creature/State.hs 152;" f
|
||||
invLDT src/Dodge/Item/Grammar.hs 279;" f
|
||||
invRootItemEffs src/Dodge/Creature/State.hs 153;" f
|
||||
invRootItemEffs src/Dodge/Creature/State.hs 145;" f
|
||||
invRootMap src/Dodge/Item/Grammar.hs 288;" f
|
||||
invRootTrees src/Dodge/Item/Grammar.hs 309;" f
|
||||
invSelectionItem src/Dodge/Inventory/SelectionList.hs 32;" f
|
||||
invSetSelection src/Dodge/Inventory.hs 185;" f
|
||||
invSetSelectionPos src/Dodge/Inventory.hs 193;" f
|
||||
invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f
|
||||
invSideEff src/Dodge/Creature/State.hs 149;" f
|
||||
invSize src/Dodge/Inventory/CheckSlots.hs 30;" f
|
||||
inventoryX src/Dodge/Creature.hs 114;" f
|
||||
inverseSelNumPos src/Dodge/SelectionSections.hs 228;" f
|
||||
@@ -5270,7 +5269,7 @@ pointerToItemLocation src/Dodge/Item/Location.hs 14;" f
|
||||
pointerYourRootItem src/Dodge/Item/Location.hs 31;" f
|
||||
pointerYourSelectedItem src/Dodge/Item/Location.hs 25;" f
|
||||
pointsToPoly src/Geometry/ConvexPoly.hs 39;" f
|
||||
poisonSPic src/Dodge/Creature/State.hs 120;" f
|
||||
poisonSPic src/Dodge/Creature/State.hs 118;" f
|
||||
poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f
|
||||
poke34 src/Shader/Poke.hs 506;" f
|
||||
pokeArrayOff src/Shader/Poke.hs 517;" f
|
||||
@@ -5619,7 +5618,7 @@ scaleSH src/Shape.hs 269;" f
|
||||
scalp src/Dodge/Creature/Picture.hs 90;" f
|
||||
scancodeToHotkey src/Dodge/Creature/YourControl.hs 95;" f
|
||||
scodeToChar src/Dodge/ScodeToChar.hs 6;" f
|
||||
scorchSPic src/Dodge/Creature/State.hs 117;" f
|
||||
scorchSPic src/Dodge/Creature/State.hs 115;" f
|
||||
screenBox src/Dodge/Base/Window.hs 53;" f
|
||||
screenPolygon src/Dodge/Base/Window.hs 17;" f
|
||||
screenPolygonBord src/Dodge/Base/Window.hs 27;" f
|
||||
@@ -5693,7 +5692,7 @@ setOldPos src/Dodge/Update.hs 466;" f
|
||||
setOutLinks src/Dodge/RoomLink.hs 48;" f
|
||||
setOutLinksByType src/Dodge/RoomLink.hs 57;" f
|
||||
setOutLinksPD src/Dodge/RoomLink.hs 77;" f
|
||||
setRBCreatureTargeting src/Dodge/Creature/State.hs 403;" f
|
||||
setRBCreatureTargeting src/Dodge/Creature/State.hs 394;" f
|
||||
setSelWhileDragging src/Dodge/Update/Input/InGame.hs 334;" f
|
||||
setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 87;" f
|
||||
setShaderSource src/Shader/Compile.hs 290;" f
|
||||
@@ -5761,8 +5760,8 @@ shiftRoomBy src/Dodge/Room/Link.hs 37;" f
|
||||
shiftRoomShiftBy src/Dodge/Room/Link.hs 81;" f
|
||||
shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f
|
||||
shiftedGrid src/Grid.hs 25;" f
|
||||
shineTargetLaser src/Dodge/Creature/State.hs 305;" f
|
||||
shineTorch src/Dodge/Creature/State.hs 346;" f
|
||||
shineTargetLaser src/Dodge/Creature/State.hs 296;" f
|
||||
shineTorch src/Dodge/Creature/State.hs 337;" f
|
||||
shootBullet src/Dodge/HeldUse.hs 936;" f
|
||||
shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f
|
||||
shootLaser src/Dodge/HeldUse.hs 845;" f
|
||||
@@ -6141,8 +6140,8 @@ tryPutItemInInvAt src/Dodge/Inventory/Add.hs 32;" f
|
||||
trySeedFromClipboard src/Dodge/Menu.hs 91;" f
|
||||
tryShellBounce src/Dodge/Projectile/Update.hs 103;" f
|
||||
trySpinByCID src/Dodge/Projectile/Update.hs 178;" f
|
||||
trySynthBullet src/Dodge/Creature/State.hs 201;" f
|
||||
tryUseParent src/Dodge/Creature/State.hs 194;" f
|
||||
trySynthBullet src/Dodge/Creature/State.hs 192;" f
|
||||
tryUseParent src/Dodge/Creature/State.hs 185;" f
|
||||
turnTo src/Dodge/Movement/Turn.hs 8;" f
|
||||
turret src/Dodge/Placement/Instance/Turret.hs 35;" f
|
||||
turretItemOffset src/Dodge/Item/HeldOffset.hs 19;" f
|
||||
@@ -6182,10 +6181,10 @@ updateAimPos src/Dodge/Update.hs 305;" f
|
||||
updateAllNodes src/TreeHelp.hs 85;" f
|
||||
updateArc src/Dodge/Tesla.hs 44;" f
|
||||
updateArc src/Dodge/Tesla/Arc.hs 100;" f
|
||||
updateAttachedItems src/Dodge/Creature/State.hs 260;" f
|
||||
updateAttachedItems src/Dodge/Creature/State.hs 251;" f
|
||||
updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 453;" f
|
||||
updateBarrel src/Dodge/Barreloid.hs 44;" f
|
||||
updateBarreloid src/Dodge/Barreloid.hs 14;" f
|
||||
updateBarrel src/Dodge/Barreloid.hs 36;" f
|
||||
updateBarreloid src/Dodge/Barreloid.hs 13;" f
|
||||
updateBaseWheelEvent src/Dodge/Update/Scroll.hs 29;" f
|
||||
updateBounds src/Dodge/Update/Camera.hs 250;" f
|
||||
updateBulVel src/Dodge/Bullet.hs 55;" f
|
||||
@@ -6208,7 +6207,7 @@ updateDistortions src/Dodge/Update.hs 532;" f
|
||||
updateEnergyBall src/Dodge/EnergyBall.hs 37;" f
|
||||
updateEnergyBalls src/Dodge/Update.hs 597;" f
|
||||
updateEnterRegex src/Dodge/Update/Input/InGame.hs 480;" f
|
||||
updateExpBarrel src/Dodge/Barreloid.hs 20;" f
|
||||
updateExpBarrel src/Dodge/Barreloid.hs 18;" f
|
||||
updateFBOTO src/Framebuffer/Update.hs 97;" f
|
||||
updateFBOTO3 src/Framebuffer/Update.hs 131;" f
|
||||
updateFlame src/Dodge/Flame.hs 19;" f
|
||||
@@ -6217,7 +6216,7 @@ updateFloatingCamera src/Dodge/Update/Camera.hs 34;" f
|
||||
updateFunctionKey src/Dodge/Update/Input/InGame.hs 364;" f
|
||||
updateFunctionKeys src/Dodge/Update/Input/InGame.hs 357;" f
|
||||
updateGusts src/Dodge/Update.hs 714;" f
|
||||
updateHeldRootItem src/Dodge/Creature/State.hs 254;" f
|
||||
updateHeldRootItem src/Dodge/Creature/State.hs 245;" f
|
||||
updateHumanoid src/Dodge/Humanoid.hs 13;" f
|
||||
updateIMl src/Dodge/Update.hs 501;" f
|
||||
updateIMl' src/Dodge/Update.hs 506;" f
|
||||
@@ -6225,8 +6224,8 @@ updateInGameCamera src/Dodge/Update/Camera.hs 78;" f
|
||||
updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 400;" f
|
||||
updateInt2Map src/Dodge/Zoning/Base.hs 92;" f
|
||||
updateInventoryPositioning src/Dodge/DisplayInventory.hs 86;" f
|
||||
updateItemTargeting src/Dodge/Creature/State.hs 372;" f
|
||||
updateItemWithOrientation src/Dodge/Creature/State.hs 280;" f
|
||||
updateItemTargeting src/Dodge/Creature/State.hs 363;" f
|
||||
updateItemWithOrientation src/Dodge/Creature/State.hs 271;" f
|
||||
updateKeyInGame src/Dodge/Update/Input/InGame.hs 394;" f
|
||||
updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 382;" f
|
||||
updateLampoid src/Dodge/Lampoid.hs 12;" f
|
||||
|
||||
Reference in New Issue
Block a user