34 lines
799 B
Haskell
34 lines
799 B
Haskell
{-# LANGUAGE LambdaCase #-}
|
|
module Dodge.Base.CardinalPoint where
|
|
|
|
import Dodge.Data.Room
|
|
import Geometry
|
|
|
|
cardList :: [CardinalPoint]
|
|
cardList = [North, East, South, West]
|
|
|
|
cardVec :: CardinalPoint -> Point2
|
|
cardVec cp = case cp of
|
|
North -> V2 0 1
|
|
South -> V2 0 (-1)
|
|
East -> V2 1 0
|
|
West -> V2 (-1) 0
|
|
|
|
card8Vec :: Cardinal8 -> Point2
|
|
card8Vec cp = case cp of
|
|
North8 -> V2 0 1
|
|
NorthEast8 -> V2 1 1
|
|
East8 -> V2 1 0
|
|
SouthEast8 -> V2 1 (-1)
|
|
South8 -> V2 0 (-1)
|
|
SouthWest8 -> V2 (-1) (-1)
|
|
West8 -> V2 (-1) 0
|
|
NorthWest8 -> V2 (-1) 1
|
|
|
|
cardinalBetweenAdj :: CardinalPointBetween -> (CardinalPoint,CardinalPoint)
|
|
cardinalBetweenAdj = \case
|
|
NorthEast -> (North,East)
|
|
SouthEast -> (South,East)
|
|
SouthWest -> (South,West)
|
|
NorthWest -> (North,West)
|