diff --git a/src/Dodge/Button/Event.hs b/src/Dodge/Button/Event.hs index 7f0d01b49..fb319244d 100644 --- a/src/Dodge/Button/Event.hs +++ b/src/Dodge/Button/Event.hs @@ -1,34 +1,22 @@ -module Dodge.Button.Event where +{-# LANGUAGE LambdaCase #-} +module Dodge.Button.Event (doButtonEvent) where -import Sound.Data import Control.Lens import Dodge.Data.World import Dodge.SoundLogic import Dodge.WorldEffect +import Sound.Data doButtonEvent :: ButtonEvent -> Button -> World -> World -doButtonEvent be = case be of --- ButtonDoNothing -> const id +doButtonEvent = \case ButtonPress True _ _ -> const id - ButtonPress False f _ -> \b -> - doWdWd f - . set (cWorld . lWorld . buttons . ix (_btID b) . btEvent . btOn) True - . soundStart (LeverSound 0) (_btPos b) click1S Nothing - ButtonSwitch oneff offeff _ _ _ -> flipSwitch oneff offeff + ButtonPress False f _ -> buttonFlip f + ButtonSwitch _ f _ _ True -> buttonFlip f + ButtonSwitch f _ _ _ False -> buttonFlip f ButtonAccessTerminal -> accessTerminal . _btTermMID -flipSwitch :: WdWd -> WdWd -> Button -> World -> World -flipSwitch oneff offeff bt - | _btOn (_btEvent bt) = - doWdWd offeff . dosound - . set (cWorld . lWorld . buttons . ix (_btID bt) . btEvent . btOn) False - | otherwise = - doWdWd oneff . dosound - . set (cWorld . lWorld . buttons . ix (_btID bt) . btEvent . btOn) True - where - dosound = soundWithStatus ToStart (LeverSound 0) (_btPos bt) click1S Nothing - --- switchEffect b = case _btState b of --- BtOff -> effOn . (buttons . ix (_btID b) %~ turnOn ) --- BtOn -> effOff . (buttons . ix (_btID b) %~ turnOff) --- _ -> error "Trying to switch a button with no label" +buttonFlip :: WdWd -> Button -> World -> World +buttonFlip f bt = + doWdWd f + . soundWithStatus ToStart (LeverSound 0) (bt ^. btPos) click1S Nothing + . over (cWorld . lWorld . buttons . ix (bt ^. btID) . btEvent . btOn) not diff --git a/src/Dodge/SelectedClose.hs b/src/Dodge/SelectedClose.hs index 9e396108e..75ed1d6c1 100644 --- a/src/Dodge/SelectedClose.hs +++ b/src/Dodge/SelectedClose.hs @@ -1,16 +1,15 @@ -module Dodge.SelectedClose (getSelectedCloseObj,interactWithCloseObj) where +module Dodge.SelectedClose (getSelectedCloseObj, interactWithCloseObj) where -import Dodge.Button.Event -import Dodge.Inventory.Add import Control.Lens +import Dodge.Button.Event import Dodge.Data.World +import Dodge.Inventory.Add import NewInt interactWithCloseObj :: Either FloorItem Button -> World -> World interactWithCloseObj e w = worldEventFlags . at InventoryChange ?~ () $ case e of (Left flit) -> pickUpItem 0 flit w - (Right but) -> doButtonEvent (_btEvent but) but w - + (Right but) -> doButtonEvent (but ^. btEvent) but w getSelectedCloseObj :: World -> Maybe (Either FloorItem Button) getSelectedCloseObj w = do diff --git a/tags b/tags index b11f5765c..b74c028a0 100644 --- a/tags +++ b/tags @@ -215,9 +215,6 @@ Branch src/Dodge/Room/Branch.hs 4;" m Breather src/Dodge/Room/Breather.hs 1;" m BrigSS src/Dodge/Data/Scenario.hs 102;" C Brute src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 17;" C -BtInactive src/Dodge/Data/Button.hs 51;" C -BtOff src/Dodge/Data/Button.hs 51;" C -BtOn src/Dodge/Data/Button.hs 51;" C BulBall src/Dodge/Data/Bullet.hs 37;" C BulFlak src/Dodge/Data/Bullet.hs 39;" C BulFrag src/Dodge/Data/Bullet.hs 40;" C @@ -239,15 +236,13 @@ BulletPayload src/Dodge/Data/Bullet.hs 36;" t BulletTrajectory src/Dodge/Data/Bullet.hs 44;" t BulletTrajectoryType src/Dodge/Data/Bullet.hs 51;" t BurstTrigger src/Dodge/Data/TriggerType.hs 14;" C -Button src/Dodge/Data/Button.hs 35;" t +Button src/Dodge/Data/Button.hs 30;" t Button src/Dodge/Data/Button.hs 6;" m Button src/Dodge/Placement/Instance/Button.hs 1;" m -ButtonAccessTerminal src/Dodge/Data/Button.hs 31;" C -ButtonDoNothing src/Dodge/Data/Button.hs 17;" C -ButtonEvent src/Dodge/Data/Button.hs 16;" t -ButtonPress src/Dodge/Data/Button.hs 18;" C -ButtonSimpleSwith src/Dodge/Data/Button.hs 25;" C -ButtonState src/Dodge/Data/Button.hs 51;" t +ButtonAccessTerminal src/Dodge/Data/Button.hs 28;" C +ButtonEvent src/Dodge/Data/Button.hs 15;" t +ButtonPress src/Dodge/Data/Button.hs 16;" C +ButtonSwitch src/Dodge/Data/Button.hs 21;" C CAMERA src/Dodge/Data/Item/Combine.hs 75;" C CAN src/Dodge/Data/Item/Combine.hs 56;" C CDoNothing src/Dodge/Data/Item/HeldUse.hs 15;" C @@ -2175,7 +2170,6 @@ WasLeftForward src/Dodge/Data/Creature/Stance.hs 34;" C WasRightForward src/Dodge/Data/Creature/Stance.hs 35;" C WatchAndWait src/Dodge/Data/ActionPlan.hs 183;" C WdBl src/Dodge/Data/WorldEffect.hs 51;" t -WdBlBtNotOff src/Dodge/Data/WorldEffect.hs 58;" C WdBlBtOn src/Dodge/Data/WorldEffect.hs 57;" C WdBlConst src/Dodge/Data/WorldEffect.hs 54;" C WdBlCrFilterNearPoint src/Dodge/Data/WorldEffect.hs 56;" C @@ -2309,23 +2303,20 @@ _bmPoints src/Dodge/Data/Beam.hs 24;" f _bmPos src/Dodge/Data/Beam.hs 20;" f _bmRange src/Dodge/Data/Beam.hs 26;" f _bmType src/Dodge/Data/Beam.hs 29;" f -_boffEff src/Dodge/Data/Button.hs 27;" f -_bonEff src/Dodge/Data/Button.hs 26;" f +_boffEff src/Dodge/Data/Button.hs 23;" f +_bonEff src/Dodge/Data/Button.hs 22;" f _bounceTolerance src/Dodge/Data/Projectile.hs 57;" f -_bpColor src/Dodge/Data/Button.hs 23;" f -_bpEff src/Dodge/Data/Button.hs 22;" f -_bpSound src/Dodge/Data/Button.hs 21;" f -_bpState src/Dodge/Data/Button.hs 19;" f -_bssColor1 src/Dodge/Data/Button.hs 28;" f -_bssColor2 src/Dodge/Data/Button.hs 29;" f -_btColor src/Dodge/Data/Button.hs 46;" f -_btEvent src/Dodge/Data/Button.hs 40;" f -_btID src/Dodge/Data/Button.hs 41;" f -_btName src/Dodge/Data/Button.hs 45;" f -_btPos src/Dodge/Data/Button.hs 38;" f -_btRot src/Dodge/Data/Button.hs 39;" f -_btState src/Dodge/Data/Button.hs 43;" f -_btTermMID src/Dodge/Data/Button.hs 44;" f +_bpColor src/Dodge/Data/Button.hs 19;" f +_bpEff src/Dodge/Data/Button.hs 18;" f +_bsColor1 src/Dodge/Data/Button.hs 24;" f +_bsColor2 src/Dodge/Data/Button.hs 25;" f +_btEvent src/Dodge/Data/Button.hs 33;" f +_btID src/Dodge/Data/Button.hs 34;" f +_btOn src/Dodge/Data/Button.hs 17;" f +_btOn src/Dodge/Data/Button.hs 26;" f +_btPos src/Dodge/Data/Button.hs 31;" f +_btRot src/Dodge/Data/Button.hs 32;" f +_btTermMID src/Dodge/Data/Button.hs 35;" f _buDam src/Dodge/Data/Bullet.hs 38;" f _buDrag src/Dodge/Data/Bullet.hs 23;" f _buEffect src/Dodge/Data/Bullet.hs 19;" f @@ -3311,7 +3302,7 @@ activateDetonator src/Dodge/Creature/Impulse/UseItem.hs 84;" f activeTargetCursorPic src/Dodge/Targeting/Draw.hs 31;" f addArmour src/Dodge/Creature.hs 85;" f addBranchAt src/Dodge/Tree/GenerateStructure.hs 18;" f -addButtonSlowDoor src/Dodge/Room/LongDoor.hs 96;" f +addButtonSlowDoor src/Dodge/Room/LongDoor.hs 97;" f addCrGibs src/Dodge/Prop/Gib.hs 35;" f addDepth src/Picture/Base.hs 133;" f addDoorWall src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 53;" f @@ -3340,7 +3331,7 @@ addPolyWalls src/Dodge/LevelGen/StaticWalls.hs 129;" f addRandomGirderEW src/Dodge/Room/Girder.hs 9;" f addRandomGirderFrom src/Dodge/Room/Girder.hs 16;" f addSideEffect src/Dodge/Concurrent.hs 29;" f -addSouthPillars src/Dodge/Room/LongDoor.hs 88;" f +addSouthPillars src/Dodge/Room/LongDoor.hs 89;" f addTermSignal src/Dodge/Event/Input.hs 34;" f addToTrunk src/TreeHelp.hs 156;" f addWarningTerminal src/Dodge/Room/Warning.hs 36;" f @@ -3651,7 +3642,7 @@ clipZoom src/Dodge/Update/Camera.hs 222;" f clockCycle src/Dodge/Clock.hs 9;" f closeButtonToSelectionItem src/Dodge/Inventory/SelectionList.hs 219;" f closeItemToSelectionItem src/Dodge/Inventory/SelectionList.hs 204;" f -closeItemToTextPictures src/Dodge/Inventory/SelectionList.hs 243;" f +closeItemToTextPictures src/Dodge/Inventory/SelectionList.hs 241;" f closeObjectInfo src/Dodge/Render/HUD.hs 224;" f closestCreatureID src/Dodge/Debug.hs 116;" f closestPointOnLine src/Geometry/Intersect.hs 251;" f @@ -3901,7 +3892,7 @@ defaultAutoWall src/Dodge/Default/Door.hs 15;" f defaultBlock src/Dodge/Default/Block.hs 5;" f defaultBounds src/Dodge/Data/Bounds.hs 20;" f defaultBullet src/Dodge/Item/Weapon/Bullet.hs 10;" f -defaultButton src/Dodge/Default.hs 49;" f +defaultButton src/Dodge/Default.hs 48;" f defaultCWCam src/Dodge/Default/World.hs 69;" f defaultCWGen src/Dodge/Default/World.hs 59;" f defaultCWorld src/Dodge/Default/World.hs 84;" f @@ -3918,11 +3909,11 @@ defaultDirtWall src/Dodge/Default/Wall.hs 61;" f defaultDisplayInventory src/Dodge/Default/World.hs 167;" f defaultDoor src/Dodge/Default/Door.hs 29;" f defaultDoorWall src/Dodge/Default/Wall.hs 32;" f -defaultDrawButton src/Dodge/Button/Draw.hs 29;" f +defaultDrawButton src/Dodge/Button/Draw.hs 30;" f defaultEquip src/Dodge/Default/Item/Use/Equipment.hs 6;" f defaultEquipUse src/Dodge/Default/Item/Use.hs 7;" f -defaultEquipment src/Dodge/Default.hs 25;" f -defaultFlIt src/Dodge/Default.hs 28;" f +defaultEquipment src/Dodge/Default.hs 24;" f +defaultFlIt src/Dodge/Default.hs 27;" f defaultForeground src/Dodge/Default/ForegroundShape.hs 5;" f defaultHUD src/Dodge/Default/World.hs 156;" f defaultHeldItem src/Dodge/Default/Item.hs 9;" f @@ -3935,13 +3926,13 @@ defaultLS src/Dodge/Default/LightSource.hs 8;" f defaultLWorld src/Dodge/Default/World.hs 96;" f defaultLeftLoadable src/Dodge/Default/Item/Use/Consumption.hs 8;" f defaultListDisplayParams src/Dodge/ListDisplayParams.hs 18;" f -defaultMachine src/Dodge/Default.hs 31;" f +defaultMachine src/Dodge/Default.hs 30;" f defaultMachineWall src/Dodge/Default/Wall.hs 48;" f defaultMuzzles src/Dodge/Default/Item/Use/AimParams.hs 8;" f -defaultPP src/Dodge/Default.hs 63;" f +defaultPP src/Dodge/Default.hs 61;" f defaultPerceptionState src/Dodge/Default/Creature.hs 73;" f defaultProp src/Dodge/Default/Prop.hs 6;" f -defaultProximitySensor src/Dodge/Default.hs 74;" f +defaultProximitySensor src/Dodge/Default.hs 72;" f defaultRoom src/Dodge/Default/Room.hs 9;" f defaultSensorWall src/Dodge/Default/Wall.hs 58;" f defaultSwitchWall src/Dodge/Default/Door.hs 22;" f @@ -4207,8 +4198,8 @@ drawShockwave src/Dodge/Shockwave/Draw.hs 7;" f drawSpark src/Dodge/Spark/Draw.hs 7;" f drawStaticBall src/Dodge/EnergyBall/Draw.hs 27;" f drawSubInventory src/Dodge/Render/HUD.hs 161;" f -drawSwitch src/Dodge/Button/Draw.hs 16;" f -drawSwitchWire src/Dodge/LevelGen/Switch.hs 27;" f +drawSwitch src/Dodge/Button/Draw.hs 17;" f +drawSwitchWire src/Dodge/LevelGen/Switch.hs 30;" f drawTargetingAR src/Dodge/Targeting/Draw.hs 20;" f drawTerminalDisplay src/Dodge/Render/HUD.hs 364;" f drawTeslaArc src/Dodge/Tesla/Arc/Draw.hs 7;" f @@ -4365,7 +4356,7 @@ fleeFrom src/Dodge/CreatureEffect.hs 120;" f fleeFromTarget src/Dodge/CreatureEffect.hs 66;" f flickerMod src/Dodge/Placement/Instance/LightSource/Flicker.hs 10;" f flickerUpdate src/Dodge/Placement/Instance/LightSource/Flicker.hs 24;" f -flipSwitch src/Dodge/Button/Event.hs 21;" f +flipSwitch src/Dodge/Button/Event.hs 20;" f floatSize src/Shader/Parameters.hs 17;" f flockACC src/Dodge/Creature/ReaderUpdate.hs 89;" f flockArmourChaseCrit src/Dodge/Creature/ArmourChase.hs 14;" f @@ -4902,7 +4893,7 @@ makeBlockDebris src/Dodge/Block/Debris.hs 28;" f makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f makeBullet src/Dodge/HeldUse.hs 1004;" f makeBullet' src/Dodge/HeldUse.hs 946;" f -makeButton src/Dodge/LevelGen/Switch.hs 16;" f +makeButton src/Dodge/LevelGen/Switch.hs 17;" f makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f makeColorTermLine src/Dodge/Terminal.hs 129;" f @@ -4944,8 +4935,8 @@ 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 -makeSwitch src/Dodge/LevelGen/Switch.hs 50;" f -makeSwitchSPic src/Dodge/LevelGen/Switch.hs 39;" f +makeSwitch src/Dodge/LevelGen/Switch.hs 55;" f +makeSwitchSPic src/Dodge/LevelGen/Switch.hs 44;" f makeTermLine src/Dodge/Terminal.hs 120;" f makeTermPara src/Dodge/Terminal.hs 123;" f makeTeslaArc src/Dodge/Tesla.hs 29;" f @@ -5829,8 +5820,8 @@ slap1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 600;" f slapS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 534;" f slideDoorS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 616;" f slideWindow src/ListHelp.hs 80;" f -slowDoorRoom src/Dodge/Room/LongDoor.hs 152;" f -slowDoorRoomRunPast src/Dodge/Room/LongDoor.hs 169;" f +slowDoorRoom src/Dodge/Room/LongDoor.hs 154;" f +slowDoorRoomRunPast src/Dodge/Room/LongDoor.hs 171;" f smallBattery src/Dodge/Item/Ammo.hs 59;" f smallBranch src/Dodge/Tree/GenerateStructure.hs 32;" f smallChaseCrit src/Dodge/Creature/ChaseCrit.hs 14;" f @@ -5862,7 +5853,7 @@ soundToOnomato src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 134;" f soundToVol src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 4;" f soundWithStatus src/Dodge/SoundLogic.hs 104;" f soundWithStatusVolume src/Dodge/SoundLogic.hs 54;" f -southPillarsRoom src/Dodge/Room/LongDoor.hs 85;" f +southPillarsRoom src/Dodge/Room/LongDoor.hs 86;" f spaceAction src/Dodge/Update/Input/InGame.hs 505;" f spanColLightBlackI src/Dodge/Placement/Instance/LightSource.hs 190;" f spanColLightI src/Dodge/Placement/Instance/LightSource.hs 183;" f @@ -5997,7 +5988,7 @@ termButton src/Dodge/Placement/Instance/Terminal.hs 51;" f termScreenColor src/Dodge/Terminal/Color.hs 9;" f termSoundLine src/Dodge/Terminal.hs 111;" f termTextColor src/Dodge/Terminal.hs 114;" f -terminalColor src/Dodge/Placement/Instance/Terminal.hs 64;" f +terminalColor src/Dodge/Placement/Instance/Terminal.hs 61;" f terminalReturnEffect src/Dodge/Terminal.hs 276;" f terminalSPic src/Dodge/Machine/Draw.hs 29;" f terminalScreenGlow src/Dodge/Machine/Update.hs 35;" f @@ -6167,7 +6158,7 @@ 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 tweenAngles src/Geometry/Vector.hs 195;" f -twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 79;" f +twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 80;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 28;" f twists src/Dodge/Creature/Test.hs 107;" f twoFlat src/Dodge/Creature/Test.hs 104;" f