ruby-miyako-mswin32 2.1.0

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