Fix at least one bug from item refactor, more remain

This commit is contained in:
2025-08-24 21:01:02 +01:00
parent 94f6d5c630
commit c2daa86463
19 changed files with 95 additions and 95 deletions
+30 -28
View File
@@ -6,13 +6,13 @@ Room layout (compact):
| | | |
| +- 22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46 | +- 22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46
| | | | | |
| | +- 47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 | | +- 47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64
| | | | | |
| | 64,65 | | 65,66
| | | |
| 66,67,68 | 67,68,69
| |
69,70,71 70,71,72
Layout with room names: Layout with room names:
rezBox-0 rezBox-0
@@ -107,55 +107,57 @@ ElecautoRect-6
| | | | | |
| | autoDoor-45 | | autoDoor-45
| | | | | |
| | rect-46 | | 8gon-46
| | | | | |
| | +- autoDoor-47 | | +- triggerDoorRoom-47
| | | | | | | |
| | | autoDoor-48 | | | autoDoor-48
| | | | | | | |
| | | Corridor-49 | | | autoDoor-49
| | | | | | | |
| | | autoRect-50 | | | Corridor-50
| | | | | | | |
| | | defaultRoom-51 | | | autoRect-51
| | | | | | | |
| | | autoRect-52 | | | defaultRoom-52
| | | | | | | |
| | | defaultRoom-53 | | | autoRect-53
| | | | | | | |
| | | autoRect-54 | | | defaultRoom-54
| | | | | | | |
| | | autoDoor-55 | | | autoRect-55
| | | | | | | |
| | | Corridor-56 | | | autoDoor-56
| | | | | | | |
| | | autoDoor-57 | | | Corridor-57
| | | | | | | |
| | | 8gon-58 | | | autoDoor-58
| | | | | | | |
| | | triggerDoorRoom-59 | | | 8gon-59
| | | | | | | |
| | | autoDoor-60 | | | triggerDoorRoom-60
| | | | | | | |
| | | autoDoor-61 | | | autoDoor-61
| | | | | | | |
| | | Corridor-62 | | | autoDoor-62
| | | | | | | |
| | | defaultRoom-63 | | | Corridor-63
| | | | | | |
| | Corridor-64 | | | defaultRoom-64
| | | | | |
| | autoDoor-65 | | autoDoor-65
| | |
| | Corridor-66
| | | |
| autoDoor-66 | autoDoor-67
| | | |
| Corridor-67 | Corridor-68
| | | |
| autoRect-68 | autoRect-69
| |
autoDoor-69 autoDoor-70
| |
Corridor-70 Corridor-71
| |
autoRect-71 defaultRoom-72
+1 -1
View File
@@ -1,4 +1,4 @@
Generating level with seed 7114951007332849727 Generating level with seed 7114951007332849727
After 1 attempt(s), Successful generation of level with seed 7114951007332849727 After 1 attempt(s), Successful generation of level with seed 7114951007332849727
72 rooms in total 73 rooms in total
+13 -11
View File
@@ -35,7 +35,7 @@ Seed: 7114951007332849727
| |
17:corDoor 17:corDoor
| |
18:PassthroughLockKeyLists-HELD {_ibtHeld = SNIPERRIFLE} 18:PassthroughLockKeyLists-HELD {_ibtHeld = RLAUNCHER}
| |
19:corDoor 19:corDoor
| |
@@ -87,7 +87,7 @@ Seed: 7114951007332849727
| |
2:0:0:0:5:Corridor 2:0:0:0:5:Corridor
2:0:1:0:autoRect 2:0:1:0:defaultRoom
3:0:corDoor 3:0:corDoor
@@ -125,7 +125,7 @@ Seed: 7114951007332849727
8:0:0:RassThroughLockKeyLists 8:0:0:RassThroughLockKeyLists
| |
8:0:1:roomsContaining chaseCritchaseCritchaseCritKEYCARD 0 8:0:1:roomsContaining DEFAULTCRNAMEchaseCritchaseCritKEYCARD 0
8:0:0:0:keyCardRoomRunPast 8:0:0:0:keyCardRoomRunPast
@@ -203,25 +203,27 @@ Seed: 7114951007332849727
| |
17:0:1:Corridor 17:0:1:Corridor
18:0:PassthroughLockKeyLists-HELD {_ibtHeld = SNIPERRIFLE} 18:0:PassthroughLockKeyLists-HELD {_ibtHeld = RLAUNCHER}
18:0:0:RassThroughLockKeyLists 18:0:0:RassThroughLockKeyLists
| |
18:0:1:roomsContaining chaseCritchaseCritSNIPERRIFLE 18:0:1:roomsContaining chaseCritchaseCritTUBETUBEHARDWARE
18:0:0:0:longRoomRunPast 18:0:0:0:lasCenSensEdge
18:0:0:0:0:autoDoor 18:0:0:0:0:autoDoor
| |
18:0:0:0:1:rect 18:0:0:0:1:8gon
| |
+- 18:0:0:0:2:autoDoor +- 18:0:0:0:2:triggerDoorRoom
| | |
18:0:0:0:3:Corridor | 18:0:0:0:3:autoDoor
| |
18:0:0:0:4:autoDoor 18:0:0:0:4:autoDoor
|
18:0:0:0:5:Corridor
18:0:1:0:rectPillars 18:0:1:0:autoRect
19:0:corDoor 19:0:corDoor
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -8,7 +8,7 @@ import Control.Lens
import Dodge.Creature.ChaseCrit import Dodge.Creature.ChaseCrit
import Dodge.Data.Creature import Dodge.Data.Creature
import Dodge.Default import Dodge.Default
import Dodge.Item.Equipment --import Dodge.Item.Equipment
import qualified IntMapHelp as IM import qualified IntMapHelp as IM
flockArmourChaseCrit :: Creature flockArmourChaseCrit :: Creature
+2 -2
View File
@@ -2,11 +2,11 @@ module Dodge.Creature.AutoCrit (
autoCrit, autoCrit,
) where ) where
import Dodge.Item.Held.Cane --import Dodge.Item.Held.Cane
--import Control.Lens --import Control.Lens
import Dodge.Data.Creature import Dodge.Data.Creature
import Dodge.Default import Dodge.Default
import qualified IntMapHelp as IM --import qualified IntMapHelp as IM
--import Picture --import Picture
autoCrit :: Creature autoCrit :: Creature
+3 -3
View File
@@ -4,11 +4,11 @@ module Dodge.Creature.ChaseCrit (
chaseCrit, chaseCrit,
) where ) where
import Dodge.Data.Equipment.Misc --import Dodge.Data.Equipment.Misc
import Control.Lens --import Control.Lens
import Dodge.Data.Creature import Dodge.Data.Creature
import Dodge.Default import Dodge.Default
import Dodge.Item.Equipment --import Dodge.Item.Equipment
import Picture import Picture
smallChaseCrit :: Creature smallChaseCrit :: Creature
+8 -8
View File
@@ -15,7 +15,7 @@ module Dodge.Creature.HandPos (
headPQ, headPQ,
) where ) where
import Dodge.Data.Equipment.Misc --import Dodge.Data.Equipment.Misc
import qualified Data.IntMap.Strict as IM import qualified Data.IntMap.Strict as IM
import qualified Quaternion as Q import qualified Quaternion as Q
import Control.Lens import Control.Lens
@@ -27,13 +27,13 @@ import ShapePicture
translatePointToRightHand :: IM.IntMap Item -> Creature -> Point3 -> Point3 translatePointToRightHand :: IM.IntMap Item -> Creature -> Point3 -> Point3
translatePointToRightHand m cr p = fst (rightHandPQ m cr `Q.comp` (p,Q.qID)) translatePointToRightHand m cr p = fst (rightHandPQ m cr `Q.comp` (p,Q.qID))
equipSitePQ :: EquipSite -> IM.IntMap Item -> Creature -> Point3Q --equipSitePQ :: EquipSite -> IM.IntMap Item -> Creature -> Point3Q
equipSitePQ = \case --equipSitePQ = \case
OnRightWrist -> rightHandPQ -- OnRightWrist -> rightHandPQ
OnLeftWrist -> leftHandPQ -- OnLeftWrist -> leftHandPQ
OnBack -> backPQ -- OnBack -> backPQ
OnChest -> chestPQ -- OnChest -> chestPQ
_ -> undefined -- _ -> undefined
rightHandPQ :: IM.IntMap Item -> Creature -> Point3Q rightHandPQ :: IM.IntMap Item -> Creature -> Point3Q
rightHandPQ m cr rightHandPQ m cr
+2 -2
View File
@@ -2,11 +2,11 @@ module Dodge.Creature.LauncherCrit (
launcherCrit, launcherCrit,
) where ) where
import Dodge.Item.Held.Launcher --import Dodge.Item.Held.Launcher
--import Control.Lens --import Control.Lens
import Dodge.Data.Creature import Dodge.Data.Creature
import Dodge.Default import Dodge.Default
import qualified IntMapHelp as IM --import qualified IntMapHelp as IM
--import Picture --import Picture
launcherCrit :: Creature launcherCrit :: Creature
+1 -2
View File
@@ -5,8 +5,7 @@ module Dodge.Creature.SpreadGunCrit (
--import Control.Lens --import Control.Lens
import Dodge.Data.Creature import Dodge.Data.Creature
import Dodge.Default import Dodge.Default
import Dodge.Item.Held.Stick --import qualified IntMapHelp as IM
import qualified IntMapHelp as IM
--import Picture --import Picture
spreadGunCrit :: Creature spreadGunCrit :: Creature
-1
View File
@@ -8,7 +8,6 @@ module Dodge.Creature.Statistics (
import Dodge.Data.LWorld import Dodge.Data.LWorld
import Data.Maybe import Data.Maybe
import Dodge.Data.Creature
import qualified IntMapHelp as IM import qualified IntMapHelp as IM
import LensHelp import LensHelp
+1 -1
View File
@@ -97,7 +97,7 @@ crInAimStance as m cr = crIsAiming cr && mitstance == Just as
mitstance = do mitstance = do
i <- cr ^? crManipulation . manObject . imRootSelectedItem i <- cr ^? crManipulation . manObject . imRootSelectedItem
--itm <- invRootTrees' (cr ^. crInv) ^? ix i --itm <- invRootTrees' (cr ^. crInv) ^? ix i
itm <- fmap (fmap (\(a,b,_) -> (a,b))) $ invIMDT (fmap (\i -> m ^?! ix i) (cr ^. crInv)) ^? ix i itm <- fmap (fmap (\(a,b,_) -> (a,b))) $ invIMDT (fmap (\k -> m ^?! ix k) (cr ^. crInv)) ^? ix i
return $ aimStance itm return $ aimStance itm
--cr ^? crInv . ix i . itUse . heldAim . aimStance --cr ^? crInv . ix i . itUse . heldAim . aimStance
+1 -5
View File
@@ -114,11 +114,7 @@ displayIndents 3 = 2
displayIndents 5 = 2 displayIndents 5 = 2
displayIndents _ = 0 displayIndents _ = 0
updateDisplaySections :: updateDisplaySections :: World -> Configuration -> IMSS () -> IMSS ()
World ->
Configuration ->
IM.IntMap (SelectionSection ()) ->
IM.IntMap (SelectionSection ())
updateDisplaySections w cfig = updateDisplaySections w cfig =
updateSectionsPositioning updateSectionsPositioning
displayIndents displayIndents
+9 -13
View File
@@ -1,33 +1,29 @@
module Dodge.FloorItem ( module Dodge.FloorItem (
copyItemToFloor, copyItemToFloor,
copyItemToFloorID, -- copyItemToFloorID,
) where ) where
import Dodge.Item.InvSize
import NewInt
import Control.Lens import Control.Lens
import Data.Maybe import Data.Maybe
import Data.Monoid import Data.Monoid
import Dodge.Base import Dodge.Base
import Dodge.Data.World import Dodge.Data.World
import Dodge.Item.InvSize
import Geometry import Geometry
import qualified IntMapHelp as IM --import qualified IntMapHelp as IM
import NewInt
import System.Random import System.Random
-- | Copy an item to the floor. -- | Copy an item to the floor
copyItemToFloor :: Point2 -> Item -> World -> World copyItemToFloor :: Point2 -> Item -> World -> World
copyItemToFloor pos it = copyItemToFloorID pos it copyItemToFloor pos it w =
-- | Copy an item to the floor, returns the floor item's id.
copyItemToFloorID :: Point2 -> Item -> World -> World
copyItemToFloorID pos it w =
w' w'
& cWorld . lWorld . floorItems %~ IM.insert (_unNInt $ _itID it) theflit & cWorld . lWorld . floorItems . at (_unNInt $ _itID it) ?~ theflit
& cWorld . lWorld . items . ix (_unNInt $ _itID it) . itLocation .~ OnFloor & cWorld . lWorld . items . at (_unNInt $ _itID it) ?~ (it & itLocation .~ OnFloor)
& hud . closeItems %~ (_itID it :) & hud . closeItems %~ (_itID it :)
where
-- & hud . hudElement . diSections . ix 3 . ssOffset .~ 0 -- & hud . hudElement . diSections . ix 3 . ssOffset .~ 0
-- ensures dropped item is at the top of the close item selection list -- ensures dropped item is at the top of the close item selection list
where
(p', w') = findWallFreeDropPoint (_dimRad $ itDim it) pos w (p', w') = findWallFreeDropPoint (_dimRad $ itDim it) pos w
rot = fst . randomR (- pi, pi) $ _randGen w rot = fst . randomR (- pi, pi) $ _randGen w
theflit = FlIt{_flItPos = p', _flItRot = rot} theflit = FlIt{_flItPos = p', _flItRot = rot}
+2 -2
View File
@@ -111,11 +111,11 @@ tryPutItemInInvAt i cid itid w = do
-- return (Just i, w') -- return (Just i, w')
createItemYou :: Item -> World -> World createItemYou :: Item -> World -> World
createItemYou itm w = fromMaybe w' $ fmap snd $ tryPutItemInInv 0 itid w' createItemYou itm w = w' -- fromMaybe w' $ fmap snd $ tryPutItemInInv 0 itid w'
where where
itid = IM.newKey $ w ^. cWorld . lWorld . items itid = IM.newKey $ w ^. cWorld . lWorld . items
pos = w ^?! cWorld . lWorld . creatures . ix 0 . crPos pos = w ^?! cWorld . lWorld . creatures . ix 0 . crPos
w' = copyItemToFloorID pos (itm & itID .~ NInt itid) w w' = copyItemToFloor pos (itm & itID .~ NInt itid) w
-- | Pick up a specific item. -- | Pick up a specific item.
pickUpItem :: Int -> Int -> World -> World pickUpItem :: Int -> Int -> World -> World
+2 -1
View File
@@ -46,7 +46,8 @@ crUpdateItemLocations :: Int -> LWorld -> LWorld
crUpdateItemLocations crid lw = fromMaybe lw $ do crUpdateItemLocations crid lw = fromMaybe lw $ do
mo <- lw ^? creatures . ix crid . crManipulation . manObject mo <- lw ^? creatures . ix crid . crManipulation . manObject
itids <- lw ^? creatures . ix crid . crInv itids <- lw ^? creatures . ix crid . crInv
let crinv = IM.restrictKeys (lw ^. items) (IS.fromList $ IM.elems itids) --let crinv = IM.restrictKeys (lw ^. items) (IS.fromList $ IM.elems itids)
let crinv = fmap (\k -> lw ^?! items . ix k) itids
return $ crSetRoots crid $ IM.foldlWithKey' (crUpdateInvidLocations mo crid) lw crinv return $ crSetRoots crid $ IM.foldlWithKey' (crUpdateInvidLocations mo crid) lw crinv
crSetRoots :: Int -> LWorld -> LWorld crSetRoots :: Int -> LWorld -> LWorld
+2 -2
View File
@@ -19,8 +19,8 @@ import ShapePicture
itemEquipPict :: IM.IntMap Item -> Creature -> DTree CItem -> SPic itemEquipPict :: IM.IntMap Item -> Creature -> DTree CItem -> SPic
itemEquipPict m cr itmtree itemEquipPict m cr itmtree
| Just i <- itm ^? itLocation . ilInvID | --Just i <- itm ^? itLocation . ilInvID
, Just esite <- itm ^? itLocation . ilEquipSite . _Just Just esite <- itm ^? itLocation . ilEquipSite . _Just
, Just attachpos <- equipAttachPos <$> itm ^? itType . ibtEquip , Just attachpos <- equipAttachPos <$> itm ^? itType . ibtEquip
= equipPosition esite m cr attachpos (itemSPic itm) = equipPosition esite m cr attachpos (itemSPic itm)
| itm ^? itLocation . ilInvID == cr ^? crManipulation . manObject . imRootSelectedItem | itm ^? itLocation . ilInvID == cr ^? crManipulation . manObject . imRootSelectedItem
+5 -5
View File
@@ -3,11 +3,11 @@ module Dodge.Item.Location.Initialize
--, initItemLocations --, initItemLocations
) )
where where
import NewInt --import NewInt
import Dodge.Data.LWorld --import Dodge.Data.LWorld
import Control.Lens --import Control.Lens
import qualified IntMapHelp as IM --import qualified IntMapHelp as IM
import Data.Traversable --import Data.Traversable
--initItemLocations :: LWorld -> LWorld --initItemLocations :: LWorld -> LWorld
----initItemLocations = initCrsItemLocations . initFlItemsLocations . initTusItemLocations ----initItemLocations = initCrsItemLocations . initFlItemsLocations . initTusItemLocations
+7 -2
View File
@@ -27,11 +27,16 @@ import Dodge.Data.Universe
import qualified IntMapHelp as IM import qualified IntMapHelp as IM
import qualified Data.Map.Strict as M import qualified Data.Map.Strict as M
import NewInt import NewInt
import Data.Foldable
testStringInit :: Universe -> [String] testStringInit :: Universe -> [String]
testStringInit u = map show (IM.keys $ u ^. uvWorld . cWorld . lWorld . items) testStringInit u = map f (IM.elems $ u ^. uvWorld . cWorld . lWorld . items)
<> ["---"]
<> map show (IM.toList . fold $ u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crInv)
<> ["---"]
<> map show (IM.keys $ u ^. uvWorld . cWorld . lWorld . floorItems) <> map show (IM.keys $ u ^. uvWorld . cWorld . lWorld . floorItems)
<> map show (u ^. uvWorld . hud . closeItems) where
f itm = show (itm ^. itID . unNInt) <> ":"<> show (itm ^. itLocation)
-- map shortShow (u ^.. uvWorld . cWorld . lWorld . debris . each . to g) -- map shortShow (u ^.. uvWorld . cWorld . lWorld . debris . each . to g)
-- where -- where
-- g db = (pz,z,norm v) -- g db = (pz,z,norm v)