cyross-ruby-miyako-mswin32 2.0.5

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 (145) hide show
  1. data/README +929 -0
  2. data/img/cursor.png +0 -0
  3. data/img/cursors.png +0 -0
  4. data/img/dice.png +0 -0
  5. data/img/wait_cursor.png +0 -0
  6. data/img/win_base.png +0 -0
  7. data/img/window.png +0 -0
  8. data/install_miyako.rb +61 -0
  9. data/lib/Miyako/API/audio.rb +198 -0
  10. data/lib/Miyako/API/basic_data.rb +573 -0
  11. data/lib/Miyako/API/bitmap.rb +507 -0
  12. data/lib/Miyako/API/choices.rb +475 -0
  13. data/lib/Miyako/API/collision.rb +460 -0
  14. data/lib/Miyako/API/diagram.rb +561 -0
  15. data/lib/Miyako/API/drawing.rb +151 -0
  16. data/lib/Miyako/API/fixedmap.rb +428 -0
  17. data/lib/Miyako/API/font.rb +403 -0
  18. data/lib/Miyako/API/input.rb +447 -0
  19. data/lib/Miyako/API/layout.rb +433 -0
  20. data/lib/Miyako/API/map.rb +529 -0
  21. data/lib/Miyako/API/map_event.rb +198 -0
  22. data/lib/Miyako/API/modules.rb +109 -0
  23. data/lib/Miyako/API/movie.rb +154 -0
  24. data/lib/Miyako/API/parts.rb +189 -0
  25. data/lib/Miyako/API/plane.rb +166 -0
  26. data/lib/Miyako/API/screen.rb +325 -0
  27. data/lib/Miyako/API/shape.rb +443 -0
  28. data/lib/Miyako/API/sprite.rb +752 -0
  29. data/lib/Miyako/API/sprite_animation.rb +481 -0
  30. data/lib/Miyako/API/spriteunit.rb +147 -0
  31. data/lib/Miyako/API/story.rb +300 -0
  32. data/lib/Miyako/API/textbox.rb +725 -0
  33. data/lib/Miyako/API/utility.rb +388 -0
  34. data/lib/Miyako/API/viewport.rb +140 -0
  35. data/lib/Miyako/API/yuki.rb +996 -0
  36. data/lib/Miyako/EXT/miyako_cairo.rb +62 -0
  37. data/lib/Miyako/EXT/raster_scroll.rb +138 -0
  38. data/lib/Miyako/EXT/slides.rb +157 -0
  39. data/lib/Miyako/miyako.rb +171 -0
  40. data/lib/Miyako/miyako_no_katana.so +0 -0
  41. data/logo/EGSR_logo.png +0 -0
  42. data/logo/EGSR_logo_bg.png +0 -0
  43. data/logo/EGSR_logo_fg.png +0 -0
  44. data/logo/EGSR_title_banner.png +0 -0
  45. data/logo/EGSR_title_logo.png +0 -0
  46. data/logo/miyako.png +0 -0
  47. data/logo/miyako_banner.png +0 -0
  48. data/logo/space.png +0 -0
  49. data/sample/Animation1/m1ku.rb +68 -0
  50. data/sample/Animation1/m1ku_arm_0.png +0 -0
  51. data/sample/Animation1/m1ku_arm_1.png +0 -0
  52. data/sample/Animation1/m1ku_arm_2.png +0 -0
  53. data/sample/Animation1/m1ku_arm_3.png +0 -0
  54. data/sample/Animation1/m1ku_back.jpg +0 -0
  55. data/sample/Animation1/m1ku_body.png +0 -0
  56. data/sample/Animation1/m1ku_eye_0.png +0 -0
  57. data/sample/Animation1/m1ku_eye_1.png +0 -0
  58. data/sample/Animation1/m1ku_eye_2.png +0 -0
  59. data/sample/Animation1/m1ku_eye_3.png +0 -0
  60. data/sample/Animation1/m1ku_hair_front.png +0 -0
  61. data/sample/Animation1/m1ku_hair_rear.png +0 -0
  62. data/sample/Animation1/readme.txt +72 -0
  63. data/sample/Animation2/lex.rb +96 -0
  64. data/sample/Animation2/lex_back.png +0 -0
  65. data/sample/Animation2/lex_body.png +0 -0
  66. data/sample/Animation2/lex_roadroller.png +0 -0
  67. data/sample/Animation2/lex_wheel_0.png +0 -0
  68. data/sample/Animation2/lex_wheel_1.png +0 -0
  69. data/sample/Animation2/lex_wheel_2.png +0 -0
  70. data/sample/Animation2/readme.txt +72 -0
  71. data/sample/Animation2/song_title.png +0 -0
  72. data/sample/Diagram_sample/back.png +0 -0
  73. data/sample/Diagram_sample/chr01.png +0 -0
  74. data/sample/Diagram_sample/chr02.png +0 -0
  75. data/sample/Diagram_sample/cursor.png +0 -0
  76. data/sample/Diagram_sample/diagram_sample_yuki2.rb +387 -0
  77. data/sample/Diagram_sample/readme.txt +90 -0
  78. data/sample/Diagram_sample/wait_cursor.png +0 -0
  79. data/sample/Room3/blue.rb +297 -0
  80. data/sample/Room3/ending.rb +180 -0
  81. data/sample/Room3/green.rb +220 -0
  82. data/sample/Room3/image/akamatsu.png +0 -0
  83. data/sample/Room3/image/aoyama.png +0 -0
  84. data/sample/Room3/image/congra.png +0 -0
  85. data/sample/Room3/image/congratulation.png +0 -0
  86. data/sample/Room3/image/congratulation_bg.png +0 -0
  87. data/sample/Room3/image/cursor.png +0 -0
  88. data/sample/Room3/image/midori.png +0 -0
  89. data/sample/Room3/image/mittsu_no_oheya.png +0 -0
  90. data/sample/Room3/image/mittsu_no_oheya_logo.png +0 -0
  91. data/sample/Room3/image/room_blue.png +0 -0
  92. data/sample/Room3/image/room_green.png +0 -0
  93. data/sample/Room3/image/room_red.png +0 -0
  94. data/sample/Room3/image/start.png +0 -0
  95. data/sample/Room3/image/three_doors.png +0 -0
  96. data/sample/Room3/image/wait_cursor.png +0 -0
  97. data/sample/Room3/main.rb +120 -0
  98. data/sample/Room3/main_component.rb +59 -0
  99. data/sample/Room3/readme.txt +76 -0
  100. data/sample/Room3/red.rb +227 -0
  101. data/sample/Room3/room3.rb +27 -0
  102. data/sample/Room3/title.rb +184 -0
  103. data/sample/ball_action_sample.rb +204 -0
  104. data/sample/blit_rop.rb +70 -0
  105. data/sample/cairo_sample.rb +25 -0
  106. data/sample/circle_collision_test.rb +62 -0
  107. data/sample/collision_test.rb +33 -0
  108. data/sample/collision_test2.rb +104 -0
  109. data/sample/fixed_map_test/cursor.png +0 -0
  110. data/sample/fixed_map_test/fixed_map_sample.rb +140 -0
  111. data/sample/fixed_map_test/map.csv +19 -0
  112. data/sample/fixed_map_test/map_01.png +0 -0
  113. data/sample/fixed_map_test/mapchip.csv +23 -0
  114. data/sample/fixed_map_test/monster.png +0 -0
  115. data/sample/fixed_map_test/readme.txt +72 -0
  116. data/sample/map_test/chara.rb +58 -0
  117. data/sample/map_test/chr1.png +0 -0
  118. data/sample/map_test/cursor.png +0 -0
  119. data/sample/map_test/main_parts.rb +69 -0
  120. data/sample/map_test/main_scene.rb +153 -0
  121. data/sample/map_test/map.png +0 -0
  122. data/sample/map_test/map2.png +0 -0
  123. data/sample/map_test/map_layer.csv +127 -0
  124. data/sample/map_test/map_manager.rb +75 -0
  125. data/sample/map_test/map_test.rb +23 -0
  126. data/sample/map_test/mapchip.csv +21 -0
  127. data/sample/map_test/oasis.rb +71 -0
  128. data/sample/map_test/readme.txt +89 -0
  129. data/sample/map_test/route.rb +157 -0
  130. data/sample/map_test/sea.png +0 -0
  131. data/sample/map_test/town.rb +74 -0
  132. data/sample/map_test/wait_cursor.png +0 -0
  133. data/sample/map_test/window.png +0 -0
  134. data/sample/polygon_test.rb +35 -0
  135. data/sample/rasterscroll.rb +25 -0
  136. data/sample/takahashi.rb +42 -0
  137. data/sample/text.png +0 -0
  138. data/sample/textbox_sample.rb +190 -0
  139. data/sample/transform.rb +54 -0
  140. data/sample/utility_test.rb +73 -0
  141. data/sample/utility_test2.rb +61 -0
  142. data/sample/utility_test3.rb +64 -0
  143. data/sample/utility_test4.rb +73 -0
  144. data/uninstall_miyako.rb +19 -0
  145. metadata +196 -0
