(* vim: set st=2 sw=2 et : *) type game_t = { level: Level.level_t ; players: Player.player_t array ; (* monsters: Monster.monster.t array ; *) timeline : Timeline.timeline_t ; } let handle event ev = ignore ev ;; let rec refresh_input () = (* poll events *) let get_handler_fun ev = match ev with (* key events *) | Sdlevent.KEYDOWN _ -> Keyboard.handle_event | Sdlevent.KEYUP _ -> Keyboard.handle_event (* mouse events *) | Sdlevent.MOUSEMOTION _ -> Mouse.handle_event | Sdlevent.MOUSEBUTTONDOWN _ -> Mouse.handle_event | Sdlevent.MOUSEBUTTONUP _ -> Mouse.handle_event (* joystick events *) | Sdlevent.JOYAXISMOTION _ -> Joystick.handle_event | Sdlevent.JOYBALLMOTION _ -> Joystick.handle_event | Sdlevent.JOYHATMOTION _ -> Joystick.handle_event | Sdlevent.JOYBUTTONDOWN _ -> Joystick.handle_event | Sdlevent.JOYBUTTONUP _ -> Joystick.handle_event (* video events *) | Sdlevent.VIDEORESIZE _ -> Video.handle_event | Sdlevent.VIDEOEXPOSE -> Video.handle_event | Sdlevent.ACTIVE _ -> Video.handle_event (* system events *) | Sdlevent.QUIT -> Game.handle_event | Sdlevent.SYSWM -> Game.handle_event (* user defined events *) | Sdlevent.USER _ -> ignore in let some_event = Sdlevent.poll () in match some_event with | Some ev -> if ev = Sdlevent.QUIT then () else let handler_fun = get_handler_fun ev in handler_fun ev ; refresh_input () | None -> () ;;