Move machine update into outside function

This commit is contained in:
2022-07-14 21:01:53 +01:00
parent ad33ddd569
commit 5463328d41
13 changed files with 130 additions and 92 deletions
+38 -35
View File
@@ -4,7 +4,7 @@ module Dodge.Placement.Instance.Analyser
--import Dodge.LevelGen.Data
--import Dodge.PlacementSpot
import Dodge.Data
import Dodge.Base.You
--import Dodge.Base.You
import Dodge.Default
import Dodge.Terminal
--import Dodge.Tree
@@ -18,13 +18,13 @@ import Dodge.Terminal
--import Dodge.Room.RoadBlock
import Dodge.Placement.Instance
--import Dodge.Placement.Shift
import Dodge.SoundLogic
--import Dodge.SoundLogic
--import Dodge.Default.Room
--import Dodge.Item.Weapon.BulletGuns
--import Dodge.Item.Weapon.Utility
--import Dodge.LevelGen.Data
--import Geometry.Data
import Geometry
--import Geometry
--import Padding
import Color
--import Shape
@@ -33,7 +33,7 @@ import LensHelp
--import Dodge.RandomHelp
--import qualified Data.Set as S
import Data.Maybe
--import Data.Maybe
--import Data.Tree
--import Control.Monad.State
--import System.Random
@@ -44,41 +44,44 @@ analyser
-> PlacementSpot
-> Placement
analyser proxreq pslight psmc = extTrigLitPos pslight $ \tp ->
Just $ plSpot .~ psmc $ putTerminal'' themachine tparams (linksensortotrigger tp)
Just $ plSpot .~ psmc $ putTerminal''
(themachine & mcMounts . at ObTrigger .~ _plMID tp)
tparams -- (linksensortotrigger tp)
where
tparams = basicTerminal & tmScrollCommands .:~ sensorCommand
linksensortotrigger tp _ mc
= triggers . ix (fromJust $ _plMID tp) .~ const (_sensToggle $ _mcSensor mc)
-- linksensortotrigger tp _ mc
-- = triggers . ix (fromJust $ _plMID tp) .~ const (_sensToggle $ _mcSensor mc)
themachine = defaultMachine & mcColor .~ aquamarine
& mcUpdate .~ mcProximitySensorUpdate
-- & mcUpdate .~ mcProximitySensorUpdate
& mcDraw .~ terminalSPic
& mcHP .~ 100
& mcSensor .~ defaultProximitySensor {_proxRequirement = proxreq}
mcProximitySensorUpdate :: Machine -> World -> World
mcProximitySensorUpdate mc w = case
(_proxStatus sens
, _sensToggle sens
, mcProxTest mc w
, dist (_crPos ycr) (_mcPos mc) < _proxDist sens) of
(_,True,_,_) -> w
(_,False,True,True) -> w
& machines . ix (_mcID mc) . mcSensor . sensToggle .~ True
& playsound dedaS
& machines . ix (_mcID mc) . mcSensor . proxStatus .~ IsClose
(NotClose,_,False,True) -> w & playsound dedumS
& machines . ix (_mcID mc) . mcSensor . proxStatus .~ IsClose
(_,_,_,False) -> w & machines . ix (_mcID mc) . mcSensor . proxStatus .~ NotClose
_ -> w
where
playsound sid = soundContinue (MachineAltSound (_mcID mc)) (_mcPos mc) sid Nothing
ycr = you w
sens = _mcSensor mc
mcProxTest :: Machine -> World -> Bool
mcProxTest mc w = case mc ^? mcSensor . proxRequirement of
Just (RequireHealth x) -> _crHP cr >= x
Just (RequireEquipment ct) -> any (\itm -> _iyBase (_itType itm) == ct) (_crInv cr)
_ -> False
where
cr = you w
--this can probably be deleted
--mcProximitySensorUpdate :: Machine -> World -> World
--mcProximitySensorUpdate mc w = case
-- (_proxStatus sens
-- , _sensToggle sens
-- , mcProxTest mc w
-- , dist (_crPos ycr) (_mcPos mc) < _proxDist sens) of
-- (_,True,_,_) -> w
-- (_,False,True,True) -> w
-- & machines . ix (_mcID mc) . mcSensor . sensToggle .~ True
-- & playsound dedaS
-- & machines . ix (_mcID mc) . mcSensor . proxStatus .~ IsClose
-- (NotClose,_,False,True) -> w & playsound dedumS
-- & machines . ix (_mcID mc) . mcSensor . proxStatus .~ IsClose
-- (_,_,_,False) -> w & machines . ix (_mcID mc) . mcSensor . proxStatus .~ NotClose
-- _ -> w
-- where
-- playsound sid = soundContinue (MachineAltSound (_mcID mc)) (_mcPos mc) sid Nothing
-- ycr = you w
-- sens = _mcSensor mc
--
--mcProxTest :: Machine -> World -> Bool
--mcProxTest mc w = case mc ^? mcSensor . proxRequirement of
-- Just (RequireHealth x) -> _crHP cr >= x
-- Just (RequireEquipment ct) -> any (\itm -> _iyBase (_itType itm) == ct) (_crInv cr)
-- _ -> False
-- where
-- cr = you w