ruby-miyako 2.1.2 → 2.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README +84 -3
- data/lib/Miyako/API/i_yuki.rb +274 -16
- data/lib/Miyako/API/textbox.rb +1 -1
- data/lib/Miyako/API/yuki.rb +274 -16
- data/lib/Miyako/EXT/slides.rb +119 -10
- data/lib/Miyako/miyako.rb +2 -2
- data/sample/Room3/blue.rb +15 -13
- data/sample/Room3/ending.rb +8 -9
- data/sample/Room3/green.rb +16 -13
- data/sample/Room3/main.rb +15 -14
- data/sample/Room3/main_component.rb +1 -0
- data/sample/Room3/red.rb +16 -14
- data/sample/Room3/title.rb +6 -6
- data/win/miyako_no_katana.so +0 -0
- metadata +2 -2
data/lib/Miyako/API/textbox.rb
CHANGED
data/lib/Miyako/API/yuki.rb
CHANGED
@@ -89,7 +89,7 @@ module Miyako
|
|
89
89
|
|
90
90
|
attr_accessor :visible
|
91
91
|
attr_accessor :update_inner, :update_text, :update_cr, :update_clear
|
92
|
-
attr_reader :valign, :visibles
|
92
|
+
attr_reader :valign, :visibles, :pre_visibles, :bgs
|
93
93
|
#release_checks:: ポーズ解除を問い合わせるブロックの配列。
|
94
94
|
#callメソッドを持ち、true/falseを返すインスタンスを配列操作で追加・削除できる。
|
95
95
|
#ok_checks:: コマンド選択決定を問い合わせるブロックの配列。
|
@@ -148,6 +148,8 @@ module Miyako
|
|
148
148
|
@over_exec = false
|
149
149
|
@text_box = nil
|
150
150
|
@command_box = nil
|
151
|
+
@text_box_all = nil
|
152
|
+
@command_box_all = nil
|
151
153
|
|
152
154
|
@executing = false
|
153
155
|
|
@@ -163,6 +165,8 @@ module Miyako
|
|
163
165
|
@select_amount = [0, 0]
|
164
166
|
@mouse_amount = nil
|
165
167
|
|
168
|
+
@mouse_enable = true
|
169
|
+
|
166
170
|
@result = nil
|
167
171
|
@plot_result = nil
|
168
172
|
|
@@ -173,6 +177,8 @@ module Miyako
|
|
173
177
|
|
174
178
|
@parts = {}
|
175
179
|
@visibles = SpriteList.new
|
180
|
+
@pre_visibles = SpriteList.new
|
181
|
+
@bgs = SpriteList.new
|
176
182
|
@vars = {}
|
177
183
|
@visible = true
|
178
184
|
|
@@ -184,15 +190,15 @@ module Miyako
|
|
184
190
|
|
185
191
|
@valign = :middle
|
186
192
|
|
187
|
-
@release_checks_default = [lambda{ Input.pushed_any?(:btn1, :spc) }, lambda{ Input.click?(:left) } ]
|
193
|
+
@release_checks_default = [lambda{ Input.pushed_any?(:btn1, :spc) }, lambda{ @mouse_enable && Input.click?(:left) } ]
|
188
194
|
@release_checks = @release_checks_default.dup
|
189
195
|
|
190
196
|
@ok_checks_default = [lambda{ Input.pushed_any?(:btn1, :spc) },
|
191
|
-
|
197
|
+
lambda{ @mouse_enable && self.commandbox.attach_any_command?(*Input.get_mouse_position) && Input.click?(:left) } ]
|
192
198
|
@ok_checks = @ok_checks_default.dup
|
193
199
|
|
194
200
|
@cancel_checks_default = [lambda{ Input.pushed_any?(:btn2, :esc) },
|
195
|
-
lambda{ Input.click?(:right) } ]
|
201
|
+
lambda{ @mouse_enable && Input.click?(:right) } ]
|
196
202
|
@cancel_checks = @cancel_checks_default.dup
|
197
203
|
|
198
204
|
@key_amount_proc = lambda{ Input.pushed_amount }
|
@@ -220,6 +226,33 @@ module Miyako
|
|
220
226
|
raise MiyakoCopyError.not_copy("Yuki")
|
221
227
|
end
|
222
228
|
|
229
|
+
#===マウスでの制御を可能にする
|
230
|
+
#ゲームパッド・キーボードでのコマンド・ポーズ制御を行えるが、
|
231
|
+
#それに加えて、マウスでもゲームパッド・キーボードでの制御が行える
|
232
|
+
#Yukiクラスインスタンス生成時はマウス利用可能
|
233
|
+
#返却値:: 自分自身を返す
|
234
|
+
def enable_mouse
|
235
|
+
@mouse_enable = true
|
236
|
+
return self
|
237
|
+
end
|
238
|
+
|
239
|
+
#===マウスでの制御を不可にする
|
240
|
+
#ゲームパッド・キーボードでのコマンド・ポーズ制御を行えるが、
|
241
|
+
#マウスでの利用を制限する
|
242
|
+
#Yukiクラスインスタンス生成時はマウス利用可能
|
243
|
+
#返却値:: 自分自身を返す
|
244
|
+
def disable_mouse
|
245
|
+
@mouse_enable = false
|
246
|
+
return self
|
247
|
+
end
|
248
|
+
|
249
|
+
#===マウスでの制御を可・不可を問い合わせる
|
250
|
+
#マウスを利用できるときはtrue、利用できないときはfalseを返す
|
251
|
+
#返却値:: true/false
|
252
|
+
def mouse_enable?
|
253
|
+
@mouse_enable
|
254
|
+
end
|
255
|
+
|
223
256
|
#===Yuki#showで表示指定した画像を描画する
|
224
257
|
#描画順は、showメソッドで指定した順に描画される(先に指定した画像は後ろに表示される)
|
225
258
|
#なお、visibleの値がfalseの時は描画されない。
|
@@ -314,10 +347,34 @@ module Miyako
|
|
314
347
|
#(例):[:a, :b, :c]の順に並んでいたら、:cが指すインスタンスが一番前に描画される。
|
315
348
|
#
|
316
349
|
#返却値:: 描画対象リスト
|
317
|
-
def
|
350
|
+
def visibles_names
|
318
351
|
@visibles.names
|
319
352
|
end
|
320
353
|
|
354
|
+
#===現在描画対象のパーツ名のリストを取得する
|
355
|
+
#[[Yukiスクリプトとして利用可能]]
|
356
|
+
#現在描画しているパーツ名の配列を参照する。
|
357
|
+
#実体のインスタンスは、partsメソッドで参照できるハッシュの値として格納されている。
|
358
|
+
#Yuki#renderで描画する際、配列の先頭から順に、要素に対応するインスタンスを描画する(つまり、配列の後ろにある方が前に描画される
|
359
|
+
#(例):[:a, :b, :c]の順に並んでいたら、:cが指すインスタンスが一番前に描画される。
|
360
|
+
#
|
361
|
+
#返却値:: 描画対象リスト
|
362
|
+
def pre_visibles_names
|
363
|
+
@pre_visibles.names
|
364
|
+
end
|
365
|
+
|
366
|
+
#===現在描画対象のパーツ名のリストを取得する
|
367
|
+
#[[Yukiスクリプトとして利用可能]]
|
368
|
+
#現在描画しているパーツ名の配列を参照する。
|
369
|
+
#実体のインスタンスは、partsメソッドで参照できるハッシュの値として格納されている。
|
370
|
+
#Yuki#renderで描画する際、配列の先頭から順に、要素に対応するインスタンスを描画する(つまり、配列の後ろにある方が前に描画される
|
371
|
+
#(例):[:a, :b, :c]の順に並んでいたら、:cが指すインスタンスが一番前に描画される。
|
372
|
+
#
|
373
|
+
#返却値:: 描画対象リスト
|
374
|
+
def bgs_names
|
375
|
+
@bgs.names
|
376
|
+
end
|
377
|
+
|
321
378
|
#===オブジェクトを登録する
|
322
379
|
#[[Yukiスクリプトとして利用可能]]
|
323
380
|
#オブジェクトをパーツnameとして登録する。
|
@@ -332,29 +389,45 @@ module Miyako
|
|
332
389
|
end
|
333
390
|
|
334
391
|
#===表示・描画対象のテキストボックスを選択する
|
392
|
+
#第2引数として、テキストボックス全体を渡せる(省略可能)
|
393
|
+
#第1引数が、PartsやSpriteListの1部分のときに、第2引数を渡すことで、
|
394
|
+
#テキストボックス全体を制御可能
|
395
|
+
#第2引数を省略時は、全バージョンに引き続いて、テキストボックス本体のみを制御する
|
335
396
|
#[[Yukiスクリプトとして利用可能]]
|
336
|
-
#_box_::
|
397
|
+
#_box_:: テキストボックス本体
|
398
|
+
#_box_all_:: テキストボックス全体
|
337
399
|
#
|
338
400
|
#返却値:: 自分自身を返す
|
339
|
-
def select_textbox(box)
|
401
|
+
def select_textbox(box, box_all = nil)
|
340
402
|
@text_box = box
|
403
|
+
@text_box_all = box_all || box
|
404
|
+
unless @command_box
|
405
|
+
@command_box = @text_box
|
406
|
+
@command_box_all = @text_box_all
|
407
|
+
end
|
341
408
|
return self
|
342
409
|
end
|
343
410
|
|
344
411
|
#===表示・描画対象のコマンドボックスを選択する
|
412
|
+
#第2引数として、テキストボックス全体を渡せる(省略可能)
|
413
|
+
#第1引数が、PartsやSpriteListの1部分のときに、第2引数を渡すことで、
|
414
|
+
#テキストボックス全体を制御可能
|
415
|
+
#第2引数を省略時は、全バージョンに引き続いて、テキストボックス本体のみを制御する
|
345
416
|
#[[Yukiスクリプトとして利用可能]]
|
346
|
-
#_box_::
|
417
|
+
#_box_:: テキストボックス本体
|
418
|
+
#_box_all_:: テキストボックス全体
|
347
419
|
#
|
348
420
|
#返却値:: 自分自身を返す
|
349
|
-
def select_commandbox(box)
|
421
|
+
def select_commandbox(box, box_all = nil)
|
350
422
|
@command_box = box
|
423
|
+
@command_box_all = box_all || box
|
351
424
|
return self
|
352
425
|
end
|
353
426
|
|
354
427
|
#===テキストボックスを取得する
|
355
428
|
#[[Yukiスクリプトとして利用可能]]
|
356
429
|
#テキストボックスが登録されていないときはnilを返す
|
357
|
-
#返却値::
|
430
|
+
#返却値:: テキストボックス
|
358
431
|
def textbox
|
359
432
|
return @text_box
|
360
433
|
end
|
@@ -362,11 +435,68 @@ module Miyako
|
|
362
435
|
#===コマンドボックスを取得する
|
363
436
|
#[[Yukiスクリプトとして利用可能]]
|
364
437
|
#コマンドボックスが登録されていないときはnilを返す
|
365
|
-
#返却値::
|
438
|
+
#返却値:: コマンドボックス
|
366
439
|
def commandbox
|
367
440
|
return @command_box
|
368
441
|
end
|
369
442
|
|
443
|
+
#===テキストボックス全体を取得する
|
444
|
+
#[[Yukiスクリプトとして利用可能]]
|
445
|
+
#テキストボックスが登録されていないときはnilを返す
|
446
|
+
#返却値:: テキストボックス全体
|
447
|
+
def textbox_all
|
448
|
+
return @text_box_all
|
449
|
+
end
|
450
|
+
|
451
|
+
#===コマンドボックス全体を取得する
|
452
|
+
#[[Yukiスクリプトとして利用可能]]
|
453
|
+
#コマンドボックスが登録されていないときはnilを返す
|
454
|
+
#返却値:: コマンドボックス全体
|
455
|
+
def commandbox_all
|
456
|
+
return @command_box_all
|
457
|
+
end
|
458
|
+
|
459
|
+
#===テキストボックスを描画可能にする
|
460
|
+
#[[Yukiスクリプトとして利用可能]]
|
461
|
+
#返却値:: レシーバ
|
462
|
+
def show_textbox
|
463
|
+
@text_box_all.show
|
464
|
+
return self
|
465
|
+
end
|
466
|
+
|
467
|
+
#===コマンドボックスを描画可能にする
|
468
|
+
#[[Yukiスクリプトとして利用可能]]
|
469
|
+
#返却値:: レシーバ
|
470
|
+
def show_commandbox
|
471
|
+
@command_box_all.show
|
472
|
+
return self
|
473
|
+
end
|
474
|
+
|
475
|
+
#===テキストボックスを描画不可能にする
|
476
|
+
#[[Yukiスクリプトとして利用可能]]
|
477
|
+
#返却値:: レシーバ
|
478
|
+
def hide_textbox
|
479
|
+
@text_box_all.hide
|
480
|
+
return self
|
481
|
+
end
|
482
|
+
|
483
|
+
#===コマンドボックスを描画不可能にする
|
484
|
+
#[[Yukiスクリプトとして利用可能]]
|
485
|
+
#返却値:: レシーバ
|
486
|
+
def hide_commandbox
|
487
|
+
@command_box_all.hide
|
488
|
+
return self
|
489
|
+
end
|
490
|
+
|
491
|
+
#===コマンドボックスとテキストボックスを共用しているか問い合わせる
|
492
|
+
#[[Yukiスクリプトとして利用可能]]
|
493
|
+
#テキストボックスとコマンドボックスを共用しているときはtrueを返す
|
494
|
+
#共用していなければfalseを返す
|
495
|
+
#返却値:: true/false
|
496
|
+
def box_shared?
|
497
|
+
@text_box_all.object_id == @command_box_all.object_id
|
498
|
+
end
|
499
|
+
|
370
500
|
#===オブジェクトの登録を解除する
|
371
501
|
#[[Yukiスクリプトとして利用可能]]
|
372
502
|
#パーツnameとして登録されているオブジェクトを登録から解除する。
|
@@ -385,9 +515,13 @@ module Miyako
|
|
385
515
|
#_names_:: パーツ名(シンボル)、複数指定可能(指定した順番に描画される)
|
386
516
|
#返却値:: 自分自身を返す
|
387
517
|
def show(*names)
|
518
|
+
if names.length == 0
|
519
|
+
@visibles.each_value{|sprite| sprite.show}
|
520
|
+
return self
|
521
|
+
end
|
388
522
|
names.each{|name|
|
389
|
-
@visibles.add(name, @parts[name])
|
390
|
-
@
|
523
|
+
@visibles.add(name, @parts[name]) unless @visibles.include?(name)
|
524
|
+
@visibles[name].show
|
391
525
|
}
|
392
526
|
return self
|
393
527
|
end
|
@@ -398,13 +532,134 @@ module Miyako
|
|
398
532
|
#_names_:: パーツ名(シンボル)、複数指定可能
|
399
533
|
#返却値:: 自分自身を返す
|
400
534
|
def hide(*names)
|
535
|
+
if names.length == 0
|
536
|
+
@visibles.each_value{|sprite| sprite.hide}
|
537
|
+
return self
|
538
|
+
end
|
539
|
+
names.each{|name| @visibles[name].hide }
|
540
|
+
return self
|
541
|
+
end
|
542
|
+
|
543
|
+
#===パーツで指定したオブジェクトを先頭に表示する
|
544
|
+
#[[Yukiスクリプトとして利用可能]]
|
545
|
+
#描画時に、指定したパーツを描画する
|
546
|
+
#すでにshowメソッドで表示指定している場合は、先頭に表示させる
|
547
|
+
#_names_:: パーツ名(シンボル)、複数指定可能(指定した順番に描画される)
|
548
|
+
#返却値:: 自分自身を返す
|
549
|
+
def pre_show(*names)
|
550
|
+
if names.length == 0
|
551
|
+
@pre_visibles.each_value{|sprite| sprite.show}
|
552
|
+
return self
|
553
|
+
end
|
554
|
+
names.each{|name|
|
555
|
+
@pre_visibles.add(name, @parts[name]) unless @pre_visibles.include?(name)
|
556
|
+
@pre_visibles[name].show
|
557
|
+
}
|
558
|
+
return self
|
559
|
+
end
|
560
|
+
|
561
|
+
#===パーツで指定したオブジェクトを隠蔽する
|
562
|
+
#[[Yukiスクリプトとして利用可能]]
|
563
|
+
#描画時に、指定したパーツを描画させないよう指定する
|
564
|
+
#_names_:: パーツ名(シンボル)、複数指定可能
|
565
|
+
#返却値:: 自分自身を返す
|
566
|
+
def pre_hide(*names)
|
567
|
+
if names.length == 0
|
568
|
+
@pre_visibles.each_value{|sprite| sprite.hide}
|
569
|
+
return self
|
570
|
+
end
|
571
|
+
names.each{|name| @pre_visibles[name].hide }
|
572
|
+
return self
|
573
|
+
end
|
574
|
+
|
575
|
+
#===パーツで指定した背景を表示する
|
576
|
+
#[[Yukiスクリプトとして利用可能]]
|
577
|
+
#描画時に、指定したパーツを描画する
|
578
|
+
#すでにshowメソッドで表示指定している場合は、先頭に表示させる
|
579
|
+
#_names_:: パーツ名(シンボル)、複数指定可能(指定した順番に描画される)
|
580
|
+
#返却値:: 自分自身を返す
|
581
|
+
def bg_show(*names)
|
582
|
+
if names.length == 0
|
583
|
+
@bgs.each_value{|sprite| sprite.show}
|
584
|
+
return self
|
585
|
+
end
|
401
586
|
names.each{|name|
|
402
|
-
@parts[name].
|
403
|
-
@
|
587
|
+
@bgs.add(name, @parts[name]) unless @bgs.include?(name)
|
588
|
+
@bgs[name].show
|
404
589
|
}
|
405
590
|
return self
|
406
591
|
end
|
407
592
|
|
593
|
+
#===パーツで指定した背景を隠蔽する
|
594
|
+
#[[Yukiスクリプトとして利用可能]]
|
595
|
+
#描画時に、指定したパーツを描画させないよう指定する
|
596
|
+
#_names_:: パーツ名(シンボル)、複数指定可能
|
597
|
+
#返却値:: 自分自身を返す
|
598
|
+
def bg_hide(*names)
|
599
|
+
if names.length == 0
|
600
|
+
@bgs.each_value{|sprite| sprite.hide}
|
601
|
+
return self
|
602
|
+
end
|
603
|
+
names.each{|name| @bgs[name].hide }
|
604
|
+
return self
|
605
|
+
end
|
606
|
+
|
607
|
+
#===ファイル名で指定したスプライトを登録する
|
608
|
+
#[[Yukiスクリプトとして利用可能]]
|
609
|
+
#画面に表示するスプライトを登録する
|
610
|
+
#すでにshowメソッドで表示指定している場合は、先頭に表示させる
|
611
|
+
#_name_:: スプライト名(重複するときは上書き)
|
612
|
+
#_filename_:: 読み込むファイル名
|
613
|
+
#_pre_:: pre_visiblesに登録するときはtrue、visiblesに登録するときはfalseを渡す
|
614
|
+
# 省略時はfalse
|
615
|
+
#返却値:: 自分自身を返す
|
616
|
+
def load_sprite(name, filename, pre=false)
|
617
|
+
spr = Sprite.new(:file=>filename, :type=>:ac)
|
618
|
+
@parts[name] = spr
|
619
|
+
@parts[name].hide
|
620
|
+
pre ? @pre_visibles.add(name, @parts[name]) : @visibles.add(name, @parts[name])
|
621
|
+
return self
|
622
|
+
end
|
623
|
+
|
624
|
+
#===背景を登録する
|
625
|
+
#[[Yukiスクリプトとして利用可能]]
|
626
|
+
#画面に表示する背景を登録する
|
627
|
+
#すでにshowメソッドで表示指定している場合は、先頭に表示させる
|
628
|
+
#_name_:: スプライト名(重複するときは上書き)
|
629
|
+
#_filename_:: 読み込むファイル名
|
630
|
+
#返却値:: 自分自身を返す
|
631
|
+
def load_bg(name, filename)
|
632
|
+
spr = Sprite.new(:file=>filename, :type=>:ac)
|
633
|
+
@parts[name] = spr
|
634
|
+
@parts[name].hide
|
635
|
+
@bgs.add(name, @parts[name])
|
636
|
+
return self
|
637
|
+
end
|
638
|
+
|
639
|
+
#===BGMを登録する
|
640
|
+
#[[Yukiスクリプトとして利用可能]]
|
641
|
+
#音声ファイルを読み込み、BGMとして登録する
|
642
|
+
#登録したBGMはpartsメソッドを使って参照できる
|
643
|
+
#_name_:: スプライト名(重複するときは上書き)
|
644
|
+
#_filename_:: 読み込むファイル名
|
645
|
+
#返却値:: 自分自身を返す
|
646
|
+
def load_bgm(name, filename)
|
647
|
+
@parts[name] = Audio::BGM.new(filename)
|
648
|
+
return self
|
649
|
+
end
|
650
|
+
|
651
|
+
#===効果音を登録する
|
652
|
+
#[[Yukiスクリプトとして利用可能]]
|
653
|
+
#音声ファイルを読み込み、効果音として登録する
|
654
|
+
#登録した効果音はpartsメソッドを使って参照できる
|
655
|
+
#_name_:: スプライト名(重複するときは上書き)
|
656
|
+
#_filename_:: 読み込むファイル名
|
657
|
+
#返却値:: 自分自身を返す
|
658
|
+
def load_se(name, filename)
|
659
|
+
@parts[name] = Audio::SE.new(filename)
|
660
|
+
return self
|
661
|
+
end
|
662
|
+
|
408
663
|
#===パーツで指定したオブジェクトの処理を開始する
|
409
664
|
#[[Yukiスクリプトとして利用可能]]
|
410
665
|
#nameで指定したパーツが持つ処理(例:アニメーション)を開始する。
|
@@ -1064,6 +1319,7 @@ module Miyako
|
|
1064
1319
|
@pre_command.each{|proc| proc.call}
|
1065
1320
|
@pre_cancel.each{|proc| proc.call}
|
1066
1321
|
yield if block_given?
|
1322
|
+
@command_box_all.show if @command_box_all.object_id != @text_box_all.object_id
|
1067
1323
|
@command_box.command(@command_box.create_choices_chain(choices, &chain_block))
|
1068
1324
|
@result = nil
|
1069
1325
|
@selecting = true
|
@@ -1086,12 +1342,14 @@ module Miyako
|
|
1086
1342
|
return @on_disable.each{|proc| proc.call} unless @command_box.enable_choice?
|
1087
1343
|
@result = @command_box.result
|
1088
1344
|
@command_box.finish_command
|
1345
|
+
@command_box_all.hide if @command_box_all.object_id != @text_box_all.object_id
|
1089
1346
|
@text_box.release
|
1090
1347
|
@selecting = false
|
1091
1348
|
reset_selecting
|
1092
1349
|
elsif @select_cancel
|
1093
1350
|
@result = @cancel
|
1094
1351
|
@command_box.finish_command
|
1352
|
+
@command_box_all.hide if @command_box_all.object_id != @text_box_all.object_id
|
1095
1353
|
@text_box.release
|
1096
1354
|
@selecting = false
|
1097
1355
|
reset_selecting
|
@@ -1099,7 +1357,7 @@ module Miyako
|
|
1099
1357
|
@command_box.move_cursor(*@select_amount)
|
1100
1358
|
reset_selecting
|
1101
1359
|
elsif @mouse_amount
|
1102
|
-
@command_box.attach_cursor(*@mouse_amount.to_a)
|
1360
|
+
@command_box.attach_cursor(*@mouse_amount.to_a) if @mouse_enable
|
1103
1361
|
reset_selecting
|
1104
1362
|
end
|
1105
1363
|
end
|
data/lib/Miyako/EXT/slides.rb
CHANGED
@@ -26,7 +26,6 @@ module Miyako
|
|
26
26
|
#ただし、インスタンス変数として、@bodyを予約済み
|
27
27
|
module Slide
|
28
28
|
include Layout
|
29
|
-
extend Forwardable
|
30
29
|
|
31
30
|
@@templates = { }
|
32
31
|
|
@@ -38,6 +37,8 @@ module Miyako
|
|
38
37
|
tmp[:size] ||= Size.new(640, 480)
|
39
38
|
tmp[:type] ||= :ac
|
40
39
|
tmp[:color] ||= Color[:white]
|
40
|
+
tmp[:empty] ||= false
|
41
|
+
return Parts.new(tmp[:size]) if tmp[:empty]
|
41
42
|
return Parts.new(tmp[:size]).tap{|obj| obj[:___base___] = Sprite.new(tmp).fill(tmp[:color])}
|
42
43
|
end
|
43
44
|
|
@@ -49,6 +50,8 @@ module Miyako
|
|
49
50
|
@@templates["black"] = {:color=>[0,0,0,255]}
|
50
51
|
@@templates["half-white"] = {:color=>[255,255,255,128]}
|
51
52
|
|
53
|
+
@@body = []
|
54
|
+
|
52
55
|
#===スライドをテンプレート文字列から作成する
|
53
56
|
#スライドを所定の名称で生成する。利用できるのは以下の7種類
|
54
57
|
#"320x240" 大きさは320x240ピクセル、背景は白色
|
@@ -74,15 +77,60 @@ module Miyako
|
|
74
77
|
@@templates[sym] = params
|
75
78
|
end
|
76
79
|
|
80
|
+
def initialize(obj)
|
81
|
+
__setobj(obj)
|
82
|
+
end
|
83
|
+
|
84
|
+
def clone
|
85
|
+
@@body[self.__id__].clone
|
86
|
+
end
|
87
|
+
|
88
|
+
def dup
|
89
|
+
@@body[self.__id__].dup
|
90
|
+
end
|
91
|
+
|
92
|
+
def __getobj__
|
93
|
+
@@body[self.__id__]
|
94
|
+
end
|
95
|
+
|
96
|
+
def marshal_dump
|
97
|
+
Marshal.dump(@@body[self.__id__])
|
98
|
+
end
|
99
|
+
|
100
|
+
def marshal_load(obj)
|
101
|
+
Marshal.load(obj)
|
102
|
+
end
|
103
|
+
|
104
|
+
def method_missing(m, *args, &block)
|
105
|
+
puts "missing: #{m}"
|
106
|
+
return @@body[self.__id__].__send__(m, *args, &block) if @@body[self.__id__].methods.include?(m)
|
107
|
+
@@body[self.__id__].method_missing(m, *args, &block)
|
108
|
+
end
|
109
|
+
|
110
|
+
def respond_to?(m)
|
111
|
+
@@body[self.__id__].respond_to?(m)
|
112
|
+
end
|
113
|
+
|
114
|
+
def __setobj__(obj)
|
115
|
+
@@body[self.__id__] = obj
|
116
|
+
end
|
117
|
+
|
77
118
|
#===スライド情報を初期化する
|
78
119
|
#(例)init_slide(Slide.create(:size=>Size.new(320,240), :color=>[255,0,0]))
|
79
120
|
#(例)init_slide(Slide["640x480"]))
|
80
121
|
#_template_:: 元となるPartsクラスインスタンス(Slide.createメソッドで作成もしくはSlide.[]で取得できるテンプレートスライド)
|
81
122
|
def init_slide(template)
|
82
123
|
init_layout
|
83
|
-
|
84
|
-
set_layout_size(*(
|
85
|
-
|
124
|
+
@@body[self.__id__] = template
|
125
|
+
set_layout_size(*(@@body[self.__id__].size))
|
126
|
+
@@body[self.__id__].snap(self)
|
127
|
+
end
|
128
|
+
|
129
|
+
#===スライド本体を返す
|
130
|
+
#スライド本体を直接制御するときに使う
|
131
|
+
#返却値:: スライド本体
|
132
|
+
def slide_body
|
133
|
+
@@body[self.__id__]
|
86
134
|
end
|
87
135
|
|
88
136
|
def piece
|
@@ -95,7 +143,7 @@ module Miyako
|
|
95
143
|
#_title_:: 取得したいパーツに対応したシンボル
|
96
144
|
#返却値:: シンボルに対応したパーツ
|
97
145
|
def [](title)
|
98
|
-
return
|
146
|
+
return @@body[self.__id__][title]
|
99
147
|
end
|
100
148
|
|
101
149
|
#===パーツに名前を割り付けて設定する
|
@@ -104,7 +152,7 @@ module Miyako
|
|
104
152
|
#(2)パーツと、スナップさせるパーツの名前(シンボル)
|
105
153
|
#返却値:: 自分自身を返す
|
106
154
|
def []=(title, objs)
|
107
|
-
|
155
|
+
@@body[self.__id__][title] = objs
|
108
156
|
return self
|
109
157
|
end
|
110
158
|
|
@@ -129,12 +177,40 @@ module Miyako
|
|
129
177
|
return slide_render_to(dst, &block)
|
130
178
|
end
|
131
179
|
|
180
|
+
def show
|
181
|
+
slide_show
|
182
|
+
end
|
183
|
+
|
184
|
+
def hide
|
185
|
+
slide_hide
|
186
|
+
end
|
187
|
+
|
188
|
+
def update
|
189
|
+
slide_update
|
190
|
+
end
|
191
|
+
|
192
|
+
def update_animation
|
193
|
+
slide_update_animation
|
194
|
+
end
|
195
|
+
|
196
|
+
def start
|
197
|
+
slide_start
|
198
|
+
end
|
199
|
+
|
200
|
+
def stop
|
201
|
+
slide_stop
|
202
|
+
end
|
203
|
+
|
204
|
+
def reset
|
205
|
+
slide_reset
|
206
|
+
end
|
207
|
+
|
132
208
|
#===スライドを画面に描画する
|
133
209
|
#ブロックを渡すと、スライド,画面側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る。
|
134
210
|
#ブロックの引数は、|スライド側SpriteUnit,画面側SpriteUnit|となる。
|
135
211
|
#返却値:: 自分自身を返す
|
136
212
|
def slide_render(&block)
|
137
|
-
|
213
|
+
@@body[self.__id__].render(&block) if @@body[self.__id__]
|
138
214
|
return self
|
139
215
|
end
|
140
216
|
|
@@ -144,14 +220,47 @@ module Miyako
|
|
144
220
|
#_dst_:: 描画先画像(Spriteクラスインスタンスなど)
|
145
221
|
#返却値:: 自分自身を返す
|
146
222
|
def slide_render_to(dst, &block)
|
147
|
-
|
223
|
+
@@body[self.__id__].render(dst, &block) if @@body[self.__id__]
|
224
|
+
return self
|
225
|
+
end
|
226
|
+
|
227
|
+
def slide_show
|
228
|
+
@@body[self.__id__].show if @@body[self.__id__]
|
229
|
+
return self
|
230
|
+
end
|
231
|
+
|
232
|
+
def slide_hide
|
233
|
+
@@body[self.__id__].hide if @@body[self.__id__]
|
234
|
+
return self
|
235
|
+
end
|
236
|
+
|
237
|
+
def slide_update
|
238
|
+
@@body[self.__id__].update if @@body[self.__id__]
|
239
|
+
return self
|
240
|
+
end
|
241
|
+
|
242
|
+
def slide_update_animation
|
243
|
+
@@body[self.__id__].update_animation if @@body[self.__id__]
|
244
|
+
return self
|
245
|
+
end
|
246
|
+
|
247
|
+
def slide_start
|
248
|
+
@@body[self.__id__].start if @@body[self.__id__]
|
249
|
+
return self
|
250
|
+
end
|
251
|
+
|
252
|
+
def slide_stop
|
253
|
+
@@body[self.__id__].stop if @@body[self.__id__]
|
254
|
+
return self
|
255
|
+
end
|
256
|
+
|
257
|
+
def slide_reset
|
258
|
+
@@body[self.__id__].reset if @@body[self.__id__]
|
148
259
|
return self
|
149
260
|
end
|
150
261
|
|
151
262
|
#===@bodyに登録したオブジェクトとは別に作成していたインスタンスを解放する
|
152
263
|
def dispose
|
153
264
|
end
|
154
|
-
|
155
|
-
def_delegators(:@body, :remove, :each, :start, :stop, :reset, :update, :update_animation)
|
156
265
|
end
|
157
266
|
end
|