diff options
author | Griffin Smith <root@gws.fyi> | 2019-09-13T19·24-0400 |
---|---|---|
committer | Griffin Smith <root@gws.fyi> | 2019-09-13T19·24-0400 |
commit | c06edf3cc698f36e995719dc6e192c5663110f6d (patch) | |
tree | dd7872fbad6dc4b0e04f943ef63a64c3e002479b /src/Xanthous/Generators.hs | |
parent | 9ebdc6fbb446fea5e505172a6b3dd459beaf3552 (diff) |
Place the chacracter in the level at startup time
Randomly select a position in the largest contiguous region of the generated level in which to place the character at startup time.
Diffstat (limited to 'src/Xanthous/Generators.hs')
-rw-r--r-- | src/Xanthous/Generators.hs | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/Xanthous/Generators.hs b/src/Xanthous/Generators.hs index 740b39c5f082..6e2e89d14a14 100644 --- a/src/Xanthous/Generators.hs +++ b/src/Xanthous/Generators.hs @@ -33,13 +33,13 @@ generate -> Params gen -> Dimensions -> g - -> UArray (Word, Word) Bool + -> Cells generate SCaveAutomata = CaveAutomata.generate data GeneratorInput where GeneratorInput :: forall gen. SGenerator gen -> Params gen -> GeneratorInput -generateFromInput :: RandomGen g => GeneratorInput -> Dimensions -> g -> UArray (Word, Word) Bool +generateFromInput :: RandomGen g => GeneratorInput -> Dimensions -> g -> Cells generateFromInput (GeneratorInput sg ps) = generate sg ps parseGeneratorInput :: Opt.Parser GeneratorInput @@ -48,7 +48,7 @@ parseGeneratorInput = Opt.subparser $ (GeneratorInput <$> pure SCaveAutomata <*> CaveAutomata.parseParams) (Opt.progDesc "cellular-automata based cave generator")) -showCells :: UArray (Word, Word) Bool -> Text +showCells :: Cells -> Text showCells arr = let ((minX, minY), (maxX, maxY)) = bounds arr showCellVal True = "x" @@ -58,7 +58,7 @@ showCells arr = rows = row <$> [minY..maxY] in intercalate "\n" rows -cellsToWalls :: UArray (Word, Word) Bool -> EntityMap Wall +cellsToWalls :: Cells -> EntityMap Wall cellsToWalls cells = foldl' maybeInsertWall mempty . assocs $ cells where maybeInsertWall em (pos@(x, y), True) |