diff options
author | Matthias Schiffer <matthias@gamezock.de> | 2010-02-23 23:31:11 +0100 |
---|---|---|
committer | Matthias Schiffer <matthias@gamezock.de> | 2010-02-23 23:31:11 +0100 |
commit | 9036ac310501dd9d2eba181270711c328963d17f (patch) | |
tree | 9092fa694377179b014abe7b3c006363f8408bdf /GLDriver.hs | |
parent | 366eb711dd05a7ad446f48d57f0645d89813ade4 (diff) | |
download | htanks-9036ac310501dd9d2eba181270711c328963d17f.tar htanks-9036ac310501dd9d2eba181270711c328963d17f.zip |
Use state monad to hold main loop state
Diffstat (limited to 'GLDriver.hs')
-rw-r--r-- | GLDriver.hs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/GLDriver.hs b/GLDriver.hs index 2e3dafc..9fb2642 100644 --- a/GLDriver.hs +++ b/GLDriver.hs @@ -1,6 +1,7 @@ {-# LANGUAGE ExistentialQuantification, DeriveDataTypeable #-} module GLDriver ( Driver(..) + , SomeDriver(..) , Event , SomeEvent(..) , QuitEvent(..) @@ -21,6 +22,15 @@ class Driver a where nextEvent :: a -> IO (Maybe SomeEvent) +data SomeDriver = forall d. Driver d => SomeDriver d + +instance Driver SomeDriver where + initialized (SomeDriver d) = initialized d + initGL (SomeDriver d) = initGL d >>= return . SomeDriver + deinitGL (SomeDriver d) = deinitGL d + swapBuffers (SomeDriver d) = swapBuffers d + nextEvent (SomeDriver d) = nextEvent d + class Typeable a => Event a @@ -34,4 +44,4 @@ data QuitEvent = QuitEvent deriving Typeable instance Event QuitEvent data ResizeEvent = ResizeEvent Int Int deriving Typeable -instance Event ResizeEvent
\ No newline at end of file +instance Event ResizeEvent |