ruby-miyako 2.1.0 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. data/README +275 -20
  2. data/extern.h +21 -1
  3. data/install_miyako.rb +5 -3
  4. data/lib/Miyako/API/audio.rb +11 -6
  5. data/lib/Miyako/API/basic_data.rb +0 -985
  6. data/lib/Miyako/API/bitmap.rb +19 -22
  7. data/lib/Miyako/API/choices.rb +203 -69
  8. data/lib/Miyako/API/collision.rb +451 -9
  9. data/lib/Miyako/API/color.rb +177 -0
  10. data/lib/Miyako/API/diagram.rb +18 -20
  11. data/lib/Miyako/API/fixedmap.rb +207 -73
  12. data/lib/Miyako/API/font.rb +111 -18
  13. data/lib/Miyako/API/i_yuki.rb +1201 -0
  14. data/lib/Miyako/API/input.rb +65 -0
  15. data/lib/Miyako/API/layout.rb +41 -29
  16. data/lib/Miyako/API/map.rb +202 -157
  17. data/lib/Miyako/API/map_event.rb +86 -19
  18. data/lib/Miyako/API/map_struct.rb +268 -0
  19. data/lib/Miyako/API/modules.rb +136 -37
  20. data/lib/Miyako/API/movie.rb +8 -8
  21. data/lib/Miyako/API/parts.rb +63 -20
  22. data/lib/Miyako/API/plane.rb +4 -4
  23. data/lib/Miyako/API/screen.rb +16 -8
  24. data/lib/Miyako/API/sprite.rb +290 -23
  25. data/lib/Miyako/API/sprite_animation.rb +23 -11
  26. data/lib/Miyako/API/sprite_list.rb +406 -183
  27. data/lib/Miyako/API/story.rb +4 -65
  28. data/lib/Miyako/API/struct_point.rb +157 -0
  29. data/lib/Miyako/API/struct_rect.rb +233 -0
  30. data/lib/Miyako/API/struct_segment.rb +641 -0
  31. data/lib/Miyako/API/struct_size.rb +158 -0
  32. data/lib/Miyako/API/struct_square.rb +253 -0
  33. data/lib/Miyako/API/textbox.rb +49 -35
  34. data/lib/Miyako/API/viewport.rb +5 -5
  35. data/lib/Miyako/API/wait_counter.rb +350 -0
  36. data/lib/Miyako/API/yuki.rb +95 -60
  37. data/lib/Miyako/EXT/raster_scroll.rb +30 -8
  38. data/lib/Miyako/EXT/slides.rb +6 -6
  39. data/lib/Miyako/miyako.rb +25 -11
  40. data/lib/miyako.rb +28 -0
  41. data/lib/miyako_require_only.rb +35 -0
  42. data/miyako_basicdata.c +201 -17
  43. data/miyako_collision.c +315 -6
  44. data/miyako_diagram.c +331 -0
  45. data/miyako_drawing.c +26 -7
  46. data/miyako_font.c +259 -129
  47. data/miyako_input_audio.c +24 -14
  48. data/miyako_layout.c +106 -8
  49. data/miyako_no_katana.c +398 -171
  50. data/miyako_sprite2.c +275 -38
  51. data/miyako_transform.c +113 -107
  52. data/miyako_utility.c +34 -48
  53. data/miyako_yuki.c +241 -0
  54. data/sample/Diagram_sample/diagram_sample_yuki2.rb +30 -30
  55. data/sample/Room3/blue.rb +19 -19
  56. data/sample/Room3/green.rb +9 -9
  57. data/sample/Room3/main.rb +12 -12
  58. data/sample/Room3/red.rb +12 -12
  59. data/sample/Room3/title.rb +15 -10
  60. data/sample/collision_test2.rb +2 -1
  61. data/sample/fixed_map_test/fixed_map_sample.rb +7 -6
  62. data/sample/map_test/main_scene.rb +12 -10
  63. data/sample/map_test/map_manager.rb +14 -13
  64. data/sample/rasterscroll.rb +5 -5
  65. data/sample/takahashi.rb +3 -3
  66. data/sample/textbox_sample.rb +7 -6
  67. data/sample/transform.rb +2 -1
  68. data/uninstall_miyako.rb +4 -1
  69. data/win/miyako_no_katana.so +0 -0
  70. metadata +15 -4
  71. data/lib/Miyako/EXT/miyako_cairo.rb +0 -62
  72. data/sample/cairo_sample.rb +0 -25
