Skip to content

Major Refactor Progress Thread #35

@HellRok

Description

@HellRok

Progress

Methods Refactored: 169
Methods Left: 0
Taylor Refactor Progress: 100.0%

01 August 2025

Had a short break while I tackled the Shader class but I have finally finished it off. It's been exciting and I'm keen to get back into it and knock out the last 20 methods!!!

30 June 2025

Got delayed by hunting down memory issues. On the up side I completely refactored reference counting and it's now a lot simpler and actually tested!

12 June 2025

Figured I needed to add a couple more methods into this refactor. Also did a deep dive on how to properly handle nested structs in C++ and mruby. I think I've got it sorted and even added some nice macros to make it easier to get right.

1 June 2025

I figured I should be a bit more public about the progress of this since I've been posting on my mastodon account. I'll try to keep this up to date as I go. I had a big lull in my motivation once I hit some gnarly problems with testing, but having found a resolution to that I have been driven and making really good progress. I think I've moved 15~% in the last couple of months, which included a week or two for a massive change in testing.

The Checklist

This list may be incomplete as I started it a couple of months into the refactor but should be accurate in terms of what's left in terms of migrating methods.

  • Font#new
  • Font#unload
  • Font#draw
  • Font#measure
  • Font#to_image
  • Camera2D#initialize
  • Camera2D#draw
  • Camera2D#as_in_viewport
  • Camera2D#as_in_world
  • Image#export
  • Image#copy
  • Image#resize!
  • Image#crop!
  • Image#rotate_clockwise!
  • Image#rotate_counter_clockwise!
  • Image#to_texture
  • Image#premultiply_alpha
  • Image#generate_mipmaps!
  • Image#tint!
  • Image#invert!
  • Image#grayscale!
  • Image#contrast!
  • Image#brightness!
  • Image#replace!
  • Image#draw!
  • Music#initialize
  • Music#unload
  • Music#play
  • Music#playing?
  • Music#stop
  • Music#played
  • Music#update
  • Music#pause
  • Music#resume
  • Music#length
  • Music#volume=
  • Music#pitch=
  • Sound#initialize
  • Sound#unload
  • Sound#play
  • Sound#stop
  • Sound#pause
  • Sound#resume
  • Sound#playing?
  • Sound#volume=
  • Sound#pitch=
  • #mrb_key_pressed
  • #mrb_key_down
  • #mrb_key_released
  • #mrb_key_up
  • #mrb_set_exit_key
  • #mrb_get_key_pressed
  • #mrb_get_char_pressed
  • #mrb_init_window
  • #mrb_window_should_close
  • #mrb_close_window
  • #mrb_window_ready
  • #mrb_window_state
  • #mrb_set_window_state
  • #mrb_window_fullscreen
  • #mrb_window_hidden
  • #mrb_window_minimised
  • #mrb_window_maximised
  • #mrb_window_focused
  • #mrb_window_resized
  • #mrb_clear_window_state
  • #mrb_toggle_fullscreen
  • #mrb_minimise_window
  • #mrb_restore_window
  • #mrb_set_window_icon
  • #mrb_set_window_title
  • #mrb_set_window_position
  • #mrb_set_window_min_size
  • #mrb_set_window_size
  • #mrb_get_screen_width
  • #mrb_get_screen_height
  • #mrb_get_window_position
  • #mrb_get_screen_data
  • #mrb_android
  • #mrb_browser
  • #mrb_linux
  • #mrb_osx
  • #mrb_windows
  • #mrb_released
  • #mrb_gamepad_available
  • #mrb_get_gamepad_name
  • #mrb_gamepad_button_pressed
  • #mrb_gamepad_button_down
  • #mrb_gamepad_button_released
  • #mrb_gamepad_button_up
  • #mrb_get_gamepad_button_pressed
  • #mrb_get_gamepad_axis_count
  • #mrb_get_gamepad_axis_movement
  • #mrb_set_gamepad_mappings
  • #mrb_get_touch_position
  • #mrb_clear_background
  • #mrb_begin_drawing
  • #mrb_end_drawing
  • #mrb_begin_texture_mode
  • #mrb_end_texture_mode
  • #mrb_begin_shader_mode
  • #mrb_end_shader_mode
  • #mrb_begin_scissor_mode
  • #mrb_end_scissor_mode
  • #mrb_files_dropped
  • #mrb_get_dropped_files
  • #mrb_set_gestures_enabled
  • #mrb_get_gesture_detected
  • IsGestureDetected
  • GetGestureHoldDuration
  • GetGestureDragVector
  • GetGestureDragAngle
  • GetGesturePinchVector
  • GetGesturePinchAngle
  • #mrb_take_screenshot
  • #mrb_set_config_flags
  • #mrb_set_trace_log_level
  • #mrb_open_url
  • #mrb_set_clipboard_text
  • #mrb_get_clipboard_text
  • #mrb_set_target_fps
  • #mrb_get_fps
  • #mrb_get_frame_time
  • #mrb_get_time
  • #mrb_maximise_window
  • #mrb_set_window_monitor
  • #mrb_get_monitor_count
  • #mrb_get_current_monitor
  • #mrb_get_monitor_position
  • #mrb_get_monitor_width
  • #mrb_get_monitor_height
  • #mrb_get_monitor_refresh_rate
  • #mrb_get_window_scale_dpi
  • #mrb_Circle_initialize
  • #mrb_draw_circle
  • #mrb_draw_circle_v
  • #mrb_draw_circle_sector
  • #mrb_draw_circle_sector_lines
  • #mrb_draw_circle_gradient
  • #mrb_draw_circle_lines
  • #mrb_check_collision_point_rec
  • #mrb_Line_initialize
  • #mrb_draw_line
  • #mrb_draw_line_v
  • #mrb_draw_line_ex
  • #mrb_draw_line_bezier
  • #mrb_draw_line_bezier_quad
  • #mrb_draw_line_strip
  • #mrb_draw_pixel
  • #mrb_draw_pixel_v
  • #mrb_Rectangle_initialize
  • #mrb_draw_rectangle
  • #mrb_draw_rectangle_rec
  • #mrb_draw_rectangle_pro
  • #mrb_draw_rectangle_gradient_v
  • #mrb_draw_rectangle_gradient_h
  • #mrb_draw_rectangle_gradient_ex
  • #mrb_draw_rectangle_lines
  • #mrb_draw_rectangle_lines_ex
  • #mrb_draw_rectangle_rounded
  • #mrb_draw_rectangle_rounded_lines
  • #mrb_load_shader_from_string
  • #mrb_load_shader
  • #mrb_unload_shader
  • #mrb_shader_ready
  • #mrb_get_shader_location
  • #mrb_set_shader_values
  • #mrb_draw_fps
  • #mrb_load_texture
  • #mrb_unload_texture
  • #mrb_set_texture_filter
  • #mrb_gen_texture_mipmaps
  • #mrb_draw_texture
  • #mrb_draw_texture_pro
  • #mrb_fade

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions