justnukeit/Game.ml

60 lines
1.6 KiB
OCaml
Raw Normal View History

2008-02-20 16:57:24 +00:00
(* vim: set st=2 sw=2 et : *)
2008-02-20 00:24:56 +00:00
type game_t = {
level: Level.level_t ;
players: Player.player_t array ;
(* monsters: Monster.monster.t array ; *)
timeline : Timeline.timeline_t ;
}
2008-03-03 18:14:42 +00:00
let handle_event ev =
ignore ev ; []
;;
2008-02-20 00:24:56 +00:00
let rec refresh_input () =
2008-02-20 16:57:24 +00:00
(* poll events *)
2008-03-03 18:14:42 +00:00
let match_quit ev =
if ev = Sdlevent.QUIT then true
else false
in
let match_handler ev =
2008-02-20 16:57:24 +00:00
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
2008-02-20 16:57:24 +00:00
(* system events *)
2008-03-03 18:14:42 +00:00
| Sdlevent.QUIT -> handle_event
| Sdlevent.SYSWM -> handle_event
2008-02-20 16:57:24 +00:00
(* user defined events *)
2008-03-03 18:14:42 +00:00
| Sdlevent.USER _ -> (fun x -> ignore x ; [] )
2008-02-20 16:57:24 +00:00
in
2008-02-20 00:24:56 +00:00
2008-02-20 16:57:24 +00:00
let some_event = Sdlevent.poll ()
in
2008-02-20 00:24:56 +00:00
2008-02-20 16:57:24 +00:00
match some_event with
| Some ev ->
2008-03-03 18:14:42 +00:00
let handler = match_handler ev
and quit = match_quit ev
in
ignore ( handler ev );
if not quit then refresh_input ()
| None -> ()
2008-02-20 00:24:56 +00:00
;;