@@ -32,11 +32,25 @@ module Miyako
32
32
  include SingleEnumerable
33
33
  extend Forwardable
34
34
 
35
- attr_accessor :visible #レンダリングの可否(true->描画 false->非描画)
36
- attr_reader :tr_color #カラーキーが有向になっている場合のRGB値。[R,G,B]の配列(各要素は0~255の整数)
37
- attr_reader :type #画像の透明度・透過タイプを取得する(詳細はSprite.newメソッドを参照)
35
+ attr_accessor :visible #レンダリングの可否(true->描画 false->非描画)
36
+ attr_accessor :collision #Collision#bindで関連づけられた当たり判定
37
+ attr_reader :tr_color #カラーキーが有向になっている場合のRGB値。[R,G,B]の配列(各要素は0~255の整数)
38
+ attr_reader :type #画像の透明度・透過タイプを取得する(詳細はSprite.newメソッドを参照)
38
39
 
39
40
  @@abb = {:ck => :color_key, :as => :alpha_surface, :ac => :alpha_channel}
41
+ @@sprites = SpriteList.new
42
+
43
+ def Sprite.sprites
44
+ @@sprites
45
+ end
46
+
47
+ def Sprite.[](name)
48
+ @@sprites[name]
49
+ end
50
+
51
+ def Sprite.[]=(name, sprite)
52
+ @@sprites[name] = sprite
53
+ end
40
54
 
41
55
  def setup #:nodoc:
42
56
  @unit = SpriteUnitFactory.create
@@ -47,6 +61,7 @@ module Miyako
47
61
  @h = 0
48
62
  @draw_list = nil
49
63
  @visible = true
64
+ @collision = nil
50
65
  end
51
66
 
52
67
  private :setup
@@ -84,6 +99,16 @@ module Miyako
84
99
  #  (例2):type=>:ck, :tr_color=>:red # 赤色を透明色に)
85
100
  # * デフォルト:画像の[0,0]の位置にあるピクセルの色
86
101
  #* 3. αチャネル付き画像を使用(設定変更不可) (書式):type=>:alpha_channel(:ac)
102
+ #* 4.背景塗りつぶし。必要ならば、色を指定してその色で塗りつぶす
103
+ # (書式):fill=>[255,255,255] #=> 白で塗りつぶす
104
+ # 省略時は塗りつぶさない
105
+ #* 5.半透明設定。必要ならば、指定した割合で透明度を変える
106
+ # 値の範囲は0.0 <= alpha <= 1.0。範囲外の値を渡すとMiyakoValueErrorが発生
107
+ # (書式):alpha=>0.5 #=> 半透明
108
+ # (書式):alpha=>0.1 #=> 1割残っている程度
109
+ # (書式):alpha=>0.0 #=> 完全透明
110
+ # (書式):alpha=>1.0 #=> 完全不透明
111
+ # 省略時は生成時そのままの画像
87
112
  def initialize(param)
88
113
  raise MiyakoError, "Sprite instance cannot create uninitialized yet!" unless Screen.initialized?
89
114
  raise MiyakoTypeError, "Sprite parameter is not Hash!" unless param.kind_of?(Hash)
@@ -98,22 +123,24 @@ module Miyako
98
123
  param[:point] ||= Point.new(0, 0)
99
124
  param[:tr_color] ||= Color[:black]
100
125
  param[:is_fill] ||= false
101
-
126
+ param[:fill] ||= nil
127
+ param[:alpha] ||= nil
128
+
102
129
  if param.has_key?(:bitmap) || param.has_key?(:bmp)
103
- bitmap = param[:bitmap] || param[:bmp]
130
+ self.bitmap = param[:bitmap] || param[:bmp]
104
131
  elsif param.has_key?(:size)
105
- bitmap = Bitmap.create(*(param[:size].to_a))
132
+ self.bitmap = Bitmap.create(*(param[:size].to_a))
106
133
  param[:is_fill] = true
107
134
  elsif param.has_key?(:filename) || param.has_key?(:file)
