{-# LANGUAGE OverloadedStrings #-} module Scenes.Test.EventHandler where import Affection as A import qualified SDL import Linear import Control.Concurrent.STM import Data.String (fromString) -- internal imports import Classes import Types import Scenes.Test.Types singleHandler :: Test -> TranslatorMessage -> Affection () singleHandler level event = do let multiplier = if tmKeyMotion event == SDL.Pressed then 1 else 0 liftIO $ atomically $ modifyTVar (testPlayer level) (\(Just pituicat) -> A.log Debug ("Grounded: " <> fromString (show $ pcGrounded pituicat)) $ case tmAction event of Jump -> if multiplier > 0 && pcGrounded pituicat then A.log Debug "jumping" (Just pituicat { pcVel = pcVel pituicat + V2 0 250 , pcGrounded = False } ) else Just pituicat _ -> Just pituicat )