Make equipment effects use item locations
Move towards removing on/off equipment effects
This commit is contained in:
+21
-14
@@ -1,5 +1,8 @@
|
||||
module Dodge.Euse where
|
||||
module Dodge.Euse
|
||||
where
|
||||
|
||||
import Dodge.Data.ComposedItem
|
||||
import Dodge.Data.DoubleTree
|
||||
import Color
|
||||
--import Control.Monad
|
||||
import Data.Maybe
|
||||
@@ -17,19 +20,23 @@ import Geometry
|
||||
import qualified IntMapHelp as IM
|
||||
import LensHelp
|
||||
|
||||
useE :: Euse -> Item -> Creature -> World -> World
|
||||
useE eo = case eo of
|
||||
EDoNothing -> const $ const id
|
||||
EMagShield -> useMagShield
|
||||
EWristShield -> setWristShieldPos
|
||||
EHeadLamp -> createHeadLamp
|
||||
ECamouflage vis -> overCID (crCamouflage .~ vis)
|
||||
EonWristShield -> onEquipWristShield
|
||||
EoffWristShield -> onRemoveWristShield
|
||||
-- EFuelSource 0 _ -> const . const id
|
||||
-- EFuelSource{} -> const . const id
|
||||
EBatterySource{} -> tryChargeBattery
|
||||
EAmmoSource{} -> tryAttachBulletBelt
|
||||
doItmCrWdWd :: ItmCrWdWd -> Item -> Creature -> World -> World
|
||||
doItmCrWdWd x itm cr = case x of
|
||||
(ECamouflage vis) -> overCID (crCamouflage .~ vis) itm cr
|
||||
EonWristShield -> onEquipWristShield itm cr
|
||||
EoffWristShield -> onRemoveWristShield itm cr
|
||||
_ -> id
|
||||
|
||||
useE :: Euse -> LocationLDT ItemLink ComposedItem -> Creature -> World -> World
|
||||
useE eo loc cr = case eo of
|
||||
EDoNothing -> id
|
||||
EMagShield -> useMagShield itm cr
|
||||
EWristShield -> setWristShieldPos itm cr
|
||||
EHeadLamp -> createHeadLamp itm cr
|
||||
EBatterySource{} -> tryChargeBattery itm cr
|
||||
EAmmoSource{} -> tryAttachBulletBelt itm cr
|
||||
where
|
||||
itm = loc ^. locLDT . ldtValue . _1
|
||||
|
||||
tryAttachBulletBelt :: Item -> Creature -> World -> World
|
||||
tryAttachBulletBelt _ _ w = w
|
||||
|
||||
Reference in New Issue
Block a user