108
135
  name = param[:filename] || param[:file]
109
136
  raise MiyakoIOError.no_file(name) unless File.exist?(name)
110
137
  begin
111
- bitmap = Bitmap.load(name)
138
+ self.bitmap = Bitmap.load(name)
112
139
  rescue SDL::Error
113
140
  raise MiyakoFileFormatError, "Illegal file format! collect? #{name}"
114
141
  end
115
142
  elsif param.has_key?(:unit)
116
- bitmap = param[:unit].bitmap
143
+ self.bitmap = param[:unit].bitmap
117
144
  else
118
145
  raise MiyakoError, "Illegal Sprite parameter!"
119
146
  end
@@ -121,13 +148,11 @@ module Miyako
121
148
  case param[:type]
122
149
  when :color_key
123
150
  if param.has_key?(:point)
124
- @tr_color = Color.to_rgb(bitmap.get_rgb(bitmap.getPixel(*(param[:point].to_a))))
151
+ @tr_color = Color.to_rgb(@unit.bitmap.get_rgb(@unit.bitmap.getPixel(*(param[:point].to_a))))
125
152
  else
126
153
  @tr_color = Color.to_rgb(param[:tr_color])
127
154
  end
128
155
  # カラーキーのα値を0にしたビットマップを作成
129
- # self.bitmap = Bitmap.create_from(bitmap)
130
- self.bitmap = bitmap.display_format_alpha
131
156
  if param[:is_fill]
132
157
  @unit.bitmap.fill_rect(0,0,@unit.bitmap.w,@unit.bitmap.h,[0, 0, 0])
133
158
  Bitmap.ck_to_ac!(@unit, [0,0,0])
@@ -136,23 +161,18 @@ module Miyako
136
161
  end
137
162
  when :alpha_surface
138
163
  # カラーキーのα値を0にしたビットマップを作成
139
- # self.bitmap = Bitmap.create_from(bitmap)
140
- self.bitmap = bitmap.display_format_alpha
141
164
  Bitmap.normal_to_ac!(@unit)
142
165
  if param[:is_fill]
143
166
  @unit.bitmap.fill_rect(0,0,@unit.bitmap.w,@unit.bitmap.h,[0, 0, 0])
144
167
  Bitmap.ck_to_ac!(@unit, [0,0,0])
145
168
  end
146
169
  when :alpha_channel
147
- # self.bitmap = Bitmap.create_from(bitmap)
148
- self.bitmap = bitmap.display_format_alpha
149
170
  if param[:is_fill]
150
171
  @unit.bitmap.fill_rect(0,0,@unit.bitmap.w,@unit.bitmap.h,[0, 0, 0])
151
172
  Bitmap.ck_to_ac!(@unit, [0,0,0])
152
173
  end
153
- when :movie
154
- # self.bitmap = Bitmap.create_from(bitmap)
155
- self.bitmap = bitmap.display_format_alpha
174
+ else
175
+ # 何もしない
156
176
  end
157
177
  @type = param[:type]
158
178
 
@@ -161,10 +181,20 @@ module Miyako
161
181
  :cx => param[:unit].cx, :cy => param[:unit].cy)
162
182
  self.move_to!(param[:unit].x, param[:unit].y)
163
183
  end
184
+
185
+ if param[:fill]
186
+ self.fill(param[:fill])
187
+ end
188
+
189
+ if param[:alpha]
190
+ alpha = param[:alpha]
191
+ raise MiyakoValueError, "alpha is 0<=alpha<=1. value=#{param[:alpha]}" unless (alpha >= 0.0 and alpha <= 1.0)
192
+ Bitmap.dec_alpha!(self, alpha)
193
+ end
164
194
  end
165
195
 
166
196
  def_delegators(:@unit, :ox, :oy, :ow, :oh, :x, :y)
167
-
197
+
168
198
  #===複写時に呼び出されるメソッド
169
199
  #複写と同時に、本インスタンスに対するスナップの関係を解消
170
200
  def initialize_copy(obj)
@@ -175,7 +205,7 @@ module Miyako
175
205
  def unit=(unit) #:nodoc:
176
206
  @unit = unit
177
207
  end
178
-
208
+
179
209
  def update_layout_position #:nodoc:
