Sprite#param_hash追加
@@ -216,10 +216,12 @@ | ||
216 | 216 | picture->centery = (sprite->vcenter_y == Qnil ? image->height / 2 : NUM2FLOAT( sprite->vcenter_y )); |
217 | 217 | |
218 | 218 | picture->alpha = NUM2INT( sprite->valpha ); |
219 | - picture->blendflag = (sprite->vblend == symbol_add ? 4 : | |
220 | - (sprite->vblend == symbol_add2 ? 5 : | |
221 | - (sprite->vblend == symbol_sub ? 6 : | |
222 | - (sprite->vblend == symbol_sub2 ? 7 : 0)))); | |
219 | + picture->blendflag = (sprite->vblend == Qnil ? 0 : | |
220 | + (sprite->vblend == symbol_add ? 4 : | |
221 | + (sprite->vblend == symbol_none ? 1 : | |
222 | + (sprite->vblend == symbol_add2 ? 5 : | |
223 | + (sprite->vblend == symbol_sub ? 6 : | |
224 | + (sprite->vblend == symbol_sub2 ? 7 : 0)))))); | |
223 | 225 | |
224 | 226 | /* リストデータに追加 */ |
225 | 227 | rt->PictureList[rt->PictureCount].picture = (struct DXRubyPicture *)picture; |
@@ -480,7 +482,26 @@ | ||
480 | 482 | return vcollision; |
481 | 483 | } |
482 | 484 | |
485 | +/* param_hash */ | |
486 | +static VALUE Sprite_get_param_hash( VALUE self ) | |
487 | +{ | |
488 | + struct DXRubySprite *sprite = DXRUBY_GET_STRUCT( Sprite, self ); | |
489 | + VALUE vresult; | |
483 | 490 | |
491 | + vresult = rb_hash_new(); | |
492 | + rb_hash_aset( vresult, symbol_angle, sprite->vangle ); | |
493 | + rb_hash_aset( vresult, symbol_alpha, sprite->valpha ); | |
494 | + rb_hash_aset( vresult, symbol_z, sprite->vz ); | |
495 | + rb_hash_aset( vresult, symbol_scalex, sprite->vscale_x ); | |
496 | + rb_hash_aset( vresult, symbol_scaley, sprite->vscale_y ); | |
497 | + rb_hash_aset( vresult, symbol_centerx, sprite->vcenter_x ); | |
498 | + rb_hash_aset( vresult, symbol_centery, sprite->vcenter_y ); | |
499 | + rb_hash_aset( vresult, symbol_shader, sprite->vshader ); | |
500 | + rb_hash_aset( vresult, symbol_blend, sprite->vblend ); | |
501 | + | |
502 | + return vresult; | |
503 | +} | |
504 | + | |
484 | 505 | /*-------------------------------------------------------------------- |
485 | 506 | 単体と配列の判定 |
486 | 507 | ---------------------------------------------------------------------*/ |
@@ -787,6 +808,7 @@ | ||
787 | 808 | rb_define_method( cSprite, "draw", Sprite_draw, 0 ); |
788 | 809 | rb_define_method( cSprite, "===", Sprite_compare, 1 ); |
789 | 810 | rb_define_method( cSprite, "check", Sprite_hitcheck, 1 ); |
811 | + rb_define_method( cSprite, "param_hash", Sprite_get_param_hash, 0 ); | |
790 | 812 | |
791 | 813 | /* Spriteクラスにメソッド登録 */ |
792 | 814 | rb_define_singleton_method( cSprite, "check", Sprite_check, -1 ); |
@@ -1,11 +1,11 @@ | ||
1 | 1 | /* |
2 | 2 | ################################### |
3 | 3 | # |
4 | -# dxruby.c Ver. 1.3.5dev | |
4 | +# dxruby.c Ver. 1.3.6dev | |
5 | 5 | # |
6 | 6 | ################################### |
7 | 7 | */ |
8 | -#define DXRUBY_VERSION "1.3.5dev" | |
8 | +#define DXRUBY_VERSION "1.3.6dev" | |
9 | 9 | |
10 | 10 | #define WINVER 0x0500 /* バージョン定義 Windows2000以上 */ |
11 | 11 | #define _WIN32_WINNT WINVER |
@@ -567,6 +567,7 @@ | ||
567 | 567 | check_line_line(ox[2], oy[2], ox[0], oy[0], dx[2], dy[2], dx[0], dy[0]) || |
568 | 568 | checktriangle(ox[0], oy[0], dx[0], dy[0], dx[1], dy[1], dx[2], dy[2]) || |
569 | 569 | checktriangle(dx[0], dy[0], ox[0], oy[0], ox[1], oy[1], ox[2], oy[2]); |
570 | + } | |
570 | 571 | break; |
571 | 572 | default: |
572 | 573 | rb_raise( eDXRubyError, "ありえないエラー" ); |