Move generating item combinations graph from load to menu log

This commit is contained in:
2025-10-04 11:22:15 +01:00
parent b519c835fa
commit 993f00ada1
3 changed files with 22 additions and 13 deletions
BIN
View File
Binary file not shown.
+1 -11
View File
@@ -5,8 +5,6 @@ import Data.Preload.Render
import Control.Lens import Control.Lens
import Control.Monad.State import Control.Monad.State
import Data.Foldable import Data.Foldable
import qualified Data.Text.IO as TIO
import Dodge.Combine.Graph
import Dodge.Data.GenWorld import Dodge.Data.GenWorld
import Dodge.Floor import Dodge.Floor
import Dodge.Initialisation import Dodge.Initialisation
@@ -19,18 +17,15 @@ import System.Random
generateWorldFromSeed :: RenderData -> Int -> IO World generateWorldFromSeed :: RenderData -> Int -> IO World
generateWorldFromSeed rdata i = do generateWorldFromSeed rdata i = do
createDirectoryIfMissing True "generated/log" createDirectoryIfMissing True "generated/log"
createDirectoryIfMissing True "generated/graph" -- createDirectoryIfMissing True "generated/graph"
writeFile "generated/log/attemptedSeeds" "" writeFile "generated/log/attemptedSeeds" ""
writeFile "generated/log/treeCluster" "" writeFile "generated/log/treeCluster" ""
writeFile "generated/log/aGeneratedRoomLayout" "" writeFile "generated/log/aGeneratedRoomLayout" ""
generateGraphs
(roomList, bounds) <- layoutLevelFromSeed 0 i (roomList, bounds) <- layoutLevelFromSeed 0 i
postGenerationProcessing rdata postGenerationProcessing rdata
$! generateLevelFromRoomList roomList $ initialWorld{_randGen = mkStdGen i} $! generateLevelFromRoomList roomList $ initialWorld{_randGen = mkStdGen i}
& cWorld . cwGen . cwgRoomClipping .~ bounds & cWorld . cwGen . cwgRoomClipping .~ bounds
& cWorld . cwGen . cwgSeed .~ i & cWorld . cwGen . cwgSeed .~ i
-- & gwWorld . cWorld . cwGen . cwgRoomClipping .~ bounds
-- & gwWorld . cWorld . cwGen . cwgSeed .~ i
postGenerationProcessing :: RenderData -> GenWorld -> IO World postGenerationProcessing :: RenderData -> GenWorld -> IO World
postGenerationProcessing _ gw = do postGenerationProcessing _ gw = do
@@ -38,11 +33,6 @@ postGenerationProcessing _ gw = do
let w = w' & cWorld . cwTiles .~ (tilesFromRooms . IM.elems $ _genRooms gw) let w = w' & cWorld . cwTiles .~ (tilesFromRooms . IM.elems $ _genRooms gw)
return $ foldl' assignPushDoors w (w ^. cWorld . lWorld . doors) return $ foldl' assignPushDoors w (w ^. cWorld . lWorld . doors)
generateGraphs :: IO ()
generateGraphs = do
createDirectoryIfMissing True "generated/graph"
TIO.writeFile "generaged/graph/itemCombinations.gv" combinationsDotGraph
assignPushDoors :: World -> Door -> World assignPushDoors :: World -> Door -> World
assignPushDoors w dr = case dr ^?! drPushedBy of assignPushDoors w dr = case dr ^?! drPushedBy of
PushedBy i -> w & cWorld . lWorld . doors . ix i . drPushes ?~ _drID dr PushedBy i -> w & cWorld . lWorld . doors . ix i . drPushes ?~ _drID dr
+21 -2
View File
@@ -4,6 +4,9 @@ module Dodge.Menu (
splashMenu, splashMenu,
) where ) where
import Dodge.Combine.Graph
import System.Directory
import qualified Data.Text.IO as TIO
import Control.Monad import Control.Monad
import qualified Data.Aeson.Encode.Pretty as AEP import qualified Data.Aeson.Encode.Pretty as AEP
import Data.ByteString.Lazy.Char8 (unpack) import Data.ByteString.Lazy.Char8 (unpack)
@@ -115,11 +118,15 @@ optionsOptions =
[ makeSubmenuOption soundMenu $ MODString "VOLUME" [ makeSubmenuOption soundMenu $ MODString "VOLUME"
, makeSubmenuOption graphicsMenu $ MODString "GRAPHICS" , makeSubmenuOption graphicsMenu $ MODString "GRAPHICS"
, makeSubmenuOption gameplayMenu $ MODString "GAMEPLAY" , makeSubmenuOption gameplayMenu $ MODString "GAMEPLAY"
, makeSubmenuOption debugMenu $ MODString "DEBUG OPTIONS" , makeSubmenuOption debugMenu $ MODString "DEBUG"
, makeSubmenuOption logMenu $ MODString "LOG"
] ]
debugMenu :: Universe -> ScreenLayer debugMenu :: Universe -> ScreenLayer
debugMenu = titleOptionsMenu "OPTIONS:GAMEPLAY" debugMenuOptions debugMenu = titleOptionsMenu "OPTIONS:DEBUG" debugMenuOptions
logMenu :: Universe -> ScreenLayer
logMenu = titleOptionsMenu "OPTIONS:LOG" logOptions
debugMenuOptions :: [MenuOption] debugMenuOptions :: [MenuOption]
debugMenuOptions = debugMenuOptions =
@@ -133,6 +140,18 @@ debugMenuOptions =
g bd Nothing = (show bd, "False") g bd Nothing = (show bd, "False")
g bd _ = (show bd, "True") g bd _ = (show bd, "True")
logOptions :: [MenuOption]
logOptions =
[ Toggle (uvIOEffects %~ \f u -> generateGraphs >> f u)
(const $ MODString "Create item combination graph")
]
generateGraphs :: IO ()
generateGraphs = do
createDirectoryIfMissing True "generated/graph"
TIO.writeFile "generated/graph/itemCombinations.gv" combinationsDotGraph
gameplayMenu :: Universe -> ScreenLayer gameplayMenu :: Universe -> ScreenLayer
gameplayMenu = titleOptionsMenu "OPTIONS:GAMEPLAY" gameplayMenuOptions gameplayMenu = titleOptionsMenu "OPTIONS:GAMEPLAY" gameplayMenuOptions