Work on bullet module system
This commit is contained in:
@@ -67,6 +67,7 @@ addModules (ps,it) = (is , ) <$> [ (it & itModules .~ themodules,s) | (themodule
|
||||
where
|
||||
(ms,is) = unzip ps
|
||||
combinedmodules = foldr f [(_itModules it,[])] ms
|
||||
f :: ItemModules -> [(ItemModules,[String])] -> [(ItemModules,[String])]
|
||||
f ims imss = concatMap (g ims) imss
|
||||
g ims (ims',s) = map (second (s++)) $ combineModules ims ims'
|
||||
|
||||
@@ -75,10 +76,11 @@ combineModules (ItemModules a1) (ItemModules a2)
|
||||
= [(ItemModules a,ss) | (a,ss) <- combineModule a1 a2]
|
||||
|
||||
combineModule :: ItemModule a -> ItemModule a -> [(ItemModule a,[String])]
|
||||
combineModule BlockedModule (ItemModule _ ss _) = [(BlockedModule, "WARNING:REMOVES":ss)]
|
||||
combineModule BlockedModule _ = [(BlockedModule,["a"])]
|
||||
combineModule m BlockedModule = [(m,[])]
|
||||
combineModule (ItemModule _ ss _) BlockedModule = [(BlockedModule, "WARNING:REMOVES":ss)]
|
||||
combineModule _ BlockedModule = [(BlockedModule, [])]
|
||||
combineModule BlockedModule m = [(m,[])]
|
||||
combineModule DefaultModule m = [(m,[])]
|
||||
combineModule (ItemModule _ ss _) m@ItemModule{} = [(m,"WARNING:REMOVES":ss)]
|
||||
combineModule m _ = [(m,[])]
|
||||
|
||||
toggleCombineInv :: World -> World
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
{-# LANGUAGE TupleSections #-}
|
||||
module Dodge.Combine.Combinations where
|
||||
import Dodge.Data
|
||||
import Dodge.WorldEvent.HitEffect
|
||||
import Dodge.Particle.Bullet.HitEffect
|
||||
import Dodge.Item.Equipment
|
||||
import Dodge.Item.Craftable
|
||||
import Dodge.Item.Weapon.BulletGuns
|
||||
@@ -8,6 +10,7 @@ import Dodge.Item.Weapon.BatteryGuns
|
||||
import Dodge.Item.Weapon.Launcher
|
||||
import Dodge.Item.Weapon.SprayGuns
|
||||
|
||||
import Control.Lens
|
||||
itemCombinations :: [([(Int,CombineType)],Item)]
|
||||
itemCombinations =
|
||||
[ po [PIPE, HARDWARE] (bangStick 1)
|
||||
@@ -64,8 +67,20 @@ itemCombinations =
|
||||
++ map (\i -> po [REVOLVERX i,CAN] $ revolverX (i+1)) [1..5]
|
||||
++ map (\i -> p [o (BANGCANEX i),p 2 PIPE] $ bangCaneX (i+1)) [1..5]
|
||||
++ map (\i -> po [MINIGUNX i,BANGCANE] $ miniGunX (i+1)) [3..15]
|
||||
|
||||
++ [ po [itype,mtype] $ it & itModules . modHitEffect .~ m
|
||||
| (itype,it) <- firearmTypes , (mtype,m) <- bulletModules
|
||||
]
|
||||
where
|
||||
p = (,)
|
||||
po xs it = (map o xs,it)
|
||||
o = (1,)
|
||||
|
||||
firearmTypes :: [(CombineType,Item)]
|
||||
firearmTypes
|
||||
= [(BANGSTICK i,bangStick i) | i <- [1..9] ]
|
||||
++ [(BANGCANEX i,bangCaneX i) | i <- [1..6] ]
|
||||
bulletModules :: [(CombineType,ItemModule HitEffect)]
|
||||
bulletModules =
|
||||
[(INCENDIARYMODULE, ItemModule (destroyOnImpact bulIncCr bulIncWall) ["+INCENDIARY"] 1 )
|
||||
,(BOUNCEMODULE, ItemModule (destroyOnImpact bulBounceArmCr' bulBounceWall) ["+BOUNCE"] 1 )
|
||||
]
|
||||
|
||||
@@ -93,5 +93,8 @@ data CombineType
|
||||
| BATTERY
|
||||
| FUELCELL
|
||||
| PORTABLEFUSION
|
||||
-- Modules
|
||||
| INCENDIARYMODULE
|
||||
| BOUNCEMODULE
|
||||
| NoCombineType
|
||||
deriving (Eq,Ord,Show)
|
||||
|
||||
@@ -167,6 +167,8 @@ startInventory = IM.fromList $ zip [0..] startInvList
|
||||
testInventory :: IM.IntMap Item
|
||||
testInventory = IM.fromList $ zip [0..]
|
||||
[ makeTypeCraftNum 9 PIPE
|
||||
, incendiaryModule
|
||||
, bounceModule
|
||||
, makeTypeCraftNum 5 TUBE
|
||||
, makeTypeCraftNum 1 MAGNET
|
||||
, makeTypeCraftNum 5 HARDWARE
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
module Dodge.Item.Craftable where
|
||||
import Dodge.Data
|
||||
import Dodge.Default.Weapon
|
||||
--import Dodge.Particle.Bullet.HitEffect
|
||||
--import Dodge.WorldEvent.HitEffect
|
||||
import Color
|
||||
--import Dodge.Picture.Layer
|
||||
--import Picture
|
||||
--import Geometry
|
||||
import Control.Lens
|
||||
|
||||
makeTypeCraftNum :: Int -> CombineType -> Item
|
||||
makeTypeCraftNum i ct = defaultCraftable
|
||||
@@ -16,6 +20,16 @@ makeTypeCraftNum i ct = defaultCraftable
|
||||
|
||||
makeTypeCraft :: CombineType -> Item
|
||||
makeTypeCraft = makeTypeCraftNum 1
|
||||
|
||||
incendiaryModule :: Item
|
||||
incendiaryModule = makeTypeCraft INCENDIARYMODULE
|
||||
& itInvSize .~ 1
|
||||
& itInvColor .~ chartreuse
|
||||
bounceModule :: Item
|
||||
bounceModule = makeTypeCraft BOUNCEMODULE
|
||||
& itInvSize .~ 1
|
||||
& itInvColor .~ chartreuse
|
||||
|
||||
pipe :: Item
|
||||
pipe = makeTypeCraft PIPE
|
||||
|
||||
|
||||
@@ -9,8 +9,8 @@ module Dodge.Item.Weapon.BulletGun.Cane
|
||||
, fastBurstRifle
|
||||
, miniGunX
|
||||
) where
|
||||
import Dodge.Particle.Bullet.HitEffect
|
||||
import Dodge.WorldEvent.HitEffect
|
||||
--import Dodge.Particle.Bullet.HitEffect
|
||||
--import Dodge.WorldEvent.HitEffect
|
||||
import Dodge.Item.Weapon.BulletGun.Clip
|
||||
import Dodge.Data
|
||||
--import Dodge.ChainEffect
|
||||
@@ -42,8 +42,6 @@ import Data.Maybe
|
||||
bangCane :: Item
|
||||
bangCane = defaultGun
|
||||
{ _itName = "BANGCANE"
|
||||
, _itModules = ItemModules
|
||||
{ _modHitEffect = ItemModule (destroyOnImpact bulIncCr bulIncWall) ["+INCENDIARY"] 1}
|
||||
, _itType = BANGCANE
|
||||
,_itParams = BulletShooter
|
||||
{ _muzVel = 0.8
|
||||
@@ -147,6 +145,8 @@ rifle = bangCane
|
||||
, _dimSPic = \it -> noPic $ baseRifleShape
|
||||
<> makeSingleClipAt (V3 5 0 3) it
|
||||
}
|
||||
, _itModules = ItemModules
|
||||
{ _modHitEffect = DefaultModule }
|
||||
}
|
||||
& itUse . useAim . aimStance .~ TwoHandTwist
|
||||
& itName .~ "RIFLE"
|
||||
|
||||
Reference in New Issue
Block a user