diff options
| author | realtradam <[email protected]> | 2022-02-09 23:45:57 -0500 |
|---|---|---|
| committer | realtradam <[email protected]> | 2022-02-09 23:45:57 -0500 |
| commit | e06bb3f7ee54e67a5e2e54bdb0eeb886e52afe3c (patch) | |
| tree | 527da93da20d8cb4920d4efdc7a53511084a8654 /src/text.c | |
| parent | 96580c44bff6b466188b0e71d974829228e2fa88 (diff) | |
| download | mruby-raylib-e06bb3f7ee54e67a5e2e54bdb0eeb886e52afe3c.tar.gz mruby-raylib-e06bb3f7ee54e67a5e2e54bdb0eeb886e52afe3c.zip | |
text drawing completed
Diffstat (limited to 'src/text.c')
| -rw-r--r-- | src/text.c | 74 |
1 files changed, 55 insertions, 19 deletions
@@ -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()); } |
