summaryrefslogtreecommitdiffhomepage
path: root/src/text.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/text.c')
-rw-r--r--src/text.c74
1 files changed, 55 insertions, 19 deletions
diff --git a/src/text.c b/src/text.c
index eb6133b..ad03b24 100644
--- a/src/text.c
+++ b/src/text.c
@@ -8,20 +8,25 @@
#include "mruby-raylib/types.h"
#include <raylib.h>
-//Font font,
-//const char *text,
-//Vector2 position, # replace with x/y?
-//Vector2 origin,
-//float rotation,
-//float fontSize,
-//float spacing,
-//Color tint
+
+/*
+ * Draw the string as text on the screen.
+ * @overload draw(x: 0, y: 0, origin: Rl::Vector2.default, rotation: 0, font_size: 20, spacing: font_size/10, font: Rl::Font.default)
+ * @param x [Integer] x position
+ * @param y [Integer] y position
+ * @param origin [Vector2] Offset
+ * @param rotation [Float] How much to rotate the text in radians
+ * @param font_size [Integer]
+ * @param spacing [Float] Spacing between letters
+ * @param font [Font] What font to render the text with
+ * @return [Nil]
+ */
static mrb_value
mrb_String_draw_text(mrb_state* mrb, mrb_value self) {
int x = 0;
int y = 0;
float rotation = 0;
- float font_size = 10.0;
+ float font_size = 20.0;
float spacing = 10.0;
Font default_font = GetFontDefault();
@@ -68,40 +73,71 @@ mrb_String_draw_text(mrb_state* mrb, mrb_value self) {
}
// spacing
- if (!mrb_undef_p(kw_values[5])) {
- spacing = mrb_as_float(mrb, kw_values[5]);
+ if (!mrb_undef_p(kw_values[6])) {
+ spacing = mrb_as_float(mrb, kw_values[6]);
} else {
spacing = font_size/10.0;
}
// color
- if (mrb_undef_p(kw_values[6])) {
+ if (mrb_undef_p(kw_values[7])) {
struct RClass *raylib = mrb_module_get(mrb, "Raylib");
struct RClass *color = mrb_class_get_under(mrb, raylib, Color_type.struct_name);
- kw_values[6] = mrb_funcall(mrb, mrb_obj_value(color), "black", 0);
+ kw_values[7] = mrb_funcall(mrb, mrb_obj_value(color), "blue", 0);
}
Color *tint_data;
- UNWRAPSTRUCT(Color, Color_type, kw_values[6], tint_data);
+ UNWRAPSTRUCT(Color, Color_type, kw_values[7], tint_data);
Vector2 *vector2_data;
UNWRAPSTRUCT(Vector2, Vector2_type, kw_values[3], vector2_data);
Vector2 position = { x, y };
- printf("TEST: ");
- printf(mrb_str_to_cstr(mrb, self));
DrawTextPro(default_font, mrb_str_to_cstr(mrb, self), position, *vector2_data, rotation, font_size, spacing, *tint_data);
- DrawText(x, y, mrb_str_to_cstr(mrb, self), font_size, *tint_data);
return mrb_nil_value();
}
+/*
+ * Draw the fps with a color depending on how high the fps is(30+ is green, 15-30 is orange, <15 is red).
+ * @return [Nil]
+ */
+static mrb_value
+mrb_Raylib_draw_fps(mrb_state* mrb, mrb_value self) {
+ int x = 10;
+ int y = 10;
+
+ uint32_t kw_num = 2;
+ const mrb_sym kw_names[] = {
+ mrb_intern_lit(mrb, "x"),
+ mrb_intern_lit(mrb, "y"),
+ };
+ mrb_value kw_values[kw_num];
+ const mrb_kwargs kwargs = { kw_num, 0, kw_names, kw_values, NULL };
+ mrb_get_args(mrb, "|:", &kwargs);
+
+ // x
+ if (!mrb_undef_p(kw_values[0])) {
+ x = mrb_as_int(mrb, kw_values[0]);
+ }
+
+ // y
+ if (!mrb_undef_p(kw_values[1])) {
+ y = mrb_as_int(mrb, kw_values[1]);
+ }
+
+ DrawFPS(x, y);
+ mrb_nil_value();
+}
+
+
void
mrb_init_raylib_text(mrb_state* mrb) {
- //struct RClass *string_class = mrb->string_class;//mrb_define_class(mrb, "String"); // built in string class
struct RClass *raylib = mrb_define_module(mrb, "Raylib");
+ struct RClass *string_extension = mrb_define_module_under(mrb, raylib, "StringExtension");
struct RClass *font_class = mrb_define_class_under(mrb, raylib, "Font", mrb->object_class);
- mrb_define_method(mrb, mrb->string_class, "draw", mrb_String_draw_text, MRB_ARGS_OPT(1));
+ mrb_define_method(mrb, string_extension, "draw", mrb_String_draw_text, MRB_ARGS_OPT(1));
+ mrb_define_module_function(mrb, raylib, "draw_fps", mrb_Raylib_draw_fps, MRB_ARGS_NONE());
}