summaryrefslogtreecommitdiffhomepage
path: root/src/raylib.c
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2022-01-19 23:51:45 -0500
committerrealtradam <[email protected]>2022-01-19 23:51:45 -0500
commit3e7084f7ec4f00fda1b2f63219b8ba94ca57dc04 (patch)
tree67bda205625332bed6294b7064c5969ef4f3065d /src/raylib.c
parent05588795d7bfb5de496272d97ea146d1ded9b7d8 (diff)
downloadmruby-raylib-3e7084f7ec4f00fda1b2f63219b8ba94ca57dc04.tar.gz
mruby-raylib-3e7084f7ec4f00fda1b2f63219b8ba94ca57dc04.zip
Complete Color methods
Diffstat (limited to 'src/raylib.c')
-rw-r--r--src/raylib.c87
1 files changed, 78 insertions, 9 deletions
diff --git a/src/raylib.c b/src/raylib.c
index 2cd92fb..777fafe 100644
--- a/src/raylib.c
+++ b/src/raylib.c
@@ -39,26 +39,88 @@ mrb_Color_initialize(mrb_state* mrb, mrb_value self) {
}
static mrb_value
-mrb_Color_get_red(mrb_state* state, mrb_value self) {
+mrb_Color_get_red(mrb_state* mrb, mrb_value self) {
struct Color *color = NULL;
- Data_Get_Struct(state, self, &Color_type, color);
+ color = DATA_GET_PTR(mrb, self, &Color_type, Color);
return mrb_fixnum_value(color->r);
}
static mrb_value
+mrb_Color_set_red(mrb_state* mrb, mrb_value self) {
+ struct Color *color = NULL;
+ color = DATA_GET_PTR(mrb, self, &Color_type, 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) {
+ struct Color *color = NULL;
+ color = DATA_GET_PTR(mrb, self, &Color_type, Color);
+ return mrb_fixnum_value(color->g);
+}
+
+static mrb_value
+mrb_Color_set_green(mrb_state* mrb, mrb_value self) {
+ struct Color *color = NULL;
+ color = DATA_GET_PTR(mrb, self, &Color_type, 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) {
+ struct Color *color = NULL;
+ color = DATA_GET_PTR(mrb, self, &Color_type, Color);
+
+ return mrb_fixnum_value(color->b);
+}
+
+static mrb_value
+mrb_Color_set_blue(mrb_state* mrb, mrb_value self) {
+ struct Color *color = NULL;
+ color = DATA_GET_PTR(mrb, self, &Color_type, 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) {
+ struct Color *color = NULL;
+ color = DATA_GET_PTR(mrb, self, &Color_type, Color);
+ return mrb_fixnum_value(color->a);
+}
+
+static mrb_value
+mrb_Color_set_alpha(mrb_state* mrb, mrb_value self) {
+ struct Color *color = NULL;
+ color = DATA_GET_PTR(mrb, self, &Color_type, Color);
+ mrb_int a;
+ mrb_get_args(mrb, "i", &a);
+ color->a = a;
+
+ return mrb_fixnum_value(color->a);
+}
+
+
+
+static mrb_value
mrb_init_window(mrb_state* mrb, mrb_value self) {
- printf("1\n");
mrb_int screenWidth = 800;
- printf("2\n");
mrb_int screenHeight = 600;
- printf("3\n");
char* title = "Hello World from FelFlame!";
- printf("4\n");
mrb_get_args(mrb, "|iiz", &screenWidth, &screenHeight, &title);
- printf("5\n");
InitWindow(screenWidth, screenHeight, title);
- printf("6\n");
return mrb_nil_value();
}
@@ -84,7 +146,7 @@ mrb_draw_text(mrb_state* mrb, mrb_value self) {
struct Color *color = NULL;
mrb_get_args(mrb, "|ziiio", &text, &x, &y, &fontSize, &color_obj);
- Data_Get_Struct(mrb, color_obj, &Color_type, color);
+ color = DATA_GET_PTR(mrb, color_obj, &Color_type, Color);
DrawText(text, x, y, fontSize, *color);
return mrb_nil_value();
}
@@ -177,6 +239,13 @@ mrb_mruby_raylib_gem_init(mrb_state* mrb) {
mrb_define_class_method(mrb, raylib, "time", mrb_time, MRB_ARGS_NONE());
mrb_define_method(mrb, color_class, "initialize", mrb_Color_initialize, MRB_ARGS_REQ(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));
#if defined(PLATFORM_WEB)
mrb_define_class_method(mrb, raylib, "emscripten_set_main_loop", mrb_emscripten_set_main_loop, MRB_ARGS_NONE());
#endif