From c0b0816b8a593753116be6782fda2088adae744c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=9A=93?= Date: Mon, 28 Apr 2025 13:39:06 -0400 Subject: [PATCH] Add `wrap_property` helper function for bindings in libretro builds --- binding-sandbox/audio-binding.h | 40 ++++----- binding-sandbox/binding-util.h | 14 +++ binding-sandbox/bitmap-binding.h | 124 +++++++++++--------------- binding-sandbox/etc-binding.h | 119 +++++++++++++------------ binding-sandbox/font-binding.h | 130 ++++++++++------------------ binding-sandbox/graphics-binding.h | 44 +++++----- binding-sandbox/input-binding.h | 52 +++++------ binding-sandbox/plane-binding.h | 79 +++++++---------- binding-sandbox/sprite-binding.h | 121 +++++++++++--------------- binding-sandbox/table-binding.h | 25 +++--- binding-sandbox/tilemap-binding.h | 96 +++++++++----------- binding-sandbox/tilemapvx-binding.h | 62 ++++++------- binding-sandbox/viewport-binding.h | 64 +++++--------- binding-sandbox/window-binding.h | 96 ++++++++++---------- binding-sandbox/windowvx-binding.h | 128 +++++++++++++-------------- 15 files changed, 525 insertions(+), 669 deletions(-) diff --git a/binding-sandbox/audio-binding.h b/binding-sandbox/audio-binding.h index 5d0abbd0..a60c6fee 100644 --- a/binding-sandbox/audio-binding.h +++ b/binding-sandbox/audio-binding.h @@ -26,6 +26,8 @@ #include "sandbox.h" namespace mkxp_sandbox { + static VALUE audio_module; + SANDBOX_COROUTINE(audio_binding_init, static VALUE bgm_play(int32_t argc, wasm_ptr_t argv, VALUE self) { SANDBOX_COROUTINE(coro, @@ -336,28 +338,26 @@ namespace mkxp_sandbox { return SANDBOX_NIL; } - VALUE module; - void operator()() { BOOST_ASIO_CORO_REENTER (this) { - SANDBOX_AWAIT_AND_SET(module, rb_define_module, "Audio"); - SANDBOX_AWAIT(rb_define_module_function, module, "bgm_play", (VALUE (*)(ANYARGS))bgm_play, -1); - SANDBOX_AWAIT(rb_define_module_function, module, "bgm_stop", (VALUE (*)(ANYARGS))bgm_stop, 0); - SANDBOX_AWAIT(rb_define_module_function, module, "bgm_fade", (VALUE (*)(ANYARGS))bgm_fade, -1); - SANDBOX_AWAIT(rb_define_module_function, module, "bgm_pos", (VALUE (*)(ANYARGS))bgm_pos, -1); - SANDBOX_AWAIT(rb_define_module_function, module, "bgm_volume", (VALUE (*)(ANYARGS))bgm_volume, -1); - SANDBOX_AWAIT(rb_define_module_function, module, "bgm_set_volume", (VALUE (*)(ANYARGS))bgm_set_volume, -1); - SANDBOX_AWAIT(rb_define_module_function, module, "bgs_play", (VALUE (*)(ANYARGS))bgs_play, -1); - SANDBOX_AWAIT(rb_define_module_function, module, "bgs_stop", (VALUE (*)(ANYARGS))bgs_stop, 0); - SANDBOX_AWAIT(rb_define_module_function, module, "bgs_fade", (VALUE (*)(ANYARGS))bgs_fade, 1); - SANDBOX_AWAIT(rb_define_module_function, module, "bgs_pos", (VALUE (*)(ANYARGS))bgs_pos, 0); - SANDBOX_AWAIT(rb_define_module_function, module, "me_play", (VALUE (*)(ANYARGS))me_play, -1); - SANDBOX_AWAIT(rb_define_module_function, module, "me_stop", (VALUE (*)(ANYARGS))me_stop, 0); - SANDBOX_AWAIT(rb_define_module_function, module, "me_fade", (VALUE (*)(ANYARGS))me_fade, 1); - SANDBOX_AWAIT(rb_define_module_function, module, "se_play", (VALUE (*)(ANYARGS))se_play, -1); - SANDBOX_AWAIT(rb_define_module_function, module, "se_stop", (VALUE (*)(ANYARGS))se_stop, 0); - SANDBOX_AWAIT(rb_define_module_function, module, "setup_midi", (VALUE (*)(ANYARGS))setup_midi, 0); - SANDBOX_AWAIT(rb_define_module_function, module, "__reset__", (VALUE (*)(ANYARGS))reset, 0); + SANDBOX_AWAIT_AND_SET(audio_module, rb_define_module, "Audio"); + SANDBOX_AWAIT(rb_define_module_function, audio_module, "bgm_play", (VALUE (*)(ANYARGS))bgm_play, -1); + SANDBOX_AWAIT(rb_define_module_function, audio_module, "bgm_stop", (VALUE (*)(ANYARGS))bgm_stop, 0); + SANDBOX_AWAIT(rb_define_module_function, audio_module, "bgm_fade", (VALUE (*)(ANYARGS))bgm_fade, -1); + SANDBOX_AWAIT(rb_define_module_function, audio_module, "bgm_pos", (VALUE (*)(ANYARGS))bgm_pos, -1); + SANDBOX_AWAIT(rb_define_module_function, audio_module, "bgm_volume", (VALUE (*)(ANYARGS))bgm_volume, -1); + SANDBOX_AWAIT(rb_define_module_function, audio_module, "bgm_set_volume", (VALUE (*)(ANYARGS))bgm_set_volume, -1); + SANDBOX_AWAIT(rb_define_module_function, audio_module, "bgs_play", (VALUE (*)(ANYARGS))bgs_play, -1); + SANDBOX_AWAIT(rb_define_module_function, audio_module, "bgs_stop", (VALUE (*)(ANYARGS))bgs_stop, 0); + SANDBOX_AWAIT(rb_define_module_function, audio_module, "bgs_fade", (VALUE (*)(ANYARGS))bgs_fade, 1); + SANDBOX_AWAIT(rb_define_module_function, audio_module, "bgs_pos", (VALUE (*)(ANYARGS))bgs_pos, 0); + SANDBOX_AWAIT(rb_define_module_function, audio_module, "me_play", (VALUE (*)(ANYARGS))me_play, -1); + SANDBOX_AWAIT(rb_define_module_function, audio_module, "me_stop", (VALUE (*)(ANYARGS))me_stop, 0); + SANDBOX_AWAIT(rb_define_module_function, audio_module, "me_fade", (VALUE (*)(ANYARGS))me_fade, 1); + SANDBOX_AWAIT(rb_define_module_function, audio_module, "se_play", (VALUE (*)(ANYARGS))se_play, -1); + SANDBOX_AWAIT(rb_define_module_function, audio_module, "se_stop", (VALUE (*)(ANYARGS))se_stop, 0); + SANDBOX_AWAIT(rb_define_module_function, audio_module, "setup_midi", (VALUE (*)(ANYARGS))setup_midi, 0); + SANDBOX_AWAIT(rb_define_module_function, audio_module, "__reset__", (VALUE (*)(ANYARGS))reset, 0); } } ) diff --git a/binding-sandbox/binding-util.h b/binding-sandbox/binding-util.h index 5ce6d830..50c0ff9a 100644 --- a/binding-sandbox/binding-util.h +++ b/binding-sandbox/binding-util.h @@ -120,6 +120,20 @@ namespace mkxp_sandbox { } ) + SANDBOX_COROUTINE(wrap_property, + VALUE operator()(VALUE self, void *ptr, const char *iv, VALUE klass) { + VALUE obj; + + BOOST_ASIO_CORO_REENTER (this) { + SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); + set_private_data(obj, ptr); + SANDBOX_AWAIT(rb_iv_set, self, iv, obj); + } + + return obj; + } + ) + namespace _load { struct load_struct { VALUE obj; diff --git a/binding-sandbox/bitmap-binding.h b/binding-sandbox/bitmap-binding.h index 63e85a8e..90850f57 100644 --- a/binding-sandbox/bitmap-binding.h +++ b/binding-sandbox/bitmap-binding.h @@ -25,37 +25,30 @@ #include "sandbox.h" #include "binding-util.h" #include "bitmap.h" +#include "etc-binding.h" +#include "font-binding.h" namespace mkxp_sandbox { static struct mkxp_sandbox::bindings::rb_data_type bitmap_type; + static VALUE bitmap_class; SANDBOX_COROUTINE(bitmap_init_props, - ID id; - VALUE klass; - VALUE obj; VALUE font; + VALUE hires; VALUE hires_font; void operator()(Bitmap *bitmap, VALUE self) { BOOST_ASIO_CORO_REENTER (this) { - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Font"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(font, rb_class_new_instance, 0, NULL, klass); + SANDBOX_AWAIT_AND_SET(font, rb_class_new_instance, 0, NULL, font_class); SANDBOX_AWAIT(rb_iv_set, self, "font", font); // Leave property as default nil if hasHires() is false. if (bitmap->hasHires()) { bitmap->assumeRubyGC(); - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Bitmap"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(self, rb_obj_alloc, klass); - set_private_data(obj, bitmap->getHires()); - SANDBOX_AWAIT(rb_iv_set, self, "hires", obj); + SANDBOX_AWAIT_AND_SET(hires, wrap_property, self, bitmap->getHires(), "hires", bitmap_class); - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Font"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(hires_font, rb_class_new_instance, 0, NULL, klass); - SANDBOX_AWAIT(rb_iv_set, obj, "font", hires_font); + SANDBOX_AWAIT_AND_SET(hires_font, rb_class_new_instance, 0, NULL, font_class); + SANDBOX_AWAIT(rb_iv_set, hires, "font", hires_font); bitmap->getHires()->setInitFont(get_private_data(hires_font)); } @@ -167,15 +160,11 @@ namespace mkxp_sandbox { static VALUE rect(VALUE self) { SANDBOX_COROUTINE(coro, - ID id; - VALUE klass; VALUE obj; VALUE operator()(VALUE self) { BOOST_ASIO_CORO_REENTER (this) { - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Rect"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); + SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, rect_class); set_private_data(obj, new Rect(get_private_data(self)->rect())); } @@ -298,8 +287,6 @@ namespace mkxp_sandbox { int x; int y; Color *color; - ID id; - VALUE klass; VALUE obj; VALUE operator()(VALUE self, VALUE xval, VALUE yval) { @@ -319,9 +306,7 @@ namespace mkxp_sandbox { color = new Color(value); } - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Color"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); + SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, color_class); set_private_data(obj, color); } @@ -435,8 +420,6 @@ namespace mkxp_sandbox { static VALUE text_size(VALUE self, VALUE text) { SANDBOX_COROUTINE(coro, wasm_ptr_t str; - ID id; - VALUE klass; VALUE obj; VALUE operator()(VALUE self, VALUE text) { @@ -447,9 +430,7 @@ namespace mkxp_sandbox { } else { SANDBOX_AWAIT_AND_SET(str, rb_string_value_cstr, &text); } - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Rect"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); + SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, rect_class); set_private_data(obj, new Rect(get_private_data(self)->textSize((const char *)(**sb() + str)))); } @@ -537,8 +518,7 @@ namespace mkxp_sandbox { GFX_GUARD_EXC(bitmap = new Bitmap(*get_private_data(self), pos);); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_class, self); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, obj); + SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, bitmap_class); SANDBOX_AWAIT(bitmap_init_props, bitmap, obj); set_private_data(obj, bitmap); @@ -764,58 +744,56 @@ namespace mkxp_sandbox { return sb()->bind()()(self, value); } - VALUE klass; - void operator()() { BOOST_ASIO_CORO_REENTER (this) { bitmap_type = sb()->rb_data_type("Bitmap", NULL, dfree, NULL, NULL, 0, 0, 0); - SANDBOX_AWAIT_AND_SET(klass, rb_define_class, "Bitmap", sb()->rb_cObject()); - SANDBOX_AWAIT(rb_define_alloc_func, klass, alloc); - SANDBOX_AWAIT(rb_define_method, klass, "initialize", (VALUE (*)(ANYARGS))initialize, -1); - SANDBOX_AWAIT(rb_define_method, klass, "initialize_copy", (VALUE (*)(ANYARGS))initialize_copy, 1); - SANDBOX_AWAIT(rb_define_method, klass, "dispose", (VALUE (*)(ANYARGS))dispose, 0); - SANDBOX_AWAIT(rb_define_method, klass, "disposed?", (VALUE (*)(ANYARGS))disposed, 0); + SANDBOX_AWAIT_AND_SET(bitmap_class, rb_define_class, "Bitmap", sb()->rb_cObject()); + SANDBOX_AWAIT(rb_define_alloc_func, bitmap_class, alloc); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "initialize", (VALUE (*)(ANYARGS))initialize, -1); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "initialize_copy", (VALUE (*)(ANYARGS))initialize_copy, 1); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "dispose", (VALUE (*)(ANYARGS))dispose, 0); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "disposed?", (VALUE (*)(ANYARGS))disposed, 0); - SANDBOX_AWAIT(rb_define_method, klass, "width", (VALUE (*)(ANYARGS))width, 0); - SANDBOX_AWAIT(rb_define_method, klass, "height", (VALUE (*)(ANYARGS))height, 0); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "width", (VALUE (*)(ANYARGS))width, 0); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "height", (VALUE (*)(ANYARGS))height, 0); - SANDBOX_AWAIT(rb_define_method, klass, "hires", (VALUE (*)(ANYARGS))get_hires, 0); - SANDBOX_AWAIT(rb_define_method, klass, "hires=", (VALUE (*)(ANYARGS))set_hires, 1); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "hires", (VALUE (*)(ANYARGS))get_hires, 0); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "hires=", (VALUE (*)(ANYARGS))set_hires, 1); - SANDBOX_AWAIT(rb_define_method, klass, "rect", (VALUE (*)(ANYARGS))rect, 0); - SANDBOX_AWAIT(rb_define_method, klass, "blt", (VALUE (*)(ANYARGS))blt, -1); - SANDBOX_AWAIT(rb_define_method, klass, "stretch_blt", (VALUE (*)(ANYARGS))stretch_blt, -1); - SANDBOX_AWAIT(rb_define_method, klass, "fill_rect", (VALUE (*)(ANYARGS))fill_rect, -1); - SANDBOX_AWAIT(rb_define_method, klass, "clear", (VALUE (*)(ANYARGS))clear, 0); - SANDBOX_AWAIT(rb_define_method, klass, "get_pixel", (VALUE (*)(ANYARGS))get_pixel, 2); - SANDBOX_AWAIT(rb_define_method, klass, "set_pixel", (VALUE (*)(ANYARGS))set_pixel, 3); - SANDBOX_AWAIT(rb_define_method, klass, "hue_change", (VALUE (*)(ANYARGS))hue_change, 1); - SANDBOX_AWAIT(rb_define_method, klass, "draw_text", (VALUE (*)(ANYARGS))draw_text, -1); - SANDBOX_AWAIT(rb_define_method, klass, "text_size", (VALUE (*)(ANYARGS))text_size, 1); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "rect", (VALUE (*)(ANYARGS))rect, 0); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "blt", (VALUE (*)(ANYARGS))blt, -1); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "stretch_blt", (VALUE (*)(ANYARGS))stretch_blt, -1); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "fill_rect", (VALUE (*)(ANYARGS))fill_rect, -1); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "clear", (VALUE (*)(ANYARGS))clear, 0); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "get_pixel", (VALUE (*)(ANYARGS))get_pixel, 2); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "set_pixel", (VALUE (*)(ANYARGS))set_pixel, 3); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "hue_change", (VALUE (*)(ANYARGS))hue_change, 1); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "draw_text", (VALUE (*)(ANYARGS))draw_text, -1); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "text_size", (VALUE (*)(ANYARGS))text_size, 1); - SANDBOX_AWAIT(rb_define_method, klass, "raw_data", (VALUE (*)(ANYARGS))get_raw_data, 0); - SANDBOX_AWAIT(rb_define_method, klass, "raw_data=", (VALUE (*)(ANYARGS))set_raw_data, 1); - SANDBOX_AWAIT(rb_define_method, klass, "to_file", (VALUE (*)(ANYARGS))to_file, 1); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "raw_data", (VALUE (*)(ANYARGS))get_raw_data, 0); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "raw_data=", (VALUE (*)(ANYARGS))set_raw_data, 1); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "to_file", (VALUE (*)(ANYARGS))to_file, 1); - SANDBOX_AWAIT(rb_define_method, klass, "gradient_fill_rect", (VALUE (*)(ANYARGS))gradient_fill_rect, -1); - SANDBOX_AWAIT(rb_define_method, klass, "clear_rect", (VALUE (*)(ANYARGS))clear_rect, -1); - SANDBOX_AWAIT(rb_define_method, klass, "blur", (VALUE (*)(ANYARGS))blur, 0); - SANDBOX_AWAIT(rb_define_method, klass, "radial_blur", (VALUE (*)(ANYARGS))radial_blur, 2); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "gradient_fill_rect", (VALUE (*)(ANYARGS))gradient_fill_rect, -1); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "clear_rect", (VALUE (*)(ANYARGS))clear_rect, -1); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "blur", (VALUE (*)(ANYARGS))blur, 0); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "radial_blur", (VALUE (*)(ANYARGS))radial_blur, 2); - SANDBOX_AWAIT(rb_define_method, klass, "mega?", (VALUE (*)(ANYARGS))mega, 0); - SANDBOX_AWAIT(rb_define_singleton_method, klass, "max_size", (VALUE (*)(ANYARGS))max_size, 0); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "mega?", (VALUE (*)(ANYARGS))mega, 0); + SANDBOX_AWAIT(rb_define_singleton_method, bitmap_class, "max_size", (VALUE (*)(ANYARGS))max_size, 0); - SANDBOX_AWAIT(rb_define_method, klass, "animated?", (VALUE (*)(ANYARGS))get_animated, 0); - SANDBOX_AWAIT(rb_define_method, klass, "playing", (VALUE (*)(ANYARGS))get_playing, 0); - SANDBOX_AWAIT(rb_define_method, klass, "playing=", (VALUE (*)(ANYARGS))set_playing, 1); - SANDBOX_AWAIT(rb_define_method, klass, "play", (VALUE (*)(ANYARGS))play, 0); - SANDBOX_AWAIT(rb_define_method, klass, "stop", (VALUE (*)(ANYARGS))stop, 0); - SANDBOX_AWAIT(rb_define_method, klass, "goto_and_play", (VALUE (*)(ANYARGS))goto_and_play, 1); - SANDBOX_AWAIT(rb_define_method, klass, "goto_and_stop", (VALUE (*)(ANYARGS))goto_and_stop, 1); - SANDBOX_AWAIT(rb_define_method, klass, "snap_to_bitmap", (VALUE (*)(ANYARGS))snap_to_bitmap, 1); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "animated?", (VALUE (*)(ANYARGS))get_animated, 0); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "playing", (VALUE (*)(ANYARGS))get_playing, 0); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "playing=", (VALUE (*)(ANYARGS))set_playing, 1); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "play", (VALUE (*)(ANYARGS))play, 0); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "stop", (VALUE (*)(ANYARGS))stop, 0); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "goto_and_play", (VALUE (*)(ANYARGS))goto_and_play, 1); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "goto_and_stop", (VALUE (*)(ANYARGS))goto_and_stop, 1); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "snap_to_bitmap", (VALUE (*)(ANYARGS))snap_to_bitmap, 1); - SANDBOX_AWAIT(rb_define_method, klass, "font", (VALUE (*)(ANYARGS))get_font, 0); - SANDBOX_AWAIT(rb_define_method, klass, "font=", (VALUE (*)(ANYARGS))set_font, 1); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "font", (VALUE (*)(ANYARGS))get_font, 0); + SANDBOX_AWAIT(rb_define_method, bitmap_class, "font=", (VALUE (*)(ANYARGS))set_font, 1); } } ) diff --git a/binding-sandbox/etc-binding.h b/binding-sandbox/etc-binding.h index 858748ab..498a2325 100644 --- a/binding-sandbox/etc-binding.h +++ b/binding-sandbox/etc-binding.h @@ -30,8 +30,11 @@ namespace mkxp_sandbox { static struct mkxp_sandbox::bindings::rb_data_type color_type; + static VALUE color_class; static struct mkxp_sandbox::bindings::rb_data_type tone_type; + static VALUE tone_class; static struct mkxp_sandbox::bindings::rb_data_type rect_type; + static VALUE rect_class; SANDBOX_COROUTINE(etc_binding_init, SANDBOX_COROUTINE(color_binding_init, @@ -234,29 +237,27 @@ namespace mkxp_sandbox { return sb()->bind()()(buf); } - VALUE klass; - void operator()() { BOOST_ASIO_CORO_REENTER (this) { color_type = sb()->rb_data_type("Color", NULL, dfree, NULL, NULL, 0, 0, 0); - SANDBOX_AWAIT_AND_SET(klass, rb_define_class, "Color", sb()->rb_cObject()); - SANDBOX_AWAIT(rb_define_alloc_func, klass, alloc); - SANDBOX_AWAIT(rb_define_singleton_method, klass, "_load", (VALUE (*)(ANYARGS))load, 1); - SANDBOX_AWAIT(rb_define_method, klass, "initialize", (VALUE (*)(ANYARGS))initialize, -1); - SANDBOX_AWAIT(rb_define_method, klass, "initialize_copy", (VALUE (*)(ANYARGS))initialize_copy, 1); - SANDBOX_AWAIT(rb_define_method, klass, "set", (VALUE (*)(ANYARGS))set, -1); - SANDBOX_AWAIT(rb_define_method, klass, "red", (VALUE (*)(ANYARGS))get_red, 0); - SANDBOX_AWAIT(rb_define_method, klass, "red=", (VALUE (*)(ANYARGS))set_red, 1); - SANDBOX_AWAIT(rb_define_method, klass, "green", (VALUE (*)(ANYARGS))get_green, 0); - SANDBOX_AWAIT(rb_define_method, klass, "green=", (VALUE (*)(ANYARGS))set_green, 1); - SANDBOX_AWAIT(rb_define_method, klass, "blue", (VALUE (*)(ANYARGS))get_blue, 0); - SANDBOX_AWAIT(rb_define_method, klass, "blue=", (VALUE (*)(ANYARGS))set_blue, 1); - SANDBOX_AWAIT(rb_define_method, klass, "alpha", (VALUE (*)(ANYARGS))get_alpha, 0); - SANDBOX_AWAIT(rb_define_method, klass, "alpha=", (VALUE (*)(ANYARGS))set_alpha, 1); - SANDBOX_AWAIT(rb_define_method, klass, "==", (VALUE (*)(ANYARGS))equal, 1); - SANDBOX_AWAIT(rb_define_method, klass, "===", (VALUE (*)(ANYARGS))equal, 1); - SANDBOX_AWAIT(rb_define_method, klass, "to_s", (VALUE (*)(ANYARGS))stringify, 0); - SANDBOX_AWAIT(rb_define_method, klass, "inspect", (VALUE (*)(ANYARGS))stringify, 0); + SANDBOX_AWAIT_AND_SET(color_class, rb_define_class, "Color", sb()->rb_cObject()); + SANDBOX_AWAIT(rb_define_alloc_func, color_class, alloc); + SANDBOX_AWAIT(rb_define_singleton_method, color_class, "_load", (VALUE (*)(ANYARGS))load, 1); + SANDBOX_AWAIT(rb_define_method, color_class, "initialize", (VALUE (*)(ANYARGS))initialize, -1); + SANDBOX_AWAIT(rb_define_method, color_class, "initialize_copy", (VALUE (*)(ANYARGS))initialize_copy, 1); + SANDBOX_AWAIT(rb_define_method, color_class, "set", (VALUE (*)(ANYARGS))set, -1); + SANDBOX_AWAIT(rb_define_method, color_class, "red", (VALUE (*)(ANYARGS))get_red, 0); + SANDBOX_AWAIT(rb_define_method, color_class, "red=", (VALUE (*)(ANYARGS))set_red, 1); + SANDBOX_AWAIT(rb_define_method, color_class, "green", (VALUE (*)(ANYARGS))get_green, 0); + SANDBOX_AWAIT(rb_define_method, color_class, "green=", (VALUE (*)(ANYARGS))set_green, 1); + SANDBOX_AWAIT(rb_define_method, color_class, "blue", (VALUE (*)(ANYARGS))get_blue, 0); + SANDBOX_AWAIT(rb_define_method, color_class, "blue=", (VALUE (*)(ANYARGS))set_blue, 1); + SANDBOX_AWAIT(rb_define_method, color_class, "alpha", (VALUE (*)(ANYARGS))get_alpha, 0); + SANDBOX_AWAIT(rb_define_method, color_class, "alpha=", (VALUE (*)(ANYARGS))set_alpha, 1); + SANDBOX_AWAIT(rb_define_method, color_class, "==", (VALUE (*)(ANYARGS))equal, 1); + SANDBOX_AWAIT(rb_define_method, color_class, "===", (VALUE (*)(ANYARGS))equal, 1); + SANDBOX_AWAIT(rb_define_method, color_class, "to_s", (VALUE (*)(ANYARGS))stringify, 0); + SANDBOX_AWAIT(rb_define_method, color_class, "inspect", (VALUE (*)(ANYARGS))stringify, 0); } } ) @@ -461,29 +462,27 @@ namespace mkxp_sandbox { return sb()->bind()()(buf); } - VALUE klass; - void operator()() { BOOST_ASIO_CORO_REENTER (this) { tone_type = sb()->rb_data_type("Tone", NULL, dfree, NULL, NULL, 0, 0, 0); - SANDBOX_AWAIT_AND_SET(klass, rb_define_class, "Tone", sb()->rb_cObject()); - SANDBOX_AWAIT(rb_define_alloc_func, klass, alloc); - SANDBOX_AWAIT(rb_define_singleton_method, klass, "_load", (VALUE (*)(ANYARGS))load, 1); - SANDBOX_AWAIT(rb_define_method, klass, "initialize", (VALUE (*)(ANYARGS))initialize, -1); - SANDBOX_AWAIT(rb_define_method, klass, "initialize_copy", (VALUE (*)(ANYARGS))initialize_copy, 1); - SANDBOX_AWAIT(rb_define_method, klass, "set", (VALUE (*)(ANYARGS))set, -1); - SANDBOX_AWAIT(rb_define_method, klass, "red", (VALUE (*)(ANYARGS))get_red, 0); - SANDBOX_AWAIT(rb_define_method, klass, "red=", (VALUE (*)(ANYARGS))set_red, 1); - SANDBOX_AWAIT(rb_define_method, klass, "green", (VALUE (*)(ANYARGS))get_green, 0); - SANDBOX_AWAIT(rb_define_method, klass, "green=", (VALUE (*)(ANYARGS))set_green, 1); - SANDBOX_AWAIT(rb_define_method, klass, "blue", (VALUE (*)(ANYARGS))get_blue, 0); - SANDBOX_AWAIT(rb_define_method, klass, "blue=", (VALUE (*)(ANYARGS))set_blue, 1); - SANDBOX_AWAIT(rb_define_method, klass, "gray", (VALUE (*)(ANYARGS))get_gray, 0); - SANDBOX_AWAIT(rb_define_method, klass, "gray=", (VALUE (*)(ANYARGS))set_gray, 1); - SANDBOX_AWAIT(rb_define_method, klass, "==", (VALUE (*)(ANYARGS))equal, 1); - SANDBOX_AWAIT(rb_define_method, klass, "===", (VALUE (*)(ANYARGS))equal, 1); - SANDBOX_AWAIT(rb_define_method, klass, "to_s", (VALUE (*)(ANYARGS))stringify, 0); - SANDBOX_AWAIT(rb_define_method, klass, "inspect", (VALUE (*)(ANYARGS))stringify, 0); + SANDBOX_AWAIT_AND_SET(tone_class, rb_define_class, "Tone", sb()->rb_cObject()); + SANDBOX_AWAIT(rb_define_alloc_func, tone_class, alloc); + SANDBOX_AWAIT(rb_define_singleton_method, tone_class, "_load", (VALUE (*)(ANYARGS))load, 1); + SANDBOX_AWAIT(rb_define_method, tone_class, "initialize", (VALUE (*)(ANYARGS))initialize, -1); + SANDBOX_AWAIT(rb_define_method, tone_class, "initialize_copy", (VALUE (*)(ANYARGS))initialize_copy, 1); + SANDBOX_AWAIT(rb_define_method, tone_class, "set", (VALUE (*)(ANYARGS))set, -1); + SANDBOX_AWAIT(rb_define_method, tone_class, "red", (VALUE (*)(ANYARGS))get_red, 0); + SANDBOX_AWAIT(rb_define_method, tone_class, "red=", (VALUE (*)(ANYARGS))set_red, 1); + SANDBOX_AWAIT(rb_define_method, tone_class, "green", (VALUE (*)(ANYARGS))get_green, 0); + SANDBOX_AWAIT(rb_define_method, tone_class, "green=", (VALUE (*)(ANYARGS))set_green, 1); + SANDBOX_AWAIT(rb_define_method, tone_class, "blue", (VALUE (*)(ANYARGS))get_blue, 0); + SANDBOX_AWAIT(rb_define_method, tone_class, "blue=", (VALUE (*)(ANYARGS))set_blue, 1); + SANDBOX_AWAIT(rb_define_method, tone_class, "gray", (VALUE (*)(ANYARGS))get_gray, 0); + SANDBOX_AWAIT(rb_define_method, tone_class, "gray=", (VALUE (*)(ANYARGS))set_gray, 1); + SANDBOX_AWAIT(rb_define_method, tone_class, "==", (VALUE (*)(ANYARGS))equal, 1); + SANDBOX_AWAIT(rb_define_method, tone_class, "===", (VALUE (*)(ANYARGS))equal, 1); + SANDBOX_AWAIT(rb_define_method, tone_class, "to_s", (VALUE (*)(ANYARGS))stringify, 0); + SANDBOX_AWAIT(rb_define_method, tone_class, "inspect", (VALUE (*)(ANYARGS))stringify, 0); } } ) @@ -685,30 +684,28 @@ namespace mkxp_sandbox { return sb()->bind()()(buf); } - VALUE klass; - void operator()() { BOOST_ASIO_CORO_REENTER (this) { rect_type = sb()->rb_data_type("Rect", NULL, dfree, NULL, NULL, 0, 0, 0); - SANDBOX_AWAIT_AND_SET(klass, rb_define_class, "Rect", sb()->rb_cObject()); - SANDBOX_AWAIT(rb_define_alloc_func, klass, alloc); - SANDBOX_AWAIT(rb_define_singleton_method, klass, "_load", (VALUE (*)(ANYARGS))load, 1); - SANDBOX_AWAIT(rb_define_method, klass, "initialize", (VALUE (*)(ANYARGS))initialize, -1); - SANDBOX_AWAIT(rb_define_method, klass, "initialize_copy", (VALUE (*)(ANYARGS))initialize_copy, 1); - SANDBOX_AWAIT(rb_define_method, klass, "set", (VALUE (*)(ANYARGS))set, -1); - SANDBOX_AWAIT(rb_define_method, klass, "empty", (VALUE (*)(ANYARGS))empty, 0); - SANDBOX_AWAIT(rb_define_method, klass, "x", (VALUE (*)(ANYARGS))get_x, 0); - SANDBOX_AWAIT(rb_define_method, klass, "x=", (VALUE (*)(ANYARGS))set_x, 1); - SANDBOX_AWAIT(rb_define_method, klass, "y", (VALUE (*)(ANYARGS))get_y, 0); - SANDBOX_AWAIT(rb_define_method, klass, "y=", (VALUE (*)(ANYARGS))set_y, 1); - SANDBOX_AWAIT(rb_define_method, klass, "width", (VALUE (*)(ANYARGS))get_width, 0); - SANDBOX_AWAIT(rb_define_method, klass, "width=", (VALUE (*)(ANYARGS))set_width, 1); - SANDBOX_AWAIT(rb_define_method, klass, "height", (VALUE (*)(ANYARGS))get_height, 0); - SANDBOX_AWAIT(rb_define_method, klass, "height=", (VALUE (*)(ANYARGS))set_height, 1); - SANDBOX_AWAIT(rb_define_method, klass, "==", (VALUE (*)(ANYARGS))equal, 1); - SANDBOX_AWAIT(rb_define_method, klass, "===", (VALUE (*)(ANYARGS))equal, 1); - SANDBOX_AWAIT(rb_define_method, klass, "to_s", (VALUE (*)(ANYARGS))stringify, 0); - SANDBOX_AWAIT(rb_define_method, klass, "inspect", (VALUE (*)(ANYARGS))stringify, 0); + SANDBOX_AWAIT_AND_SET(rect_class, rb_define_class, "Rect", sb()->rb_cObject()); + SANDBOX_AWAIT(rb_define_alloc_func, rect_class, alloc); + SANDBOX_AWAIT(rb_define_singleton_method, rect_class, "_load", (VALUE (*)(ANYARGS))load, 1); + SANDBOX_AWAIT(rb_define_method, rect_class, "initialize", (VALUE (*)(ANYARGS))initialize, -1); + SANDBOX_AWAIT(rb_define_method, rect_class, "initialize_copy", (VALUE (*)(ANYARGS))initialize_copy, 1); + SANDBOX_AWAIT(rb_define_method, rect_class, "set", (VALUE (*)(ANYARGS))set, -1); + SANDBOX_AWAIT(rb_define_method, rect_class, "empty", (VALUE (*)(ANYARGS))empty, 0); + SANDBOX_AWAIT(rb_define_method, rect_class, "x", (VALUE (*)(ANYARGS))get_x, 0); + SANDBOX_AWAIT(rb_define_method, rect_class, "x=", (VALUE (*)(ANYARGS))set_x, 1); + SANDBOX_AWAIT(rb_define_method, rect_class, "y", (VALUE (*)(ANYARGS))get_y, 0); + SANDBOX_AWAIT(rb_define_method, rect_class, "y=", (VALUE (*)(ANYARGS))set_y, 1); + SANDBOX_AWAIT(rb_define_method, rect_class, "width", (VALUE (*)(ANYARGS))get_width, 0); + SANDBOX_AWAIT(rb_define_method, rect_class, "width=", (VALUE (*)(ANYARGS))set_width, 1); + SANDBOX_AWAIT(rb_define_method, rect_class, "height", (VALUE (*)(ANYARGS))get_height, 0); + SANDBOX_AWAIT(rb_define_method, rect_class, "height=", (VALUE (*)(ANYARGS))set_height, 1); + SANDBOX_AWAIT(rb_define_method, rect_class, "==", (VALUE (*)(ANYARGS))equal, 1); + SANDBOX_AWAIT(rb_define_method, rect_class, "===", (VALUE (*)(ANYARGS))equal, 1); + SANDBOX_AWAIT(rb_define_method, rect_class, "to_s", (VALUE (*)(ANYARGS))stringify, 0); + SANDBOX_AWAIT(rb_define_method, rect_class, "inspect", (VALUE (*)(ANYARGS))stringify, 0); } } ) diff --git a/binding-sandbox/font-binding.h b/binding-sandbox/font-binding.h index 79d7be32..7b7f8c06 100644 --- a/binding-sandbox/font-binding.h +++ b/binding-sandbox/font-binding.h @@ -27,21 +27,16 @@ #include "font.h" #include "etc.h" #include "sharedstate.h" +#include "etc-binding.h" namespace mkxp_sandbox { static struct mkxp_sandbox::bindings::rb_data_type font_type; + static VALUE font_class; SANDBOX_COROUTINE(font_binding_init, SANDBOX_DEF_ALLOC(font_type) SANDBOX_DEF_DFREE(Font) - VALUE klass; - ID default_color_id; - VALUE default_color_klass; - VALUE default_color_obj; - ID default_out_color_id; - VALUE default_out_color_klass; - VALUE default_out_color_obj; VALUE default_names; VALUE default_name; wasm_size_t default_name_index; @@ -85,17 +80,13 @@ namespace mkxp_sandbox { std::vector *names; VALUE names_obj; int32_t size; - ID id; - VALUE klass; - VALUE obj; VALUE operator()(int32_t argc, wasm_ptr_t argv, VALUE self) { BOOST_ASIO_CORO_REENTER (this) { names = new std::vector; if (argc == 0) { - SANDBOX_AWAIT_AND_SET(klass, rb_obj_class, self); - SANDBOX_AWAIT_AND_SET(names_obj, rb_iv_get, klass, "default_name"); + SANDBOX_AWAIT_AND_SET(names_obj, rb_iv_get, font_class, "default_name"); font = new Font(); } else if (argc == 1) { names_obj = ((VALUE *)(**sb() + argv))[0]; @@ -116,18 +107,10 @@ namespace mkxp_sandbox { * However the same bug/behavior exists in all RM versions. */ SANDBOX_AWAIT(rb_iv_set, self, "name", names_obj); - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Color"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); - set_private_data(obj, &font->getColor()); - SANDBOX_AWAIT(rb_iv_set, self, "color", obj); + SANDBOX_AWAIT(wrap_property, self, &font->getColor(), "color", color_class); if (rgssVer >= 3) { - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Color"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); - set_private_data(obj, &font->getOutColor()); - SANDBOX_AWAIT(rb_iv_set, self, "out_color", obj); + SANDBOX_AWAIT(wrap_property, self, &font->getOutColor(), "out_color", color_class); } } @@ -145,9 +128,6 @@ namespace mkxp_sandbox { static VALUE initialize_copy(VALUE self, VALUE value) { SANDBOX_COROUTINE(coro, Font *font; - ID id; - VALUE klass; - VALUE obj; VALUE operator()(VALUE self, VALUE value) { BOOST_ASIO_CORO_REENTER (this) { @@ -161,18 +141,10 @@ namespace mkxp_sandbox { font->initDynAttribs(); - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Color"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); - set_private_data(obj, &font->getColor()); - SANDBOX_AWAIT(rb_iv_set, self, "color", obj); + SANDBOX_AWAIT(wrap_property, self, &font->getColor(), "color", color_class); if (rgssVer >= 3) { - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Color"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); - set_private_data(obj, &font->getOutColor()); - SANDBOX_AWAIT(rb_iv_set, self, "out_color", obj); + SANDBOX_AWAIT(wrap_property, self, &font->getOutColor(), "out_color", color_class); } } @@ -413,23 +385,15 @@ namespace mkxp_sandbox { void operator()() { BOOST_ASIO_CORO_REENTER (this) { font_type = sb()->rb_data_type("Font", NULL, dfree, NULL, NULL, 0, 0, 0); - SANDBOX_AWAIT_AND_SET(klass, rb_define_class, "Font", sb()->rb_cObject()); - SANDBOX_AWAIT(rb_define_alloc_func, klass, alloc); + SANDBOX_AWAIT_AND_SET(font_class, rb_define_class, "Font", sb()->rb_cObject()); + SANDBOX_AWAIT(rb_define_alloc_func, font_class, alloc); Font::initDefaultDynAttribs(); - SANDBOX_AWAIT_AND_SET(default_color_id, rb_intern, "Color"); - SANDBOX_AWAIT_AND_SET(default_color_klass, rb_const_get, sb()->rb_cObject(), default_color_id); - SANDBOX_AWAIT_AND_SET(default_color_obj, rb_obj_alloc, default_color_klass); - set_private_data(default_color_obj, &Font::getDefaultColor()); - SANDBOX_AWAIT(rb_iv_set, klass, "default_color", default_color_obj); + SANDBOX_AWAIT(wrap_property, font_class, &Font::getDefaultColor(), "default_color", color_class); if (rgssVer >= 3) { - SANDBOX_AWAIT_AND_SET(default_out_color_id, rb_intern, "Color"); - SANDBOX_AWAIT_AND_SET(default_out_color_klass, rb_const_get, sb()->rb_cObject(), default_out_color_id); - SANDBOX_AWAIT_AND_SET(default_out_color_obj, rb_obj_alloc, default_out_color_klass); - set_private_data(default_out_color_obj, &Font::getDefaultOutColor()); - SANDBOX_AWAIT(rb_iv_set, klass, "default_out_color", default_out_color_obj); + SANDBOX_AWAIT(wrap_property, font_class, &Font::getDefaultOutColor(), "default_out_color", color_class); } if (Font::getInitialDefaultNames().size() == 1) { @@ -441,58 +405,58 @@ namespace mkxp_sandbox { SANDBOX_AWAIT(rb_ary_push, default_names, default_name); } } - SANDBOX_AWAIT(rb_iv_set, klass, "default_name", default_names); + SANDBOX_AWAIT(rb_iv_set, font_class, "default_name", default_names); - SANDBOX_AWAIT(rb_define_method, klass, "initialize", (VALUE (*)(ANYARGS))initialize, -1); - SANDBOX_AWAIT(rb_define_method, klass, "initialize_copy", (VALUE (*)(ANYARGS))initialize_copy, 1); + SANDBOX_AWAIT(rb_define_method, font_class, "initialize", (VALUE (*)(ANYARGS))initialize, -1); + SANDBOX_AWAIT(rb_define_method, font_class, "initialize_copy", (VALUE (*)(ANYARGS))initialize_copy, 1); - SANDBOX_AWAIT(rb_define_method, klass, "name", (VALUE (*)(ANYARGS))get_name, 0); - SANDBOX_AWAIT(rb_define_method, klass, "name=", (VALUE (*)(ANYARGS))set_name, 1); - SANDBOX_AWAIT(rb_define_method, klass, "size", (VALUE (*)(ANYARGS))get_size, 0); - SANDBOX_AWAIT(rb_define_method, klass, "size=", (VALUE (*)(ANYARGS))set_size, 1); - SANDBOX_AWAIT(rb_define_method, klass, "bold", (VALUE (*)(ANYARGS))get_bold, 0); - SANDBOX_AWAIT(rb_define_method, klass, "bold=", (VALUE (*)(ANYARGS))set_bold, 1); - SANDBOX_AWAIT(rb_define_method, klass, "italic", (VALUE (*)(ANYARGS))get_italic, 0); - SANDBOX_AWAIT(rb_define_method, klass, "italic=", (VALUE (*)(ANYARGS))set_italic, 1); - SANDBOX_AWAIT(rb_define_method, klass, "color", (VALUE (*)(ANYARGS))get_color, 0); - SANDBOX_AWAIT(rb_define_method, klass, "color=", (VALUE (*)(ANYARGS))set_color, 1); + SANDBOX_AWAIT(rb_define_method, font_class, "name", (VALUE (*)(ANYARGS))get_name, 0); + SANDBOX_AWAIT(rb_define_method, font_class, "name=", (VALUE (*)(ANYARGS))set_name, 1); + SANDBOX_AWAIT(rb_define_method, font_class, "size", (VALUE (*)(ANYARGS))get_size, 0); + SANDBOX_AWAIT(rb_define_method, font_class, "size=", (VALUE (*)(ANYARGS))set_size, 1); + SANDBOX_AWAIT(rb_define_method, font_class, "bold", (VALUE (*)(ANYARGS))get_bold, 0); + SANDBOX_AWAIT(rb_define_method, font_class, "bold=", (VALUE (*)(ANYARGS))set_bold, 1); + SANDBOX_AWAIT(rb_define_method, font_class, "italic", (VALUE (*)(ANYARGS))get_italic, 0); + SANDBOX_AWAIT(rb_define_method, font_class, "italic=", (VALUE (*)(ANYARGS))set_italic, 1); + SANDBOX_AWAIT(rb_define_method, font_class, "color", (VALUE (*)(ANYARGS))get_color, 0); + SANDBOX_AWAIT(rb_define_method, font_class, "color=", (VALUE (*)(ANYARGS))set_color, 1); if (rgssVer >= 2) { - SANDBOX_AWAIT(rb_define_method, klass, "shadow", (VALUE (*)(ANYARGS))get_shadow, 0); - SANDBOX_AWAIT(rb_define_method, klass, "shadow=", (VALUE (*)(ANYARGS))set_shadow, 1); + SANDBOX_AWAIT(rb_define_method, font_class, "shadow", (VALUE (*)(ANYARGS))get_shadow, 0); + SANDBOX_AWAIT(rb_define_method, font_class, "shadow=", (VALUE (*)(ANYARGS))set_shadow, 1); } if (rgssVer >= 3) { - SANDBOX_AWAIT(rb_define_method, klass, "outline", (VALUE (*)(ANYARGS))get_outline, 0); - SANDBOX_AWAIT(rb_define_method, klass, "outline=", (VALUE (*)(ANYARGS))set_outline, 1); - SANDBOX_AWAIT(rb_define_method, klass, "out_color", (VALUE (*)(ANYARGS))get_out_color, 0); - SANDBOX_AWAIT(rb_define_method, klass, "out_color=", (VALUE (*)(ANYARGS))set_out_color, 1); + SANDBOX_AWAIT(rb_define_method, font_class, "outline", (VALUE (*)(ANYARGS))get_outline, 0); + SANDBOX_AWAIT(rb_define_method, font_class, "outline=", (VALUE (*)(ANYARGS))set_outline, 1); + SANDBOX_AWAIT(rb_define_method, font_class, "out_color", (VALUE (*)(ANYARGS))get_out_color, 0); + SANDBOX_AWAIT(rb_define_method, font_class, "out_color=", (VALUE (*)(ANYARGS))set_out_color, 1); } - SANDBOX_AWAIT(rb_define_singleton_method, klass, "default_name", (VALUE (*)(ANYARGS))get_default_name, 0); - SANDBOX_AWAIT(rb_define_singleton_method, klass, "default_name=", (VALUE (*)(ANYARGS))set_default_name, 1); - SANDBOX_AWAIT(rb_define_singleton_method, klass, "default_size", (VALUE (*)(ANYARGS))get_default_size, 0); - SANDBOX_AWAIT(rb_define_singleton_method, klass, "default_size=", (VALUE (*)(ANYARGS))set_default_size, 1); - SANDBOX_AWAIT(rb_define_singleton_method, klass, "default_bold", (VALUE (*)(ANYARGS))get_default_bold, 0); - SANDBOX_AWAIT(rb_define_singleton_method, klass, "default_bold=", (VALUE (*)(ANYARGS))set_default_bold, 1); - SANDBOX_AWAIT(rb_define_singleton_method, klass, "default_italic", (VALUE (*)(ANYARGS))get_default_italic, 0); - SANDBOX_AWAIT(rb_define_singleton_method, klass, "default_italic=", (VALUE (*)(ANYARGS))set_default_italic, 1); - SANDBOX_AWAIT(rb_define_singleton_method, klass, "default_color", (VALUE (*)(ANYARGS))get_default_color, 0); - SANDBOX_AWAIT(rb_define_singleton_method, klass, "default_color=", (VALUE (*)(ANYARGS))set_default_color, 1); + SANDBOX_AWAIT(rb_define_singleton_method, font_class, "default_name", (VALUE (*)(ANYARGS))get_default_name, 0); + SANDBOX_AWAIT(rb_define_singleton_method, font_class, "default_name=", (VALUE (*)(ANYARGS))set_default_name, 1); + SANDBOX_AWAIT(rb_define_singleton_method, font_class, "default_size", (VALUE (*)(ANYARGS))get_default_size, 0); + SANDBOX_AWAIT(rb_define_singleton_method, font_class, "default_size=", (VALUE (*)(ANYARGS))set_default_size, 1); + SANDBOX_AWAIT(rb_define_singleton_method, font_class, "default_bold", (VALUE (*)(ANYARGS))get_default_bold, 0); + SANDBOX_AWAIT(rb_define_singleton_method, font_class, "default_bold=", (VALUE (*)(ANYARGS))set_default_bold, 1); + SANDBOX_AWAIT(rb_define_singleton_method, font_class, "default_italic", (VALUE (*)(ANYARGS))get_default_italic, 0); + SANDBOX_AWAIT(rb_define_singleton_method, font_class, "default_italic=", (VALUE (*)(ANYARGS))set_default_italic, 1); + SANDBOX_AWAIT(rb_define_singleton_method, font_class, "default_color", (VALUE (*)(ANYARGS))get_default_color, 0); + SANDBOX_AWAIT(rb_define_singleton_method, font_class, "default_color=", (VALUE (*)(ANYARGS))set_default_color, 1); if (rgssVer >= 2) { - SANDBOX_AWAIT(rb_define_method, klass, "default_shadow", (VALUE (*)(ANYARGS))get_default_shadow, 0); - SANDBOX_AWAIT(rb_define_method, klass, "default_shadow=", (VALUE (*)(ANYARGS))set_default_shadow, 1); + SANDBOX_AWAIT(rb_define_method, font_class, "default_shadow", (VALUE (*)(ANYARGS))get_default_shadow, 0); + SANDBOX_AWAIT(rb_define_method, font_class, "default_shadow=", (VALUE (*)(ANYARGS))set_default_shadow, 1); } if (rgssVer >= 3) { - SANDBOX_AWAIT(rb_define_method, klass, "default_outline", (VALUE (*)(ANYARGS))get_default_outline, 0); - SANDBOX_AWAIT(rb_define_method, klass, "default_outline=", (VALUE (*)(ANYARGS))set_default_outline, 1); - SANDBOX_AWAIT(rb_define_method, klass, "default_out_color", (VALUE (*)(ANYARGS))get_default_out_color, 0); - SANDBOX_AWAIT(rb_define_method, klass, "default_out_color=", (VALUE (*)(ANYARGS))set_default_out_color, 1); + SANDBOX_AWAIT(rb_define_method, font_class, "default_outline", (VALUE (*)(ANYARGS))get_default_outline, 0); + SANDBOX_AWAIT(rb_define_method, font_class, "default_outline=", (VALUE (*)(ANYARGS))set_default_outline, 1); + SANDBOX_AWAIT(rb_define_method, font_class, "default_out_color", (VALUE (*)(ANYARGS))get_default_out_color, 0); + SANDBOX_AWAIT(rb_define_method, font_class, "default_out_color=", (VALUE (*)(ANYARGS))set_default_out_color, 1); } - SANDBOX_AWAIT(rb_define_singleton_method, klass, "exist?", (VALUE (*)(ANYARGS))exist, 1); + SANDBOX_AWAIT(rb_define_singleton_method, font_class, "exist?", (VALUE (*)(ANYARGS))exist, 1); } } ) diff --git a/binding-sandbox/graphics-binding.h b/binding-sandbox/graphics-binding.h index 23ac7b59..80853392 100644 --- a/binding-sandbox/graphics-binding.h +++ b/binding-sandbox/graphics-binding.h @@ -30,6 +30,8 @@ #include "bitmap.h" namespace mkxp_sandbox { + static VALUE graphics_module; + SANDBOX_COROUTINE(graphics_binding_init, static VALUE update(VALUE self) { SANDBOX_COROUTINE(coro, @@ -239,16 +241,12 @@ namespace mkxp_sandbox { static VALUE snap_to_bitmap(VALUE self) { SANDBOX_COROUTINE(coro, Bitmap *bitmap; - ID id; - VALUE klass; VALUE obj; VALUE operator()(VALUE self) { BOOST_ASIO_CORO_REENTER (this) { GFX_GUARD_EXC(bitmap = shState->graphics().snapToBitmap();); - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Bitmap"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); + SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, bitmap_class); set_private_data(obj, bitmap); SANDBOX_AWAIT(bitmap_init_props, bitmap, obj); } @@ -283,27 +281,25 @@ namespace mkxp_sandbox { return sb()->bind()()(self, value); } - VALUE module; - void operator()() { BOOST_ASIO_CORO_REENTER (this) { - SANDBOX_AWAIT_AND_SET(module, rb_define_module, "Graphics"); - SANDBOX_AWAIT(rb_define_module_function, module, "update", (VALUE (*)(ANYARGS))update, 0); - SANDBOX_AWAIT(rb_define_module_function, module, "freeze", (VALUE (*)(ANYARGS))freeze, 0); - SANDBOX_AWAIT(rb_define_module_function, module, "transition", (VALUE (*)(ANYARGS))transition, -1); - SANDBOX_AWAIT(rb_define_module_function, module, "wait", (VALUE (*)(ANYARGS))wait, 1); - SANDBOX_AWAIT(rb_define_module_function, module, "fadeout", (VALUE (*)(ANYARGS))fadeout, 1); - SANDBOX_AWAIT(rb_define_module_function, module, "fadein", (VALUE (*)(ANYARGS))fadein, 1); - SANDBOX_AWAIT(rb_define_module_function, module, "frame_reset", (VALUE (*)(ANYARGS))frame_reset, 0); - SANDBOX_AWAIT(rb_define_module_function, module, "frame_count", (VALUE (*)(ANYARGS))get_frame_count, 0); - SANDBOX_AWAIT(rb_define_module_function, module, "frame_count=", (VALUE (*)(ANYARGS))set_frame_count, 1); - SANDBOX_AWAIT(rb_define_module_function, module, "frame_rate", (VALUE (*)(ANYARGS))get_frame_rate, 0); - SANDBOX_AWAIT(rb_define_module_function, module, "frame_rate=", (VALUE (*)(ANYARGS))set_frame_rate, 1); - SANDBOX_AWAIT(rb_define_module_function, module, "width", (VALUE (*)(ANYARGS))width, 0); - SANDBOX_AWAIT(rb_define_module_function, module, "height", (VALUE (*)(ANYARGS))height, 0); - SANDBOX_AWAIT(rb_define_module_function, module, "snap_to_bitmap", (VALUE (*)(ANYARGS))snap_to_bitmap, 0); - SANDBOX_AWAIT(rb_define_module_function, module, "brightness", (VALUE (*)(ANYARGS))get_brightness, 0); - SANDBOX_AWAIT(rb_define_module_function, module, "brightness=", (VALUE (*)(ANYARGS))set_brightness, 1); + SANDBOX_AWAIT_AND_SET(graphics_module, rb_define_module, "Graphics"); + SANDBOX_AWAIT(rb_define_module_function, graphics_module, "update", (VALUE (*)(ANYARGS))update, 0); + SANDBOX_AWAIT(rb_define_module_function, graphics_module, "freeze", (VALUE (*)(ANYARGS))freeze, 0); + SANDBOX_AWAIT(rb_define_module_function, graphics_module, "transition", (VALUE (*)(ANYARGS))transition, -1); + SANDBOX_AWAIT(rb_define_module_function, graphics_module, "wait", (VALUE (*)(ANYARGS))wait, 1); + SANDBOX_AWAIT(rb_define_module_function, graphics_module, "fadeout", (VALUE (*)(ANYARGS))fadeout, 1); + SANDBOX_AWAIT(rb_define_module_function, graphics_module, "fadein", (VALUE (*)(ANYARGS))fadein, 1); + SANDBOX_AWAIT(rb_define_module_function, graphics_module, "frame_reset", (VALUE (*)(ANYARGS))frame_reset, 0); + SANDBOX_AWAIT(rb_define_module_function, graphics_module, "frame_count", (VALUE (*)(ANYARGS))get_frame_count, 0); + SANDBOX_AWAIT(rb_define_module_function, graphics_module, "frame_count=", (VALUE (*)(ANYARGS))set_frame_count, 1); + SANDBOX_AWAIT(rb_define_module_function, graphics_module, "frame_rate", (VALUE (*)(ANYARGS))get_frame_rate, 0); + SANDBOX_AWAIT(rb_define_module_function, graphics_module, "frame_rate=", (VALUE (*)(ANYARGS))set_frame_rate, 1); + SANDBOX_AWAIT(rb_define_module_function, graphics_module, "width", (VALUE (*)(ANYARGS))width, 0); + SANDBOX_AWAIT(rb_define_module_function, graphics_module, "height", (VALUE (*)(ANYARGS))height, 0); + SANDBOX_AWAIT(rb_define_module_function, graphics_module, "snap_to_bitmap", (VALUE (*)(ANYARGS))snap_to_bitmap, 0); + SANDBOX_AWAIT(rb_define_module_function, graphics_module, "brightness", (VALUE (*)(ANYARGS))get_brightness, 0); + SANDBOX_AWAIT(rb_define_module_function, graphics_module, "brightness=", (VALUE (*)(ANYARGS))set_brightness, 1); } } ) diff --git a/binding-sandbox/input-binding.h b/binding-sandbox/input-binding.h index 2d1ebd4a..5ce00339 100644 --- a/binding-sandbox/input-binding.h +++ b/binding-sandbox/input-binding.h @@ -28,6 +28,7 @@ #include "sharedstate.h" namespace mkxp_sandbox { + static VALUE input_module; static VALUE symhash; struct { @@ -330,7 +331,6 @@ namespace mkxp_sandbox { return sb()->bind()()(0); } - VALUE module; VALUE button_val; VALUE id_val; size_t i; @@ -338,28 +338,28 @@ namespace mkxp_sandbox { void operator()() { BOOST_ASIO_CORO_REENTER (this) { - SANDBOX_AWAIT_AND_SET(module, rb_define_module, "Input"); - SANDBOX_AWAIT(rb_define_module_function, module, "delta", (VALUE (*)(ANYARGS))delta, 0); - SANDBOX_AWAIT(rb_define_module_function, module, "update", (VALUE (*)(ANYARGS))update, 0); - SANDBOX_AWAIT(rb_define_module_function, module, "press?", (VALUE (*)(ANYARGS))press, 1); - SANDBOX_AWAIT(rb_define_module_function, module, "trigger?", (VALUE (*)(ANYARGS))trigger, 1); - SANDBOX_AWAIT(rb_define_module_function, module, "repeat?", (VALUE (*)(ANYARGS))repeat, 1); - SANDBOX_AWAIT(rb_define_module_function, module, "release?", (VALUE (*)(ANYARGS))release, 1); - SANDBOX_AWAIT(rb_define_module_function, module, "count", (VALUE (*)(ANYARGS))count, 1); - SANDBOX_AWAIT(rb_define_module_function, module, "time?", (VALUE (*)(ANYARGS))time, 1); - SANDBOX_AWAIT(rb_define_module_function, module, "pressex?", (VALUE (*)(ANYARGS))pressex, 1); - SANDBOX_AWAIT(rb_define_module_function, module, "triggerex?", (VALUE (*)(ANYARGS))triggerex, 1); - SANDBOX_AWAIT(rb_define_module_function, module, "repeatex?", (VALUE (*)(ANYARGS))repeatex, 1); - SANDBOX_AWAIT(rb_define_module_function, module, "releaseex?", (VALUE (*)(ANYARGS))releaseex, 1); - SANDBOX_AWAIT(rb_define_module_function, module, "repeatcount", (VALUE (*)(ANYARGS))repeatcount, 1); - SANDBOX_AWAIT(rb_define_module_function, module, "timeex?", (VALUE (*)(ANYARGS))timeex, 1); - SANDBOX_AWAIT(rb_define_module_function, module, "dir4", (VALUE (*)(ANYARGS))dir4, 0); - SANDBOX_AWAIT(rb_define_module_function, module, "dir8", (VALUE (*)(ANYARGS))dir8, 0); - SANDBOX_AWAIT(rb_define_module_function, module, "mouse_x", (VALUE (*)(ANYARGS))todo_number, -1); - SANDBOX_AWAIT(rb_define_module_function, module, "mouse_y", (VALUE (*)(ANYARGS))todo_number, -1); - SANDBOX_AWAIT(rb_define_module_function, module, "scroll_v", (VALUE (*)(ANYARGS))todo_number, -1); - SANDBOX_AWAIT(rb_define_module_function, module, "mouse_in_window", (VALUE (*)(ANYARGS))todo_bool, -1); - SANDBOX_AWAIT(rb_define_module_function, module, "mouse_in_window?", (VALUE (*)(ANYARGS))todo_bool, -1); + SANDBOX_AWAIT_AND_SET(input_module, rb_define_module, "Input"); + SANDBOX_AWAIT(rb_define_module_function, input_module, "delta", (VALUE (*)(ANYARGS))delta, 0); + SANDBOX_AWAIT(rb_define_module_function, input_module, "update", (VALUE (*)(ANYARGS))update, 0); + SANDBOX_AWAIT(rb_define_module_function, input_module, "press?", (VALUE (*)(ANYARGS))press, 1); + SANDBOX_AWAIT(rb_define_module_function, input_module, "trigger?", (VALUE (*)(ANYARGS))trigger, 1); + SANDBOX_AWAIT(rb_define_module_function, input_module, "repeat?", (VALUE (*)(ANYARGS))repeat, 1); + SANDBOX_AWAIT(rb_define_module_function, input_module, "release?", (VALUE (*)(ANYARGS))release, 1); + SANDBOX_AWAIT(rb_define_module_function, input_module, "count", (VALUE (*)(ANYARGS))count, 1); + SANDBOX_AWAIT(rb_define_module_function, input_module, "time?", (VALUE (*)(ANYARGS))time, 1); + SANDBOX_AWAIT(rb_define_module_function, input_module, "pressex?", (VALUE (*)(ANYARGS))pressex, 1); + SANDBOX_AWAIT(rb_define_module_function, input_module, "triggerex?", (VALUE (*)(ANYARGS))triggerex, 1); + SANDBOX_AWAIT(rb_define_module_function, input_module, "repeatex?", (VALUE (*)(ANYARGS))repeatex, 1); + SANDBOX_AWAIT(rb_define_module_function, input_module, "releaseex?", (VALUE (*)(ANYARGS))releaseex, 1); + SANDBOX_AWAIT(rb_define_module_function, input_module, "repeatcount", (VALUE (*)(ANYARGS))repeatcount, 1); + SANDBOX_AWAIT(rb_define_module_function, input_module, "timeex?", (VALUE (*)(ANYARGS))timeex, 1); + SANDBOX_AWAIT(rb_define_module_function, input_module, "dir4", (VALUE (*)(ANYARGS))dir4, 0); + SANDBOX_AWAIT(rb_define_module_function, input_module, "dir8", (VALUE (*)(ANYARGS))dir8, 0); + SANDBOX_AWAIT(rb_define_module_function, input_module, "mouse_x", (VALUE (*)(ANYARGS))todo_number, -1); + SANDBOX_AWAIT(rb_define_module_function, input_module, "mouse_y", (VALUE (*)(ANYARGS))todo_number, -1); + SANDBOX_AWAIT(rb_define_module_function, input_module, "scroll_v", (VALUE (*)(ANYARGS))todo_number, -1); + SANDBOX_AWAIT(rb_define_module_function, input_module, "mouse_in_window", (VALUE (*)(ANYARGS))todo_bool, -1); + SANDBOX_AWAIT(rb_define_module_function, input_module, "mouse_in_window?", (VALUE (*)(ANYARGS))todo_bool, -1); if (rgssVer >= 3) { SANDBOX_AWAIT_AND_SET(symhash, rb_hash_new); @@ -371,16 +371,16 @@ namespace mkxp_sandbox { /* In RGSS3 all Input::XYZ constants are equal to :XYZ symbols, * to be compatible with the previous convention */ SANDBOX_AWAIT_AND_SET(id_val, rb_id2sym, id); - SANDBOX_AWAIT(rb_const_set, module, id, id_val); + SANDBOX_AWAIT(rb_const_set, input_module, id, id_val); SANDBOX_AWAIT(rb_hash_aset, symhash, id_val, button_val); } - SANDBOX_AWAIT(rb_iv_set, module, "buttoncodes", symhash); + SANDBOX_AWAIT(rb_iv_set, input_module, "buttoncodes", symhash); } else { for (i = 0; i < sizeof(codes) / sizeof(*codes); ++i) { SANDBOX_AWAIT_AND_SET(id, rb_intern, codes[i].str); SANDBOX_AWAIT_AND_SET(button_val, rb_ll2inum, codes[i].val); - SANDBOX_AWAIT(rb_const_set, module, id, button_val); + SANDBOX_AWAIT(rb_const_set, input_module, id, button_val); } } } diff --git a/binding-sandbox/plane-binding.h b/binding-sandbox/plane-binding.h index 3b36f577..f02db617 100644 --- a/binding-sandbox/plane-binding.h +++ b/binding-sandbox/plane-binding.h @@ -25,9 +25,11 @@ #include "sandbox.h" #include "binding-util.h" #include "plane.h" +#include "etc-binding.h" namespace mkxp_sandbox { static struct mkxp_sandbox::bindings::rb_data_type plane_type; + static VALUE plane_class; SANDBOX_COROUTINE(plane_binding_init, SANDBOX_DEF_ALLOC(plane_type) @@ -42,9 +44,6 @@ namespace mkxp_sandbox { int32_t y; int32_t w; int32_t h; - ID id; - VALUE klass; - VALUE obj; VALUE ary; unsigned int i; @@ -67,18 +66,8 @@ namespace mkxp_sandbox { plane->initDynAttribs(); - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Color"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); - set_private_data(obj, &plane->getColor()); - SANDBOX_AWAIT(rb_iv_set, self, "color", obj); - - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Tone"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); - set_private_data(obj, &plane->getTone()); - SANDBOX_AWAIT(rb_iv_set, self, "tone", obj); - + SANDBOX_AWAIT(wrap_property, self, &plane->getColor(), "color", color_class); + SANDBOX_AWAIT(wrap_property, self, &plane->getTone(), "tone", tone_class); GFX_UNLOCK } @@ -323,40 +312,38 @@ namespace mkxp_sandbox { return sb()->bind()()(self, value); } - VALUE klass; - void operator()() { BOOST_ASIO_CORO_REENTER (this) { plane_type = sb()->rb_data_type("Plane", NULL, dfree, NULL, NULL, 0, 0, 0); - SANDBOX_AWAIT_AND_SET(klass, rb_define_class, "Plane", sb()->rb_cObject()); - SANDBOX_AWAIT(rb_define_alloc_func, klass, alloc); - SANDBOX_AWAIT(rb_define_method, klass, "initialize", (VALUE (*)(ANYARGS))initialize, -1); - SANDBOX_AWAIT(rb_define_method, klass, "dispose", (VALUE (*)(ANYARGS))dispose, 0); - SANDBOX_AWAIT(rb_define_method, klass, "disposed?", (VALUE (*)(ANYARGS))disposed, 0); - SANDBOX_AWAIT(rb_define_method, klass, "viewport", (VALUE (*)(ANYARGS))get_viewport, 0); - SANDBOX_AWAIT(rb_define_method, klass, "viewport=", (VALUE (*)(ANYARGS))set_viewport, 1); - SANDBOX_AWAIT(rb_define_method, klass, "bitmap", (VALUE (*)(ANYARGS))get_bitmap, 0); - SANDBOX_AWAIT(rb_define_method, klass, "bitmap=", (VALUE (*)(ANYARGS))set_bitmap, 1); - SANDBOX_AWAIT(rb_define_method, klass, "color", (VALUE (*)(ANYARGS))get_color, 0); - SANDBOX_AWAIT(rb_define_method, klass, "color=", (VALUE (*)(ANYARGS))set_color, 1); - SANDBOX_AWAIT(rb_define_method, klass, "tone", (VALUE (*)(ANYARGS))get_tone, 0); - SANDBOX_AWAIT(rb_define_method, klass, "tone=", (VALUE (*)(ANYARGS))set_tone, 1); - SANDBOX_AWAIT(rb_define_method, klass, "visible", (VALUE (*)(ANYARGS))get_visible, 0); - SANDBOX_AWAIT(rb_define_method, klass, "visible=", (VALUE (*)(ANYARGS))set_visible, 1); - SANDBOX_AWAIT(rb_define_method, klass, "ox", (VALUE (*)(ANYARGS))get_ox, 0); - SANDBOX_AWAIT(rb_define_method, klass, "ox=", (VALUE (*)(ANYARGS))set_ox, 1); - SANDBOX_AWAIT(rb_define_method, klass, "oy", (VALUE (*)(ANYARGS))get_oy, 0); - SANDBOX_AWAIT(rb_define_method, klass, "oy=", (VALUE (*)(ANYARGS))set_oy, 1); - SANDBOX_AWAIT(rb_define_method, klass, "zoom_x", (VALUE (*)(ANYARGS))get_zoom_x, 0); - SANDBOX_AWAIT(rb_define_method, klass, "zoom_x=", (VALUE (*)(ANYARGS))set_zoom_x, 1); - SANDBOX_AWAIT(rb_define_method, klass, "zoom_y", (VALUE (*)(ANYARGS))get_zoom_y, 0); - SANDBOX_AWAIT(rb_define_method, klass, "zoom_y=", (VALUE (*)(ANYARGS))set_zoom_y, 1); - SANDBOX_AWAIT(rb_define_method, klass, "z", (VALUE (*)(ANYARGS))get_z, 0); - SANDBOX_AWAIT(rb_define_method, klass, "z=", (VALUE (*)(ANYARGS))set_z, 1); - SANDBOX_AWAIT(rb_define_method, klass, "opacity", (VALUE (*)(ANYARGS))get_opacity, 0); - SANDBOX_AWAIT(rb_define_method, klass, "opacity=", (VALUE (*)(ANYARGS))set_opacity, 1); - SANDBOX_AWAIT(rb_define_method, klass, "blend_type", (VALUE (*)(ANYARGS))get_blend_type, 0); - SANDBOX_AWAIT(rb_define_method, klass, "blend_type=", (VALUE (*)(ANYARGS))set_blend_type, 1); + SANDBOX_AWAIT_AND_SET(plane_class, rb_define_class, "Plane", sb()->rb_cObject()); + SANDBOX_AWAIT(rb_define_alloc_func, plane_class, alloc); + SANDBOX_AWAIT(rb_define_method, plane_class, "initialize", (VALUE (*)(ANYARGS))initialize, -1); + SANDBOX_AWAIT(rb_define_method, plane_class, "dispose", (VALUE (*)(ANYARGS))dispose, 0); + SANDBOX_AWAIT(rb_define_method, plane_class, "disposed?", (VALUE (*)(ANYARGS))disposed, 0); + SANDBOX_AWAIT(rb_define_method, plane_class, "viewport", (VALUE (*)(ANYARGS))get_viewport, 0); + SANDBOX_AWAIT(rb_define_method, plane_class, "viewport=", (VALUE (*)(ANYARGS))set_viewport, 1); + SANDBOX_AWAIT(rb_define_method, plane_class, "bitmap", (VALUE (*)(ANYARGS))get_bitmap, 0); + SANDBOX_AWAIT(rb_define_method, plane_class, "bitmap=", (VALUE (*)(ANYARGS))set_bitmap, 1); + SANDBOX_AWAIT(rb_define_method, plane_class, "color", (VALUE (*)(ANYARGS))get_color, 0); + SANDBOX_AWAIT(rb_define_method, plane_class, "color=", (VALUE (*)(ANYARGS))set_color, 1); + SANDBOX_AWAIT(rb_define_method, plane_class, "tone", (VALUE (*)(ANYARGS))get_tone, 0); + SANDBOX_AWAIT(rb_define_method, plane_class, "tone=", (VALUE (*)(ANYARGS))set_tone, 1); + SANDBOX_AWAIT(rb_define_method, plane_class, "visible", (VALUE (*)(ANYARGS))get_visible, 0); + SANDBOX_AWAIT(rb_define_method, plane_class, "visible=", (VALUE (*)(ANYARGS))set_visible, 1); + SANDBOX_AWAIT(rb_define_method, plane_class, "ox", (VALUE (*)(ANYARGS))get_ox, 0); + SANDBOX_AWAIT(rb_define_method, plane_class, "ox=", (VALUE (*)(ANYARGS))set_ox, 1); + SANDBOX_AWAIT(rb_define_method, plane_class, "oy", (VALUE (*)(ANYARGS))get_oy, 0); + SANDBOX_AWAIT(rb_define_method, plane_class, "oy=", (VALUE (*)(ANYARGS))set_oy, 1); + SANDBOX_AWAIT(rb_define_method, plane_class, "zoom_x", (VALUE (*)(ANYARGS))get_zoom_x, 0); + SANDBOX_AWAIT(rb_define_method, plane_class, "zoom_x=", (VALUE (*)(ANYARGS))set_zoom_x, 1); + SANDBOX_AWAIT(rb_define_method, plane_class, "zoom_y", (VALUE (*)(ANYARGS))get_zoom_y, 0); + SANDBOX_AWAIT(rb_define_method, plane_class, "zoom_y=", (VALUE (*)(ANYARGS))set_zoom_y, 1); + SANDBOX_AWAIT(rb_define_method, plane_class, "z", (VALUE (*)(ANYARGS))get_z, 0); + SANDBOX_AWAIT(rb_define_method, plane_class, "z=", (VALUE (*)(ANYARGS))set_z, 1); + SANDBOX_AWAIT(rb_define_method, plane_class, "opacity", (VALUE (*)(ANYARGS))get_opacity, 0); + SANDBOX_AWAIT(rb_define_method, plane_class, "opacity=", (VALUE (*)(ANYARGS))set_opacity, 1); + SANDBOX_AWAIT(rb_define_method, plane_class, "blend_type", (VALUE (*)(ANYARGS))get_blend_type, 0); + SANDBOX_AWAIT(rb_define_method, plane_class, "blend_type=", (VALUE (*)(ANYARGS))set_blend_type, 1); } } ) diff --git a/binding-sandbox/sprite-binding.h b/binding-sandbox/sprite-binding.h index 056b2dac..31030012 100644 --- a/binding-sandbox/sprite-binding.h +++ b/binding-sandbox/sprite-binding.h @@ -25,9 +25,11 @@ #include "sandbox.h" #include "binding-util.h" #include "sprite.h" +#include "etc-binding.h" namespace mkxp_sandbox { static struct mkxp_sandbox::bindings::rb_data_type sprite_type; + static VALUE sprite_class; SANDBOX_COROUTINE(sprite_binding_init, SANDBOX_DEF_ALLOC(sprite_type) @@ -38,9 +40,6 @@ namespace mkxp_sandbox { Sprite *sprite; VALUE viewport_obj; Viewport *viewport; - ID id; - VALUE klass; - VALUE obj; VALUE operator()(int32_t argc, wasm_ptr_t argv, VALUE self) { BOOST_ASIO_CORO_REENTER (this) { @@ -61,23 +60,9 @@ namespace mkxp_sandbox { set_private_data(self, sprite); sprite->initDynAttribs(); - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Rect"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); - set_private_data(obj, &sprite->getSrcRect()); - SANDBOX_AWAIT(rb_iv_set, self, "src_rect", obj); - - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Color"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); - set_private_data(obj, &sprite->getColor()); - SANDBOX_AWAIT(rb_iv_set, self, "color", obj); - - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Tone"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); - set_private_data(obj, &sprite->getTone()); - SANDBOX_AWAIT(rb_iv_set, self, "tone", obj); + SANDBOX_AWAIT(wrap_property, self, &sprite->getSrcRect(), "src_rect", rect_class); + SANDBOX_AWAIT(wrap_property, self, &sprite->getColor(), "color", color_class); + SANDBOX_AWAIT(wrap_property, self, &sprite->getTone(), "tone", tone_class); GFX_UNLOCK } @@ -487,58 +472,56 @@ namespace mkxp_sandbox { return sb()->bind()()(self, value); } - VALUE klass; - void operator()() { BOOST_ASIO_CORO_REENTER (this) { sprite_type = sb()->rb_data_type("Sprite", NULL, dfree, NULL, NULL, 0, 0, 0); - SANDBOX_AWAIT_AND_SET(klass, rb_define_class, "Sprite", sb()->rb_cObject()); - SANDBOX_AWAIT(rb_define_alloc_func, klass, alloc); - SANDBOX_AWAIT(rb_define_method, klass, "initialize", (VALUE (*)(ANYARGS))initialize, -1); - SANDBOX_AWAIT(rb_define_method, klass, "dispose", (VALUE (*)(ANYARGS))dispose, 0); - SANDBOX_AWAIT(rb_define_method, klass, "disposed?", (VALUE (*)(ANYARGS))disposed, 0); - SANDBOX_AWAIT(rb_define_method, klass, "flash", (VALUE (*)(ANYARGS))flash, 2); - SANDBOX_AWAIT(rb_define_method, klass, "update", (VALUE (*)(ANYARGS))update, 0); - SANDBOX_AWAIT(rb_define_method, klass, "viewport", (VALUE (*)(ANYARGS))get_viewport, 0); - SANDBOX_AWAIT(rb_define_method, klass, "viewport=", (VALUE (*)(ANYARGS))set_viewport, 1); - SANDBOX_AWAIT(rb_define_method, klass, "bitmap", (VALUE (*)(ANYARGS))get_bitmap, 0); - SANDBOX_AWAIT(rb_define_method, klass, "bitmap=", (VALUE (*)(ANYARGS))set_bitmap, 1); - SANDBOX_AWAIT(rb_define_method, klass, "src_rect", (VALUE (*)(ANYARGS))get_src_rect, 0); - SANDBOX_AWAIT(rb_define_method, klass, "src_rect=", (VALUE (*)(ANYARGS))set_src_rect, 1); - SANDBOX_AWAIT(rb_define_method, klass, "color", (VALUE (*)(ANYARGS))get_color, 0); - SANDBOX_AWAIT(rb_define_method, klass, "color=", (VALUE (*)(ANYARGS))set_color, 1); - SANDBOX_AWAIT(rb_define_method, klass, "tone", (VALUE (*)(ANYARGS))get_tone, 0); - SANDBOX_AWAIT(rb_define_method, klass, "tone=", (VALUE (*)(ANYARGS))set_tone, 1); - SANDBOX_AWAIT(rb_define_method, klass, "visible", (VALUE (*)(ANYARGS))get_visible, 0); - SANDBOX_AWAIT(rb_define_method, klass, "visible=", (VALUE (*)(ANYARGS))set_visible, 1); - SANDBOX_AWAIT(rb_define_method, klass, "width", (VALUE (*)(ANYARGS))width, 0); - SANDBOX_AWAIT(rb_define_method, klass, "height", (VALUE (*)(ANYARGS))height, 0); - SANDBOX_AWAIT(rb_define_method, klass, "x", (VALUE (*)(ANYARGS))get_x, 0); - SANDBOX_AWAIT(rb_define_method, klass, "x=", (VALUE (*)(ANYARGS))set_x, 1); - SANDBOX_AWAIT(rb_define_method, klass, "y", (VALUE (*)(ANYARGS))get_y, 0); - SANDBOX_AWAIT(rb_define_method, klass, "y=", (VALUE (*)(ANYARGS))set_y, 1); - SANDBOX_AWAIT(rb_define_method, klass, "ox", (VALUE (*)(ANYARGS))get_ox, 0); - SANDBOX_AWAIT(rb_define_method, klass, "ox=", (VALUE (*)(ANYARGS))set_ox, 1); - SANDBOX_AWAIT(rb_define_method, klass, "oy", (VALUE (*)(ANYARGS))get_oy, 0); - SANDBOX_AWAIT(rb_define_method, klass, "oy=", (VALUE (*)(ANYARGS))set_oy, 1); - SANDBOX_AWAIT(rb_define_method, klass, "zoom_x", (VALUE (*)(ANYARGS))get_zoom_x, 0); - SANDBOX_AWAIT(rb_define_method, klass, "zoom_x=", (VALUE (*)(ANYARGS))set_zoom_x, 1); - SANDBOX_AWAIT(rb_define_method, klass, "zoom_y", (VALUE (*)(ANYARGS))get_zoom_y, 0); - SANDBOX_AWAIT(rb_define_method, klass, "zoom_y=", (VALUE (*)(ANYARGS))set_zoom_y, 1); - SANDBOX_AWAIT(rb_define_method, klass, "z", (VALUE (*)(ANYARGS))get_z, 0); - SANDBOX_AWAIT(rb_define_method, klass, "z=", (VALUE (*)(ANYARGS))set_z, 1); - SANDBOX_AWAIT(rb_define_method, klass, "angle", (VALUE (*)(ANYARGS))get_angle, 0); - SANDBOX_AWAIT(rb_define_method, klass, "angle=", (VALUE (*)(ANYARGS))set_angle, 1); - SANDBOX_AWAIT(rb_define_method, klass, "mirror", (VALUE (*)(ANYARGS))get_mirror, 0); - SANDBOX_AWAIT(rb_define_method, klass, "mirror=", (VALUE (*)(ANYARGS))set_mirror, 1); - SANDBOX_AWAIT(rb_define_method, klass, "bush_depth", (VALUE (*)(ANYARGS))get_bush_depth, 0); - SANDBOX_AWAIT(rb_define_method, klass, "bush_depth=", (VALUE (*)(ANYARGS))set_bush_depth, 1); - SANDBOX_AWAIT(rb_define_method, klass, "bush_opacity", (VALUE (*)(ANYARGS))get_bush_opacity, 0); - SANDBOX_AWAIT(rb_define_method, klass, "bush_opacity=", (VALUE (*)(ANYARGS))set_bush_opacity, 1); - SANDBOX_AWAIT(rb_define_method, klass, "opacity", (VALUE (*)(ANYARGS))get_opacity, 0); - SANDBOX_AWAIT(rb_define_method, klass, "opacity=", (VALUE (*)(ANYARGS))set_opacity, 1); - SANDBOX_AWAIT(rb_define_method, klass, "blend_type", (VALUE (*)(ANYARGS))get_blend_type, 0); - SANDBOX_AWAIT(rb_define_method, klass, "blend_type=", (VALUE (*)(ANYARGS))set_blend_type, 1); + SANDBOX_AWAIT_AND_SET(sprite_class, rb_define_class, "Sprite", sb()->rb_cObject()); + SANDBOX_AWAIT(rb_define_alloc_func, sprite_class, alloc); + SANDBOX_AWAIT(rb_define_method, sprite_class, "initialize", (VALUE (*)(ANYARGS))initialize, -1); + SANDBOX_AWAIT(rb_define_method, sprite_class, "dispose", (VALUE (*)(ANYARGS))dispose, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "disposed?", (VALUE (*)(ANYARGS))disposed, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "flash", (VALUE (*)(ANYARGS))flash, 2); + SANDBOX_AWAIT(rb_define_method, sprite_class, "update", (VALUE (*)(ANYARGS))update, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "viewport", (VALUE (*)(ANYARGS))get_viewport, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "viewport=", (VALUE (*)(ANYARGS))set_viewport, 1); + SANDBOX_AWAIT(rb_define_method, sprite_class, "bitmap", (VALUE (*)(ANYARGS))get_bitmap, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "bitmap=", (VALUE (*)(ANYARGS))set_bitmap, 1); + SANDBOX_AWAIT(rb_define_method, sprite_class, "src_rect", (VALUE (*)(ANYARGS))get_src_rect, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "src_rect=", (VALUE (*)(ANYARGS))set_src_rect, 1); + SANDBOX_AWAIT(rb_define_method, sprite_class, "color", (VALUE (*)(ANYARGS))get_color, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "color=", (VALUE (*)(ANYARGS))set_color, 1); + SANDBOX_AWAIT(rb_define_method, sprite_class, "tone", (VALUE (*)(ANYARGS))get_tone, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "tone=", (VALUE (*)(ANYARGS))set_tone, 1); + SANDBOX_AWAIT(rb_define_method, sprite_class, "visible", (VALUE (*)(ANYARGS))get_visible, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "visible=", (VALUE (*)(ANYARGS))set_visible, 1); + SANDBOX_AWAIT(rb_define_method, sprite_class, "width", (VALUE (*)(ANYARGS))width, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "height", (VALUE (*)(ANYARGS))height, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "x", (VALUE (*)(ANYARGS))get_x, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "x=", (VALUE (*)(ANYARGS))set_x, 1); + SANDBOX_AWAIT(rb_define_method, sprite_class, "y", (VALUE (*)(ANYARGS))get_y, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "y=", (VALUE (*)(ANYARGS))set_y, 1); + SANDBOX_AWAIT(rb_define_method, sprite_class, "ox", (VALUE (*)(ANYARGS))get_ox, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "ox=", (VALUE (*)(ANYARGS))set_ox, 1); + SANDBOX_AWAIT(rb_define_method, sprite_class, "oy", (VALUE (*)(ANYARGS))get_oy, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "oy=", (VALUE (*)(ANYARGS))set_oy, 1); + SANDBOX_AWAIT(rb_define_method, sprite_class, "zoom_x", (VALUE (*)(ANYARGS))get_zoom_x, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "zoom_x=", (VALUE (*)(ANYARGS))set_zoom_x, 1); + SANDBOX_AWAIT(rb_define_method, sprite_class, "zoom_y", (VALUE (*)(ANYARGS))get_zoom_y, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "zoom_y=", (VALUE (*)(ANYARGS))set_zoom_y, 1); + SANDBOX_AWAIT(rb_define_method, sprite_class, "z", (VALUE (*)(ANYARGS))get_z, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "z=", (VALUE (*)(ANYARGS))set_z, 1); + SANDBOX_AWAIT(rb_define_method, sprite_class, "angle", (VALUE (*)(ANYARGS))get_angle, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "angle=", (VALUE (*)(ANYARGS))set_angle, 1); + SANDBOX_AWAIT(rb_define_method, sprite_class, "mirror", (VALUE (*)(ANYARGS))get_mirror, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "mirror=", (VALUE (*)(ANYARGS))set_mirror, 1); + SANDBOX_AWAIT(rb_define_method, sprite_class, "bush_depth", (VALUE (*)(ANYARGS))get_bush_depth, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "bush_depth=", (VALUE (*)(ANYARGS))set_bush_depth, 1); + SANDBOX_AWAIT(rb_define_method, sprite_class, "bush_opacity", (VALUE (*)(ANYARGS))get_bush_opacity, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "bush_opacity=", (VALUE (*)(ANYARGS))set_bush_opacity, 1); + SANDBOX_AWAIT(rb_define_method, sprite_class, "opacity", (VALUE (*)(ANYARGS))get_opacity, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "opacity=", (VALUE (*)(ANYARGS))set_opacity, 1); + SANDBOX_AWAIT(rb_define_method, sprite_class, "blend_type", (VALUE (*)(ANYARGS))get_blend_type, 0); + SANDBOX_AWAIT(rb_define_method, sprite_class, "blend_type=", (VALUE (*)(ANYARGS))set_blend_type, 1); } } ) diff --git a/binding-sandbox/table-binding.h b/binding-sandbox/table-binding.h index d0fd4c95..3ee9997d 100644 --- a/binding-sandbox/table-binding.h +++ b/binding-sandbox/table-binding.h @@ -29,6 +29,7 @@ namespace mkxp_sandbox { static struct mkxp_sandbox::bindings::rb_data_type table_type; + static VALUE table_class; SANDBOX_COROUTINE(table_binding_init, SANDBOX_DEF_ALLOC_WITH_INIT(table_type, new Table(0, 0, 0)) @@ -207,22 +208,20 @@ namespace mkxp_sandbox { return sb()->bind()()(argc, argv, self); } - VALUE klass; - void operator()() { BOOST_ASIO_CORO_REENTER (this) { table_type = sb()->rb_data_type("Table", NULL, dfree, NULL, NULL, 0, 0, 0); - SANDBOX_AWAIT_AND_SET(klass, rb_define_class, "Table", sb()->rb_cObject()); - SANDBOX_AWAIT(rb_define_alloc_func, klass, alloc); - SANDBOX_AWAIT(rb_define_singleton_method, klass, "_load", (VALUE (*)(ANYARGS))load, 1); - SANDBOX_AWAIT(rb_define_method, klass, "initialize", (VALUE (*)(ANYARGS))initialize, -1); - SANDBOX_AWAIT(rb_define_method, klass, "initialize_copy", (VALUE (*)(ANYARGS))initialize_copy, 1); - SANDBOX_AWAIT(rb_define_method, klass, "resize", (VALUE (*)(ANYARGS))resize, -1); - SANDBOX_AWAIT(rb_define_method, klass, "xsize", (VALUE (*)(ANYARGS))xsize, 0); - SANDBOX_AWAIT(rb_define_method, klass, "ysize", (VALUE (*)(ANYARGS))ysize, 0); - SANDBOX_AWAIT(rb_define_method, klass, "zsize", (VALUE (*)(ANYARGS))zsize, 0); - SANDBOX_AWAIT(rb_define_method, klass, "[]", (VALUE (*)(ANYARGS))get, -1); - SANDBOX_AWAIT(rb_define_method, klass, "[]=", (VALUE (*)(ANYARGS))set, -1); + SANDBOX_AWAIT_AND_SET(table_class, rb_define_class, "Table", sb()->rb_cObject()); + SANDBOX_AWAIT(rb_define_alloc_func, table_class, alloc); + SANDBOX_AWAIT(rb_define_singleton_method, table_class, "_load", (VALUE (*)(ANYARGS))load, 1); + SANDBOX_AWAIT(rb_define_method, table_class, "initialize", (VALUE (*)(ANYARGS))initialize, -1); + SANDBOX_AWAIT(rb_define_method, table_class, "initialize_copy", (VALUE (*)(ANYARGS))initialize_copy, 1); + SANDBOX_AWAIT(rb_define_method, table_class, "resize", (VALUE (*)(ANYARGS))resize, -1); + SANDBOX_AWAIT(rb_define_method, table_class, "xsize", (VALUE (*)(ANYARGS))xsize, 0); + SANDBOX_AWAIT(rb_define_method, table_class, "ysize", (VALUE (*)(ANYARGS))ysize, 0); + SANDBOX_AWAIT(rb_define_method, table_class, "zsize", (VALUE (*)(ANYARGS))zsize, 0); + SANDBOX_AWAIT(rb_define_method, table_class, "[]", (VALUE (*)(ANYARGS))get, -1); + SANDBOX_AWAIT(rb_define_method, table_class, "[]=", (VALUE (*)(ANYARGS))set, -1); } } ) diff --git a/binding-sandbox/tilemap-binding.h b/binding-sandbox/tilemap-binding.h index e5d9335e..97c6aedc 100644 --- a/binding-sandbox/tilemap-binding.h +++ b/binding-sandbox/tilemap-binding.h @@ -25,10 +25,13 @@ #include "sandbox.h" #include "binding-util.h" #include "tilemap.h" +#include "etc-binding.h" namespace mkxp_sandbox { static struct mkxp_sandbox::bindings::rb_data_type tilemap_type; + static VALUE tilemap_class; static struct mkxp_sandbox::bindings::rb_data_type tilemap_autotiles_type; + static VALUE tilemap_autotiles_class; SANDBOX_COROUTINE(tilemap_binding_init, SANDBOX_COROUTINE(tilemap_autotiles_binding_init, @@ -86,15 +89,13 @@ namespace mkxp_sandbox { return sb()->bind()()(self, i, obj); } - VALUE klass; - void operator()() { BOOST_ASIO_CORO_REENTER (this) { tilemap_autotiles_type = sb()->rb_data_type("TilemapAutotiles", NULL, NULL, NULL, NULL, 0, 0, 0); - SANDBOX_AWAIT_AND_SET(klass, rb_define_class, "TilemapAutotiles", sb()->rb_cObject()); - SANDBOX_AWAIT(rb_define_alloc_func, klass, alloc); - SANDBOX_AWAIT(rb_define_method, klass, "[]", (VALUE (*)(ANYARGS))get, 1); - SANDBOX_AWAIT(rb_define_method, klass, "[]=", (VALUE (*)(ANYARGS))set, 2); + SANDBOX_AWAIT_AND_SET(tilemap_autotiles_class, rb_define_class, "TilemapAutotiles", sb()->rb_cObject()); + SANDBOX_AWAIT(rb_define_alloc_func, tilemap_autotiles_class, alloc); + SANDBOX_AWAIT(rb_define_method, tilemap_autotiles_class, "[]", (VALUE (*)(ANYARGS))get, 1); + SANDBOX_AWAIT(rb_define_method, tilemap_autotiles_class, "[]=", (VALUE (*)(ANYARGS))set, 2); } } ) @@ -111,8 +112,6 @@ namespace mkxp_sandbox { int32_t y; int32_t w; int32_t h; - ID id; - VALUE klass; VALUE obj; VALUE ary; unsigned int i; @@ -142,25 +141,10 @@ namespace mkxp_sandbox { set_private_data(obj, NULL); } - SANDBOX_AWAIT_AND_SET(id, rb_intern, "TilemapAutotiles"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); - set_private_data(obj, &tilemap->getAutotiles()); - SANDBOX_AWAIT(rb_iv_set, self, "autotiles", obj); + SANDBOX_AWAIT_AND_SET(obj, wrap_property, self, &tilemap->getAutotiles(), "autotiles", tilemap_autotiles_class); - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Color"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); - set_private_data(obj, &tilemap->getColor()); - SANDBOX_AWAIT(rb_iv_set, self, "color", obj); - - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Tone"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); - set_private_data(obj, &tilemap->getTone()); - SANDBOX_AWAIT(rb_iv_set, self, "tone", obj); - - SANDBOX_AWAIT_AND_SET(obj, rb_iv_get, self, "autotiles"); + SANDBOX_AWAIT(wrap_property, self, &tilemap->getColor(), "color", color_class); + SANDBOX_AWAIT(wrap_property, self, &tilemap->getTone(), "tone", tone_class); SANDBOX_AWAIT_AND_SET(ary, rb_class_new_instance, 0, NULL, sb()->rb_cArray()); for (i = 0; i < 7; ++i) { @@ -403,42 +387,40 @@ namespace mkxp_sandbox { return sb()->bind()()(self, value); } - VALUE klass; - void operator()() { BOOST_ASIO_CORO_REENTER (this) { SANDBOX_AWAIT(tilemap_autotiles_binding_init); tilemap_type = sb()->rb_data_type("Tilemap", NULL, dfree, NULL, NULL, 0, 0, 0); - SANDBOX_AWAIT_AND_SET(klass, rb_define_class, "Tilemap", sb()->rb_cObject()); - SANDBOX_AWAIT(rb_define_alloc_func, klass, alloc); - SANDBOX_AWAIT(rb_define_method, klass, "initialize", (VALUE (*)(ANYARGS))initialize, -1); - SANDBOX_AWAIT(rb_define_method, klass, "dispose", (VALUE (*)(ANYARGS))dispose, 0); - SANDBOX_AWAIT(rb_define_method, klass, "disposed?", (VALUE (*)(ANYARGS))disposed, 0); - SANDBOX_AWAIT(rb_define_method, klass, "update", (VALUE (*)(ANYARGS))update, 0); - SANDBOX_AWAIT(rb_define_method, klass, "autotiles", (VALUE (*)(ANYARGS))autotiles, 0); - SANDBOX_AWAIT(rb_define_method, klass, "tileset", (VALUE (*)(ANYARGS))get_tileset, 0); - SANDBOX_AWAIT(rb_define_method, klass, "tileset=", (VALUE (*)(ANYARGS))set_tileset, 1); - SANDBOX_AWAIT(rb_define_method, klass, "map_data", (VALUE (*)(ANYARGS))get_map_data, 0); - SANDBOX_AWAIT(rb_define_method, klass, "map_data=", (VALUE (*)(ANYARGS))set_map_data, 1); - SANDBOX_AWAIT(rb_define_method, klass, "flash_data", (VALUE (*)(ANYARGS))get_flash_data, 0); - SANDBOX_AWAIT(rb_define_method, klass, "flash_data=", (VALUE (*)(ANYARGS))set_flash_data, 1); - SANDBOX_AWAIT(rb_define_method, klass, "priorities", (VALUE (*)(ANYARGS))get_priorities, 0); - SANDBOX_AWAIT(rb_define_method, klass, "priorities=", (VALUE (*)(ANYARGS))set_priorities, 1); - SANDBOX_AWAIT(rb_define_method, klass, "color", (VALUE (*)(ANYARGS))get_color, 0); - SANDBOX_AWAIT(rb_define_method, klass, "color=", (VALUE (*)(ANYARGS))set_color, 1); - SANDBOX_AWAIT(rb_define_method, klass, "tone", (VALUE (*)(ANYARGS))get_tone, 0); - SANDBOX_AWAIT(rb_define_method, klass, "tone=", (VALUE (*)(ANYARGS))set_tone, 1); - SANDBOX_AWAIT(rb_define_method, klass, "visible", (VALUE (*)(ANYARGS))get_visible, 0); - SANDBOX_AWAIT(rb_define_method, klass, "visible=", (VALUE (*)(ANYARGS))set_visible, 1); - SANDBOX_AWAIT(rb_define_method, klass, "ox", (VALUE (*)(ANYARGS))get_ox, 0); - SANDBOX_AWAIT(rb_define_method, klass, "ox=", (VALUE (*)(ANYARGS))set_ox, 1); - SANDBOX_AWAIT(rb_define_method, klass, "oy", (VALUE (*)(ANYARGS))get_oy, 0); - SANDBOX_AWAIT(rb_define_method, klass, "oy=", (VALUE (*)(ANYARGS))set_oy, 1); - SANDBOX_AWAIT(rb_define_method, klass, "opacity", (VALUE (*)(ANYARGS))get_opacity, 0); - SANDBOX_AWAIT(rb_define_method, klass, "opacity=", (VALUE (*)(ANYARGS))set_opacity, 1); - SANDBOX_AWAIT(rb_define_method, klass, "blend_type", (VALUE (*)(ANYARGS))get_blend_type, 0); - SANDBOX_AWAIT(rb_define_method, klass, "blend_type=", (VALUE (*)(ANYARGS))set_blend_type, 1); + SANDBOX_AWAIT_AND_SET(tilemap_class, rb_define_class, "Tilemap", sb()->rb_cObject()); + SANDBOX_AWAIT(rb_define_alloc_func, tilemap_class, alloc); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "initialize", (VALUE (*)(ANYARGS))initialize, -1); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "dispose", (VALUE (*)(ANYARGS))dispose, 0); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "disposed?", (VALUE (*)(ANYARGS))disposed, 0); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "update", (VALUE (*)(ANYARGS))update, 0); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "autotiles", (VALUE (*)(ANYARGS))autotiles, 0); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "tileset", (VALUE (*)(ANYARGS))get_tileset, 0); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "tileset=", (VALUE (*)(ANYARGS))set_tileset, 1); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "map_data", (VALUE (*)(ANYARGS))get_map_data, 0); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "map_data=", (VALUE (*)(ANYARGS))set_map_data, 1); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "flash_data", (VALUE (*)(ANYARGS))get_flash_data, 0); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "flash_data=", (VALUE (*)(ANYARGS))set_flash_data, 1); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "priorities", (VALUE (*)(ANYARGS))get_priorities, 0); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "priorities=", (VALUE (*)(ANYARGS))set_priorities, 1); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "color", (VALUE (*)(ANYARGS))get_color, 0); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "color=", (VALUE (*)(ANYARGS))set_color, 1); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "tone", (VALUE (*)(ANYARGS))get_tone, 0); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "tone=", (VALUE (*)(ANYARGS))set_tone, 1); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "visible", (VALUE (*)(ANYARGS))get_visible, 0); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "visible=", (VALUE (*)(ANYARGS))set_visible, 1); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "ox", (VALUE (*)(ANYARGS))get_ox, 0); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "ox=", (VALUE (*)(ANYARGS))set_ox, 1); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "oy", (VALUE (*)(ANYARGS))get_oy, 0); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "oy=", (VALUE (*)(ANYARGS))set_oy, 1); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "opacity", (VALUE (*)(ANYARGS))get_opacity, 0); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "opacity=", (VALUE (*)(ANYARGS))set_opacity, 1); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "blend_type", (VALUE (*)(ANYARGS))get_blend_type, 0); + SANDBOX_AWAIT(rb_define_method, tilemap_class, "blend_type=", (VALUE (*)(ANYARGS))set_blend_type, 1); } } ) diff --git a/binding-sandbox/tilemapvx-binding.h b/binding-sandbox/tilemapvx-binding.h index e4030d4e..22ecd200 100644 --- a/binding-sandbox/tilemapvx-binding.h +++ b/binding-sandbox/tilemapvx-binding.h @@ -28,7 +28,9 @@ namespace mkxp_sandbox { static struct mkxp_sandbox::bindings::rb_data_type tilemapvx_type; + static VALUE tilemapvx_class; static struct mkxp_sandbox::bindings::rb_data_type bitmap_array_type; + static VALUE bitmap_array_class; SANDBOX_COROUTINE(tilemapvx_binding_init, SANDBOX_COROUTINE(bitmap_array_binding_init, @@ -86,15 +88,13 @@ namespace mkxp_sandbox { return sb()->bind()()(self, i, obj); } - VALUE klass; - void operator()() { BOOST_ASIO_CORO_REENTER (this) { bitmap_array_type = sb()->rb_data_type("BitmapArray", NULL, NULL, NULL, NULL, 0, 0, 0); - SANDBOX_AWAIT_AND_SET(klass, rb_define_class, "BitmapArray", sb()->rb_cObject()); - SANDBOX_AWAIT(rb_define_alloc_func, klass, alloc); - SANDBOX_AWAIT(rb_define_method, klass, "[]", (VALUE (*)(ANYARGS))get, 1); - SANDBOX_AWAIT(rb_define_method, klass, "[]=", (VALUE (*)(ANYARGS))set, 2); + SANDBOX_AWAIT_AND_SET(bitmap_array_class, rb_define_class, "BitmapArray", sb()->rb_cObject()); + SANDBOX_AWAIT(rb_define_alloc_func, bitmap_array_class, alloc); + SANDBOX_AWAIT(rb_define_method, bitmap_array_class, "[]", (VALUE (*)(ANYARGS))get, 1); + SANDBOX_AWAIT(rb_define_method, bitmap_array_class, "[]=", (VALUE (*)(ANYARGS))set, 2); } } ) @@ -111,8 +111,6 @@ namespace mkxp_sandbox { int32_t y; int32_t w; int32_t h; - ID id; - VALUE klass; VALUE obj; VALUE ary; unsigned int i; @@ -140,13 +138,7 @@ namespace mkxp_sandbox { set_private_data(obj, NULL); } - SANDBOX_AWAIT_AND_SET(id, rb_intern, "BitmapArray"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); - set_private_data(obj, &tilemap->getBitmapArray()); - SANDBOX_AWAIT(rb_iv_set, self, "bitmap_array", obj); - - SANDBOX_AWAIT_AND_SET(obj, rb_iv_get, self, "bitmap_array"); + SANDBOX_AWAIT_AND_SET(obj, wrap_property, self, &tilemap->getBitmapArray(), "bitmap_array", bitmap_array_class); SANDBOX_AWAIT_AND_SET(ary, rb_class_new_instance, 0, NULL, sb()->rb_cArray()); for (i = 0; i < 9; ++i) { @@ -301,32 +293,30 @@ namespace mkxp_sandbox { return sb()->bind()()(self, value); } - VALUE klass; - void operator()() { BOOST_ASIO_CORO_REENTER (this) { SANDBOX_AWAIT(bitmap_array_binding_init); tilemapvx_type = sb()->rb_data_type("Tilemap", NULL, dfree, NULL, NULL, 0, 0, 0); - SANDBOX_AWAIT_AND_SET(klass, rb_define_class, "Tilemap", sb()->rb_cObject()); - SANDBOX_AWAIT(rb_define_alloc_func, klass, alloc); - SANDBOX_AWAIT(rb_define_method, klass, "initialize", (VALUE (*)(ANYARGS))initialize, -1); - SANDBOX_AWAIT(rb_define_method, klass, "dispose", (VALUE (*)(ANYARGS))dispose, 0); - SANDBOX_AWAIT(rb_define_method, klass, "disposed?", (VALUE (*)(ANYARGS))disposed, 0); - SANDBOX_AWAIT(rb_define_method, klass, "update", (VALUE (*)(ANYARGS))update, 0); - SANDBOX_AWAIT(rb_define_method, klass, "bitmaps", (VALUE (*)(ANYARGS))bitmaps, 0); - SANDBOX_AWAIT(rb_define_method, klass, "map_data", (VALUE (*)(ANYARGS))get_map_data, 0); - SANDBOX_AWAIT(rb_define_method, klass, "map_data=", (VALUE (*)(ANYARGS))set_map_data, 1); - SANDBOX_AWAIT(rb_define_method, klass, "flash_data", (VALUE (*)(ANYARGS))get_flash_data, 0); - SANDBOX_AWAIT(rb_define_method, klass, "flash_data=", (VALUE (*)(ANYARGS))set_flash_data, 1); - SANDBOX_AWAIT(rb_define_method, klass, rgssVer == 3 ? "flags" : "passages", (VALUE (*)(ANYARGS))get_flags, 0); - SANDBOX_AWAIT(rb_define_method, klass, rgssVer == 3 ? "flags=" : "passages=", (VALUE (*)(ANYARGS))set_flags, 1); - SANDBOX_AWAIT(rb_define_method, klass, "visible", (VALUE (*)(ANYARGS))get_visible, 0); - SANDBOX_AWAIT(rb_define_method, klass, "visible=", (VALUE (*)(ANYARGS))set_visible, 1); - SANDBOX_AWAIT(rb_define_method, klass, "ox", (VALUE (*)(ANYARGS))get_ox, 0); - SANDBOX_AWAIT(rb_define_method, klass, "ox=", (VALUE (*)(ANYARGS))set_ox, 1); - SANDBOX_AWAIT(rb_define_method, klass, "oy", (VALUE (*)(ANYARGS))get_oy, 0); - SANDBOX_AWAIT(rb_define_method, klass, "oy=", (VALUE (*)(ANYARGS))set_oy, 1); + SANDBOX_AWAIT_AND_SET(tilemapvx_class, rb_define_class, "Tilemap", sb()->rb_cObject()); + SANDBOX_AWAIT(rb_define_alloc_func, tilemapvx_class, alloc); + SANDBOX_AWAIT(rb_define_method, tilemapvx_class, "initialize", (VALUE (*)(ANYARGS))initialize, -1); + SANDBOX_AWAIT(rb_define_method, tilemapvx_class, "dispose", (VALUE (*)(ANYARGS))dispose, 0); + SANDBOX_AWAIT(rb_define_method, tilemapvx_class, "disposed?", (VALUE (*)(ANYARGS))disposed, 0); + SANDBOX_AWAIT(rb_define_method, tilemapvx_class, "update", (VALUE (*)(ANYARGS))update, 0); + SANDBOX_AWAIT(rb_define_method, tilemapvx_class, "bitmaps", (VALUE (*)(ANYARGS))bitmaps, 0); + SANDBOX_AWAIT(rb_define_method, tilemapvx_class, "map_data", (VALUE (*)(ANYARGS))get_map_data, 0); + SANDBOX_AWAIT(rb_define_method, tilemapvx_class, "map_data=", (VALUE (*)(ANYARGS))set_map_data, 1); + SANDBOX_AWAIT(rb_define_method, tilemapvx_class, "flash_data", (VALUE (*)(ANYARGS))get_flash_data, 0); + SANDBOX_AWAIT(rb_define_method, tilemapvx_class, "flash_data=", (VALUE (*)(ANYARGS))set_flash_data, 1); + SANDBOX_AWAIT(rb_define_method, tilemapvx_class, rgssVer == 3 ? "flags" : "passages", (VALUE (*)(ANYARGS))get_flags, 0); + SANDBOX_AWAIT(rb_define_method, tilemapvx_class, rgssVer == 3 ? "flags=" : "passages=", (VALUE (*)(ANYARGS))set_flags, 1); + SANDBOX_AWAIT(rb_define_method, tilemapvx_class, "visible", (VALUE (*)(ANYARGS))get_visible, 0); + SANDBOX_AWAIT(rb_define_method, tilemapvx_class, "visible=", (VALUE (*)(ANYARGS))set_visible, 1); + SANDBOX_AWAIT(rb_define_method, tilemapvx_class, "ox", (VALUE (*)(ANYARGS))get_ox, 0); + SANDBOX_AWAIT(rb_define_method, tilemapvx_class, "ox=", (VALUE (*)(ANYARGS))set_ox, 1); + SANDBOX_AWAIT(rb_define_method, tilemapvx_class, "oy", (VALUE (*)(ANYARGS))get_oy, 0); + SANDBOX_AWAIT(rb_define_method, tilemapvx_class, "oy=", (VALUE (*)(ANYARGS))set_oy, 1); } } ) diff --git a/binding-sandbox/viewport-binding.h b/binding-sandbox/viewport-binding.h index 1376bb97..3c058089 100644 --- a/binding-sandbox/viewport-binding.h +++ b/binding-sandbox/viewport-binding.h @@ -25,9 +25,11 @@ #include "sandbox.h" #include "binding-util.h" #include "viewport.h" +#include "etc-binding.h" namespace mkxp_sandbox { static struct mkxp_sandbox::bindings::rb_data_type viewport_type; + static VALUE viewport_class; SANDBOX_COROUTINE(viewport_binding_init, SANDBOX_DEF_ALLOC(viewport_type) @@ -40,8 +42,6 @@ namespace mkxp_sandbox { int32_t y; int32_t w; int32_t h; - ID id; - VALUE klass; VALUE obj; VALUE operator()(int32_t argc, wasm_ptr_t argv, VALUE self) { @@ -65,23 +65,9 @@ namespace mkxp_sandbox { viewport->initDynAttribs(); - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Rect"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); - set_private_data(obj, &viewport->getRect()); - SANDBOX_AWAIT(rb_iv_set, self, "rect", obj); - - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Color"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); - set_private_data(obj, &viewport->getColor()); - SANDBOX_AWAIT(rb_iv_set, self, "color", obj); - - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Tone"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); - set_private_data(obj, &viewport->getTone()); - SANDBOX_AWAIT(rb_iv_set, self, "tone", obj); + SANDBOX_AWAIT(wrap_property, self, &viewport->getRect(), "rect", rect_class); + SANDBOX_AWAIT(wrap_property, self, &viewport->getColor(), "color", color_class); + SANDBOX_AWAIT(wrap_property, self, &viewport->getTone(), "tone", tone_class); GFX_UNLOCK } @@ -238,30 +224,28 @@ namespace mkxp_sandbox { return sb()->bind()()(self, value); } - VALUE klass; - void operator()() { BOOST_ASIO_CORO_REENTER (this) { viewport_type = sb()->rb_data_type("Viewport", NULL, dfree, NULL, NULL, 0, 0, 0); - SANDBOX_AWAIT_AND_SET(klass, rb_define_class, "Viewport", sb()->rb_cObject()); - SANDBOX_AWAIT(rb_define_alloc_func, klass, alloc); - SANDBOX_AWAIT(rb_define_method, klass, "initialize", (VALUE (*)(ANYARGS))initialize, -1); - SANDBOX_AWAIT(rb_define_method, klass, "dispose", (VALUE (*)(ANYARGS))dispose, 0); - SANDBOX_AWAIT(rb_define_method, klass, "disposed?", (VALUE (*)(ANYARGS))disposed, 0); - SANDBOX_AWAIT(rb_define_method, klass, "flash", (VALUE (*)(ANYARGS))flash, 2); - SANDBOX_AWAIT(rb_define_method, klass, "update", (VALUE (*)(ANYARGS))update, 0); - SANDBOX_AWAIT(rb_define_method, klass, "rect", (VALUE (*)(ANYARGS))get_rect, 0); - SANDBOX_AWAIT(rb_define_method, klass, "rect=", (VALUE (*)(ANYARGS))set_rect, 1); - SANDBOX_AWAIT(rb_define_method, klass, "color", (VALUE (*)(ANYARGS))get_color, 0); - SANDBOX_AWAIT(rb_define_method, klass, "color=", (VALUE (*)(ANYARGS))set_color, 1); - SANDBOX_AWAIT(rb_define_method, klass, "tone", (VALUE (*)(ANYARGS))get_tone, 0); - SANDBOX_AWAIT(rb_define_method, klass, "tone=", (VALUE (*)(ANYARGS))set_tone, 1); - SANDBOX_AWAIT(rb_define_method, klass, "ox", (VALUE (*)(ANYARGS))get_ox, 0); - SANDBOX_AWAIT(rb_define_method, klass, "ox=", (VALUE (*)(ANYARGS))set_ox, 1); - SANDBOX_AWAIT(rb_define_method, klass, "oy", (VALUE (*)(ANYARGS))get_oy, 0); - SANDBOX_AWAIT(rb_define_method, klass, "oy=", (VALUE (*)(ANYARGS))set_oy, 1); - SANDBOX_AWAIT(rb_define_method, klass, "z", (VALUE (*)(ANYARGS))get_z, 0); - SANDBOX_AWAIT(rb_define_method, klass, "z=", (VALUE (*)(ANYARGS))set_z, 1); + SANDBOX_AWAIT_AND_SET(viewport_class, rb_define_class, "Viewport", sb()->rb_cObject()); + SANDBOX_AWAIT(rb_define_alloc_func, viewport_class, alloc); + SANDBOX_AWAIT(rb_define_method, viewport_class, "initialize", (VALUE (*)(ANYARGS))initialize, -1); + SANDBOX_AWAIT(rb_define_method, viewport_class, "dispose", (VALUE (*)(ANYARGS))dispose, 0); + SANDBOX_AWAIT(rb_define_method, viewport_class, "disposed?", (VALUE (*)(ANYARGS))disposed, 0); + SANDBOX_AWAIT(rb_define_method, viewport_class, "flash", (VALUE (*)(ANYARGS))flash, 2); + SANDBOX_AWAIT(rb_define_method, viewport_class, "update", (VALUE (*)(ANYARGS))update, 0); + SANDBOX_AWAIT(rb_define_method, viewport_class, "rect", (VALUE (*)(ANYARGS))get_rect, 0); + SANDBOX_AWAIT(rb_define_method, viewport_class, "rect=", (VALUE (*)(ANYARGS))set_rect, 1); + SANDBOX_AWAIT(rb_define_method, viewport_class, "color", (VALUE (*)(ANYARGS))get_color, 0); + SANDBOX_AWAIT(rb_define_method, viewport_class, "color=", (VALUE (*)(ANYARGS))set_color, 1); + SANDBOX_AWAIT(rb_define_method, viewport_class, "tone", (VALUE (*)(ANYARGS))get_tone, 0); + SANDBOX_AWAIT(rb_define_method, viewport_class, "tone=", (VALUE (*)(ANYARGS))set_tone, 1); + SANDBOX_AWAIT(rb_define_method, viewport_class, "ox", (VALUE (*)(ANYARGS))get_ox, 0); + SANDBOX_AWAIT(rb_define_method, viewport_class, "ox=", (VALUE (*)(ANYARGS))set_ox, 1); + SANDBOX_AWAIT(rb_define_method, viewport_class, "oy", (VALUE (*)(ANYARGS))get_oy, 0); + SANDBOX_AWAIT(rb_define_method, viewport_class, "oy=", (VALUE (*)(ANYARGS))set_oy, 1); + SANDBOX_AWAIT(rb_define_method, viewport_class, "z", (VALUE (*)(ANYARGS))get_z, 0); + SANDBOX_AWAIT(rb_define_method, viewport_class, "z=", (VALUE (*)(ANYARGS))set_z, 1); } } ) diff --git a/binding-sandbox/window-binding.h b/binding-sandbox/window-binding.h index 4ce431df..efb37328 100644 --- a/binding-sandbox/window-binding.h +++ b/binding-sandbox/window-binding.h @@ -25,9 +25,11 @@ #include "sandbox.h" #include "binding-util.h" #include "window.h" +#include "etc-binding.h" namespace mkxp_sandbox { static struct mkxp_sandbox::bindings::rb_data_type window_type; + static VALUE window_class; SANDBOX_COROUTINE(window_binding_init, SANDBOX_DEF_ALLOC(window_type) @@ -38,9 +40,7 @@ namespace mkxp_sandbox { Window *window; VALUE viewport_obj; Viewport *viewport; - VALUE klass; VALUE obj; - ID id; VALUE operator()(int32_t argc, wasm_ptr_t argv, VALUE self) { BOOST_ASIO_CORO_REENTER (this) { @@ -60,11 +60,7 @@ namespace mkxp_sandbox { set_private_data(self, window); window->initDynAttribs(); - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Rect"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); - set_private_data(obj, &window->getCursorRect()); - SANDBOX_AWAIT(rb_iv_set, self, "cursor_rect", obj); + SANDBOX_AWAIT(wrap_property, self, &window->getCursorRect(), "cursor_rect", rect_class); GFX_UNLOCK } @@ -415,53 +411,51 @@ namespace mkxp_sandbox { return sb()->bind()()(self, value); } - VALUE klass; - void operator()() { BOOST_ASIO_CORO_REENTER (this) { window_type = sb()->rb_data_type("Window", NULL, dfree, NULL, NULL, 0, 0, 0); - SANDBOX_AWAIT_AND_SET(klass, rb_define_class, "Window", sb()->rb_cObject()); - SANDBOX_AWAIT(rb_define_alloc_func, klass, alloc); - SANDBOX_AWAIT(rb_define_method, klass, "initialize", (VALUE (*)(ANYARGS))initialize, -1); - SANDBOX_AWAIT(rb_define_method, klass, "update", (VALUE (*)(ANYARGS))update, 0); - SANDBOX_AWAIT(rb_define_method, klass, "dispose", (VALUE (*)(ANYARGS))dispose, 0); - SANDBOX_AWAIT(rb_define_method, klass, "disposed?", (VALUE (*)(ANYARGS))disposed, 0); - SANDBOX_AWAIT(rb_define_method, klass, "viewport", (VALUE (*)(ANYARGS))get_viewport, 0); - SANDBOX_AWAIT(rb_define_method, klass, "viewport=", (VALUE (*)(ANYARGS))set_viewport, 1); - SANDBOX_AWAIT(rb_define_method, klass, "windowskin", (VALUE (*)(ANYARGS))get_windowskin, 0); - SANDBOX_AWAIT(rb_define_method, klass, "windowskin=", (VALUE (*)(ANYARGS))set_windowskin, 1); - SANDBOX_AWAIT(rb_define_method, klass, "contents", (VALUE (*)(ANYARGS))get_contents, 0); - SANDBOX_AWAIT(rb_define_method, klass, "contents=", (VALUE (*)(ANYARGS))set_contents, 1); - SANDBOX_AWAIT(rb_define_method, klass, "cursor_rect", (VALUE (*)(ANYARGS))get_cursor_rect, 0); - SANDBOX_AWAIT(rb_define_method, klass, "cursor_rect=", (VALUE (*)(ANYARGS))set_cursor_rect, 1); - SANDBOX_AWAIT(rb_define_method, klass, "stretch", (VALUE (*)(ANYARGS))get_stretch, 0); - SANDBOX_AWAIT(rb_define_method, klass, "stretch=", (VALUE (*)(ANYARGS))set_stretch, 1); - SANDBOX_AWAIT(rb_define_method, klass, "active", (VALUE (*)(ANYARGS))get_active, 0); - SANDBOX_AWAIT(rb_define_method, klass, "active=", (VALUE (*)(ANYARGS))set_active, 1); - SANDBOX_AWAIT(rb_define_method, klass, "visible", (VALUE (*)(ANYARGS))get_visible, 0); - SANDBOX_AWAIT(rb_define_method, klass, "visible=", (VALUE (*)(ANYARGS))set_visible, 1); - SANDBOX_AWAIT(rb_define_method, klass, "pause", (VALUE (*)(ANYARGS))get_pause, 0); - SANDBOX_AWAIT(rb_define_method, klass, "pause=", (VALUE (*)(ANYARGS))set_pause, 1); - SANDBOX_AWAIT(rb_define_method, klass, "x", (VALUE (*)(ANYARGS))get_x, 0); - SANDBOX_AWAIT(rb_define_method, klass, "x=", (VALUE (*)(ANYARGS))set_x, 1); - SANDBOX_AWAIT(rb_define_method, klass, "y", (VALUE (*)(ANYARGS))get_y, 0); - SANDBOX_AWAIT(rb_define_method, klass, "y=", (VALUE (*)(ANYARGS))set_y, 1); - SANDBOX_AWAIT(rb_define_method, klass, "width", (VALUE (*)(ANYARGS))get_width, 0); - SANDBOX_AWAIT(rb_define_method, klass, "width=", (VALUE (*)(ANYARGS))set_width, 1); - SANDBOX_AWAIT(rb_define_method, klass, "height", (VALUE (*)(ANYARGS))get_height, 0); - SANDBOX_AWAIT(rb_define_method, klass, "height=", (VALUE (*)(ANYARGS))set_height, 1); - SANDBOX_AWAIT(rb_define_method, klass, "ox", (VALUE (*)(ANYARGS))get_ox, 0); - SANDBOX_AWAIT(rb_define_method, klass, "ox=", (VALUE (*)(ANYARGS))set_ox, 1); - SANDBOX_AWAIT(rb_define_method, klass, "oy", (VALUE (*)(ANYARGS))get_oy, 0); - SANDBOX_AWAIT(rb_define_method, klass, "oy=", (VALUE (*)(ANYARGS))set_oy, 1); - SANDBOX_AWAIT(rb_define_method, klass, "opacity", (VALUE (*)(ANYARGS))get_opacity, 0); - SANDBOX_AWAIT(rb_define_method, klass, "opacity=", (VALUE (*)(ANYARGS))set_opacity, 1); - SANDBOX_AWAIT(rb_define_method, klass, "back_opacity", (VALUE (*)(ANYARGS))get_back_opacity, 0); - SANDBOX_AWAIT(rb_define_method, klass, "back_opacity=", (VALUE (*)(ANYARGS))set_back_opacity, 1); - SANDBOX_AWAIT(rb_define_method, klass, "contents_opacity", (VALUE (*)(ANYARGS))get_contents_opacity, 0); - SANDBOX_AWAIT(rb_define_method, klass, "contents_opacity=", (VALUE (*)(ANYARGS))set_contents_opacity, 1); - SANDBOX_AWAIT(rb_define_method, klass, "z", (VALUE (*)(ANYARGS))get_z, 0); - SANDBOX_AWAIT(rb_define_method, klass, "z=", (VALUE (*)(ANYARGS))set_z, 1); + SANDBOX_AWAIT_AND_SET(window_class, rb_define_class, "Window", sb()->rb_cObject()); + SANDBOX_AWAIT(rb_define_alloc_func, window_class, alloc); + SANDBOX_AWAIT(rb_define_method, window_class, "initialize", (VALUE (*)(ANYARGS))initialize, -1); + SANDBOX_AWAIT(rb_define_method, window_class, "update", (VALUE (*)(ANYARGS))update, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "dispose", (VALUE (*)(ANYARGS))dispose, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "disposed?", (VALUE (*)(ANYARGS))disposed, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "viewport", (VALUE (*)(ANYARGS))get_viewport, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "viewport=", (VALUE (*)(ANYARGS))set_viewport, 1); + SANDBOX_AWAIT(rb_define_method, window_class, "windowskin", (VALUE (*)(ANYARGS))get_windowskin, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "windowskin=", (VALUE (*)(ANYARGS))set_windowskin, 1); + SANDBOX_AWAIT(rb_define_method, window_class, "contents", (VALUE (*)(ANYARGS))get_contents, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "contents=", (VALUE (*)(ANYARGS))set_contents, 1); + SANDBOX_AWAIT(rb_define_method, window_class, "cursor_rect", (VALUE (*)(ANYARGS))get_cursor_rect, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "cursor_rect=", (VALUE (*)(ANYARGS))set_cursor_rect, 1); + SANDBOX_AWAIT(rb_define_method, window_class, "stretch", (VALUE (*)(ANYARGS))get_stretch, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "stretch=", (VALUE (*)(ANYARGS))set_stretch, 1); + SANDBOX_AWAIT(rb_define_method, window_class, "active", (VALUE (*)(ANYARGS))get_active, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "active=", (VALUE (*)(ANYARGS))set_active, 1); + SANDBOX_AWAIT(rb_define_method, window_class, "visible", (VALUE (*)(ANYARGS))get_visible, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "visible=", (VALUE (*)(ANYARGS))set_visible, 1); + SANDBOX_AWAIT(rb_define_method, window_class, "pause", (VALUE (*)(ANYARGS))get_pause, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "pause=", (VALUE (*)(ANYARGS))set_pause, 1); + SANDBOX_AWAIT(rb_define_method, window_class, "x", (VALUE (*)(ANYARGS))get_x, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "x=", (VALUE (*)(ANYARGS))set_x, 1); + SANDBOX_AWAIT(rb_define_method, window_class, "y", (VALUE (*)(ANYARGS))get_y, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "y=", (VALUE (*)(ANYARGS))set_y, 1); + SANDBOX_AWAIT(rb_define_method, window_class, "width", (VALUE (*)(ANYARGS))get_width, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "width=", (VALUE (*)(ANYARGS))set_width, 1); + SANDBOX_AWAIT(rb_define_method, window_class, "height", (VALUE (*)(ANYARGS))get_height, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "height=", (VALUE (*)(ANYARGS))set_height, 1); + SANDBOX_AWAIT(rb_define_method, window_class, "ox", (VALUE (*)(ANYARGS))get_ox, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "ox=", (VALUE (*)(ANYARGS))set_ox, 1); + SANDBOX_AWAIT(rb_define_method, window_class, "oy", (VALUE (*)(ANYARGS))get_oy, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "oy=", (VALUE (*)(ANYARGS))set_oy, 1); + SANDBOX_AWAIT(rb_define_method, window_class, "opacity", (VALUE (*)(ANYARGS))get_opacity, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "opacity=", (VALUE (*)(ANYARGS))set_opacity, 1); + SANDBOX_AWAIT(rb_define_method, window_class, "back_opacity", (VALUE (*)(ANYARGS))get_back_opacity, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "back_opacity=", (VALUE (*)(ANYARGS))set_back_opacity, 1); + SANDBOX_AWAIT(rb_define_method, window_class, "contents_opacity", (VALUE (*)(ANYARGS))get_contents_opacity, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "contents_opacity=", (VALUE (*)(ANYARGS))set_contents_opacity, 1); + SANDBOX_AWAIT(rb_define_method, window_class, "z", (VALUE (*)(ANYARGS))get_z, 0); + SANDBOX_AWAIT(rb_define_method, window_class, "z=", (VALUE (*)(ANYARGS))set_z, 1); } } ) diff --git a/binding-sandbox/windowvx-binding.h b/binding-sandbox/windowvx-binding.h index e846ba05..d2d7cdda 100644 --- a/binding-sandbox/windowvx-binding.h +++ b/binding-sandbox/windowvx-binding.h @@ -25,12 +25,14 @@ #include "sandbox.h" #include "binding-util.h" #include "bitmap-binding.h" +#include "etc-binding.h" #include "windowvx.h" #include "bitmap.h" #include "etc.h" namespace mkxp_sandbox { static struct mkxp_sandbox::bindings::rb_data_type windowvx_type; + static VALUE windowvx_class; SANDBOX_COROUTINE(windowvx_binding_init, SANDBOX_DEF_ALLOC(windowvx_type) @@ -41,9 +43,7 @@ namespace mkxp_sandbox { WindowVX *window; VALUE viewport_obj; Viewport *viewport; - VALUE klass; VALUE obj; - ID id; Bitmap *contents; int32_t x; int32_t y; @@ -80,23 +80,13 @@ namespace mkxp_sandbox { set_private_data(self, window); window->initDynAttribs(); - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Rect"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); - set_private_data(obj, &window->getCursorRect()); - SANDBOX_AWAIT(rb_iv_set, self, "cursor_rect", obj); + SANDBOX_AWAIT(wrap_property, self, &window->getCursorRect(), "cursor_rect", rect_class); if (rgssVer >= 3) { - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Tone"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); - set_private_data(obj, &window->getTone()); - SANDBOX_AWAIT(rb_iv_set, self, "tone", obj); + SANDBOX_AWAIT(wrap_property, self, &window->getTone(), "tone", tone_class); } - SANDBOX_AWAIT_AND_SET(id, rb_intern, "Bitmap"); - SANDBOX_AWAIT_AND_SET(klass, rb_const_get, sb()->rb_cObject(), id); - SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, klass); + SANDBOX_AWAIT_AND_SET(obj, rb_obj_alloc, bitmap_class); contents = new Bitmap(1, 1); set_private_data(obj, contents); SANDBOX_AWAIT(bitmap_init_props, contents, obj); @@ -566,66 +556,64 @@ namespace mkxp_sandbox { return sb()->bind()()(self, value); } - VALUE klass; - void operator()() { BOOST_ASIO_CORO_REENTER (this) { windowvx_type = sb()->rb_data_type("Window", NULL, dfree, NULL, NULL, 0, 0, 0); - SANDBOX_AWAIT_AND_SET(klass, rb_define_class, "Window", sb()->rb_cObject()); - SANDBOX_AWAIT(rb_define_alloc_func, klass, alloc); - SANDBOX_AWAIT(rb_define_method, klass, "initialize", (VALUE (*)(ANYARGS))initialize, -1); - SANDBOX_AWAIT(rb_define_method, klass, "update", (VALUE (*)(ANYARGS))update, 0); - SANDBOX_AWAIT(rb_define_method, klass, "dispose", (VALUE (*)(ANYARGS))dispose, 0); - SANDBOX_AWAIT(rb_define_method, klass, "disposed?", (VALUE (*)(ANYARGS))disposed, 0); - SANDBOX_AWAIT(rb_define_method, klass, "viewport", (VALUE (*)(ANYARGS))get_viewport, 0); - SANDBOX_AWAIT(rb_define_method, klass, "viewport=", (VALUE (*)(ANYARGS))set_viewport, 1); - SANDBOX_AWAIT(rb_define_method, klass, "windowskin", (VALUE (*)(ANYARGS))get_windowskin, 0); - SANDBOX_AWAIT(rb_define_method, klass, "windowskin=", (VALUE (*)(ANYARGS))set_windowskin, 1); - SANDBOX_AWAIT(rb_define_method, klass, "contents", (VALUE (*)(ANYARGS))get_contents, 0); - SANDBOX_AWAIT(rb_define_method, klass, "contents=", (VALUE (*)(ANYARGS))set_contents, 1); - SANDBOX_AWAIT(rb_define_method, klass, "cursor_rect", (VALUE (*)(ANYARGS))get_cursor_rect, 0); - SANDBOX_AWAIT(rb_define_method, klass, "cursor_rect=", (VALUE (*)(ANYARGS))set_cursor_rect, 1); - SANDBOX_AWAIT(rb_define_method, klass, "active", (VALUE (*)(ANYARGS))get_active, 0); - SANDBOX_AWAIT(rb_define_method, klass, "active=", (VALUE (*)(ANYARGS))set_active, 1); - SANDBOX_AWAIT(rb_define_method, klass, "visible", (VALUE (*)(ANYARGS))get_visible, 0); - SANDBOX_AWAIT(rb_define_method, klass, "visible=", (VALUE (*)(ANYARGS))set_visible, 1); - SANDBOX_AWAIT(rb_define_method, klass, "pause", (VALUE (*)(ANYARGS))get_pause, 0); - SANDBOX_AWAIT(rb_define_method, klass, "pause=", (VALUE (*)(ANYARGS))set_pause, 1); - SANDBOX_AWAIT(rb_define_method, klass, "x", (VALUE (*)(ANYARGS))get_x, 0); - SANDBOX_AWAIT(rb_define_method, klass, "x=", (VALUE (*)(ANYARGS))set_x, 1); - SANDBOX_AWAIT(rb_define_method, klass, "y", (VALUE (*)(ANYARGS))get_y, 0); - SANDBOX_AWAIT(rb_define_method, klass, "y=", (VALUE (*)(ANYARGS))set_y, 1); - SANDBOX_AWAIT(rb_define_method, klass, "width", (VALUE (*)(ANYARGS))get_width, 0); - SANDBOX_AWAIT(rb_define_method, klass, "width=", (VALUE (*)(ANYARGS))set_width, 1); - SANDBOX_AWAIT(rb_define_method, klass, "height", (VALUE (*)(ANYARGS))get_height, 0); - SANDBOX_AWAIT(rb_define_method, klass, "height=", (VALUE (*)(ANYARGS))set_height, 1); - SANDBOX_AWAIT(rb_define_method, klass, "ox", (VALUE (*)(ANYARGS))get_ox, 0); - SANDBOX_AWAIT(rb_define_method, klass, "ox=", (VALUE (*)(ANYARGS))set_ox, 1); - SANDBOX_AWAIT(rb_define_method, klass, "oy", (VALUE (*)(ANYARGS))get_oy, 0); - SANDBOX_AWAIT(rb_define_method, klass, "oy=", (VALUE (*)(ANYARGS))set_oy, 1); - SANDBOX_AWAIT(rb_define_method, klass, "opacity", (VALUE (*)(ANYARGS))get_opacity, 0); - SANDBOX_AWAIT(rb_define_method, klass, "opacity=", (VALUE (*)(ANYARGS))set_opacity, 1); - SANDBOX_AWAIT(rb_define_method, klass, "back_opacity", (VALUE (*)(ANYARGS))get_back_opacity, 0); - SANDBOX_AWAIT(rb_define_method, klass, "back_opacity=", (VALUE (*)(ANYARGS))set_back_opacity, 1); - SANDBOX_AWAIT(rb_define_method, klass, "contents_opacity", (VALUE (*)(ANYARGS))get_contents_opacity, 0); - SANDBOX_AWAIT(rb_define_method, klass, "contents_opacity=", (VALUE (*)(ANYARGS))set_contents_opacity, 1); - SANDBOX_AWAIT(rb_define_method, klass, "openness", (VALUE (*)(ANYARGS))get_openness, 0); - SANDBOX_AWAIT(rb_define_method, klass, "openness=", (VALUE (*)(ANYARGS))set_openness, 1); - SANDBOX_AWAIT(rb_define_method, klass, "z", (VALUE (*)(ANYARGS))get_z, 0); - SANDBOX_AWAIT(rb_define_method, klass, "z=", (VALUE (*)(ANYARGS))set_z, 1); + SANDBOX_AWAIT_AND_SET(windowvx_class, rb_define_class, "Window", sb()->rb_cObject()); + SANDBOX_AWAIT(rb_define_alloc_func, windowvx_class, alloc); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "initialize", (VALUE (*)(ANYARGS))initialize, -1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "update", (VALUE (*)(ANYARGS))update, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "dispose", (VALUE (*)(ANYARGS))dispose, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "disposed?", (VALUE (*)(ANYARGS))disposed, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "viewport", (VALUE (*)(ANYARGS))get_viewport, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "viewport=", (VALUE (*)(ANYARGS))set_viewport, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "windowskin", (VALUE (*)(ANYARGS))get_windowskin, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "windowskin=", (VALUE (*)(ANYARGS))set_windowskin, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "contents", (VALUE (*)(ANYARGS))get_contents, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "contents=", (VALUE (*)(ANYARGS))set_contents, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "cursor_rect", (VALUE (*)(ANYARGS))get_cursor_rect, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "cursor_rect=", (VALUE (*)(ANYARGS))set_cursor_rect, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "active", (VALUE (*)(ANYARGS))get_active, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "active=", (VALUE (*)(ANYARGS))set_active, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "visible", (VALUE (*)(ANYARGS))get_visible, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "visible=", (VALUE (*)(ANYARGS))set_visible, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "pause", (VALUE (*)(ANYARGS))get_pause, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "pause=", (VALUE (*)(ANYARGS))set_pause, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "x", (VALUE (*)(ANYARGS))get_x, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "x=", (VALUE (*)(ANYARGS))set_x, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "y", (VALUE (*)(ANYARGS))get_y, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "y=", (VALUE (*)(ANYARGS))set_y, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "width", (VALUE (*)(ANYARGS))get_width, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "width=", (VALUE (*)(ANYARGS))set_width, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "height", (VALUE (*)(ANYARGS))get_height, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "height=", (VALUE (*)(ANYARGS))set_height, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "ox", (VALUE (*)(ANYARGS))get_ox, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "ox=", (VALUE (*)(ANYARGS))set_ox, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "oy", (VALUE (*)(ANYARGS))get_oy, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "oy=", (VALUE (*)(ANYARGS))set_oy, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "opacity", (VALUE (*)(ANYARGS))get_opacity, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "opacity=", (VALUE (*)(ANYARGS))set_opacity, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "back_opacity", (VALUE (*)(ANYARGS))get_back_opacity, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "back_opacity=", (VALUE (*)(ANYARGS))set_back_opacity, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "contents_opacity", (VALUE (*)(ANYARGS))get_contents_opacity, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "contents_opacity=", (VALUE (*)(ANYARGS))set_contents_opacity, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "openness", (VALUE (*)(ANYARGS))get_openness, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "openness=", (VALUE (*)(ANYARGS))set_openness, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "z", (VALUE (*)(ANYARGS))get_z, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "z=", (VALUE (*)(ANYARGS))set_z, 1); if (rgssVer >= 3) { - SANDBOX_AWAIT(rb_define_method, klass, "move", (VALUE (*)(ANYARGS))move, 4); - SANDBOX_AWAIT(rb_define_method, klass, "open?", (VALUE (*)(ANYARGS))is_open, 0); - SANDBOX_AWAIT(rb_define_method, klass, "close?", (VALUE (*)(ANYARGS))is_closed, 0); - SANDBOX_AWAIT(rb_define_method, klass, "arrows_visible", (VALUE (*)(ANYARGS))get_arrows_visible, 0); - SANDBOX_AWAIT(rb_define_method, klass, "arrows_visible=", (VALUE (*)(ANYARGS))set_arrows_visible, 1); - SANDBOX_AWAIT(rb_define_method, klass, "padding", (VALUE (*)(ANYARGS))get_padding, 0); - SANDBOX_AWAIT(rb_define_method, klass, "padding=", (VALUE (*)(ANYARGS))set_padding, 1); - SANDBOX_AWAIT(rb_define_method, klass, "padding_bottom", (VALUE (*)(ANYARGS))get_padding_bottom, 0); - SANDBOX_AWAIT(rb_define_method, klass, "padding_bottom=", (VALUE (*)(ANYARGS))set_padding_bottom, 1); - SANDBOX_AWAIT(rb_define_method, klass, "tone", (VALUE (*)(ANYARGS))get_tone, 0); - SANDBOX_AWAIT(rb_define_method, klass, "tone=", (VALUE (*)(ANYARGS))set_tone, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "move", (VALUE (*)(ANYARGS))move, 4); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "open?", (VALUE (*)(ANYARGS))is_open, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "close?", (VALUE (*)(ANYARGS))is_closed, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "arrows_visible", (VALUE (*)(ANYARGS))get_arrows_visible, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "arrows_visible=", (VALUE (*)(ANYARGS))set_arrows_visible, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "padding", (VALUE (*)(ANYARGS))get_padding, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "padding=", (VALUE (*)(ANYARGS))set_padding, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "padding_bottom", (VALUE (*)(ANYARGS))get_padding_bottom, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "padding_bottom=", (VALUE (*)(ANYARGS))set_padding_bottom, 1); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "tone", (VALUE (*)(ANYARGS))get_tone, 0); + SANDBOX_AWAIT(rb_define_method, windowvx_class, "tone=", (VALUE (*)(ANYARGS))set_tone, 1); } } }