module Dodge.Placement.Instance.Analyser (analyser) where import Color import Dodge.Data.GenWorld import Dodge.Default import Dodge.Placement.Instance import Dodge.Terminal import LensHelp analyser :: ProximityRequirement -> PlacementSpot -> PlacementSpot -> Placement analyser proxreq pslight psmc = extTrigLitPos pslight $ \tp -> Just $ plSpot .~ psmc $ putTerminal (dark magenta) (themachine & mcMounts . at OTTrigger .~ _plMID tp) tparams -- (linksensortotrigger tp) where tparams = textTerminal & tmCommands .:~ TCSensorInfo -- linksensortotrigger tp _ mc -- = triggers . ix (fromJust $ _plMID tp) .~ const (_sensToggle $ _mcSensor mc) themachine = defaultMachine & mcColor .~ aquamarine -- & mcUpdate .~ mcProximitySensorUpdate & mcType .~ McTerminal & mcHP .~ 100 & mcType .~ McSensor (defaultProximitySensor{_proxRequirement = proxreq}) --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