Work on weapon attachments
This commit is contained in:
@@ -84,12 +84,11 @@ data CraftType
|
||||
--deriving (Eq, Ord, Show, Enum, Read) --Generic, Flat)
|
||||
|
||||
data ItemBaseType
|
||||
= NoItemType
|
||||
| HELD {_ibtHeld :: HeldItemType}
|
||||
= HELD {_ibtHeld :: HeldItemType}
|
||||
| LEFT {_ibtLeft :: LeftItemType}
|
||||
| EQUIP {_ibtEquip :: EquipItemType}
|
||||
| AMMO {_ibtAmmo :: AmmoItemType}
|
||||
| Consumable {_ibtConsumable :: ConsumableItemType}
|
||||
| CONSUMABLE {_ibtConsumable :: ConsumableItemType}
|
||||
| CRAFT CraftType
|
||||
| ATTACH AttachType
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
@@ -98,6 +97,8 @@ data ItemBaseType
|
||||
|
||||
data AttachType
|
||||
= ZOOMSCOPE
|
||||
| TINMAG
|
||||
| DRUMMAG
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data ConsumableItemType
|
||||
|
||||
@@ -60,6 +60,7 @@ data ItemUse
|
||||
|
||||
data AttachParams
|
||||
= ZoomScopeParams
|
||||
| AmmoAttachParams
|
||||
|
||||
data ItemUse'
|
||||
= ItemHeld HeldUse'
|
||||
|
||||
@@ -38,7 +38,7 @@ applyTerminalCommand s = case s of
|
||||
|
||||
applyTerminalCommandArguments :: String -> [String] -> Universe -> Universe
|
||||
applyTerminalCommandArguments command args u = case command of
|
||||
"ITEM" -> fromMaybe u $ do
|
||||
"IT" -> fromMaybe u $ do
|
||||
(ibt, n) <- parseItem args
|
||||
return $ u & uvWorld %~ flip (foldr ($)) (replicate n (snd . createPutItem (itemFromBase ibt)))
|
||||
"DEX" -> fromMaybe u $ do
|
||||
|
||||
@@ -25,7 +25,7 @@ import Geometry
|
||||
import Picture
|
||||
|
||||
defaultEquipment :: Item
|
||||
defaultEquipment = defaultItem & itUse .~ defaultEquipUse
|
||||
defaultEquipment = defaultHeldItem & itUse .~ defaultEquipUse
|
||||
|
||||
defaultFlIt :: FloorItem
|
||||
defaultFlIt = FlIt{_flItRot = 0, _flIt = defaultConsumable, _flItPos = V2 0 0, _flItID = 0}
|
||||
|
||||
@@ -18,37 +18,28 @@ defaultItemDimension = ItemDimension
|
||||
, _dimAttachPos = V3 10 (-5) 3
|
||||
}
|
||||
|
||||
defaultItem :: Item
|
||||
defaultItem =
|
||||
Item
|
||||
defaultHeldItem :: Item
|
||||
defaultHeldItem = Item
|
||||
{ _itCurseStatus = Uncursed
|
||||
, _itType = defaultItemType
|
||||
, _itType = ItemType (HELD PISTOL) mempty
|
||||
, _itEffect = defaultItEffect
|
||||
, _itID = 0
|
||||
, _itIsHeld = False
|
||||
-- , _itInvColor = yellow
|
||||
, _itInvSize = 1
|
||||
, _itLocation = InVoid
|
||||
, _itDimension = defaultItemDimension
|
||||
, _itUse = CraftUse (ItAmount 1)
|
||||
, _itUse = defaultHeldUse
|
||||
, _itParams = NoParams
|
||||
, _itTweaks = NoTweaks
|
||||
, _itScope = NoScope
|
||||
, _itAttachments = mempty
|
||||
-- , _itValue = ItemValue 0 MundaneItem
|
||||
}
|
||||
|
||||
defaultLeftItem :: Item
|
||||
defaultLeftItem = defaultItem & itUse .~ defaultLeftUse
|
||||
|
||||
defaultHeldItem :: Item
|
||||
defaultHeldItem = defaultItem & itUse .~ defaultHeldUse
|
||||
defaultLeftItem = defaultHeldItem & itUse .~ defaultLeftUse
|
||||
|
||||
defaultCraftItem :: Item
|
||||
defaultCraftItem = defaultItem & itUse .~ CraftUse 1
|
||||
|
||||
defaultItemType :: ItemType
|
||||
defaultItemType = ItemType NoItemType mempty
|
||||
defaultCraftItem = defaultHeldItem & itUse .~ CraftUse 1
|
||||
|
||||
defaultBulletWeapon :: Item
|
||||
defaultBulletWeapon =
|
||||
@@ -70,5 +61,5 @@ defaultWeapon =
|
||||
]
|
||||
|
||||
defaultConsumable :: Item
|
||||
defaultConsumable = defaultItem & itUse .~ ConsumeUse CDoNothing 1
|
||||
defaultConsumable = defaultHeldItem & itUse .~ ConsumeUse CDoNothing 1
|
||||
|
||||
|
||||
@@ -36,5 +36,4 @@ defaultHeldUse =
|
||||
, _heldAim = defaultAimParams
|
||||
, _heldScroll = HeldScrollDoNothing
|
||||
, _heldConsumption = defaultLoadable
|
||||
-- , _useTargeting = Nothing
|
||||
}
|
||||
|
||||
+3
-2
@@ -17,18 +17,19 @@ import Dodge.Item.Weapon
|
||||
|
||||
itemFromBase :: ItemBaseType -> Item
|
||||
itemFromBase ibt = case ibt of
|
||||
NoItemType -> undefined
|
||||
HELD ht -> itemFromHeldType ht
|
||||
LEFT lt -> itemFromLeftType lt
|
||||
EQUIP et -> itemFromEquipType et
|
||||
AMMO at -> itemFromAmmoType at
|
||||
Consumable et -> itemFromConsumableType et
|
||||
CONSUMABLE et -> itemFromConsumableType et
|
||||
CRAFT cr -> makeTypeCraft cr
|
||||
ATTACH at -> itemFromAttachType at
|
||||
|
||||
itemFromAttachType :: AttachType -> Item
|
||||
itemFromAttachType at = case at of
|
||||
ZOOMSCOPE -> zoomScope
|
||||
DRUMMAG -> drumMag
|
||||
TINMAG -> tinMag
|
||||
|
||||
itemFromAmmoType :: AmmoItemType -> Item
|
||||
itemFromAmmoType at = case at of
|
||||
|
||||
@@ -9,7 +9,7 @@ medkit :: Int -> Item
|
||||
medkit i =
|
||||
defaultConsumable
|
||||
& itUse . cUse .~ CHeal i
|
||||
& itType . iyBase .~ Consumable (MEDKIT i)
|
||||
& itType . iyBase .~ CONSUMABLE (MEDKIT i)
|
||||
|
||||
heal25 :: Int -> World -> Maybe World
|
||||
heal25 = heal 25
|
||||
|
||||
@@ -79,7 +79,6 @@ itemString = head . basicItemDisplay
|
||||
|
||||
itemBaseName :: Item -> String
|
||||
itemBaseName it = case _iyBase $ _itType it of
|
||||
NoItemType -> show "NoItemType"
|
||||
CRAFT str -> show str
|
||||
HELD hit -> case hit ^? xNum of
|
||||
Just i -> takeWhile (/= ' ') (show hit) ++ show i
|
||||
@@ -87,7 +86,7 @@ itemBaseName it = case _iyBase $ _itType it of
|
||||
LEFT lit -> show lit
|
||||
EQUIP eit -> showEquipItem eit
|
||||
AMMO ait -> show ait
|
||||
Consumable cit -> show cit
|
||||
CONSUMABLE cit -> show cit
|
||||
ATTACH ait -> show ait
|
||||
|
||||
showEquipItem :: EquipItemType -> String
|
||||
@@ -121,7 +120,10 @@ itemNumberDisplay cr itm = case iu of
|
||||
HeldUse{} -> [showReloadProgress cr itm]
|
||||
LeftUse{} -> [showAutoRechargeProgress (_leftConsumption iu)]
|
||||
EquipUse{} -> showEquipmentNumber cr itm
|
||||
_ -> [show $ iu ^?! useAmount . getItAmount]
|
||||
CraftUse x -> [show $ x ^. getItAmount]
|
||||
ConsumeUse {_useAmount = x} -> [show $ x ^. getItAmount]
|
||||
AttachUse {} -> []
|
||||
|
||||
where
|
||||
iu = itm ^?! itUse
|
||||
|
||||
|
||||
@@ -18,13 +18,12 @@ import ShapePicture
|
||||
itemSPic :: Item -> SPic
|
||||
itemSPic it =
|
||||
M.foldMapWithKey (modulesSPic it) (_iyModules $ _itType it) <> case it ^. itType . iyBase of
|
||||
NoItemType -> over _1 (colorSH magenta) defSPic
|
||||
CRAFT _ -> defSPic
|
||||
HELD ht -> heldItemSPic ht it
|
||||
LEFT lt -> leftItemSPic lt it
|
||||
EQUIP et -> equipItemSPic et it
|
||||
AMMO {} -> defSPic
|
||||
Consumable{} -> defSPic
|
||||
CONSUMABLE{} -> defSPic
|
||||
ATTACH {} -> defSPic
|
||||
|
||||
equipItemSPic :: EquipItemType -> Item -> SPic
|
||||
|
||||
@@ -99,8 +99,8 @@ miniGunUse i =
|
||||
& heldAim . aimZoom .~ defaultItZoom{_izFac = 1.5}
|
||||
& heldConsumption
|
||||
.~ (defaultBulletLoadable & laSource .~ AboveSource)
|
||||
& heldConsumption . laSource . _InternalSource . iaCycle
|
||||
.~ [loadEject 40, loadInsert 40, loadPrime 40]
|
||||
-- & heldConsumption . laSource . _InternalSource . iaCycle
|
||||
-- .~ [loadEject 40, loadInsert 40, loadPrime 40]
|
||||
|
||||
miniGunX :: Int -> Item
|
||||
miniGunX i =
|
||||
|
||||
@@ -23,7 +23,7 @@ itmBaseInfo itm = case itm ^. itType . iyBase of
|
||||
HELD hit -> heldInfo hit
|
||||
LEFT lit -> leftInfo lit
|
||||
EQUIP eit -> equipInfo eit
|
||||
Consumable cit -> consumableInfo cit
|
||||
CONSUMABLE cit -> consumableInfo cit
|
||||
CRAFT fit -> craftInfo fit
|
||||
_ -> "THIS SHOULD NOT BE DISPLAYED"
|
||||
|
||||
@@ -222,7 +222,7 @@ itmUsageInfo itm = case itm ^. itType . iyBase of
|
||||
"This item can be equipped" ++ itmEquipSiteInfo itm
|
||||
++ ". When equipped, it can be activated."
|
||||
EQUIP _ -> "This item can be equipped " ++ itmEquipSiteInfo itm ++ "."
|
||||
Consumable _ -> "This item can be consumed."
|
||||
CONSUMABLE _ -> "This item can be consumed."
|
||||
CRAFT _ -> ""
|
||||
_ -> "THIS SHOULD NOT BE DISPLAYED"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user