From 0e87f340b48cda22ac5df52dda24376be8d18518 Mon Sep 17 00:00:00 2001 From: justin Date: Thu, 25 Nov 2021 01:14:14 +0000 Subject: [PATCH] Add file --- src/Dodge/LevelGen/LevelStructure.hs | 15 +++++++++++++++ src/Dodge/Placement/Shift.hs | 19 +++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 src/Dodge/LevelGen/LevelStructure.hs create mode 100644 src/Dodge/Placement/Shift.hs diff --git a/src/Dodge/LevelGen/LevelStructure.hs b/src/Dodge/LevelGen/LevelStructure.hs new file mode 100644 index 000000000..ca7a01d02 --- /dev/null +++ b/src/Dodge/LevelGen/LevelStructure.hs @@ -0,0 +1,15 @@ +{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE StrictData #-} +module Dodge.LevelGen.LevelStructure where +import Dodge.LevelGen.Data +--import Dodge.Tree.Compose.Data +import Dodge.Data + +--import Data.Tree +import qualified Data.IntMap.Strict as IM +--import System.Random + +data GenWorld = GenWorld + { _gWorld :: World + , _gPlacements :: IM.IntMap [Placement] + } diff --git a/src/Dodge/Placement/Shift.hs b/src/Dodge/Placement/Shift.hs new file mode 100644 index 000000000..cd7e0b767 --- /dev/null +++ b/src/Dodge/Placement/Shift.hs @@ -0,0 +1,19 @@ +module Dodge.Placement.Shift + ( shiftPlacement + , shiftPSBy + ) where +import Dodge.LevelGen.Data +import Dodge.ShiftPoint +import Geometry +import Control.Lens +shiftPSBy :: (Point2,Float) -> PlacementSpot -> PlacementSpot +shiftPSBy (pos,rot) ps = ps + & psPos %~ shiftPointBy (pos,rot) + & psRot %~ (+ rot) +shiftPlacement :: (Point2,Float) -> Placement -> Placement +shiftPlacement shift plmnt = case plmnt of + Placement {} -> plmnt & plSpot %~ shiftPSBy shift + & plIDCont %~ fmap (fmap $ shiftPlacement shift) + PlacementUsingPos p f -> PlacementUsingPos (shiftPoint3By shift p) + (fmap (shiftPlacement shift) f) + RandomPlacement rpl -> RandomPlacement $ fmap (shiftPlacement shift) rpl