ruby-miyako 2.1.0 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +275 -20
- data/extern.h +21 -1
- data/install_miyako.rb +5 -3
- data/lib/Miyako/API/audio.rb +11 -6
- data/lib/Miyako/API/basic_data.rb +0 -985
- data/lib/Miyako/API/bitmap.rb +19 -22
- data/lib/Miyako/API/choices.rb +203 -69
- data/lib/Miyako/API/collision.rb +451 -9
- data/lib/Miyako/API/color.rb +177 -0
- data/lib/Miyako/API/diagram.rb +18 -20
- data/lib/Miyako/API/fixedmap.rb +207 -73
- data/lib/Miyako/API/font.rb +111 -18
- data/lib/Miyako/API/i_yuki.rb +1201 -0
- data/lib/Miyako/API/input.rb +65 -0
- data/lib/Miyako/API/layout.rb +41 -29
- data/lib/Miyako/API/map.rb +202 -157
- data/lib/Miyako/API/map_event.rb +86 -19
- data/lib/Miyako/API/map_struct.rb +268 -0
- data/lib/Miyako/API/modules.rb +136 -37
- data/lib/Miyako/API/movie.rb +8 -8
- data/lib/Miyako/API/parts.rb +63 -20
- data/lib/Miyako/API/plane.rb +4 -4
- data/lib/Miyako/API/screen.rb +16 -8
- data/lib/Miyako/API/sprite.rb +290 -23
- data/lib/Miyako/API/sprite_animation.rb +23 -11
- data/lib/Miyako/API/sprite_list.rb +406 -183
- data/lib/Miyako/API/story.rb +4 -65
- data/lib/Miyako/API/struct_point.rb +157 -0
- data/lib/Miyako/API/struct_rect.rb +233 -0
- data/lib/Miyako/API/struct_segment.rb +641 -0
- data/lib/Miyako/API/struct_size.rb +158 -0
- data/lib/Miyako/API/struct_square.rb +253 -0
- data/lib/Miyako/API/textbox.rb +49 -35
- data/lib/Miyako/API/viewport.rb +5 -5
- data/lib/Miyako/API/wait_counter.rb +350 -0
- data/lib/Miyako/API/yuki.rb +95 -60
- data/lib/Miyako/EXT/raster_scroll.rb +30 -8
- data/lib/Miyako/EXT/slides.rb +6 -6
- data/lib/Miyako/miyako.rb +25 -11
- data/lib/miyako.rb +28 -0
- data/lib/miyako_require_only.rb +35 -0
- data/miyako_basicdata.c +201 -17
- data/miyako_collision.c +315 -6
- data/miyako_diagram.c +331 -0
- data/miyako_drawing.c +26 -7
- data/miyako_font.c +259 -129
- data/miyako_input_audio.c +24 -14
- data/miyako_layout.c +106 -8
- data/miyako_no_katana.c +398 -171
- data/miyako_sprite2.c +275 -38
- data/miyako_transform.c +113 -107
- data/miyako_utility.c +34 -48
- data/miyako_yuki.c +241 -0
- data/sample/Diagram_sample/diagram_sample_yuki2.rb +30 -30
- data/sample/Room3/blue.rb +19 -19
- data/sample/Room3/green.rb +9 -9
- data/sample/Room3/main.rb +12 -12
- data/sample/Room3/red.rb +12 -12
- data/sample/Room3/title.rb +15 -10
- data/sample/collision_test2.rb +2 -1
- data/sample/fixed_map_test/fixed_map_sample.rb +7 -6
- data/sample/map_test/main_scene.rb +12 -10
- data/sample/map_test/map_manager.rb +14 -13
- data/sample/rasterscroll.rb +5 -5
- data/sample/takahashi.rb +3 -3
- data/sample/textbox_sample.rb +7 -6
- data/sample/transform.rb +2 -1
- data/uninstall_miyako.rb +4 -1
- data/win/miyako_no_katana.so +0 -0
- metadata +15 -4
- data/lib/Miyako/EXT/miyako_cairo.rb +0 -62
- data/sample/cairo_sample.rb +0 -25
data/lib/Miyako/API/modules.rb
CHANGED
@@ -38,71 +38,136 @@ module Miyako
|
|
38
38
|
def to_unit
|
39
39
|
return nil
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
#===描画可能・不可状態を返すメソッドのテンプレート
|
43
43
|
#返却値:: falseを返す
|
44
44
|
def visible
|
45
45
|
return false
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
#===描画可能・不可状態を設定するメソッドのテンプレート
|
49
|
-
#返却値::
|
49
|
+
#返却値:: 自分自身を返す
|
50
50
|
def visible=(v)
|
51
51
|
return self
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
#===描画可能状態にするメソッドのテンプレート
|
55
55
|
def show
|
56
56
|
self.visible = true
|
57
57
|
end
|
58
|
-
|
58
|
+
|
59
59
|
#===描画不可能状態にするメソッドのテンプレート
|
60
60
|
def hide
|
61
61
|
self.visible = false
|
62
62
|
end
|
63
|
-
|
63
|
+
|
64
64
|
#===領域の矩形を取得するメソッドのテンプレート
|
65
|
-
|
65
|
+
#Spriteクラスの時は部分矩形が返ってくることに注意
|
66
|
+
#返却値:: Rect構造体インスタンス(デフォルトはnil)
|
66
67
|
def rect
|
67
68
|
return nil
|
68
69
|
end
|
69
|
-
|
70
|
-
#===領域の最大矩形を取得するメソッドのテンプレート
|
71
|
-
#返却値:: nilを返す
|
72
|
-
def broad_rect
|
73
|
-
return nil
|
74
|
-
end
|
75
|
-
|
70
|
+
|
76
71
|
#===画像(Bitmapクラスのインスタンス)を取得するメソッドのテンプレート
|
77
72
|
#返却値:: nilを返す
|
78
73
|
def bitmap
|
79
74
|
return nil
|
80
75
|
end
|
81
|
-
|
82
|
-
|
83
|
-
#返却値:: 0
|
76
|
+
|
77
|
+
#=== mixin されたインスタンスの部分矩形開始位置(x軸)を取得する
|
78
|
+
#返却値:: 部分矩形開始位置(デフォルトは0)
|
84
79
|
def ox
|
85
80
|
return 0
|
86
81
|
end
|
87
|
-
|
88
|
-
|
89
|
-
|
82
|
+
|
83
|
+
#=== mixin されたインスタンスの部分矩形開始位置(y軸)を取得する
|
84
|
+
#返却値::部分矩形開始位置(デフォルトは0)
|
90
85
|
def oy
|
91
86
|
return 0
|
92
87
|
end
|
93
|
-
|
88
|
+
|
89
|
+
#=== mixin されたインスタンスの部分矩形幅を取得する
|
90
|
+
#返却値:: インスタンスの幅(デフォルトは0)
|
91
|
+
def ow
|
92
|
+
return 0
|
93
|
+
end
|
94
|
+
|
95
|
+
#=== mixin されたインスタンスの部分矩形高を取得する
|
96
|
+
#返却値:: インスタンスの高さ(デフォルトは0)
|
97
|
+
def oh
|
98
|
+
return 0
|
99
|
+
end
|
100
|
+
|
101
|
+
#=== スプライトの部分矩形を返す
|
102
|
+
#返却値:: Rect構造体インスタンス(デフォルトはnil)
|
103
|
+
def part_rect
|
104
|
+
return nil
|
105
|
+
end
|
106
|
+
|
107
|
+
#=== スプライトの元画像の大きさを返す
|
108
|
+
#返却値:: Size構造体インスタンス(デフォルトはnil)
|
109
|
+
def image_size
|
110
|
+
return nil
|
111
|
+
end
|
112
|
+
|
113
|
+
#=== スプライトの元画像の矩形を返す
|
114
|
+
#返却値:: Rect構造体インスタンス(デフォルトはnil)
|
115
|
+
def image_rect
|
116
|
+
return nil
|
117
|
+
end
|
118
|
+
|
119
|
+
def update
|
120
|
+
end
|
121
|
+
|
122
|
+
#===位置を指定して画面への描画を指示するメソッドのテンプレート
|
123
|
+
#オブジェクトで保持している位置情報ではなく、引数で渡された位置に描画する
|
124
|
+
#基本的に、メソッドのオーバーライドにより機能するが、pos,move_to!メソッドを持っているときは、
|
125
|
+
#これらのメソッドを呼び出して同じ動作を行うが処理速度的に課題あり
|
126
|
+
#ただし、上記のメソッドを持っていない場合は、単純にrenderメソッドを呼び出す
|
127
|
+
#_x_:: 描画位置のx座標
|
128
|
+
#_y_:: 描画位置のy座標
|
129
|
+
#返却値:: 自分自身を返す
|
130
|
+
def render_xy(x, y)
|
131
|
+
if [:pos, :move_to!].all?{|mn| self.class.method_defined?(mn)}
|
132
|
+
old_pos = self.pos
|
133
|
+
self.move_to!(x,y)
|
134
|
+
self.render
|
135
|
+
self.move_to!(*old_pos)
|
136
|
+
return self
|
137
|
+
end
|
138
|
+
return self.render
|
139
|
+
end
|
140
|
+
|
141
|
+
#===位置を指定して画像への描画を指示するメソッドのテンプレート
|
142
|
+
#オブジェクトで保持している位置情報ではなく、引数で渡された位置に描画する
|
143
|
+
#基本的に、メソッドのオーバーライドにより機能するが、pos,move_to!メソッドを持っているときは、
|
144
|
+
#これらのメソッドを呼び出して同じ動作を行うが、処理速度的に課題あり
|
145
|
+
#ただし、上記のメソッドを持っていない場合は、単純にrender_toメソッドを呼び出す
|
146
|
+
#_dst_:: 対象の画像
|
147
|
+
#_x_:: 描画位置のx座標
|
148
|
+
#_y_:: 描画位置のy座標
|
149
|
+
#返却値:: 自分自身を返す
|
150
|
+
def render_xy_to(dst, x, y)
|
151
|
+
if [:pos, :move_to!].all?{|mn| self.class.method_defined?(mn)}
|
152
|
+
old_pos = self.pos
|
153
|
+
self.move_to!(x,y)
|
154
|
+
self.render_to(dst)
|
155
|
+
self.move_to!(*old_pos)
|
156
|
+
return self
|
157
|
+
end
|
158
|
+
return self.render_to(dst)
|
159
|
+
end
|
160
|
+
|
94
161
|
#===画面への描画を指示するメソッドのテンプレート
|
95
|
-
#_block_:: 呼び出し時にブロック付き呼び出しが行われたときのブロック本体。呼び先に渡すことが出来る。ブロックがなければnilが入る
|
96
162
|
#返却値:: 自分自身を返す
|
97
|
-
def render
|
163
|
+
def render
|
98
164
|
return self
|
99
165
|
end
|
100
|
-
|
166
|
+
|
101
167
|
#===画像への描画を指示するメソッドのテンプレート
|
102
168
|
#_dst_:: 対象の画像
|
103
|
-
#_block_:: 呼び出し時にブロック付き呼び出しが行われたときのブロック本体。呼び先に渡すことが出来る。ブロックがなければnilが入る
|
104
169
|
#返却値:: 自分自身を返す
|
105
|
-
def render_to(dst
|
170
|
+
def render_to(dst)
|
106
171
|
return self
|
107
172
|
end
|
108
173
|
end
|
@@ -112,6 +177,40 @@ module Miyako
|
|
112
177
|
アニメーションの基本メソッドで構成されるテンプレートモジュール
|
113
178
|
=end
|
114
179
|
module Animation
|
180
|
+
@@anim_hash = {}
|
181
|
+
|
182
|
+
def Animation.[](key)
|
183
|
+
@@anim_hash[key]
|
184
|
+
end
|
185
|
+
|
186
|
+
def Animation.[]=(key, value)
|
187
|
+
@@anim_hash[key] = value
|
188
|
+
end
|
189
|
+
|
190
|
+
def Animation.anim_hash
|
191
|
+
@@anim_hash
|
192
|
+
end
|
193
|
+
|
194
|
+
def Animation.start
|
195
|
+
@@anim_hash.each_value{|v| v.start if v }
|
196
|
+
end
|
197
|
+
|
198
|
+
def Animation.stop
|
199
|
+
@@anim_hash.each_value{|v| v.stop if v }
|
200
|
+
end
|
201
|
+
|
202
|
+
def Animation.reset
|
203
|
+
@@anim_hash.each_value{|v| v.reset if v }
|
204
|
+
end
|
205
|
+
|
206
|
+
def Animation.update
|
207
|
+
@@anim_hash.each_value{|v| v.update_animation if v }
|
208
|
+
end
|
209
|
+
|
210
|
+
def Animation.update_animation
|
211
|
+
@@anim_hash.each_value{|v| v.update_animation if v }
|
212
|
+
end
|
213
|
+
|
115
214
|
#===アニメーションを開始するメソッドのテンプレート
|
116
215
|
#返却値:: 自分自身を返す
|
117
216
|
def start
|
@@ -136,7 +235,7 @@ module Miyako
|
|
136
235
|
return false
|
137
236
|
end
|
138
237
|
end
|
139
|
-
|
238
|
+
|
140
239
|
#==複数スプライト管理(配列)機能を追加するモジュール
|
141
240
|
#配列にスプライトとして最低限の機能を追加する。
|
142
241
|
#また、独自にswapなどのメソッドを追加。
|
@@ -162,7 +261,7 @@ module Miyako
|
|
162
261
|
def sprite_only!
|
163
262
|
self.delete_if{|e| !e.class.include?(SpriteBase) && !e.class.include?(SpriteArray)}
|
164
263
|
end
|
165
|
-
|
264
|
+
|
166
265
|
#===配列要素を複製したコピー配列を取得する
|
167
266
|
#通常、インスタンスの複写に使われるdup,cloneメソッドは、同じ配列要素を見ているが、
|
168
267
|
#このメソッドでは、要素も複製したものが複製される(各要素のdeep_copyメソッドを呼び出す)
|
@@ -178,7 +277,7 @@ module Miyako
|
|
178
277
|
def visible
|
179
278
|
return self.sprite_only.map{|e| e.visible}
|
180
279
|
end
|
181
|
-
|
280
|
+
|
182
281
|
#===各要素の描画可能状態を一気に設定する
|
183
282
|
#すべての要素のvisibleメソッドの値を変更する
|
184
283
|
#登録されている名前順の配列になる。
|
@@ -188,7 +287,7 @@ module Miyako
|
|
188
287
|
self.sprite_only.each{|e| e.visible = v}
|
189
288
|
return self
|
190
289
|
end
|
191
|
-
|
290
|
+
|
192
291
|
#===各要素の位置を変更する(変化量を指定)
|
193
292
|
#ブロックを渡したとき、戻り値として[更新したdx,更新したdy]とした配列を返すと、
|
194
293
|
#それがその要素での移動量となる。
|
@@ -250,7 +349,7 @@ module Miyako
|
|
250
349
|
self.sprite_only.each{|sprite| sprite.start }
|
251
350
|
return self
|
252
351
|
end
|
253
|
-
|
352
|
+
|
254
353
|
#===描く画像のアニメーションを停止する
|
255
354
|
#各要素のstopメソッドを呼び出す
|
256
355
|
#返却値:: 自分自身を返す
|
@@ -258,7 +357,7 @@ module Miyako
|
|
258
357
|
self.sprite_only.each{|sprite| sprite.stop }
|
259
358
|
return self
|
260
359
|
end
|
261
|
-
|
360
|
+
|
262
361
|
#===描く画像のアニメーションを先頭パターンに戻す
|
263
362
|
#各要素のresetメソッドを呼び出す
|
264
363
|
#返却値:: 自分自身を返す
|
@@ -266,7 +365,7 @@ module Miyako
|
|
266
365
|
self.sprite_only.each{|sprite| sprite.reset }
|
267
366
|
return self
|
268
367
|
end
|
269
|
-
|
368
|
+
|
270
369
|
#===描く画像のアニメーションを更新する
|
271
370
|
#各要素のupdate_animationメソッドを呼び出す
|
272
371
|
#返却値:: 描く画像のupdate_spriteメソッドを呼び出した結果を配列で返す
|
@@ -275,7 +374,7 @@ module Miyako
|
|
275
374
|
e.update_animation
|
276
375
|
}
|
277
376
|
end
|
278
|
-
|
377
|
+
|
279
378
|
#===指定した要素の内容を入れ替える
|
280
379
|
#配列の先頭から順にrenderメソッドを呼び出す。
|
281
380
|
#描画するインスタンスは、引数がゼロのrenderメソッドを持っているもののみ(持っていないときは呼び出さない)
|
@@ -288,7 +387,7 @@ module Miyako
|
|
288
387
|
self[idx1], self[idx2] = self[idx2], self[idx1]
|
289
388
|
return self
|
290
389
|
end
|
291
|
-
|
390
|
+
|
292
391
|
#===配列の要素を画面に描画する
|
293
392
|
#配列の先頭から順にrenderメソッドを呼び出す。
|
294
393
|
#描画するインスタンスは、SpriteBaseモジュールがmixinされているクラスのみ
|
@@ -297,7 +396,7 @@ module Miyako
|
|
297
396
|
self.sprite_only.each{|e| e.render }
|
298
397
|
return self
|
299
398
|
end
|
300
|
-
|
399
|
+
|
301
400
|
#===配列の要素を対象の画像に描画する
|
302
401
|
#配列の先頭から順にrender_toメソッドを呼び出す。
|
303
402
|
#_dst_:: 描画対象の画像インスタンス
|
@@ -307,7 +406,7 @@ module Miyako
|
|
307
406
|
return self
|
308
407
|
end
|
309
408
|
end
|
310
|
-
|
409
|
+
|
311
410
|
#==ディープコピーを実装するモジュール
|
312
411
|
#dup、cloneとは違い、「ディープコピー(配列などの要素も複製するコピー)」を実装するためのモジュール。
|
313
412
|
module DeepCopy
|
data/lib/Miyako/API/movie.rb
CHANGED
@@ -32,7 +32,7 @@ module Miyako
|
|
32
32
|
@@movie_list = []
|
33
33
|
|
34
34
|
attr_accessor :visible #レンダリングの可否(true->描画 false->非描画)
|
35
|
-
|
35
|
+
|
36
36
|
#===動画のインスタンスを作成する
|
37
37
|
#(但し、現在の所、loopパラメータは利用できない)
|
38
38
|
#_fname_:: 動画ファイル名
|
@@ -43,7 +43,7 @@ module Miyako
|
|
43
43
|
|
44
44
|
@x = 0
|
45
45
|
@y = 0
|
46
|
-
|
46
|
+
|
47
47
|
raise MiyakoIOError.no_file(fname) unless File.exist?(fname)
|
48
48
|
@movie = SDL::MPEG.load(fname)
|
49
49
|
@size = Size.new(@movie.info.width, @movie.info.height)
|
@@ -52,11 +52,11 @@ module Miyako
|
|
52
52
|
@visible = true
|
53
53
|
@sprite = Sprite.new({:size=>@size , :type=>:movie})
|
54
54
|
@sprite.snap(self)
|
55
|
-
|
55
|
+
|
56
56
|
@movie.enable_audio(true) unless $not_use_audio
|
57
57
|
@movie.enable_video(true)
|
58
58
|
@movie.set_loop(loops)
|
59
|
-
|
59
|
+
|
60
60
|
@movie.set_display(@sprite.bitmap)
|
61
61
|
@movie.scale(1.0)
|
62
62
|
@@movie_list.push(self)
|
@@ -67,13 +67,13 @@ module Miyako
|
|
67
67
|
@y = @layout.pos[1]
|
68
68
|
@sprite.move_to!(*@layout.pos)
|
69
69
|
end
|
70
|
-
|
70
|
+
|
71
71
|
def initialize_copy(obj) #:nodoc:
|
72
72
|
@sprite = @sprite.dup
|
73
73
|
@size = @size.dup
|
74
74
|
copy_layout
|
75
75
|
end
|
76
|
-
|
76
|
+
|
77
77
|
#===動画再生時の音量を指定する
|
78
78
|
#_v_:: 指定する音量。(0~100までの整数)
|
79
79
|
def set_volume(v)
|
@@ -150,11 +150,11 @@ module Miyako
|
|
150
150
|
#visibleメソッドの値がfalseのときは描画されない。
|
151
151
|
#返却値:: 自分自身を返す
|
152
152
|
def render
|
153
|
-
return
|
153
|
+
return self unless @visible
|
154
154
|
@sprite.render
|
155
155
|
return self
|
156
156
|
end
|
157
|
-
|
157
|
+
|
158
158
|
#===一時停止中の動画の再生を再開する
|
159
159
|
#Miyako::Movie#pause メソッドを実行した後に呼び出す
|
160
160
|
def_delegators(:@movie, :rewind)
|
data/lib/Miyako/API/parts.rb
CHANGED
@@ -34,9 +34,8 @@ module Miyako
|
|
34
34
|
class Parts < Delegator
|
35
35
|
include SpriteBase
|
36
36
|
include Animation
|
37
|
-
include Enumerable
|
38
37
|
include Layout
|
39
|
-
|
38
|
+
include Enumerable
|
40
39
|
|
41
40
|
#===Partsクラスインスタンスを生成
|
42
41
|
#_size_:: パーツ全体の大きさ。Size構造体のインスタンスもしくは要素数が2の配列
|
@@ -53,7 +52,7 @@ module Miyako
|
|
53
52
|
|
54
53
|
def __setobj__(obj)
|
55
54
|
end
|
56
|
-
|
55
|
+
|
57
56
|
def initialize_copy(obj) #:nodoc:
|
58
57
|
copy_layout
|
59
58
|
@list = SpriteList.new
|
@@ -63,7 +62,7 @@ module Miyako
|
|
63
62
|
}
|
64
63
|
self
|
65
64
|
end
|
66
|
-
|
65
|
+
|
67
66
|
#===補助パーツvalueをnameに割り当てる
|
68
67
|
#_name_:: 補助パーツに与える名前(シンボル)
|
69
68
|
#_value_:: 補助パーツのインスタンス(スプライト、テキストボックス、アニメーション、レイアウトボックスなど)
|
@@ -168,21 +167,65 @@ module Miyako
|
|
168
167
|
def dispose
|
169
168
|
@list.dispose
|
170
169
|
end
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
170
|
+
|
171
|
+
def render
|
172
|
+
@list.render
|
173
|
+
end
|
174
|
+
|
175
|
+
def render_to(dst)
|
176
|
+
@list.render_to(dst)
|
177
|
+
end
|
178
|
+
|
179
|
+
def visible
|
180
|
+
@list.visible
|
181
|
+
end
|
182
|
+
|
183
|
+
def visible=(f)
|
184
|
+
@list.visible=f
|
185
|
+
end
|
186
|
+
|
187
|
+
def show
|
188
|
+
@list.show
|
189
|
+
end
|
190
|
+
|
191
|
+
def hide
|
192
|
+
@list.hide
|
193
|
+
end
|
194
|
+
|
195
|
+
def start
|
196
|
+
@list.start
|
197
|
+
end
|
198
|
+
|
199
|
+
def stop
|
200
|
+
@list.stop
|
201
|
+
end
|
202
|
+
|
203
|
+
def reset
|
204
|
+
@list.reset
|
205
|
+
end
|
206
|
+
|
207
|
+
def update_animation
|
208
|
+
@list.update_animation
|
209
|
+
end
|
210
|
+
|
211
|
+
def each
|
212
|
+
@list.each
|
213
|
+
end
|
214
|
+
|
215
|
+
def move!(dx, dy, &block)
|
216
|
+
@list.move!(dx, dy, &block)
|
217
|
+
end
|
218
|
+
|
219
|
+
def move_to!(x, y, &block)
|
220
|
+
@list.move_to!(x, y, &block)
|
221
|
+
end
|
222
|
+
|
223
|
+
def part_move!(dx, dy)
|
224
|
+
@list.part_move!(dx, dy)
|
225
|
+
end
|
226
|
+
|
227
|
+
def part_move_to!(x, y)
|
228
|
+
@list.part_move_to!(x, y)
|
229
|
+
end
|
187
230
|
end
|
188
231
|
end
|
data/lib/Miyako/API/plane.rb
CHANGED
@@ -49,7 +49,7 @@ module Miyako
|
|
49
49
|
@pos = Point.new(0, 0)
|
50
50
|
@visible = true
|
51
51
|
end
|
52
|
-
|
52
|
+
|
53
53
|
def initialize_copy(obj) #:nodoc:
|
54
54
|
@sprite = @sprite.dup
|
55
55
|
@pos = @pos.dup
|
@@ -137,7 +137,7 @@ module Miyako
|
|
137
137
|
def dispose
|
138
138
|
@sprite.dispose
|
139
139
|
end
|
140
|
-
|
140
|
+
|
141
141
|
#===画面に描画を指示する
|
142
142
|
#現在表示できるプレーンを、現在の状態で描画するよう指示する
|
143
143
|
#--
|
@@ -148,13 +148,13 @@ module Miyako
|
|
148
148
|
@size.h.times{|y|
|
149
149
|
@size.w.times{|x|
|
150
150
|
u = @sprite.to_unit
|
151
|
-
u.move_to(x * @sprite.ow + @pos.x, y * @sprite.oh + @pos.y)
|
151
|
+
u.move_to!(x * @sprite.ow + @pos.x, y * @sprite.oh + @pos.y)
|
152
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
153
|
}
|
154
154
|
}
|
155
155
|
return self
|
156
156
|
end
|
157
|
-
|
157
|
+
|
158
158
|
#===描画の素になるスプライトのアニメーションを更新する
|
159
159
|
#返却値:: 更新した結果、パターンが変わった・アニメーションが終了したときはtrue、それ以外はfalseを返す
|
160
160
|
def update_animation
|
data/lib/Miyako/API/screen.rb
CHANGED
@@ -39,7 +39,7 @@ module Miyako
|
|
39
39
|
#フルスクリーンモードを示す値
|
40
40
|
FULLSCREEN_MODE = 1
|
41
41
|
#ウインドウモード・フルスクリーンモードを切り替える際のフラグを示す配列
|
42
|
-
ScreenFlag = $miyako_use_opengl ? [SDL::OPENGL, SDL::OPENGL | SDL::FULLSCREEN] : [SDL::HWSURFACE | SDL::DOUBLEBUF | SDL::ANYFORMAT, SDL::ANYFORMAT | SDL::FULLSCREEN]
|
42
|
+
ScreenFlag = $miyako_use_opengl ? [SDL::OPENGL, SDL::OPENGL | SDL::FULLSCREEN] : [SDL::HWSURFACE | SDL::DOUBLEBUF | SDL::ANYFORMAT, SDL::HWSURFACE | SDL::DOUBLEBUF | SDL::ANYFORMAT | SDL::FULLSCREEN]
|
43
43
|
|
44
44
|
def Screen::get_fps_count
|
45
45
|
return @@fps == 0 ? 0 : FpsMax / @@fps
|
@@ -55,16 +55,17 @@ module Miyako
|
|
55
55
|
@@min_interval_r = @@min_interval / 1000
|
56
56
|
@@t = 0
|
57
57
|
@@freezing = false
|
58
|
-
@@mode =
|
58
|
+
@@mode = FULLSCREEN_MODE
|
59
59
|
@@unit = SpriteUnitFactory.create
|
60
|
+
@@pos = Size.new(0,0)
|
60
61
|
|
61
62
|
@@size = Size.new(DefaultWidth, DefaultHeight)
|
62
63
|
@@in_the_scene = false
|
63
64
|
@@screen = nil
|
64
65
|
@@viewport = nil
|
65
|
-
|
66
|
-
@@pre_render_array =
|
67
|
-
@@auto_render_array =
|
66
|
+
|
67
|
+
@@pre_render_array = SpriteList.new
|
68
|
+
@@auto_render_array = SpriteList.new
|
68
69
|
|
69
70
|
#===画面関連の初期化処理
|
70
71
|
#呼び出し時に、別プロセスで生成したSDL::Screenクラスインスタンスを引数として渡すと、
|
@@ -96,7 +97,7 @@ module Miyako
|
|
96
97
|
def Screen.initialized?
|
97
98
|
@@initialized
|
98
99
|
end
|
99
|
-
|
100
|
+
|
100
101
|
#===画面の状態(ウインドウモードとフルスクリーンモード)を設定する
|
101
102
|
#_v_:: ウィンドウモードのときは、Screen::WINDOW_MODE、 フルスクリーンモードのときはScreen::FULLSCREEN_MODE
|
102
103
|
def Screen::set_mode(v)
|
@@ -168,6 +169,13 @@ module Miyako
|
|
168
169
|
return @@size[1]
|
169
170
|
end
|
170
171
|
|
172
|
+
#===画面の左上位置を取得する
|
173
|
+
#位置は必ず[0,0]を返す
|
174
|
+
#返却値:: Size構造体
|
175
|
+
def Screen::pos
|
176
|
+
return @@pos.dup
|
177
|
+
end
|
178
|
+
|
171
179
|
#===画面を管理するSpriteUnitを取得する
|
172
180
|
#新しいSpriteUnitを作成して返す
|
173
181
|
#返却値:: SpriteUnitインスタンス
|
@@ -305,12 +313,12 @@ module Miyako
|
|
305
313
|
return unless @@screen
|
306
314
|
@@screen.fillRect(0, 0, @@screen.w, @@screen.h, [0, 0, 0, 0])
|
307
315
|
end
|
308
|
-
|
316
|
+
|
309
317
|
#===プリレンダー配列に登録されたインスタンスを画面に描画する
|
310
318
|
#Screen.pre_render_arrayに登録したインスタンスを描画する
|
311
319
|
def Screen::pre_render
|
312
320
|
end
|
313
|
-
|
321
|
+
|
314
322
|
#===画面を更新する
|
315
323
|
#描画した画面を、実際にミニ見える形に反映させる
|
316
324
|
#呼び出し時に画面の消去は行われないため、消去が必要なときは明示的にScreen.clearメソッドを呼び出す必要がある
|