Commit before moving to external weapon magazines
This commit is contained in:
@@ -1,16 +1,16 @@
|
|||||||
{-# 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
|
||||||
@@ -18,10 +18,12 @@ data ItemType = ItemType
|
|||||||
, _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
|
||||||
@@ -29,10 +31,8 @@ data CraftType
|
|||||||
| TUBE
|
| TUBE
|
||||||
| HARDWARE
|
| HARDWARE
|
||||||
| SPRING
|
| SPRING
|
||||||
|
|
||||||
| HOSE
|
| HOSE
|
||||||
| TAPE
|
| TAPE
|
||||||
|
|
||||||
| CAN
|
| CAN
|
||||||
| TIN
|
| TIN
|
||||||
| STEELDRUM
|
| STEELDRUM
|
||||||
@@ -78,9 +78,9 @@ 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
|
||||||
@@ -88,15 +88,18 @@ data ItemBaseType
|
|||||||
| 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
|
||||||
@@ -112,15 +115,14 @@ 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
|
||||||
@@ -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 #-}
|
||||||
|
|
||||||
@@ -56,6 +56,7 @@ data LeftConsumption
|
|||||||
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
|
||||||
|
|||||||
+14
-10
@@ -10,9 +10,9 @@ 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
|
||||||
@@ -20,11 +20,14 @@ 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]
|
||||||
@@ -59,7 +61,6 @@ zipWithDefaults f g h = go
|
|||||||
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
|
||||||
@@ -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
|
||||||
@@ -141,7 +143,9 @@ showAmmoSource cr itm = fromMaybe ["FAIL"] $ 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