diff --git a/src/Dodge/Creature/Picture.hs b/src/Dodge/Creature/Picture.hs index 53a71dc84..b7f9655d7 100644 --- a/src/Dodge/Creature/Picture.hs +++ b/src/Dodge/Creature/Picture.hs @@ -135,4 +135,4 @@ shoulderSH = translateSHz 20 drawEquipment :: Creature -> SPic {-# INLINE drawEquipment #-} -drawEquipment cr = foldMap (itemEquipPict cr) (invLDT' $ _crInv cr) +drawEquipment cr = foldMap (itemEquipPict cr) (invLDT $ _crInv cr) diff --git a/src/Dodge/Creature/State.hs b/src/Dodge/Creature/State.hs index 94aa846d1..72a8649a3 100644 --- a/src/Dodge/Creature/State.hs +++ b/src/Dodge/Creature/State.hs @@ -286,7 +286,8 @@ updateAttachedItems itmtree cr = chainLinkOrientation chainLinkOrientation (updateItemWithOrientation cr) - (heldItemRelativeOrient (itmtree ^. ldtValue . _1) cr (0, Q.qID)) + --(heldItemRelativeOrient (itmtree ^. ldtValue . _1) cr (0, Q.qID)) + (handHandleOrient (LocLDT TopLDT itmtree) cr) (LocLDT TopLDT itmtree) -- need to check rotation diff --git a/src/Dodge/Creature/Test.hs b/src/Dodge/Creature/Test.hs index 4e98e7121..b5c5adb73 100644 --- a/src/Dodge/Creature/Test.hs +++ b/src/Dodge/Creature/Test.hs @@ -96,7 +96,7 @@ crInAimStance as cr = crIsAiming cr && mitstance == Just as mitstance = do i <- cr ^? crManipulation . manObject . imRootSelectedItem --itm <- invRootTrees' (cr ^. crInv) ^? ix i - itm <- invRootTrees (cr ^. crInv) ^? ix i + itm <- fmap (fmap (\(a,b,_) -> (a,b))) $ invRootTrees (cr ^. crInv) ^? ix i return $ aimStance itm --cr ^? crInv . ix i . itUse . heldAim . aimStance diff --git a/src/Dodge/Item/AimStance.hs b/src/Dodge/Item/AimStance.hs index f9e672c2c..b0ab53a9e 100644 --- a/src/Dodge/Item/AimStance.hs +++ b/src/Dodge/Item/AimStance.hs @@ -10,7 +10,7 @@ import Dodge.Data.AimStance --aStance :: LocationLDT ItemLink CItem -> AimStance --aStance loc = case loc ^. locLDT . ldtValue . _1 . itType of -- -aimStance :: LDTree ItemLink OItem -> AimStance +aimStance :: LDTree ItemLink CItem -> AimStance aimStance ldt = itemBaseStance $ ldt ^. ldtValue . _1 diff --git a/src/Dodge/Item/Draw.hs b/src/Dodge/Item/Draw.hs index b926f2b70..5bf171706 100644 --- a/src/Dodge/Item/Draw.hs +++ b/src/Dodge/Item/Draw.hs @@ -15,7 +15,7 @@ import Dodge.Item.Draw.SPic import Dodge.Item.HeldOffset import ShapePicture -itemEquipPict :: Creature -> LDTree ItemLink OItem -> SPic +itemEquipPict :: Creature -> LDTree ItemLink CItem -> SPic itemEquipPict cr itmtree | Just i <- itm ^? itLocation . ilInvID , Just esite <- cr ^? crInv . ix i . itLocation . ilEquipSite . _Just diff --git a/src/Dodge/Item/Draw/SPic.hs b/src/Dodge/Item/Draw/SPic.hs index f3b1dc760..0988197f5 100644 --- a/src/Dodge/Item/Draw/SPic.hs +++ b/src/Dodge/Item/Draw/SPic.hs @@ -21,10 +21,10 @@ import Picture import Shape import ShapePicture -itemTreeSPic :: LDTree ItemLink OItem -> SPic -itemTreeSPic (LDT (itm,_,_) l r) = itemSPic itm <> foldMap (itemRotTreeSPic itm) (l <> r) +itemTreeSPic :: LDTree ItemLink CItem -> SPic +itemTreeSPic (LDT (itm,_) l r) = itemSPic itm <> foldMap (itemRotTreeSPic itm) (l <> r) -itemRotTreeSPic :: Item -> (ItemLink, LDTree ItemLink OItem) -> SPic +itemRotTreeSPic :: Item -> (ItemLink, LDTree ItemLink CItem) -> SPic itemRotTreeSPic par (il, t) = translateSP p . overPosSP (Q.rotate q) $ itemTreeSPic t where (p, q) = orientAttachment par il itm diff --git a/src/Dodge/Item/HeldOffset.hs b/src/Dodge/Item/HeldOffset.hs index 53d85c4a3..262ad4e8c 100644 --- a/src/Dodge/Item/HeldOffset.hs +++ b/src/Dodge/Item/HeldOffset.hs @@ -7,8 +7,9 @@ module Dodge.Item.HeldOffset ( heldItemRelativeOrient, heldItemOrient2D, heldItemOrient2D', - itemRelativeOrient, +-- itemRelativeOrient, locOrientation, + handHandleOrient, ) where import Dodge.Creature.Radius @@ -71,7 +72,7 @@ heldItemRelativeOrient itm cr (p, q) f i = 0.1 * fromIntegral (sLen - i) / fromIntegral sLen sLen = _strideLength $ _crStance cr -handleOrient :: LocationLDT ItemLink OItem -> Point3Q +handleOrient :: LocationLDT ItemLink CItem -> Point3Q handleOrient _ = (V3 (-3) 0 0, Q.qID) -- note this is relative to the creature @@ -95,11 +96,12 @@ handOrient cr = case cr ^. crStance . posture of sLen = _strideLength $ _crStance cr locOrientation :: LocationLDT ItemLink OItem -> Creature -> Point3Q -locOrientation loc cr = - heldItemRelativeOrient - (locToTop loc ^. locLDT . ldtValue . _1) - cr +locOrientation loc cr = handHandleOrient (fmap (\(x,y,_) -> (x,y)) loc) cr `Q.comp` (loc ^. locLDT . ldtValue . _3) +-- heldItemRelativeOrient +-- (locToTop loc ^. locLDT . ldtValue . _1) +-- cr +-- (loc ^. locLDT . ldtValue . _3) aimingWeaponZeroPos :: Creature -> Item -> Point2 aimingWeaponZeroPos cr it = aimStanceHandlePos cr it - handlePos it @@ -112,14 +114,15 @@ aimStanceHandlePos _ it = case itemBaseStance it of OneHand -> V2 10 (-2) TwoHandFlat -> V2 10 0 -heldItemOffset :: LocationLDT ItemLink OItem -> Creature -> Point3 -> Point3 +heldItemOffset :: LocationLDT ItemLink CItem -> Creature -> Point3 -> Point3 heldItemOffset loc cr p = x + Q.rotate q p where - (x,q) = handOrient cr (aimStance (loc ^. locLDT)) - `Q.comp` handleOrient loc + (x, q) = handHandleOrient loc cr -heldItemOffset' :: Item -> Creature -> Point3 -> Point3 -heldItemOffset' itm cr p = fst (heldItemRelativeOrient itm cr (p, Q.qID)) +handHandleOrient :: LocationLDT ItemLink CItem -> Creature -> Point3Q +handHandleOrient loc cr = + handOrient cr (aimStance (loc ^. locLDT)) + `Q.comp` handleOrient loc shoulderHeight :: Float shoulderHeight = 18 diff --git a/tags b/tags index fcc1acaef..96768587d 100644 --- a/tags +++ b/tags @@ -3354,10 +3354,10 @@ advanceSmoothScroll src/Dodge/SmoothScroll.hs 33;" f advanceStepCounter src/Dodge/Creature/Impulse/Movement.hs 44;" f aimDelaySweep src/Dodge/Render/Picture.hs 264;" f aimStance src/Dodge/Item/AimStance.hs 13;" f -aimStanceHandlePos src/Dodge/Item/HeldOffset.hs 108;" f +aimStanceHandlePos src/Dodge/Item/HeldOffset.hs 110;" f aimStanceInfo src/Dodge/Item/Info.hs 243;" f aimTurn src/Dodge/Creature/YourControl.hs 165;" f -aimingWeaponZeroPos src/Dodge/Item/HeldOffset.hs 104;" f +aimingWeaponZeroPos src/Dodge/Item/HeldOffset.hs 106;" f airlock src/Dodge/Room/Airlock.hs 19;" f airlock0 src/Dodge/Room/Airlock.hs 25;" f airlock90 src/Dodge/Room/Airlock.hs 122;" f @@ -3587,7 +3587,7 @@ centerVaultRoom src/Dodge/Room/Procedural.hs 289;" f centroid src/Geometry/Polygon.hs 130;" f centroidNum src/Geometry/Polygon.hs 133;" f chainCreatureUpdates src/Dodge/Creature/ChainUpdates.hs 6;" f -chainLinkOrientation src/Dodge/Creature/State.hs 293;" f +chainLinkOrientation src/Dodge/Creature/State.hs 294;" f chainPairs src/Geometry.hs 359;" f changeSwapOther src/Dodge/Inventory.hs 144;" f changeSwapSel src/Dodge/Inventory.hs 137;" f @@ -3749,7 +3749,7 @@ crIXsNearPoint src/Dodge/Zoning/Creature.hs 14;" f crInAimStance src/Dodge/Creature/Test.hs 93;" f crIntelligence src/Dodge/Creature/Statistics.hs 34;" f crIsAiming src/Dodge/Creature/Test.hs 59;" f -crIsArmouredFrom src/Dodge/Creature/Test.hs 114;" f +crIsArmouredFrom src/Dodge/Creature/Test.hs 115;" f crMass src/Dodge/Creature/Mass.hs 5;" f crMaterial src/Dodge/Creature/Material.hs 8;" f crMaxHP src/Dodge/Creature/MaxHP.hs 6;" f @@ -3757,7 +3757,7 @@ crMvAbsolute src/Dodge/Creature/Impulse/Movement.hs 27;" f crMvBy src/Dodge/Creature/Impulse/Movement.hs 20;" f crMvForward src/Dodge/Creature/Impulse/Movement.hs 41;" f crMvType src/Dodge/Creature/MoveType.hs 6;" f -crNearPoint src/Dodge/Creature/Test.hs 140;" f +crNearPoint src/Dodge/Creature/Test.hs 141;" f crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 23;" f crOnWall src/Dodge/WallCreatureCollisions.hs 86;" f crRad src/Dodge/Creature/Radius.hs 7;" f @@ -4111,7 +4111,7 @@ doublePair src/Geometry.hs 161;" f doublePairSet src/Geometry.hs 165;" f doubleTreeToIndentList src/Dodge/DoubleTree.hs 95;" f doubleV2 src/Geometry.hs 168;" f -drawARHUD src/Dodge/Creature/State.hs 321;" f +drawARHUD src/Dodge/Creature/State.hs 322;" f drawAimSweep src/Dodge/Render/Picture.hs 271;" f drawAllShadows src/Dodge/Shadows.hs 5;" f drawBaseMachine src/Dodge/Machine/Draw.hs 57;" f @@ -4291,11 +4291,11 @@ eqConstr src/SameConstr.hs 17;" f eqPosText src/Dodge/Equipment/Text.hs 5;" f eqSiteToPositions src/Dodge/Inventory/RBList.hs 77;" f equipAllocString src/Dodge/Render/HUD.hs 308;" f -equipAttachPos src/Dodge/Item/Draw.hs 30;" f +equipAttachPos src/Dodge/Item/Draw.hs 31;" f equipBackgroundEffect src/Dodge/Euse.hs 15;" f equipInfo src/Dodge/Item/Info.hs 140;" f equipItemSPic src/Dodge/Item/Draw/SPic.hs 147;" f -equipPosition src/Dodge/Item/Draw.hs 38;" f +equipPosition src/Dodge/Item/Draw.hs 39;" f equipSiteInfo src/Dodge/Item/Info.hs 253;" f equipType src/Dodge/Data/EquipType.hs 10;" f equipmentStrValue src/Dodge/Creature/Statistics.hs 51;" f @@ -4528,22 +4528,23 @@ halfHeight src/Dodge/Base/Window.hs 48;" f halfWidth src/Dodge/Base/Window.hs 48;" f haltSound src/Dodge/SoundLogic.hs 38;" f hammerCheck src/Dodge/HeldUse.hs 63;" f -handOrient src/Dodge/Item/HeldOffset.hs 78;" f +handHandleOrient src/Dodge/Item/HeldOffset.hs 122;" f +handOrient src/Dodge/Item/HeldOffset.hs 79;" f handleEvent src/Dodge/Event.hs 27;" f handleHotkeys src/Dodge/Creature/YourControl.hs 45;" f handleKeyboardEvent src/Dodge/Event/Input.hs 22;" f handleMouseButtonEvent src/Dodge/Event/Input.hs 63;" f handleMouseMotionEvent src/Dodge/Event/Input.hs 47;" f handleMouseWheelEvent src/Dodge/Event/Input.hs 58;" f -handleOrient src/Dodge/Item/HeldOffset.hs 74;" f -handlePos src/Dodge/Item/HeldOffset.hs 136;" f +handleOrient src/Dodge/Item/HeldOffset.hs 75;" f +handlePos src/Dodge/Item/HeldOffset.hs 142;" f handleResizeEvent src/Dodge/Event.hs 53;" f handleTextInput src/Dodge/Event/Input.hs 18;" f handleWindowMoveEvent src/Dodge/Event.hs 44;" f hardQuit src/Dodge/Concurrent.hs 32;" f hasButtonLOS src/Dodge/Base/Collide.hs 211;" f hasCaneGunDim src/Dodge/Item/InvSize.hs 48;" f -hasFrontArmour src/Dodge/Creature/Test.hs 117;" f +hasFrontArmour src/Dodge/Creature/Test.hs 118;" f hasLOS src/Dodge/Base/Collide.hs 204;" f hasLOSIndirect src/Dodge/Base/Collide.hs 219;" f hat src/Dodge/Item/Equipment.hs 76;" f @@ -4561,18 +4562,17 @@ heldAimStance src/Dodge/Item/AimStance.hs 22;" f heldAimZoom src/Dodge/Update/Camera.hs 140;" f heldEffect src/Dodge/HeldUse.hs 60;" f heldEffectMuzzles src/Dodge/HeldUse.hs 127;" f -heldHandlePos src/Dodge/Item/HeldOffset.hs 141;" f +heldHandlePos src/Dodge/Item/HeldOffset.hs 147;" f heldInfo src/Dodge/Item/Info.hs 90;" f heldItemAmmoSlots src/Dodge/Item/AmmoSlots.hs 18;" f heldItemBulkiness src/Dodge/Creature/YourControl.hs 177;" f heldItemInvLock src/Dodge/HeldUse.hs 474;" f heldItemMuzVel src/Dodge/HeldUse.hs 1055;" f heldItemMuzzles src/Dodge/HeldUse.hs 156;" f -heldItemOffset src/Dodge/Item/HeldOffset.hs 115;" f -heldItemOffset' src/Dodge/Item/HeldOffset.hs 118;" f -heldItemOrient2D src/Dodge/Item/HeldOffset.hs 37;" f -heldItemOrient2D' src/Dodge/Item/HeldOffset.hs 42;" f -heldItemRelativeOrient src/Dodge/Item/HeldOffset.hs 47;" f +heldItemOffset src/Dodge/Item/HeldOffset.hs 117;" f +heldItemOrient2D src/Dodge/Item/HeldOffset.hs 38;" f +heldItemOrient2D' src/Dodge/Item/HeldOffset.hs 43;" f +heldItemRelativeOrient src/Dodge/Item/HeldOffset.hs 48;" f heldItemRifling src/Dodge/HeldUse.hs 1099;" f heldItemSPic src/Dodge/Item/Draw/SPic.hs 223;" f heldItemWeight src/Dodge/Creature/Statistics.hs 71;" f @@ -4694,7 +4694,7 @@ invertInventoryToMap src/Dodge/Combine.hs 57;" f invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 21;" f invisibleWall src/Dodge/Placement/Instance/Wall.hs 16;" f isAmmoIntLink src/Dodge/HeldUse.hs 749;" f -isAnimate src/Dodge/Creature/Test.hs 143;" f +isAnimate src/Dodge/Creature/Test.hs 144;" f isCognizant src/Dodge/Creature/Perception.hs 106;" f isConnected src/Dodge/Inventory/Swap.hs 74;" f isElectrical src/Dodge/Machine/Update.hs 80;" f @@ -4745,7 +4745,7 @@ itemInvColor src/Dodge/Item/InventoryColor.hs 9;" f itemInvLock src/Dodge/HeldUse.hs 469;" f itemMuzzles src/Dodge/HeldUse.hs 141;" f itemRandomOffset src/Dodge/HeldUse.hs 992;" f -itemRelativeOrient src/Dodge/Item/HeldOffset.hs 185;" f +itemRelativeOrient src/Dodge/Item/HeldOffset.hs 191;" f itemRooms src/Dodge/LockAndKey.hs 39;" f itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 27;" f itemSPic src/Dodge/Item/Draw/SPic.hs 33;" f @@ -4867,7 +4867,7 @@ locGoHelp src/Dodge/DoubleTree.hs 273;" f locGoLeft src/Dodge/DoubleTree.hs 262;" f locGoRight src/Dodge/DoubleTree.hs 267;" f locLeftmost src/Dodge/DoubleTree.hs 255;" f -locOrientation src/Dodge/Item/HeldOffset.hs 97;" f +locOrientation src/Dodge/Item/HeldOffset.hs 98;" f locRightmost src/Dodge/DoubleTree.hs 258;" f locToTop src/Dodge/DoubleTree.hs 250;" f locUp src/Dodge/DoubleTree.hs 237;" f @@ -5153,7 +5153,7 @@ oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 683;" f onEquipWristShield src/Dodge/Equipment.hs 37;" f onRemoveWristShield src/Dodge/Equipment.hs 24;" f onXY src/Geometry/Vector3D.hs 130;" f -oneH src/Dodge/Creature/Test.hs 102;" f +oneH src/Dodge/Creature/Test.hs 103;" f openConsole src/Dodge/Update.hs 131;" f optionMenu src/Dodge/Menu.hs 108;" f optionScreenDefaultEffect src/Dodge/Update/Input/ScreenLayer.hs 52;" f @@ -5726,7 +5726,7 @@ setOldPos src/Dodge/Update.hs 475;" f setOutLinks src/Dodge/RoomLink.hs 48;" f setOutLinksByType src/Dodge/RoomLink.hs 57;" f setOutLinksPD src/Dodge/RoomLink.hs 77;" f -setRBCreatureTargeting src/Dodge/Creature/State.hs 466;" f +setRBCreatureTargeting src/Dodge/Creature/State.hs 467;" f setSelWhileDragging src/Dodge/Update/Input/InGame.hs 334;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 87;" f setShaderSource src/Shader/Compile.hs 290;" f @@ -5793,8 +5793,8 @@ shiftRoomBy src/Dodge/Room/Link.hs 37;" f shiftRoomShiftBy src/Dodge/Room/Link.hs 81;" f shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f shiftedGrid src/Grid.hs 25;" f -shineTargetLaser src/Dodge/Creature/State.hs 329;" f -shineTorch src/Dodge/Creature/State.hs 409;" f +shineTargetLaser src/Dodge/Creature/State.hs 330;" f +shineTorch src/Dodge/Creature/State.hs 410;" f shootBullet src/Dodge/HeldUse.hs 979;" f shootBullets src/Dodge/HeldUse.hs 969;" f shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f @@ -5811,7 +5811,7 @@ shootingRange src/Dodge/Room/Room.hs 332;" f shortPoint2 src/Dodge/ShortShow.hs 4;" f shortShow src/ShortShow.hs 9;" f shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 693;" f -shoulderHeight src/Dodge/Item/HeldOffset.hs 121;" f +shoulderHeight src/Dodge/Item/HeldOffset.hs 127;" f shoulderSH src/Dodge/Creature/Picture.hs 133;" f shoulderSP src/Dodge/Creature/HandPos.hs 170;" f showAttachItem src/Dodge/Item/Display.hs 91;" f @@ -5961,7 +5961,7 @@ strFromEquipment src/Dodge/Creature/Statistics.hs 48;" f strFromHeldItem src/Dodge/Creature/Statistics.hs 60;" f strengthFactor src/Dodge/Creature/Impulse/Movement.hs 35;" f strictify src/MaybeHelp.hs 37;" f -strideRot src/Dodge/Item/HeldOffset.hs 124;" f +strideRot src/Dodge/Item/HeldOffset.hs 130;" f stringToList src/Picture/Base.hs 313;" f stringToListGrad src/Picture/Text.hs 12;" f stripZ src/Geometry/Vector3D.hs 97;" f @@ -6113,7 +6113,7 @@ tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f tranRot src/Picture/Base.hs 124;" f transMat src/MatrixHelper.hs 73;" f -transToHandle src/Dodge/Item/HeldOffset.hs 32;" f +transToHandle src/Dodge/Item/HeldOffset.hs 33;" f translate src/Picture/Base.hs 116;" f translate3 src/Picture/Base.hs 120;" f translateFloatingCamera src/Dodge/Update/Camera.hs 45;" f @@ -6179,13 +6179,13 @@ trySynthBullet src/Dodge/Creature/State.hs 224;" f tryUseParent src/Dodge/Creature/State.hs 218;" f turnTo src/Dodge/Movement/Turn.hs 8;" f turret src/Dodge/Placement/Instance/Turret.hs 35;" f -turretItemOffset src/Dodge/Item/HeldOffset.hs 27;" f +turretItemOffset src/Dodge/Item/HeldOffset.hs 28;" f tweenAngles src/Geometry/Vector.hs 195;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 80;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 28;" f -twists src/Dodge/Creature/Test.hs 108;" f -twoFlat src/Dodge/Creature/Test.hs 105;" f -twoFlatHRot src/Dodge/Item/HeldOffset.hs 133;" f +twists src/Dodge/Creature/Test.hs 109;" f +twoFlat src/Dodge/Creature/Test.hs 106;" f +twoFlatHRot src/Dodge/Item/HeldOffset.hs 139;" f twoHandTwistAmount src/Dodge/Creature/YourControl.hs 150;" f twoRoomPoss src/Dodge/PlacementSpot.hs 147;" f twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 533;" f @@ -6262,8 +6262,8 @@ updateInGameCamera src/Dodge/Update/Camera.hs 78;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 400;" f updateInt2Map src/Dodge/Zoning/Base.hs 92;" f updateInventoryPositioning src/Dodge/DisplayInventory.hs 86;" f -updateItemTargeting src/Dodge/Creature/State.hs 435;" f -updateItemWithOrientation src/Dodge/Creature/State.hs 303;" f +updateItemTargeting src/Dodge/Creature/State.hs 436;" f +updateItemWithOrientation src/Dodge/Creature/State.hs 304;" f updateKeyInGame src/Dodge/Update/Input/InGame.hs 394;" f updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 382;" f updateLampoid src/Dodge/Lampoid.hs 12;" f