From 993f00ada1143fab65ae59293bef56a627101343 Mon Sep 17 00:00:00 2001 From: justin Date: Sat, 4 Oct 2025 11:22:15 +0100 Subject: [PATCH] Move generating item combinations graph from load to menu log --- moduleFlow.dia | Bin 6505 -> 0 bytes src/Dodge/LevelGen.hs | 12 +----------- src/Dodge/Menu.hs | 23 +++++++++++++++++++++-- 3 files changed, 22 insertions(+), 13 deletions(-) delete mode 100644 moduleFlow.dia diff --git a/moduleFlow.dia b/moduleFlow.dia deleted file mode 100644 index e9cca2216f76fe359c5bad5d9056891ad60d6405..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6505 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 PzJB-r`*o+c6RrUO0?4ux diff --git a/src/Dodge/LevelGen.hs b/src/Dodge/LevelGen.hs index ec817c8b1..0226243ad 100644 --- a/src/Dodge/LevelGen.hs +++ b/src/Dodge/LevelGen.hs @@ -5,8 +5,6 @@ import Data.Preload.Render import Control.Lens import Control.Monad.State import Data.Foldable -import qualified Data.Text.IO as TIO -import Dodge.Combine.Graph import Dodge.Data.GenWorld import Dodge.Floor import Dodge.Initialisation @@ -19,18 +17,15 @@ import System.Random generateWorldFromSeed :: RenderData -> Int -> IO World generateWorldFromSeed rdata i = do createDirectoryIfMissing True "generated/log" - createDirectoryIfMissing True "generated/graph" +-- createDirectoryIfMissing True "generated/graph" writeFile "generated/log/attemptedSeeds" "" writeFile "generated/log/treeCluster" "" writeFile "generated/log/aGeneratedRoomLayout" "" - generateGraphs (roomList, bounds) <- layoutLevelFromSeed 0 i postGenerationProcessing rdata $! generateLevelFromRoomList roomList $ initialWorld{_randGen = mkStdGen i} & cWorld . cwGen . cwgRoomClipping .~ bounds & cWorld . cwGen . cwgSeed .~ i --- & gwWorld . cWorld . cwGen . cwgRoomClipping .~ bounds --- & gwWorld . cWorld . cwGen . cwgSeed .~ i postGenerationProcessing :: RenderData -> GenWorld -> IO World postGenerationProcessing _ gw = do @@ -38,11 +33,6 @@ postGenerationProcessing _ gw = do let w = w' & cWorld . cwTiles .~ (tilesFromRooms . IM.elems $ _genRooms gw) 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 w dr = case dr ^?! drPushedBy of PushedBy i -> w & cWorld . lWorld . doors . ix i . drPushes ?~ _drID dr diff --git a/src/Dodge/Menu.hs b/src/Dodge/Menu.hs index 800ee3cf0..e06c627ac 100644 --- a/src/Dodge/Menu.hs +++ b/src/Dodge/Menu.hs @@ -4,6 +4,9 @@ module Dodge.Menu ( splashMenu, ) where +import Dodge.Combine.Graph +import System.Directory +import qualified Data.Text.IO as TIO import Control.Monad import qualified Data.Aeson.Encode.Pretty as AEP import Data.ByteString.Lazy.Char8 (unpack) @@ -115,11 +118,15 @@ optionsOptions = [ makeSubmenuOption soundMenu $ MODString "VOLUME" , makeSubmenuOption graphicsMenu $ MODString "GRAPHICS" , makeSubmenuOption gameplayMenu $ MODString "GAMEPLAY" - , makeSubmenuOption debugMenu $ MODString "DEBUG OPTIONS" + , makeSubmenuOption debugMenu $ MODString "DEBUG" + , makeSubmenuOption logMenu $ MODString "LOG" ] debugMenu :: Universe -> ScreenLayer -debugMenu = titleOptionsMenu "OPTIONS:GAMEPLAY" debugMenuOptions +debugMenu = titleOptionsMenu "OPTIONS:DEBUG" debugMenuOptions + +logMenu :: Universe -> ScreenLayer +logMenu = titleOptionsMenu "OPTIONS:LOG" logOptions debugMenuOptions :: [MenuOption] debugMenuOptions = @@ -133,6 +140,18 @@ debugMenuOptions = g bd Nothing = (show bd, "False") 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 = titleOptionsMenu "OPTIONS:GAMEPLAY" gameplayMenuOptions