@@ -0,0 +1,481 @@
1
+ # -*- encoding: utf-8 -*-
2
+ =begin
3
+ --
4
+ Miyako v1.5
5
+ Copyright (C) 2007-2009 Cyross Makoto
6
+
7
+ This library is free software; you can redistribute it and/or
8
+ modify it under the terms of the GNU Lesser General Public
9
+ License as published by the Free Software Foundation; either
10
+ version 2.1 of the License, or (at your option) any later version.
11
+
12
+ This library is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
+ Lesser General Public License for more details.
16
+
17
+ You should have received a copy of the GNU Lesser General Public
18
+ License along with this library; if not, write to the Free Software
19
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
+ ++
21
+ =end
22
+
23
+ module Miyako
24
+ #==アニメーション管理クラス
25
+ #スプライトのアニメーションの構築・実行を管理するクラス
26
+ class SpriteAnimation
27
+ include SpriteBase
28
+ include Animation
29
+ include Layout
30
+ include SingleEnumerable
31
+
32
+ attr_accessor :visible #レンダリングの可否(true->描画 false->非描画)
33
+
34
+ #===インスタンスの作成
35
+ #アニメーションを行うための初期設定を行う。
36
+ #アニメーションは2種類の方法があり、
37
+ #
38
+ #「一つのスプライトをow,ohプロパティで分割して、表示開始位置をずらすことでアニメーションを行う」方法と、
39
+ #
40
+ #(RPGのキャラチップを想定。 以降、「単体アニメーション」と呼ぶ)
41
+ #
42
+ #「複数枚のスプライトの配列を渡し、要素順に表示させることでアニメーションを行う」方法がある。
43
+ #
44
+ #(いわゆる「ぱらぱら漫画」方式。 以降、「配列アニメーション」と呼ぶ)
45
+ #
46
+ #「パターン番号」は、キャラクタパターン(画像を一定の大きさ(ow,oh)で切り分けた単位)の番号を意味する。
47
+ #
48
+ #単体アニメーションのときは、画像の左上から0,1,2,...と数える。
49
+ #
50
+ #配列アニメーションのときは、配列のインデックスがパターン番号となる。
51
+ #
52
+ #
53
+ #
54
+ #利用できるパラメータは以下の通り
55
+ #
56
+ #:sprite => sprite|spriteの配列 アニメーションさせるスプライト(インスタンス単体もしくはインスタンスの配列)。必須パラメータ
57
+ #
58
+ #:dir => :h|:v 単体アニメーションのとき、縦方向に位置をずらして表示させる(:h指定時)か、横方向か(:v指定時)を決定する。デフォルトは:h
59
+ #
60
+ #:pattern_list => 表示させるパターン番号を指定するための配列。配列の要素の順にパターンが表示される
61
+ #
62
+ #:loop => アニメーションを繰り返し更新するかどうかを示すフラグ。falseのときは、1回パターンを実行した後、アニメーションを終了する(true/false)
63
+ #
64
+ #_hash_:: パラメータ名とパラメータとのハッシュ
65
+ #返却値:: 生成されたインスタンス
66
+ def initialize(hash)
67
+ init_layout
68
+ @units = Array.new
69
+ @slist = nil
70
+
71
+ hash[:dir] ||= :h
72
+ @dir = hash[:dir]
73
+ s = hash[:sprite]
74
+ hash[:pattern_list] ||= nil
75
+ @plist = hash[:pattern_list]
76
+ hash[:wait] ||= 0
77
+ wait = hash[:wait]
78
+ hash[:move_offset] ||= nil
79
+ @move_offset = hash[:move_offset]
80
+ hash[:position_offset] ||= nil
81
+ @pos_offset = hash[:position_offset]
82
+ hash[:align] ||= :max
83
+ @align = hash[:align]
84
+ hash[:loop] ||= true
85
+ @loop = hash[:loop]
86
+
87
+ @pat_len = 1
88
+ @pat_olen = 1
89
+ @chr_len = 1
90
+ @chr_olen = 1
91
+
92
+ @slist = Array.new
93
+ if s.kind_of?(Sprite)
94
+ @now = s.to_unit unless @now
95
+ set_layout_size(s.ow, s.oh)
96
+ move_to(s.x, s.y)
97
+ s.snap(self)
98
+ s.left
99
+ s.top
100
+ @pat_len = @dir == :h ? s.h : s.w
101
+ @pat_olen = @dir == :h ? s.oh : s.ow
102
+ @chr_len = @dir == :h ? s.w : s.h
103
+ @chr_olen = @dir == :h ? s.ow : s.oh
104
+ @pats = @pat_len / @pat_olen
105
+ elsif s.kind_of?(Array)
106
+ first = s[0]
107
+ @now = first.to_unit unless @now
108
+ set_layout_size(first.ow, first.oh)
109
+ move_to(first.x, first.y)
110
+ @slist = s.map{|ss|
111
+ ss.snap(self)
112
+ ss.left.top
113
+ }
114
+ @pat_len = @slist.length
115
+ @pats = @slist.length
116
+ else
117
+ raise MiyakoError, "Illegal sprite list for SpriteAnimation."
118
+ end
119
+
120
+ if @plist
121
+ if @align == :min
122
+ @pats = @plist.length if @pats > @plist.length
123
+ else
124
+ @pats = @plist.length if @pats < @plist.length
125
+ end
126
+ else
127
+ @plist = Array.new unless @plist
128
+ end
129
+
130
+ if @move_offset
131
+ if @align == :min
132
+ @pats = @move_offset.length if @pats > @move_offset.length
133
+ else
134
+ @pats = @move_offset.length if @pats < @move_offset.length
135
+ end
136
+ else
137
+ @move_offset = Array.new
138
+ end
139
+
140
+ if @pos_offset
141
+ if @align == :min
142
+ @pats = @pos_offset.length if @pats > @pos_offset.length
143
+ else
144
+ @pats = @pos_offset.length if @pats < @pos_offset.length
145
+ end
146
+ else
147
+ @pos_offset = Array.new
148
+ end
149
+
150
+ if wait.kind_of?(Array)
151
+ @waits = wait.collect{|w| w.kind_of?(Float) ? WaitCounter.new(w) : w }
152
+ if @align == :min
153
+ @pats = @waits.length if @pats > @waits.length
154
+ else
155
+ @pats = @waits.length if @pats < @waits.length
156
+ end
157
+ else
158
+ @waits = Array.new
159
+ end
160
+
161
+ if @plist.length == 0
162
+ @pats.times{|p| @plist.push(p)}
163
+ elsif @plist.length < @pats
164
+ @plist = @plist.cycle.take(@pats)
165
+ end
166
+
167
+ if @slist.length == 0
168
+ @slist = Array.new(@pats){|pat| s }
169
+ @units = Array.new(@pats){|pat|
170
+ u = @slist[pat].to_unit.dup
171
+ px = pat % (@pat_len / @pat_olen)
172
+ if @dir == :h
173
+ u.oy = @slist[pat].oh * @plist[px]
174
+ else
175
+ u.ox = @slist[pat].ow * @plist[px]
176
+ end
177
+ u
178
+ }
179
+ elsif @slist.length < @pats
180
+ tmp = @slist
181
+ @slist = @slist.cycle.take(@pats)
182
+ @units = Array.new(@pats){|pat| @slist[pat].to_unit.dup }
183
+ else
184
+ @units = Array.new(@pats){|pat| @slist[pat].to_unit.dup }
185
+ end
186
+
187
+ if @move_offset.length == 0
188
+ @move_offset = Array.new(@pats){|pat| Point.new(0,0) }
189
+ elsif @move_offset.length < @pats
190
+ @move_offset = @move_offset.cycle.take(@pats)
191
+ end
192
+
193
+ if @pos_offset.length == 0
194
+ @pos_offset = Array.new(@pats){|pat| 0 }
195
+ elsif @pos_offset.length < @pats
196
+ @pos_offset = @pos_offset.cycle.take(@pats)
197
+ end
198
+
199
+ if @waits.length == 0
200
+ if wait.kind_of?(Integer)
201
+ @waits = Array.new(@pats){|pat| wait}
202
+ elsif wait.kind_of?(Float)
203
+ @waits = Array.new(@pats){|pat| WaitCounter.new(wait)}
204
+ else
205
+ raise MiyakoError, "Illegal wait counter for SpriteAnimation."
206
+ end
207
+ elsif @waits.length < @pats
208
+ @waits = @waits.cycle.take(@pats)
209
+ end
210
+
211
+ @chrs = @chr_len / @chr_olen
212
+
213
+ @cnum = 0
214
+ @pnum = 0
215
+ @cnt = 0
216
+ @exec = false
217
+ @visible = true
218
+
219
+ @now = @units[0]
220
+ @now.move_to(@slist[@plist[@pnum]].x + @move_offset[@pnum][0],
221
+ @slist[@plist[@pnum]].y + @move_offset[@pnum][1])
222
+ end
223
+
224
+ attr_accessor :visible
225
+
226
+ #=== 現在表示しているスプライトの x 座標の値を取得する
227
+ #返却値:: x 座標の値
228
+ def x
229
+ return @now.x
230
+ end
231
+
232
+ #=== 現在表示しているスプライトの y 座標の値を取得する
233
+ #返却値:: y 座標の値
234
+ def y
235
+ return @now.y
236
+ end
237
+
238
+ #=== 現在表示しているスプライトの幅を取得する
239
+ #返却値:: 現在表示しているスプライトの幅(ピクセル単位)
240
+ def w
241
+ return @now.ow
242
+ end
243
+
244
+ #=== 現在表示しているスプライトの高さを取得する
245
+ #返却値:: 現在表示しているスプライトの高さ(ピクセル単位)
246
+ def h
247
+ return @now.oh
248
+ end
249
+
250
+ def update_layout_position #:nodoc:
251
+ @units.each{|u| u.move_to(*@layout.pos)}
252
+ end
253
+
254
+ #===現在表示しているスプライトのowを取得する
255
+ #返却値:: スプライトのow
256
+ def ow
257
+ return @now.ow
258
+ end
259
+
260
+ #===現在表示しているスプライトのohを取得する
261
+ #返却値:: スプライトのoh
262
+ def oh
263
+ return @now.oh
264
+ end
265
+
266
+ #===表示するパターンの番号を変更する
267
+ #_pnum_:: パターン番号
268
+ def pattern=(pnum)
269
+ @pnum = pnum if pnum < @pats
270
+ set_pat
271
+ @cnt = @waits[@plist[@pnum]] if @exec
272
+ return self
273
+ end
274
+
275
+ #===現在表示しているパターンを取得する
276
+ #返却値:: 現在表示しているスプライトのインスタンス
277
+ def pattern
278
+ return @plist[@pnum]
279
+ end
280
+
281
+ #===キャラクター番号を設定する
282
+ #キャラクター番号(アニメーションさせるときに表示させるパターン群インデックス)
283
+ #を設定する。範囲外のキャラクター番号が設定された時は何も行わない
284
+ #_cnum_:: キャラクター番号
285
+ def character=(cnum)
286
+ return self if (cnum < 0 || cnum >= @chrs)
287
+ @cnum = cnum
288
+ set_chr
289
+ end
290
+
291
+ #===あとで書く
292
+ #_d_:: あとで書く
293
+ #返却値:: あとで書く
294
+ def move_character(d)
295
+ @cnum = (@cnum + d) % @chrs
296
+ @cnum = @cnum + @chrs if @cnum < 0
297
+ set_chr
298
+ return self
299
+ end
300
+
301
+ #===現在のキャラクター番号を取得する
302
+ #返却値:: キャラクター番号(0以上の整数)
303
+ def character
304
+ return @cnum
305
+ end
306
+
307
+ #===アニメーションを開始する
308
+ #パターンがリセットされていないときは、一時停止から復帰した時と同じ動作をする
309
+ #返却値:: 自分自身
310
+ def start
311
+ return self if @exec
312
+ set_pat
313
+ if @dir == :h
314
+ @now.oy += @pos_offset[@pnum]
315
+ else
316
+ @now.ox += @pos_offset[@pnum]
317
+ end
318
+ @cnt = @waits[@plist[@pnum]]
319
+ @cnt.start if @cnt.kind_of?(WaitCounter)
320
+ @exec = true
321
+ return self
322
+ end
323
+
324
+ #===アニメーションを停止する
325
+ #停止しても、表示していたパターンはリセットされていない
326
+ #返却値:: 自分自身
327
+ def stop
328
+ return self unless @exec
329
+ if @dir == :h
330
+ @now.oy -= @pos_offset[@pnum]
331
+ else
332
+ @now.ox -= @pos_offset[@pnum]
333
+ end
334
+ @cnt.stop if @cnt.kind_of?(WaitCounter)
335
+ @exec = false
336
+ return self
337
+ end
338
+
339
+ #===アニメーションの開始・停止を切り替える
340
+ #返却値:: 自分自身
341
+ def toggle_exec
342
+ if @exec
343
+ stop
344
+ else
345
+ start
346
+ end
347
+ return self
348
+ end
349
+
350
+ #===アニメーションの更新を行う
351
+ #アニメーションのカウントをチェックし、カウントが終了したときは新しいパターンに切り替えて、カウントを開始する
352
+ #すべてのパターンのアニメーションが終了すれば、最初のパターンに戻り、カウントを開始する
353
+ #但し、インスタンス生成時に:loop->falseを設定していれば、アニメーションを終了する
354
+ #返却値:: アニメーションパターンが切り替わればtrue、切り替わらないとき、アニメーションが終了したときはfalseを返す
355
+ def update_animation
356
+ end
357
+
358
+ def update_frame #:nodoc:
359
+ if @cnt > 0
360
+ @cnt -= 1
361
+ return false
362
+ end
363
+ @pnum = (@pnum + 1) % @pats
364
+ if @loop == false && @pnum == 0
365
+ stop
366
+ return false
367
+ end
368
+ set_pat
369
+ @cnt = @waits[@plist[@pnum]]
370
+ return true
371
+ end
372
+
373
+ def update_wait_counter #:nodoc:
374
+ return false if @cnt.waiting?
375
+ @pnum = (@pnum + 1) % @pats
376
+ if @loop == false && @pnum == 0
377
+ stop
378
+ return false
379
+ end
380
+ set_pat
381
+ @cnt = @waits[@plist[@pnum]]
382
+ @cnt.start
383
+ return true
384
+ end
385
+
386
+ def set_pat #:nodoc:
387
+ @now = @units[@plist[@pnum]]
388
+ end
389
+
390
+ def set_chr #:nodoc:
391
+ @units.each{|u|
392
+ if @dir == :h
393
+ u.ox = @chr_olen * @cnum
394
+ else
395
+ u.oy = @chr_olen * @cnum
396
+ end
397
+ }
398
+ end
399
+
400
+ #===アニメーションのパターンをリセットする
401
+ #返却値:: 自分自身
402
+ def reset
403
+ @pnum = 0
404
+ @cnt = 0
405
+ return self
406
+ end
407
+
408
+ #===アニメーションが実行中かを返す
409
+ #返却値:: アニメーションが実行されていれば true
410
+ def exec?
411
+ return @exec
412
+ end
413
+
414
+ #===現在実行中のパターンの元になったスプライトユニットを返す
415
+ #得られるインスタンスは複写していないので、インスタンスの値を調整するには、dupメソッドで複製する必要がある
416
+ #返却値:: 現在表示しているスプライトユニット
417
+ def to_unit
418
+ return @now
419
+ end
420
+
421
+ #=== 現在実行中のパターンの画像を返す
422
+ #返却値:: 現在表示している画像(bitmap)
423
+ def bitmap
424
+ return @now.bitmap
425
+ end
426
+
427
+ #===現在実行中のパターンの元になったインスタンスを返す
428
+ #取得するパターンは、元になったインスタンスのto_spriteメソッドを呼び出した時の値となる
429
+ #引数1個のブロックを渡せば、スプライトに補正をかけることが出来る
430
+ #返却値:: 現在表示しているスプライト
431
+ def to_sprite(&block)
432
+ return @slist[@plist[@pnum]].to_sprite(&block)
433
+ end
434
+
435
+ #===現在表示しているスプライトの大きさを矩形で取得する
436
+ #返却値:: 生成された矩形(Rect構造体のインスタンス)
437
+ def rect
438
+ return Rect.new(@now.x, @now.y, @now.ow, @now.oh)
439
+ end
440
+
441
+ #===現在表示しているスプライトの最大の大きさを矩形で取得する
442
+ #現在のパターンの大きさと同じため、rectメソッドの値と同一となる
443
+ #返却値:: 生成された矩形(Rect構造体のインスタンス)
444
+ def broad_rect
445
+ return self.rect
446
+ end
447
+
448
+ #===インスタンスに束縛されているオブジェクトを解放する
449
+ def dispose
450
+ @slist.clear
451
+ @units.each{|u| u.bitmap = nil}
452
+ @units.clear
453
+ @waits.clear
454
+ @plist.clear
455
+ @move_offset.clear
456
+ @pos_offset.clear
457
+ end
458
+
459
+ #===アニメーションの現在の画像を画面に描画する
460
+ #転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、src側(ow,oh)の範囲で転送する。
461
+ #画面の描画範囲は、src側SpriteUnitの(x,y)を起点に設定にする。
462
+ #ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る)
463
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
464
+ #ブロックの引数は、|インスタンスのSpriteUnit|となる。
465
+ #visibleメソッドの値がfalseのときは描画されない。
466
+ def render
467
+ end
468
+
469
+ #===アニメーションの現在の画像を画像に描画する
470
+ #転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、src側(ow,oh)の範囲で転送する。
471
+ #転送先の描画範囲は、src側SpriteUnitの(x,y)を起点に設定にする。
472
+ #ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る)
473
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
474
+ #ブロックの引数は、|インスタンスのSpriteUnit,転送先のSpriteUnit|となる。
475
+ #visibleメソッドの値がfalseのときは描画されない。
476
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
477
+ def render_to(dst)
478
+ end
479
+ end
480
+ end
481
+