180
210
  @unit.move_to!(*@layout.pos)
181
211
  end
@@ -221,7 +251,7 @@ module Miyako
221
251
  raise MiyakoValueError, "Illegal ox parameter! : #{v} (range: 0..#{@w-@unit.ow})" if (v < 0 || (v+@unit.ow) > @w)
222
252
  @unit.ox = v
223
253
  end
224
-
254
+
225
255
  #===画像の表示開始位置(Y座標)を指定する
226
256
  #oyを指定すると、表示の左上位置が変更される。
227
257
  #値が画像の高さの範囲外(値がマイナス、画像の高さを超える値)のときは例外が発生する
@@ -230,7 +260,7 @@ module Miyako
230
260
  raise MiyakoValueError, "Illegal oy parameter! : #{v} (range: 0..#{@h-@unit.oh})" if (v < 0 || (v+@unit.oh) > @h)
231
261
  @unit.oy = v
232
262
  end
233
-
263
+
234
264
  #===画像の表示幅を指定する
235
265
  #owを指定すると、横方向の一部のみ表示される。
236
266
  #値が画像の幅の範囲外(値がマイナス、画像の幅を超える値)のときは例外が発生する
@@ -251,6 +281,155 @@ module Miyako
251
281
  set_layout_size(@unit.ow, v)
252
282
  end
253
283
 
284
+ #=== スプライトの部分描画矩形を返す
285
+ #返却値:: Rect構造体インスタンス
286
+ def part_rect
287
+ return Rect.new(self.ox,self.oy,self.ow,self.oh)
288
+ end
289
+
290
+ def adjust_part(ox, oy, ow, oh)
291
+ if ox < 0
292
+ ow += ox
293
+ ox = 0
294
+ end
295
+ if oy < 0
296
+ oh += oy
297
+ oy = 0
298
+ end
299
+ ow = 1 if ow <= 0
300
+ oh = 1 if oh <= 0
301
+ if ox + ow > w
302
+ ow = w - ox
303
+ if ow == 0
304
+ ox -= 1
305
+ ow = 1
306
+ end
307
+ end
308
+ if oy + oh > h
309
+ oh = h - oy
310
+ if oh == 0
311
+ oy -= 1
312
+ oh = 1
313
+ end
314
+ end
315
+ Rect.new(ox,oy,ow,oh)
316
+ end
317
+
318
+ private :adjust_part
319
+
320
+ #=== 範囲を画像の大きさに合わせながら、部分描画開始位置を移動させる
321
+ #
322
+ #返却値:: 自分自身
323
+ def part_move!(dx, dy)
324
+ @unit.ox, @unit.oy, @unit.ow, @unit.oh =
325
+ adjust_part(
326
+ dx ? @unit.ox+dx : @unit.ox,
327
+ dy ? @unit.oy+dy : @unit.oy,
328
+ @unit.ow,
329
+ @unit.oh
330
+ )
331
+ return self
332
+ end
333
+
334
+ #=== 範囲を画像の大きさに合わせながら、部分描画開始位置を移動させる
335
+ #返却値:: 自分自身
336
+ def part_move_to!(x, y)
337
+ @unit.ox, @unit.oy, @unit.ow, @unit.oh =
338
+ adjust_part(
339
+ x ? x : @unit.ox,
340
+ y ? y : @unit.oy,
341
+ @unit.ow,
342
+ @unit.oh
343
+ )
344
+ return self
345
+ end
346
+
347
+ #=== 範囲を画像の大きさに合わせながら、部分描画の大きさを変える
348
+ #返却値:: 自分自身
349
+ def part_resize!(dw, dh)
350
+ @unit.ox, @unit.oy, @unit.ow, @unit.oh =
351
+ adjust_part(
352
+ @unit.ox,
353
+ @unit.oy,
354
+ dw ? @unit.ow+dw : @unit.ow,
355
+ dh ? @unit.oh+dh : @unit.oh
356
+ )
357
+ return self
358
+ end
359
+
360
+ #=== 範囲を画像の大きさに合わせながら、部分描画の大きさを変える
361
+ #返却値:: 自分自身
362
+ def part_resize_to!(w, h)
363
+ @unit.ox, @unit.oy, @unit.ow, @unit.oh =
364
+ adjust_part(
365
+ @unit.ox,
366
+ @unit.oy,
367
+ w ? w : @unit.ow,
368
+ h ? h : @unit.oh
369
+ )
370
+ return self
371
+ end
372
+
373
+ #=== 範囲を画像の大きさに合わせながら、部分描画開始位置を移動させる
374
+ #ただし、移動した後の矩形を得られるだけで、内部を変更しない
375
+ #返却値:: 変更後の部分描画矩形(Rect構造体)
376
+ def part_move(dx, dy)
377
+ return adjust_part(
378
+ dx ? self.ox+dx : self.ox,
379
+ dy ? self.oy+dy : self.oy,
380
+ self.ow,
381
+ self.oh
382
+ )
383
+ end
384
+
385
+ #=== 範囲を画像の大きさに合わせながら、部分描画開始位置を移動させる
386
+ #ただし、移動した後の矩形を得られるだけで、内部を変更しない
387
+ #返却値:: 変更後の部分描画矩形(Rect構造体)
388
+ def part_move_to(x, y)
389
+ return adjust_part(
390
+ x ? x : self.ox,
391
+ y ? y : self.oy,
392
+ self.ow,
393
+ self.oh
394
+ )
395
+ end
396
+
397
+ #=== 範囲を画像の大きさに合わせながら、部分描画の大きさを変える
398
+ #ただし、移動した後の矩形を得られるだけで、内部を変更しない
399
+ #返却値:: 変更後の部分描画矩形(Rect構造体)
400
+ def part_resize(dw, dh)
401
+ return adjust_part(
402
+ self.ox,
403
+ self.oy,
404
+ dw ? self.ow+dw : self.ow,
405
+ dh ? self.oh+dh : self.oh
406
+ )
407
+ end
408
+
409
+ #=== 範囲を画像の大きさに合わせながら、部分描画の大きさを変える
410
+ #ただし、移動した後の矩形を得られるだけで、内部を変更しない
411
+ #返却値:: 変更後の部分描画矩形(Rect構造体)
412
+ def part_resize_to(w, h)
413
+ return adjust_part(
414
+ self.ox,
415
+ self.oy,
416
+ w ? w : self.ow,
417
+ h ? h : self.oh
418
+ )
419
+ end
420
+
421
+ #=== スプライトの元画像の大きさを返す
422
+ #返却値:: Size構造体インスタンス
423
+ def image_size
424
+ return Size.new(self.bitmap.w,self.bitmap.h)
425
+ end
426
+
427
+ #=== スプライトの元画像の矩形を返す
428
+ #返却値:: Rect構造体インスタンス
429
+ def image_rect
430
+ return Rect.new(0,0,self.bitmap.w, self.bitmap.h)
431
+ end
432
+
254
433
  #===画像の回転・拡大・縮小の中心座標を取得する
