summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/raylib.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/raylib.c b/src/raylib.c
index c4bb483..595493f 100644
--- a/src/raylib.c
+++ b/src/raylib.c
@@ -4,6 +4,7 @@
#include <mruby/data.h>
#include <mruby/class.h>
#include <mruby/numeric.h>
+#include <mruby/string.h>
#include <stdlib.h>
#if defined(PLATFORM_WEB)
#include <emscripten/emscripten.h>
@@ -822,9 +823,28 @@ mrb_init_window(mrb_state* mrb, mrb_value self) {
mrb_int screenWidth = 800;
mrb_int screenHeight = 600;
char* title = "Hello World from FelFlame!";
- mrb_get_args(mrb, "|iiz", &screenWidth, &screenHeight, &title);
- InitWindow(screenWidth, screenHeight, title);
+ uint32_t kw_num = 3;
+ const mrb_sym kw_names[] = {
+ mrb_intern_lit(mrb, "width"),
+ mrb_intern_lit(mrb, "height"),
+ mrb_intern_lit(mrb, "title"),
+ };
+ mrb_value kw_values[kw_num];
+ const mrb_kwargs kwargs = { kw_num, 0, kw_names, kw_values, NULL };
+ mrb_get_args(mrb, "|iiz:", &screenWidth, &screenHeight, &title, &kwargs);
+
+ if (mrb_undef_p(kw_values[0])) {
+ kw_values[0] = mrb_fixnum_value(screenWidth);
+ }
+ if (mrb_undef_p(kw_values[1])) {
+ kw_values[1] = mrb_fixnum_value(screenHeight);
+ }
+ if (mrb_undef_p(kw_values[2])) {
+ kw_values[2] = mrb_str_new_cstr(mrb, title);
+ }
+
+ InitWindow(mrb_fixnum(kw_values[0]), mrb_fixnum(kw_values[1]), mrb_str_to_cstr(mrb, kw_values[2]));
return mrb_nil_value();
}