Further strictifying
This commit is contained in:
+14
-14
@@ -404,8 +404,8 @@ nearestCrInTri p dir x w
|
||||
where
|
||||
tri =
|
||||
[p
|
||||
,p +.+ rotateV (dir-pi/4) (x,0)
|
||||
,p +.+ rotateV (dir+pi/4) (x,0)
|
||||
,p +.+ rotateV (dir-pi/4) (V2 x 0)
|
||||
,p +.+ rotateV (dir+pi/4) (V2 x 0)
|
||||
]
|
||||
{- | Find 'Maybe' the closes creature in front of a point in a given direction for
|
||||
a given distance.
|
||||
@@ -420,13 +420,15 @@ nearestCrInFront p dir x w
|
||||
$ IM.filter (\cr -> errorPointInPolygon 2 (_crPos cr) rec) $ _creatures w
|
||||
where
|
||||
rec = [p, pR, pR1, pL1, pL ]
|
||||
pR = p +.+ rotateV (dir - pi*(3/8)) (x/2,0)
|
||||
pL = p +.+ rotateV (dir + pi*(3/8)) (x/2,0)
|
||||
pR1 = pR +.+ rotateV dir (x/2,0)
|
||||
pL1 = pL +.+ rotateV dir (x/2,0)
|
||||
pR = p +.+ rotateV (dir - pi*(3/8)) (V2 (x/2) (0))
|
||||
pL = p +.+ rotateV (dir + pi*(3/8)) (V2 (x/2) (0))
|
||||
pR1 = pR +.+ rotateV dir (V2 (x/2) (0))
|
||||
pL1 = pL +.+ rotateV dir (V2 (x/2) (0))
|
||||
{- | Test whether a creature is in a polygon. -}
|
||||
crInPolygon :: Creature -> [Point2] -> Bool
|
||||
crInPolygon cr = errorPointInPolygon 3 (_crPos cr)
|
||||
|
||||
--The following two functions should be unified
|
||||
{- | Transform coordinates from world position to normalised screen coordinates. -}
|
||||
worldPosToScreen :: World -> Point2 -> Point2
|
||||
worldPosToScreen w = doWindowScale . doRotate . doZoom . doTranslate
|
||||
@@ -434,10 +436,9 @@ worldPosToScreen w = doWindowScale . doRotate . doZoom . doTranslate
|
||||
doTranslate p = p -.- _cameraCenter w
|
||||
doZoom p = _cameraZoom w *.* p
|
||||
doRotate p = rotateV (negate $ _cameraRot w) p
|
||||
doWindowScale (x,y) =
|
||||
( x * 2 / getWindowX w
|
||||
, y * 2 / getWindowY w
|
||||
)
|
||||
doWindowScale (V2 x y) = V2
|
||||
( x * 2 / getWindowX w)
|
||||
( y * 2 / getWindowY w)
|
||||
{- | Transform coordinates from the map position to normalised screen
|
||||
coordinates. -}
|
||||
cartePosToScreen :: World -> Point2 -> Point2
|
||||
@@ -446,10 +447,9 @@ cartePosToScreen w = doWindowScale . doRotate . doZoom . doTranslate
|
||||
doTranslate p = p -.- _carteCenter w
|
||||
doZoom p = _carteZoom w *.* p
|
||||
doRotate p = rotateV (negate $ _carteRot w) p
|
||||
doWindowScale (x,y) =
|
||||
( x * 2 / getWindowX w
|
||||
, y * 2 / getWindowY w
|
||||
)
|
||||
doWindowScale (V2 x y) = V2
|
||||
( x * 2 / getWindowX w)
|
||||
( y * 2 / getWindowY w)
|
||||
{- | The mouse position in world coordinates. -}
|
||||
mouseWorldPos :: World -> Point2
|
||||
mouseWorldPos w = _cameraCenter w +.+ (1/_cameraZoom w) *.* rotateV (_cameraRot w) (_mousePos w)
|
||||
|
||||
Reference in New Issue
Block a user