cyross-ruby-miyako 2.0.5.1.0 → 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 (91) hide show
  1. data/README +1092 -929
  2. data/Rakefile +7 -7
  3. data/defines.h +144 -144
  4. data/extern.h +29 -29
  5. data/install_miyako.rb +87 -87
  6. data/lib/Miyako/API/audio.rb +572 -198
  7. data/lib/Miyako/API/basic_data.rb +825 -573
  8. data/lib/Miyako/API/bitmap.rb +534 -507
  9. data/lib/Miyako/API/choices.rb +481 -475
  10. data/lib/Miyako/API/collision.rb +486 -460
  11. data/lib/Miyako/API/diagram.rb +586 -561
  12. data/lib/Miyako/API/drawing.rb +151 -151
  13. data/lib/Miyako/API/exceptions.rb +105 -0
  14. data/lib/Miyako/API/fixedmap.rb +462 -428
  15. data/lib/Miyako/API/font.rb +430 -403
  16. data/lib/Miyako/API/input.rb +456 -447
  17. data/lib/Miyako/API/layout.rb +636 -433
  18. data/lib/Miyako/API/map.rb +583 -529
  19. data/lib/Miyako/API/map_event.rb +222 -198
  20. data/lib/Miyako/API/modules.rb +357 -109
  21. data/lib/Miyako/API/movie.rb +166 -154
  22. data/lib/Miyako/API/parts.rb +276 -189
  23. data/lib/Miyako/API/plane.rb +205 -166
  24. data/lib/Miyako/API/screen.rb +341 -325
  25. data/lib/Miyako/API/shape.rb +443 -443
  26. data/lib/Miyako/API/sprite.rb +771 -752
  27. data/lib/Miyako/API/sprite_animation.rb +490 -481
  28. data/lib/Miyako/API/sprite_list.rb +1135 -0
  29. data/lib/Miyako/API/spriteunit.rb +168 -147
  30. data/lib/Miyako/API/story.rb +350 -300
  31. data/lib/Miyako/API/textbox.rb +770 -725
  32. data/lib/Miyako/API/utility.rb +419 -388
  33. data/lib/Miyako/API/viewport.rb +189 -139
  34. data/lib/Miyako/API/yuki.rb +1226 -996
  35. data/lib/Miyako/EXT/miyako_cairo.rb +62 -62
  36. data/lib/Miyako/EXT/raster_scroll.rb +138 -138
  37. data/lib/Miyako/EXT/slides.rb +157 -157
  38. data/lib/Miyako/miyako.rb +201 -171
  39. data/lib/Miyako/miyako_require_only.rb +35 -0
  40. data/miyako_basicdata.c +590 -590
  41. data/miyako_bitmap.c +1225 -1225
  42. data/miyako_collision.c +403 -403
  43. data/miyako_drawing.c +187 -187
  44. data/miyako_font.c +334 -334
  45. data/miyako_hsv.c +830 -830
  46. data/miyako_input_audio.c +254 -0
  47. data/miyako_layout.c +191 -191
  48. data/miyako_no_katana.c +1078 -1074
  49. data/miyako_sprite2.c +431 -0
  50. data/miyako_transform.c +438 -438
  51. data/miyako_utility.c +288 -288
  52. data/sample/Animation1/m1ku.rb +68 -68
  53. data/sample/Animation2/lex.rb +96 -96
  54. data/sample/Diagram_sample/diagram_sample_yuki2.rb +328 -386
  55. data/sample/Room3/blue.rb +297 -297
  56. data/sample/Room3/ending.rb +180 -180
  57. data/sample/Room3/green.rb +220 -220
  58. data/sample/Room3/main.rb +119 -119
  59. data/sample/Room3/main_component.rb +59 -59
  60. data/sample/Room3/red.rb +227 -227
  61. data/sample/Room3/room3.rb +25 -27
  62. data/sample/Room3/title.rb +184 -184
  63. data/sample/ball_action_sample.rb +204 -204
  64. data/sample/blit_rop.rb +70 -70
  65. data/sample/cairo_sample.rb +25 -25
  66. data/sample/circle_collision_test.rb +66 -66
  67. data/sample/collision_test.rb +33 -33
  68. data/sample/collision_test2.rb +108 -108
  69. data/sample/fixed_map_test/fixed_map_sample.rb +140 -140
  70. data/sample/fixed_map_test/readme.txt +72 -72
  71. data/sample/map_test/chara.rb +58 -58
  72. data/sample/map_test/main_parts.rb +69 -69
  73. data/sample/map_test/main_scene.rb +153 -153
  74. data/sample/map_test/map_manager.rb +75 -75
  75. data/sample/map_test/map_test.rb +23 -23
  76. data/sample/map_test/oasis.rb +71 -71
  77. data/sample/map_test/readme.txt +89 -89
  78. data/sample/map_test/route.rb +157 -157
  79. data/sample/map_test/town.rb +74 -74
  80. data/sample/polygon_test.rb +35 -35
  81. data/sample/rasterscroll.rb +24 -24
  82. data/sample/takahashi.rb +42 -42
  83. data/sample/textbox_sample.rb +189 -189
  84. data/sample/transform.rb +54 -54
  85. data/sample/utility_test.rb +73 -73
  86. data/sample/utility_test2.rb +61 -61
  87. data/sample/utility_test3.rb +64 -64
  88. data/sample/utility_test4.rb +73 -73
  89. data/uninstall_miyako.rb +19 -19
  90. data/win/miyako_no_katana.so +0 -0
  91. metadata +7 -2
