packages feed

h-raylib-4.5.1.0: examples/basic-audio/src/Main.hs

{-# OPTIONS -Wall #-}

module Main where

import Control.Monad (unless)
import Raylib.Core (changeDirectory, closeWindow, getApplicationDirectory, initWindow, setTargetFPS, beginDrawing, endDrawing, windowShouldClose, clearBackground)
import Raylib.Types (Music)
import Raylib.Colors (rayWhite, lightGray)
import Raylib.Audio (loadMusicStream, playMusicStream, initAudioDevice, closeAudioDevice, updateMusicStream)
import Raylib.Text (drawText)

musicPath :: String
musicPath = "../../../../../../../../../examples/basic-audio/assets/mini1111.xm"

main :: IO ()
main = do
  initWindow 650 400 "raylib [audio] example - basic audio"
  initAudioDevice

  setTargetFPS 60
  _ <- changeDirectory =<< getApplicationDirectory

  music <- loadMusicStream musicPath
  playMusicStream music

  gameLoop music

  closeAudioDevice
  closeWindow

gameLoop :: Music -> IO ()
gameLoop music = do
  beginDrawing

  clearBackground rayWhite
  drawText "You should hear music playing!" 20 20 20 lightGray

  endDrawing

  updateMusicStream music
  shouldClose <- windowShouldClose
  unless shouldClose $ gameLoop music