255
434
  #x方向の中心座標を取得する
256
435
  #返却値:: 中心座標。
@@ -328,7 +507,7 @@ module Miyako
328
507
  def to_sprite
329
508
  unit = @unit.dup
330
509
  unit.bitmap = Bitmap.create(unit.bitmap.w, unit.bitmap.h)
331
- sprite = Sprite.new(size: [unit.bitmap.w, unit.bitmap.h], type: :ac)
510
+ sprite = Sprite.new(:size => [unit.bitmap.w, unit.bitmap.h], :type => :ac)
332
511
  Drawing.fill(sprite, [0,0,0])
333
512
  Bitmap.ck_to_ac!(sprite, [0,0,0])
334
513
  Bitmap.blit_aa(self, sprite, 0, 0)
@@ -383,6 +562,94 @@ module Miyako
383
562
  def render_to(dst)
384
563
  end
385
564
 
565
+ #===インスタンスの内容を画面に描画する
566
+ #現在の画像を、現在の状態で描画するよう指示する
567
+ #ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る)
568
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
569
+ #ブロックの引数は、|インスタンスのSpriteUnit, 画面のSpriteUnit|となる。
570
+ #visibleメソッドの値がfalseのときは描画されない。
571
+ #返却値:: 自分自身を返す
572
+ def render_xy(x,y)
573
+ end
574
+
575
+ #===インスタンスの内容を別のインスタンスに描画する
576
+ #転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、src側(ow,oh)の範囲で転送する。
577
+ #画面の描画範囲は、src側SpriteUnitの(x,y)を起点に設定にする。
578
+ #ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る)
579
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
580
+ #ブロックの引数は、|インスタンスのSpriteUnit,転送先のSpriteUnit|となる。
581
+ #visibleメソッドの値がfalseのときは描画されない。
582
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
583
+ #返却値:: 自分自身を返す
584
+ def render_xy_to(dst,x,y)
585
+ end
586
+
587
+ #===インスタンスの内容を画面に描画する
588
+ #現在の画像を、現在の状態で描画するよう指示する
589
+ #ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る)
590
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
591
+ #ブロックの引数は、|インスタンスのSpriteUnit, 画面のSpriteUnit|となる。
592
+ #visibleメソッドの値がfalseのときは描画されない。
593
+ #返却値:: 自分自身を返す
594
+ def render_rect(rect)
595
+ end
596
+
597
+ #===インスタンスの内容を別のインスタンスに描画する
598
+ #転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、src側(ow,oh)の範囲で転送する。
599
+ #画面の描画範囲は、src側SpriteUnitの(x,y)を起点に設定にする。
600
+ #ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る)
601
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
602
+ #ブロックの引数は、|インスタンスのSpriteUnit,転送先のSpriteUnit|となる。
603
+ #visibleメソッドの値がfalseのときは描画されない。
604
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
605
+ #返却値:: 自分自身を返す
606
+ def render_rect_to(dst,rect)
607
+ end
608
+
609
+ #===インスタンスの内容を画面に描画する
610
+ #現在の画像を、現在の状態で描画するよう指示する
611
+ #ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る)
612
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
613
+ #ブロックの引数は、|インスタンスのSpriteUnit, 画面のSpriteUnit|となる。
614
+ #visibleメソッドの値がfalseのときは描画されない。
615
+ #返却値:: 自分自身を返す
616
+ def render_rect2(rect)
617
+ end
618
+
619
+ #===インスタンスの内容を別のインスタンスに描画する
620
+ #転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、src側(ow,oh)の範囲で転送する。
621
+ #画面の描画範囲は、src側SpriteUnitの(x,y)を起点に設定にする。
622
+ #ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る)
623
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
624
+ #ブロックの引数は、|インスタンスのSpriteUnit,転送先のSpriteUnit|となる。
625
+ #visibleメソッドの値がfalseのときは描画されない。
626
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
627
+ #返却値:: 自分自身を返す
628
+ def render_rect2_to(dst,rect)
629
+ end
630
+
631
+ #===インスタンスの内容を画面に描画する
632
+ #現在の画像を、現在の状態で描画するよう指示する
633
+ #ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る)
634
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
635
+ #ブロックの引数は、|インスタンスのSpriteUnit, 画面のSpriteUnit|となる。
636
+ #visibleメソッドの値がfalseのときは描画されない。
637
+ #返却値:: 自分自身を返す
638
+ def render_rect_xy(rect,x,y)
639
+ end
640
+
641
+ #===インスタンスの内容を別のインスタンスに描画する
642
+ #転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、src側(ow,oh)の範囲で転送する。
643
+ #画面の描画範囲は、src側SpriteUnitの(x,y)を起点に設定にする。
644
+ #ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る)
645
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
646
+ #ブロックの引数は、|インスタンスのSpriteUnit,転送先のSpriteUnit|となる。
647
+ #visibleメソッドの値がfalseのときは描画されない。
648
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
649
+ #返却値:: 自分自身を返す
650
+ def render_rect_xy_to(dst,rect,x,y)
651
+ end
652
+
386
653
  #===インスタンスの内容を画面に描画する(回転/拡大/縮小/鏡像付き)
