packages feed

HGE2D-0.1.6.0: src/examples/Example1.hs

module Main where

import HGE2D.Types
import HGE2D.Datas
import HGE2D.Colors
import HGE2D.Shapes
import HGE2D.Engine

{- Very basic example showing a "Hello World" -}
--------------------------------------------------------------------------------

--in here we are going to store all data of the game
data GameState = GameState
    { gsSize :: (Double, Double) -- current size of the entire game in pixels
    , time   :: Millisecond      -- current time of the game
    }

--define our initial state
gs1 = GameState { time = 0, gsSize = (0, 0) }

--define all functions of the engine for usage of our state
es1 = EngineState
    { getTitle = myGetTitle
    , getTime = myGetTime
    , setTime = mySetTime
    , moveTime = myMoveTime
    , click = myClick
    , mUp = myMouseUp
    , hover = myHover
    , drag = myDrag
    , kDown = myKeyDown
    , kUp = myKeyUp
    , resize = myResize
    , getSize = myGetSize
    , toGlInstr = myToGlInstr
    } :: EngineState GameState
  where
      myGetTitle _ = "Welcome to Example1" --title of the games window
      myGetTime = time -- how to retrieve the games time
      mySetTime ms gs = gs { time = ms } -- how to set the games time
      myMoveTime _ = id -- our game won't react to time changes
      myClick _ _ = id -- nor clicks
      myMouseUp _ _ = id --nor mouse up
      myHover _ _ = id -- nor hovering
      myDrag _ _ = id -- nor draging
      myKeyDown _ _ _ = id -- nor key presses
      myKeyUp _ _ _ = id --nor key releases
      myResize (w, h) gs = gs { gsSize = (realToFrac w, realToFrac h) } -- how to resize our game
      myGetSize = gsSize -- and get its size
      myToGlInstr _ = RenderMany -- render our game by using multiple instructions
          [ RenderColorize colorWhite -- rendering a white
          , rectangle 0.3 0.3 -- rectangle
          , RenderColorize colorRed -- and a red
          , RenderText "Hello World" -- "Hello World"
          ]
--------------------------------------------------------------------------------
main = runEngine es1 gs1