module Event where import Core.Square import Configuration (Configuration) import State (ScoreAttr, ScoreEntry) -------------------------------------- input ------------- type MousePos = Maybe Square data Event = RevealEvent MousePos -- Nothing: by keyboard | MarkEvent MousePos -- Nothing: by keyboard | MouseMotion MousePos -- Nothing: mouse is outside | NewEvent | LeftEvent | RightEvent | UpEvent | DownEvent | UndoEvent | RedoEvent | HintEvent | FullHintEvent | ShowScores | OpenPreferences | PreferencesClosed (Maybe Configuration) | NewScoreClosed (Maybe String) [ScoreAttr] | FocusOut | FocusIn MousePos -- Nothing: mouse is outside | UpdateTable -- jóváhagyások (legyen mindenről?) | DrawingDone | InfoDrawingDone | Init -- triggered? | Triggered Triggered -- nem kéne beágyazni ide deriving (Eq, Ord, Show) data Triggered = RevealDone | SquareHintDone | Tick | FadeTick | BusyTick | InterruptVisible -- better name: LongInterrupt deriving (Eq, Ord, Show) ---------------------------- output -------------------- type Responses = [Response] data Response = DrawSquares Board [(Square, (Bool, BackGround, Sign))] | ShowTime String -- gyorsulna szerkezetváltással | ShowInfo String -- gyorsulna szerkezetváltással | PopUpPreferences Configuration | PopUpNewScore Configuration (Maybe Int) [ScoreEntry] [ScoreAttr] deriving (Eq, Ord, Show) data BackGround = Blue | BlueGreen | Green | Reddish Int -- ^ 0-100 deriving (Eq, Ord, Show) data Sign = NoSign | Bomb | Death | Clear Int -- ^ 0-8 | Hint Int -- ^ 0-100 | HintedBomb Int -- ^ 0-100 | BusySign Int -- ^ phase 0-100 deriving (Eq, Ord, Show) isBomb Bomb = True isBomb (HintedBomb _) = True isBomb _ = False