Sprite#render、Sprite.render追加
@@ -34,6 +34,7 @@ | ||
34 | 34 | ID id_hit; |
35 | 35 | ID id_update; |
36 | 36 | ID id_draw; |
37 | +ID id_render; | |
37 | 38 | ID id_vanished; |
38 | 39 | ID id_visible; |
39 | 40 |
@@ -1107,6 +1108,35 @@ | ||
1107 | 1108 | } |
1108 | 1109 | |
1109 | 1110 | |
1111 | +static VALUE Sprite_class_render( VALUE klass, VALUE ary ) | |
1112 | +{ | |
1113 | + int i; | |
1114 | + | |
1115 | + if( TYPE( ary ) != T_ARRAY ) | |
1116 | + { | |
1117 | + ary = rb_ary_new3( 1, ary ); | |
1118 | + } | |
1119 | + | |
1120 | + for( i = 0; i < RARRAY_LEN( ary ); i++ ) | |
1121 | + { | |
1122 | + VALUE p = RARRAY_AREF( ary, i ); | |
1123 | + | |
1124 | + if( TYPE( p ) == T_ARRAY ) | |
1125 | + { | |
1126 | + Sprite_class_draw( cSprite, p ); | |
1127 | + } | |
1128 | + else if( !rb_respond_to( p, id_vanished ) || !RTEST( rb_funcall2( p, id_vanished, 0, 0 ) ) ) | |
1129 | + { | |
1130 | + if( rb_respond_to( p, id_render ) ) | |
1131 | + { | |
1132 | + rb_funcall2( p, id_render, 0, 0 ); | |
1133 | + } | |
1134 | + } | |
1135 | + } | |
1136 | + return Qnil; | |
1137 | +} | |
1138 | + | |
1139 | + | |
1110 | 1140 | static VALUE Sprite_class_clean( VALUE klass, VALUE ary ) |
1111 | 1141 | { |
1112 | 1142 | int i; |
@@ -1185,6 +1215,7 @@ | ||
1185 | 1215 | rb_define_method( cSprite, "visible=", Sprite_set_visible, 1 ); |
1186 | 1216 | rb_define_method( cSprite, "update", Sprite_update, 0 ); |
1187 | 1217 | rb_define_method( cSprite, "draw", Sprite_draw, 0 ); |
1218 | + rb_define_method( cSprite, "render", Sprite_draw, 0 ); | |
1188 | 1219 | rb_define_method( cSprite, "===", Sprite_compare, 1 ); |
1189 | 1220 | rb_define_method( cSprite, "check", Sprite_hitcheck, 1 ); |
1190 | 1221 | rb_define_method( cSprite, "param_hash", Sprite_get_param_hash, 0 ); |
@@ -1203,6 +1234,7 @@ | ||
1203 | 1234 | rb_define_singleton_method( cSprite, "check", Sprite_check, -1 ); |
1204 | 1235 | rb_define_singleton_method( cSprite, "update", Sprite_class_update, 1 ); |
1205 | 1236 | rb_define_singleton_method( cSprite, "draw", Sprite_class_draw, 1 ); |
1237 | + rb_define_singleton_method( cSprite, "render", Sprite_class_render, 1 ); | |
1206 | 1238 | rb_define_singleton_method( cSprite, "clean", Sprite_class_clean, 1 ); |
1207 | 1239 | |
1208 | 1240 | rb_define_alloc_func( cSprite, Sprite_allocate ); |
@@ -1211,6 +1243,7 @@ | ||
1211 | 1243 | id_hit = rb_intern("hit"); |
1212 | 1244 | id_update = rb_intern("update"); |
1213 | 1245 | id_draw = rb_intern("draw"); |
1246 | + id_render = rb_intern("render"); | |
1214 | 1247 | id_vanished = rb_intern("vanished?"); |
1215 | 1248 | id_visible = rb_intern("visible"); |
1216 | 1249 |