Add global update loop, and cleanup
This commit is contained in:
@@ -1629,6 +1629,22 @@ static mrb_value app_start(mrb_state *mrb, mrb_value) {
|
||||
return mrb_nil_value();
|
||||
}
|
||||
|
||||
static mrb_value app_current_scene(mrb_state *mrb, mrb_value) {
|
||||
uint64_t id = app_->current_scene_id;
|
||||
if (id == UINT64_MAX)
|
||||
return mrb_nil_value();
|
||||
app::Scene *scene = app::scene_pool[id];
|
||||
app::scene_pool.use(id);
|
||||
return wrap(mrb, mrb_class_get(mrb, "Scene"), &Scene_type, id);
|
||||
}
|
||||
|
||||
static mrb_value app_on_update(mrb_state *mrb, mrb_value) {
|
||||
mrb_value block;
|
||||
mrb_get_args(mrb, "&", &block);
|
||||
app_->update.set_proc(block);
|
||||
return mrb_nil_value();
|
||||
}
|
||||
|
||||
static mrb_value app_switch_to(mrb_state *mrb, mrb_value) {
|
||||
mrb_value scene_val;
|
||||
mrb_get_args(mrb, "o", &scene_val);
|
||||
@@ -1772,7 +1788,7 @@ inline void setup() {
|
||||
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, "on_click", element_text_on_click, MRB_ARGS_BLOCK());
|
||||
ADD_METHOD(ElementText, "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_get, MRB_ARGS_NONE());
|
||||
@@ -1807,7 +1823,7 @@ inline void setup() {
|
||||
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, "on_click", element_rect_on_click, MRB_ARGS_BLOCK());
|
||||
ADD_METHOD(ElementRect, "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_get, MRB_ARGS_NONE());
|
||||
ADD_METHOD(ElementRect, "height=", element_rect_height_set, MRB_ARGS_REQ(1));
|
||||
@@ -1830,7 +1846,7 @@ inline void setup() {
|
||||
ADD_METHOD(ElementRect, "click_mode", element_rect_click_mode_get, MRB_ARGS_NONE());
|
||||
|
||||
DEF_CLASS(ElementImage, MRB_ARGS_REQ(1) | MRB_ARGS_OPT(1));
|
||||
ADD_METHOD(ElementImage, "on_click", element_image_on_click, MRB_ARGS_BLOCK());
|
||||
ADD_METHOD(ElementImage, "click", element_image_on_click, MRB_ARGS_BLOCK());
|
||||
ADD_METHOD(ElementImage, "==", 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());
|
||||
@@ -1862,7 +1878,7 @@ inline void setup() {
|
||||
ADD_METHOD(Scene, "<<", scene_add_element, MRB_ARGS_REQ(1));
|
||||
ADD_METHOD(Scene, "delete", scene_delete_element, MRB_ARGS_REQ(1));
|
||||
ADD_METHOD(Scene, "remove", scene_delete_element, MRB_ARGS_REQ(1));
|
||||
ADD_METHOD(Scene, "on_update", scene_on_update, MRB_ARGS_BLOCK());
|
||||
ADD_METHOD(Scene, "update", scene_on_update, MRB_ARGS_BLOCK());
|
||||
ADD_METHOD(Scene, "elements_at", scene_elements_at, MRB_ARGS_REQ(1));
|
||||
ADD_METHOD(Scene, "elements", scene_elements, MRB_ARGS_NONE());
|
||||
|
||||
@@ -1870,6 +1886,8 @@ inline void setup() {
|
||||
ADD_MODULE_METHOD(App, "run", app_run, MRB_ARGS_REQ(3) | MRB_ARGS_OPT(1));
|
||||
ADD_MODULE_METHOD(App, "start", app_start, MRB_ARGS_REQ(1));
|
||||
ADD_MODULE_METHOD(App, "switch_to", app_switch_to, MRB_ARGS_REQ(1));
|
||||
ADD_MODULE_METHOD(App, "scene", app_current_scene, MRB_ARGS_NONE());
|
||||
ADD_MODULE_METHOD(App, "update", app_on_update, MRB_ARGS_BLOCK());
|
||||
ADD_MODULE_METHOD(App, "fps=", app_fps_set, MRB_ARGS_REQ(1));
|
||||
ADD_MODULE_METHOD(App, "fps", app_fps_get, MRB_ARGS_NONE());
|
||||
ADD_MODULE_METHOD(App, "localize", app_localize, MRB_ARGS_REQ(3));
|
||||
|
||||
Reference in New Issue
Block a user