Tweak drawing order, text now blocks window shadows
This commit is contained in:
@@ -173,7 +173,7 @@ drawCursor :: World -> Picture
|
||||
drawCursor w = translate (105-halfWidth w)
|
||||
(halfHeight w - (25* (fromIntegral iPos)) - 20
|
||||
)
|
||||
$ setLayer 2
|
||||
$ setLayer 1
|
||||
$ line [(200,12.5),(-100,12.5),(-100,-12.5),(200,-12.5)]
|
||||
where iPos = _crInvSel $ _creatures w IM.! _yourID w
|
||||
|
||||
@@ -340,17 +340,19 @@ lineOnScreen w (p1:p2:_) = errorPointInPolygon 8 p1 sp || errorPointInPolygon 9
|
||||
drawWallShadow :: World -> Wall -> Drawing
|
||||
drawWallShadow w wall
|
||||
| isRHS sightFrom x y = blank
|
||||
| otherwise = onLayerL l $ color shadCol $ polygon $ points
|
||||
-- | otherwise = onLayerL l $ color shadCol $ polygon $ points
|
||||
| otherwise = colorAndLayer $ polygon $ points
|
||||
where
|
||||
l | _wlIsSeeThrough wall = [levLayer ShadowLayer]
|
||||
| otherwise = [levLayer ShadowLayer, 0]
|
||||
colorAndLayer | _wlIsSeeThrough wall = setLayer 2
|
||||
. onLayerL [levLayer ShadowLayer]
|
||||
. color (withAlpha 0.2 $ _wlColor wall)
|
||||
| otherwise = onLayerL [levLayer ShadowLayer,2]
|
||||
. color black
|
||||
(x:y:_) = _wlLine wall
|
||||
ps = linePointsBetween x y
|
||||
ds = map (\p -> safeNormalizeV (p -.- sightFrom)) ps
|
||||
p's = zipWith (\d x -> (15 *.* d) +.+ x) ds ps
|
||||
sightFrom = _cameraCenter w
|
||||
shadCol = if _wlIsSeeThrough wall then withAlpha 0.2 $ _wlColor wall
|
||||
else black
|
||||
corns = screenPolygon w
|
||||
borders = filter g $ zip corns (tail corns ++ [head corns])
|
||||
g (a,b) = isLHS a b sightFrom
|
||||
|
||||
+6
-1
@@ -48,6 +48,7 @@ lev1 = do
|
||||
-- [randomiseLinks =<< pistolerRoom]
|
||||
[return $ return $ Right deadEndRoom
|
||||
]
|
||||
++ [roomMiniIntro]
|
||||
++ [return $ connectRoom corridor
|
||||
,return $ connectRoom door]
|
||||
-- ++ [randomiseLinks =<< longRoom]
|
||||
@@ -342,9 +343,11 @@ glassLesson = do
|
||||
botplmnts = [PS (0,0) 0 $ PutWindow (rectNSWE (200) 0 (90) (110))
|
||||
$ withAlpha 0.5 aquamarine
|
||||
,PS (50,100) 0 $ PutCrit miniGunCrit
|
||||
,PS (50,50) 0 basicLS
|
||||
]
|
||||
topplmnts = [PS (0,0) 0 $ PutWindowBlock (100,200) (100,0)
|
||||
,PS (50,100) 0 $ PutCrit miniGunCrit
|
||||
,PS (50,50) 0 basicLS
|
||||
]
|
||||
|
||||
miniRoom1 :: RandomGen g => State g Room
|
||||
@@ -689,6 +692,7 @@ slowDoorRoom = do
|
||||
xs' <- sequence $ replicate 5 $ state $ randomR (10,x-10)
|
||||
ys' <- sequence $ replicate 5 $ state $ randomR (h+20,y)
|
||||
let crits = zipWith (\p r -> PS p r randC1) ps rs
|
||||
lsources = [PS (x/2,30) 0 basicLS, PS (x/2,y-30) 0 basicLS]
|
||||
let barrels = zipWith (\x y -> PS (x,y) 0 $ PutCrit explosiveBarrel) xs' ys'
|
||||
let pillarsa = []
|
||||
let pillarsb = putBlockRect (x/5-20) (x/5+20) (h/2-20) (h/2+20)
|
||||
@@ -704,7 +708,7 @@ slowDoorRoom = do
|
||||
-- ,PutSwitchDoor (dim $ light red) butPos butRot (0,h) (x,h)
|
||||
]
|
||||
fmap connectRoom (filterLinks cond =<< (changeLinkTo cond2
|
||||
$ set rmPS ([PS (0,0) 0 but] ++ crits ++ pillars ++ barrels)
|
||||
$ set rmPS ([PS (0,0) 0 but] ++ crits ++ pillars ++ barrels ++ lsources)
|
||||
$ roomRect x y
|
||||
))
|
||||
longRoom :: RandomGen g => State g Room
|
||||
@@ -877,6 +881,7 @@ spawnerRoom = do
|
||||
let plmnts = [PS (x/4, y/4) (pi/2) $ PutCrit spawnerCrit
|
||||
-- ,PS (0,0) 0 $ PutWindowBlock (x/2,0) (x/2,y-60)
|
||||
,wl
|
||||
,PS (x/2, y-10) 0 basicLS
|
||||
]
|
||||
let f ((lx,_),_) = lx < x/2-5
|
||||
roomWithSpawner <- randomiseLinks =<< (filterLinks f $ set rmPS plmnts $ roomRect' x y 2 2)
|
||||
|
||||
@@ -1020,7 +1020,7 @@ moveFlame rotd w pt =
|
||||
((:) $ Flaming (div time 10) sp p ep)
|
||||
hiteff = _btHitEffect' pt pt
|
||||
thepic p' = pictures $ reverse [ pic p' , piu p' , pi2 p' , glow p' ]
|
||||
pic p' = setLayer 2 $ onLayerL [levLayer UPtLayer,6] $ uncurry translate (prot3 p')
|
||||
pic p' = setLayer 1 $ onLayerL [levLayer UPtLayer,6] $ uncurry translate (prot3 p')
|
||||
$ rotate (pi * 0.5 + argV rotd)
|
||||
$ scale scaleChange 1
|
||||
-- $ color white
|
||||
@@ -1030,7 +1030,7 @@ moveFlame rotd w pt =
|
||||
]
|
||||
-- $ rotate (radToDeg (fromIntegral time * 10))
|
||||
-- $ polygon [(-5,-2),(5,-2),(5,2),(-5,2)]
|
||||
pi2 p' = setLayer 2 $ onLayerL [levLayer UPtLayer,4] $ uncurry translate (prot p')
|
||||
pi2 p' = setLayer 1 $ onLayerL [levLayer UPtLayer,4] $ uncurry translate (prot p')
|
||||
-- $ rotate ( (fromIntegral time * 5))
|
||||
$ rotate (pi * 0.5 + argV rotd)
|
||||
-- $ color (mixColors 0.5 0.5 orange white)
|
||||
@@ -1659,8 +1659,8 @@ moveLaser phaseV pos dir mcid w pt
|
||||
(reflectDir wl) Nothing
|
||||
_ -> id
|
||||
pic = pictures [ fadeLine sp (head ps) 0.2 40 yellow
|
||||
, setLayer 2 $ color (withAlpha 0.9 white) $ vThickLine (sp:ps)
|
||||
, setLayer 2 $ color (withAlpha 0.5 yellow) $ vvThickLine (sp:ps)
|
||||
, setLayer 1 $ color (withAlpha 0.9 white) $ vThickLine (sp:ps)
|
||||
, setLayer 1 $ color (withAlpha 0.5 yellow) $ vvThickLine (sp:ps)
|
||||
]
|
||||
-- case thHit of
|
||||
-- Nothing ->
|
||||
@@ -1681,7 +1681,7 @@ moveLaser phaseV pos dir mcid w pt
|
||||
-- op = lp +.+ 50 *.* normalizeV (lp -.- lp')
|
||||
|
||||
fadeLine :: Point2 -> Point2 -> Float -> Float -> Color -> Picture
|
||||
fadeLine sp ep alph width col = setLayer 2 $
|
||||
fadeLine sp ep alph width col = setLayer 1 $
|
||||
polygonCol [(sp , ca)
|
||||
,(sp +.+ n , cb)
|
||||
,(ep +.+ n , cb)
|
||||
@@ -2071,7 +2071,7 @@ moveTeslaArc p d i w =
|
||||
$ set randGen g
|
||||
$ createSpark 8 nc q2 (argV sv + d1) Nothing
|
||||
$ foldr damCrs w hitCrs
|
||||
where pic = setLayer 2 $ pictures
|
||||
where pic = setLayer 1 $ pictures
|
||||
[ onLayer PtLayer $ color (f2 nc) $ line ps'
|
||||
, onLayer UPtLayer $ color (withAlpha 0.02 cyan) $ lineOfThickness 20 ps'
|
||||
, onLayer UPtLayer $ color (withAlpha 0.02 cyan) $ lineOfThickness 25 ps'
|
||||
|
||||
@@ -595,7 +595,7 @@ mvGenBullet' w bt
|
||||
wth = _btWidth' bt
|
||||
t = _btTimer' bt
|
||||
|
||||
bulLine c w = setLayer 2 . bulLinea c w
|
||||
bulLine c w = setLayer 1 . bulLinea c w
|
||||
|
||||
bulLinea :: Color -> Float -> [Point2] -> Picture
|
||||
bulLinea _ _ [] = blank
|
||||
|
||||
+1
-1
@@ -158,7 +158,7 @@ circle rad = thickArc 0 (2*pi) rad 1
|
||||
|
||||
text :: String -> Picture
|
||||
{-# INLINE text #-}
|
||||
text = Text 2
|
||||
text = Text 1
|
||||
|
||||
line :: [Point2] -> Picture
|
||||
{-# INLINE line #-}
|
||||
|
||||
@@ -309,17 +309,19 @@ renderPicture' pdata rot zoom (tranx,trany) (winx,winy) wallPoints lightPoints p
|
||||
|
||||
-- draw picture
|
||||
-- set drawing for on top
|
||||
blendFuncSeparate $= ((SrcAlphaSaturate, OneMinusSrcAlpha), (Zero,One))
|
||||
clear [DepthBuffer]
|
||||
blendFuncSeparate $= ((SrcAlphaSaturate, OneMinusSrcAlpha), (Zero,One))
|
||||
clear [DepthBuffer]
|
||||
|
||||
-- draw layer 0
|
||||
renderTree pdata rot zoom (tranx,trany) (winx,winy) (picToFTree 0 pic)
|
||||
|
||||
renderTree pdata rot zoom (tranx,trany) (winx,winy) $ picToFTree 1 pic
|
||||
|
||||
-- reset blend so that light map doesn't apply
|
||||
blendFunc $= (SrcAlpha,OneMinusSrcAlpha)
|
||||
|
||||
renderTree pdata rot zoom (tranx,trany) (winx,winy) $ picToFTree 1 pic
|
||||
-- set drawing for on top
|
||||
blendFuncSeparate $= ((SrcAlphaSaturate, OneMinusSrcAlpha), (Zero,One))
|
||||
|
||||
renderTree pdata rot zoom (tranx,trany) (winx,winy) $ picToFTree 2 pic
|
||||
--
|
||||
---- poke necessary data
|
||||
|
||||
Reference in New Issue
Block a user