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/yuki.rb
CHANGED
@@ -34,26 +34,30 @@ module Miyako
|
|
34
34
|
class Yuki
|
35
35
|
include SpriteBase
|
36
36
|
include Animation
|
37
|
-
|
37
|
+
|
38
38
|
#==キャンセルを示す構造体
|
39
39
|
#コマンド選択がキャンセルされたときに生成される構造体
|
40
40
|
Canceled = Struct.new(:dummy)
|
41
|
-
|
41
|
+
|
42
42
|
#==コマンド構造体
|
43
43
|
#_body_:: コマンドの名称(移動する、調べるなど、アイコンなどの画像も可)
|
44
44
|
#_body_selected_:: 選択時コマンドの名称(移動する、調べるなど、アイコンなどの画像も可)(省略時は、bodyと同一)
|
45
|
+
#_body_disable_:: 選択不可時コマンドの名称(移動する、調べるなど、アイコンなどの画像も可)(省略時は、bodyと同一)
|
46
|
+
#_enabe_:: コマンド選択の時はtrue、選択不可の時はfalseを設定
|
45
47
|
#_condition_:: 表示条件(ブロック)。評価の結果、trueのときのみ表示
|
46
48
|
#_result_:: 選択結果(移動先シーンクラス名、シナリオ(メソッド)名他のオブジェクト)
|
47
|
-
Command = Struct.new(:body, :body_selected, :condition, :result)
|
48
|
-
|
49
|
+
Command = Struct.new(:body, :body_selected, :body_disable, :enable, :condition, :result)
|
50
|
+
|
49
51
|
#==コマンド構造体
|
50
52
|
#_body_:: コマンドの名称(移動する、調べるなど、アイコンなどの画像も可)
|
51
53
|
#_body_selected_:: 選択時コマンドの名称(移動する、調べるなど、アイコンなどの画像も可)(省略時は、bodyと同一)
|
54
|
+
#_body_disable_:: 選択不可時コマンドの名称(移動する、調べるなど、アイコンなどの画像も可)(省略時は、bodyと同一)
|
55
|
+
#_enabe_:: コマンド選択の時はtrue、選択不可の時はfalseを設定
|
52
56
|
#_condition_:: 表示条件(ブロック)。評価の結果、trueのときのみ表示
|
53
57
|
#_result_:: 選択結果(移動先シーンクラス名、シナリオ(メソッド)名他のオブジェクト)
|
54
58
|
#_end_select_proc_:: この選択肢を選択したときに優先的に処理するブロック。
|
55
59
|
#ブロックは1つの引数を取る(コマンド選択テキストボックス))。デフォルトはnil
|
56
|
-
CommandEX = Struct.new(:body, :body_selected, :condition, :result, :end_select_proc)
|
60
|
+
CommandEX = Struct.new(:body, :body_selected, :condition, :body_disable, :enable, :result, :end_select_proc)
|
57
61
|
|
58
62
|
#===Yuki#update実行中に行わせる処理を実装するテンプレートメソッド
|
59
63
|
#但し、メソッド本体は、update_inner=メソッドで設定する必要がある
|
@@ -85,7 +89,7 @@ module Miyako
|
|
85
89
|
|
86
90
|
attr_accessor :visible
|
87
91
|
attr_accessor :update_inner, :update_text, :update_cr, :update_clear
|
88
|
-
attr_reader :valign
|
92
|
+
attr_reader :valign, :visibles
|
89
93
|
#release_checks:: ポーズ解除を問い合わせるブロックの配列。
|
90
94
|
#callメソッドを持ち、true/falseを返すインスタンスを配列操作で追加・削除できる。
|
91
95
|
#ok_checks:: コマンド選択決定を問い合わせるブロックの配列。
|
@@ -93,7 +97,7 @@ module Miyako
|
|
93
97
|
#cancel_checks:: コマンド選択解除(キャンセル)を問い合わせるブロックの配列。
|
94
98
|
#callメソッドを持ち、true/falseを返すインスタンスを配列操作で追加・削除できる。
|
95
99
|
attr_reader :release_checks, :ok_checks, :cancel_checks
|
96
|
-
attr_reader :pre_pause, :pre_command, :pre_cancel, :post_pause, :post_command, :post_cancel
|
100
|
+
attr_reader :pre_pause, :pre_command, :pre_cancel, :post_pause, :post_command, :post_cancel, :on_disable
|
97
101
|
#selecting_procs:: コマンド選択時に行うブロックの配列。
|
98
102
|
#ブロックは4つの引数を取る必要がある。
|
99
103
|
#(1)コマンド決定ボタンを押した?(true/false)
|
@@ -102,9 +106,10 @@ module Miyako
|
|
102
106
|
#(4)マウスの位置を示す配列([x,y])
|
103
107
|
#callメソッドを持つブロックが使用可能。
|
104
108
|
attr_reader :selecting_procs
|
105
|
-
|
106
|
-
#===Yukiにメソッドを追加する
|
109
|
+
|
110
|
+
#===Yukiにメソッドを追加する(すべてのYukiインスタンスに適応)
|
107
111
|
#ブロックを渡すことで、Yukiに新しいメソッドを追加できる。
|
112
|
+
#追加したメソッドは、すべてのYukiインスタンスで利用可能となる。
|
108
113
|
#コンテキストはYukiクラスのインスタンスとなるため、Yukiスクリプトと同じ感覚でメソッドを追加できる。
|
109
114
|
#ただし、すでに追加したメソッド(もしくはYukiクラスですでに追加されているメソッド)を追加しようとすると例外が発生する
|
110
115
|
#
|
@@ -117,6 +122,21 @@ module Miyako
|
|
117
122
|
return nil
|
118
123
|
end
|
119
124
|
|
125
|
+
#===Yukiにメソッドを追加する(指定のYukiインスタンスのみ適応)
|
126
|
+
#ブロックを渡すことで、Yukiに新しいメソッドを追加できる。
|
127
|
+
#追加したメソッドは、指定したYukiインスタンスのみ利用可能となる。
|
128
|
+
#コンテキストはYukiクラスのインスタンスとなるため、Yukiスクリプトと同じ感覚でメソッドを追加できる。
|
129
|
+
#ただし、すでに追加したメソッド(もしくはYukiクラスですでに追加されているメソッド)を追加しようとすると例外が発生する
|
130
|
+
#
|
131
|
+
#_name_:: ブロックに渡す引数リスト
|
132
|
+
#_block_:: メソッドとして実行させるブロック
|
133
|
+
def add_method(name, &block)
|
134
|
+
name = name.to_sym
|
135
|
+
raise MiyakoError, "Already added method! : #{name.to_s}" if self.methods.include?(name)
|
136
|
+
self.define_singleton_method(name, block)
|
137
|
+
return nil
|
138
|
+
end
|
139
|
+
|
120
140
|
#===Yukiを初期化する
|
121
141
|
#
|
122
142
|
#ブロック引数として、テキストボックスの変更などの処理をブロック内に記述することが出来る。
|
@@ -132,7 +152,7 @@ module Miyako
|
|
132
152
|
@executing = false
|
133
153
|
|
134
154
|
@exec_plot = nil
|
135
|
-
|
155
|
+
|
136
156
|
@pausing = false
|
137
157
|
@selecting = false
|
138
158
|
@waiting = false
|
@@ -150,7 +170,7 @@ module Miyako
|
|
150
170
|
@update_text = lambda{|yuki, ch|}
|
151
171
|
@update_cr = lambda{|yuki|}
|
152
172
|
@update_clear = lambda{|yuki|}
|
153
|
-
|
173
|
+
|
154
174
|
@parts = {}
|
155
175
|
@visibles = SpriteList.new
|
156
176
|
@vars = {}
|
@@ -158,7 +178,7 @@ module Miyako
|
|
158
178
|
|
159
179
|
@executing_fiber = nil
|
160
180
|
|
161
|
-
@text_methods = {:char => self.method(:text_by_char),
|
181
|
+
@text_methods = {:char => self.method(:text_by_char),
|
162
182
|
:string => self.method(:text_by_str) }
|
163
183
|
@text_method_name = :char
|
164
184
|
|
@@ -166,7 +186,7 @@ module Miyako
|
|
166
186
|
|
167
187
|
@release_checks_default = [lambda{ Input.pushed_any?(:btn1, :spc) }, lambda{ Input.click?(:left) } ]
|
168
188
|
@release_checks = @release_checks_default.dup
|
169
|
-
|
189
|
+
|
170
190
|
@ok_checks_default = [lambda{ Input.pushed_any?(:btn1, :spc) },
|
171
191
|
lambda{ self.commandbox.attach_any_command?(*Input.get_mouse_position) && Input.click?(:left) } ]
|
172
192
|
@ok_checks = @ok_checks_default.dup
|
@@ -184,13 +204,14 @@ module Miyako
|
|
184
204
|
@post_pause = []
|
185
205
|
@post_command = []
|
186
206
|
@post_cancel = []
|
207
|
+
@on_disable = []
|
187
208
|
@selecting_procs = []
|
188
|
-
|
209
|
+
|
189
210
|
@is_outer_height = self.method(:is_outer_height)
|
190
211
|
|
191
212
|
@now_page = nil
|
192
213
|
@first_page = nil
|
193
|
-
|
214
|
+
|
194
215
|
raise MiyakoProcError, "Aagument count is not same block parameter count!" if proc && proc.arity.abs != params.length
|
195
216
|
instance_exec(*params, &proc) if block_given?
|
196
217
|
end
|
@@ -208,7 +229,7 @@ module Miyako
|
|
208
229
|
@over_yuki.render if @over_yuki && @over_yuki.executing?
|
209
230
|
return self
|
210
231
|
end
|
211
|
-
|
232
|
+
|
212
233
|
#===Yuki#showで表示指定した画像を描画する
|
213
234
|
#描画順は、showメソッドで指定した順に描画される(先に指定した画像は後ろに表示される)
|
214
235
|
#なお、visibleの値がfalseの時は描画されない。
|
@@ -218,7 +239,7 @@ module Miyako
|
|
218
239
|
@over_yuki.render_to(dst) if @over_yuki && @over_yuki.executing?
|
219
240
|
return self
|
220
241
|
end
|
221
|
-
|
242
|
+
|
222
243
|
#===Yuki#showで表示指定した画像のアニメーションを更新する
|
223
244
|
#showメソッドで指定した画像のupdate_animationメソッドを呼び出す
|
224
245
|
#返却値:: 描く画像のupdate_spriteメソッドを呼び出した結果を配列で返す
|
@@ -309,7 +330,7 @@ module Miyako
|
|
309
330
|
@parts[name] = parts
|
310
331
|
return self
|
311
332
|
end
|
312
|
-
|
333
|
+
|
313
334
|
#===表示・描画対象のテキストボックスを選択する
|
314
335
|
#[[Yukiスクリプトとして利用可能]]
|
315
336
|
#_box_:: テキストボックスのインスタンス
|
@@ -319,7 +340,7 @@ module Miyako
|
|
319
340
|
@text_box = box
|
320
341
|
return self
|
321
342
|
end
|
322
|
-
|
343
|
+
|
323
344
|
#===表示・描画対象のコマンドボックスを選択する
|
324
345
|
#[[Yukiスクリプトとして利用可能]]
|
325
346
|
#_box_:: テキストボックスのインスタンス
|
@@ -329,7 +350,7 @@ module Miyako
|
|
329
350
|
@command_box = box
|
330
351
|
return self
|
331
352
|
end
|
332
|
-
|
353
|
+
|
333
354
|
#===テキストボックスを取得する
|
334
355
|
#[[Yukiスクリプトとして利用可能]]
|
335
356
|
#テキストボックスが登録されていないときはnilを返す
|
@@ -337,7 +358,7 @@ module Miyako
|
|
337
358
|
def textbox
|
338
359
|
return @text_box
|
339
360
|
end
|
340
|
-
|
361
|
+
|
341
362
|
#===コマンドボックスを取得する
|
342
363
|
#[[Yukiスクリプトとして利用可能]]
|
343
364
|
#コマンドボックスが登録されていないときはnilを返す
|
@@ -345,7 +366,7 @@ module Miyako
|
|
345
366
|
def commandbox
|
346
367
|
return @command_box
|
347
368
|
end
|
348
|
-
|
369
|
+
|
349
370
|
#===オブジェクトの登録を解除する
|
350
371
|
#[[Yukiスクリプトとして利用可能]]
|
351
372
|
#パーツnameとして登録されているオブジェクトを登録から解除する。
|
@@ -356,7 +377,7 @@ module Miyako
|
|
356
377
|
@parts.delete(name)
|
357
378
|
return self
|
358
379
|
end
|
359
|
-
|
380
|
+
|
360
381
|
#===パーツで指定したオブジェクトを先頭に表示する
|
361
382
|
#[[Yukiスクリプトとして利用可能]]
|
362
383
|
#描画時に、指定したパーツを描画する
|
@@ -370,7 +391,7 @@ module Miyako
|
|
370
391
|
}
|
371
392
|
return self
|
372
393
|
end
|
373
|
-
|
394
|
+
|
374
395
|
#===パーツで指定したオブジェクトを隠蔽する
|
375
396
|
#[[Yukiスクリプトとして利用可能]]
|
376
397
|
#描画時に、指定したパーツを描画させないよう指定する
|
@@ -383,7 +404,7 @@ module Miyako
|
|
383
404
|
}
|
384
405
|
return self
|
385
406
|
end
|
386
|
-
|
407
|
+
|
387
408
|
#===パーツで指定したオブジェクトの処理を開始する
|
388
409
|
#[[Yukiスクリプトとして利用可能]]
|
389
410
|
#nameで指定したパーツが持つ処理(例:アニメーション)を開始する。
|
@@ -394,7 +415,7 @@ module Miyako
|
|
394
415
|
@parts[name].start
|
395
416
|
return self
|
396
417
|
end
|
397
|
-
|
418
|
+
|
398
419
|
#===パーツで指定したオブジェクトを再生する
|
399
420
|
#[[Yukiスクリプトとして利用可能]]
|
400
421
|
#nameで指定したパーツを再生(例:BGM)する。
|
@@ -405,7 +426,7 @@ module Miyako
|
|
405
426
|
@parts[name].play
|
406
427
|
return self
|
407
428
|
end
|
408
|
-
|
429
|
+
|
409
430
|
#===パーツで指定したオブジェクトの処理を停止する
|
410
431
|
#[[Yukiスクリプトとして利用可能]]
|
411
432
|
#nameで指定したパーツが持つ処理を停止する。
|
@@ -416,7 +437,7 @@ module Miyako
|
|
416
437
|
@parts[name].stop
|
417
438
|
return self
|
418
439
|
end
|
419
|
-
|
440
|
+
|
420
441
|
#===遷移図の処理が終了するまで待つ
|
421
442
|
#[[Yukiスクリプトとして利用可能]]
|
422
443
|
#nameで指定した遷移図の処理が終了するまで、プロットを停止する
|
@@ -459,7 +480,7 @@ module Miyako
|
|
459
480
|
end
|
460
481
|
return self
|
461
482
|
end
|
462
|
-
|
483
|
+
|
463
484
|
#===シーンのセットアップ時に実行する処理
|
464
485
|
#
|
465
486
|
#ブロック引数として、テキストボックスの変更などの処理をブロック内に記述することが出来る。
|
@@ -486,13 +507,13 @@ module Miyako
|
|
486
507
|
|
487
508
|
@now_page = nil
|
488
509
|
@first_page = nil
|
489
|
-
|
510
|
+
|
490
511
|
raise MiyakoProcError, "Aagument count is not same block parameter count!" if proc && proc.arity.abs != params.length
|
491
512
|
instance_exec(*params, &proc) if proc
|
492
|
-
|
513
|
+
|
493
514
|
return self
|
494
515
|
end
|
495
|
-
|
516
|
+
|
496
517
|
#===実行するプロットと登録する
|
497
518
|
#_plot_proc_:: プロットの実行部をインスタンス化したオブジェクト
|
498
519
|
#返却値:: 自分自身を返す
|
@@ -524,7 +545,7 @@ module Miyako
|
|
524
545
|
@executing_fiber.resume
|
525
546
|
return self
|
526
547
|
end
|
527
|
-
|
548
|
+
|
528
549
|
#===プロット処理を更新する
|
529
550
|
#ポーズ中、コマンド選択中、 Yuki#wait メソッドによるウェイトの状態確認を行う。
|
530
551
|
#プロット処理の実行確認は出来ない
|
@@ -541,7 +562,7 @@ module Miyako
|
|
541
562
|
@select_amount = [0, 0]
|
542
563
|
@executing_fiber.resume
|
543
564
|
end
|
544
|
-
|
565
|
+
|
545
566
|
#===プロット用ブロックをYukiへ渡すためのインスタンスを作成する
|
546
567
|
#プロット用に用意したブロック(ブロック引数無し)を、Yukiでの選択結果や移動先として利用できる
|
547
568
|
#インスタンスに変換する
|
@@ -594,7 +615,7 @@ module Miyako
|
|
594
615
|
return plot_proc ? self.instance_exec(&plot_proc) :
|
595
616
|
self.instance_exec(&plot_block)
|
596
617
|
end
|
597
|
-
|
618
|
+
|
598
619
|
#===プロット処理が実行中かどうかを確認する
|
599
620
|
#返却値:: プロット処理実行中の時はtrueを返す
|
600
621
|
def executing?
|
@@ -706,7 +727,7 @@ module Miyako
|
|
706
727
|
def result
|
707
728
|
return @plot_result
|
708
729
|
end
|
709
|
-
|
730
|
+
|
710
731
|
#===プロット処理の結果を設定する
|
711
732
|
#[[Yukiスクリプトとして利用可能]]
|
712
733
|
#_ret_:: 設定する結果。デフォルトはnil
|
@@ -740,7 +761,7 @@ module Miyako
|
|
740
761
|
def canceled?
|
741
762
|
return result == @cancel
|
742
763
|
end
|
743
|
-
|
764
|
+
|
744
765
|
#===ブロックを条件として設定する
|
745
766
|
#[[Yukiスクリプトとして利用可能]]
|
746
767
|
#メソッドをMethodクラスのインスタンスに変換する
|
@@ -749,28 +770,28 @@ module Miyako
|
|
749
770
|
def condition(&block)
|
750
771
|
return block
|
751
772
|
end
|
752
|
-
|
773
|
+
|
753
774
|
#===コマンド選択中の問い合わせメソッド
|
754
775
|
#[[Yukiスクリプトとして利用可能]]
|
755
776
|
#返却値:: コマンド選択中の時はtrueを返す
|
756
777
|
def selecting?
|
757
778
|
return @selecting
|
758
779
|
end
|
759
|
-
|
780
|
+
|
760
781
|
#===Yuki#waitメソッドによる処理待ちの問い合わせメソッド
|
761
782
|
#[[Yukiスクリプトとして利用可能]]
|
762
783
|
#返却値:: 処理待ちの時はtrueを返す
|
763
784
|
def waiting?
|
764
785
|
return @waiting
|
765
786
|
end
|
766
|
-
|
787
|
+
|
767
788
|
#===メッセージ送り待ちの問い合わせメソッド
|
768
789
|
#[[Yukiスクリプトとして利用可能]]
|
769
790
|
#返却値:: メッセージ送り待ちの時はtrueを返す
|
770
791
|
def pausing?
|
771
792
|
return @pausing
|
772
793
|
end
|
773
|
-
|
794
|
+
|
774
795
|
#===条件に合っていればポーズをかける
|
775
796
|
#[[Yukiスクリプトとして利用可能]]
|
776
797
|
#引数で設定した条件(Proc,メソッドインスタンス,ブロック)を評価した結果、trueのときはポーズを行い、
|
@@ -783,7 +804,7 @@ module Miyako
|
|
783
804
|
return cond.call ? pause_and_clear : cr if cond
|
784
805
|
return self
|
785
806
|
end
|
786
|
-
|
807
|
+
|
787
808
|
#===テキストボックスに文字を表示する方法を指定する
|
788
809
|
#引数に、:charを渡すと1文字ごと、:stringを渡すと文字列ごとに表示される。それ以外を指定したときは例外が発生
|
789
810
|
#ブロックを渡せば、ブロックの評価中のみ設定が有効になる。
|
@@ -800,7 +821,7 @@ module Miyako
|
|
800
821
|
end
|
801
822
|
return self
|
802
823
|
end
|
803
|
-
|
824
|
+
|
804
825
|
#===テキストボックスに文字を表示する
|
805
826
|
#[[Yukiスクリプトとして利用可能]]
|
806
827
|
#テキストボックスとして用意している画像に文字を描画する。
|
@@ -819,7 +840,7 @@ module Miyako
|
|
819
840
|
return self if txt.empty?
|
820
841
|
return @text_methods[@text_method_name].call(txt)
|
821
842
|
end
|
822
|
-
|
843
|
+
|
823
844
|
#===テキストボックスに文字を1文字ずつ表示する
|
824
845
|
#[[Yukiスクリプトとして利用可能]]
|
825
846
|
#引数txtの値は、内部で1文字ずつ分割され、1文字描画されるごとに、
|
@@ -843,7 +864,7 @@ module Miyako
|
|
843
864
|
}
|
844
865
|
return self
|
845
866
|
end
|
846
|
-
|
867
|
+
|
847
868
|
#===テキストボックスに文字を表示する
|
848
869
|
#[[Yukiスクリプトとして利用可能]]
|
849
870
|
#文字列が描画されるごとに、update_textメソッドが呼び出され、
|
@@ -881,9 +902,9 @@ module Miyako
|
|
881
902
|
def is_outer_height #:nodoc:
|
882
903
|
return @text_box.locate.y + @text_box.max_height >= @text_box.textarea.h
|
883
904
|
end
|
884
|
-
|
905
|
+
|
885
906
|
private :is_outer_height
|
886
|
-
|
907
|
+
|
887
908
|
#===文字色を変更する
|
888
909
|
#[[Yukiスクリプトとして利用可能]]
|
889
910
|
#ブロック内で指定した文字列を、指定の色で描画する
|
@@ -921,7 +942,7 @@ module Miyako
|
|
921
942
|
}
|
922
943
|
return self
|
923
944
|
end
|
924
|
-
|
945
|
+
|
925
946
|
#===太文字を描画する
|
926
947
|
#[[Yukiスクリプトとして利用可能]]
|
927
948
|
#ブロック内で指定した文字列を太文字で表示する
|
@@ -931,7 +952,7 @@ module Miyako
|
|
931
952
|
@text_box.font_bold{ text block.call }
|
932
953
|
return self
|
933
954
|
end
|
934
|
-
|
955
|
+
|
935
956
|
#===斜体文字を描画する
|
936
957
|
#[[Yukiスクリプトとして利用可能]]
|
937
958
|
#ブロック内で指定した文字列を斜体で表示する
|
@@ -941,7 +962,7 @@ module Miyako
|
|
941
962
|
@text_box.font_italic{ text block.call }
|
942
963
|
return self
|
943
964
|
end
|
944
|
-
|
965
|
+
|
945
966
|
#===下線付き文字を描画する
|
946
967
|
#[[Yukiスクリプトとして利用可能]]
|
947
968
|
#ブロック内で指定した文字列を下線付きで表示する
|
@@ -968,7 +989,7 @@ module Miyako
|
|
968
989
|
#[[Yukiスクリプトとして利用可能]]
|
969
990
|
#開業後にupdate_clearテンプレートメソッドが1回呼ばれる
|
970
991
|
#返却値:: 自分自身を返す
|
971
|
-
def clear
|
992
|
+
def clear
|
972
993
|
@text_box.clear
|
973
994
|
@update_clear.call(self)
|
974
995
|
return self
|
@@ -1003,7 +1024,7 @@ module Miyako
|
|
1003
1024
|
@pausing = false
|
1004
1025
|
@pause_release = false
|
1005
1026
|
end
|
1006
|
-
|
1027
|
+
|
1007
1028
|
#===ポーズをかけて、テキストボックスの内容を消去する
|
1008
1029
|
#[[Yukiスクリプトとして利用可能]]
|
1009
1030
|
#ポーズをかけ、ポーズを解除するときにテキストボックスの内容を消去する
|
@@ -1021,7 +1042,7 @@ module Miyako
|
|
1021
1042
|
#引数無しのブロックを渡せば、コマンド選択開始前に、決定判別・キャンセル判別に必要な前処理を施すことが出来る
|
1022
1043
|
#選択中、update_innerメソッドを呼び出し、続けて、処理をYuki#startもしくはYuki#update呼び出し直後に戻す
|
1023
1044
|
#Yuki#updateが呼び出されても選択中の場合は、再び上記の処理を繰り返す
|
1024
|
-
#_command_list_:: 表示するコマンド群。各要素はCommand構造体の配列
|
1045
|
+
#_command_list_:: 表示するコマンド群。各要素はCommand/CommandEx構造体の配列
|
1025
1046
|
#_cancel_to_:: キャンセルボタンを押したときの結果。デフォルトはnil(キャンセル無効)
|
1026
1047
|
#_chain_block_:: コマンドの表示方法。TextBox#create_choices_chainメソッド参照
|
1027
1048
|
#返却値:: 自分自身を返す
|
@@ -1032,7 +1053,7 @@ module Miyako
|
|
1032
1053
|
choices = []
|
1033
1054
|
command_list.each{|cm|
|
1034
1055
|
if (cm[:condition] == nil || cm[:condition].call)
|
1035
|
-
cm_array = [cm[:body], cm[:body_selected], cm[:result]]
|
1056
|
+
cm_array = [cm[:body], cm[:body_selected], cm[:body_disable], cm[:enable], cm[:result]]
|
1036
1057
|
methods = cm.methods
|
1037
1058
|
cm_array << (methods.include?(:end_select_proc) ? cm[:end_select_proc] : nil)
|
1038
1059
|
choices.push(cm_array)
|
@@ -1062,6 +1083,7 @@ module Miyako
|
|
1062
1083
|
sp.call(@select_ok, @select_cansel, @select_amount, @mouse_amount)
|
1063
1084
|
}
|
1064
1085
|
if @select_ok
|
1086
|
+
return @on_disable.each{|proc| proc.call} unless @command_box.enable_choice?
|
1065
1087
|
@result = @command_box.result
|
1066
1088
|
@command_box.finish_command
|
1067
1089
|
@text_box.release
|
@@ -1081,7 +1103,7 @@ module Miyako
|
|
1081
1103
|
reset_selecting
|
1082
1104
|
end
|
1083
1105
|
end
|
1084
|
-
|
1106
|
+
|
1085
1107
|
def reset_selecting #:nodoc:
|
1086
1108
|
@select_ok = false
|
1087
1109
|
@select_cancel = false
|
@@ -1141,7 +1163,7 @@ module Miyako
|
|
1141
1163
|
@now_page = nil
|
1142
1164
|
return name
|
1143
1165
|
end
|
1144
|
-
|
1166
|
+
|
1145
1167
|
#===シナリオ上の現在のページを返す
|
1146
1168
|
#[[Yukiスクリプトとして利用可能]]
|
1147
1169
|
#呼び出し当時、シナリオ上、pageメソッドでくくられていない場合は、nilを返す
|
@@ -1149,7 +1171,7 @@ module Miyako
|
|
1149
1171
|
def now_page
|
1150
1172
|
return @now_page
|
1151
1173
|
end
|
1152
|
-
|
1174
|
+
|
1153
1175
|
#===プロット上の最初に実行するページを指定知る
|
1154
1176
|
#[[Yukiスクリプトとして利用可能]]
|
1155
1177
|
#但し、ページ名を指定しないときはnilを指定する。
|
@@ -1157,16 +1179,29 @@ module Miyako
|
|
1157
1179
|
def select_first_page(name)
|
1158
1180
|
@first_page = name
|
1159
1181
|
end
|
1160
|
-
|
1182
|
+
|
1183
|
+
|
1184
|
+
#===一旦処理をメインに戻す
|
1185
|
+
#[[Yukiスクリプトとして利用可能]]
|
1186
|
+
#Yukiスクリプト内で定義されているループ内処理から一旦抜け出し、メインループに戻る
|
1187
|
+
#追加したYukiスクリプトにループが含まれているとき、
|
1188
|
+
#ループを回すごとに画面更新やメイン処理を行いたいときに使う
|
1189
|
+
#但し、ページ名を指定しないときはnilを指定する。
|
1190
|
+
#_params_:: メインループに返す引数
|
1191
|
+
#返却値:: メインループから渡ってきた引数
|
1192
|
+
def process(*params)
|
1193
|
+
Fiber.yield *params
|
1194
|
+
end
|
1195
|
+
|
1161
1196
|
#===インスタンスで使用しているオブジェクトを解放する
|
1162
1197
|
def dispose
|
1163
1198
|
@update_inner = nil
|
1164
1199
|
@update_text = nil
|
1165
1200
|
@update_cr = nil
|
1166
1201
|
@update_clear = nil
|
1167
|
-
|
1202
|
+
|
1168
1203
|
@executing_fiber = nil
|
1169
|
-
|
1204
|
+
|
1170
1205
|
@parts.clear
|
1171
1206
|
@parts = nil
|
1172
1207
|
@visibles.clear
|
@@ -39,7 +39,7 @@ module Miyako
|
|
39
39
|
@fo_size = 0
|
40
40
|
@effecting = false
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
#===ラスタスクロールを開始する
|
44
44
|
#ラスタスクロール実行用に設定する引数は以下の通り
|
45
45
|
#:lines -> ライン数(:lines=>3を指定すると、3ラインずつラスタスクロールを行う)。デフォルトは1(ライン)
|
@@ -62,7 +62,7 @@ module Miyako
|
|
62
62
|
@wait.start
|
63
63
|
return self
|
64
64
|
end
|
65
|
-
|
65
|
+
|
66
66
|
#===ラスタスクロール処理を更新する
|
67
67
|
#返却値:: 自分自身を返す
|
68
68
|
def update
|
@@ -106,22 +106,44 @@ module Miyako
|
|
106
106
|
#===ラスタスクロールを画面に描画する
|
107
107
|
def render
|
108
108
|
angle = @sangle
|
109
|
+
ty = @src.oy
|
110
|
+
th = @src.oh
|
111
|
+
pos = @src.pos
|
112
|
+
@src.oh = @lines
|
113
|
+
@src.oy = 0
|
109
114
|
@h.times{|y|
|
110
115
|
rsx = @size * Math.sin(angle)
|
111
|
-
@src.
|
116
|
+
@src.render_xy @src.x + rsx, @src.y + y * @lines
|
117
|
+
ny = @src.oy + @lines
|
118
|
+
@src.oh = @src.h - ny if (@src.h - ny < @lines)
|
119
|
+
@src.oy = ny
|
112
120
|
angle = angle + @dangle
|
113
121
|
}
|
122
|
+
@src.oy = ty
|
123
|
+
@src.oh = th
|
124
|
+
@src.move_to!(*pos)
|
114
125
|
end
|
115
|
-
|
126
|
+
|
116
127
|
#===ラスタスクロールを画像に描画する
|
117
128
|
#_dst_:: 描画先画像
|
118
129
|
def render_to(dst)
|
119
|
-
|
130
|
+
angle = @sangle
|
131
|
+
ty = @src.oy
|
132
|
+
th = @src.oh
|
133
|
+
pos = @src.pos
|
134
|
+
@src.oh = @lines
|
135
|
+
@src.oy = 0
|
120
136
|
@h.times{|y|
|
121
|
-
rsx = @size * Math.sin(
|
122
|
-
@src.
|
123
|
-
|
137
|
+
rsx = @size * Math.sin(angle)
|
138
|
+
@src.render_xy_to dst, @src.x + rsx, @src.y + y * @lines
|
139
|
+
ny = @src.oy + @lines
|
140
|
+
@src.oh = @src.h - ny if (@src.h - ny < @lines)
|
141
|
+
@src.oy = ny
|
142
|
+
angle = angle + @dangle
|
124
143
|
}
|
144
|
+
@src.oy = ty
|
145
|
+
@src.oh = th
|
146
|
+
@src.move_to!(*pos)
|
125
147
|
end
|
126
148
|
|
127
149
|
#===ラスタスクロールをフェードアウトさせる
|
data/lib/Miyako/EXT/slides.rb
CHANGED
@@ -40,7 +40,7 @@ module Miyako
|
|
40
40
|
tmp[:color] ||= Color[:white]
|
41
41
|
return Parts.new(tmp[:size]).tap{|obj| obj[:___base___] = Sprite.new(tmp).fill(tmp[:color])}
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
@@templates["320x240"] = {:size=>Size.new(320,240)}
|
45
45
|
@@templates["640x480"] = {}
|
46
46
|
@@templates["800x600"] = {:size=>Size.new(800,600)}
|
@@ -63,7 +63,7 @@ module Miyako
|
|
63
63
|
def Slide.[](sym = "640x480")
|
64
64
|
return Slide.create(@@templates[sym])
|
65
65
|
end
|
66
|
-
|
66
|
+
|
67
67
|
#===スライドのテンプレートを追加する
|
68
68
|
#指定できるテンプレートの内容は、Sprite.newメソッドの引数がそのまま使える(Hashクラスインスタンスとして渡す)
|
69
69
|
#また、追加として、:colorパラメータを使って塗りつぶす色を指定することが出来る。
|
@@ -84,13 +84,13 @@ module Miyako
|
|
84
84
|
set_layout_size(*(@body.size))
|
85
85
|
@body.snap(self)
|
86
86
|
end
|
87
|
-
|
87
|
+
|
88
88
|
def piece
|
89
89
|
return self
|
90
90
|
end
|
91
|
-
|
91
|
+
|
92
92
|
private :piece
|
93
|
-
|
93
|
+
|
94
94
|
#===名前に対応したパーツを取得する
|
95
95
|
#_title_:: 取得したいパーツに対応したシンボル
|
96
96
|
#返却値:: シンボルに対応したパーツ
|
@@ -151,7 +151,7 @@ module Miyako
|
|
151
151
|
#===@bodyに登録したオブジェクトとは別に作成していたインスタンスを解放する
|
152
152
|
def dispose
|
153
153
|
end
|
154
|
-
|
154
|
+
|
155
155
|
def_delegators(:@body, :remove, :each, :start, :stop, :reset, :update, :update_animation)
|
156
156
|
end
|
157
157
|
end
|