387
654
  #転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、src側(ow,oh)の範囲で転送する。回転の中心はsrc側(ox,oy)を起点に、src側(cx,cy)が中心になるように設定する。
388
655
  #画面の描画範囲は、src側SpriteUnitの(x,y)を起点に、画面側SpriteUnitの(cx,cy)が中心になるように設定にする。
@@ -30,7 +30,7 @@ module Miyako
30
30
  include SingleEnumerable
31
31
 
32
32
  attr_accessor :visible #レンダリングの可否(true->描画 false->非描画)
33
-
33
+
34
34
  #===インスタンスの作成
35
35
  #アニメーションを行うための初期設定を行う。
36
36
  #アニメーションは2種類の方法があり、
@@ -219,7 +219,7 @@ module Miyako
219
219
  @now.move_to!(@slist[@plist[@pnum]].x + @move_offset[@pnum][0],
220
220
  @slist[@plist[@pnum]].y + @move_offset[@pnum][1])
221
221
  end
222
-
222
+
223
223
  #===複写時に呼び出されるメソッド
224
224
  #複写と同時に、本インスタンスに対するスナップの関係を解消するが、
225
225
  #新しいパターンスプライトとスナップをやり直す
@@ -235,25 +235,25 @@ module Miyako
235
235
  end
236
236
 
