Work on radar and sonar
This commit is contained in:
@@ -14,6 +14,7 @@ module Dodge.Item.Weapon.ExtraEffect
|
||||
) where
|
||||
import Dodge.Data
|
||||
import Dodge.Base
|
||||
import Dodge.SoundLogic
|
||||
--import Dodge.Item.Weapon.Decoration
|
||||
import Dodge.Item.Weapon.UseEffect
|
||||
import Dodge.Item.Weapon.LaserPath
|
||||
@@ -32,28 +33,25 @@ import Data.Maybe
|
||||
import qualified Data.Set as S
|
||||
import qualified SDL
|
||||
{- | Automatically send out radar pulses that detect walls. -}
|
||||
autoRadarEffect :: ItEffect
|
||||
autoRadarEffect = ItInvEffect {_itInvEffect = f 50 ,_itEffectCounter = 0 }
|
||||
where
|
||||
f :: Int -> Item -> Creature -> World -> World
|
||||
f 0 itm cr w = aRadarPulse cr w
|
||||
autoRadarEffect :: Item -> Creature -> World -> World
|
||||
autoRadarEffect itm cr w
|
||||
| _eparamInt (_eqParams (_itUse itm)) < 1 = aRadarPulse cr w
|
||||
& creatures . ix (_crID cr) . crInv . ix (fromJust $ _itInvPos itm)
|
||||
. itEffect . itInvEffect .~ f 100
|
||||
f t itm cr w = w
|
||||
. itUse . eqParams . eparamInt .~ 100
|
||||
& soundStart OnceSound (_crPos cr) click1S Nothing
|
||||
| otherwise = w
|
||||
& creatures . ix (_crID cr) . crInv . ix (fromJust $ _itInvPos itm)
|
||||
. itEffect . itInvEffect .~ f (t-1)
|
||||
. itUse . eqParams . eparamInt -~ 1
|
||||
{- | Automatically send out sonar pulses that detect creatures. -}
|
||||
autoSonarEffect :: ItEffect
|
||||
autoSonarEffect = ItInvEffect {_itInvEffect = f ,_itEffectCounter = 50 }
|
||||
where
|
||||
f :: Item -> Creature -> World -> World
|
||||
f itm cr w
|
||||
| _itEffectCounter (_itEffect itm) == 0 = aSonarPulse cr w
|
||||
& decreasecounter
|
||||
| otherwise = decreasecounter w
|
||||
where
|
||||
decreasecounter = creatures . ix (_crID cr) . crInv
|
||||
. ix (fromJust $ _itInvPos itm) . itEffect . itEffectCounter %~ (\i -> (i - 1) `mod` 50)
|
||||
autoSonarEffect :: Item -> Creature -> World -> World
|
||||
autoSonarEffect itm cr w
|
||||
| _eparamInt (_eqParams (_itUse itm)) < 1 = aSonarPulse cr w
|
||||
& creatures . ix (_crID cr) . crInv . ix (fromJust $ _itInvPos itm)
|
||||
. itUse . eqParams . eparamInt .~ 50
|
||||
& soundStart OnceSound (_crPos cr) click1S Nothing
|
||||
| otherwise = w
|
||||
& creatures . ix (_crID cr) . crInv . ix (fromJust $ _itInvPos itm)
|
||||
. itUse . eqParams . eparamInt -~ 1
|
||||
|
||||
defaultTargeting :: Targeting
|
||||
defaultTargeting = Targeting
|
||||
|
||||
Reference in New Issue
Block a user