Cleanup
This commit is contained in:
@@ -19,7 +19,6 @@ data SensorType
|
||||
data DamageSensor = DamSensor
|
||||
{ _sensAmount :: Int
|
||||
, _sensType :: SensorType
|
||||
, _sensThreshold :: Int
|
||||
}
|
||||
|
||||
data ProximitySensor = ProxSensor
|
||||
|
||||
@@ -120,7 +120,7 @@ mcUseItem mc w = fromMaybe w $ do
|
||||
mcDamSensorTriggerUpdate :: DamageSensor -> Machine -> World -> World
|
||||
mcDamSensorTriggerUpdate se mc = fromMaybe id $ do
|
||||
trid <- mc ^? mcMounts . ix OTTrigger
|
||||
bval <- mcTriggerVal se
|
||||
let bval = se ^. sensAmount > damageTypeThreshold (se ^. sensType)
|
||||
return $ cWorld . lWorld . triggers . ix trid ||~ bval
|
||||
|
||||
mcProxSensorTriggerUpdate :: ProximitySensor -> Machine -> World -> World
|
||||
@@ -129,8 +129,13 @@ mcProxSensorTriggerUpdate se mc = fromMaybe id $ do
|
||||
bval <- se ^? proxToggle . _Just
|
||||
return $ cWorld . lWorld . triggers . at trid ?~ bval
|
||||
|
||||
mcTriggerVal :: DamageSensor -> Maybe Bool
|
||||
mcTriggerVal se = Just $ _sensAmount se > _sensThreshold se
|
||||
damageTypeThreshold :: SensorType -> Int
|
||||
damageTypeThreshold = \case
|
||||
LaserSensor -> 1000
|
||||
ElectricSensor -> 500
|
||||
ThermalSensor -> 1000
|
||||
PhysicalSensor -> 1000
|
||||
|
||||
|
||||
mcPlaySound :: Machine -> World -> World
|
||||
mcPlaySound mc w = fromMaybe w $ do
|
||||
@@ -167,7 +172,7 @@ mcApplyDamage ds mc = case mc ^? mcType . _McDamSensor of
|
||||
mcpointer = cWorld . lWorld . machines . ix (_mcID mc)
|
||||
|
||||
mcDamSensorUpdate :: DamageSensor -> Machine -> World -> World
|
||||
mcDamSensorUpdate se = senseDamage (_sensThreshold se) (_sensType se)
|
||||
mcDamSensorUpdate se = senseDamage (damageTypeThreshold (se ^. sensType)) (se ^. sensType)
|
||||
|
||||
mcProxSensorUpdate :: ProximitySensor -> Machine -> World -> World
|
||||
mcProxSensorUpdate se mc = case se ^. proxSensorType of
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
module Dodge.Placement.Instance.Sensor (
|
||||
lightSensor,
|
||||
damageSensor,
|
||||
@@ -17,29 +18,12 @@ damageSensor dt wdth mtrid ps = pContID ps (PutLS $ lsPosCol (V3 0 0 30) 0.1) $
|
||||
PutMachine
|
||||
(reverse $ square wdth)
|
||||
( defaultMachine
|
||||
-- & mcColor .~ yellow
|
||||
& mcMounts . at OTTrigger .~ mtrid
|
||||
& mcMounts . at OTLightSource ?~ lsid
|
||||
& mcType
|
||||
.~ McDamSensor
|
||||
( DamSensor
|
||||
0
|
||||
dt
|
||||
(damageTypeThreshold dt)
|
||||
)
|
||||
.~ McDamSensor ( DamSensor 0 dt)
|
||||
)
|
||||
Nothing
|
||||
|
||||
damageTypeThreshold :: SensorType -> Int
|
||||
damageTypeThreshold dt = case dt of
|
||||
LaserSensor -> 1000
|
||||
ElectricSensor -> 500
|
||||
ThermalSensor -> 1000
|
||||
PhysicalSensor -> 1000
|
||||
|
||||
lightSensor ::
|
||||
Float ->
|
||||
Maybe Int ->
|
||||
PlacementSpot ->
|
||||
Placement
|
||||
lightSensor :: Float -> Maybe Int -> PlacementSpot -> Placement
|
||||
lightSensor = damageSensor LaserSensor
|
||||
|
||||
@@ -51,16 +51,11 @@ putTerminalFull f mc tm =
|
||||
putTerminal :: Machine -> Terminal -> Placement
|
||||
putTerminal = putTerminalFull (\_ _ _ -> Nothing)
|
||||
|
||||
tmMachine :: Machine
|
||||
tmMachine = defaultMachine & mcType .~ McTerminal & mcHP .~ 100
|
||||
|
||||
putMessageTerminal :: Terminal -> Placement
|
||||
putMessageTerminal =
|
||||
putTerminal $
|
||||
defaultMachine
|
||||
& mcType .~ McTerminal
|
||||
& mcHP .~ 100
|
||||
putMessageTerminal = putTerminal tmMachine
|
||||
|
||||
putImmediateMessageTerminal :: Terminal -> Placement
|
||||
putImmediateMessageTerminal =
|
||||
putTerminalImediateAccess $
|
||||
defaultMachine
|
||||
& mcType .~ McTerminal
|
||||
& mcHP .~ 100
|
||||
putImmediateMessageTerminal = putTerminalImediateAccess tmMachine
|
||||
|
||||
Reference in New Issue
Block a user