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,166 +1,205 @@
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
- #==プレーン(画面いっぱいにタイル表示される画像)を表現するクラス
25
- class Plane
26
- extend Forwardable
27
-
28
- def resize #:nodoc:
29
- @size = Size.new(((Screen.w + @sprite.ow - 1) / @sprite.ow + 2),
30
- ((Screen.h + @sprite.oh - 1) / @sprite.oh + 2))
31
- end
32
-
33
- #===インスタンスの作成
34
- #パラメータは、Sprite.newのパラメータと同じ。但し、追加のパラメータがある。
35
- #
36
- #:sprite => (インスタンス) : 表示対象のスプライト(アニメーション)のインスタンス
37
- #
38
- #_param_:: プレーンの情報(:sprite(=>Sprite・SpriteAnimationクラスのインスタンス))
39
- #返却値:: 生成したインスタンス
40
- def initialize(param)
41
- if param.has_key?(:sprite)
42
- @sprite = param[:sprite]
43
- else
44
- @sprite = Sprite.new(param)
45
- end
46
- resize
47
- @pos = Point.new(0, 0)
48
- @visible = true
49
- end
50
-
51
- #===プレーン画像左上の x 座標の値を取得する
52
- #元画像の左上の位置がどこにあるのかを示す
53
- #返却値:: x 座標の値
54
- def x
55
- return @pos.x
56
- end
57
-
58
- #===プレーン画像左上の y 座標の値を取得する
59
- #元画像の左上の位置がどこにあるのかを示す
60
- #返却値:: y 座標の値
61
- def y
62
- return @pos.y
63
- end
64
-
65
- #===プレーンの表示位置を移動させる
66
- #画像スクロールと同じ効果を得る
67
- #_dx_:: 移動量(x 座標)
68
- #_dy_:: 移動量(y 座標)
69
- #返却値:: 自分自身を返す
70
- def move(dx, dy)
71
- @pos.move(dx, dy)
72
- @pos.x %= @sprite.ow if @pos.x >= @sprite.ow || @pos.x <= -@sprite.ow
73
- @pos.y %= @sprite.oh if @pos.y >= @sprite.oh || @pos.y <= -@sprite.oh
74
- return self
75
- end
76
-
77
- #===プレーンの表示位置を移動させる(移動位置指定)
78
- #画像スクロールと同じ効果を得る
79
- #_x_:: 移動先の位置(x 座標)
80
- #_y_:: 移動先の位置(y 座標)
81
- #返却値:: 自分自身を返す
82
- def move_to(x, y)
83
- @pos.move_to(x, y)
84
- @pos.x %= @screen.ow if @pos.x >= @sprite.ow || @pos.x <= -@sprite.ow
85
- @pos.y %= @screen.oh if @pos.y >= @sprite.oh || @pos.y <= -@sprite.oh
86
- return self
87
- end
88
-
89
- #===画像の表示矩形を取得する
90
- #Planeの大きさを矩形で取得する。値は、Screen.rectメソッドの値と同じ。
91
- #返却値:: 生成された矩形(Rect構造体のインスタンス)
92
- def rect
93
- return Screen.rect
94
- end
95
-
96
- #===現在の画面の最大の大きさを矩形で取得する
97
- #但し、Planeの場合は最大の大きさ=画面の大きさなので、rectと同じ値が得られる
98
- #返却値:: 生成された矩形(Rect構造体のインスタンス)
99
- def broad_rect
100
- return self.rect
101
- end
102
-
103
- #===プレーンのデータを解放する
104
- def dispose
105
- @sprite.dispose
106
- end
107
-
108
- #===画面に描画を指示する
109
- #現在表示できるプレーンを、現在の状態で描画するよう指示する
110
- #--
111
- #(但し、実際に描画されるのはScreen.renderメソッドが呼び出された時)
112
- #++
113
- #返却値:: 自分自身を返す
114
- def render
115
- @size.h.times{|y|
116
- @size.w.times{|x|
117
- u = @sprite.to_unit
118
- u.move_to(x * @sprite.ow + @pos.x, y * @sprite.oh + @pos.y)
119
- Screen.render_screen(u) if u.x >= 0 && u.y >= 0 && u.x + u.ow <= Screen.bitmap.w && u.y + u.oh <= Screen.bitmap.h
120
- }
121
- }
122
- return self
123
- end
124
-
125
- #===現在表示されているプレーンをSpriteクラスのインスタンスとして取得
126
- #引数1個のブロックを渡せば、スプライトに補正をかけることが出来る
127
- #返却値:: 取り込んだ画像を含むSpriteクラスのインスタンス
128
- def to_sprite
129
- sprite = Sprite.new(:size=>self.rect.to_a[2..3], :type=>:ac)
130
- Drawing.fill(sprite, [0,0,0])
131
- Bitmap.ck_to_ac!(sprite, [0,0,0])
132
- self.render_to(sprite)
133
- yield sprite if block_given?
134
- return sprite
135
- end
136
-
137
- #===SpriteUnit構造体を生成する
138
- #いったんSpriteインスタンスを作成し、それをもとにSpriteUnit構造体を生成する。
139
- #返却値:: 生成したSpriteUnit構造体
140
- def to_unit
141
- return self.to_sprite.to_unit
142
- end
143
-
144
- def Plane::resize #:nodoc:
145
- @@planes.each{|p| p.resize }
146
- return nil
147
- end
148
-
149
- #===プレーンを画面に描画する
150
- #転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点にする。
151
- #画面の描画範囲は、src側SpriteUnitの(x,y)を起点に、タイリングを行いながら貼り付ける。
152
- #visibleメソッドの値がfalseのときは描画されない。
153
- def render
154
- end
155
-
156
- #===プレーンを画像に描画する
157
- #転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点にする。
158
- #転送先の描画範囲は、src側SpriteUnitの(x,y)を起点に、タイリングを行いながら貼り付ける。
159
- #visibleメソッドの値がfalseのときは描画されない。
160
- #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
161
- def render_to(dst)
162
- end
163
-
164
- def_delegators(:sprite)
165
- end
166
- 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
+ #==プレーン(画面いっぱいにタイル表示される画像)を表現するクラス
25
+ class Plane
26
+ include SpriteBase
27
+ include Animation
28
+ extend Forwardable
29
+
30
+ def resize #:nodoc:
31
+ @size = Size.new(((Screen.w + @sprite.ow - 1) / @sprite.ow + 2),
32
+ ((Screen.h + @sprite.oh - 1) / @sprite.oh + 2))
33
+ end
34
+
35
+ #===インスタンスの作成
36
+ #パラメータは、Sprite.newのパラメータと同じ。但し、追加のパラメータがある。
37
+ #
38
+ #:sprite => (インスタンス) : 表示対象のスプライト(アニメーション)のインスタンス
39
+ #
40
+ #_param_:: プレーンの情報(:sprite(=>Sprite・SpriteAnimationクラスのインスタンス))
41
+ #返却値:: 生成したインスタンス
42
+ def initialize(param)
43
+ if param.has_key?(:sprite)
44
+ @sprite = param[:sprite]
45
+ else
46
+ @sprite = Sprite.new(param)
47
+ end
48
+ resize
49
+ @pos = Point.new(0, 0)
50
+ @visible = true
51
+ end
52
+
53
+ def initialize_copy(obj) #:nodoc:
54
+ @sprite = @sprite.dup
55
+ @pos = @pos.dup
56
+ end
57
+
58
+ #===プレーン画像左上の x 座標の値を取得する
59
+ #元画像の左上の位置がどこにあるのかを示す
60
+ #返却値:: x 座標の値
61
+ def x
62
+ return @pos.x
63
+ end
64
+
65
+ #===プレーン画像左上の y 座標の値を取得する
66
+ #元画像の左上の位置がどこにあるのかを示す
67
+ #返却値:: y 座標の値
68
+ def y
69
+ return @pos.y
70
+ end
71
+
72
+ #===プレーンの表示位置を移動させる
73
+ #画像スクロールと同じ効果を得る
74
+ #_dx_:: 移動量(x 座標)
75
+ #_dy_:: 移動量(y 座標)
76
+ #返却値:: 自分自身を返す
77
+ def move!(dx, dy)
78
+ @pos.move!(dx, dy)
79
+ @pos.x %= @sprite.ow if @pos.x >= @sprite.ow || @pos.x <= -@sprite.ow
80
+ @pos.y %= @sprite.oh if @pos.y >= @sprite.oh || @pos.y <= -@sprite.oh
81
+ return self
82
+ end
83
+
84
+ #===プレーンの表示位置を移動させる(移動位置指定)
85
+ #画像スクロールと同じ効果を得る
86
+ #_x_:: 移動先の位置(x 座標)
87
+ #_y_:: 移動先の位置(y 座標)
88
+ #返却値:: 自分自身を返す
89
+ def move_to!(x, y)
90
+ @pos.move_to!(x, y)
91
+ @pos.x %= @screen.ow if @pos.x >= @sprite.ow || @pos.x <= -@sprite.ow
92
+ @pos.y %= @screen.oh if @pos.y >= @sprite.oh || @pos.y <= -@sprite.oh
93
+ return self
94
+ end
95
+
96
+ #===プレーンの表示位置を移動させたときの位置を求める
97
+ #画像スクロールと同じ効果を得る
98
+ #ただし、自分自身の位置は変わらない
99
+ #_dx_:: 移動量(x 座標)
100
+ #_dy_:: 移動量(y 座標)
101
+ #返却値:: 変更したPosition構造体を返す
102
+ def move!(dx, dy)
103
+ @pos.move!(dx, dy)
104
+ @pos.x %= @sprite.ow if @pos.x >= @sprite.ow || @pos.x <= -@sprite.ow
105
+ @pos.y %= @sprite.oh if @pos.y >= @sprite.oh || @pos.y <= -@sprite.oh
106
+ return self
107
+ end
108
+
109
+ #===プレーンの表示位置を移動させたときの位置を求める(移動位置指定)
110
+ #画像スクロールと同じ効果を得る
111
+ #ただし、自分自身の位置は変わらない
112
+ #_x_:: 移動先の位置(x 座標)
113
+ #_y_:: 移動先の位置(y 座標)
114
+ #返却値:: 変更したPosition構造体を返す
115
+ def move_to!(x, y)
116
+ @pos.move_to!(x, y)
117
+ @pos.x %= @screen.ow if @pos.x >= @sprite.ow || @pos.x <= -@sprite.ow
118
+ @pos.y %= @screen.oh if @pos.y >= @sprite.oh || @pos.y <= -@sprite.oh
119
+ return self
120
+ end
121
+
122
+ #===画像の表示矩形を取得する
123
+ #Planeの大きさを矩形で取得する。値は、Screen.rectメソッドの値と同じ。
124
+ #返却値:: 生成された矩形(Rect構造体のインスタンス)
125
+ def rect
126
+ return Screen.rect
127
+ end
128
+
129
+ #===現在の画面の最大の大きさを矩形で取得する
130
+ #但し、Planeの場合は最大の大きさ=画面の大きさなので、rectと同じ値が得られる
131
+ #返却値:: 生成された矩形(Rect構造体のインスタンス)
132
+ def broad_rect
133
+ return self.rect
134
+ end
135
+
136
+ #===プレーンのデータを解放する
137
+ def dispose
138
+ @sprite.dispose
139
+ end
140
+
141
+ #===画面に描画を指示する
142
+ #現在表示できるプレーンを、現在の状態で描画するよう指示する
143
+ #--
144
+ #(但し、実際に描画されるのはScreen.renderメソッドが呼び出された時)
145
+ #++
146
+ #返却値:: 自分自身を返す
147
+ def render
148
+ @size.h.times{|y|
149
+ @size.w.times{|x|
150
+ u = @sprite.to_unit
151
+ u.move_to(x * @sprite.ow + @pos.x, y * @sprite.oh + @pos.y)
152
+ Screen.render_screen(u) if u.x >= 0 && u.y >= 0 && u.x + u.ow <= Screen.bitmap.w && u.y + u.oh <= Screen.bitmap.h
153
+ }
154
+ }
155
+ return self
156
+ end
157
+
158
+ #===描画の素になるスプライトのアニメーションを更新する
159
+ #返却値:: 更新した結果、パターンが変わった・アニメーションが終了したときはtrue、それ以外はfalseを返す
160
+ def update_animation
161
+ return @sprite.update_animation
162
+ end
163
+
164
+ #===現在表示されているプレーンをSpriteクラスのインスタンスとして取得
165
+ #引数1個のブロックを渡せば、スプライトに補正をかけることが出来る
166
+ #返却値:: 取り込んだ画像を含むSpriteクラスのインスタンス
167
+ def to_sprite
168
+ sprite = Sprite.new(:size=>self.rect.to_a[2..3], :type=>:ac)
169
+ Drawing.fill(sprite, [0,0,0])
170
+ Bitmap.ck_to_ac!(sprite, [0,0,0])
171
+ self.render_to(sprite)
172
+ yield sprite if block_given?
173
+ return sprite
174
+ end
175
+
176
+ #===SpriteUnit構造体を生成する
177
+ #いったんSpriteインスタンスを作成し、それをもとにSpriteUnit構造体を生成する。
178
+ #返却値:: 生成したSpriteUnit構造体
179
+ def to_unit
180
+ return self.to_sprite.to_unit
181
+ end
182
+
183
+ def Plane::resize #:nodoc:
184
+ @@planes.each{|p| p.resize }
185
+ return nil
186
+ end
187
+
188
+ #===プレーンを画面に描画する
189
+ #転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点にする。
190
+ #画面の描画範囲は、src側SpriteUnitの(x,y)を起点に、タイリングを行いながら貼り付ける。
191
+ #visibleメソッドの値がfalseのときは描画されない。
192
+ def render
193
+ end
194
+
195
+ #===プレーンを画像に描画する
196
+ #転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点にする。
197
+ #転送先の描画範囲は、src側SpriteUnitの(x,y)を起点に、タイリングを行いながら貼り付ける。
198
+ #visibleメソッドの値がfalseのときは描画されない。
199
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
200
+ def render_to(dst)
201
+ end
202
+
203
+ def_delegators(:sprite)
204
+ end
205
+ end