module Game.LambdaHack.Client.UI.PointUI
( PointUI(..), PointSquare(..), squareToUI, uiToSquare
, squareToMap, mapToSquare
#ifdef EXPOSE_INTERNAL
, mapStartY
#endif
) where
import Prelude ()
import Game.LambdaHack.Core.Prelude
import Game.LambdaHack.Common.Point
data PointUI = PointUI Int Int
deriving (Int -> PointUI -> ShowS
[PointUI] -> ShowS
PointUI -> String
(Int -> PointUI -> ShowS)
-> (PointUI -> String) -> ([PointUI] -> ShowS) -> Show PointUI
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PointUI] -> ShowS
$cshowList :: [PointUI] -> ShowS
show :: PointUI -> String
$cshow :: PointUI -> String
showsPrec :: Int -> PointUI -> ShowS
$cshowsPrec :: Int -> PointUI -> ShowS
Show, PointUI -> PointUI -> Bool
(PointUI -> PointUI -> Bool)
-> (PointUI -> PointUI -> Bool) -> Eq PointUI
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PointUI -> PointUI -> Bool
$c/= :: PointUI -> PointUI -> Bool
== :: PointUI -> PointUI -> Bool
$c== :: PointUI -> PointUI -> Bool
Eq)
data PointSquare = PointSquare Int Int
deriving (Int -> PointSquare -> ShowS
[PointSquare] -> ShowS
PointSquare -> String
(Int -> PointSquare -> ShowS)
-> (PointSquare -> String)
-> ([PointSquare] -> ShowS)
-> Show PointSquare
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PointSquare] -> ShowS
$cshowList :: [PointSquare] -> ShowS
show :: PointSquare -> String
$cshow :: PointSquare -> String
showsPrec :: Int -> PointSquare -> ShowS
$cshowsPrec :: Int -> PointSquare -> ShowS
Show, PointSquare -> PointSquare -> Bool
(PointSquare -> PointSquare -> Bool)
-> (PointSquare -> PointSquare -> Bool) -> Eq PointSquare
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PointSquare -> PointSquare -> Bool
$c/= :: PointSquare -> PointSquare -> Bool
== :: PointSquare -> PointSquare -> Bool
$c== :: PointSquare -> PointSquare -> Bool
Eq)
squareToUI :: PointSquare -> PointUI
{-# INLINE squareToUI #-}
squareToUI :: PointSquare -> PointUI
squareToUI (PointSquare Int
x Int
y) = Int -> Int -> PointUI
PointUI (Int
x Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
2) Int
y
uiToSquare :: PointUI -> PointSquare
{-# INLINE uiToSquare #-}
uiToSquare :: PointUI -> PointSquare
uiToSquare (PointUI Int
x Int
y) = Int -> Int -> PointSquare
PointSquare (Int
x Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2) Int
y
mapStartY :: Int
mapStartY :: Int
mapStartY = Int
1
squareToMap :: PointSquare -> Point
{-# INLINE squareToMap #-}
squareToMap :: PointSquare -> Point
squareToMap (PointSquare Int
x Int
y) = Int -> Int -> Point
Point Int
x (Int
y Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
mapStartY)
mapToSquare :: Point -> PointSquare
{-# INLINE mapToSquare #-}
mapToSquare :: Point -> PointSquare
mapToSquare (Point Int
x Int
y) = Int -> Int -> PointSquare
PointSquare Int
x (Int
y Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
mapStartY)