ruby-miyako 2.1.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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構造体のインスタンス)