use request_animation_frame

This commit is contained in:
Swrup 2022-12-07 23:14:11 +01:00
parent 4b2e90f737
commit de904f86cc

View file

@ -61,7 +61,7 @@ let papy_bottom = C2d.image_src_of_el (get_el "papy_bottom")
let water = C2d.image_src_of_el (get_el "water") let water = C2d.image_src_of_el (get_el "water")
let draw_map () = let draw_map _timestamp =
let player_x, player_y = !Map.player_pos in let player_x, player_y = !Map.player_pos in
Format.printf "player_x = %d@\nplayer_y = %d@\n" player_x player_y; Format.printf "player_x = %d@\nplayer_y = %d@\n" player_x player_y;
for x = 0 to tiles_per_w - 1 do for x = 0 to tiles_per_w - 1 do
@ -98,11 +98,18 @@ let kb_handler ev =
let y = max 0 y in let y = max 0 y in
let y = min (Map.height - 1) y in let y = min (Map.height - 1) y in
Map.player_pos := (x, y); Map.player_pos := (x, y);
draw_map () let _animation_frame_id = G.request_animation_frame draw_map in
()
let rec game_loop _timestamp =
(* ... update state ... *)
draw_map ();
ignore @@ G.request_animation_frame game_loop
let () = let () =
let on_window_load f = let on_window_load f x =
ignore @@ Ev.listen Ev.load (fun _ev -> f ()) (Window.as_target G.window) ignore
@@ Ev.listen Ev.load (fun _ev -> ignore @@ f x) (Window.as_target G.window)
in in
let bind_keys () = let bind_keys () =
ignore ignore
@ -110,9 +117,9 @@ let () =
(fun ev -> kb_handler ev) (fun ev -> kb_handler ev)
(Window.as_target G.window) (Window.as_target G.window)
in in
on_window_load init_bg; on_window_load init_bg ();
on_window_load draw_map; on_window_load bind_keys ();
on_window_load bind_keys on_window_load G.request_animation_frame game_loop
(* (*
let draw_background () = let draw_background () =