minesweeper 0.9 → 0.9.1
raw patch · 3 files changed
+22/−20 lines, 3 filesdep ~basedep ~cairodep ~containers
Dependency ranges changed: base, cairo, containers, directory, filepath, glade, gtk
Files
- GTK.hs +13/−11
- Transition/Response.hs +1/−0
- minesweeper.cabal +8/−9
GTK.hs view
@@ -16,24 +16,22 @@ import Graphics.UI.Gtk import Graphics.UI.Gtk.Glade ---import Graphics.UI.Gtk.Gdk.EventM import Graphics.Rendering.Cairo (liftIO) -- ??? ---import Data.Char---import Data.Maybe import Data.Time.Clock+import Control.Monad (when) import Control.Concurrent ------------------------------------------------------ data GUIState = GUIState- { infoLabel :: Label + { infoLabel :: Label , timeLabel :: Label , frame :: AspectFrame , table :: DrawingArea , window :: Window- , event_ :: Event -> IO ()+ , event_ :: Event -> IO () , tSize :: MVar BoardSize , setPref :: Preferences -> IO (Maybe Preferences)@@ -112,15 +110,15 @@ getPosition g = do (x, y) <- widgetGetPointer (table g) calculatePosition (realToFrac x, realToFrac y) g- + eventKey :: GUIState -> EventM EKey Bool eventKey gst = do k <- eventKeyName liftIO $ case k of- "Right" -> alwaysTrue $ event_ gst RightEvent - "Left" -> alwaysTrue $ event_ gst LeftEvent - "Up" -> alwaysTrue $ event_ gst UpEvent - "Down" -> alwaysTrue $ event_ gst DownEvent + "Right" -> alwaysTrue $ event_ gst RightEvent+ "Left" -> alwaysTrue $ event_ gst LeftEvent+ "Up" -> alwaysTrue $ event_ gst UpEvent+ "Down" -> alwaysTrue $ event_ gst DownEvent _ -> return False eventMotion :: GUIState -> EventM EMotion ()@@ -168,10 +166,14 @@ handleResponse :: GUIState -> UTCTime -> Response -> IO () handleResponse gst time e = case e of DrawSquares size sl -> do- _ <- swapMVar (tSize gst) size -- ha megváltozott törölni a képernyőt!!+ old_size <- takeMVar $ tSize gst+ putMVar (tSize gst) size postGUISync $ redrawSigns gst size sl waitTill (addUTCTime 0.02 time) event_ gst DrawingDone+ when (old_size /= size) $ do+ set (frame gst) [aspectFrameRatio := fromIntegral (xSize size) / fromIntegral (ySize size)]+ event_ gst UpdateTable ShowTime s -> do postGUISync $ labelSetText (timeLabel gst) $ show s
Transition/Response.hs view
@@ -92,6 +92,7 @@ where g = game st + diff :: Eq a => [a] -> [a] diff [x, y] | x == y = [] diff l = l
minesweeper.cabal view
@@ -1,5 +1,5 @@ name: minesweeper-version: 0.9+version: 0.9.1 category: Game synopsis: Minesweeper game which is always solvable without guessing description:@@ -35,20 +35,19 @@ CPP build-depends:- base >= 3 && < 5, - containers >= 0.3 && < 0.4,+ base >= 3 && < 4.4,+ containers >= 0.3 && < 0.5, time >= 1.2 && < 1.3, random >= 1.0 && < 1.1, -- mersenne-random-pure64 == 0.2.*,- directory >= 1.0 && < 1.1,- filepath >= 1.1 && < 1.2,+ directory >= 1.0 && < 1.2,+ filepath >= 1.1 && < 1.3, binary >= 0.5 && < 0.6, binary-generic >= 0.2 && < 0.3, bytestring >= 0.9 && < 0.10,- -- derive ,- gtk >= 0.11 && < 0.12,- cairo >= 0.11 && < 0.12,- glade >= 0.11 && < 0.12+ gtk >= 0.11 && < 0.13,+ cairo >= 0.11 && < 0.13,+ glade >= 0.11 && < 0.13 if flag(tests) build-depends: