From 8a474f6eddcd7b30af9dff035b6dca7d8385c4fe Mon Sep 17 00:00:00 2001 From: nek0 Date: Tue, 31 Jul 2018 13:30:17 +0200 Subject: [PATCH] added plant and reworked clusters --- assets/misc/plant1.kra | Bin 0 -> 76791 bytes assets/misc/plant1.png | Bin 0 -> 828 bytes assets/{misc => table}/table1.kra | Bin assets/{misc => table}/table1.png | Bin assets/{misc => table}/table2.kra | Bin assets/{misc => table}/table2.png | Bin assets/{misc => table}/table3.kra | Bin assets/{misc => table}/table3.png | Bin assets/{misc => table}/table4.kra | Bin assets/{misc => table}/table4.png | Bin assets/{misc => table}/tableCorner.kra | Bin assets/{misc => table}/tableCorner.png | Bin assets/{misc => table}/tablec1.kra | Bin assets/{misc => table}/tablec1.png | Bin assets/{misc => table}/tablec2.kra | Bin assets/{misc => table}/tablec2.png | Bin assets/{misc => table}/tablec3.kra | Bin assets/{misc => table}/tablec3.png | Bin assets/{misc => table}/tablec4.kra | Bin assets/{misc => table}/tablec4.png | Bin src/Interior.hs | 4 +- src/Load.hs | 34 +++++----- src/MainGame/WorldMap.hs | 4 +- src/Types/Collidible.hs | 13 ++-- src/Types/ImgId.hs | 19 +++--- src/Types/Interior.hs | 82 +++++++++++++------------ 26 files changed, 86 insertions(+), 70 deletions(-) create mode 100644 assets/misc/plant1.kra create mode 100644 assets/misc/plant1.png rename assets/{misc => table}/table1.kra (100%) rename assets/{misc => table}/table1.png (100%) rename assets/{misc => table}/table2.kra (100%) rename assets/{misc => table}/table2.png (100%) rename assets/{misc => table}/table3.kra (100%) rename assets/{misc => table}/table3.png (100%) rename assets/{misc => table}/table4.kra (100%) rename assets/{misc => table}/table4.png (100%) rename assets/{misc => table}/tableCorner.kra (100%) rename assets/{misc => table}/tableCorner.png (100%) rename assets/{misc => table}/tablec1.kra (100%) rename assets/{misc => table}/tablec1.png (100%) rename assets/{misc => table}/tablec2.kra (100%) rename assets/{misc => table}/tablec2.png (100%) rename assets/{misc => table}/tablec3.kra (100%) rename assets/{misc => table}/tablec3.png (100%) rename assets/{misc => table}/tablec4.kra (100%) rename assets/{misc => table}/tablec4.png (100%) diff --git a/assets/misc/plant1.kra b/assets/misc/plant1.kra new file mode 100644 index 0000000000000000000000000000000000000000..4bb98ecd138b0d24d496b3aed2aa0ae788b6c734 GIT binary patch literal 76791 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 size a `compare` size b) ( L.filter - (\a -> clusterRoom a == roomType && size a <= size bnds) + (\a -> roomType `elem` clusterRoom a && size a <= size bnds) [minBound .. maxBound] :: [Cluster]) ) roomType = fst (head $ L.sortBy @@ -106,7 +106,7 @@ placeInteriorIO imat imgmat irp graph = else if (pr + nrows cmat - 1 > fst (matmax bnds) || pc + ncols cmat - 1 > snd (matmax bnds) || - any (/= clusterRoom appl) + any (`notElem` clusterRoom appl) (M.toList (M.submatrix pr (pr + nrows cmat - 1) pc (pc + ncols cmat - 1) diff --git a/src/Load.hs b/src/Load.hs index 2face8a..b8e409f 100644 --- a/src/Load.hs +++ b/src/Load.hs @@ -59,7 +59,7 @@ loadFork -> MVar (Float, T.Text) -> IO () loadFork ws win glc nvg future progress = do - let stateSteps = 30 + let stateSteps = 31 increment = 1 / stateSteps SDL.glMakeCurrent win glc modifyMVar_ progress (return . (\(p, _) -> @@ -126,52 +126,57 @@ loadFork ws win glc nvg future progress = do ( p + increment , "Loading asset \"table1\"" ))) - mmisctable1 <- createImage nvg (FileName "assets/misc/table1.png") 0 + mtable1 <- createImage nvg (FileName "assets/table/table1.png") 0 modifyMVar_ progress (return . (\(p, _) -> ( p + increment , "Loading asset \"table2\"" ))) - mmisctable2 <- createImage nvg (FileName "assets/misc/table2.png") 0 + mtable2 <- createImage nvg (FileName "assets/table/table2.png") 0 modifyMVar_ progress (return . (\(p, _) -> ( p + increment , "Loading asset \"table3\"" ))) - mmisctable3 <- createImage nvg (FileName "assets/misc/table3.png") 0 + mtable3 <- createImage nvg (FileName "assets/table/table3.png") 0 modifyMVar_ progress (return . (\(p, _) -> ( p + increment , "Loading asset \"table4\"" ))) - mmisctable4 <- createImage nvg (FileName "assets/misc/table4.png") 0 + mtable4 <- createImage nvg (FileName "assets/table/table4.png") 0 modifyMVar_ progress (return . (\(p, _) -> ( p + increment , "Loading asset \"tableC1\"" ))) - mmisctablec1 <- createImage nvg (FileName "assets/misc/tablec1.png") 0 + mtablec1 <- createImage nvg (FileName "assets/table/tablec1.png") 0 modifyMVar_ progress (return . (\(p, _) -> ( p + increment , "Loading asset \"tableC2\"" ))) - mmisctablec2 <- createImage nvg (FileName "assets/misc/tablec2.png") 0 + mtablec2 <- createImage nvg (FileName "assets/table/tablec2.png") 0 modifyMVar_ progress (return . (\(p, _) -> ( p + increment , "Loading asset \"tableC3\"" ))) - mmisctablec3 <- createImage nvg (FileName "assets/misc/tablec3.png") 0 + mtablec3 <- createImage nvg (FileName "assets/table/tablec3.png") 0 modifyMVar_ progress (return . (\(p, _) -> ( p + increment , "Loading asset \"tableC4\"" ))) - mmisctablec4 <- createImage nvg (FileName "assets/misc/tablec4.png") 0 + mtablec4 <- createImage nvg (FileName "assets/table/tablec4.png") 0 modifyMVar_ progress (return . (\(p, _) -> ( p + increment , "Loading asset \"tableCorner\"" ))) - mmisctableC <- createImage nvg (FileName "assets/misc/tableCorner.png") 0 + mtableC <- createImage nvg (FileName "assets/table/tableCorner.png") 0 modifyMVar_ progress (return . (\(p, _) -> ( p + increment , "Loading asset \"flipchart\"" ))) mmiscFlipchart <- createImage nvg (FileName "assets/misc/flipchart.png") 0 + modifyMVar_ progress (return . (\(p, _) -> + ( p + increment + , "Loading asset \"plant1\"" + ))) + mmiscPlant1 <- createImage nvg (FileName "assets/misc/plant1.png") 0 modifyMVar_ progress (return . (\(p, _) -> ( p + increment , "Loading Animation \"intruder: standing\"" @@ -180,9 +185,10 @@ loadFork ws win glc nvg future progress = do mwallcornern, mwallcornere, mwallcorners, mwallcornerw, mwalltne, mwalltse, mwalltsw, mwalltnw, mwallcross, mmiscbox1, - mmisctable1, mmisctable2, mmisctable3, mmisctable4, mmisctableC, - mmisctablec1, mmisctablec2, mmisctablec3, mmisctablec4, - mmiscFlipchart + mtable1, mtable2, mtable3, mtable4, mtableC, + mtablec1, mtablec2, mtablec3, mtablec4, + mmiscFlipchart, + mmiscPlant1 ] when (any isNothing mimgs) $ do liftIO $logIO Error "Failed to load image assets" @@ -191,7 +197,7 @@ loadFork ws win glc nvg future progress = do -- (zipWith (\a b -> (a, [b])) [0..] $ [ImgIntrE .. ImgIntrN] ++ [ImgIntrNE]) let imgs = zipWith (\a b -> (a, fromJust b)) [ ImgWallAsc - .. ImgMiscFlipchart + .. ImgMiscPlant1 ] mimgs directions = [E .. N] ++ [NE] diff --git a/src/MainGame/WorldMap.hs b/src/MainGame/WorldMap.hs index 770236b..dec319f 100644 --- a/src/MainGame/WorldMap.hs +++ b/src/MainGame/WorldMap.hs @@ -82,7 +82,7 @@ loadMapFork ud future progress = do fc = FloorConfig (10, 10) [(5, 5), (5, 45)] - (50, 75) + (50, 50) _ <- liftIO $ swapMVar progress (1 / loadSteps, "Building floor") (mat, gr) <- buildHallFloorIO fc progress (1 / loadSteps) _ <- liftIO $ swapMVar progress (11 / loadSteps, "Converting to images") @@ -99,7 +99,7 @@ loadMapFork ud future progress = do _ <- liftIO $ swapMVar progress (13 / loadSteps, "Placing NPCs") logIO A.Debug ("number of reachpoints: " ++ show (length rps)) let nnex = Prelude.filter (\p -> pointType p /= RoomExit) rps - npcposs <- placeNPCs inter mat rps 10 -- (length $ filter (\a -> pointType a == Table) nnex) + npcposs <- placeNPCs inter mat rps 50 -- (length $ filter (\a -> pointType a == Table) nnex) _ <- liftIO $ swapMVar progress (14 / loadSteps, "Preparing MindMap graph") A.logIO A.Debug $ "number of placed NPCs: " ++ show (length npcposs) !(mmintmat, mmgraph) <- buildFloorMap . springField <$> diff --git a/src/Types/Collidible.hs b/src/Types/Collidible.hs index 09722aa..0f26797 100644 --- a/src/Types/Collidible.hs +++ b/src/Types/Collidible.hs @@ -60,25 +60,28 @@ instance Collidible ImgId where [ Boundaries (0.34, 0) (0.66, 1) , Boundaries (0, 0.34) (1, 0.66) ] - collisionObstacle ImgMiscTable1 = + collisionObstacle ImgTable1 = [ Boundaries (0, 0.34) (1, 1) ] - collisionObstacle ImgMiscTable2 = + collisionObstacle ImgTable2 = [ Boundaries (0, 0) (0.63, 1) ] - collisionObstacle ImgMiscTable3 = + collisionObstacle ImgTable3 = [ Boundaries (0, 0) (1, 0.63) ] - collisionObstacle ImgMiscTable4 = + collisionObstacle ImgTable4 = [ Boundaries (0.34, 0) (1, 1) ] - collisionObstacle ImgMiscTableCorner = + collisionObstacle ImgTableCorner = [ Boundaries (0, 0) (0.63, 1) , Boundaries (0, 0.34) (1, 1) ] collisionObstacle ImgMiscFlipchart = [ Boundaries (0, 7/36) (18/36, 28/36) ] + collisionObstacle ImgMiscPlant1 = + [ Boundaries (9/36, 9/36) (27/36, 27/26) + ] collisionObstacle ImgEmptyNoWalk = [ Boundaries (0, 0) (1, 1) ] collisionObstacle _ = [] diff --git a/src/Types/ImgId.hs b/src/Types/ImgId.hs index 3d598c1..0b5d29d 100644 --- a/src/Types/ImgId.hs +++ b/src/Types/ImgId.hs @@ -17,16 +17,17 @@ data ImgId | ImgWallTNW | ImgWallCross | ImgMiscBox1 - | ImgMiscTable1 - | ImgMiscTable2 - | ImgMiscTable3 - | ImgMiscTable4 - | ImgMiscTableCorner - | ImgMiscTableC1 - | ImgMiscTableC2 - | ImgMiscTableC3 - | ImgMiscTableC4 + | ImgTable1 + | ImgTable2 + | ImgTable3 + | ImgTable4 + | ImgTableCorner + | ImgTableC1 + | ImgTableC2 + | ImgTableC3 + | ImgTableC4 | ImgMiscFlipchart + | ImgMiscPlant1 -- | ImgIntrNE -- | ImgIntrE -- | ImgIntrSE diff --git a/src/Types/Interior.hs b/src/Types/Interior.hs index 65161a5..b5a8a77 100644 --- a/src/Types/Interior.hs +++ b/src/Types/Interior.hs @@ -23,6 +23,7 @@ data Cluster | ClusterFlipchart | ClusterConferenceTable1 | ClusterConferenceTable2 + | ClusterPlant1 deriving (Enum, Bounded) clusterMat :: Cluster -> Matrix (Maybe ImgId) @@ -34,41 +35,41 @@ clusterMat ClusterBox1 = ] clusterMat ClusterTable1 = M.fromLists - [[Just ImgEmpty, Just ImgMiscTable1]] + [[Just ImgEmpty, Just ImgTable1]] clusterMat ClusterTable2 = M.fromLists - [ [Just ImgMiscTable2] + [ [Just ImgTable2] , [Just ImgEmpty] ] clusterMat ClusterTable3 = M.fromLists - [[Just ImgMiscTable3, Just ImgEmpty]] + [[Just ImgTable3, Just ImgEmpty]] clusterMat ClusterTable4 = M.fromLists [ [Just ImgEmpty] - , [Just ImgMiscTable4] + , [Just ImgTable4] ] clusterMat ClusterCornerTable = M.fromLists - [ [Just ImgMiscTable2, Just ImgMiscTableCorner] - , [Just ImgEmpty, Just ImgMiscTable1] + [ [Just ImgTable2, Just ImgTableCorner] + , [Just ImgEmpty, Just ImgTable1] ] clusterMat ClusterTableGroup = M.fromLists - [ [ Just ImgEmpty, Just ImgMiscTable2, Just ImgMiscTableCorner - , Just ImgEmpty, Just ImgMiscTable2, Just ImgMiscTableCorner + [ [ Just ImgEmpty, Just ImgTable2, Just ImgTableCorner + , Just ImgEmpty, Just ImgTable2, Just ImgTableCorner ] - , [ Just ImgEmpty, Just ImgEmpty, Just ImgMiscTable1 - , Just ImgEmpty, Just ImgEmpty, Just ImgMiscTable1 + , [ Just ImgEmpty, Just ImgEmpty, Just ImgTable1 + , Just ImgEmpty, Just ImgEmpty, Just ImgTable1 ] , [ Just ImgEmpty, Just ImgEmpty, Just ImgEmpty , Just ImgEmpty, Just ImgEmpty, Just ImgEmpty ] , [ Nothing, Nothing, Nothing - , Just ImgEmpty, Just ImgMiscTable2, Just ImgMiscTableCorner + , Just ImgEmpty, Just ImgTable2, Just ImgTableCorner ] , [ Nothing, Nothing, Nothing - , Just ImgEmpty, Just ImgEmpty, Just ImgMiscTable1 + , Just ImgEmpty, Just ImgEmpty, Just ImgTable1 ] ] clusterMat ClusterCopier = @@ -86,17 +87,17 @@ clusterMat ClusterConferenceTable1 = [ [ Just ImgEmpty, Just ImgEmpty, Just ImgEmpty, Just ImgEmpty , Just ImgEmpty, Just ImgEmpty, Just ImgEmpty, Just ImgEmpty ] - , [ Just ImgEmpty, Just ImgMiscTableC4, Just ImgMiscTable4, Just ImgMiscTable4 - , Just ImgMiscTable4, Just ImgMiscTable4, Just ImgMiscTableC3, Just ImgEmpty + , [ Just ImgEmpty, Just ImgTableC4, Just ImgTable4, Just ImgTable4 + , Just ImgTable4, Just ImgTable4, Just ImgTableC3, Just ImgEmpty ] - , [ Just ImgEmpty, Just ImgMiscTable1, Just ImgEmpty, Just ImgEmpty - , Just ImgEmpty, Just ImgEmpty, Just ImgMiscTable3, Just ImgEmpty + , [ Just ImgEmpty, Just ImgTable1, Just ImgEmpty, Just ImgEmpty + , Just ImgEmpty, Just ImgEmpty, Just ImgTable3, Just ImgEmpty ] - , [ Just ImgEmpty, Just ImgMiscTable1, Just ImgEmpty, Just ImgEmpty - , Just ImgEmpty, Just ImgEmpty, Just ImgMiscTable3, Just ImgEmpty + , [ Just ImgEmpty, Just ImgTable1, Just ImgEmpty, Just ImgEmpty + , Just ImgEmpty, Just ImgEmpty, Just ImgTable3, Just ImgEmpty ] - , [ Just ImgEmpty, Just ImgMiscTableC1, Just ImgMiscTable2, Just ImgMiscTable2 - , Just ImgMiscTable2, Just ImgMiscTable2, Just ImgMiscTableC2, Just ImgEmpty + , [ Just ImgEmpty, Just ImgTableC1, Just ImgTable2, Just ImgTable2 + , Just ImgTable2, Just ImgTable2, Just ImgTableC2, Just ImgEmpty ] , [ Just ImgEmpty, Just ImgEmpty, Just ImgEmpty, Just ImgEmpty , Just ImgEmpty, Just ImgEmpty, Just ImgEmpty, Just ImgEmpty @@ -107,32 +108,36 @@ clusterMat ClusterConferenceTable2 = [ [ Just ImgEmpty, Just ImgEmpty, Just ImgEmpty , Just ImgEmpty, Just ImgEmpty, Just ImgEmpty ] - , [ Just ImgEmpty, Just ImgMiscTableC4, Just ImgMiscTable4 - , Just ImgMiscTable4, Just ImgMiscTableC3, Just ImgEmpty + , [ Just ImgEmpty, Just ImgTableC4, Just ImgTable4 + , Just ImgTable4, Just ImgTableC3, Just ImgEmpty ] - , [ Just ImgEmpty, Just ImgMiscTable1, Just ImgEmpty - , Just ImgEmpty, Just ImgMiscTable3, Just ImgEmpty + , [ Just ImgEmpty, Just ImgTable1, Just ImgEmpty + , Just ImgEmpty, Just ImgTable3, Just ImgEmpty ] - , [ Just ImgEmpty, Just ImgMiscTableC1, Just ImgMiscTable2 - , Just ImgMiscTable2, Just ImgMiscTableC2, Just ImgEmpty + , [ Just ImgEmpty, Just ImgTableC1, Just ImgTable2 + , Just ImgTable2, Just ImgTableC2, Just ImgEmpty ] , [ Just ImgEmpty, Just ImgEmpty, Just ImgEmpty , Just ImgEmpty, Just ImgEmpty, Just ImgEmpty ] ] +clusterMat ClusterPlant1 = + M.fromLists + [ [ Just ImgMiscPlant1 ] ] -clusterRoom :: Cluster -> TileState -clusterRoom ClusterBox1 = Offi -clusterRoom ClusterTable1 = Offi -clusterRoom ClusterTable2 = Offi -clusterRoom ClusterTable3 = Offi -clusterRoom ClusterTable4 = Offi -clusterRoom ClusterCornerTable = Offi -clusterRoom ClusterTableGroup = Offi -clusterRoom ClusterCopier = Offi -clusterRoom ClusterFlipchart = Offi -clusterRoom ClusterConferenceTable1 = Offi -clusterRoom ClusterConferenceTable2 = Offi +clusterRoom :: Cluster -> [TileState] +clusterRoom ClusterBox1 = [Offi] +clusterRoom ClusterTable1 = [Offi] +clusterRoom ClusterTable2 = [Offi] +clusterRoom ClusterTable3 = [Offi] +clusterRoom ClusterTable4 = [Offi] +clusterRoom ClusterCornerTable = [Offi] +clusterRoom ClusterTableGroup = [Offi] +clusterRoom ClusterCopier = [Offi] +clusterRoom ClusterFlipchart = [Offi] +clusterRoom ClusterConferenceTable1 = [Offi] +clusterRoom ClusterConferenceTable2 = [Offi] +clusterRoom ClusterPlant1 = [Offi, Hall] clusterPoints :: Cluster -> [ReachPoint] clusterPoints ClusterBox1 = [] @@ -180,6 +185,7 @@ clusterPoints ClusterConferenceTable2 = , ReachPoint Table (V2 5 3) NW , ReachPoint Table (V2 5 4) NW ] +clusterPoints _ = [] instance Size Cluster where size c =