packages feed

h-raylib-5.1.1.0: examples/custom-font-text/src/Main.hs

{-# OPTIONS -Wall #-}
module Main where

import Control.Monad (unless, void)
import Foreign (fromBool)
import Raylib.Core
  ( changeDirectory,
    clearBackground,
    getApplicationDirectory,
    isKeyPressed,
  )
import Raylib.Core.Text (drawText, drawTextEx, loadFont)
import Raylib.Types (KeyboardKey (KeyDown, KeyUp), Vector2 (Vector2))
import Raylib.Util (inGHCi, whileWindowOpen_, withWindow, drawing)
import Raylib.Util.Colors (black, rayWhite)

mainFontPath :: String
mainFontPath = (if not inGHCi then "../../../../../../../../../../" else "./") ++ "examples/custom-font-text/assets/Lato-Regular.ttf"

main :: IO ()
main = do
  withWindow
    800
    450
    "raylib [text] example - custom font text"
    60
    ( \window -> do
        unless inGHCi (void $ changeDirectory =<< getApplicationDirectory)

        mainFont <- loadFont mainFontPath window

        whileWindowOpen_
          ( \size -> do
              drawing
                ( do
                    clearBackground rayWhite
  
                    drawTextEx mainFont "Testing drawTextEx" (Vector2 20.0 12.0) (fromIntegral size) 1.0 black
                    drawText "Press the up and down arrows to change the font size" 20 (size + 15) 24 black
                )
                
              increaseSize <- isKeyPressed KeyUp
              decreaseSize <- isKeyPressed KeyDown
              return (size + fromBool increaseSize - fromBool decreaseSize)
          )
          20
    )