From 298238d594993c318d1ced324248ae1fb7c1e0ce Mon Sep 17 00:00:00 2001 From: justin Date: Tue, 5 Aug 2025 08:47:47 +0100 Subject: [PATCH] Simplify flamelet balls --- src/Dodge/Bullet.hs | 2 +- src/Dodge/Data/EnergyBall/Type.hs | 2 +- src/Dodge/EnergyBall.hs | 19 +----------- src/Dodge/EnergyBall/Draw.hs | 14 ++++----- tags | 49 +++++++++++++++---------------- 5 files changed, 33 insertions(+), 53 deletions(-) diff --git a/src/Dodge/Bullet.hs b/src/Dodge/Bullet.hs index 5c07522fe..38cc899b6 100644 --- a/src/Dodge/Bullet.hs +++ b/src/Dodge/Bullet.hs @@ -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 diff --git a/src/Dodge/Data/EnergyBall/Type.hs b/src/Dodge/Data/EnergyBall/Type.hs index 940cceef0..63ec25e86 100644 --- a/src/Dodge/Data/EnergyBall/Type.hs +++ b/src/Dodge/Data/EnergyBall/Type.hs @@ -11,7 +11,7 @@ import Data.Aeson.TH data EnergyBallType = IncendiaryBall - | FlameletBall {_fbSize :: Float, _fbRot :: Float} + | FlameletBall {_fbSize :: Float} | ElectricalBall {_ebID :: Int} | ExplosiveBall | FlashBall diff --git a/src/Dodge/EnergyBall.hs b/src/Dodge/EnergyBall.hs index 9b12cb4f3..cb8719d1e 100644 --- a/src/Dodge/EnergyBall.hs +++ b/src/Dodge/EnergyBall.hs @@ -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 = diff --git a/src/Dodge/EnergyBall/Draw.hs b/src/Dodge/EnergyBall/Draw.hs index 4877a213c..2ab1397ff 100644 --- a/src/Dodge/EnergyBall/Draw.hs +++ b/src/Dodge/EnergyBall/Draw.hs @@ -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 diff --git a/tags b/tags index 835242a87..a8a12f7e2 100644 --- a/tags +++ b/tags @@ -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