237
237
  attr_accessor :visible
238
-
238
+
239
239
  #=== 現在表示しているスプライトの x 座標の値を取得する
240
240
  #返却値:: x 座標の値
241
241
  def x
242
242
  return @now.x
243
243
  end
244
-
244
+
245
245
  #=== 現在表示しているスプライトの y 座標の値を取得する
246
246
  #返却値:: y 座標の値
247
247
  def y
248
248
  return @now.y
249
249
  end
250
-
250
+
251
251
  #=== 現在表示しているスプライトの幅を取得する
252
252
  #返却値:: 現在表示しているスプライトの幅(ピクセル単位)
253
253
  def w
254
254
  return @now.ow
255
255
  end
256
-
256
+
257
257
  #=== 現在表示しているスプライトの高さを取得する
258
258
  #返却値:: 現在表示しているスプライトの高さ(ピクセル単位)
259
259
  def h
@@ -291,6 +291,12 @@ module Miyako
291
291
  return @plist[@pnum]
292
292
  end
293
293
 
294
+ #===アニメーションのパターン数を取得する
295
+ #返却値:: パターン数(0以上の整数)
296
+ def patterns
297
+ return @pats
298
+ end
299
+
294
300
  #===キャラクター番号を設定する
295
301
  #キャラクター番号(アニメーションさせるときに表示させるパターン群インデックス)
296
302
  #を設定する。範囲外のキャラクター番号が設定された時は何も行わない
@@ -316,7 +322,13 @@ module Miyako
316
322
  def character
317
323
  return @cnum
318
324
  end
319
-
325
+
326
+ #===キャラクター数を取得する
327
+ #返却値:: キャラクター数(0以上の整数)
328
+ def characters
329
+ return @chrs
330
+ end
331
+
320
332
  #===アニメーションを開始する
321
333
  #パターンがリセットされていないときは、一時停止から復帰した時と同じ動作をする
322
334
  #返却値:: 自分自身
@@ -382,7 +394,7 @@ module Miyako
382
394
  @cnt = @waits[@plist[@pnum]]
383
395
  return true
384
396
  end
385
-
397
+
386
398
  def update_wait_counter #:nodoc:
387
399
  return false if @cnt.waiting?
388
400
  @pnum = (@pnum + 1) % @pats
@@ -430,13 +442,13 @@ module Miyako
430
442
  def to_unit
431
443
  return @now.dup
432
444
  end
433
-
445
+
434
446
  #=== 現在実行中のパターンの画像を返す
435
447
  #返却値:: 現在表示している画像(bitmap)
436
448
  def bitmap
437
449
  return @now.bitmap
438
450
  end
439
-
451
+
440
452
  #===現在実行中のパターンの元になったインスタンスを返す
441
453
  #取得するパターンは、元になったインスタンスのto_spriteメソッドを呼び出した時の値となる
442
454
  #引数1個のブロックを渡せば、スプライトに補正をかけることが出来る
@@ -450,7 +462,7 @@ module Miyako
450
462
  def rect
451
463
  return Rect.new(@now.x, @now.y, @now.ow, @now.oh)
452
464
  end
453
-
465
+
454
466
  #===現在表示しているスプライトの最大の大きさを矩形で取得する
455
467
  #現在のパターンの大きさと同じため、rectメソッドの値と同一となる
456
468
  #返却値:: 生成された矩形(Rect構造体のインスタンス)