module Gamgine.State.State where
import qualified Gamgine.Math.Vect as V
import qualified Gamgine.State.RenderState as RS
import qualified Gamgine.State.InputInfo as II
import qualified Gamgine.State.KeyInfo as KI
import qualified Gamgine.State.MouseInfo as MI
data State a = State {
forall a. State a -> MousePos -> a -> Maybe (a, State a)
enter :: II.MousePos -> a -> Maybe (a, State a),
forall a. State a -> a -> (a, State a)
leave :: a -> (a, State a),
forall a. State a -> a -> (a, State a)
update :: a -> (a, State a),
forall a. State a -> RenderState -> a -> IO (a, State a)
render :: RS.RenderState -> a -> IO (a, State a),
forall a. State a -> KeyInfo -> a -> (a, State a)
keyEvent :: KI.KeyInfo -> a -> (a, State a),
forall a. State a -> MouseInfo -> a -> (a, State a)
mouseEvent :: MI.MouseInfo -> a -> (a, State a),
forall a. State a -> MousePos -> a -> (a, State a)
mouseMoved :: II.MousePos -> a -> (a, State a)
}