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