aboutsummaryrefslogtreecommitdiff
path: root/src/Game/Entities.hs
diff options
context:
space:
mode:
authorJuan J. Martinez <jjm@usebox.net>2023-02-10 12:50:40 +0000
committerJuan J. Martinez <jjm@usebox.net>2023-02-10 12:50:40 +0000
commitcfc5b71c86a4927fa8d2294fce5e8b8264b4a3ca (patch)
tree091e64d3a936d28759f641627c96f5fd76bc595c /src/Game/Entities.hs
parent04c2839de5b860ff0efe957e2be9a21dbdfa329a (diff)
downloadspace-plat-hs-cfc5b71c86a4927fa8d2294fce5e8b8264b4a3ca.tar.gz
space-plat-hs-cfc5b71c86a4927fa8d2294fce5e8b8264b4a3ca.zip
Moved the entity spawn to Entity module
Diffstat (limited to 'src/Game/Entities.hs')
-rw-r--r--src/Game/Entities.hs15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/Game/Entities.hs b/src/Game/Entities.hs
index 7d29e41..36d25c1 100644
--- a/src/Game/Entities.hs
+++ b/src/Game/Entities.hs
@@ -1,8 +1,9 @@
-module Game.Entities (Entities, Entity, mkEntities, mkPlayer, mkEffect, add, updateAll, render) where
+module Game.Entities (Entities, Entity, mkEntities, updateAll, render) where
import Data.Foldable (traverse_)
import Data.IORef
import qualified Game.Controller as C
+import qualified Game.Map as M
import qualified Game.Sprites as S
import qualified SDL
@@ -56,11 +57,13 @@ data Entity = Entity
spawns :: [Spawn]
}
-mkEntities :: S.SpriteSheet -> Entities
-mkEntities sprites = Entities sprites []
-
-add :: Entities -> [Entity] -> Entities
-add (Entities sprites entities) es = Entities sprites (entities ++ es)
+mkEntities :: S.SpriteSheet -> M.Map -> IORef C.Controls -> IO Entities
+mkEntities sprites m controls = do
+ entities <- traverse toEntity $ M.objects m
+ pure $ Entities sprites entities
+ where
+ toEntity :: M.Object -> IO Entity
+ toEntity (M.PlayerEntity x y) = mkPlayer sprites x y controls (M.isBlocked m)
processSpawn :: S.SpriteSheet -> Spawn -> IO Entity
processSpawn sprites (DustEffectSpawn x y) = mkEffect sprites x y "dust"