diff options
| author | arngo <[email protected]> | 2022-01-15 18:49:26 -0500 |
|---|---|---|
| committer | arngo <[email protected]> | 2022-01-15 18:49:26 -0500 |
| commit | 34e315e6edb9fca2c86df44b1ce071726000245d (patch) | |
| tree | ac2ec9173e85855a04fed64f66de52f8e663ed9d /src/raylib.c | |
| parent | d8c7c6d3faac6c3cdbe5badbb1740fee4163ce15 (diff) | |
| download | mruby-raylib-34e315e6edb9fca2c86df44b1ce071726000245d.tar.gz mruby-raylib-34e315e6edb9fca2c86df44b1ce071726000245d.zip | |
implement main loop
Diffstat (limited to 'src/raylib.c')
| -rw-r--r-- | src/raylib.c | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/src/raylib.c b/src/raylib.c index bd9e6da..f2fef48 100644 --- a/src/raylib.c +++ b/src/raylib.c @@ -5,6 +5,8 @@ #include <emscripten/emscripten.h> #endif +void call_main_loop(); + static mrb_value mrb_init_window(mrb_state *mrb, mrb_value self) { @@ -64,7 +66,7 @@ mrb_end_drawing(mrb_state *mrb, mrb_value self) return mrb_nil_value(); } - static mrb_value + static mrb_value mrb_clear_background(mrb_state *mrb, mrb_value self) { ClearBackground(RAYWHITE); @@ -72,6 +74,34 @@ mrb_clear_background(mrb_state *mrb, mrb_value self) } void +call_main_loop() +{ + mrb_state *mrb = mrb_open(); + if (!mrb) {} + struct RClass *c = mrb_class_get(mrb, "Raylib"); + mrb_funcall(mrb, mrb_obj_value(c), "main_loop.call", 0); +} + + static mrb_value +mrb_execute_main_loop(mrb_state *mrb, mrb_value self) +{ +#if defined(PLATFORM_WEB) + emscripten_set_main_loop(call_main_loop, 0, 1); +#else + SetTargetFPS(60); // Set our game to run at 60 frames-per-second + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + call_main_loop(); + } +#endif + return mrb_nil_value(); +} + + +void mrb_mruby_raylib_gem_init(mrb_state* mrb) { struct RClass *raylib = mrb_define_module(mrb, "Raylib"); mrb_define_class_method(mrb, raylib, "init_window", mrb_init_window, MRB_ARGS_REQ(3)); @@ -80,6 +110,7 @@ mrb_mruby_raylib_gem_init(mrb_state* mrb) { mrb_define_class_method(mrb, raylib, "begin_drawing", mrb_begin_drawing, MRB_ARGS_NONE()); mrb_define_class_method(mrb, raylib, "end_drawing", mrb_end_drawing, MRB_ARGS_NONE()); mrb_define_class_method(mrb, raylib, "clear_background", mrb_clear_background, MRB_ARGS_NONE()); + mrb_define_class_method(mrb, raylib, "execute_main_loop", mrb_execute_main_loop, MRB_ARGS_NONE()); } void |
