Commit before attempting to remove ptDraw field
This commit is contained in:
@@ -636,6 +636,15 @@ data Particle
|
|||||||
{ _ptDraw :: Particle -> Picture
|
{ _ptDraw :: Particle -> Picture
|
||||||
, _ptUpdate :: World -> Particle -> (World, Maybe Particle)
|
, _ptUpdate :: World -> Particle -> (World, Maybe Particle)
|
||||||
}
|
}
|
||||||
|
| BlipParticle
|
||||||
|
{ _ptDraw :: Particle -> Picture
|
||||||
|
, _ptColor :: Color
|
||||||
|
, _ptTimer :: Int
|
||||||
|
, _ptMaxTime :: Int
|
||||||
|
, _ptUpdate :: World -> Particle -> (World, Maybe Particle)
|
||||||
|
, _ptRad :: Float
|
||||||
|
, _ptPos :: Point2
|
||||||
|
}
|
||||||
| RadarCircleParticle
|
| RadarCircleParticle
|
||||||
{ _ptDraw :: Particle -> Picture
|
{ _ptDraw :: Particle -> Picture
|
||||||
, _ptUpdate :: World -> Particle -> (World, Maybe Particle)
|
, _ptUpdate :: World -> Particle -> (World, Maybe Particle)
|
||||||
|
|||||||
@@ -52,10 +52,27 @@ drawPulse col pt = setLayer DebugLayer $ pictures sweepPics
|
|||||||
x = _ptTimer pt
|
x = _ptTimer pt
|
||||||
{- | Radar blip at a point. -}
|
{- | Radar blip at a point. -}
|
||||||
blipAt :: Float -> Point2 -> Color -> Int -> Particle
|
blipAt :: Float -> Point2 -> Color -> Int -> Particle
|
||||||
blipAt r p col i = Particle
|
blipAt r p col i = BlipParticle
|
||||||
{_ptDraw = const blank
|
{_ptDraw = drawBlip
|
||||||
,_ptUpdate = mvBlip r p col i i
|
,_ptUpdate = \w pt -> if _ptTimer pt <= 0 then (w,Nothing) else (w,Just $ pt & ptTimer -~ 1)
|
||||||
|
,_ptColor = col
|
||||||
|
,_ptTimer = i
|
||||||
|
,_ptMaxTime = i
|
||||||
|
,_ptRad = r
|
||||||
|
,_ptPos = p
|
||||||
}
|
}
|
||||||
|
drawBlip :: Particle -> Picture
|
||||||
|
drawBlip pt = setDepth (-0.5)
|
||||||
|
. setLayer DebugLayer
|
||||||
|
. uncurryV translate p
|
||||||
|
. color (withAlpha (fromIntegral t / fromIntegral maxt) col)
|
||||||
|
$ circleSolid r
|
||||||
|
where
|
||||||
|
p = _ptPos pt
|
||||||
|
t = _ptTimer pt
|
||||||
|
r = _ptRad pt
|
||||||
|
col = _ptColor pt
|
||||||
|
maxt = _ptMaxTime pt
|
||||||
mvBlip :: Float
|
mvBlip :: Float
|
||||||
-> Point2 -> Color
|
-> Point2 -> Color
|
||||||
-> Int -- ^ Max possible timer value
|
-> Int -- ^ Max possible timer value
|
||||||
|
|||||||
+1
-1
@@ -27,7 +27,7 @@ import Graphics.Rendering.OpenGL hiding (color,scale,translate,rotate)
|
|||||||
import qualified SDL
|
import qualified SDL
|
||||||
import qualified Data.Vector.Unboxed.Mutable as UMV
|
import qualified Data.Vector.Unboxed.Mutable as UMV
|
||||||
import Graphics.GL.Core43
|
import Graphics.GL.Core43
|
||||||
import qualified Streaming.Prelude as S
|
--import qualified Streaming.Prelude as S
|
||||||
|
|
||||||
doDrawing :: RenderData -> Universe -> IO Word32
|
doDrawing :: RenderData -> Universe -> IO Word32
|
||||||
doDrawing pdata u = do
|
doDrawing pdata u = do
|
||||||
|
|||||||
@@ -39,24 +39,25 @@ import qualified Streaming.Prelude as S
|
|||||||
import qualified Data.Graph.Inductive as FGL
|
import qualified Data.Graph.Inductive as FGL
|
||||||
import qualified Data.Set as Set
|
import qualified Data.Set as Set
|
||||||
import Padding
|
import Padding
|
||||||
--import Data.Foldable
|
import Data.Foldable
|
||||||
|
|
||||||
|
singleSPic :: SPic -> SPic
|
||||||
singleSPic = id
|
singleSPic = id
|
||||||
|
|
||||||
worldSPic :: Configuration -> World -> SPic
|
worldSPic :: Configuration -> World -> SPic
|
||||||
worldSPic cfig w
|
worldSPic cfig w
|
||||||
= singleSPic (mempty, extraPics cfig w)
|
= singleSPic (mempty, extraPics cfig w)
|
||||||
<> f (dbArg _prDraw) (filtOn' _prPos _props)
|
<> foldup (dbArg _prDraw) (filtOn' _prPos _props)
|
||||||
<> f (shiftDraw _blPos _blDir _blDraw) (filtOn' _blPos _blocks)
|
<> foldup (shiftDraw _blPos _blDir _blDraw) (filtOn' _blPos _blocks)
|
||||||
<> f (shiftDraw _fsPos _fsDir (const _fsSPic)) (filtOn' _fsPos _shapes)
|
<> foldup (shiftDraw _fsPos _fsDir (const _fsSPic)) (filtOn' _fsPos _shapes)
|
||||||
<> f (dbArg _cpPict) (filtOn' _cpPos _corpses)
|
<> foldup (dbArg _cpPict) (filtOn' _cpPos _corpses)
|
||||||
<> f (dbArg _crPict) (filtOn' _crPos _creatures)
|
<> foldup (dbArg _crPict) (filtOn' _crPos _creatures)
|
||||||
<> f floorItemSPic (filtOn' _flItPos _floorItems)
|
<> foldup floorItemSPic (filtOn' _flItPos _floorItems)
|
||||||
<> f btSPic (filtOn' _btPos _buttons)
|
<> foldup btSPic (filtOn' _btPos _buttons)
|
||||||
<> f mcSPic (filtOn' _mcPos _machines)
|
<> foldup mcSPic (filtOn' _mcPos _machines)
|
||||||
<> singleSPic (anyTargeting cfig w)
|
<> singleSPic (anyTargeting cfig w)
|
||||||
where
|
where
|
||||||
f = foldMap
|
foldup = foldMap'
|
||||||
filtOn' f g = IM.filter (pointIsClose . f) (g w)
|
filtOn' f g = IM.filter (pointIsClose . f) (g w)
|
||||||
--filtOn' f g = S.filter (pointIsClose . f) $ S.each (g w)
|
--filtOn' f g = S.filter (pointIsClose . f) $ S.each (g w)
|
||||||
pointIsClose = cullPoint cfig w
|
pointIsClose = cullPoint cfig w
|
||||||
|
|||||||
+2
-1
@@ -140,7 +140,8 @@ polyToTris'' _ = []
|
|||||||
polyToTris :: [s] -> [s]
|
polyToTris :: [s] -> [s]
|
||||||
{-# INLINABLE polyToTris #-}
|
{-# INLINABLE polyToTris #-}
|
||||||
--polyToTris (x:xs) = foldr (f x) [] $ foldPairs xs
|
--polyToTris (x:xs) = foldr (f x) [] $ foldPairs xs
|
||||||
polyToTris (x:xs) = foldr (f x) [] $ zip xs $ tail xs
|
polyToTris (x:xs) = foldl' (flip $ f x) [] $ zip xs $ tail xs
|
||||||
|
--polyToTris (x:xs) = foldr (f x) [] $ zip xs $ tail xs
|
||||||
where
|
where
|
||||||
f a (b,c) ls = a:b:c:ls
|
f a (b,c) ls = a:b:c:ls
|
||||||
polyToTris _ = []
|
polyToTris _ = []
|
||||||
|
|||||||
+11
-11
@@ -1,6 +1,6 @@
|
|||||||
module Shader.Poke
|
module Shader.Poke
|
||||||
( pokeVerxs
|
( pokeVerxs
|
||||||
, pokeSPics
|
-- , pokeSPics
|
||||||
, pokeLayVerxs
|
, pokeLayVerxs
|
||||||
, pokeArrayOff
|
, pokeArrayOff
|
||||||
-- , pokePoint33s
|
-- , pokePoint33s
|
||||||
@@ -13,7 +13,7 @@ import Shader.Parameters
|
|||||||
import Picture.Data
|
import Picture.Data
|
||||||
import Shape.Data
|
import Shape.Data
|
||||||
import Geometry.Data
|
import Geometry.Data
|
||||||
import ShapePicture
|
--import ShapePicture
|
||||||
|
|
||||||
import Graphics.Rendering.OpenGL hiding (color,scale,translate,rotate)
|
import Graphics.Rendering.OpenGL hiding (color,scale,translate,rotate)
|
||||||
import Foreign
|
import Foreign
|
||||||
@@ -83,15 +83,15 @@ pokeW ptr i' ((V2 a b,V2 c d),V4 e f g h) = do
|
|||||||
pokeElemOff ptr (i + 7) h
|
pokeElemOff ptr (i + 7) h
|
||||||
return $ i' + 1
|
return $ i' + 1
|
||||||
|
|
||||||
pokeSPics
|
--pokeSPics
|
||||||
:: MV.MVector (PrimState IO) FullShader
|
-- :: MV.MVector (PrimState IO) FullShader
|
||||||
-> UMV.MVector (PrimState IO) Int
|
-- -> UMV.MVector (PrimState IO) Int
|
||||||
-> Ptr Float -> Ptr GLushort -> Ptr GLushort
|
-- -> Ptr Float -> Ptr GLushort -> Ptr GLushort
|
||||||
-> Stream (Of SPic) IO ()
|
-- -> Stream (Of SPic) IO ()
|
||||||
-> IO (Int,Int,Int)
|
-- -> IO (Int,Int,Int)
|
||||||
pokeSPics vbos counts ptr iptr ieptr =
|
--pokeSPics vbos counts ptr iptr ieptr =
|
||||||
S.foldM_ (\is (sh,pic) -> pokeLayVerxs vbos counts pic >> pokeShape' ptr iptr ieptr is sh)
|
-- S.foldM_ (\is (sh,pic) -> pokeLayVerxs vbos counts pic >> pokeShape' ptr iptr ieptr is sh)
|
||||||
(return (0,0,0)) return
|
-- (return (0,0,0)) return
|
||||||
|
|
||||||
|
|
||||||
pokeShape :: Ptr Float -> Ptr GLushort -> Ptr GLushort
|
pokeShape :: Ptr Float -> Ptr GLushort -> Ptr GLushort
|
||||||
|
|||||||
+3
-1
@@ -21,12 +21,14 @@ module Shape
|
|||||||
import Geometry
|
import Geometry
|
||||||
import Shape.Data
|
import Shape.Data
|
||||||
import Color
|
import Color
|
||||||
import qualified Streaming.Prelude as S
|
--import qualified Streaming.Prelude as S
|
||||||
|
|
||||||
singleShape :: ShapeObj -> Shape
|
singleShape :: ShapeObj -> Shape
|
||||||
{-# INLINE singleShape #-}
|
{-# INLINE singleShape #-}
|
||||||
singleShape = (:[])
|
singleShape = (:[])
|
||||||
|
|
||||||
|
shMap :: (ShapeObj -> ShapeObj) -> Shape -> Shape
|
||||||
|
{-# INLINE shMap #-}
|
||||||
shMap = map
|
shMap = map
|
||||||
|
|
||||||
emptySH :: Shape
|
emptySH :: Shape
|
||||||
|
|||||||
+2
-1
@@ -19,10 +19,11 @@ import Geometry
|
|||||||
|
|
||||||
import Data.Bifunctor
|
import Data.Bifunctor
|
||||||
import Control.Lens
|
import Control.Lens
|
||||||
import qualified Streaming.Prelude as S
|
--import qualified Streaming.Prelude as S
|
||||||
|
|
||||||
type SPic = (Shape, Picture)
|
type SPic = (Shape, Picture)
|
||||||
|
|
||||||
|
shMap :: (ShapeObj -> ShapeObj) -> Shape -> Shape
|
||||||
shMap = map
|
shMap = map
|
||||||
|
|
||||||
-- should all this be inlined/inlinable?
|
-- should all this be inlined/inlinable?
|
||||||
|
|||||||
Reference in New Issue
Block a user