Cleanup
This commit is contained in:
@@ -14,7 +14,7 @@ import LensHelp
|
||||
|
||||
--import Data.Maybe
|
||||
|
||||
itemCombinations :: [([(IcAmount,ItemBaseType)],Item)]
|
||||
itemCombinations :: [([(ItAmount,ItemBaseType)],Item)]
|
||||
itemCombinations =
|
||||
[ po [CRAFT PIPE, CRAFT HARDWARE] (bangStick 1)
|
||||
, po [HELD (BANGSTICK 1), CRAFT TIN] pistol
|
||||
|
||||
@@ -1,252 +0,0 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
module Dodge.Combine.Data
|
||||
where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Dodge.Data.Equipment.Misc
|
||||
import Dodge.Data.ItemAmount
|
||||
import Control.Lens
|
||||
import qualified Data.Map.Strict as M
|
||||
-- this should probably store loaded ammo
|
||||
data ItemType = ItemType
|
||||
{_iyBase :: ItemBaseType
|
||||
,_iyModules :: M.Map ModuleSlot ItemModuleType
|
||||
,_iyStack :: Stack
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemType
|
||||
data Stack = NoStack | Stack IcAmount
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Stack where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Stack
|
||||
data CraftType
|
||||
= PIPE
|
||||
| TUBE
|
||||
| HARDWARE
|
||||
| SPRING
|
||||
| DUCTTAPE
|
||||
| CAN
|
||||
| TIN
|
||||
| DRUM
|
||||
| PLANK
|
||||
| SHARDGLASS
|
||||
| PUMP
|
||||
| MOTOR
|
||||
| TRANSFORMER
|
||||
| PRISM
|
||||
| THERMOMETER
|
||||
| LIGHTER
|
||||
| MAGNET
|
||||
| ANTIMATTER
|
||||
| PLATE
|
||||
| TRANSMITTER
|
||||
| MICROCHIP
|
||||
| AIUNIT
|
||||
| CAMERA
|
||||
| MINIDISPLAY -- visual display unit
|
||||
| LED
|
||||
| NAILBOX
|
||||
| IRONBAR
|
||||
| LIGHTSENSOR
|
||||
| SOUNDSENSOR
|
||||
| HEATSENSOR
|
||||
| CREATURESENSOR
|
||||
| WIRE
|
||||
| BATTERY
|
||||
| FUELCELL
|
||||
| PORTABLEFUSION
|
||||
-- Modules
|
||||
-- bullet
|
||||
| INCENDIARYMODULE
|
||||
| STATICMODULE
|
||||
| CONCUSSMODULE
|
||||
| FRAGMODULE
|
||||
| FLASHMODULE
|
||||
| BOUNCEMODULE
|
||||
| PENMODULE
|
||||
--
|
||||
| TELEPORTMODULE
|
||||
| TIMEMODULE
|
||||
| SIZEMODULE
|
||||
| GRAVITYMODULE
|
||||
deriving (Eq,Ord,Show,Enum,Read,Generic)
|
||||
instance ToJSON CraftType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON CraftType
|
||||
-- TODO make this an enum somehow...?
|
||||
data ItemBaseType
|
||||
= NOTDEFINED
|
||||
| EFFGUN String
|
||||
| AUTOEFFGUN String
|
||||
-- Weapons
|
||||
| HELD {_ibtHeld :: HeldItemType}
|
||||
| LEFT {_ibtLeft :: LeftItemType}
|
||||
| EQUIP {_ibtEquip :: EquipItemType}
|
||||
-- | GRENADE
|
||||
-- | REMOTEBOMB
|
||||
-- Utility items
|
||||
-- Equipment
|
||||
--
|
||||
| KEYCARD Int
|
||||
--
|
||||
| MEDKIT Int
|
||||
| CRAFT CraftType
|
||||
--
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemBaseType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemBaseType
|
||||
data EquipItemType
|
||||
= MAGSHIELD
|
||||
| FLAMESHIELD
|
||||
| FRONTARMOUR
|
||||
| WRISTARMOUR
|
||||
| INVISIBILITYEQUIPMENT EquipSite
|
||||
| BRAINHAT
|
||||
| HAT
|
||||
| HEADLAMP
|
||||
| HEADLAMP1
|
||||
| POWERLEGS
|
||||
| SPEEDLEGS
|
||||
| JUMPLEGS
|
||||
| JETPACK
|
||||
| AUTODETECTOR Detector
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON EquipItemType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON EquipItemType
|
||||
data LeftItemType
|
||||
= BOOSTER
|
||||
| REWINDER
|
||||
| BLINKER
|
||||
| BLINKERUNSAFE
|
||||
| SHRINKER
|
||||
| SPAWNER
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON LeftItemType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON LeftItemType
|
||||
data HeldItemType
|
||||
= BANGSTICK {_xNum :: Int}
|
||||
| PISTOL
|
||||
| REVOLVER
|
||||
| REVOLVERX {_xNum :: Int}
|
||||
| MACHINEPISTOL
|
||||
| AUTOPISTOL
|
||||
| SMG
|
||||
| BANGCONE
|
||||
| BLUNDERBUSS
|
||||
| GRAPECANNON {_xNum :: Int}
|
||||
-- | GRENADELAUNCHER Int -- number of chambers that can be reloaded
|
||||
-- | MORTARCONE / HANDMORTAR
|
||||
-- | MINIGUN
|
||||
| MINIGUNX {_xNum :: Int}
|
||||
| VOLLEYGUN {_xNum :: Int}
|
||||
| RIFLE
|
||||
| REPEATER
|
||||
| AUTORIFLE
|
||||
| BURSTRIFLE
|
||||
-- | FASTBURSTRIFLE
|
||||
-- | COMPLETEBURSTRIFLE
|
||||
| BANGROD
|
||||
| ELEPHANTGUN
|
||||
| AMR
|
||||
| AUTOAMR
|
||||
| SNIPERRIFLE
|
||||
| MACHINEGUN
|
||||
| FLAMESPITTER
|
||||
| FLAMETHROWER
|
||||
| FLAMETORRENT
|
||||
| FLAMEWALL
|
||||
| BLOWTORCH
|
||||
| SPARKGUN
|
||||
| TESLAGUN
|
||||
| LASGUN
|
||||
| LASCIRCLE
|
||||
-- | LASPULSE
|
||||
| DUALBEAM
|
||||
-- | LASGUNSWING
|
||||
-- | LASGUNSWAY
|
||||
-- | LASGUNWIDEPULSE
|
||||
| LASWIDE {_xNum :: Int}
|
||||
-- | LASGUNFOCUS Int
|
||||
-- | SONICGUN
|
||||
| TRACTORGUN
|
||||
| LAUNCHER
|
||||
| LAUNCHERX {_xNum :: Int}
|
||||
-- | TRACKINGLAUNCHER
|
||||
| REMOTELAUNCHER
|
||||
| POISONSPRAYER
|
||||
| DRONELAUNCHER
|
||||
|
||||
| SHATTERGUN
|
||||
|
||||
| FORCEFIELDGUN
|
||||
|
||||
| HELDDETECTOR Detector
|
||||
| TORCH
|
||||
| FLATSHIELD
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON HeldItemType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON HeldItemType
|
||||
data ItemModuleType
|
||||
= EMPTYMODULE
|
||||
| DRUMMAG
|
||||
| BELTMAG
|
||||
| MAGNETMAG
|
||||
| INCENDBUL
|
||||
| BOUNCEBUL
|
||||
| PENBUL
|
||||
| STATICBUL
|
||||
| CONCUSBUL
|
||||
| TARGCR
|
||||
| TARGLAS
|
||||
| TARGPOS
|
||||
| MAGNETTRAJ
|
||||
| FLECHETRAJ
|
||||
| BEZIERTRAJ
|
||||
| INCENDLAS
|
||||
| SPLITLAS
|
||||
| STATICLAS
|
||||
| WEPTELE
|
||||
| LAUNCHHOME
|
||||
| EXTRABATTERY
|
||||
| ATTACHTORCH
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemModuleType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemModuleType
|
||||
data Detector
|
||||
= ITEMDETECTOR
|
||||
| CREATUREDETECTOR
|
||||
| WALLDETECTOR
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Detector where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Detector
|
||||
data ModuleSlot
|
||||
= ModBullet
|
||||
| ModBulletSpawn
|
||||
| ModRifleMag
|
||||
| ModAutoMag
|
||||
| ModTarget
|
||||
| ModBulletTrajectory
|
||||
| ModLauncherHoming
|
||||
| ModBattery
|
||||
| ModTeleport
|
||||
| ModDualBeam
|
||||
| ModHeldAttach
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ModuleSlot where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ModuleSlot
|
||||
instance ToJSONKey ModuleSlot
|
||||
instance FromJSONKey ModuleSlot
|
||||
makeLenses ''ItemType
|
||||
makeLenses ''ItemBaseType
|
||||
makeLenses ''HeldItemType
|
||||
@@ -19,7 +19,7 @@ data CombClust
|
||||
| JoinClust
|
||||
deriving (Eq,Ord,Show,Enum,Bounded)
|
||||
|
||||
newtype CombNode = CombNode {_unCombNode :: Either ItemBaseType [(IcAmount,ItemBaseType)]}
|
||||
newtype CombNode = CombNode {_unCombNode :: Either ItemBaseType [(ItAmount,ItemBaseType)]}
|
||||
deriving (Eq,Ord,Show)
|
||||
|
||||
instance Labellable CombNode where
|
||||
@@ -32,7 +32,7 @@ instance Labellable CombEdge where
|
||||
toLabelValue (CombEdge 0) = StrLabel (pack "")
|
||||
toLabelValue (CombEdge x) = StrLabel (pack $ show x)
|
||||
|
||||
bulletCombinations :: [([(IcAmount,ItemBaseType)],Item)]
|
||||
bulletCombinations :: [([(ItAmount,ItemBaseType)],Item)]
|
||||
bulletCombinations = filter
|
||||
( (`elem` map totype bulletWeapons)
|
||||
. totype
|
||||
@@ -63,7 +63,7 @@ itemCombinationsEdges = concatMap (f . over _2 (_iyBase . _itType)) itemCombinat
|
||||
| otherwise = (CombNode $ Right abts,CombNode $ Left bt,0) : map g abts
|
||||
where
|
||||
bts = map snd abts
|
||||
g (am,bt') = (CombNode $ Left bt',CombNode $ Right abts,_toInt am)
|
||||
g (am,bt') = (CombNode $ Left bt',CombNode $ Right abts,_getItAmount am)
|
||||
|
||||
combinationsGraph :: FGL.Gr CombNode CombEdge
|
||||
combinationsGraph = FGL.labnfilter (f . _unCombNode . snd)
|
||||
|
||||
+13
-13
@@ -8,28 +8,28 @@ import Geometry
|
||||
moduleModification :: ItemModuleType -> Item -> Item
|
||||
moduleModification imt = case imt of
|
||||
EMPTYMODULE -> id
|
||||
DRUMMAG -> itConsumption . laMax .~ 45
|
||||
BELTMAG -> itConsumption . laMax .~ 150
|
||||
DRUMMAG -> itUse . heldConsumption . laMax .~ 45
|
||||
BELTMAG -> itUse . heldConsumption . laMax .~ 150
|
||||
MAGNETMAG -> itUse . useDelay . rateMax .~ 4
|
||||
INCENDBUL -> itConsumption . laAmmoType . amBullet . buSpawn .~ BulBall IncBall
|
||||
BOUNCEBUL -> itConsumption . laAmmoType . amBullet . buEffect .~ BounceBullet
|
||||
PENBUL -> itConsumption . laAmmoType . amBullet . buEffect .~ PenetrateBullet
|
||||
STATICBUL -> itConsumption . laAmmoType . amBullet . buSpawn .~ BulBall TeslaBall
|
||||
CONCUSBUL -> itConsumption . laAmmoType . amBullet . buSpawn .~ BulBall ConcBall
|
||||
INCENDBUL -> itUse . heldConsumption . laAmmoType . amBullet . buSpawn .~ BulBall IncBall
|
||||
BOUNCEBUL -> itUse . heldConsumption . laAmmoType . amBullet . buEffect .~ BounceBullet
|
||||
PENBUL -> itUse . heldConsumption . laAmmoType . amBullet . buEffect .~ PenetrateBullet
|
||||
STATICBUL -> itUse . heldConsumption . laAmmoType . amBullet . buSpawn .~ BulBall TeslaBall
|
||||
CONCUSBUL -> itUse . heldConsumption . laAmmoType . amBullet . buSpawn .~ BulBall ConcBall
|
||||
TARGCR -> itTargeting .~ targetRBCreature
|
||||
TARGLAS -> itTargeting .~ targetLaser
|
||||
TARGPOS -> itTargeting .~ targetRBPress
|
||||
MAGNETTRAJ -> (itConsumption . laAmmoType . amBullet . buTrajectory .~ MagnetTrajectory 0)
|
||||
. (itConsumption . laAmmoType . amBullet . buVel .~ V2 10 0)
|
||||
FLECHETRAJ -> itConsumption . laAmmoType . amBullet . buTrajectory .~ FlechetteTrajectory 0
|
||||
BEZIERTRAJ -> itConsumption . laAmmoType . amBullet . buTrajectory .~ BezierTrajectory 0 0 0
|
||||
MAGNETTRAJ -> (itUse . heldConsumption . laAmmoType . amBullet . buTrajectory .~ MagnetTrajectory 0)
|
||||
. (itUse . heldConsumption . laAmmoType . amBullet . buVel .~ V2 10 0)
|
||||
FLECHETRAJ -> itUse . heldConsumption . laAmmoType . amBullet . buTrajectory .~ FlechetteTrajectory 0
|
||||
BEZIERTRAJ -> itUse . heldConsumption . laAmmoType . amBullet . buTrajectory .~ BezierTrajectory 0 0 0
|
||||
INCENDLAS -> itParams . lasBeam .~ BeamCombine FlameBeamCombine
|
||||
SPLITLAS -> itParams . lasBeam .~ BeamCombine SplitBeamCombine
|
||||
STATICLAS -> (itParams . lasBeam .~ BeamCombine TeslaBeamCombine)
|
||||
. (itParams . subParams ?~ teslaParams)
|
||||
WEPTELE -> makeDirectedTele
|
||||
LAUNCHHOME -> itConsumption . laAmmoType . amPjCreation .~ CreateTrackingShell
|
||||
EXTRABATTERY -> itConsumption . laMax +~ 1000
|
||||
LAUNCHHOME -> itUse . heldConsumption . laAmmoType . amPjCreation .~ CreateTrackingShell
|
||||
EXTRABATTERY -> itUse . heldConsumption . laMax +~ 1000
|
||||
ATTACHTORCH -> id
|
||||
where
|
||||
makeDirectedTele it = it
|
||||
|
||||
@@ -11,7 +11,7 @@ import Data.Bifunctor
|
||||
--import Data.Map.Merge.Strict
|
||||
import Data.List (sort)
|
||||
|
||||
combinationsTrie :: Trie (IcAmount,ItemBaseType) Item
|
||||
combinationsTrie :: Trie (ItAmount,ItemBaseType) Item
|
||||
{-# INLINE combinationsTrie #-}
|
||||
combinationsTrie = foldr
|
||||
(uncurry insertInTrie . first sort)
|
||||
|
||||
Reference in New Issue
Block a user