Added pixel texture element
This commit is contained in:
+58
-18
@@ -34,6 +34,7 @@ mrb_value scene_add_element(mrb_state *mrb, mrb_value self) {
|
||||
!mrb_obj_is_kind_of(mrb, element_val, definitions::bindings.ElementText.cls)
|
||||
&& !mrb_obj_is_kind_of(mrb, element_val, definitions::bindings.ElementRect.cls)
|
||||
&& !mrb_obj_is_kind_of(mrb, element_val, definitions::bindings.ElementImage.cls)
|
||||
&& !mrb_obj_is_kind_of(mrb, element_val, definitions::bindings.ElementScript.cls)
|
||||
) {
|
||||
mrb_raise(
|
||||
mrb,
|
||||
@@ -60,6 +61,7 @@ mrb_value scene_delete_element(mrb_state *mrb, mrb_value self) {
|
||||
!mrb_obj_is_kind_of(mrb, element_val, definitions::bindings.ElementText.cls)
|
||||
&& !mrb_obj_is_kind_of(mrb, element_val, definitions::bindings.ElementRect.cls)
|
||||
&& !mrb_obj_is_kind_of(mrb, element_val, definitions::bindings.ElementImage.cls)
|
||||
&& !mrb_obj_is_kind_of(mrb, element_val, definitions::bindings.ElementScript.cls)
|
||||
) {
|
||||
mrb_raise(
|
||||
mrb,
|
||||
@@ -107,18 +109,37 @@ mrb_value scene_elements_at(mrb_state *mrb, mrb_value self) {
|
||||
for (uint64_t element_id : element_ids) {
|
||||
app::Element *element = app::element_pool[element_id];
|
||||
app::element_pool.use(element_id);
|
||||
if (element->type == Type::TEXT) {
|
||||
mrb_value obj = definitions::wrap(definitions::bindings.ElementText, element_id);
|
||||
mrb_value obj;
|
||||
switch (element->type) {
|
||||
case Type::TEXT:
|
||||
obj = definitions::wrap(
|
||||
definitions::bindings.ElementText,
|
||||
element_id
|
||||
);
|
||||
break;
|
||||
case Type::RECT:
|
||||
obj = definitions::wrap(
|
||||
definitions::bindings.ElementRect,
|
||||
element_id
|
||||
);
|
||||
break;
|
||||
case Type::IMAGE:
|
||||
obj = definitions::wrap(
|
||||
definitions::bindings.ElementImage,
|
||||
element_id
|
||||
);
|
||||
mrb_ary_push(mrb, result, obj);
|
||||
} else if (element->type == Type::RECT) {
|
||||
mrb_value obj = definitions::wrap(definitions::bindings.ElementRect, element_id);
|
||||
mrb_ary_push(mrb, result, obj);
|
||||
} else if (element->type == Type::IMAGE) {
|
||||
mrb_value obj = definitions::wrap(definitions::bindings.ElementImage, element_id);
|
||||
mrb_ary_push(mrb, result, obj);
|
||||
} else {
|
||||
break;
|
||||
case Type::SCRIPT:
|
||||
obj = definitions::wrap(
|
||||
definitions::bindings.ElementScript,
|
||||
element_id
|
||||
);
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
mrb_ary_push(mrb, result, obj);
|
||||
}
|
||||
|
||||
return result;
|
||||
@@ -134,18 +155,37 @@ mrb_value scene_elements(mrb_state *mrb, mrb_value self) {
|
||||
for (uint64_t element_id : element_ids) {
|
||||
app::Element *element = app::element_pool[element_id];
|
||||
app::element_pool.use(element_id);
|
||||
if (element->type == Type::TEXT) {
|
||||
mrb_value obj = definitions::wrap(definitions::bindings.ElementText, element_id);
|
||||
mrb_value obj;
|
||||
switch (element->type) {
|
||||
case Type::TEXT:
|
||||
obj = definitions::wrap(
|
||||
definitions::bindings.ElementText,
|
||||
element_id
|
||||
);
|
||||
break;
|
||||
case Type::RECT:
|
||||
obj = definitions::wrap(
|
||||
definitions::bindings.ElementRect,
|
||||
element_id
|
||||
);
|
||||
break;
|
||||
case Type::IMAGE:
|
||||
obj = definitions::wrap(
|
||||
definitions::bindings.ElementImage,
|
||||
element_id
|
||||
);
|
||||
mrb_ary_push(mrb, result, obj);
|
||||
} else if (element->type == Type::RECT) {
|
||||
mrb_value obj = definitions::wrap(definitions::bindings.ElementRect, element_id);
|
||||
mrb_ary_push(mrb, result, obj);
|
||||
} else if (element->type == Type::IMAGE) {
|
||||
mrb_value obj = definitions::wrap(definitions::bindings.ElementImage, element_id);
|
||||
mrb_ary_push(mrb, result, obj);
|
||||
} else {
|
||||
break;
|
||||
case Type::SCRIPT:
|
||||
obj = definitions::wrap(
|
||||
definitions::bindings.ElementScript,
|
||||
element_id
|
||||
);
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
mrb_ary_push(mrb, result, obj);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user