Simplify flamelet balls

This commit is contained in:
2025-08-05 08:47:47 +01:00
parent 22dafda9bd
commit 298238d594
5 changed files with 33 additions and 53 deletions
+1 -1
View File
@@ -122,7 +122,7 @@ useBulletPayload bu = case _buPayload bu of
(_buVel bu)
(ElectricalBall (round $ bu ^. buPos . _1))
BulBall FlashBall -> makeMovingEB (_buVel bu) FlashBall
BulBall (FlameletBall x r) -> makeMovingEB (_buVel bu) (FlameletBall x r)
BulBall (FlameletBall x) -> makeMovingEB (_buVel bu) (FlameletBall x)
BulBall IncendiaryBall -> makeMovingEB (_buVel bu) IncendiaryBall
makeFragBullets :: Point2 -> World -> World
+1 -1
View File
@@ -11,7 +11,7 @@ import Data.Aeson.TH
data EnergyBallType
= IncendiaryBall
| FlameletBall {_fbSize :: Float, _fbRot :: Float}
| FlameletBall {_fbSize :: Float}
| ElectricalBall {_ebID :: Int}
| ExplosiveBall
| FlashBall
+1 -18
View File
@@ -2,7 +2,6 @@
module Dodge.EnergyBall (
updateEnergyBall,
makeFlashBall,
makeFlamelet,
makeMovingEB,
) where
@@ -22,16 +21,13 @@ import Linear.V3
makeFlamelet :: Point3 -> Point3 -> Float -> Int -> World -> World
makeFlamelet p v s t w =
w
& randGen .~ g
& cWorld . lWorld . energyBalls
.:~ EnergyBall
{ _ebVel = v
, _ebPos = p
, _ebTimer = t
, _ebType = FlameletBall s a
, _ebType = FlameletBall s
}
where
(a, g) = randomR (0, 3) $ _randGen w
updateEnergyBall :: World -> EnergyBall -> (World, Maybe EnergyBall)
updateEnergyBall w eb
@@ -62,16 +58,6 @@ ebEffect eb = case _ebType eb of
soundStart (EBSound (-1)) (eb ^. ebPos . _xy) fireFadeS Nothing
_ -> id
energyBallAt :: EnergyBallType -> Point2 -> World -> World
energyBallAt ebt p =
cWorld . lWorld . energyBalls
.:~ EnergyBall
{ _ebVel = 0
, _ebPos = p `v2z` 20
, _ebTimer = 20
, _ebType = ebt
}
makeMovingEB :: Point2 -> EnergyBallType -> Point2 -> World -> World
makeMovingEB v ebt p =
cWorld . lWorld . energyBalls
@@ -82,9 +68,6 @@ makeMovingEB v ebt p =
, _ebType = ebt
}
makeFlashBall :: Point2 -> World -> World
makeFlashBall = energyBallAt FlashBall
ebFlicker :: EnergyBall -> World -> World
ebFlicker pt
| _ebTimer pt `mod` 7 == 0 =
+7 -7
View File
@@ -6,8 +6,8 @@ import Picture
drawEnergyBall :: EnergyBall -> Picture
drawEnergyBall eb = case _ebType eb of
FlameletBall x a -> drawFlamelet x a eb
IncendiaryBall -> drawFlamelet 5 0 eb
FlameletBall x -> drawFlamelet x eb
IncendiaryBall -> drawFlamelet 5 eb
ElectricalBall{} -> drawStaticBall eb
ExplosiveBall -> drawExplosiveBall eb
FlashBall -> mempty
@@ -34,8 +34,8 @@ drawStaticBall pt =
. translate3 (_ebPos pt)
$ circleSolidCol blue (withAlpha 0.5 white) 8
drawFlamelet :: Float -> Float -> EnergyBall -> Picture
drawFlamelet size rot pt =
drawFlamelet :: Float -> EnergyBall -> Picture
drawFlamelet size pt =
fold
[ setLayer BloomLayer pic
, setLayer BloomNoZWrite piu
@@ -58,7 +58,7 @@ drawFlamelet size rot pt =
(V4 2 0 0 1)
(V4 2 0 0 0)
)
. rotate (negate (rot - 0.1 * fromIntegral time))
. rotate (0.1 * fromIntegral time)
. scale s1 s1
. polygon
$ reverse (rectNSWE siz2 (- siz2) (- siz2) siz2)
@@ -75,7 +75,7 @@ drawFlamelet size rot pt =
(V4 2 1 0 0.5)
(V4 0 0 0 0)
)
. rotate (negate (rot + 0.2 * fromIntegral time))
. rotate (negate (0.2 * fromIntegral time))
. scale s2 s2
. polygon
. reverse
@@ -91,7 +91,7 @@ drawFlamelet size rot pt =
(V4 1 1 1 3)
(V4 1 0 0 1)
)
. rotate (negate (0.1 * fromIntegral time + rot))
. rotate (negate (0.1 * fromIntegral time))
. scale (0.5 * sc) (0.5 * sc)
$ polygon $ map toV2 [(- size, - size), (size, - size), (size, size), (- size, size)]
sc = (*) 2 $ log $ 1 + fromIntegral time / 20
+23 -26
View File
@@ -1636,7 +1636,6 @@ _buOldPos src/Dodge/Data/Bullet.hs 24;" f
_buPayload src/Dodge/Data/Bullet.hs 20;" f
_buPos src/Dodge/Data/Bullet.hs 23;" f
_buVel src/Dodge/Data/Bullet.hs 21;" f
_buWidth src/Dodge/Data/Bullet.hs 25;" f
_bullets src/Dodge/Data/LWorld.hs 109;" f
_burstFrames src/Dodge/Data/TriggerType.hs 12;" f
_burstRate src/Dodge/Data/TriggerType.hs 12;" f
@@ -3084,7 +3083,7 @@ createLightMap src/Render.hs 26;" f
createPathGrid src/Dodge/Room/Path.hs 21;" f
createProjectile src/Dodge/HeldUse.hs 1336;" f
createProjectileR src/Dodge/HeldUse.hs 1285;" f
createShell src/Dodge/Projectile/Create.hs 22;" f
createShell src/Dodge/Projectile/Create.hs 21;" f
createShieldWall src/Dodge/Item/BackgroundEffect.hs 39;" f
createUnusedLinkPos src/Dodge/Tree/Shift.hs 117;" f
createWall src/Dodge/Wall/Create.hs 8;" f
@@ -3145,7 +3144,7 @@ damageInCircle src/Dodge/Damage.hs 61;" f
damageMetal src/Dodge/Material/Damage.hs 55;" f
damageSensor src/Dodge/Placement/Instance/Sensor.hs 15;" f
damageStone src/Dodge/Material/Damage.hs 25;" f
damageThingHit src/Dodge/Bullet.hs 178;" f
damageThingHit src/Dodge/Bullet.hs 176;" f
damageTypeThreshold src/Dodge/Placement/Instance/Sensor.hs 45;" f
damageWall src/Dodge/Wall/Damage.hs 15;" f
damsToExpBarrel src/Dodge/Barreloid.hs 46;" f
@@ -3488,7 +3487,7 @@ drawShader src/Shader.hs 27;" f
drawShaderLay src/Shader.hs 16;" f
drawShadowsByImportance src/Dodge/Shadows.hs 8;" f
drawShell src/Dodge/Projectile/Draw.hs 22;" f
drawShockwave src/Dodge/Shockwave/Draw.hs 7;" f
drawShockwave src/Dodge/Shockwave/Draw.hs 6;" f
drawSpark src/Dodge/Spark/Draw.hs 7;" f
drawStaticBall src/Dodge/EnergyBall/Draw.hs 28;" f
drawSubInventory src/Dodge/Render/HUD.hs 161;" f
@@ -3539,11 +3538,11 @@ dtToUpDownAdj src/Dodge/DoubleTree.hs 158;" f
dummyMenuOption src/Dodge/Menu/Option.hs 74;" f
dustColor src/Shader/Poke/Cloud.hs 71;" f
dustSpringVel src/Dodge/Update.hs 880;" f
ebColor src/Dodge/EnergyBall.hs 95;" f
ebDamage src/Dodge/EnergyBall.hs 103;" f
ebEffect src/Dodge/EnergyBall.hs 50;" f
ebFlicker src/Dodge/EnergyBall.hs 88;" f
ebtToDamage src/Dodge/EnergyBall.hs 111;" f
ebColor src/Dodge/EnergyBall.hs 81;" f
ebDamage src/Dodge/EnergyBall.hs 89;" f
ebEffect src/Dodge/EnergyBall.hs 49;" f
ebFlicker src/Dodge/EnergyBall.hs 74;" f
ebtToDamage src/Dodge/EnergyBall.hs 97;" f
edgeFormatting src/Dodge/Combine/Graph.hs 131;" f
edgeToPic src/Dodge/Debug/Picture.hs 436;" f
effectOnEquip src/Dodge/Equipment.hs 32;" f
@@ -3561,7 +3560,6 @@ encircleP src/Dodge/Creature/Boid.hs 28;" f
endArcPos src/Dodge/Tesla.hs 87;" f
endCombineRegex src/Dodge/Update/Input/InGame.hs 267;" f
endRegex src/Dodge/Update/Input/InGame.hs 254;" f
energyBallAt src/Dodge/EnergyBall.hs 65;" f
energyReleaseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 592;" f
enterCombineInv src/Dodge/DisplayInventory.hs 323;" f
epText src/Dodge/Inventory/SelectionList.hs 76;" f
@@ -3592,7 +3590,7 @@ expandPolyBy src/Dodge/LevelGen/StaticWalls.hs 91;" f
expandPolyByFixed src/Dodge/LevelGen/StaticWalls.hs 97;" f
expandPolyCorners src/Dodge/LevelGen/StaticWalls.hs 103;" f
expandToSquare src/Dodge/LevelGen/StaticWalls/Deprecated.hs 83;" f
expireAndDamage src/Dodge/Bullet.hs 186;" f
expireAndDamage src/Dodge/Bullet.hs 184;" f
explodeShell src/Dodge/Projectile/Update.hs 283;" f
explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 556;" f
explosiveBarrel src/Dodge/Creature/Inanimate.hs 25;" f
@@ -3722,7 +3720,7 @@ getArguments' src/Dodge/Update/Scroll.hs 166;" f
getAttachedSFLink src/Dodge/HeldUse.hs 780;" f
getAutoSpringLinks src/Dodge/Item/Grammar.hs 84;" f
getAvailableListLines src/Dodge/SelectionList.hs 10;" f
getBulHitDams src/Dodge/Bullet.hs 171;" f
getBulHitDams src/Dodge/Bullet.hs 169;" f
getBulletType src/Dodge/HeldUse.hs 957;" f
getCloseObj src/Dodge/Update/Input/InGame.hs 515;" f
getCommands src/Dodge/Terminal.hs 117;" f
@@ -3853,7 +3851,7 @@ highBar src/Dodge/Room/Foreground.hs 89;" f
highDiagonalMesh src/Dodge/Room/Foreground.hs 35;" f
highMesh src/Dodge/Room/Foreground.hs 25;" f
hit1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 580;" f
hitEffFromBul src/Dodge/Bullet.hs 154;" f
hitEffFromBul src/Dodge/Bullet.hs 152;" f
hitS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 534;" f
holdForm src/Dodge/Creature/Boid.hs 137;" f
holsterWeapon src/Dodge/Creature/Volition.hs 14;" f
@@ -4203,16 +4201,15 @@ makeDoorDebris src/Dodge/Block/Debris.hs 24;" f
makeDustAt src/Dodge/WorldEvent/Cloud.hs 17;" f
makeEnumOption src/Dodge/Menu/OptionType.hs 13;" f
makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 73;" f
makeFlak src/Dodge/Bullet.hs 143;" f
makeFlak src/Dodge/Bullet.hs 142;" f
makeFlame src/Dodge/Flame.hs 45;" f
makeFlameExplosionAt src/Dodge/WorldEvent/Explosion.hs 56;" f
makeFlamelet src/Dodge/EnergyBall.hs 22;" f
makeFlashBall src/Dodge/EnergyBall.hs 85;" f
makeFlamelet src/Dodge/EnergyBall.hs 21;" f
makeFragBullets src/Dodge/Bullet.hs 128;" f
makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 11;" f
makeGrid src/Grid.hs 46;" f
makeIntInterval src/Dodge/Zoning/Base.hs 35;" f
makeMovingEB src/Dodge/EnergyBall.hs 75;" f
makeMovingEB src/Dodge/EnergyBall.hs 64;" f
makeMuzzleFlare src/Dodge/HeldUse.hs 664;" f
makeParagraph src/Justify.hs 6;" f
makePathBetween src/Dodge/Path.hs 35;" f
@@ -4226,7 +4223,7 @@ makeShaderUsingVAO src/Shader/Compile.hs 146;" f
makeShaderUsingVBO src/Shader/Compile.hs 69;" f
makeShaderVBO src/Shader/Compile.hs 32;" f
makeShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 12;" f
makeShrapnelAt src/Dodge/Payload.hs 25;" f
makeShrapnelAt src/Dodge/Payload.hs 24;" f
makeSourcedShader src/Shader/Compile.hs 167;" f
makeSpark src/Dodge/Spark.hs 45;" f
makeSubmenuOption src/Dodge/Menu/OptionType.hs 19;" f
@@ -4337,14 +4334,14 @@ modTo src/Geometry/Zone.hs 10;" f
mouseClickOptionsList src/Dodge/Update/Input/ScreenLayer.hs 60;" f
mouseCursorType src/Dodge/Render/Picture.hs 86;" f
mouseWorldPos src/Dodge/Base/Coordinate.hs 48;" f
moveBullet src/Dodge/Bullet.hs 195;" f
moveBullet src/Dodge/Bullet.hs 193;" f
moveCombineSel src/Dodge/Update/Scroll.hs 114;" f
moveInverseShockwave src/Dodge/Shockwave/Update.hs 44;" f
moveLSThen src/Dodge/Placement/Instance/LightSource.hs 30;" f
movePenBullet src/Dodge/Bullet.hs 201;" f
movePenBullet src/Dodge/Bullet.hs 199;" f
moveProjectile src/Dodge/Projectile/Update.hs 261;" f
moveRoomBy src/Dodge/Room/Link.hs 53;" f
moveShockwave src/Dodge/Shockwave/Update.hs 15;" f
moveShockwave src/Dodge/Shockwave/Update.hs 13;" f
moveStuckGrenade src/Dodge/Projectile/Update.hs 247;" f
moveToSideFirstOutLink src/Dodge/Room/Warning.hs 55;" f
moveWall src/Dodge/Wall/Move.hs 29;" f
@@ -4482,7 +4479,7 @@ pbFlicker src/Dodge/Update.hs 487;" f
pbsHit src/Dodge/WorldEvent/ThingsHit.hs 62;" f
peZoneSize src/Dodge/Zoning/Pathing.hs 46;" f
pedestalRoom src/Dodge/Room/Containing.hs 50;" f
penThing src/Dodge/Bullet.hs 209;" f
penThing src/Dodge/Bullet.hs 207;" f
perMat src/MatrixHelper.hs 49;" f
perceptionUpdate src/Dodge/Creature/Perception.hs 23;" f
performAction src/Dodge/Creature/Action.hs 91;" f
@@ -5226,7 +5223,7 @@ stone3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 572;" f
stone4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 484;" f
stone5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 626;" f
stopAllSounds src/Sound.hs 125;" f
stopBulletAt src/Dodge/Bullet.hs 198;" f
stopBulletAt src/Dodge/Bullet.hs 196;" f
stopPushing src/Dodge/Block.hs 105;" f
stopSoundFrom src/Dodge/SoundLogic.hs 220;" f
strFromEquipment src/Dodge/Creature/Statistics.hs 48;" f
@@ -5508,7 +5505,7 @@ updateDistortions src/Dodge/Update.hs 587;" f
updateDoor src/Dodge/Update.hs 326;" f
updateDust src/Dodge/Update.hs 850;" f
updateDusts src/Dodge/Update.hs 701;" f
updateEnergyBall src/Dodge/EnergyBall.hs 36;" f
updateEnergyBall src/Dodge/EnergyBall.hs 35;" f
updateEnergyBalls src/Dodge/Update.hs 689;" f
updateEnterRegex src/Dodge/Update/Input/InGame.hs 480;" f
updateExpBarrel src/Dodge/Barreloid.hs 20;" f
@@ -5567,7 +5564,7 @@ updateScopeZoom src/Dodge/Update/Scroll.hs 72;" f
updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f
updateSection src/Dodge/DisplayInventory.hs 264;" f
updateSectionsPositioning src/Dodge/DisplayInventory.hs 243;" f
updateShockwave src/Dodge/Shockwave/Update.hs 10;" f
updateShockwave src/Dodge/Shockwave/Update.hs 8;" f
updateShockwaves src/Dodge/Update.hs 683;" f
updateSingleNodes src/TreeHelp.hs 97;" f
updateSound src/Sound.hs 72;" f
@@ -5619,7 +5616,7 @@ useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" f
useLoadedAmmo src/Dodge/HeldUse.hs 736;" f
useMagShield src/Dodge/Euse.hs 27;" f
useNormalCamera src/Dodge/Camera.hs 6;" f
usePayload src/Dodge/Payload.hs 19;" f
usePayload src/Dodge/Payload.hs 18;" f
useRewindGun src/Dodge/HeldUse.hs 1420;" f
useRoomPosCond src/Dodge/PlacementSpot.hs 178;" f
useRoomPosRoomCond src/Dodge/PlacementSpot.hs 181;" f