packages feed

mischief-input-0.1.0.0: test/Main.hs

module Main where

import Control.Monad
import Mischief.ECS
import Mischief.Input
import Mischief.Input.Keys qualified as Keys
import Mischief.Input.Mouse qualified as Mouse
import Prelude hiding (and)

main :: IO ()
main = do
  app <- newApp
  addPlugin @MainPlugin app
  runApp app

data MainPlugin

instance Plugin MainPlugin where
  init = do
    spawn_ Window
    schedule @Update $ systems test
  deps = [dep @InputPlugin]

test :: System ()
test = do
  Just keys <- res @Keys
  when (Keys.pressed keys Keys.A) $ do
    info "A"

  Just mouse <- res @Mouse
  when (Mouse.justPressed mouse Mouse.Left) $ do
    pos <- Mouse.pos
    info [i|Click at #{pos}|]