{-# OPTIONS_HADDOCK hide #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Imj.Game.Hamazed.Loop.Event.Types
( Event(..)
, Deadline(..)
, ActionTarget(..)
, DeadlineType(..)
, MetaAction(..)
, module Imj.Game.Hamazed.World.Types
, module Imj.Graphics.Animation.Design.Create
) where
import Imj.Prelude
import Imj.Game.Hamazed.Types
import Imj.Game.Hamazed.World.Types
import Imj.Geo.Discrete
import Imj.Graphics.Animation.Design.Create
import Imj.Timing
data Deadline = Deadline {
_deadlineTime :: !KeyTime
, _deadlineType :: !DeadlineType
} deriving(Eq, Show)
data Event = Action !ActionTarget !Direction
| Timeout !Deadline
| StartLevel !Int
| EndGame
| Interrupt !MetaAction
deriving(Eq, Show)
data MetaAction = Quit
| Configure
| Help
deriving(Eq, Show)
data DeadlineType = MoveFlyingItems
| Animate
| DisplayContinueMessage
| AnimateUI
deriving(Eq, Show)
data ActionTarget = Ship
| Laser
deriving(Eq, Show)