module Dodge.Room.Corridor
    where
import Dodge.Room.Data
import Dodge.Default.Room
import Geometry
--import Geometry.Data
import Tile

import Data.Bifunctor
{- | First exit due north, two other exits at angles next to this.
 Entrance from south.  -}
corridor :: Room
corridor = defaultRoom
    { _rmPolys = [poly]
    , _rmLinks = lnks
    , _rmPath  = concatMap (doublePair . (,) (V2 20 60) . fst) lnks
    , _rmPS    = []
    , _rmBound = [ rectNSWE 50 30 0 40 ]
    , _rmFloor = [makeTileFromPoly poly 2]  
    }
  where 
    poly = rectNSWE 80 0 0 40
    lnks = map (first toV2)
        [((20,70)  ,0)
        ,((20,70), pi/6)
        ,((20,70), negate $ pi/6)
        ,((20,10)    ,pi)
        ]
{- | Debug drop-in copy of corridor  -}
corridorDebug :: Room
corridorDebug = defaultRoom
    { _rmPolys = 
        [   rectNSWE 80 0 0 40
        --,   [ (0,0), (0,200) , (200,100)]
        --,   [ (0,0), (0,20) , (20,10)]
        ]
    , _rmLinks = lnks
    , _rmPath  = concatMap (doublePair . (,) (V2 20 60) . fst) lnks
    , _rmPS    = []
    , _rmBound = [ rectNSWE 50 30 0 40 ]
    }
  where 
    lnks = map (first toV2)
        [((20,70)  ,0)
        ,((20,70), pi/6)
        ,((20,70), negate $ pi/6)
        ,((20,10)    ,pi)
        ]
corridorN :: Room
corridorN = defaultRoom
    { _rmPolys = [rectNSWE 80 0 0 40
                 ]
    , _rmLinks = lnks
    , _rmPath  = pth
    , _rmPS    = []
    , _rmBound = [ rectNSWE 50 30 0 40 ]
    }
    where lnks = [(V2 20 70  ,0)
                 ,(V2 20 10  ,pi)
                 ]
          pth = doublePair (V2 20 70,V2 20 10)

tEast :: Room
tEast = defaultRoom
    { _rmPolys = [rectNSWE 80 0  (-20) 20
                 ,rectNSWE 80 40 (-40) 40
                 ]
    , _rmLinks = lnks
    , _rmPath  = concatMap (doublePair . (,) (V2 0 60) . fst) lnks
    , _rmPS    = []
    , _rmBound = [ rectNSWE 70 10 0 40 ]
    }
  where 
    lnks = map (first toV2) 
        [(( 30,60),-pi/2)
        ,((-30,60),pi/2)
        ,((0,10),pi)
        ]
tWest :: Room
tWest = defaultRoom
    { _rmPolys = [rectNSWE 80 0  (-20) 20
                 ,rectNSWE 80 40 (-40) 40
                 ]
    , _rmLinks = lnks
    , _rmPath  = concatMap (doublePair . (,) (V2 0 60) . fst) lnks
    , _rmPS    = []
    , _rmBound = [ rectNSWE 70 10 0 40 ]
    }
  where 
    lnks = map (first toV2)
        [((-30,60),pi/2)
        ,(( 30,60),-pi/2)
        ,((0,10),pi)
        ]
