summaryrefslogtreecommitdiffhomepage
path: root/src/raylib.c
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2022-01-20 05:33:05 -0500
committerrealtradam <[email protected]>2022-01-20 05:33:05 -0500
commit07779824f6c6535c9d45aa2384475ca75fc1895e (patch)
tree4971a26b0143e932bb524935aed304b1c847d75c /src/raylib.c
parentced40dd6205b6c74101dc97d3f932870e7cb231b (diff)
downloadmruby-raylib-07779824f6c6535c9d45aa2384475ca75fc1895e.tar.gz
mruby-raylib-07779824f6c6535c9d45aa2384475ca75fc1895e.zip
input functions
Diffstat (limited to 'src/raylib.c')
-rw-r--r--src/raylib.c65
1 files changed, 61 insertions, 4 deletions
diff --git a/src/raylib.c b/src/raylib.c
index 4a3eece..3768848 100644
--- a/src/raylib.c
+++ b/src/raylib.c
@@ -150,7 +150,58 @@ mrb_Color_set_alpha(mrb_state* mrb, mrb_value self) {
return mrb_fixnum_value(color->a);
}
+static mrb_value
+mrb_is_key_pressed(mrb_state* mrb, mrb_value self) {
+ mrb_int key;
+ mrb_get_args(mrb, "i", &key);
+
+ return mrb_obj_value(IsKeyPressed(key));
+}
+
+static mrb_value
+mrb_is_key_down(mrb_state* mrb, mrb_value self) {
+ mrb_int key;
+ mrb_get_args(mrb, "i", &key);
+
+ return mrb_obj_value(IsKeyDown(key));
+}
+
+
+static mrb_value
+mrb_is_key_released(mrb_state* mrb, mrb_value self) {
+ mrb_int key;
+ mrb_get_args(mrb, "i", &key);
+
+ return mrb_obj_value(IsKeyReleased(key));
+}
+
+static mrb_value
+mrb_is_key_up(mrb_state* mrb, mrb_value self) {
+ mrb_int key;
+ mrb_get_args(mrb, "i", &key);
+ return mrb_obj_value(IsKeyUp(key));
+}
+
+static mrb_value
+mrb_get_key_pressed(mrb_state* mrb, mrb_value self) {
+ return mrb_fixnum_value(GetKeyPressed());
+}
+
+static mrb_value
+mrb_get_mouse_x(mrb_state* mrb, mrb_value self) {
+ return mrb_fixnum_value(GetMouseX());
+}
+
+static mrb_value
+mrb_get_mouse_y(mrb_state* mrb, mrb_value self) {
+ return mrb_fixnum_value(GetMouseY());
+}
+
+static mrb_value
+mrb_get_mouse_wheel_move(mrb_state* mrb, mrb_value self) {
+ return mrb_float_value(mrb, GetMouseWheelMove());
+}
static mrb_value
mrb_init_window(mrb_state* mrb, mrb_value self) {
@@ -211,8 +262,7 @@ mrb_clear_background(mrb_state* mrb, mrb_value self) {
static mrb_value
mrb_call_main_loop(mrb_state* mrb, mrb_value self) {
struct RClass *c = mrb_module_get(mrb, "Raylib");
- mrb_value ml = mrb_funcall(mrb, mrb_obj_value(c), "main_loop", 0);
- return mrb_funcall(mrb, ml, "call", 0);
+ return mrb_funcall(mrb, mrb_obj_value(c), "main_loop", 0);
}
static mrb_value
@@ -230,8 +280,7 @@ mrb_emscripten_set_main_loop(mrb_state* mrb, mrb_value self) {
void
execute_emscripten_block(void* mrb) {
struct RClass *c = mrb_module_get(mrb, "Raylib");
- mrb_value ml = mrb_funcall(mrb, mrb_obj_value(c), "main_loop", 0);
- mrb_funcall(mrb, ml, "call", 0);
+ mrb_funcall(mrb, mrb_obj_value(c), "main_loop", 0);
}
#endif
@@ -274,6 +323,14 @@ mrb_mruby_raylib_gem_init(mrb_state* mrb) {
mrb_define_class_method(mrb, raylib, "frame_time", mrb_frame_time, MRB_ARGS_NONE());
mrb_define_class_method(mrb, raylib, "time", mrb_time, MRB_ARGS_NONE());
mrb_define_class_method(mrb, raylib, "_draw_texture", mrb_draw_texture, MRB_ARGS_REQ(4));
+ mrb_define_class_method(mrb, raylib, "is_key_pressed?", mrb_is_key_pressed, MRB_ARGS_REQ(1));
+ mrb_define_class_method(mrb, raylib, "is_key_down?", mrb_is_key_down, MRB_ARGS_REQ(1));
+ mrb_define_class_method(mrb, raylib, "is_key_released?", mrb_is_key_released, MRB_ARGS_REQ(1));
+ mrb_define_class_method(mrb, raylib, "is_key_up?", mrb_is_key_up, MRB_ARGS_REQ(1));
+ mrb_define_class_method(mrb, raylib, "_key_pressed", mrb_get_key_pressed, MRB_ARGS_NONE());
+ mrb_define_class_method(mrb, raylib, "mouse_x", mrb_get_mouse_x, MRB_ARGS_NONE());
+ mrb_define_class_method(mrb, raylib, "mouse_y", mrb_get_mouse_y, MRB_ARGS_NONE());
+ mrb_define_class_method(mrb,raylib, "mouse_wheel", mrb_get_mouse_wheel_move, MRB_ARGS_NONE());
struct RClass *color_class = mrb_define_class_under(mrb, raylib, "Color", mrb->object_class);
MRB_SET_INSTANCE_TT(color_class, MRB_TT_DATA);