diff --git a/src/Init.hs b/src/Init.hs index 0085603..730f4e6 100644 --- a/src/Init.hs +++ b/src/Init.hs @@ -39,7 +39,7 @@ foreign import ccall unsafe "glewInit" load :: IO UserData load = do _ <- glewInit - nvg <- createGL3 (S.fromList [StencilStrokes]) + nvg <- createGL3 (S.fromList [Antialias, StencilStrokes]) subs <- Subsystems <$> (Window <$> newTVarIO []) <*> (Mouse <$> newTVarIO []) diff --git a/src/Test.hs b/src/Test.hs index ac49ff5..5235da9 100644 --- a/src/Test.hs +++ b/src/Test.hs @@ -96,8 +96,8 @@ drawMap :: Affection UserData () drawMap = do ud <- getAffection let matrix = mapMat (stateData ud) - mapM_ (\(i, ls) -> mapM_ (uncurry $ drawTile i) (reverse $ zip [0..] ls)) - (zip [0..] (toLists matrix)) + mapM_ (\(i, ls) -> mapM_ (uncurry $ drawTile i) (reverse $ zip [1..] ls)) + (zip [1..] (toLists matrix)) updateMap :: Double -> Affection UserData () updateMap dt = do @@ -161,10 +161,10 @@ drawTile row col tile = do liftIO $ do save ctx beginPath ctx - let x = realToFrac $ 640 + ((fromIntegral col - pc + 1) + - (fromIntegral row - pr + 1)) * (tileWidth / 2) - y = realToFrac $ 360 - (tileHeight / 2) + ((fromIntegral row - pr + 1) - - (fromIntegral col - pc + 1)) * (tileHeight / 2) + let x = realToFrac $ 640 + ((fromIntegral col - pc) + + (fromIntegral row - pr)) * (tileWidth / 2) + y = realToFrac $ 360 - (tileHeight / 2) + ((fromIntegral row - pr) - + (fromIntegral col - pc)) * (tileHeight / 2) fillColor ctx (case tile of Wall -> rgba 128 128 128 255 Door -> rgba 255 128 128 255 @@ -182,67 +182,66 @@ drawTile row col tile = do closePath ctx fill ctx when (tile == Wall) $ do - let img = case neighWalls prow pcol mat of + let img = case neighWalls row col mat of 4 -> - assetImages ud Map.! ImgWallCross + assetImages ud Map.! ImgWallCross 3 - | M.safeGet (prow + 1) pcol mat /= Just Wall && - M.safeGet (prow + 1) pcol mat /= Just Door -> - assetImages ud Map.! ImgWallTNW - | M.safeGet prow (pcol + 1) mat /= Just Wall && - M.safeGet prow (pcol + 1) mat /= Just Door -> - assetImages ud Map.! ImgWallTSW - | M.safeGet (prow - 1) pcol mat /= Just Wall && - M.safeGet (prow - 1) pcol mat /= Just Door -> - assetImages ud Map.! ImgWallTSE - | otherwise -> - assetImages ud Map.! ImgWallTNE + | M.safeGet (row + 1) col mat /= Just Wall && + M.safeGet (row + 1) col mat /= Just Door -> + assetImages ud Map.! ImgWallTNW + | M.safeGet row (col + 1) mat /= Just Wall && + M.safeGet row (col + 1) mat /= Just Door -> + assetImages ud Map.! ImgWallTSW + | M.safeGet (row - 1) col mat /= Just Wall && + M.safeGet (row - 1) col mat /= Just Door -> + assetImages ud Map.! ImgWallTSE + | otherwise -> + assetImages ud Map.! ImgWallTNE 2 - | (M.safeGet (prow + 1) pcol mat == Just Wall || - M.safeGet (prow + 1) pcol mat == Just Door) && - (M.safeGet (prow - 1) pcol mat == Just Wall || - M.safeGet (prow - 1) pcol mat == Just Door) -> - assetImages ud Map.! ImgWallDesc - | (M.safeGet prow (pcol + 1) mat == Just Wall || - M.safeGet prow (pcol + 1) mat == Just Door) && - (M.safeGet prow (pcol - 1) mat == Just Wall || - M.safeGet prow (pcol - 1) mat == Just Door) -> - assetImages ud Map.! ImgWallAsc - | (M.safeGet (prow - 1) pcol mat == Just Wall || - M.safeGet (prow - 1) pcol mat == Just Door) && - (M.safeGet prow (pcol - 1) mat == Just Wall || - M.safeGet prow (pcol - 1) mat == Just Door) -> - assetImages ud Map.! ImgWallCornerW - | (M.safeGet prow (pcol - 1) mat == Just Wall || - M.safeGet prow (pcol - 1) mat == Just Door) && - (M.safeGet (prow + 1) pcol mat == Just Wall || - M.safeGet (prow + 1) pcol mat == Just Door) -> - assetImages ud Map.! ImgWallCornerS - | (M.safeGet (prow + 1) pcol mat == Just Wall || - M.safeGet (prow + 1) pcol mat == Just Door) && - (M.safeGet prow (pcol + 1) mat == Just Wall || - M.safeGet prow (pcol + 1) mat == Just Door) -> - assetImages ud Map.! ImgWallCornerE - | otherwise -> - assetImages ud Map.! ImgWallCornerN + | (M.safeGet (row + 1) col mat == Just Wall || + M.safeGet (row + 1) col mat == Just Door) && + (M.safeGet (row - 1) col mat == Just Wall || + M.safeGet (row - 1) col mat == Just Door) -> + assetImages ud Map.! ImgWallDesc + | (M.safeGet row (col + 1) mat == Just Wall || + M.safeGet row (col + 1) mat == Just Door) && + (M.safeGet row (col - 1) mat == Just Wall || + M.safeGet row (col - 1) mat == Just Door) -> + assetImages ud Map.! ImgWallAsc + | (M.safeGet (row - 1) col mat == Just Wall || + M.safeGet (row - 1) col mat == Just Door) && + (M.safeGet row (col - 1) mat == Just Wall || + M.safeGet row (col - 1) mat == Just Door) -> + assetImages ud Map.! ImgWallCornerW + | (M.safeGet row (col - 1) mat == Just Wall || + M.safeGet row (col - 1) mat == Just Door) && + (M.safeGet (row + 1) col mat == Just Wall || + M.safeGet (row + 1) col mat == Just Door) -> + assetImages ud Map.! ImgWallCornerS + | (M.safeGet (row + 1) col mat == Just Wall || + M.safeGet (row + 1) col mat == Just Door) && + (M.safeGet row (col + 1) mat == Just Wall || + M.safeGet row (col + 1) mat == Just Door) -> + assetImages ud Map.! ImgWallCornerE + | otherwise -> + assetImages ud Map.! ImgWallCornerN 1 - | M.safeGet (prow - 1) pcol mat == Just Wall || - M.safeGet (prow - 1) pcol mat == Just Door -> - assetImages ud Map.! ImgWallDesc - | M.safeGet (prow + 1) pcol mat == Just Wall || - M.safeGet (prow + 1) pcol mat == Just Door -> - assetImages ud Map.! ImgWallDesc - | M.safeGet prow (pcol + 1) mat == Just Wall || - M.safeGet prow (pcol + 1) mat == Just Door -> - assetImages ud Map.! ImgWallAsc - | otherwise -> - assetImages ud Map.! ImgWallAsc + | M.safeGet (row - 1) col mat == Just Wall || + M.safeGet (row - 1) col mat == Just Door -> + assetImages ud Map.! ImgWallDesc + | M.safeGet (row + 1) col mat == Just Wall || + M.safeGet (row + 1) col mat == Just Door -> + assetImages ud Map.! ImgWallDesc + | M.safeGet row (col + 1) mat == Just Wall || + M.safeGet row (col + 1) mat == Just Door -> + assetImages ud Map.! ImgWallAsc + | otherwise -> + assetImages ud Map.! ImgWallAsc 0 -> - assetImages ud Map.! ImgWallCross + assetImages ud Map.! ImgWallCross _ -> - error "unexpected number if neighbouring walls" + error "unexpected number if neighbouring walls" mat = mapMat (stateData ud) - (prow, pcol) = (row + 1, col + 1) paint <- imagePattern ctx x (y - (74 - realToFrac tileHeight)) 64 74 0 img @@ -251,7 +250,7 @@ drawTile row col tile = do rect ctx x (y - (74 - realToFrac tileHeight)) 64 74 fillPaint ctx paint fill ctx - when (floor pr == row + 1 && floor pc == col + 1) $ do + when (floor pr == row && floor pc == col) $ do beginPath ctx circle ctx 640 360 5 closePath ctx