module InvaderTypes where data GEvent = Redraw | Key Action UpDown data Action = MoveLeft | MoveRight | Fire data UpDown = Up | Down data Phase = A | B deriving (Eq,Show) data Row = R1 | R2 | R3 deriving (Eq,Enum,Show) rows = [R1,R2,R3] phases f = (f A,f B) rowNum :: Row -> Int rowNum = succ . fromEnum data Object = Vader Row Phase | VExplode Row | VShot Phase | Base | Explode | Ufo deriving (Eq,Show)