Added .inspect and .to_s for debug help
This commit is contained in:
@@ -390,6 +390,24 @@ static mrb_value element_text_equal(mrb_state *mrb, mrb_value self) {
|
|||||||
return mrb_bool_value(id_self == id_other);
|
return mrb_bool_value(id_self == id_other);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static mrb_value element_text_inspect(mrb_state *mrb, mrb_value self) {
|
||||||
|
uint64_t id = get_id_ElementText(mrb, self);
|
||||||
|
app::EText *element = (app::EText *)app::element_pool[id];
|
||||||
|
std::string str = "#<ElementText:0x"
|
||||||
|
+ std::format("0x{:016x}", id)
|
||||||
|
+ " key=:" + Localization::get_key_name(element->key)
|
||||||
|
+ " font_id=" + std::format("0x{:016x}", element->font_id)
|
||||||
|
+ ">";
|
||||||
|
return mrb_str_new_cstr(mrb, str.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
static mrb_value element_text_to_s(mrb_state *mrb, mrb_value self) {
|
||||||
|
uint64_t id = get_id_ElementText(mrb, self);
|
||||||
|
app::EText *element = (app::EText *)app::element_pool[id];
|
||||||
|
std::string localized_text = Localization::get(Ruby::mrb, element->key, element->params);
|
||||||
|
return mrb_str_new_cstr(mrb, localized_text.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
static mrb_value element_text_hash(mrb_state *mrb, mrb_value self) {
|
static mrb_value element_text_hash(mrb_state *mrb, mrb_value self) {
|
||||||
uint64_t id = get_id_ElementText(mrb, self);
|
uint64_t id = get_id_ElementText(mrb, self);
|
||||||
return mrb_fixnum_value(id);
|
return mrb_fixnum_value(id);
|
||||||
@@ -620,10 +638,10 @@ static mrb_value ElementRect_init(mrb_state *mrb, mrb_value self) {
|
|||||||
mrb_data_init(self, nullptr, &ElementRect_type);
|
mrb_data_init(self, nullptr, &ElementRect_type);
|
||||||
Wrapper *s = new Wrapper();
|
Wrapper *s = new Wrapper();
|
||||||
|
|
||||||
mrb_int w, h;
|
mrb_float w, h;
|
||||||
mrb_int color_i = 0xFFFFFF;
|
mrb_int color_i = 0xFFFFFF;
|
||||||
mrb_value kwargs;
|
mrb_value kwargs;
|
||||||
mrb_get_args(mrb, "iii|H", &w, &h, &color_i, &kwargs);
|
mrb_get_args(mrb, "ffi|H", &w, &h, &color_i, &kwargs);
|
||||||
|
|
||||||
float x = 0, y = 0, z = 0, rotation = 0, scale_x = 1, scale_y = 1, alpha = 1;
|
float x = 0, y = 0, z = 0, rotation = 0, scale_x = 1, scale_y = 1, alpha = 1;
|
||||||
bool click_through = false;
|
bool click_through = false;
|
||||||
@@ -756,6 +774,17 @@ static mrb_value element_rect_equal(mrb_state *mrb, mrb_value self) {
|
|||||||
return mrb_bool_value(id_self == id_other);
|
return mrb_bool_value(id_self == id_other);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static mrb_value element_rect_inspect(mrb_state *mrb, mrb_value self) {
|
||||||
|
uint64_t id = get_id_ElementRect(mrb, self);
|
||||||
|
app::ERect *element = (app::ERect *)app::element_pool[id];
|
||||||
|
std::string str = "#<ElementRect:0x"
|
||||||
|
+ std::format("0x{:016x}", id)
|
||||||
|
+ " width=" + std::format("{}", element->shape.x)
|
||||||
|
+ " height=" + std::format("{}", element->shape.y)
|
||||||
|
+ ">";
|
||||||
|
return mrb_str_new_cstr(mrb, str.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
static mrb_value element_rect_hash(mrb_state *mrb, mrb_value self) {
|
static mrb_value element_rect_hash(mrb_state *mrb, mrb_value self) {
|
||||||
uint64_t id = get_id_ElementRect(mrb, self);
|
uint64_t id = get_id_ElementRect(mrb, self);
|
||||||
return mrb_fixnum_value(id);
|
return mrb_fixnum_value(id);
|
||||||
@@ -975,6 +1004,17 @@ static mrb_value element_image_equal(mrb_state *mrb, mrb_value self) {
|
|||||||
return mrb_bool_value(id_self == id_other);
|
return mrb_bool_value(id_self == id_other);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static mrb_value element_image_inspect(mrb_state *mrb, mrb_value self) {
|
||||||
|
uint64_t id = get_id_ElementImage(mrb, self);
|
||||||
|
app::EImage *element = (app::EImage *)app::element_pool[id];
|
||||||
|
std::string str = "#<ElementImage:0x"
|
||||||
|
+ std::format("0x{:016x}", id)
|
||||||
|
+ " animation_id=0x"
|
||||||
|
+ std::format("{:016x}", element->animation_id)
|
||||||
|
+ ">";
|
||||||
|
return mrb_str_new_cstr(mrb, str.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
static mrb_value element_image_hash(mrb_state *mrb, mrb_value self) {
|
static mrb_value element_image_hash(mrb_state *mrb, mrb_value self) {
|
||||||
uint64_t id = get_id_ElementImage(mrb, self);
|
uint64_t id = get_id_ElementImage(mrb, self);
|
||||||
return mrb_fixnum_value(id);
|
return mrb_fixnum_value(id);
|
||||||
@@ -1344,6 +1384,11 @@ static mrb_value scene_equal(mrb_state *mrb, mrb_value self) {
|
|||||||
return mrb_bool_value(id_self == id_other);
|
return mrb_bool_value(id_self == id_other);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static mrb_value scene_inspect(mrb_state *mrb, mrb_value self) {
|
||||||
|
uint64_t id = get_id_Scene(mrb, self);
|
||||||
|
return mrb_str_new_cstr(mrb, ("#<Scene:" + std::to_string(id) + ">").c_str());
|
||||||
|
}
|
||||||
|
|
||||||
static mrb_value scene_hash(mrb_state *mrb, mrb_value self) {
|
static mrb_value scene_hash(mrb_state *mrb, mrb_value self) {
|
||||||
uint64_t id = get_id_Scene(mrb, self);
|
uint64_t id = get_id_Scene(mrb, self);
|
||||||
return mrb_fixnum_value(id);
|
return mrb_fixnum_value(id);
|
||||||
@@ -1517,8 +1562,10 @@ inline void setup() {
|
|||||||
DEF_CLASS(ElementText, MRB_ARGS_REQ(3) | MRB_ARGS_OPT(2));
|
DEF_CLASS(ElementText, MRB_ARGS_REQ(3) | MRB_ARGS_OPT(2));
|
||||||
ADD_METHOD(ElementText, "==", element_text_equal, MRB_ARGS_REQ(1));
|
ADD_METHOD(ElementText, "==", element_text_equal, MRB_ARGS_REQ(1));
|
||||||
ADD_METHOD(ElementText, "eql?", element_text_equal, MRB_ARGS_REQ(1));
|
ADD_METHOD(ElementText, "eql?", element_text_equal, MRB_ARGS_REQ(1));
|
||||||
|
ADD_METHOD(ElementText, "inspect", element_text_inspect, MRB_ARGS_NONE());
|
||||||
ADD_METHOD(ElementText, "hash", element_text_hash, MRB_ARGS_NONE());
|
ADD_METHOD(ElementText, "hash", element_text_hash, MRB_ARGS_NONE());
|
||||||
ADD_METHOD(ElementText, "on_click", element_text_on_click, MRB_ARGS_BLOCK());
|
ADD_METHOD(ElementText, "on_click", element_text_on_click, MRB_ARGS_BLOCK());
|
||||||
|
ADD_METHOD(ElementText, "to_s", element_text_to_s, MRB_ARGS_NONE());
|
||||||
ADD_METHOD(ElementText, "key=", element_text_key_set, MRB_ARGS_REQ(1));
|
ADD_METHOD(ElementText, "key=", element_text_key_set, MRB_ARGS_REQ(1));
|
||||||
ADD_METHOD(ElementText, "key", element_text_key_get, MRB_ARGS_NONE());
|
ADD_METHOD(ElementText, "key", element_text_key_get, MRB_ARGS_NONE());
|
||||||
ADD_METHOD(ElementText, "color=", element_text_color_set, MRB_ARGS_REQ(1));
|
ADD_METHOD(ElementText, "color=", element_text_color_set, MRB_ARGS_REQ(1));
|
||||||
@@ -1545,6 +1592,8 @@ inline void setup() {
|
|||||||
DEF_CLASS(ElementRect, MRB_ARGS_REQ(3) | MRB_ARGS_OPT(1));
|
DEF_CLASS(ElementRect, MRB_ARGS_REQ(3) | MRB_ARGS_OPT(1));
|
||||||
ADD_METHOD(ElementRect, "==", element_rect_equal, MRB_ARGS_REQ(1));
|
ADD_METHOD(ElementRect, "==", element_rect_equal, MRB_ARGS_REQ(1));
|
||||||
ADD_METHOD(ElementRect, "eql?", element_rect_equal, MRB_ARGS_REQ(1));
|
ADD_METHOD(ElementRect, "eql?", element_rect_equal, MRB_ARGS_REQ(1));
|
||||||
|
ADD_METHOD(ElementRect, "inspect", element_rect_inspect, MRB_ARGS_NONE());
|
||||||
|
ADD_METHOD(ElementRect, "to_s", element_rect_inspect, MRB_ARGS_NONE());
|
||||||
ADD_METHOD(ElementRect, "hash", element_rect_hash, MRB_ARGS_NONE());
|
ADD_METHOD(ElementRect, "hash", element_rect_hash, MRB_ARGS_NONE());
|
||||||
ADD_METHOD(ElementRect, "on_click", element_rect_on_click, MRB_ARGS_BLOCK());
|
ADD_METHOD(ElementRect, "on_click", element_rect_on_click, MRB_ARGS_BLOCK());
|
||||||
ADD_METHOD(ElementRect, "width=", element_rect_width_set, MRB_ARGS_REQ(1));
|
ADD_METHOD(ElementRect, "width=", element_rect_width_set, MRB_ARGS_REQ(1));
|
||||||
@@ -1570,6 +1619,8 @@ inline void setup() {
|
|||||||
ADD_METHOD(ElementImage, "on_click", element_image_on_click, MRB_ARGS_BLOCK());
|
ADD_METHOD(ElementImage, "on_click", element_image_on_click, MRB_ARGS_BLOCK());
|
||||||
ADD_METHOD(ElementImage, "==", element_image_equal, MRB_ARGS_REQ(1));
|
ADD_METHOD(ElementImage, "==", element_image_equal, MRB_ARGS_REQ(1));
|
||||||
ADD_METHOD(ElementImage, "eql?", element_image_equal, MRB_ARGS_REQ(1));
|
ADD_METHOD(ElementImage, "eql?", element_image_equal, MRB_ARGS_REQ(1));
|
||||||
|
ADD_METHOD(ElementImage, "inspect", element_image_inspect, MRB_ARGS_NONE());
|
||||||
|
ADD_METHOD(ElementImage, "to_s", element_image_inspect, MRB_ARGS_NONE());
|
||||||
ADD_METHOD(ElementImage, "hash", element_image_hash, MRB_ARGS_NONE());
|
ADD_METHOD(ElementImage, "hash", element_image_hash, MRB_ARGS_NONE());
|
||||||
ADD_METHOD(ElementImage, "animation=", element_image_animation_set, MRB_ARGS_REQ(1));
|
ADD_METHOD(ElementImage, "animation=", element_image_animation_set, MRB_ARGS_REQ(1));
|
||||||
ADD_METHOD(ElementImage, "animation", element_image_animation_get, MRB_ARGS_NONE());
|
ADD_METHOD(ElementImage, "animation", element_image_animation_get, MRB_ARGS_NONE());
|
||||||
@@ -1589,6 +1640,8 @@ inline void setup() {
|
|||||||
DEF_CLASS(Scene, MRB_ARGS_NONE());
|
DEF_CLASS(Scene, MRB_ARGS_NONE());
|
||||||
ADD_METHOD(Scene, "==", scene_equal, MRB_ARGS_REQ(1));
|
ADD_METHOD(Scene, "==", scene_equal, MRB_ARGS_REQ(1));
|
||||||
ADD_METHOD(Scene, "eql?", scene_equal, MRB_ARGS_REQ(1));
|
ADD_METHOD(Scene, "eql?", scene_equal, MRB_ARGS_REQ(1));
|
||||||
|
ADD_METHOD(Scene, "inspect", scene_inspect, MRB_ARGS_NONE());
|
||||||
|
ADD_METHOD(Scene, "to_s", scene_inspect, MRB_ARGS_NONE());
|
||||||
ADD_METHOD(Scene, "hash", scene_hash, MRB_ARGS_NONE());
|
ADD_METHOD(Scene, "hash", scene_hash, MRB_ARGS_NONE());
|
||||||
ADD_METHOD(Scene, "<<", scene_add_element, MRB_ARGS_REQ(1));
|
ADD_METHOD(Scene, "<<", scene_add_element, MRB_ARGS_REQ(1));
|
||||||
ADD_METHOD(Scene, "delete", scene_delete_element, MRB_ARGS_REQ(1));
|
ADD_METHOD(Scene, "delete", scene_delete_element, MRB_ARGS_REQ(1));
|
||||||
|
|||||||
@@ -134,4 +134,12 @@ inline Key key_from_sym(mrb_state *mrb, mrb_sym sym) {
|
|||||||
localization_key_map[key_name] = new_id;
|
localization_key_map[key_name] = new_id;
|
||||||
return new_id;
|
return new_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This is only used for debugging and inspect output, so performance is not a concern
|
||||||
|
inline std::string get_key_name(Key key) {
|
||||||
|
for (const auto &[str, k] : localization_key_map)
|
||||||
|
if (k == key)
|
||||||
|
return str;
|
||||||
|
return "Unknown Key";
|
||||||
|
}
|
||||||
} // namespace Localization
|
} // namespace Localization
|
||||||
+1
-1
@@ -160,7 +160,7 @@ template <typename T = void *>
|
|||||||
struct Pool {
|
struct Pool {
|
||||||
T *operator[](uint64_t index) {
|
T *operator[](uint64_t index) {
|
||||||
if (!is_valid(index)) {
|
if (!is_valid(index)) {
|
||||||
fprintf(stderr, "Invalid pool index: %llu\n", (unsigned long long)index);
|
fprintf(stderr, "Invalid pool index: %lu\n", (uint64_t)index);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
uint32_t id = (uint32_t)(index & 0xFFFFFFFFULL);
|
uint32_t id = (uint32_t)(index & 0xFFFFFFFFULL);
|
||||||
|
|||||||
Reference in New Issue
Block a user