summaryrefslogtreecommitdiffhomepage
path: root/src/raylib.c
diff options
context:
space:
mode:
author_Tradam <[email protected]>2022-04-05 16:02:38 -0400
committer_Tradam <[email protected]>2022-04-05 16:02:38 -0400
commit7296393f62ce4967041f126cd2260557e7e00f3c (patch)
tree15b39e09fd8e2c52beda525b3c11c4a444def2e2 /src/raylib.c
parent3a559960526ee7a9c59bfdef48699cf4880e1e7d (diff)
downloadmruby-raylib-7296393f62ce4967041f126cd2260557e7e00f3c.tar.gz
mruby-raylib-7296393f62ce4967041f126cd2260557e7e00f3c.zip
autogenned
Diffstat (limited to 'src/raylib.c')
-rw-r--r--src/raylib.c1053
1 files changed, 0 insertions, 1053 deletions
diff --git a/src/raylib.c b/src/raylib.c
deleted file mode 100644
index 2ab20d9..0000000
--- a/src/raylib.c
+++ /dev/null
@@ -1,1053 +0,0 @@
-#include "mruby-raylib/types.h"
-#include "mruby-raylib/core.h"
-#include "mruby-raylib/textures.h"
-#include "mruby-raylib/text.h"
-#include <raylib.h>
-#include <mruby/array.h>
-#include <mruby/class.h>
-#include <mruby/numeric.h>
-#include <mruby/string.h>
-#include <stdlib.h>
-#if defined(PLATFORM_WEB)
-#include <emscripten/emscripten.h>
-#endif
-
-#if defined(PLATFORM_WEB)
-void execute_emscripten_block(void*);
-#endif
-
-bool check_collision_circle_rec(mrb_state* mrb, mrb_value circle_obj, mrb_value rec_obj);
-
-
-
-
-static mrb_value
-mrb_NPatchInfo_initialize(mrb_state* mrb, mrb_value self) {
- mrb_value rect_source_obj;
- mrb_int left = 10;
- mrb_int top = 10;
- mrb_int right = 10;
- mrb_int bottom = 10;
- mrb_int layout = NPATCH_NINE_PATCH;
- mrb_get_args(mrb, "o|iiiii", &rect_source_obj, &left, &top, &right, &bottom, &layout);
-
- NPatchInfo *npatch_info = (NPatchInfo *)DATA_PTR(self);
- if(npatch_info) { mrb_free(mrb, npatch_info ); }
- mrb_data_init(self, NULL, &NPatchInfo_type);
- npatch_info = (NPatchInfo *)mrb_malloc(mrb, sizeof(NPatchInfo));
-
- Rectangle *rect_source = DATA_GET_PTR(mrb, rect_source_obj, &Rectangle_type, Rectangle);
-
- npatch_info->source = *rect_source;
- npatch_info->left = left;
- npatch_info->top = top;
- npatch_info->right = right;
- npatch_info->bottom = bottom;
- npatch_info->layout = layout;
-
- mrb_data_init(self, npatch_info, &NPatchInfo_type);
- return self;
-}
-
-/* accessors probably not needed
- static mrb_value
- mrb_NPatchInfo_get_source_rec(mrb_state* mrb, mrb_value self) {
- NPatchInfo *npi = DATA_GET_PTR(mrb, self, &NPatchInfo_type, NPatchInfo);
- struct RClass *c = mrb_module_get(mrb, "Raylib");
- struct RClass *rec_class = mrb_class_get_under(mrb, c, Rectangle_type.struct_name);
- return mrb_obj_value(Data_Wrap_Struct(mrb, rec_class, &Rectangle_type, &npi->source));
- }
-
- static mrb_value
- mrb_NPatchInfo_get_left(mrb_state* mrb, mrb_value self) {
- NPatchInfo *npi = DATA_GET_PTR(mrb, self, &NPatchInfo_type, NPatchInfo);
- return mrb_fixnum_value(npi->left);
- }
-
- static mrb_value
- mrb_NPatchInfo_get_top(mrb_state* mrb, mrb_value self) {
- NPatchInfo *npi = DATA_GET_PTR(mrb, self, &NPatchInfo_type, NPatchInfo);
- return mrb_fixnum_value(npi->top);
- }
-
- static mrb_value
- mrb_NPatchInfo_get_right(mrb_state* mrb, mrb_value self) {
- NPatchInfo *npi = DATA_GET_PTR(mrb, self, &NPatchInfo_type, NPatchInfo);
- return mrb_fixnum_value(npi->right);
- }
-
- static mrb_value
- mrb_NPatchInfo_get_bottom(mrb_state* mrb, mrb_value self) {
- NPatchInfo *npi = DATA_GET_PTR(mrb, self, &NPatchInfo_type, NPatchInfo);
- return mrb_fixnum_value(npi->bottom);
- }
-
- static mrb_value
- mrb_NPatchInfo_get_layout(mrb_state* mrb, mrb_value self) {
- NPatchInfo *npi = DATA_GET_PTR(mrb, self, &NPatchInfo_type, NPatchInfo);
- return mrb_fixnum_value(npi->layout);
- }*/
-
-static mrb_value
-mrb_Rectangle_initialize(mrb_state* mrb, mrb_value self) {
- mrb_float x = 0.0;
- mrb_float y = 0.0;
- mrb_float w = 10.0;
- mrb_float h = 10.0;
- mrb_get_args(mrb, "|ffff", &x, &y, &w, &h);
-
- Rectangle *rectangle = (Rectangle *)DATA_PTR(self);
- if(rectangle) { mrb_free(mrb, rectangle); }
- mrb_data_init(self, NULL, &Rectangle_type);
- rectangle = (Rectangle *)mrb_malloc(mrb, sizeof(Rectangle));
-
- rectangle->x = x;
- rectangle->y = y;
- rectangle->width = w;
- rectangle->height= h;
-
- mrb_data_init(self, rectangle, &Rectangle_type);
- return self;
-}
-
-static mrb_value
-mrb_Rectangle_get_x(mrb_state* mrb, mrb_value self) {
- Rectangle *rect = DATA_GET_PTR(mrb, self, &Rectangle_type, Rectangle);
- return mrb_fixnum_value(rect->x);
-}
-
-static mrb_value
-mrb_Rectangle_set_x(mrb_state* mrb, mrb_value self) {
- Rectangle *rect = DATA_GET_PTR(mrb, self, &Rectangle_type, Rectangle);
- mrb_float x;
- mrb_get_args(mrb, "f", &x);
- rect->x = x;
- return mrb_fixnum_value(rect->x);
-}
-
-static mrb_value
-mrb_Rectangle_get_y(mrb_state* mrb, mrb_value self) {
- Rectangle *rect = DATA_GET_PTR(mrb, self, &Rectangle_type, Rectangle);
- return mrb_fixnum_value(rect->y);
-}
-
-static mrb_value
-mrb_Rectangle_set_y(mrb_state* mrb, mrb_value self) {
- Rectangle *rect = DATA_GET_PTR(mrb, self, &Rectangle_type, Rectangle);
- mrb_float y;
- mrb_get_args(mrb, "f", &y);
- rect->y = y;
- return mrb_fixnum_value(rect->y);
-}
-
-static mrb_value
-mrb_Rectangle_get_width(mrb_state* mrb, mrb_value self) {
- Rectangle *rect = DATA_GET_PTR(mrb, self, &Rectangle_type, Rectangle);
- return mrb_fixnum_value(rect->width);
-}
-
-static mrb_value
-mrb_Rectangle_set_width(mrb_state* mrb, mrb_value self) {
- Rectangle *rect = DATA_GET_PTR(mrb, self, &Rectangle_type, Rectangle);
- mrb_float width;
- mrb_get_args(mrb, "f", &width);
- rect->x = width;
- return mrb_fixnum_value(rect->width);
-}
-
-static mrb_value
-mrb_Rectangle_set_height(mrb_state* mrb, mrb_value self) {
- Rectangle *rect = DATA_GET_PTR(mrb, self, &Rectangle_type, Rectangle);
- mrb_float height;
- mrb_get_args(mrb, "f", &height);
- rect->x = height;
- return mrb_fixnum_value(rect->height);
-}
-
-static mrb_value
-mrb_Rectangle_get_height(mrb_state* mrb, mrb_value self) {
- Rectangle *rect = DATA_GET_PTR(mrb, self, &Rectangle_type, Rectangle);
- return mrb_fixnum_value(rect->height);
-}
-
-static mrb_value
-mrb_Vector2_initialize(mrb_state* mrb, mrb_value self) {
- mrb_float x = 1.0;
- mrb_float y = 1.0;
- mrb_get_args(mrb, "|ff", &x, &y);
-
- Vector2 *vector2 = (Vector2 *)DATA_PTR(self);
- if(vector2) { mrb_free(mrb, vector2); }
- mrb_data_init(self, NULL, &Vector2_type);
- vector2 = (Vector2 *)mrb_malloc(mrb, sizeof(Vector2));
-
- vector2->x = x;
- vector2->y = y;
-
- mrb_data_init(self, vector2, &Vector2_type);
- return self;
-}
-
-static mrb_value
-mrb_Vector2_get_x(mrb_state* mrb, mrb_value self) {
- Vector2 *vec2 = DATA_GET_PTR(mrb, self, &Vector2_type, Vector2);
- return mrb_fixnum_value(vec2->x);
-}
-
-static mrb_value
-mrb_Vector2_set_x(mrb_state* mrb, mrb_value self) {
- Vector2 *vec2 = DATA_GET_PTR(mrb, self, &Vector2_type, Vector2);
- mrb_float x;
- mrb_get_args(mrb, "f", &x);
- vec2->x = x;
- return mrb_fixnum_value(vec2->x);
-}
-
-static mrb_value
-mrb_Vector2_get_y(mrb_state* mrb, mrb_value self) {
- Vector2 *vec2 = DATA_GET_PTR(mrb, self, &Vector2_type, Vector2);
- return mrb_fixnum_value(vec2->y);
-}
-
-static mrb_value
-mrb_Vector2_set_y(mrb_state* mrb, mrb_value self) {
- Vector2 *vec2 = DATA_GET_PTR(mrb, self, &Vector2_type, Vector2);
- mrb_float y;
- mrb_get_args(mrb, "f", &y);
- vec2->y = y;
- return mrb_fixnum_value(vec2->y);
-}
-
-static mrb_value
-mrb_Sound_initialize(mrb_state* mrb, mrb_value self) {
- char* path = NULL;
- mrb_get_args(mrb, "z", &path);
-
- Sound *sound = (Sound *)DATA_PTR(self);
- if(sound) { mrb_free(mrb, sound); }
- mrb_data_init(self, NULL, &Sound_type);
- sound = (Sound *)mrb_malloc(mrb, sizeof(Sound));
-
- *sound = LoadSound(path);
-
- mrb_data_init(self, sound, &Sound_type);
- return self;
-}
-
-static mrb_value
-mrb_Sound_play(mrb_state* mrb, mrb_value self) {
- Sound *sound = DATA_GET_PTR(mrb, self, &Sound_type, Sound);
- PlaySound(*sound);
- return mrb_nil_value();
-}
-
-static mrb_value
-mrb_Sound_stop(mrb_state* mrb, mrb_value self) {
- Sound *sound = DATA_GET_PTR(mrb, self, &Sound_type, Sound);
- StopSound(*sound);
- return mrb_nil_value();
-}
-
-static mrb_value
-mrb_Sound_pause(mrb_state* mrb, mrb_value self) {
- Sound *sound = DATA_GET_PTR(mrb, self, &Sound_type, Sound);
- PauseSound(*sound);
- return mrb_nil_value();
-}
-
-static mrb_value
-mrb_Sound_resume(mrb_state* mrb, mrb_value self) {
- Sound *sound = DATA_GET_PTR(mrb, self, &Sound_type, Sound);
- ResumeSound(*sound);
- return mrb_nil_value();
-}
-
-static mrb_value
-mrb_Sound_set_volume(mrb_state* mrb, mrb_value self) {
- mrb_float vol;
- mrb_get_args(mrb, "f", &vol);
- Sound *sound = DATA_GET_PTR(mrb, self, &Sound_type, Sound);
- SetSoundVolume(*sound, vol);
- return mrb_fixnum_value(vol);
-}
-
-static mrb_value
-mrb_Sound_set_pitch(mrb_state* mrb, mrb_value self) {
- mrb_float pitch;
- mrb_get_args(mrb, "f", &pitch);
- Sound *sound = DATA_GET_PTR(mrb, self, &Sound_type, Sound);
- SetSoundPitch(*sound, pitch);
- return mrb_fixnum_value(pitch);
-}
-
-static mrb_value
-mrb_Sound_is_playing(mrb_state* mrb, mrb_value self) {
- Sound *sound = DATA_GET_PTR(mrb, self, &Sound_type, Sound);
- return mrb_bool_value(IsSoundPlaying(*sound));
-}
-
-static mrb_value
-mrb_Music_initialize(mrb_state* mrb, mrb_value self) {
- char* path = NULL;
- mrb_get_args(mrb, "z", &path);
-
- Music *music = (Music *)DATA_PTR(self);
- if(music) { mrb_free(mrb, music); }
- mrb_data_init(self, NULL, &Music_type);
- music = (Music *)mrb_malloc(mrb, sizeof(Music));
-
- *music = LoadMusicStream(path);
-
- mrb_data_init(self, music, &Music_type);
- return self;
-}
-
-static mrb_value
-mrb_Music_play(mrb_state* mrb, mrb_value self) {
- Music *music = DATA_GET_PTR(mrb, self, &Music_type, Music);
- PlayMusicStream(*music);
- return mrb_nil_value();
-}
-
-static mrb_value
-mrb_Music_stop(mrb_state* mrb, mrb_value self) {
- Music *music = DATA_GET_PTR(mrb, self, &Music_type, Music);
- StopMusicStream(*music);
- return mrb_nil_value();
-}
-
-static mrb_value
-mrb_Music_pause(mrb_state* mrb, mrb_value self) {
- Music *music = DATA_GET_PTR(mrb, self, &Music_type, Music);
- PauseMusicStream(*music);
- return mrb_nil_value();
-}
-
-static mrb_value
-mrb_Music_resume(mrb_state* mrb, mrb_value self) {
- Music *music = DATA_GET_PTR(mrb, self, &Music_type, Music);
- ResumeMusicStream(*music);
- return mrb_nil_value();
-}
-
-static mrb_value
-mrb_Music_is_playing(mrb_state* mrb, mrb_value self) {
- Music *music = DATA_GET_PTR(mrb, self, &Music_type, Music);
- return mrb_bool_value(IsMusicStreamPlaying(*music));
-}
-
-static mrb_value
-mrb_Music_set_volume(mrb_state* mrb, mrb_value self) {
- mrb_float vol;
- mrb_get_args(mrb, "f", &vol);
- Music *music = DATA_GET_PTR(mrb, self, &Music_type, Music);
- SetMusicVolume(*music, vol);
- return mrb_fixnum_value(vol);
-}
-
-static mrb_value
-mrb_Music_set_pitch(mrb_state* mrb, mrb_value self) {
- mrb_float pitch;
- mrb_get_args(mrb, "f", &pitch);
- Music *music = DATA_GET_PTR(mrb, self, &Music_type, Music);
- SetMusicPitch(*music, pitch);
- return mrb_fixnum_value(pitch);
-}
-
-static mrb_value
-mrb_Music_seek(mrb_state* mrb, mrb_value self) {
- mrb_float pos;
- mrb_get_args(mrb, "f", &pos);
- Music *music = DATA_GET_PTR(mrb, self, &Music_type, Music);
- SeekMusicStream(*music, pos);
- return mrb_nil_value();
-}
-
-static mrb_value
-mrb_Music_get_time_length(mrb_state* mrb, mrb_value self) {
- Music *music = DATA_GET_PTR(mrb, self, &Music_type, Music);
- return mrb_fixnum_value(GetMusicTimeLength(*music));
-}
-
-static mrb_value
-mrb_Music_get_time_played(mrb_state* mrb, mrb_value self) {
- Music *music = DATA_GET_PTR(mrb, self, &Music_type, Music);
- return mrb_fixnum_value(GetMusicTimePlayed(*music));
-}
-
-
-static mrb_value
-mrb_draw_texture_npatch(mrb_state* mrb, mrb_value self) {
- mrb_value texture_obj;
- mrb_value npi_obj;
- mrb_value dest_rec_obj;
- mrb_value pos_obj;
- mrb_float rotation;
- mrb_value tint_obj;
- mrb_get_args(mrb, "oooofo", &texture_obj, &npi_obj, &dest_rec_obj, &pos_obj, &rotation, &tint_obj);
-
- Texture *texture_data = DATA_GET_PTR(mrb, texture_obj, &Texture_type, Texture);
- NPatchInfo *npi_data = DATA_GET_PTR(mrb, npi_obj, &NPatchInfo_type, NPatchInfo);
- Rectangle *dest_rec_data = DATA_GET_PTR(mrb, dest_rec_obj, &Rectangle_type, Rectangle);
- Vector2 *pos_data = DATA_GET_PTR(mrb, pos_obj, &Vector2_type, Vector2);
- Color *tint_data = DATA_GET_PTR(mrb, tint_obj, &Color_type, Color);
-
- DrawTextureNPatch(*texture_data, *npi_data, *dest_rec_data, *pos_data, rotation, *tint_data);
-
- return mrb_nil_value();
-}
-
-static mrb_value
-mrb_begin_blend_mode(mrb_state* mrb, mrb_value self) {
- mrb_int mode;
- mrb_get_args(mrb, "i", &mode);
-
- BeginBlendMode(mode);
- return mrb_nil_value();
-}
-
-static mrb_value
-mrb_end_blend_mode(mrb_state* mrb, mrb_value self) {
- EndBlendMode();
- return mrb_nil_value();
-}
-
-
-static mrb_value
-mrb_Color_initialize(mrb_state* mrb, mrb_value self) {
- mrb_int r = 255;
- mrb_int g = 0;
- mrb_int b = 0;
- mrb_int a = 255;
- mrb_get_args(mrb, "|iiii", &r, &g, &b, &a);
-
- Color *color;
- WRAPSTRUCT(Color, Color_type, self, color);
-
- color->r = r;
- color->g = g;
- color->b = b;
- color->a = a;
-
- mrb_data_init(self, color, &Color_type);
- return self;
-}
-
-static mrb_value
-mrb_Color_get_red(mrb_state* mrb, mrb_value self) {
- Color *color;
- UNWRAPSTRUCT(Color, Color_type, self, color);
- return mrb_fixnum_value(color->r);
-}
-
-static mrb_value
-mrb_Color_set_red(mrb_state* mrb, mrb_value self) {
- Color *color;
- UNWRAPSTRUCT(Color, Color_type, self, color);
- mrb_int r;
- mrb_get_args(mrb, "i", &r);
- color->r = r;
-
- return mrb_fixnum_value(color->r);
-}
-
-static mrb_value
-mrb_Color_get_green(mrb_state* mrb, mrb_value self) {
- Color *color;
- UNWRAPSTRUCT(Color, Color_type, self, color);
- return mrb_fixnum_value(color->g);
-}
-
-static mrb_value
-mrb_Color_set_green(mrb_state* mrb, mrb_value self) {
- Color *color;
- UNWRAPSTRUCT(Color, Color_type, self, color);
- mrb_int g;
- mrb_get_args(mrb, "i", &g);
- color->g = g;
-
- return mrb_fixnum_value(color->g);
-}
-
-static mrb_value
-mrb_Color_get_blue(mrb_state* mrb, mrb_value self) {
- Color *color;
- UNWRAPSTRUCT(Color, Color_type, self, color);
-
- return mrb_fixnum_value(color->b);
-}
-
-static mrb_value
-mrb_Color_set_blue(mrb_state* mrb, mrb_value self) {
- Color *color;
- UNWRAPSTRUCT(Color, Color_type, self, color);
- mrb_int b;
- mrb_get_args(mrb, "i", &b);
- color->b = b;
-
- return mrb_fixnum_value(color->b);
-}
-
-static mrb_value
-mrb_Color_get_alpha(mrb_state* mrb, mrb_value self) {
- Color *color;
- UNWRAPSTRUCT(Color, Color_type, self, color);
- return mrb_fixnum_value(color->a);
-}
-
-static mrb_value
-mrb_Color_set_alpha(mrb_state* mrb, mrb_value self) {
- Color *color;
- UNWRAPSTRUCT(Color, Color_type, self, color);
- mrb_int a;
- mrb_get_args(mrb, "i", &a);
- color->a = a;
-
- return mrb_fixnum_value(color->a);
-}
-
-static mrb_value
-mrb_is_mouse_button_pressed(mrb_state* mrb, mrb_value self) {
- mrb_int button;
- mrb_get_args(mrb, "i", &button);
-
- return mrb_bool_value(IsMouseButtonPressed(button));
-}
-
-static mrb_value
-mrb_is_mouse_button_down(mrb_state* mrb, mrb_value self) {
- mrb_int button;
- mrb_get_args(mrb, "i", &button);
-
- return mrb_bool_value(IsMouseButtonDown(button));
-}
-
-static mrb_value
-mrb_is_mouse_button_released(mrb_state* mrb, mrb_value self) {
- mrb_int button;
- mrb_get_args(mrb, "i", &button);
-
- return mrb_bool_value(IsMouseButtonReleased(button));
-}
-
-static mrb_value
-mrb_is_mouse_button_up(mrb_state* mrb, mrb_value self) {
- mrb_int button;
- mrb_get_args(mrb, "i", &button);
-
- return mrb_bool_value(IsMouseButtonUp(button));
-}
-
-static mrb_value
-mrb_is_key_pressed(mrb_state* mrb, mrb_value self) {
- mrb_int key;
- mrb_get_args(mrb, "i", &key);
-
- return mrb_bool_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_bool_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_bool_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_bool_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_position(mrb_state* mrb, mrb_value self) {
- Vector2 *pos = (Vector2 *)mrb_malloc(mrb, sizeof(Vector2));
- *pos = GetMousePosition();
- struct RClass *c = mrb_module_get(mrb, "Raylib");
- struct RClass *vec_class = mrb_class_get_under(mrb, c, Vector2_type.struct_name);
- return mrb_obj_value(Data_Wrap_Struct(mrb, vec_class, &Vector2_type, pos));
-}
-
-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_audio_device(mrb_state* mrb, mrb_value self) {
- InitAudioDevice();
-
- return mrb_nil_value();
-}
-
-static mrb_value
-mrb_is_audio_device_ready(mrb_state* mrb, mrb_value self) {
- return mrb_bool_value(IsAudioDeviceReady());
-}
-
-static mrb_value
-mrb_close_audio_device(mrb_state* mrb, mrb_value self) {
- CloseAudioDevice();
-
- return mrb_nil_value();
-}
-
-static mrb_value
-mrb_set_master_volume(mrb_state* mrb, mrb_value self) {
- mrb_float volume;
- mrb_get_args(mrb, "f", &volume);
- SetMasterVolume(volume);
- return mrb_nil_value();
-}
-
-/*
- * Returns a string telling if the platform is web or desktop.
- *
- * *Returns:*
- *
- * * +String+—Either "web" or "desktop".
- */
-static mrb_value
-mrb_platform(mrb_state* mrb, mrb_value self) {
-#if defined(PLATFORM_WEB)
- return mrb_str_new_lit(mrb, "web");
-#else
- return mrb_str_new_lit(mrb, "desktop");
-#endif
-}
-
-//void DrawText(const char *text, int posX, int posY, int fontSize, Color color);
-static mrb_value
-mrb_draw_text(mrb_state* mrb, mrb_value self) {
- char* text = "Default Text";
- mrb_int x = 0;
- mrb_int y = 0;
- mrb_int fontSize = 16;
- mrb_value color_obj;
-
-
- mrb_get_args(mrb, "|ziiio", &text, &x, &y, &fontSize, &color_obj);
- Color *color;
- UNWRAPSTRUCT(Color, Color_type, color_obj, color);
- DrawText(text, x, y, fontSize, *color);
- return mrb_nil_value();
-}
-
-static mrb_value
-mrb_call_main_loop(mrb_state* mrb, mrb_value self) {
- struct RClass *c = mrb_module_get(mrb, "Raylib");
- return mrb_funcall(mrb, mrb_obj_value(c), "main_loop", 0);
-}
-
-#if defined(PLATFORM_WEB)
-static mrb_value
-mrb_emscripten_set_main_loop(mrb_state* mrb, mrb_value self) {
- emscripten_set_main_loop_arg(execute_emscripten_block, mrb, 0, 1);
- return mrb_nil_value();
-}
-
-void
-execute_emscripten_block(void* mrb) {
- struct RClass *c = mrb_module_get(mrb, "Raylib");
- mrb_funcall(mrb, mrb_obj_value(c), "main_loop", 0);
-}
-#endif
-
-static mrb_value
-mrb_target_fps(mrb_state* mrb, mrb_value self) {
- mrb_int fps = 60;
- mrb_get_args(mrb, "i", &fps);
- SetTargetFPS(fps);
- return mrb_nil_value();
-}
-
-static mrb_value
-mrb_fps(mrb_state* mrb, mrb_value self) {
- return mrb_fixnum_value(GetFPS());
-}
-
-static mrb_value
-mrb_frame_time(mrb_state* mrb, mrb_value self) {
- return mrb_float_value(mrb, GetFrameTime());
-}
-
-static mrb_value
-mrb_time(mrb_state* mrb, mrb_value self) {
- return mrb_float_value(mrb, GetTime());
-}
-
-static mrb_value
-mrb_Circle_collide_with_circ(mrb_state* mrb, mrb_value self) {
- mrb_value circle_obj;
- mrb_get_args(mrb, "o", &circle_obj);
-
- mrb_value vector_obj1 = mrb_funcall(mrb, self, "vector", 0);
- Vector2 *center1 = DATA_GET_PTR(mrb, vector_obj1, &Vector2_type, Vector2);
- mrb_float radius1 = mrb_as_float(mrb, mrb_funcall(mrb, self, "radius", 0));
-
- mrb_value vector_obj2 = mrb_funcall(mrb, circle_obj, "vector", 0);
- Vector2 *center2 = DATA_GET_PTR(mrb, vector_obj2, &Vector2_type, Vector2);
- mrb_float radius2 = mrb_as_float(mrb, mrb_funcall(mrb, circle_obj, "radius", 0));
-
- return mrb_bool_value(CheckCollisionCircles(*center1, radius1, *center2, radius2));
-}
-
-static mrb_value
-mrb_Rectangle_collide_with_rec(mrb_state* mrb, mrb_value self) {
- mrb_value rec1_obj;
- mrb_get_args(mrb, "o", &rec1_obj);
-
- Rectangle *rec1 = DATA_GET_PTR(mrb, rec1_obj, &Rectangle_type, Rectangle);
- Rectangle *rec2 = DATA_GET_PTR(mrb, self, &Rectangle_type, Rectangle);
-
- return mrb_bool_value(CheckCollisionRecs(*rec1, *rec2));
-}
-
-static mrb_value
-mrb_Rectangle_collide_with_point(mrb_state* mrb, mrb_value self) {
- mrb_value vec_obj;
- mrb_get_args(mrb, "o", &vec_obj);
- Vector2 *point = DATA_GET_PTR(mrb, vec_obj, &Vector2_type, Vector2);
- Rectangle *rec_self = DATA_GET_PTR(mrb, self, &Rectangle_type, Rectangle);
-
- return mrb_bool_value(CheckCollisionPointRec(*point, *rec_self));
-}
-
-bool
-check_collision_circle_rec(mrb_state* mrb, mrb_value circle_obj, mrb_value rec_obj) {
- mrb_value vector_obj = mrb_funcall(mrb, circle_obj, "vector", 0);
- mrb_float radius = mrb_as_float(mrb, mrb_funcall(mrb, circle_obj, "radius", 0));
- Vector2 *center = DATA_GET_PTR(mrb, vector_obj, &Vector2_type, Vector2);
- Rectangle *rec = DATA_GET_PTR(mrb, rec_obj, &Rectangle_type, Rectangle);
-
- return CheckCollisionCircleRec(*center, radius, *rec);
-}
-
-static mrb_value
-mrb_Rectangle_collide_with_circ(mrb_state* mrb, mrb_value self) {
- mrb_value circle_obj;
- mrb_get_args(mrb, "o", &circle_obj);
-
- return mrb_bool_value(check_collision_circle_rec(mrb, circle_obj, self));
-}
-
-static mrb_value
-mrb_Circle_collide_with_rec(mrb_state* mrb, mrb_value self) {
- mrb_value rec_obj;
- mrb_get_args(mrb, "o", &rec_obj);
-
- return mrb_bool_value(check_collision_circle_rec(mrb, self, rec_obj));
-}
-
-static mrb_value
-mrb_Rectangle_get_collision_rec(mrb_state* mrb, mrb_value self) {
- mrb_value rec_obj;
- mrb_get_args(mrb, "o", &rec_obj);
-
- Rectangle *rec_self = DATA_GET_PTR(mrb, self, &Rectangle_type, Rectangle);
- Rectangle *rec_other = DATA_GET_PTR(mrb, rec_obj, &Rectangle_type, Rectangle);
- Rectangle *collision_rec = (Rectangle *)mrb_malloc(mrb, sizeof(Rectangle));
- *collision_rec = GetCollisionRec(*rec_self, *rec_other);
-
- struct RClass *c = mrb_module_get(mrb, "Raylib");
- struct RClass *rec_class = mrb_class_get_under(mrb, c, Rectangle_type.struct_name);
- return mrb_obj_value(Data_Wrap_Struct(mrb, rec_class, &Rectangle_type, collision_rec));
-}
-
-static mrb_value
-mrb_draw_poly(mrb_state* mrb, mrb_value self) {
- // void DrawPoly(Vector2 center, int sides, float radius, float rotation, Color color); // Draw a regular polygon (Vector version)
- Vector2 center = {0};
- int sides = 3;
- float radius = 100;
- float rotation = 0;
- Color color = WHITE;
-
- uint32_t kw_num = 5;
- const mrb_sym kw_names[] = {
- mrb_intern_lit(mrb, "center"),
- mrb_intern_lit(mrb, "sides"),
- mrb_intern_lit(mrb, "radius"),
- mrb_intern_lit(mrb, "rotation"),
- mrb_intern_lit(mrb, "color"),
- };
- mrb_value kw_values[kw_num];
- const mrb_kwargs kwargs = { kw_num, 0, kw_names, kw_values, NULL };
- mrb_get_args(mrb, "|:", &kwargs);
-
- //center
- if (!(mrb_undef_p(kw_values[0]))) {
- Vector2 *vector2_data;
- UNWRAPSTRUCT(Vector2, Vector2_type, kw_values[0], vector2_data);
- center = *vector2_data;
- }
-
- // sides
- if (!(mrb_undef_p(kw_values[1]))) {
- sides = mrb_as_int(mrb, kw_values[1]);
- }
-
- // radius
- if (!(mrb_undef_p(kw_values[2]))) {
- radius = mrb_as_float(mrb, kw_values[2]);
- }
-
- // rotation
- if (!mrb_undef_p(kw_values[3])) {
- rotation = mrb_as_float(mrb, kw_values[3]) / 0.017453;
- }
-
- // color
- if (!mrb_undef_p(kw_values[4])) {
- Color *color_data;
- UNWRAPSTRUCT(Color, Color_type, kw_values[4], color_data);
- color = *color_data;
- }
-
- DrawPoly(center, sides, radius, rotation, color);
- return mrb_nil_value();
-}
-
-static mrb_value
-mrb_draw_poly_lines(mrb_state* mrb, mrb_value self) {
- // void DrawPoly(Vector2 center, int sides, float radius, float rotation, Color color); // Draw a regular polygon (Vector version)
- Vector2 center = {0};
- int sides = 3;
- float radius = 100;
- float rotation = 0;
- float line_thickness = 1;
- Color color = WHITE;
-
- uint32_t kw_num = 6;
- const mrb_sym kw_names[] = {
- mrb_intern_lit(mrb, "center"),
- mrb_intern_lit(mrb, "sides"),
- mrb_intern_lit(mrb, "radius"),
- mrb_intern_lit(mrb, "rotation"),
- mrb_intern_lit(mrb, "line_thickness"),
- mrb_intern_lit(mrb, "color"),
- };
- mrb_value kw_values[kw_num];
- const mrb_kwargs kwargs = { kw_num, 0, kw_names, kw_values, NULL };
- mrb_get_args(mrb, "|:", &kwargs);
-
- //center
- if (!(mrb_undef_p(kw_values[0]))) {
- Vector2 *vector2_data;
- UNWRAPSTRUCT(Vector2, Vector2_type, kw_values[0], vector2_data);
- center = *vector2_data;
- }
-
- // sides
- if (!(mrb_undef_p(kw_values[1]))) {
- sides = mrb_as_int(mrb, kw_values[1]);
- }
-
- // radius
- if (!(mrb_undef_p(kw_values[2]))) {
- radius = mrb_as_float(mrb, kw_values[2]);
- }
-
- // rotation
- if (!mrb_undef_p(kw_values[3])) {
- rotation = mrb_as_float(mrb, kw_values[3]) / 0.017453;
- }
-
- // line_thickness
- if (!mrb_undef_p(kw_values[4])) {
- line_thickness = mrb_as_float(mrb, kw_values[4]);
- }
-
- // color
- if (!mrb_undef_p(kw_values[5])) {
- Color *color_data;
- UNWRAPSTRUCT(Color, Color_type, kw_values[5], color_data);
- color = *color_data;
- }
-
- DrawPolyLinesEx(center, sides, radius, rotation, line_thickness, color);
- return mrb_nil_value();
-}
-
-static mrb_value
-mrb_Rectangle_draw_rectangle_rec(mrb_state* mrb, mrb_value self) {
- mrb_value color_obj;
- mrb_get_args(mrb, "o", &color_obj);
-
- Color *color;
- UNWRAPSTRUCT(Color, Color_type, color_obj, color);
- Rectangle *rec_self = DATA_GET_PTR(mrb, self, &Rectangle_type, Rectangle);
- DrawRectangleRec(*rec_self, *color);
-
- return mrb_nil_value();
-}
-
-static mrb_value
-mrb_Rectangle_draw_rectangle_lines_ex(mrb_state* mrb, mrb_value self) {
- mrb_value color_obj;
- mrb_float line_thick;
- mrb_get_args(mrb, "fo", &line_thick, &color_obj);
-
- Color *color;
- UNWRAPSTRUCT(Color, Color_type, color_obj, color);
- Rectangle *rec_self = DATA_GET_PTR(mrb, self, &Rectangle_type, Rectangle);
- DrawRectangleLinesEx(*rec_self, line_thick, *color);
-
- return mrb_nil_value();
-}
-
-void
-mrb_mruby_raylib_gem_init(mrb_state* mrb) {
- mrb_init_raylib_core(mrb);
- mrb_init_raylib_textures(mrb);
- mrb_init_raylib_text(mrb);
-
- struct RClass *raylib = mrb_define_module(mrb, "Raylib");
- mrb_define_module_function(mrb, raylib, "platform", mrb_platform, MRB_ARGS_NONE());
- mrb_define_module_function(mrb, raylib, "_draw_text", mrb_draw_text, MRB_ARGS_OPT(5));
- mrb_define_module_function(mrb, raylib, "call_main_loop", mrb_call_main_loop, MRB_ARGS_NONE());
- mrb_define_module_function(mrb, raylib, "target_fps=", mrb_target_fps, MRB_ARGS_REQ(1));
- mrb_define_module_function(mrb, raylib, "fps", mrb_fps, MRB_ARGS_NONE());
- mrb_define_module_function(mrb, raylib, "frame_time", mrb_frame_time, MRB_ARGS_NONE());
- mrb_define_module_function(mrb, raylib, "time", mrb_time, MRB_ARGS_NONE());
- mrb_define_module_function(mrb, raylib, "mouse_button_pressed?", mrb_is_mouse_button_pressed, MRB_ARGS_REQ(1));
- mrb_define_module_function(mrb, raylib, "mouse_button_down?", mrb_is_mouse_button_down, MRB_ARGS_REQ(1));
- mrb_define_module_function(mrb, raylib, "mouse_button_released?", mrb_is_mouse_button_released, MRB_ARGS_REQ(1));
- mrb_define_module_function(mrb, raylib, "mouse_button_up?", mrb_is_mouse_button_up, MRB_ARGS_REQ(1));
- mrb_define_module_function(mrb, raylib, "key_pressed?", mrb_is_key_pressed, MRB_ARGS_REQ(1));
- mrb_define_module_function(mrb, raylib, "key_down?", mrb_is_key_down, MRB_ARGS_REQ(1));
- mrb_define_module_function(mrb, raylib, "key_released?", mrb_is_key_released, MRB_ARGS_REQ(1));
- mrb_define_module_function(mrb, raylib, "key_up?", mrb_is_key_up, MRB_ARGS_REQ(1));
- mrb_define_module_function(mrb, raylib, "_next_key_pressed", mrb_get_key_pressed, MRB_ARGS_NONE());
- mrb_define_module_function(mrb, raylib, "mouse_x", mrb_get_mouse_x, MRB_ARGS_NONE());
- mrb_define_module_function(mrb, raylib, "mouse_y", mrb_get_mouse_y, MRB_ARGS_NONE());
- mrb_define_module_function(mrb, raylib, "mouse_position", mrb_get_mouse_position, MRB_ARGS_NONE());
- mrb_define_module_function(mrb, raylib, "mouse_wheel", mrb_get_mouse_wheel_move, MRB_ARGS_NONE());
- mrb_define_module_function(mrb, raylib, "begin_blend_mode", mrb_begin_blend_mode, MRB_ARGS_REQ(1));
- mrb_define_module_function(mrb, raylib, "end_blend_mode", mrb_end_blend_mode, 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);
- mrb_define_method(mrb, color_class, "initialize", mrb_Color_initialize, MRB_ARGS_OPT(4));
- mrb_define_method(mrb, color_class, "r", mrb_Color_get_red, MRB_ARGS_NONE());
- mrb_define_method(mrb, color_class, "r=", mrb_Color_set_red, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, color_class, "g", mrb_Color_get_green, MRB_ARGS_NONE());
- mrb_define_method(mrb, color_class, "g=", mrb_Color_set_green, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, color_class, "b", mrb_Color_get_blue, MRB_ARGS_NONE());
- mrb_define_method(mrb, color_class, "b=", mrb_Color_set_blue, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, color_class, "a", mrb_Color_get_alpha, MRB_ARGS_NONE());
- mrb_define_method(mrb, color_class, "a=", mrb_Color_set_alpha, MRB_ARGS_REQ(1));
-
- mrb_define_module_function(mrb, raylib, "init_audio_device", mrb_init_audio_device, MRB_ARGS_NONE());
- mrb_define_module_function(mrb, raylib, "audio_device_ready?", mrb_is_audio_device_ready, MRB_ARGS_NONE());
- mrb_define_module_function(mrb, raylib, "close_audio_device", mrb_close_audio_device, MRB_ARGS_NONE());
- mrb_define_module_function(mrb, raylib, "set_master_volume", mrb_set_master_volume, MRB_ARGS_REQ(1));
-
- struct RClass *sound_class = mrb_define_class_under(mrb, raylib, "Sound", mrb->object_class);
- MRB_SET_INSTANCE_TT(sound_class, MRB_TT_DATA);
- mrb_define_method(mrb, sound_class, "initialize", mrb_Sound_initialize, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, sound_class, "play", mrb_Sound_play, MRB_ARGS_NONE());
- mrb_define_method(mrb, sound_class, "stop", mrb_Sound_stop, MRB_ARGS_NONE());
- mrb_define_method(mrb, sound_class, "pause", mrb_Sound_pause, MRB_ARGS_NONE());
- mrb_define_method(mrb, sound_class, "resume", mrb_Sound_resume, MRB_ARGS_NONE());
- mrb_define_method(mrb, sound_class, "volume=", mrb_Sound_set_volume, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, sound_class, "pitch=", mrb_Sound_set_pitch, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, sound_class, "playing?", mrb_Sound_is_playing, MRB_ARGS_NONE());
-
- struct RClass *music_class = mrb_define_class_under(mrb, raylib, "Music", mrb->object_class);
- MRB_SET_INSTANCE_TT(music_class, MRB_TT_DATA);
- mrb_define_method(mrb, music_class, "initialize", mrb_Music_initialize, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, music_class, "play", mrb_Music_play, MRB_ARGS_NONE());
- mrb_define_method(mrb, music_class, "stop", mrb_Music_stop, MRB_ARGS_NONE());
- mrb_define_method(mrb, music_class, "pause", mrb_Music_pause, MRB_ARGS_NONE());
- mrb_define_method(mrb, music_class, "resume", mrb_Music_resume, MRB_ARGS_NONE());
- mrb_define_method(mrb, music_class, "volume=", mrb_Music_set_volume, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, music_class, "pitch=", mrb_Music_set_pitch, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, music_class, "seek", mrb_Music_seek, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, music_class, "playing?", mrb_Music_is_playing, MRB_ARGS_NONE());
- mrb_define_method(mrb, music_class, "time_length", mrb_Music_get_time_length, MRB_ARGS_NONE());
- mrb_define_method(mrb, music_class, "time_played", mrb_Music_get_time_played, MRB_ARGS_NONE());
-
- struct RClass *vector2_class = mrb_define_class_under(mrb, raylib, "Vector2", mrb->object_class);
- MRB_SET_INSTANCE_TT(vector2_class, MRB_TT_DATA);
- mrb_define_method(mrb, vector2_class, "initialize", mrb_Vector2_initialize, MRB_ARGS_OPT(2));
- mrb_define_method(mrb, vector2_class, "x", mrb_Vector2_get_x, MRB_ARGS_NONE());
- mrb_define_method(mrb, vector2_class, "x=", mrb_Vector2_set_x, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, vector2_class, "y", mrb_Vector2_get_y, MRB_ARGS_NONE());
- mrb_define_method(mrb, vector2_class, "y=", mrb_Vector2_set_y, MRB_ARGS_REQ(1));
-
- struct RClass *rectangle_class = mrb_define_class_under(mrb, raylib, "Rectangle", mrb->object_class);
- MRB_SET_INSTANCE_TT(rectangle_class, MRB_TT_DATA);
- mrb_define_method(mrb, rectangle_class, "initialize", mrb_Rectangle_initialize, MRB_ARGS_OPT(4));
- mrb_define_method(mrb, rectangle_class, "x", mrb_Rectangle_get_x, MRB_ARGS_NONE());
- mrb_define_method(mrb, rectangle_class, "x=", mrb_Rectangle_set_x, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, rectangle_class, "y", mrb_Rectangle_get_y, MRB_ARGS_NONE());
- mrb_define_method(mrb, rectangle_class, "y=", mrb_Rectangle_set_y, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, rectangle_class, "width", mrb_Rectangle_get_width, MRB_ARGS_NONE());
- mrb_define_method(mrb, rectangle_class, "width=", mrb_Rectangle_set_width, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, rectangle_class, "w", mrb_Rectangle_get_width, MRB_ARGS_NONE());
- mrb_define_method(mrb, rectangle_class, "w=", mrb_Rectangle_set_width, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, rectangle_class, "height", mrb_Rectangle_get_height, MRB_ARGS_NONE());
- mrb_define_method(mrb, rectangle_class, "height=", mrb_Rectangle_set_height, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, rectangle_class, "h", mrb_Rectangle_get_height, MRB_ARGS_NONE());
- mrb_define_method(mrb, rectangle_class, "h=", mrb_Rectangle_set_height, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, rectangle_class, "collision_rec", mrb_Rectangle_get_collision_rec, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, rectangle_class, "collide_with_rec?", mrb_Rectangle_collide_with_rec, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, rectangle_class, "collide_with_circle?", mrb_Rectangle_collide_with_circ, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, rectangle_class, "collide_with_point?", mrb_Rectangle_collide_with_point, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, rectangle_class, "_draw", mrb_Rectangle_draw_rectangle_rec, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, rectangle_class, "_draw_lines", mrb_Rectangle_draw_rectangle_lines_ex, MRB_ARGS_REQ(2));
- mrb_define_module_function(mrb, raylib, "draw_poly", mrb_draw_poly, MRB_ARGS_OPT(1));
- mrb_define_module_function(mrb, raylib, "draw_poly_lines", mrb_draw_poly_lines, MRB_ARGS_OPT(1));
-
- struct RClass *circle_class = mrb_define_class_under(mrb, raylib, "Circle", mrb->object_class);
- mrb_define_method(mrb, circle_class, "collide_with_rec?", mrb_Circle_collide_with_rec, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, circle_class, "collide_with_circle?", mrb_Circle_collide_with_circ, MRB_ARGS_REQ(1));
-
- struct RClass *npatch_info_class = mrb_define_class_under(mrb, raylib, "NPatchInfo", mrb->object_class);
- mrb_define_method(mrb, npatch_info_class, "initialize", mrb_NPatchInfo_initialize, MRB_ARGS_REQ(1) | MRB_ARGS_OPT(5));
- /* accessors probably not needed
- mrb_define_method(mrb, npatch_info_class, "source_rec", mrb_NPatchInfo_get_source_rec, MRB_ARGS_NONE());
- mrb_define_method(mrb, npatch_info_class, "left", mrb_NPatchInfo_get_left, MRB_ARGS_NONE());
- mrb_define_method(mrb, npatch_info_class, "top", mrb_NPatchInfo_get_top, MRB_ARGS_NONE());
- mrb_define_method(mrb, npatch_info_class, "right", mrb_NPatchInfo_get_right, MRB_ARGS_NONE());
- mrb_define_method(mrb, npatch_info_class, "bottom", mrb_NPatchInfo_get_bottom, MRB_ARGS_NONE());
- mrb_define_method(mrb, npatch_info_class, "layout", mrb_NPatchInfo_get_layout, MRB_ARGS_NONE());*/
-
-#if defined(PLATFORM_WEB)
- mrb_define_module_function(mrb, raylib, "emscripten_set_main_loop", mrb_emscripten_set_main_loop, MRB_ARGS_NONE());
-#endif
-}
-
-void
-mrb_mruby_raylib_gem_final(mrb_state* mrb) {
- /* finalizer */
- if (IsWindowReady()) { CloseWindow(); };
-}