@@ -1,109 +1,357 @@
1
- # -*- encoding: utf-8 -*-
2
- =begin
3
- --
4
- Miyako v2.0
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
- =begin rdoc
25
- ==基本スプライトモジュール
26
- スプライトの基本メソッドで構成されるテンプレートモジュール
27
- =end
28
- module SpriteBase
29
- #===スプライトインスタンスを取得するメソッドのテンプレート
30
- #_data_:: あとで書く
31
- #返却値:: 自分自身を返す
32
- def to_sprite(data = nil)
33
- return self
34
- end
35
-
36
- #===SpriteUnit構造体を取得するメソッドのテンプレート
37
- #返却値:: nilを返す
38
- def to_unit
39
- return nil
40
- end
41
-
42
- #===領域の矩形を取得するメソッドのテンプレート
43
- #返却値:: nilを返す
44
- def rect
45
- return nil
46
- end
47
-
48
- #===領域の最大矩形を取得するメソッドのテンプレート
49
- #返却値:: nilを返す
50
- def broad_rect
51
- return nil
52
- end
53
-
54
- #===画像(Bitmapクラスのインスタンス)を取得するメソッドのテンプレート
55
- #返却値:: nilを返す
56
- def bitmap
57
- return nil
58
- end
59
-
60
- #===画像内での描画開始位置(x座標)を取得するメソッドのテンプレート
61
- #返却値:: 0を返す
62
- def ox
63
- return 0
64
- end
65
-
66
- #===画像内での描画開始位置(y座標)を取得するメソッドのテンプレート
67
- #返却値:: 0を返す
68
- def oy
69
- return 0
70
- end
71
-
72
- #===画面への描画を指示するメソッドのテンプレート
73
- #_block_:: 呼び出し時にブロック付き呼び出しが行われたときのブロック本体。呼び先に渡すことが出来る。ブロックがなければnilが入る
74
- #返却値:: 自分自身を返す
75
- def render(&block)
76
- return self
77
- end
78
- end
79
-
80
- =begin rdoc
81
- ==基本アニメーションモジュール
82
- アニメーションの基本メソッドで構成されるテンプレートモジュール
83
- =end
84
- module Animation
85
- #===アニメーションを開始するメソッドのテンプレート
86
- #返却値:: 自分自身を返す
87
- def start
88
- return self
89
- end
90
-
91
- #===アニメーションを停止するメソッドのテンプレート
92
- #返却値:: 自分自身を返す
93
- def stop
94
- return self
95
- end
96
-
97
- #===アニメーションパターンを先頭に戻すメソッドのテンプレート
98
- #返却値:: 自分自身を返す
99
- def reset
100
- return self
101
- end
102
-
103
- #===アニメーションを更新するメソッドのテンプレート
104
- #返却値:: falseを返す(アニメーションパターンが更新されたときにtrueを返す)
105
- def update_animation
106
- return false
107
- end
108
- end
109
- end
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
+ =begin rdoc
25
+ ==基本スプライトモジュール
26
+ スプライトの基本メソッドで構成されるテンプレートモジュール
27
+ =end
28
+ module SpriteBase
29
+ #===スプライトインスタンスを取得するメソッドのテンプレート
30
+ #_data_:: あとで書く
31
+ #返却値:: 自分自身を返す
32
+ def to_sprite(data = nil)
33
+ return self
34
+ end
35
+
36
+ #===SpriteUnit構造体を取得するメソッドのテンプレート
37
+ #返却値:: nilを返す
38
+ def to_unit
39
+ return nil
40
+ end
41
+
42
+ #===描画可能・不可状態を返すメソッドのテンプレート
43
+ #返却値:: falseを返す
44
+ def visible
45
+ return false
46
+ end
47
+
48
+ #===描画可能・不可状態を設定するメソッドのテンプレート
49
+ #返却値:: falseを返す
50
+ def visible=(v)
51
+ return self
52
+ end
53
+
54
+ #===描画可能状態にするメソッドのテンプレート
55
+ def show
56
+ self.visible = true
57
+ end
58
+
59
+ #===描画不可能状態にするメソッドのテンプレート
60
+ def hide
61
+ self.visible = false
62
+ end
63
+
64
+ #===領域の矩形を取得するメソッドのテンプレート
65
+ #返却値:: nilを返す
66
+ def rect
67
+ return nil
68
+ end
69
+
70
+ #===領域の最大矩形を取得するメソッドのテンプレート
71
+ #返却値:: nilを返す
72
+ def broad_rect
73
+ return nil
74
+ end
75
+
76
+ #===画像(Bitmapクラスのインスタンス)を取得するメソッドのテンプレート
77
+ #返却値:: nilを返す
78
+ def bitmap
79
+ return nil
80
+ end
81
+
82
+ #===画像内での描画開始位置(x座標)を取得するメソッドのテンプレート
83
+ #返却値:: 0を返す
84
+ def ox
85
+ return 0
86
+ end
87
+
88
+ #===画像内での描画開始位置(y座標)を取得するメソッドのテンプレート
89
+ #返却値:: 0を返す
90
+ def oy
91
+ return 0
92
+ end
93
+
94
+ #===画面への描画を指示するメソッドのテンプレート
95
+ #_block_:: 呼び出し時にブロック付き呼び出しが行われたときのブロック本体。呼び先に渡すことが出来る。ブロックがなければnilが入る
96
+ #返却値:: 自分自身を返す
97
+ def render(&block)
98
+ return self
99
+ end
100
+
101
+ #===画像への描画を指示するメソッドのテンプレート
102
+ #_dst_:: 対象の画像
103
+ #_block_:: 呼び出し時にブロック付き呼び出しが行われたときのブロック本体。呼び先に渡すことが出来る。ブロックがなければnilが入る
104
+ #返却値:: 自分自身を返す
105
+ def render_to(dst, &block)
106
+ return self
107
+ end
108
+ end
109
+
110
+ =begin rdoc
111
+ ==基本アニメーションモジュール
112
+ アニメーションの基本メソッドで構成されるテンプレートモジュール
113
+ =end
114
+ module Animation
115
+ #===アニメーションを開始するメソッドのテンプレート
116
+ #返却値:: 自分自身を返す
117
+ def start
118
+ return self
119
+ end
120
+
121
+ #===アニメーションを停止するメソッドのテンプレート
122
+ #返却値:: 自分自身を返す
123
+ def stop
124
+ return self
125
+ end
126
+
127
+ #===アニメーションパターンを先頭に戻すメソッドのテンプレート
128
+ #返却値:: 自分自身を返す
129
+ def reset
130
+ return self
131
+ end
132
+
133
+ #===アニメーションを更新するメソッドのテンプレート
134
+ #返却値:: falseを返す(アニメーションパターンが更新されたときにtrueを返す)
135
+ def update_animation
136
+ return false
137
+ end
138
+ end
139
+
140
+ #==複数スプライト管理(配列)機能を追加するモジュール
141
+ #配列にスプライトとして最低限の機能を追加する。
142
+ #また、独自にswapなどのメソッドを追加。
143
+ #render、render_toを用意し、一気に描画が可能。配列の要素順に描画される。
144
+ #各要素の位置関係は関与していない(そこがPartsとの違い)
145
+ module SpriteArray
146
+ include SpriteBase
147
+ include Animation
148
+ include Enumerable
149
+
150
+ #===各要素からスプライト以外の要素を取り除いた配列を作成する
151
+ #SpriteBaseモジュール、もしくはSpriteArrayモジュールをインクルードしていない要素を削除した配列を返す
152
+ #登録されている名前順の配列になる。
153
+ #返却値:: 生成したスプライトを返す
154
+ def sprite_only
155
+ self.select{|e| e.class.include?(SpriteBase) || e.class.include?(SpriteArray)}
156
+ end
157
+
158
+ #===各要素からスプライト以外の要素を取り除いた配列を破壊的に作成する
159
+ #SpriteBaseモジュール、もしくはSpriteArrayモジュールをインクルードしていない要素を削除する
160
+ #登録されている名前順の配列になる。
161
+ #返却値:: 自分自身を返す
162
+ def sprite_only!
163
+ self.delete_if{|e| !e.class.include?(SpriteBase) && !e.class.include?(SpriteArray)}
164
+ end
165
+
166
+ #===配列要素を複製したコピー配列を取得する
167
+ #通常、インスタンスの複写に使われるdup,cloneメソッドは、同じ配列要素を見ているが、
168
+ #このメソッドでは、要素も複製したものが複製される(各要素のdeep_copyメソッドを呼び出す)
169
+ #返却値:: 複写した配列を返す
170
+ def deep_copy
171
+ self.map{|e| e.deep_copy }
172
+ end
173
+
174
+ #===各要素の描画可能状態を取得する
175
+ #各要素のvisibleメソッドの値を配列で取得する。
176
+ #登録されている名前順の配列になる。
177
+ #返却値:: true/falseの配列
178
+ def visible
179
+ return self.sprite_only.map{|e| e.visible}
180
+ end
181
+
182
+ #===各要素の描画可能状態を一気に設定する
183
+ #すべての要素のvisibleメソッドの値を変更する
184
+ #登録されている名前順の配列になる。
185
+ #_v_:: 設定する値(true/false)
186
+ #返却値:: 自分自身を返す
187
+ def visible=(v)
188
+ self.sprite_only.each{|e| e.visible = v}
189
+ return self
190
+ end
191
+
192
+ #===各要素の位置を変更する(変化量を指定)
193
+ #ブロックを渡したとき、戻り値として[更新したdx,更新したdy]とした配列を返すと、
194
+ #それがその要素での移動量となる。
195
+ #ブロックの引数は、|要素, インデックス(0,1,2,...), dx, dy|となる。
196
+ #(例)q=[a, b, c]
197
+ # #各スプライトの位置=すべて(10,15)
198
+ # q.move!(20,25) => aの位置:(30,40)
199
+ # bの位置:(30,40)
200
+ # cの位置:(30,40)
201
+ # q.move!(20,25){|e,i,dx,dy|
202
+ # [i*dx, i*dy]
203
+ # }
204
+ # => aの位置:(10,15)
205
+ # bの位置:(30,40)
206
+ # cの位置:(50,65)
207
+ #_dx_:: 移動量(x方向)。単位はピクセル
208
+ #_dy_:: 移動量(y方向)。単位はピクセル
209
+ #返却値:: 自分自身を返す
210
+ def move!(dx, dy)
211
+ if block_given?
212
+ self.sprite_only.each_with_index{|e, i| e.move!(*(yield e, i, dx, dy))}
213
+ else
214
+ self.sprite_only.each{|e| e.move!(dx, dy)}
215
+ end
216
+ self
217
+ end
218
+
219
+ #===各要素の位置を変更する(変化量を指定)
220
+ #ブロックを渡したとき、戻り値として[更新したdx,更新したdy]とした配列を返すと、
221
+ #それがその要素での移動量となる。
222
+ #ブロックの引数は、|要素, インデックス(0,1,2,...), x, y|となる。
223
+ #(例)q=[a, b, c]
224
+ # #各スプライトの位置=すべて(10,15)
225
+ # q.move!(20,25) => aの位置:(20,25)
226
+ # bの位置:(20,25)
227
+ # cの位置:(20,25)
228
+ # q.move!(20,25){|e,i,dx,dy|
229
+ # [i*dx, i*dy]
230
+ # }
231
+ # => aの位置:( 0, 0)
232
+ # bの位置:(20,25)
233
+ # cの位置:(40,50)
234
+ #_x_:: 移動先位置(x方向)。単位はピクセル
235
+ #_y_:: 移動先位置(y方向)。単位はピクセル
236
+ #返却値:: 自分自身を返す
237
+ def move_to!(x, y)
238
+ if block_given?
239
+ self.sprite_only.each_with_index{|e, i| e.move_to!(*(yield e, i, x, y))}
240
+ else
241
+ self.sprite_only.each{|e| e.move_to!(x, y)}
242
+ end
243
+ self
244
+ end
245
+
246
+ #===描く画像のアニメーションを開始する
247
+ #各要素のstartメソッドを呼び出す
248
+ #返却値:: 自分自身を返す
249
+ def start
250
+ self.sprite_only.each{|sprite| sprite.start }
251
+ return self
252
+ end
253
+
254
+ #===描く画像のアニメーションを停止する
255
+ #各要素のstopメソッドを呼び出す
256
+ #返却値:: 自分自身を返す
257
+ def stop
258
+ self.sprite_only.each{|sprite| sprite.stop }
259
+ return self
260
+ end
261
+
262
+ #===描く画像のアニメーションを先頭パターンに戻す
263
+ #各要素のresetメソッドを呼び出す
264
+ #返却値:: 自分自身を返す
265
+ def reset
266
+ self.sprite_only.each{|sprite| sprite.reset }
267
+ return self
268
+ end
269
+
270
+ #===描く画像のアニメーションを更新する
271
+ #各要素のupdate_animationメソッドを呼び出す
272
+ #返却値:: 描く画像のupdate_spriteメソッドを呼び出した結果を配列で返す
273
+ def update_animation
274
+ self.sprite_only.map{|e|
275
+ e.update_animation
276
+ }
277
+ end
278
+
279
+ #===指定した要素の内容を入れ替える
280
+ #配列の先頭から順にrenderメソッドを呼び出す。
281
+ #描画するインスタンスは、引数がゼロのrenderメソッドを持っているもののみ(持っていないときは呼び出さない)
282
+ #_idx1,idx2_:: 入れ替え対象の配列要素インデックス
283
+ #返却値:: 自分自身を帰す
284
+ def swap(idx1, idx2)
285
+ l = self.length
286
+ raise MiyakoValueError, "Illegal index range! : idx1:#{idx1}" if (idx1 >= l || idx1 < -l)
287
+ raise MiyakoValueError, "Illegal index range! : idx2:#{idx2}" if (idx2 >= l || idx2 < -l)
288
+ self[idx1], self[idx2] = self[idx2], self[idx1]
289
+ return self
290
+ end
291
+
292
+ #===配列の要素を画面に描画する
293
+ #配列の先頭から順にrenderメソッドを呼び出す。
294
+ #描画するインスタンスは、SpriteBaseモジュールがmixinされているクラスのみ
295
+ #返却値:: 自分自身を帰す
296
+ def render
297
+ self.sprite_only.each{|e| e.render }
298
+ return self
299
+ end
300
+
301
+ #===配列の要素を対象の画像に描画する
302
+ #配列の先頭から順にrender_toメソッドを呼び出す。
303
+ #_dst_:: 描画対象の画像インスタンス
304
+ #返却値:: 自分自身を帰す
305
+ def render_to(dst)
306
+ self.each{|e| e.render_to(dst) }
307
+ return self
308
+ end
309
+ end
310
+
311
+ #==ディープコピーを実装するモジュール
312
+ #dup、cloneとは違い、「ディープコピー(配列などの要素も複製するコピー)」を実装するためのモジュール。
313
+ module DeepCopy
314
+ #===複製を取得する
315
+ #ただし、再定義しているクラス(例:Arrayクラス)以外はdupメソッドの結果
316
+ #返却値:: 複写したインスタンスを返す
317
+ def deep_dup
318
+ (self && self.methods.include?(:dup)) ? self.dup : self
319
+ end
320
+
321
+ #===複製を取得する
322
+ #ただし、再定義しているクラス(例:Arrayクラス)以外はdupメソッドの結果
323
+ #返却値:: 複写したインスタンスを返す
324
+ def deep_clone
325
+ self.deep_dup
326
+ end
327
+ end
328
+ end
329
+
330
+ class Object
331
+ include Miyako::DeepCopy
332
+ end
333
+
334
+ class Array
335
+ include Miyako::SpriteArray
336
+
337
+ #===複製を取得する
338
+ #ただし、配列の要素もdeep_dupメソッドで複製する
339
+ #返却値:: 複写したインスタンスを返す
340
+ def deep_dup
341
+ self.dup.map{|e| (e && e.methods.include?(:deep_dup)) ? e.deep_dup : e }
342
+ end
343
+ end
344
+
345
+ class Hash
346
+ #===複製を取得する
347
+ #ただし、配列の要素もdeep_dupメソッドで複製する
348
+ #返却値:: 複写したインスタンスを返す
349
+ def deep_dup
350
+ ret = self.dup
351
+ ret.keys.each{|key|
352
+ v = ret[key]
353
+ (v && v.methods.include?(:deep_dup)) ? v.deep_dup : v
354
+ }
355
+ ret
356
+ end
357
+ end