module FreeGame
(
Game,
runGame,
runGameDefault,
WindowMode(..),
BoundingBox(..),
inBoundingBox,
_Corners,
delay,
tick,
foreverFrame,
untick,
untickInfinite,
Frame,
FreeGame(..),
Vec2,
Affine(..),
Local(),
globalize,
localize,
Picture2D(..),
BlendMode(..),
Bitmap,
bitmapSize,
readBitmap,
cropBitmap,
loadBitmaps,
loadBitmapsWith,
writeBitmap,
Font,
loadFont,
text,
Keyboard(..),
Key(..),
charToKey,
keyPress,
keyUp,
keyDown,
Mouse(),
mousePosition,
mouseButtonL,
mouseButtonR,
mouseButtonM,
mouseDownL,
mouseDownR,
mouseDownM,
mouseUpL,
mouseUpR,
mouseUpM,
FromFinalizer(),
embedIO,
liftIO,
randomness,
unitV2,
angleV2,
degrees,
radians,
module Control.Monad,
module Control.Applicative,
module Control.Bool,
module Data.Color,
module Data.Color.Names,
module Linear,
fromBitmap,
loadBitmapFromFile,
colored,
keyChar,
keySpecial
) where
import FreeGame.UI
import FreeGame.Util
import FreeGame.Types
import FreeGame.Text
import FreeGame.Class
import FreeGame.Instances ()
import FreeGame.Data.Bitmap
import FreeGame.Data.Font
import qualified FreeGame.Backend.GLFW as GLFW
import Control.Monad.IO.Class
import Control.Monad
import Control.Applicative
import Control.Bool
import Data.Color
import Data.Color.Names
import Linear
import Data.BoundingBox.Dim2 (BoundingBox(..), inBoundingBox, _Corners)
import Control.Monad.Trans.Iter
runGame :: WindowMode -> BoundingBox Double -> Game a -> IO (Maybe a)
runGame = GLFW.runGame
runGameDefault :: Game a -> IO (Maybe a)
runGameDefault = runGame Windowed (BoundingBox 0 0 640 480)
instance MonadIO Frame where
liftIO = embedIO