Cleanup buttons

This commit is contained in:
2025-06-25 22:10:38 +01:00
parent 2f130c5bed
commit a25fa34461
3 changed files with 55 additions and 77 deletions
+12 -24
View File
@@ -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
+4 -5
View File
@@ -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
+39 -48
View File
@@ -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