Commit before moving to external weapon magazines
This commit is contained in:
@@ -1,38 +1,38 @@
|
|||||||
{-# LANGUAGE DeriveGeneric #-}
|
|
||||||
{-# LANGUAGE DeriveAnyClass #-}
|
{-# LANGUAGE DeriveAnyClass #-}
|
||||||
|
{-# LANGUAGE DeriveGeneric #-}
|
||||||
{-# LANGUAGE StrictData #-}
|
{-# LANGUAGE StrictData #-}
|
||||||
{-# LANGUAGE TemplateHaskell #-}
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
|
|
||||||
module Dodge.Data.Item.Combine where
|
module Dodge.Data.Item.Combine where
|
||||||
|
|
||||||
import Dodge.Data.Item.Targeting
|
|
||||||
import Control.Lens
|
import Control.Lens
|
||||||
import Data.Aeson
|
import Data.Aeson
|
||||||
import Data.Aeson.TH
|
import Data.Aeson.TH
|
||||||
import qualified Data.Map.Strict as M
|
import qualified Data.Map.Strict as M
|
||||||
import Dodge.Data.Equipment.Misc
|
import Dodge.Data.Equipment.Misc
|
||||||
|
import Dodge.Data.Item.Targeting
|
||||||
import Dodge.Data.Item.Use.Consumption
|
import Dodge.Data.Item.Use.Consumption
|
||||||
|
|
||||||
data ItemType = ItemType
|
data ItemType = ItemType
|
||||||
{ _iyBase :: ItemBaseType
|
{ _iyBase :: ItemBaseType
|
||||||
, _iyModules :: M.Map ModuleSlot ItemModuleType
|
, _iyModules :: M.Map ModuleSlot ItemModuleType
|
||||||
}
|
}
|
||||||
deriving (Eq,Ord,Show,Read)
|
deriving (Eq, Ord, Show, Read)
|
||||||
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
||||||
|
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
||||||
|
|
||||||
data Stack = NoStack | Stack ItAmount
|
data Stack = NoStack | Stack ItAmount
|
||||||
deriving (Eq,Ord,Show,Read)
|
deriving (Eq, Ord, Show, Read)
|
||||||
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
||||||
|
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
||||||
|
|
||||||
data CraftType
|
data CraftType
|
||||||
= PIPE
|
= PIPE
|
||||||
| TUBE
|
| TUBE
|
||||||
| HARDWARE
|
| HARDWARE
|
||||||
| SPRING
|
| SPRING
|
||||||
|
|
||||||
| HOSE
|
| HOSE
|
||||||
| TAPE
|
| TAPE
|
||||||
|
|
||||||
| CAN
|
| CAN
|
||||||
| TIN
|
| TIN
|
||||||
| STEELDRUM
|
| STEELDRUM
|
||||||
@@ -78,26 +78,29 @@ data CraftType
|
|||||||
| TIMEMODULE
|
| TIMEMODULE
|
||||||
| SIZEMODULE
|
| SIZEMODULE
|
||||||
| GRAVITYMODULE
|
| GRAVITYMODULE
|
||||||
|
|
||||||
| TARGETMODULE TargetType
|
| TARGETMODULE TargetType
|
||||||
deriving (Eq,Ord,Show,Read)
|
deriving (Eq, Ord, Show, Read)
|
||||||
--deriving (Eq, Ord, Show, Enum, Read) --Generic, Flat)
|
|
||||||
|
--deriving (Eq, Ord, Show, Enum, Read) --Generic, Flat)
|
||||||
|
|
||||||
data ItemBaseType
|
data ItemBaseType
|
||||||
= NoItemType
|
= NoItemType
|
||||||
| HELD {_ibtHeld :: HeldItemType}
|
| HELD {_ibtHeld :: HeldItemType}
|
||||||
| LEFT {_ibtLeft :: LeftItemType}
|
| LEFT {_ibtLeft :: LeftItemType}
|
||||||
| EQUIP {_ibtEquip :: EquipItemType}
|
| EQUIP {_ibtEquip :: EquipItemType}
|
||||||
|
| AMMO {_ibtAmmo :: AmmoItemType}
|
||||||
| Consumable {_ibtConsumable :: ConsumableItemType}
|
| Consumable {_ibtConsumable :: ConsumableItemType}
|
||||||
| CRAFT CraftType
|
| CRAFT CraftType
|
||||||
deriving (Eq,Ord,Show,Read)
|
deriving (Eq, Ord, Show, Read)
|
||||||
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
||||||
|
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
||||||
|
|
||||||
data ConsumableItemType
|
data ConsumableItemType
|
||||||
= MEDKIT Int
|
= MEDKIT Int
|
||||||
| EXPLOSIVES
|
| EXPLOSIVES
|
||||||
deriving (Eq,Ord,Show,Read)
|
deriving (Eq, Ord, Show, Read)
|
||||||
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
||||||
|
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
||||||
|
|
||||||
data EquipItemType
|
data EquipItemType
|
||||||
= MAGSHIELD
|
= MAGSHIELD
|
||||||
@@ -112,16 +115,15 @@ data EquipItemType
|
|||||||
| POWERLEGS
|
| POWERLEGS
|
||||||
| SPEEDLEGS
|
| SPEEDLEGS
|
||||||
| JUMPLEGS
|
| JUMPLEGS
|
||||||
|
|
||||||
| JETPACK
|
| JETPACK
|
||||||
| FUELPACK
|
| FUELPACK
|
||||||
| BULLETBELTPACK
|
| BULLETBELTPACK
|
||||||
| BULLETBELTBRACER
|
| BULLETBELTBRACER
|
||||||
| BATTERYPACK
|
| BATTERYPACK
|
||||||
|
|
||||||
| AUTODETECTOR Detector
|
| AUTODETECTOR Detector
|
||||||
deriving (Eq,Ord,Show,Read)
|
deriving (Eq, Ord, Show, Read)
|
||||||
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
||||||
|
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
||||||
|
|
||||||
data LeftItemType
|
data LeftItemType
|
||||||
= BOOSTER
|
= BOOSTER
|
||||||
@@ -183,6 +185,11 @@ data HeldItemType
|
|||||||
| KEYCARD Int
|
| KEYCARD Int
|
||||||
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
||||||
|
|
||||||
|
data AmmoItemType
|
||||||
|
= TINMAGAZINE
|
||||||
|
| DRUMMAGAZINE
|
||||||
|
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
||||||
|
|
||||||
data ItemModuleType
|
data ItemModuleType
|
||||||
= EMPTYMODULE
|
= EMPTYMODULE
|
||||||
| DRUMMAG
|
| DRUMMAG
|
||||||
@@ -232,11 +239,12 @@ deriveJSON defaultOptions ''Detector
|
|||||||
deriveJSON defaultOptions ''EquipItemType
|
deriveJSON defaultOptions ''EquipItemType
|
||||||
deriveJSON defaultOptions ''LeftItemType
|
deriveJSON defaultOptions ''LeftItemType
|
||||||
deriveJSON defaultOptions ''HeldItemType
|
deriveJSON defaultOptions ''HeldItemType
|
||||||
|
deriveJSON defaultOptions ''AmmoItemType
|
||||||
deriveJSON defaultOptions ''ItemModuleType
|
deriveJSON defaultOptions ''ItemModuleType
|
||||||
deriveJSON defaultOptions ''ModuleSlot
|
deriveJSON defaultOptions ''ModuleSlot
|
||||||
deriveJSON defaultOptions ''ItemBaseType
|
deriveJSON defaultOptions ''ItemBaseType
|
||||||
deriveJSON defaultOptions ''ItemType
|
deriveJSON defaultOptions ''ItemType
|
||||||
|
|
||||||
instance ToJSONKey ModuleSlot
|
instance ToJSONKey ModuleSlot
|
||||||
|
|
||||||
instance FromJSONKey ModuleSlot
|
instance FromJSONKey ModuleSlot
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{-# LANGUAGE DeriveGeneric #-}
|
|
||||||
{-# LANGUAGE DeriveAnyClass #-}
|
{-# LANGUAGE DeriveAnyClass #-}
|
||||||
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
|
{-# LANGUAGE DeriveGeneric #-}
|
||||||
{-# LANGUAGE DerivingStrategies #-}
|
{-# LANGUAGE DerivingStrategies #-}
|
||||||
|
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
|
||||||
{-# LANGUAGE StrictData #-}
|
{-# LANGUAGE StrictData #-}
|
||||||
{-# LANGUAGE TemplateHaskell #-}
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
|
|
||||||
@@ -54,8 +54,9 @@ data LeftConsumption
|
|||||||
deriving (Eq, Show, Read) --Generic, Flat)
|
deriving (Eq, Show, Read) --Generic, Flat)
|
||||||
|
|
||||||
newtype ItAmount = ItAmount {_getItAmount :: Int}
|
newtype ItAmount = ItAmount {_getItAmount :: Int}
|
||||||
-- deriving (Eq, Ord, Read Show, Num, Real,) --Generic, Flat)
|
-- deriving (Eq, Ord, Read Show, Num, Real,) --Generic, Flat)
|
||||||
deriving newtype (Eq, Ord, Read, Show, Num, Real, Enum, Integral)
|
deriving newtype (Eq, Ord, Read, Show, Num, Real, Enum, Integral)
|
||||||
|
|
||||||
-- deriving stock (Generic)
|
-- deriving stock (Generic)
|
||||||
-- deriving anyclass (Flat)
|
-- deriving anyclass (Flat)
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ module Dodge.Item (
|
|||||||
itemFromBase,
|
itemFromBase,
|
||||||
) where
|
) where
|
||||||
|
|
||||||
|
import Dodge.Item.Ammo
|
||||||
import Dodge.Data.Item
|
import Dodge.Data.Item
|
||||||
import Dodge.Item.Consumable
|
import Dodge.Item.Consumable
|
||||||
import Dodge.Item.Craftable
|
import Dodge.Item.Craftable
|
||||||
@@ -20,9 +21,15 @@ itemFromBase ibt = case ibt of
|
|||||||
HELD ht -> itemFromHeldType ht
|
HELD ht -> itemFromHeldType ht
|
||||||
LEFT lt -> itemFromLeftType lt
|
LEFT lt -> itemFromLeftType lt
|
||||||
EQUIP et -> itemFromEquipType et
|
EQUIP et -> itemFromEquipType et
|
||||||
|
AMMO at -> itemFromAmmoType at
|
||||||
Consumable et -> itemFromConsumableType et
|
Consumable et -> itemFromConsumableType et
|
||||||
CRAFT cr -> makeTypeCraft cr
|
CRAFT cr -> makeTypeCraft cr
|
||||||
|
|
||||||
|
itemFromAmmoType :: AmmoItemType -> Item
|
||||||
|
itemFromAmmoType at = case at of
|
||||||
|
TINMAGAZINE -> tinMagazine
|
||||||
|
DRUMMAGAZINE -> drumMagazine
|
||||||
|
|
||||||
itemFromConsumableType :: ConsumableItemType -> Item
|
itemFromConsumableType :: ConsumableItemType -> Item
|
||||||
itemFromConsumableType ct = case ct of
|
itemFromConsumableType ct = case ct of
|
||||||
MEDKIT i -> medkit i
|
MEDKIT i -> medkit i
|
||||||
|
|||||||
+21
-17
@@ -2,7 +2,7 @@ module Dodge.Item.Display (
|
|||||||
--itemDisplay,
|
--itemDisplay,
|
||||||
itemDisplayOffset,
|
itemDisplayOffset,
|
||||||
canAttachTargetingBelow,
|
canAttachTargetingBelow,
|
||||||
-- selectedItemDisplay,
|
-- selectedItemDisplay,
|
||||||
itemString,
|
itemString,
|
||||||
itemBaseName,
|
itemBaseName,
|
||||||
basicItemDisplay,
|
basicItemDisplay,
|
||||||
@@ -10,21 +10,24 @@ module Dodge.Item.Display (
|
|||||||
|
|
||||||
import Control.Applicative
|
import Control.Applicative
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
import Dodge.Item.Info
|
|
||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
import Dodge.Data.Creature
|
import Dodge.Data.Creature
|
||||||
|
import Dodge.Item.Info
|
||||||
import Dodge.Item.SlotsTaken
|
import Dodge.Item.SlotsTaken
|
||||||
import Dodge.Module
|
import Dodge.Module
|
||||||
import LensHelp
|
import LensHelp
|
||||||
import Padding
|
import Padding
|
||||||
|
|
||||||
itemDisplayOffset :: Creature -> Item -> (Int,[String])
|
itemDisplayOffset :: Creature -> Item -> (Int, [String])
|
||||||
itemDisplayOffset cr itm = case itm ^. itType . iyBase of
|
itemDisplayOffset cr itm = case itm ^. itType . iyBase of
|
||||||
EQUIP (TARGETINGHAT tt) | targetItemCanAttachAbove cr itm
|
|
||||||
-> (-1, leftPad 15 ' ' (targetingTypeString tt) :
|
|
||||||
(itemDisplay cr itm & ix 0 %~ (\s -> itemDisplayPad s (replicate (length (targetingTypeString tt)) '^') )))
|
|
||||||
EQUIP (TARGETINGHAT tt)
|
EQUIP (TARGETINGHAT tt)
|
||||||
-> (0, itemDisplay cr itm & ix 0 %~ (\s -> itemDisplayPad s (targetingTypeString tt)))
|
| targetItemCanAttachAbove cr itm ->
|
||||||
|
( -1
|
||||||
|
, leftPad 15 ' ' (targetingTypeString tt) :
|
||||||
|
(itemDisplay cr itm & ix 0 %~ (\s -> itemDisplayPad s (replicate (length (targetingTypeString tt)) '^')))
|
||||||
|
)
|
||||||
|
EQUIP (TARGETINGHAT tt) ->
|
||||||
|
(0, itemDisplay cr itm & ix 0 %~ (\s -> itemDisplayPad s (targetingTypeString tt)))
|
||||||
_ -> (0, itemDisplay cr itm)
|
_ -> (0, itemDisplay cr itm)
|
||||||
|
|
||||||
targetItemCanAttachAbove :: Creature -> Item -> Bool
|
targetItemCanAttachAbove :: Creature -> Item -> Bool
|
||||||
@@ -46,10 +49,9 @@ targetingTypeString tt = case tt of
|
|||||||
TargetRBCreature -> "LIFEFORM"
|
TargetRBCreature -> "LIFEFORM"
|
||||||
TargetCursor -> "CURSOR"
|
TargetCursor -> "CURSOR"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
itemDisplay :: Creature -> Item -> [String]
|
itemDisplay :: Creature -> Item -> [String]
|
||||||
itemDisplay cr itm = --itemDisplayWithNumber (showConsumption cr it) it
|
itemDisplay cr itm =
|
||||||
|
--itemDisplayWithNumber (showConsumption cr it) it
|
||||||
zipWithDefaults id (leftPad 15 ' ') itemDisplayPad (basicItemDisplay itm) (itemNumberDisplay cr itm)
|
zipWithDefaults id (leftPad 15 ' ') itemDisplayPad (basicItemDisplay itm) (itemNumberDisplay cr itm)
|
||||||
|
|
||||||
zipWithDefaults :: (a -> c) -> (b -> c) -> (a -> b -> c) -> [a] -> [b] -> [c]
|
zipWithDefaults :: (a -> c) -> (b -> c) -> (a -> b -> c) -> [a] -> [b] -> [c]
|
||||||
@@ -57,13 +59,12 @@ zipWithDefaults f g h = go
|
|||||||
where
|
where
|
||||||
go [] bs = map g bs
|
go [] bs = map g bs
|
||||||
go as [] = map f as
|
go as [] = map f as
|
||||||
go (a:as) (b:bs) = h a b : go as bs
|
go (a : as) (b : bs) = h a b : go as bs
|
||||||
|
|
||||||
|
|
||||||
itemDisplayPad :: [Char] -> String -> [Char]
|
itemDisplayPad :: [Char] -> String -> [Char]
|
||||||
itemDisplayPad ls rs
|
itemDisplayPad ls rs
|
||||||
| rs == "" = ls
|
| rs == "" = ls
|
||||||
| otherwise = midPadL 15 ' ' ls (' ':rs)
|
| otherwise = midPadL 15 ' ' ls (' ' : rs)
|
||||||
|
|
||||||
basicItemDisplay :: Item -> [String]
|
basicItemDisplay :: Item -> [String]
|
||||||
basicItemDisplay itm =
|
basicItemDisplay itm =
|
||||||
@@ -85,6 +86,7 @@ itemBaseName it = case _iyBase $ _itType it of
|
|||||||
Nothing -> show hit
|
Nothing -> show hit
|
||||||
LEFT lit -> show lit
|
LEFT lit -> show lit
|
||||||
EQUIP eit -> showEquipItem eit
|
EQUIP eit -> showEquipItem eit
|
||||||
|
AMMO ait -> show ait
|
||||||
Consumable cit -> show cit
|
Consumable cit -> show cit
|
||||||
|
|
||||||
showEquipItem :: EquipItemType -> String
|
showEquipItem :: EquipItemType -> String
|
||||||
@@ -125,8 +127,8 @@ itemNumberDisplay cr itm = case iu of
|
|||||||
showEquipmentNumber :: Creature -> Item -> [String]
|
showEquipmentNumber :: Creature -> Item -> [String]
|
||||||
showEquipmentNumber cr itm = case _eeUse ee of
|
showEquipmentNumber cr itm = case _eeUse ee of
|
||||||
EFuelSource x _ -> [show x]
|
EFuelSource x _ -> [show x]
|
||||||
EAmmoSource {} -> showAmmoSource cr itm
|
EAmmoSource{} -> showAmmoSource cr itm
|
||||||
EBatterySource {_euseBatteryAmount = x} -> [show x]
|
EBatterySource{_euseBatteryAmount = x} -> [show x]
|
||||||
_ -> [""]
|
_ -> [""]
|
||||||
where
|
where
|
||||||
ee = itm ^?! itUse . equipEffect
|
ee = itm ^?! itUse . equipEffect
|
||||||
@@ -137,11 +139,13 @@ showAmmoSource cr itm = fromMaybe ["FAIL"] $ do
|
|||||||
atype <- eu ^? euseAmmoSourceType
|
atype <- eu ^? euseAmmoSourceType
|
||||||
x <- fmap showIntKMG' $ eu ^? euseAmmoAmount
|
x <- fmap showIntKMG' $ eu ^? euseAmmoAmount
|
||||||
i <- itm ^? itLocation . ipInvID
|
i <- itm ^? itLocation . ipInvID
|
||||||
(do
|
( do
|
||||||
at' <- cr ^? crInv . ix (i + 1) . itUse . heldConsumption . laSourceType
|
at' <- cr ^? crInv . ix (i + 1) . itUse . heldConsumption . laSourceType
|
||||||
as <- cr ^? crInv . ix (i + 1) . itUse . heldConsumption . laSource
|
as <- cr ^? crInv . ix (i + 1) . itUse . heldConsumption . laSource
|
||||||
guard (at' == atype && as == AboveSource)
|
guard (at' == atype && as == AboveSource)
|
||||||
return ["vvvv",x] ) <|> Just [x]
|
return ["vvvv", x]
|
||||||
|
)
|
||||||
|
<|> Just [x]
|
||||||
|
|
||||||
showReloadProgress :: Creature -> Item -> String
|
showReloadProgress :: Creature -> Item -> String
|
||||||
showReloadProgress cr itm = case ic ^? laSource of
|
showReloadProgress cr itm = case ic ^? laSource of
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ itemSPic it =
|
|||||||
HELD ht -> heldItemSPic ht it
|
HELD ht -> heldItemSPic ht it
|
||||||
LEFT lt -> leftItemSPic lt it
|
LEFT lt -> leftItemSPic lt it
|
||||||
EQUIP et -> equipItemSPic et it
|
EQUIP et -> equipItemSPic et it
|
||||||
|
AMMO {} -> defSPic
|
||||||
Consumable{} -> defSPic
|
Consumable{} -> defSPic
|
||||||
|
|
||||||
equipItemSPic :: EquipItemType -> Item -> SPic
|
equipItemSPic :: EquipItemType -> Item -> SPic
|
||||||
|
|||||||
Reference in New Issue
Block a user