• R/O
  • SSH
  • HTTPS

dxruby: Commit


Commit MetaInfo

Revision472 (tree)
Time2014-12-20 10:09:42
Authormirichi

Log Message

Sprite#render、Sprite.render追加

Change Summary

Incremental Difference

--- branches/1.5dev/sprite.c (revision 471)
+++ branches/1.5dev/sprite.c (revision 472)
@@ -34,6 +34,7 @@
3434 ID id_hit;
3535 ID id_update;
3636 ID id_draw;
37+ID id_render;
3738 ID id_vanished;
3839 ID id_visible;
3940
@@ -1107,6 +1108,35 @@
11071108 }
11081109
11091110
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+
11101140 static VALUE Sprite_class_clean( VALUE klass, VALUE ary )
11111141 {
11121142 int i;
@@ -1185,6 +1215,7 @@
11851215 rb_define_method( cSprite, "visible=", Sprite_set_visible, 1 );
11861216 rb_define_method( cSprite, "update", Sprite_update, 0 );
11871217 rb_define_method( cSprite, "draw", Sprite_draw, 0 );
1218+ rb_define_method( cSprite, "render", Sprite_draw, 0 );
11881219 rb_define_method( cSprite, "===", Sprite_compare, 1 );
11891220 rb_define_method( cSprite, "check", Sprite_hitcheck, 1 );
11901221 rb_define_method( cSprite, "param_hash", Sprite_get_param_hash, 0 );
@@ -1203,6 +1234,7 @@
12031234 rb_define_singleton_method( cSprite, "check", Sprite_check, -1 );
12041235 rb_define_singleton_method( cSprite, "update", Sprite_class_update, 1 );
12051236 rb_define_singleton_method( cSprite, "draw", Sprite_class_draw, 1 );
1237+ rb_define_singleton_method( cSprite, "render", Sprite_class_render, 1 );
12061238 rb_define_singleton_method( cSprite, "clean", Sprite_class_clean, 1 );
12071239
12081240 rb_define_alloc_func( cSprite, Sprite_allocate );
@@ -1211,6 +1243,7 @@
12111243 id_hit = rb_intern("hit");
12121244 id_update = rb_intern("update");
12131245 id_draw = rb_intern("draw");
1246+ id_render = rb_intern("render");
12141247 id_vanished = rb_intern("vanished?");
12151248 id_visible = rb_intern("visible");
12161249
Show on old repository browser