Add wrap_property helper function for bindings in libretro builds

This commit is contained in:
刘皓 2025-04-28 13:39:06 -04:00
parent 794ba87f21
commit c0b0816b8a
No known key found for this signature in database
GPG key ID: 7901753DB465B711
15 changed files with 525 additions and 669 deletions

View file

@ -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);
}
}
)

View file

@ -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;

View file

@ -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<Font>(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<Bitmap>(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<Bitmap>(self)->textSize((const char *)(**sb() + str))));
}
@ -537,8 +518,7 @@ namespace mkxp_sandbox {
GFX_GUARD_EXC(bitmap = new Bitmap(*get_private_data<Bitmap>(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<struct coro>()()(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);
}
}
)

View file

@ -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<struct rb_str_new_cstr>()()(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<struct rb_str_new_cstr>()()(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<struct rb_str_new_cstr>()()(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);
}
}
)

View file

@ -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<std::string> *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<std::string>;
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);
}
}
)

View file

@ -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<struct coro>()()(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);
}
}
)

View file

@ -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<struct rb_ll2inum>()()(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);
}
}
}

View file

@ -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<struct coro>()()(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);
}
}
)

View file

@ -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<struct coro>()()(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);
}
}
)

View file

@ -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<struct coro>()()(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);
}
}
)

View file

@ -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<struct coro>()()(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<struct coro>()()(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);
}
}
)

View file

@ -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<struct coro>()()(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<struct coro>()()(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);
}
}
)

View file

@ -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<struct coro>()()(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);
}
}
)

View file

@ -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<struct coro>()()(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);
}
}
)

View file

@ -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<struct coro>()()(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);
}
}
}