Move machine update into outside function
This commit is contained in:
+8
-2
@@ -1020,11 +1020,16 @@ data TerminalToggle = TerminalToggle
|
|||||||
{ _ttTriggerID :: Int
|
{ _ttTriggerID :: Int
|
||||||
, _ttDeathEffect :: (World -> Bool) -> (World -> Bool)
|
, _ttDeathEffect :: (World -> Bool) -> (World -> Bool)
|
||||||
}
|
}
|
||||||
|
--data DamageApplication
|
||||||
|
-- = ApplyNoDamage
|
||||||
|
-- | DefaultApplyDamage
|
||||||
|
|
||||||
data Machine = Machine
|
data Machine = Machine
|
||||||
{ _mcID :: Int
|
{ _mcID :: Int
|
||||||
, _mcWallIDs :: IS.IntSet
|
, _mcWallIDs :: IS.IntSet
|
||||||
, _mcUpdate :: Machine -> World -> World
|
-- , _mcUpdate :: Machine -> World -> World
|
||||||
, _mcDraw :: Machine -> SPic
|
, _mcDraw :: Machine -> SPic
|
||||||
|
-- , _mcDamageApplication :: DamageApplication
|
||||||
, _mcPos :: Point2
|
, _mcPos :: Point2
|
||||||
, _mcDir :: Float
|
, _mcDir :: Float
|
||||||
, _mcColor :: Color
|
, _mcColor :: Color
|
||||||
@@ -1035,7 +1040,8 @@ data Machine = Machine
|
|||||||
, _mcType :: MachineType
|
, _mcType :: MachineType
|
||||||
, _mcMounts :: M.Map Object Int
|
, _mcMounts :: M.Map Object Int
|
||||||
, _mcName :: String
|
, _mcName :: String
|
||||||
, _mcCloseSound :: Maybe SoundID
|
-- , _mcTriggerCond :: Machine -> Bool
|
||||||
|
, _mcCloseSound :: Maybe SoundID
|
||||||
-- , _mcTermMID :: Maybe Int
|
-- , _mcTermMID :: Maybe Int
|
||||||
}
|
}
|
||||||
data Sensor = NoSensor
|
data Sensor = NoSensor
|
||||||
|
|||||||
@@ -10,4 +10,5 @@ data Object
|
|||||||
| ObForegroundShape
|
| ObForegroundShape
|
||||||
| ObLightSource
|
| ObLightSource
|
||||||
| ObProp
|
| ObProp
|
||||||
|
| ObTrigger
|
||||||
deriving (Eq,Show,Ord,Read,Enum,Bounded)
|
deriving (Eq,Show,Ord,Read,Enum,Bounded)
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ defaultMachine :: Machine
|
|||||||
defaultMachine = Machine
|
defaultMachine = Machine
|
||||||
{ _mcID = 0
|
{ _mcID = 0
|
||||||
, _mcWallIDs = mempty
|
, _mcWallIDs = mempty
|
||||||
, _mcUpdate = defaultMachineUpdate
|
-- , _mcUpdate = defaultMachineUpdate
|
||||||
, _mcDraw = const mempty
|
, _mcDraw = const mempty
|
||||||
, _mcColor = white
|
, _mcColor = white
|
||||||
, _mcPos = V2 0 0
|
, _mcPos = V2 0 0
|
||||||
@@ -193,6 +193,7 @@ defaultMachine = Machine
|
|||||||
, _mcName = ""
|
, _mcName = ""
|
||||||
, _mcMounts = mempty
|
, _mcMounts = mempty
|
||||||
, _mcCloseSound = Nothing
|
, _mcCloseSound = Nothing
|
||||||
|
-- , _mcTriggerCond = const True
|
||||||
}
|
}
|
||||||
defaultMachineUpdate :: Machine -> World -> World
|
defaultMachineUpdate :: Machine -> World -> World
|
||||||
defaultMachineUpdate mc
|
defaultMachineUpdate mc
|
||||||
|
|||||||
+5
-5
@@ -45,7 +45,7 @@ initialAnoTree = OnwardList
|
|||||||
-- , AnRoom $ tanksRoom [] []
|
-- , AnRoom $ tanksRoom [] []
|
||||||
-- , AnRoom $ roomCCrits 0
|
-- , AnRoom $ roomCCrits 0
|
||||||
-- , AnRoom $ return airlock0
|
-- , AnRoom $ return airlock0
|
||||||
, AnRoom slowDoorRoom
|
-- , AnRoom slowDoorRoom
|
||||||
-- , AnRoom $ roomCCrits 10
|
-- , AnRoom $ roomCCrits 10
|
||||||
-- , AnTree firstBreather
|
-- , AnTree firstBreather
|
||||||
-- , AnTree $ telRoomLev 1 >>= rToOnward "telRoomLev" . pure . cleatOnward
|
-- , AnTree $ telRoomLev 1 >>= rToOnward "telRoomLev" . pure . cleatOnward
|
||||||
@@ -55,10 +55,10 @@ initialAnoTree = OnwardList
|
|||||||
--extraAnoList =
|
--extraAnoList =
|
||||||
---- , (SpecificRoom . return . tToBTree $ treePost [corridor,corridor,cleatOnward corridor])
|
---- , (SpecificRoom . return . tToBTree $ treePost [corridor,corridor,cleatOnward corridor])
|
||||||
-- [ AnRoom $ roomCCrits 10
|
-- [ AnRoom $ roomCCrits 10
|
||||||
, AnRoom $ roomCCrits 10
|
-- , AnRoom $ roomCCrits 10
|
||||||
, AnTree $ tToBTree "spawners" <$> spawnerRoom
|
-- , AnTree $ tToBTree "spawners" <$> spawnerRoom
|
||||||
, AnRoom pistolerRoom
|
-- , AnRoom pistolerRoom
|
||||||
, AnRoom doubleCorridorBarrels
|
-- , AnRoom doubleCorridorBarrels
|
||||||
, IntAnno $ PassthroughLockKeyLists
|
, IntAnno $ PassthroughLockKeyLists
|
||||||
[(sensorRoomRunPast ELECTRICAL, takeOne [CRAFT STATICMODULE,HELD SPARKGUN] )] itemRooms
|
[(sensorRoomRunPast ELECTRICAL, takeOne [CRAFT STATICMODULE,HELD SPARKGUN] )] itemRooms
|
||||||
, IntAnno $ PassthroughLockKeyLists keyCardRunPastRand itemRooms
|
, IntAnno $ PassthroughLockKeyLists keyCardRunPastRand itemRooms
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ itemSPic it = foldMap (modulesSPic it) (_iyModules $ _itType it) $ case it ^. it
|
|||||||
KEYCARD _ -> noShape (setDepth 0 $ translate (-5) (-5) $ rotate (pi/2.5) keyPic)
|
KEYCARD _ -> noShape (setDepth 0 $ translate (-5) (-5) $ rotate (pi/2.5) keyPic)
|
||||||
--
|
--
|
||||||
MEDKIT _ -> defSPic
|
MEDKIT _ -> defSPic
|
||||||
CRAFT _ -> defSPic
|
CRAFT _ -> flatShieldEquipSPic
|
||||||
|
|
||||||
equipItemSPic :: EquipItemType -> Item -> SPic
|
equipItemSPic :: EquipItemType -> Item -> SPic
|
||||||
equipItemSPic et _ = case et of
|
equipItemSPic et _ = case et of
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ updateMachine mc
|
|||||||
| _mcHP mc < 1 = destroyMachine mc
|
| _mcHP mc < 1 = destroyMachine mc
|
||||||
| otherwise = mcApplyDamage (_mcDamage mc) mc
|
| otherwise = mcApplyDamage (_mcDamage mc) mc
|
||||||
. mcPlaySound mc
|
. mcPlaySound mc
|
||||||
|
. mcSensorTriggerUpdate mc
|
||||||
. mcTurretUpdate mc
|
. mcTurretUpdate mc
|
||||||
. mcSensorUpdate mc
|
. mcSensorUpdate mc
|
||||||
|
|
||||||
@@ -100,6 +101,19 @@ updateTurret rotSpeed mc w
|
|||||||
| closeFireAngle = machines . ix mcid . mcType . tuFireTime .~ 20
|
| closeFireAngle = machines . ix mcid . mcType . tuFireTime .~ 20
|
||||||
| otherwise = machines . ix mcid . mcType . tuFireTime %~ (max 0 . subtract 1)
|
| otherwise = machines . ix mcid . mcType . tuFireTime %~ (max 0 . subtract 1)
|
||||||
|
|
||||||
|
mcSensorTriggerUpdate :: Machine -> World -> World
|
||||||
|
mcSensorTriggerUpdate mc = fromMaybe id $ do
|
||||||
|
trid <- mc ^? mcMounts . ix ObTrigger
|
||||||
|
bval <- mcTriggerVal mc
|
||||||
|
return $ triggers . ix trid .~ const bval
|
||||||
|
|
||||||
|
mcTriggerVal :: Machine -> Maybe Bool
|
||||||
|
mcTriggerVal mc = case mc ^. mcSensor of
|
||||||
|
NoSensor -> Nothing
|
||||||
|
s@ProximitySensor{} -> s ^? sensToggle
|
||||||
|
s@SensorToggleAmount{} -> Just $ (_sensAmount s) > 900
|
||||||
|
|
||||||
|
|
||||||
mcPlaySound :: Machine -> World -> World
|
mcPlaySound :: Machine -> World -> World
|
||||||
mcPlaySound mc w = case _mcCloseSound mc of
|
mcPlaySound mc w = case _mcCloseSound mc of
|
||||||
Just sid | d < 200 -> soundContinueVol (1-0.005*d) (MachineSound mid) (_mcPos mc) sid (Just 2) w
|
Just sid | d < 200 -> soundContinueVol (1-0.005*d) (MachineSound mid) (_mcPos mc) sid (Just 2) w
|
||||||
@@ -109,8 +123,10 @@ mcPlaySound mc w = case _mcCloseSound mc of
|
|||||||
mid = _mcID mc
|
mid = _mcID mc
|
||||||
|
|
||||||
mcApplyDamage :: [Damage] -> Machine -> World -> World
|
mcApplyDamage :: [Damage] -> Machine -> World -> World
|
||||||
mcApplyDamage ds mc = machines . ix (_mcID mc) %~
|
mcApplyDamage ds mc = case _mcSensor mc of
|
||||||
( (mcDamage .~ []) . (mcHP -~ sum (map _dmAmount ds)) )
|
NoSensor -> machines . ix (_mcID mc) %~
|
||||||
|
( (mcDamage .~ []) . (mcHP -~ sum (map _dmAmount ds)) )
|
||||||
|
_ -> id
|
||||||
|
|
||||||
mcSensorUpdate :: Machine -> World -> World
|
mcSensorUpdate :: Machine -> World -> World
|
||||||
mcSensorUpdate mc w = case _mcSensor mc of
|
mcSensorUpdate mc w = case _mcSensor mc of
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ module Dodge.Placement.Instance.Analyser
|
|||||||
--import Dodge.LevelGen.Data
|
--import Dodge.LevelGen.Data
|
||||||
--import Dodge.PlacementSpot
|
--import Dodge.PlacementSpot
|
||||||
import Dodge.Data
|
import Dodge.Data
|
||||||
import Dodge.Base.You
|
--import Dodge.Base.You
|
||||||
import Dodge.Default
|
import Dodge.Default
|
||||||
import Dodge.Terminal
|
import Dodge.Terminal
|
||||||
--import Dodge.Tree
|
--import Dodge.Tree
|
||||||
@@ -18,13 +18,13 @@ import Dodge.Terminal
|
|||||||
--import Dodge.Room.RoadBlock
|
--import Dodge.Room.RoadBlock
|
||||||
import Dodge.Placement.Instance
|
import Dodge.Placement.Instance
|
||||||
--import Dodge.Placement.Shift
|
--import Dodge.Placement.Shift
|
||||||
import Dodge.SoundLogic
|
--import Dodge.SoundLogic
|
||||||
--import Dodge.Default.Room
|
--import Dodge.Default.Room
|
||||||
--import Dodge.Item.Weapon.BulletGuns
|
--import Dodge.Item.Weapon.BulletGuns
|
||||||
--import Dodge.Item.Weapon.Utility
|
--import Dodge.Item.Weapon.Utility
|
||||||
--import Dodge.LevelGen.Data
|
--import Dodge.LevelGen.Data
|
||||||
--import Geometry.Data
|
--import Geometry.Data
|
||||||
import Geometry
|
--import Geometry
|
||||||
--import Padding
|
--import Padding
|
||||||
import Color
|
import Color
|
||||||
--import Shape
|
--import Shape
|
||||||
@@ -33,7 +33,7 @@ import LensHelp
|
|||||||
--import Dodge.RandomHelp
|
--import Dodge.RandomHelp
|
||||||
|
|
||||||
--import qualified Data.Set as S
|
--import qualified Data.Set as S
|
||||||
import Data.Maybe
|
--import Data.Maybe
|
||||||
--import Data.Tree
|
--import Data.Tree
|
||||||
--import Control.Monad.State
|
--import Control.Monad.State
|
||||||
--import System.Random
|
--import System.Random
|
||||||
@@ -44,41 +44,44 @@ analyser
|
|||||||
-> PlacementSpot
|
-> PlacementSpot
|
||||||
-> Placement
|
-> Placement
|
||||||
analyser proxreq pslight psmc = extTrigLitPos pslight $ \tp ->
|
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
|
where
|
||||||
tparams = basicTerminal & tmScrollCommands .:~ sensorCommand
|
tparams = basicTerminal & tmScrollCommands .:~ sensorCommand
|
||||||
linksensortotrigger tp _ mc
|
-- linksensortotrigger tp _ mc
|
||||||
= triggers . ix (fromJust $ _plMID tp) .~ const (_sensToggle $ _mcSensor mc)
|
-- = triggers . ix (fromJust $ _plMID tp) .~ const (_sensToggle $ _mcSensor mc)
|
||||||
themachine = defaultMachine & mcColor .~ aquamarine
|
themachine = defaultMachine & mcColor .~ aquamarine
|
||||||
& mcUpdate .~ mcProximitySensorUpdate
|
-- & mcUpdate .~ mcProximitySensorUpdate
|
||||||
& mcDraw .~ terminalSPic
|
& mcDraw .~ terminalSPic
|
||||||
& mcHP .~ 100
|
& mcHP .~ 100
|
||||||
& mcSensor .~ defaultProximitySensor {_proxRequirement = proxreq}
|
& mcSensor .~ defaultProximitySensor {_proxRequirement = proxreq}
|
||||||
|
|
||||||
mcProximitySensorUpdate :: Machine -> World -> World
|
--this can probably be deleted
|
||||||
mcProximitySensorUpdate mc w = case
|
--mcProximitySensorUpdate :: Machine -> World -> World
|
||||||
(_proxStatus sens
|
--mcProximitySensorUpdate mc w = case
|
||||||
, _sensToggle sens
|
-- (_proxStatus sens
|
||||||
, mcProxTest mc w
|
-- , _sensToggle sens
|
||||||
, dist (_crPos ycr) (_mcPos mc) < _proxDist sens) of
|
-- , mcProxTest mc w
|
||||||
(_,True,_,_) -> w
|
-- , dist (_crPos ycr) (_mcPos mc) < _proxDist sens) of
|
||||||
(_,False,True,True) -> w
|
-- (_,True,_,_) -> w
|
||||||
& machines . ix (_mcID mc) . mcSensor . sensToggle .~ True
|
-- (_,False,True,True) -> w
|
||||||
& playsound dedaS
|
-- & machines . ix (_mcID mc) . mcSensor . sensToggle .~ True
|
||||||
& machines . ix (_mcID mc) . mcSensor . proxStatus .~ IsClose
|
-- & playsound dedaS
|
||||||
(NotClose,_,False,True) -> w & playsound dedumS
|
-- & machines . ix (_mcID mc) . mcSensor . proxStatus .~ IsClose
|
||||||
& machines . ix (_mcID mc) . mcSensor . proxStatus .~ IsClose
|
-- (NotClose,_,False,True) -> w & playsound dedumS
|
||||||
(_,_,_,False) -> w & machines . ix (_mcID mc) . mcSensor . proxStatus .~ NotClose
|
-- & machines . ix (_mcID mc) . mcSensor . proxStatus .~ IsClose
|
||||||
_ -> w
|
-- (_,_,_,False) -> w & machines . ix (_mcID mc) . mcSensor . proxStatus .~ NotClose
|
||||||
where
|
-- _ -> w
|
||||||
playsound sid = soundContinue (MachineAltSound (_mcID mc)) (_mcPos mc) sid Nothing
|
-- where
|
||||||
ycr = you w
|
-- playsound sid = soundContinue (MachineAltSound (_mcID mc)) (_mcPos mc) sid Nothing
|
||||||
sens = _mcSensor mc
|
-- ycr = you w
|
||||||
|
-- sens = _mcSensor mc
|
||||||
mcProxTest :: Machine -> World -> Bool
|
--
|
||||||
mcProxTest mc w = case mc ^? mcSensor . proxRequirement of
|
--mcProxTest :: Machine -> World -> Bool
|
||||||
Just (RequireHealth x) -> _crHP cr >= x
|
--mcProxTest mc w = case mc ^? mcSensor . proxRequirement of
|
||||||
Just (RequireEquipment ct) -> any (\itm -> _iyBase (_itType itm) == ct) (_crInv cr)
|
-- Just (RequireHealth x) -> _crHP cr >= x
|
||||||
_ -> False
|
-- Just (RequireEquipment ct) -> any (\itm -> _iyBase (_itType itm) == ct) (_crInv cr)
|
||||||
where
|
-- _ -> False
|
||||||
cr = you w
|
-- where
|
||||||
|
-- cr = you w
|
||||||
|
|||||||
@@ -14,44 +14,52 @@ import Shape
|
|||||||
|
|
||||||
import qualified Data.Map.Strict as M
|
import qualified Data.Map.Strict as M
|
||||||
import Control.Lens
|
import Control.Lens
|
||||||
import Data.Either
|
--import Data.Either
|
||||||
|
|
||||||
damageSensor
|
damageSensor
|
||||||
:: DamageType -- Left gets sensed, Right does damage
|
:: DamageType -- Left gets sensed, Right does damage
|
||||||
-> Float
|
-> Float
|
||||||
-> (Machine -> World -> World)
|
-> Maybe Int
|
||||||
|
-- -> (Machine -> World -> World)
|
||||||
-> PlacementSpot -> Placement
|
-> PlacementSpot -> Placement
|
||||||
damageSensor dt wdth upf ps = pContID ps (PutLS $ lsPosCol (V3 0 0 30) 0.1)
|
damageSensor dt wdth mtrid -- upf
|
||||||
|
ps = pContID ps (PutLS $ lsPosCol (V3 0 0 30) 0.1)
|
||||||
$ \lsid -> Just $ spNoID ps $ PutUsingGenParams
|
$ \lsid -> Just $ spNoID ps $ PutUsingGenParams
|
||||||
$ \gw -> (,) gw $ PutMachine (reverse $ square wdth) (defaultMachine & mcColor .~ yellow)
|
$ \gw -> (,) gw $ PutMachine (reverse $ square wdth)
|
||||||
|
(defaultMachine
|
||||||
|
& mcColor .~ yellow
|
||||||
|
& mcMounts . at ObTrigger .~ mtrid
|
||||||
|
)
|
||||||
{ _mcDraw = sensorSPic wdth $ _sensorCoding (_genParams gw) M.! dt
|
{ _mcDraw = sensorSPic wdth $ _sensorCoding (_genParams gw) M.! dt
|
||||||
, _mcUpdate = \mc -> upf mc . sensorUpdate dt mc
|
-- , _mcUpdate = \mc -> upf mc . sensorUpdate dt mc
|
||||||
, _mcSensor = SensorToggleAmount False 0
|
, _mcSensor = SensorToggleAmount False 0
|
||||||
, _mcLSs = [lsid]
|
, _mcLSs = [lsid]
|
||||||
}
|
}
|
||||||
|
|
||||||
lightSensor :: Float -> (Machine -> World -> World) -> PlacementSpot -> Placement
|
lightSensor :: Float -- -> (Machine -> World -> World)
|
||||||
|
-> Maybe Int
|
||||||
|
-> PlacementSpot -> Placement
|
||||||
lightSensor = damageSensor LASERING
|
lightSensor = damageSensor LASERING
|
||||||
|
--
|
||||||
sensorUpdate :: DamageType -> Machine -> World -> World
|
--sensorUpdate :: DamageType -> Machine -> World -> World
|
||||||
sensorUpdate damF mc w = w & machines . ix mcid %~ upmc
|
--sensorUpdate damF mc w = w & machines . ix mcid %~ upmc
|
||||||
& lightSources . ix lsid %~ upls
|
-- & lightSources . ix lsid %~ upls
|
||||||
where
|
-- where
|
||||||
upmc = ( mcSensor . sensAmount %~ \x' -> min 1000 (max 0 (x' - 5 + newSense)) )
|
-- upmc = ( mcSensor . sensAmount %~ \x' -> min 1000 (max 0 (x' - 5 + newSense)) )
|
||||||
. ( mcHP -~ sum dam )
|
-- . ( mcHP -~ sum dam )
|
||||||
. (mcDamage .~ [])
|
-- . (mcDamage .~ [])
|
||||||
x = _sensAmount $ _mcSensor mc
|
-- x = _sensAmount $ _mcSensor mc
|
||||||
mcid = _mcID mc
|
-- mcid = _mcID mc
|
||||||
lsid = head (_mcLSs mc)
|
-- lsid = head (_mcLSs mc)
|
||||||
(senseData,dam) = partitionEithers $ map (damageUsing damF) $ _mcDamage mc
|
-- (senseData,dam) = partitionEithers $ map (damageUsing damF) $ _mcDamage mc
|
||||||
newSense = sum senseData
|
-- newSense = sum senseData
|
||||||
ni = fromIntegral x / 1000
|
-- ni = fromIntegral x / 1000
|
||||||
upls = lsParam . lsCol .~ V3 ni ni ni
|
-- upls = lsParam . lsCol .~ V3 ni ni ni
|
||||||
|
--
|
||||||
damageUsing :: DamageType -> Damage -> Either Int Int
|
--damageUsing :: DamageType -> Damage -> Either Int Int
|
||||||
damageUsing dt dm
|
--damageUsing dt dm
|
||||||
| _dmType dm == dt = Left $ _dmAmount dm
|
-- | _dmType dm == dt = Left $ _dmAmount dm
|
||||||
| otherwise = Right 0
|
-- | otherwise = Right 0
|
||||||
|
|
||||||
sensorSPic :: Float -> (PaletteColor,DecorationShape) -> Machine -> SPic
|
sensorSPic :: Float -> (PaletteColor,DecorationShape) -> Machine -> SPic
|
||||||
sensorSPic wdth (pc,ds) mc = noPic
|
sensorSPic wdth (pc,ds) mc = noPic
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ module Dodge.Placement.Instance.Terminal
|
|||||||
import Dodge.Data
|
import Dodge.Data
|
||||||
import Dodge.LevelGen.Data
|
import Dodge.LevelGen.Data
|
||||||
import Dodge.Default
|
import Dodge.Default
|
||||||
import Dodge.Machine
|
--import Dodge.Machine
|
||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.Terminal
|
import Dodge.Terminal
|
||||||
import Color
|
import Color
|
||||||
@@ -26,13 +26,15 @@ import Data.Maybe
|
|||||||
putTerminal''
|
putTerminal''
|
||||||
:: Machine
|
:: Machine
|
||||||
-> Terminal
|
-> Terminal
|
||||||
-> (Int -> Machine -> World -> World) -- | machine update, takes button id as input
|
-- -> (Int -> Machine -> World -> World) -- | machine update, takes button id as input
|
||||||
-> Placement
|
-> Placement
|
||||||
putTerminal'' mc tm mcf = ps0PushPS (PutTerminal tm)
|
putTerminal'' mc tm --mcf
|
||||||
|
= ps0PushPS (PutTerminal tm)
|
||||||
$ \tmpl -> Just $ ps0PushPS (PutButton termButton)
|
$ \tmpl -> Just $ ps0PushPS (PutButton termButton)
|
||||||
$ \btpl -> Just $ pt0 (PutMachine (reverse $ square 10)
|
$ \btpl -> Just $ pt0 (PutMachine (reverse $ square 10)
|
||||||
(mc & mcUpdate %~ (\fmu mc' -> mcf (fromJust $ _plMID btpl) mc' . fmu mc') . machineAddSound fridgeHumS
|
(mc -- & mcUpdate %~ (\fmu mc' -> mcf (fromJust $ _plMID btpl) mc' . fmu mc') . machineAddSound fridgeHumS
|
||||||
& mcMounts . at ObButton ?~ fromJust (_plMID btpl)
|
& mcMounts . at ObButton ?~ fromJust (_plMID btpl)
|
||||||
|
& mcCloseSound ?~ fridgeHumS
|
||||||
) )
|
) )
|
||||||
$ \mcpl -> Just $ sps0 $ PutWorldUpdate $ const (setids tmpl btpl mcpl)
|
$ \mcpl -> Just $ sps0 $ PutWorldUpdate $ const (setids tmpl btpl mcpl)
|
||||||
where
|
where
|
||||||
@@ -49,7 +51,7 @@ putTerminal'' mc tm mcf = ps0PushPS (PutTerminal tm)
|
|||||||
putTerminal'
|
putTerminal'
|
||||||
:: Color
|
:: Color
|
||||||
-> Terminal
|
-> Terminal
|
||||||
-> (Int -> Machine -> World -> World) -- | machine update, takes button id as input
|
-- -> (Int -> Machine -> World -> World) -- | machine update, takes button id as input
|
||||||
-> Placement
|
-> Placement
|
||||||
putTerminal' col = putTerminal'' (defaultMachine
|
putTerminal' col = putTerminal'' (defaultMachine
|
||||||
& mcColor .~ col)
|
& mcColor .~ col)
|
||||||
@@ -59,7 +61,7 @@ putTerminal' col = putTerminal'' (defaultMachine
|
|||||||
}
|
}
|
||||||
|
|
||||||
putTerminal :: Color -> Terminal -> Placement
|
putTerminal :: Color -> Terminal -> Placement
|
||||||
putTerminal col f = putTerminal'' (mc & mcColor .~ col) f (\_ -> basicMachineUpdate $ const id)
|
putTerminal col f = putTerminal'' (mc & mcColor .~ col) f -- (\_ -> basicMachineUpdate $ const id)
|
||||||
where
|
where
|
||||||
mc = defaultMachine
|
mc = defaultMachine
|
||||||
{ _mcDraw = terminalSPic
|
{ _mcDraw = terminalSPic
|
||||||
|
|||||||
@@ -30,8 +30,8 @@ import Data.Maybe
|
|||||||
putLasTurret :: Float -> Placement
|
putLasTurret :: Float -> Placement
|
||||||
putLasTurret rotSpeed = sps0 $ PutMachine (reverse $ square wdth) (defaultMachine & mcColor .~ blue)
|
putLasTurret rotSpeed = sps0 $ PutMachine (reverse $ square wdth) (defaultMachine & mcColor .~ blue)
|
||||||
{ _mcDraw = drawTurret
|
{ _mcDraw = drawTurret
|
||||||
, _mcUpdate = updateTurret rotSpeed
|
-- , _mcUpdate = updateTurret rotSpeed
|
||||||
, _mcType = lasTurret
|
, _mcType = lasTurret & tuTurnSpeed .~ rotSpeed
|
||||||
, _mcHP = 50000
|
, _mcHP = 50000
|
||||||
}
|
}
|
||||||
lasTurret :: MachineType
|
lasTurret :: MachineType
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import LensHelp
|
|||||||
import RandomHelp
|
import RandomHelp
|
||||||
|
|
||||||
import qualified Data.Set as S
|
import qualified Data.Set as S
|
||||||
import Data.Maybe
|
--import Data.Maybe
|
||||||
|
|
||||||
cenLasTur :: Room
|
cenLasTur :: Room
|
||||||
cenLasTur = roomNgon 8 200 & rmPmnts .~
|
cenLasTur = roomNgon 8 200 & rmPmnts .~
|
||||||
@@ -44,7 +44,8 @@ lightSensInsideDoor outplid rm = rm
|
|||||||
lasSensLightAboveDoor :: Float -> PlacementSpot -> Placement
|
lasSensLightAboveDoor :: Float -> PlacementSpot -> Placement
|
||||||
lasSensLightAboveDoor wth ps = extTrigLitPos
|
lasSensLightAboveDoor wth ps = extTrigLitPos
|
||||||
(atFstLnkOutShiftBy (\(p,a) -> (p +.+ rotateV a (V2 18.5 (-2.5)), a)))
|
(atFstLnkOutShiftBy (\(p,a) -> (p +.+ rotateV a (V2 18.5 (-2.5)), a)))
|
||||||
( \tp -> Just $ lightSensor wth (upf $ fromJust $ _plMID tp) ps )
|
( \tp -> Just $ lightSensor wth (_plMID tp) --(upf $ fromJust $ _plMID tp)
|
||||||
|
ps )
|
||||||
where
|
where
|
||||||
upf trid mc w | _sensAmount (_mcSensor mc) > 900 = w & triggers . ix trid .~ const True
|
upf trid mc w | _sensAmount (_mcSensor mc) > 900 = w & triggers . ix trid .~ const True
|
||||||
| otherwise = w
|
| otherwise = w
|
||||||
|
|||||||
@@ -60,7 +60,8 @@ sensorRoomRunPast dt n = do
|
|||||||
sensAboveDoor :: DamageType -> Float -> PlacementSpot -> Placement
|
sensAboveDoor :: DamageType -> Float -> PlacementSpot -> Placement
|
||||||
sensAboveDoor sensetype wth ps = extTrigLitPos
|
sensAboveDoor sensetype wth ps = extTrigLitPos
|
||||||
(atFstLnkOutShiftBy (\(p,a) -> (p +.+ rotateV a (V2 18.5 (-2.5)), a)))
|
(atFstLnkOutShiftBy (\(p,a) -> (p +.+ rotateV a (V2 18.5 (-2.5)), a)))
|
||||||
( \tp -> Just $ damageSensor sensetype wth (upf $ fromJust $ _plMID tp) ps )
|
( \tp -> Just $ damageSensor sensetype wth (_plMID tp) --(upf $ fromJust $ _plMID tp)
|
||||||
|
ps )
|
||||||
where
|
where
|
||||||
upf trid mc w | _sensAmount (_mcSensor mc) > 900 = w & triggers . ix trid .~ const True
|
upf trid mc w | _sensAmount (_mcSensor mc) > 900 = w & triggers . ix trid .~ const True
|
||||||
| otherwise = w
|
| otherwise = w
|
||||||
|
|||||||
+8
-9
@@ -5,6 +5,7 @@ Description : Simulation update
|
|||||||
-}
|
-}
|
||||||
module Dodge.Update ( updateUniverse ) where
|
module Dodge.Update ( updateUniverse ) where
|
||||||
import Dodge.Data
|
import Dodge.Data
|
||||||
|
import Dodge.Machine.Update
|
||||||
import Dodge.RadarBlip
|
import Dodge.RadarBlip
|
||||||
import Dodge.Flare
|
import Dodge.Flare
|
||||||
import Dodge.Menu
|
import Dodge.Menu
|
||||||
@@ -14,7 +15,7 @@ import Dodge.Distortion
|
|||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
--import Dodge.Wall.Delete
|
--import Dodge.Wall.Delete
|
||||||
import Dodge.Update.WallDamage
|
import Dodge.Update.WallDamage
|
||||||
import Dodge.Machine.Destroy
|
--import Dodge.Machine.Destroy
|
||||||
--import Dodge.Menu
|
--import Dodge.Menu
|
||||||
import Dodge.Base
|
import Dodge.Base
|
||||||
import Dodge.Zone
|
import Dodge.Zone
|
||||||
@@ -89,7 +90,8 @@ functionalUpdate cfig w = checkEndGame
|
|||||||
. zoneClouds
|
. zoneClouds
|
||||||
. updateMIM magnets _mgUpdate
|
. updateMIM magnets _mgUpdate
|
||||||
. updateIMl' _terminals tmUpdate
|
. updateIMl' _terminals tmUpdate
|
||||||
. updateIMl _machines mcChooseUpdate
|
-- . updateIMl _machines mcChooseUpdate
|
||||||
|
. updateIMl' _machines updateMachine
|
||||||
. updateIMl _creatures _crUpdate
|
. updateIMl _creatures _crUpdate
|
||||||
-- creatures should be updated early so that crOldPos is set before any position change
|
-- creatures should be updated early so that crOldPos is set before any position change
|
||||||
. over creatures (fmap setOldPos)
|
. over creatures (fmap setOldPos)
|
||||||
@@ -125,13 +127,10 @@ updateWorldSelect w = f . g $ case (w ^? mouseButtons . ix ButtonLeft, w ^? mous
|
|||||||
g | ButtonRight `M.member` _mouseButtons w = rSelect .~ mwp
|
g | ButtonRight `M.member` _mouseButtons w = rSelect .~ mwp
|
||||||
| otherwise = id
|
| otherwise = id
|
||||||
|
|
||||||
mcChooseUpdate :: Machine -> Machine -> World -> World
|
--mcChooseUpdate :: Machine -> Machine -> World -> World
|
||||||
mcChooseUpdate mc mc'
|
--mcChooseUpdate mc mc'
|
||||||
| _mcHP mc > 0 = _mcUpdate mc mc'
|
-- | _mcHP mc > 0 = _mcUpdate mc mc'
|
||||||
| otherwise = destroyMachine mc
|
-- | otherwise = destroyMachine mc
|
||||||
-- (machines %~ IM.delete (_mcID mc))
|
|
||||||
-- . deleteWallIDs (_mcWallIDs mc)
|
|
||||||
-- . _mcDeath mc mc'
|
|
||||||
|
|
||||||
tmUpdate :: Terminal -> World -> World
|
tmUpdate :: Terminal -> World -> World
|
||||||
tmUpdate tm w = case w ^? terminals . ix (_tmID tm) . tmFutureLines . ix 0 of
|
tmUpdate tm w = case w ^? terminals . ix (_tmID tm) . tmFutureLines . ix 0 of
|
||||||
|
|||||||
Reference in New Issue
Block a user