From 9ee925f13a02e54166bf9a4110dd7c7566dafc27 Mon Sep 17 00:00:00 2001 From: justin Date: Thu, 21 Sep 2023 09:17:49 +0100 Subject: [PATCH] Commit on returning to work --- src/Dodge/Combine/Combinations.hs | 12 ------------ src/Dodge/Combine/Module.hs | 3 +-- src/Dodge/Creature/Impulse/UseItem.hs | 1 + src/Dodge/Data/Item.hs | 10 ++++++++++ src/Dodge/Data/Item/Combine.hs | 9 +++++++-- src/Dodge/Data/Item/Scope.hs | 2 -- src/Dodge/Data/Item/Use.hs | 6 ++++++ src/Dodge/Data/Item/Use/Consumption.hs | 5 +++++ src/Dodge/Default/Item.hs | 1 + src/Dodge/Item.hs | 10 ++++++++-- src/Dodge/Item/Display.hs | 1 + src/Dodge/Item/Draw/SPic.hs | 1 + src/Dodge/Item/Held/Cane.hs | 9 ++------- src/Dodge/Item/Held/Rod.hs | 6 +++++- src/Dodge/Item/Held/Utility.hs | 6 +++++- src/Dodge/Module.hs | 3 +-- src/Dodge/Update/Camera.hs | 3 ++- 17 files changed, 56 insertions(+), 32 deletions(-) diff --git a/src/Dodge/Combine/Combinations.hs b/src/Dodge/Combine/Combinations.hs index 1493eaf94..a6ac8ea61 100644 --- a/src/Dodge/Combine/Combinations.hs +++ b/src/Dodge/Combine/Combinations.hs @@ -122,18 +122,6 @@ itemCombinations = moduleCombinations :: [(ModuleSlot, [Item], [([ItemBaseType], ItemModuleType)])] moduleCombinations = [ - ( ModRifleMag - , - [ repeater - , autoRifle - , burstRifle - ] - , - [ amod [cr STEELDRUM, cr HARDWARE] DRUMMAG - , amod [cr MOTOR, cr HARDWARE] BELTMAG - ] - ) - , ( ModHeldAttach , [ rifle diff --git a/src/Dodge/Combine/Module.hs b/src/Dodge/Combine/Module.hs index 713ea2005..7238078be 100644 --- a/src/Dodge/Combine/Module.hs +++ b/src/Dodge/Combine/Module.hs @@ -10,8 +10,7 @@ import LensHelp moduleModification :: ItemModuleType -> Item -> Item moduleModification imt = case imt of EMPTYMODULE -> id - DRUMMAG -> itUse . heldConsumption . laSource . _InternalSource . iaMax .~ 45 - BELTMAG -> itUse . heldConsumption . laSource . _InternalSource . iaMax .~ 150 +-- BELTMAG -> itUse . heldConsumption . laSource . _InternalSource . iaMax .~ 150 MAGNETMAG -> itUse . heldDelay . rateMax .~ 4 BULPAY BulFlak -> (itUse . heldConsumption . laAmmoType . amBullet . buSpawn .~ BulFlak) . (itUse . heldConsumption . laAmmoType . amBullet . buTimer .~ 3) diff --git a/src/Dodge/Creature/Impulse/UseItem.hs b/src/Dodge/Creature/Impulse/UseItem.hs index 73c749e45..ff0b4c351 100644 --- a/src/Dodge/Creature/Impulse/UseItem.hs +++ b/src/Dodge/Creature/Impulse/UseItem.hs @@ -42,6 +42,7 @@ itemEffect cr it w = case it ^. itUse of -- ConsumeUse will cause problems if the item is not selected (ConsumeUse eff _) -> useC eff it cr $ rmInvItem (_crID cr) itRef w CraftUse{} -> w + AttachUse{} -> w where itRef = cr ^?! crManipulation . manObject . inInventory . ispItem -- unsafe!! TODO change hammerTest f = case _crHammerPosition cr of diff --git a/src/Dodge/Data/Item.hs b/src/Dodge/Data/Item.hs index ae308ee55..047c2b00d 100644 --- a/src/Dodge/Data/Item.hs +++ b/src/Dodge/Data/Item.hs @@ -29,6 +29,7 @@ import Dodge.Data.Item.Params import Dodge.Data.Item.Tweak import Dodge.Data.Item.Use import Dodge.Data.Item.Location +import Data.Set (Set) data Item = Item { _itUse :: ItemUse @@ -44,11 +45,20 @@ data Item = Item , _itTweaks :: ItemTweaks , _itScope :: Scope , _itParams :: ItemParams + , _itAttachments :: Set ItemAttachment } --deriving (Eq, Show, Read) --Generic, Flat) +data ItemAttachment = ScopeAttachment + | BulletClipAttachment + | BulletBeltAttachment + | StandAttachment + | PowerSourceAttachment + deriving (Eq,Ord) + _itUseAimStance :: Item -> AimStance _itUseAimStance = _aimStance . _heldAim . _itUse makeLenses ''Item +deriveJSON defaultOptions ''ItemAttachment deriveJSON defaultOptions ''Item diff --git a/src/Dodge/Data/Item/Combine.hs b/src/Dodge/Data/Item/Combine.hs index d8ef8d348..a0a539fe2 100644 --- a/src/Dodge/Data/Item/Combine.hs +++ b/src/Dodge/Data/Item/Combine.hs @@ -91,10 +91,15 @@ data ItemBaseType | AMMO {_ibtAmmo :: AmmoItemType} | Consumable {_ibtConsumable :: ConsumableItemType} | CRAFT CraftType + | ATTACH AttachType deriving (Eq, Ord, Show, Read) --deriving (Eq, Ord, Show, Read) --Generic, Flat) +data AttachType + = ZOOMSCOPE + deriving (Eq, Ord, Show, Read) + data ConsumableItemType = MEDKIT Int | EXPLOSIVES @@ -188,12 +193,11 @@ data HeldItemType data AmmoItemType = TINMAGAZINE | DRUMMAGAZINE + | BULLETBELT deriving (Eq, Ord, Show, Read) --Generic, Flat) data ItemModuleType = EMPTYMODULE - | DRUMMAG - | BELTMAG | MAGNETMAG | BULPAY BulletSpawn | BULBODY BulletEffect @@ -235,6 +239,7 @@ makeLenses ''ItemModuleType deriveJSON defaultOptions ''Stack deriveJSON defaultOptions ''CraftType deriveJSON defaultOptions ''ConsumableItemType +deriveJSON defaultOptions ''AttachType deriveJSON defaultOptions ''Detector deriveJSON defaultOptions ''EquipItemType deriveJSON defaultOptions ''LeftItemType diff --git a/src/Dodge/Data/Item/Scope.hs b/src/Dodge/Data/Item/Scope.hs index 9bcc2756f..f8e2a63a4 100644 --- a/src/Dodge/Data/Item/Scope.hs +++ b/src/Dodge/Data/Item/Scope.hs @@ -25,8 +25,6 @@ data Scope -- , _scopeZoomChange :: Int , _scopeZoom :: Float , _scopeDefaultZoom :: Float - , -- | if the camera offset is also the center of vision - _scopeIsCamera :: Bool } deriving (Eq, Show, Read) --Generic, Flat) diff --git a/src/Dodge/Data/Item/Use.hs b/src/Dodge/Data/Item/Use.hs index ae0f04dee..5d4a302d2 100644 --- a/src/Dodge/Data/Item/Use.hs +++ b/src/Dodge/Data/Item/Use.hs @@ -54,8 +54,13 @@ data ItemUse } | CraftUse {_useAmount :: ItAmount} + | AttachUse + {_attachParams :: AttachParams} --deriving (Eq, Show, Read) --Generic, Flat) +data AttachParams + = ZoomScopeParams + data ItemUse' = ItemHeld HeldUse' | ItemEquip EquipUse' @@ -106,6 +111,7 @@ makeLenses ''ItZoom makeLenses ''Muzzle deriveJSON defaultOptions ''Muzzle deriveJSON defaultOptions ''AimStance +deriveJSON defaultOptions ''AttachParams deriveJSON defaultOptions ''ItZoom deriveJSON defaultOptions ''AimParams deriveJSON defaultOptions ''ItemUse diff --git a/src/Dodge/Data/Item/Use/Consumption.hs b/src/Dodge/Data/Item/Use/Consumption.hs index 4c740817f..95e13f008 100644 --- a/src/Dodge/Data/Item/Use/Consumption.hs +++ b/src/Dodge/Data/Item/Use/Consumption.hs @@ -31,6 +31,11 @@ data AmmoSource | AboveSource deriving (Eq, Show, Read) --Generic, Flat) +data ExternalSourceType = BulletClip + | BulletBelt + | ElectricPower + deriving (Eq, Show, Read) --Generic, Flat) + data InternalAmmo = InternalAmmo { _iaMax :: Int , _iaLoaded :: Int diff --git a/src/Dodge/Default/Item.hs b/src/Dodge/Default/Item.hs index 2c0f06f07..f2f4442ed 100644 --- a/src/Dodge/Default/Item.hs +++ b/src/Dodge/Default/Item.hs @@ -35,6 +35,7 @@ defaultItem = , _itParams = NoParams , _itTweaks = NoTweaks , _itScope = NoScope + , _itAttachments = mempty -- , _itValue = ItemValue 0 MundaneItem } diff --git a/src/Dodge/Item.hs b/src/Dodge/Item.hs index 4091fafb9..4f60fa016 100644 --- a/src/Dodge/Item.hs +++ b/src/Dodge/Item.hs @@ -24,11 +24,17 @@ itemFromBase ibt = case ibt of AMMO at -> itemFromAmmoType at Consumable et -> itemFromConsumableType et CRAFT cr -> makeTypeCraft cr + ATTACH at -> itemFromAttachType at + +itemFromAttachType :: AttachType -> Item +itemFromAttachType at = case at of + ZOOMSCOPE -> zoomScope itemFromAmmoType :: AmmoItemType -> Item itemFromAmmoType at = case at of - TINMAGAZINE -> tinMagazine - DRUMMAGAZINE -> drumMagazine + TINMAGAZINE -> tinMag + DRUMMAGAZINE -> drumMag + BULLETBELT -> beltMag itemFromConsumableType :: ConsumableItemType -> Item itemFromConsumableType ct = case ct of diff --git a/src/Dodge/Item/Display.hs b/src/Dodge/Item/Display.hs index 5d91cdec8..581870764 100644 --- a/src/Dodge/Item/Display.hs +++ b/src/Dodge/Item/Display.hs @@ -88,6 +88,7 @@ itemBaseName it = case _iyBase $ _itType it of EQUIP eit -> showEquipItem eit AMMO ait -> show ait Consumable cit -> show cit + ATTACH ait -> show ait showEquipItem :: EquipItemType -> String showEquipItem eit = case eit of diff --git a/src/Dodge/Item/Draw/SPic.hs b/src/Dodge/Item/Draw/SPic.hs index f6736723b..8dfa031ab 100644 --- a/src/Dodge/Item/Draw/SPic.hs +++ b/src/Dodge/Item/Draw/SPic.hs @@ -25,6 +25,7 @@ itemSPic it = EQUIP et -> equipItemSPic et it AMMO {} -> defSPic Consumable{} -> defSPic + ATTACH {} -> defSPic equipItemSPic :: EquipItemType -> Item -> SPic equipItemSPic et _ = case et of diff --git a/src/Dodge/Item/Held/Cane.hs b/src/Dodge/Item/Held/Cane.hs index b1777975a..27d1c4543 100644 --- a/src/Dodge/Item/Held/Cane.hs +++ b/src/Dodge/Item/Held/Cane.hs @@ -96,14 +96,10 @@ miniGunUse i = & heldAim . aimRange .~ 1 & heldAim . aimStance .~ TwoHandUnder & heldAim . aimZoom .~ defaultItZoom{_izFac = 1.5} - -- & heldAim . aimHandlePos .~ 5 & heldConsumption .~ (defaultBulletLoadable & laSource .~ AboveSource) - --(defaultBulletLoadable - -- & laSource . iaMax .~ 1500 - -- & laSource . iaLoaded .~ 1500 - --) - & 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 = @@ -111,7 +107,6 @@ miniGunX i = & itUse .~ miniGunUse i & itUse . heldAim . aimTurnSpeed .~ 0.5 & itUse . heldAim . aimMuzzles .~ replicate i (Muzzle (V2 30 0) 0 0.05) --- & itUse . heldAim . aimMuzzles .~ replicate i (Muzzle (V2 50 0) 0 0.05) & itParams . recoil .~ 10 & itParams . torqueAfter .~ 0.01 & itParams . randomOffset .~ 10 diff --git a/src/Dodge/Item/Held/Rod.hs b/src/Dodge/Item/Held/Rod.hs index 76520c9d3..14d0d73d9 100644 --- a/src/Dodge/Item/Held/Rod.hs +++ b/src/Dodge/Item/Held/Rod.hs @@ -69,7 +69,11 @@ sniperRifle = & itUse . heldAim . aimMuzzles . ix 0 . mzInaccuracy .~ 0 & itUse . heldAim . aimZoom .~ defaultItZoom{_izMax = 0.5, _izMin = 0.5,_izFac = 1} & itUse . heldScroll .~ HeldScrollZoom -- zoomLongGun - & itScope .~ ZoomScope (V2 0 0) 1 0.5 False + & itScope .~ ZoomScope + { _scopePos = (V2 0 0) + , _scopeZoom = 1 + , _scopeDefaultZoom = 0.5 + } & itType . iyModules . at ModTarget ?~ TARGET TargetLaser -- & itUse . useTargeting ?~ TargetLaser diff --git a/src/Dodge/Item/Held/Utility.hs b/src/Dodge/Item/Held/Utility.hs index 3b158d485..09e07514d 100644 --- a/src/Dodge/Item/Held/Utility.hs +++ b/src/Dodge/Item/Held/Utility.hs @@ -32,7 +32,11 @@ latchkey _ = binoculars :: Item binoculars = defaultHeldItem - & itScope .~ ZoomScope (V2 0 0) 1 0.5 False + & itScope .~ ZoomScope + { _scopePos = (V2 0 0) + , _scopeZoom = 1 + , _scopeDefaultZoom = 0.5 + } & itType . iyBase .~ HELD BINOCULARS -- & itUse . heldAim . aimHandlePos .~ 5 -- & itUse . heldAim . aimMuzPos .~ 10 diff --git a/src/Dodge/Module.hs b/src/Dodge/Module.hs index 4a2c57704..0c7a6a53e 100644 --- a/src/Dodge/Module.hs +++ b/src/Dodge/Module.hs @@ -22,8 +22,7 @@ moduleStrings = M.elems . M.mapMaybe moduleName . _iyModules . _itType moduleName :: ItemModuleType -> Maybe String moduleName imt = case imt of EMPTYMODULE -> Nothing - DRUMMAG -> Just "+DRUM MAG" - BELTMAG -> Just "+BELT FEED" +-- BELTMAG -> Just "+BELT FEED" MAGNETMAG -> Just "+MAGNET FEED" BULPAY thepayload -> Just $ "+" ++ displayBulletPayload thepayload BULBODY thebody -> Just $ "+" ++ displayBulletBody thebody diff --git a/src/Dodge/Update/Camera.hs b/src/Dodge/Update/Camera.hs index e1df50b7c..b013b5533 100644 --- a/src/Dodge/Update/Camera.hs +++ b/src/Dodge/Update/Camera.hs @@ -141,7 +141,8 @@ updateScopeZoom' i w | otherwise = w & wppointer %~ resetscope where wppointer = cWorld . lWorld . creatures . ix 0 . crInv . ix i . itScope - resetscope (ZoomScope _ _ defz bl) = ZoomScope (V2 0 0) defz defz bl + --resetscope (ZoomScope _ _ defz bl) = ZoomScope (V2 0 0) defz defz bl + resetscope (ZoomScope _ _ defz) = ZoomScope (V2 0 0) defz defz resetscope otherAtt = otherAtt mp = rotateV (w ^. wCam . camRot) $ _mousePos (_input w)