Class: Miyako::Yuki

Inherits:
Object show all
Includes:
Animation, SpriteBase
Defined in:
lib/Miyako/API/yuki.rb

Overview

Yuki本体クラス

Yukiの内容をオブジェクト化したクラス Yukiのプロット処理を外部メソッドで管理可能 プロットは、引数を一つ(Yuki2クラスのインスタンス)を取ったメソッドもしくはブロック として記述する。

Defined Under Namespace

Classes: Canceled, Command, CommandEX, CommandEx

Constant Summary collapse

ALL_TRUE =
lambda{ true }
@@common_use =

外部との共用変数を収めるところ

{}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Animation

anim_hash, #reset, reset, start, stop, update, update_animation

Methods included from SpriteBase

#bitmap, #image_rect, #image_size, #oh, #oh=, #ow, #ow=, #ox, #ox=, #oy, #oy=, #part_rect, #rect, #render_d, #render_xy, #render_xy_to, #to_sprite, #to_unit

Constructor Details

#initialize(*params, &proc) ⇒ Yuki

Yukiを初期化する

ブロック引数として、テキストボックスの変更などの処理をブロック内に記述することが出来る。 引数の数とブロック引数の数が違っていれば例外が発生する

params

ブロックに渡す引数リスト(ただし、ブロックを渡しているときのみに有効)

Raises:



238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
# File 'lib/Miyako/API/yuki.rb', line 238

def initialize(*params, &proc)
  @yuki = { }
  @over_yuki = nil
  @under_yuki = nil
  @over_exec = false
  @text_box = nil
  @command_box = nil
  @text_box_all = nil
  @command_box_all = nil

  @executing = false

  @exec_plot = nil

  @pausing = false
  @selecting = false
  @waiting = false

  @pause_release = false
  @select_ok = false
  @select_cancel = false
  @select_amount = [0, 0]
  @cencel = nil
  @mouse_amount = nil

  @mouse_enable = true

  @result = nil
  @plot_result = nil

  @update_inner = lambda{|yuki|}
  @update_text  = lambda{|yuki, ch|}
  @update_cr    = lambda{|yuki|}
  @update_clear = lambda{|yuki|}

  @parts = {}
  @visibles = SpriteList.new
  @pre_visibles = SpriteList.new
  @bgs = SpriteList.new
  @vars = {}
  @visible = true

  @executing_fiber = nil

  @text_methods = {:char => self.method(:text_by_char),
                   :char_rapid => self.method(:text_by_char_rapid),
                   :string => self.method(:text_by_str),
                   :string_rapid => self.method(:text_by_str_rapid) }
  @text_method_name = :char

  @valign = :middle

  @release_checks_default = [
    lambda{ Input.pushed_any?(:btn1, :spc) },
    lambda{ @mouse_enable && Input.click?(:left) }
  ]
  @release_checks = @release_checks_default.dup

  @ok_checks_default = [
    lambda{ Input.pushed_any?(:btn1, :spc) },
    lambda{ @mouse_enable && self.commandbox.attach_any_command?(*Input.get_mouse_position) && Input.click?(:left) }
  ]
  @ok_checks = @ok_checks_default.dup

  @cancel_checks_default = [
    lambda{ Input.pushed_any?(:btn2, :esc) },
    lambda{ @mouse_enable && Input.click?(:right) }
  ]
  @cancel_checks = @cancel_checks_default.dup

  @key_amount_proc   = lambda{ Input.pushed_amount }
  @mouse_amount_proc = lambda{ Input.mouse_cursor_inner? ? Input.get_mouse_position : nil }

  @pre_pause    = []
  @pre_command  = []
  @pre_cancel   = []
  @post_pause   = []
  @post_command = []
  @post_cancel  = []
  @on_disable   = []
  @selecting_procs = []

  @is_outer_height = self.method(:is_outer_height)

  @now_page = nil
  @first_page = nil

  @common_use = {}

  raise MiyakoProcError, "Argument count is not same block parameter count!" if proc && proc.arity.abs != params.length
  instance_exec(*params, &proc) if block_given?
end

Instance Attribute Details

#bgsObject (readonly)

Returns the value of attribute bgs.



182
183
184
# File 'lib/Miyako/API/yuki.rb', line 182

def bgs
  @bgs
end

#cancel_checksObject (readonly)

release_checks

ポーズ解除を問い合わせるブロックの配列。

callメソッドを持ち、true/falseを返すインスタンスを配列操作で追加・削除できる。

ok_checks

コマンド選択決定を問い合わせるブロックの配列。

callメソッドを持ち、true/falseを返すインスタンスを配列操作で追加・削除できる。

cancel_checks

コマンド選択解除(キャンセル)を問い合わせるブロックの配列。

callメソッドを持ち、true/falseを返すインスタンスを配列操作で追加・削除できる。



189
190
191
# File 'lib/Miyako/API/yuki.rb', line 189

def cancel_checks
  @cancel_checks
end

#common_useObject (readonly)

Returns the value of attribute common_use.



179
180
181
# File 'lib/Miyako/API/yuki.rb', line 179

def common_use
  @common_use
end

#ok_checksObject (readonly)

release_checks

ポーズ解除を問い合わせるブロックの配列。

callメソッドを持ち、true/falseを返すインスタンスを配列操作で追加・削除できる。

ok_checks

コマンド選択決定を問い合わせるブロックの配列。

callメソッドを持ち、true/falseを返すインスタンスを配列操作で追加・削除できる。

cancel_checks

コマンド選択解除(キャンセル)を問い合わせるブロックの配列。

callメソッドを持ち、true/falseを返すインスタンスを配列操作で追加・削除できる。



189
190
191
# File 'lib/Miyako/API/yuki.rb', line 189

def ok_checks
  @ok_checks
end

#on_disableObject (readonly)

Returns the value of attribute on_disable.



190
191
192
# File 'lib/Miyako/API/yuki.rb', line 190

def on_disable
  @on_disable
end

#post_cancelObject (readonly)

Returns the value of attribute post_cancel.



190
191
192
# File 'lib/Miyako/API/yuki.rb', line 190

def post_cancel
  @post_cancel
end

#post_commandObject (readonly)

Returns the value of attribute post_command.



190
191
192
# File 'lib/Miyako/API/yuki.rb', line 190

def post_command
  @post_command
end

#post_pauseObject (readonly)

Returns the value of attribute post_pause.



190
191
192
# File 'lib/Miyako/API/yuki.rb', line 190

def post_pause
  @post_pause
end

#pre_cancelObject (readonly)

Returns the value of attribute pre_cancel.



190
191
192
# File 'lib/Miyako/API/yuki.rb', line 190

def pre_cancel
  @pre_cancel
end

#pre_commandObject (readonly)

Returns the value of attribute pre_command.



190
191
192
# File 'lib/Miyako/API/yuki.rb', line 190

def pre_command
  @pre_command
end

#pre_pauseObject (readonly)

Returns the value of attribute pre_pause.



190
191
192
# File 'lib/Miyako/API/yuki.rb', line 190

def pre_pause
  @pre_pause
end

#pre_visiblesObject (readonly)

Returns the value of attribute pre_visibles.



182
183
184
# File 'lib/Miyako/API/yuki.rb', line 182

def pre_visibles
  @pre_visibles
end

#release_checksObject (readonly)

release_checks

ポーズ解除を問い合わせるブロックの配列。

callメソッドを持ち、true/falseを返すインスタンスを配列操作で追加・削除できる。

ok_checks

コマンド選択決定を問い合わせるブロックの配列。

callメソッドを持ち、true/falseを返すインスタンスを配列操作で追加・削除できる。

cancel_checks

コマンド選択解除(キャンセル)を問い合わせるブロックの配列。

callメソッドを持ち、true/falseを返すインスタンスを配列操作で追加・削除できる。



189
190
191
# File 'lib/Miyako/API/yuki.rb', line 189

def release_checks
  @release_checks
end

#selecting_procsObject (readonly)

selecting_procs

コマンド選択時に行うブロックの配列。

ブロックは4つの引数を取る必要がある。 (1)コマンド決定ボタンを押した?(true/false) (2)キャンセルボタンを押した?(true/false) (3)キーパッドの移動量を示す配列() (4)マウスの位置を示す配列() <<(2.1.15-追加、省略可能)>> (5)現在指しているコマンドは選択可能?(true/false) (6)現在指しているコマンドの結果 callメソッドを持つブロックが使用可能。



201
202
203
# File 'lib/Miyako/API/yuki.rb', line 201

def selecting_procs
  @selecting_procs
end

#update_clear(yuki) ⇒ Object

Yuki#clear呼び出し時に行わせる処理を実装するテンプレートメソッド

但し、メソッド本体は、update_clear=メソッドで設定する必要がある

yuki

実行中のYukiクラスインスタンス



176
177
# File 'lib/Miyako/API/yuki.rb', line 176

def update_clear(yuki)
end

#update_cr(yuki) ⇒ Object

Yuki#cr呼び出し時に行わせる処理を実装するテンプレートメソッド

但し、メソッド本体は、update_cr=メソッドで設定する必要がある

yuki

実行中のYukiクラスインスタンス



170
171
# File 'lib/Miyako/API/yuki.rb', line 170

def update_cr(yuki)
end

#update_inner(yuki) ⇒ Object

Yuki#update実行中に行わせる処理を実装するテンプレートメソッド

但し、メソッド本体は、update_inner=メソッドで設定する必要がある

yuki

実行中のYukiクラスインスタンス



154
155
# File 'lib/Miyako/API/yuki.rb', line 154

def update_inner(yuki)
end

#update_text(yuki, ch) ⇒ Object

Yuki#text実行中に行わせる処理を実装するテンプレートメソッド

update_textテンプレートメソッドは、textメソッドで渡した文字列全体ではなく、 内部で1文字ずつ分割して、その字が処理されるごとに呼ばれる。 そのため、引数chで入ってくるのは、分割された1文字となる。 但し、メソッド本体は、update_text=メソッドで設定する必要がある

yuki

実行中のYukiクラスインスタンス

ch

textメソッドで処理中の文字(分割済みの1文字)



164
165
# File 'lib/Miyako/API/yuki.rb', line 164

def update_text(yuki, ch)
end

#valignObject (readonly)

Returns the value of attribute valign.



182
183
184
# File 'lib/Miyako/API/yuki.rb', line 182

def valign
  @valign
end

#visibleObject

Returns the value of attribute visible.



180
181
182
# File 'lib/Miyako/API/yuki.rb', line 180

def visible
  @visible
end

#visiblesObject (readonly)

Returns the value of attribute visibles.



182
183
184
# File 'lib/Miyako/API/yuki.rb', line 182

def visibles
  @visibles
end

Class Method Details

.[](key) ⇒ Object



142
143
144
# File 'lib/Miyako/API/yuki.rb', line 142

def Yuki.[](key)
  @@common_use[key]
end

.[]=(key, value) ⇒ Object



146
147
148
149
# File 'lib/Miyako/API/yuki.rb', line 146

def Yuki.[]=(key, value)
  @@common_use[key] = value
  value
end

.add_method(name, &block) ⇒ Object

Yukiにメソッドを追加する(すべてのYukiインスタンスに適応)

ブロックを渡すことで、Yukiに新しいメソッドを追加できる。 追加したメソッドは、すべてのYukiインスタンスで利用可能となる。 コンテキストはYukiクラスのインスタンスとなるため、Yukiスクリプトと同じ感覚でメソッドを追加できる。 ただし、すでに追加したメソッド(もしくはYukiクラスですでに追加されているメソッド)を追加しようとすると例外が発生する

name

ブロックに渡す引数リスト

block

メソッドとして実行させるブロック

Raises:



211
212
213
214
215
216
# File 'lib/Miyako/API/yuki.rb', line 211

def Yuki.add_method(name, &block)
  name = name.to_sym
  raise MiyakoError, "Already added method! : #{name.to_s}" if self.methods.include?(name)
  define_method(name, block)
  return nil
end

Instance Method Details

#[](key) ⇒ Object



452
453
454
# File 'lib/Miyako/API/yuki.rb', line 452

def [](key)
  @common_use[key] || @@common_use[key]
end

#[]=(key, value) ⇒ Object



456
457
458
459
# File 'lib/Miyako/API/yuki.rb', line 456

def []=(key, value)
  @common_use[key] = value
  value
end

#add_method(name, &block) ⇒ Object

Yukiにメソッドを追加する(指定のYukiインスタンスのみ適応)

ブロックを渡すことで、Yukiに新しいメソッドを追加できる。 追加したメソッドは、指定したYukiインスタンスのみ利用可能となる。 コンテキストはYukiクラスのインスタンスとなるため、Yukiスクリプトと同じ感覚でメソッドを追加できる。 ただし、すでに追加したメソッド(もしくはYukiクラスですでに追加されているメソッド)を追加しようとすると例外が発生する

name

ブロックに渡す引数リスト

block

メソッドとして実行させるブロック

Raises:



226
227
228
229
230
231
# File 'lib/Miyako/API/yuki.rb', line 226

def add_method(name, &block)
  name = name.to_sym
  raise MiyakoError, "Already added method! : #{name.to_s}" if self.methods.include?(name)
  self.define_singleton_method(name, block)
  return nil
end

#animation_allObject



437
438
439
440
441
442
443
# File 'lib/Miyako/API/yuki.rb', line 437

def animation_all
  self.bgs.update_animation
  self.visibles.update_animation
  self.textbox_all.update_animation
  self.commandbox_all.update_animation unless self.box_shared?
  self.pre_visibles.update_animation
end

#bg_hide(*names) ⇒ Object

パーツで指定した背景を隠蔽する

[Yukiスクリプトとして利用可能]

描画時に、指定したパーツを描画させないよう指定する

names

パーツ名(シンボル)、複数指定可能

返却値

自分自身を返す



775
776
777
778
779
780
781
782
# File 'lib/Miyako/API/yuki.rb', line 775

def bg_hide(*names)
  if names.length == 0
    @bgs.each_value{|sprite| sprite.hide}
    return self
  end
  names.each{|name| @bgs[name].hide }
  return self
end

#bg_show(*names) ⇒ Object

パーツで指定した背景を表示する

[Yukiスクリプトとして利用可能]

描画時に、指定したパーツを描画する すでにshowメソッドで表示指定している場合は、先頭に表示させる

names

パーツ名(シンボル)、複数指定可能(指定した順番に描画される)

返却値

自分自身を返す



758
759
760
761
762
763
764
765
766
767
768
# File 'lib/Miyako/API/yuki.rb', line 758

def bg_show(*names)
  if names.length == 0
    @bgs.each_value{|sprite| sprite.show}
    return self
  end
  names.each{|name|
    @bgs.add(name, @parts[name]) unless @bgs.include?(name)
    @bgs[name].show
  }
  return self
end

#bgs_namesObject

現在描画対象のパーツ名のリストを取得する

[Yukiスクリプトとして利用可能]

現在描画しているパーツ名の配列を参照する。 実体のインスタンスは、partsメソッドで参照できるハッシュの値として格納されている。 Yuki#renderで描画する際、配列の先頭から順に、要素に対応するインスタンスを描画する(つまり、配列の後ろにある方が前に描画される (例):[:a, :b, :c]の順に並んでいたら、:cが指すインスタンスが一番前に描画される。

返却値

描画対象リスト



551
552
553
# File 'lib/Miyako/API/yuki.rb', line 551

def bgs_names
  @bgs.names
end

#bold(&block) ⇒ Object

太文字を描画する

[Yukiスクリプトとして利用可能]

ブロック内で指定した文字列を太文字で表示する (使用すると文字の端が切れてしまう場合あり!)

返却値

自分自身を返す



1469
1470
1471
1472
# File 'lib/Miyako/API/yuki.rb', line 1469

def bold(&block)
  @text_box.font_bold{ text block.call }
  return self
end

#box_shared?Boolean

コマンドボックスとテキストボックスを共用しているか問い合わせる

[Yukiスクリプトとして利用可能]

テキストボックスとコマンドボックスを共用しているときはtrueを返す 共用していなければfalseを返す

返却値

true/false

Returns:

  • (Boolean)


673
674
675
# File 'lib/Miyako/API/yuki.rb', line 673

def box_shared?
  @text_box_all.object_id == @command_box_all.object_id
end

#call_plot(plot_proc = nil, &plot_block) ⇒ Object

プロット処理中に別のプロットを呼び出す

呼び出し可能なプロットは以下の2種類。(上から優先度が高い順)

1)引数prot_proc(Procクラスのインスタンス)

2)引数として渡したブロック

plot_proc

プロットの実行部をインスタンス化したオブジェクト

返却値

プロットの実行結果を返す



1046
1047
1048
1049
# File 'lib/Miyako/API/yuki.rb', line 1046

def call_plot(plot_proc = nil, &plot_block)
  return plot_proc ? self.instance_exec(&plot_proc) :
                     self.instance_exec(&plot_block)
end

#call_plot_block(*params, &plot_block) ⇒ Object

プロット処理中に別のプロットを呼び出す

呼び出し可能なプロットは以下の2種類。(上から優先度が高い順)

1)引数prot_proc(Procクラスのインスタンス)

2)引数として渡したブロック

plot_proc

プロットの実行部をインスタンス化したオブジェクト

返却値

プロットの実行結果を返す



1073
1074
1075
# File 'lib/Miyako/API/yuki.rb', line 1073

def call_plot_block(*params, &plot_block)
  return self.instance_exec(*params, &plot_block)
end

#call_plot_params(plot_proc, *params) ⇒ Object

プロット処理中に別のプロットを呼び出す

呼び出し可能なプロットは以下の2種類。(上から優先度が高い順)

1)引数prot_proc(Procクラスのインスタンス)

2)引数として渡したブロック

plot_proc

プロットの実行部をインスタンス化したオブジェクト

返却値

プロットの実行結果を返す



1060
1061
1062
# File 'lib/Miyako/API/yuki.rb', line 1060

def call_plot_params(plot_proc, *params)
  return self.instance_exec(*params, &plot_proc)
end

#cancel_checks_during(procs, pre_procs = [], post_procs = []) ⇒ Object

ブロック評価中、コマンド選択キャンセル問い合わせメソッド配列を置き換える

同時に、コマンド選択開始時処理(Yuki#pre_cancel)、コマンド選択終了時処理(Yuki#post_cancel)を引数で設定できる。 ブロックの評価が終われば、メソッド配列・コマンド選択開始時処理・コマンド選択終了時処理を元に戻す

procs

置き換えるメソッド配列(callメソッドを持ち、true/falseを返すメソッドの配列)

pre_proc

コマンド選択開始時に実行させるProc(デフォルトは[](何もしない))

post_proc

コマンド選択キャンセル時に実行させるProc(デフォルトは[](何もしない))

返却値

自分自身を返す

Raises:



1170
1171
1172
1173
1174
1175
1176
1177
# File 'lib/Miyako/API/yuki.rb', line 1170

def cancel_checks_during(procs, pre_procs = [], post_procs = [])
  raise MiyakoProcError, "Can't find block!" unless block_given?
  backup = [@cancel_checks, @pre_cancel, @post_cancel]
  @cancel_checks, @pre_cancel, @post_cancel = procs, pre_proc, post_proc
  yield
  @cancel_checks, @pre_cancel, @post_cancel = backup.pop(3)
  return self
end

#canceled?Boolean

コマンド選択がキャンセルされたときの結果を返す

[Yukiスクリプトとして利用可能]
返却値

キャンセルされたときはtrue、されていないときはfalseを返す

Returns:

  • (Boolean)


1219
1220
1221
# File 'lib/Miyako/API/yuki.rb', line 1219

def canceled?
  return @result == @cancel
end

#clearObject

テキストボックスの内容を消去する

[Yukiスクリプトとして利用可能]

開業後にupdate_clearテンプレートメソッドが1回呼ばれる

返却値

自分自身を返す



1510
1511
1512
1513
1514
# File 'lib/Miyako/API/yuki.rb', line 1510

def clear
  @text_box.clear
  @update_clear.call(self)
  return self
end

#color(color, &block) ⇒ Object

文字色を変更する

[Yukiスクリプトとして利用可能]

ブロック内で指定した文字列を、指定の色で描画する

color

文字色

返却値

自分自身を返す



1431
1432
1433
1434
# File 'lib/Miyako/API/yuki.rb', line 1431

def color(color, &block)
  @text_box.color_during(Color.to_rgb(color)){ text block.call }
  return self
end

#command(command_list, cancel_to = Miyako::Yuki::Canceled, &chain_block) ⇒ Object

コマンドを表示する

[Yukiスクリプトとして利用可能]

表示対象のコマンド群をCommand構造体の配列で示す。 キャンセルのときの結果も指定可能(既定ではキャンセル不可状態) body_selectedをnilにした場合は、bodyと同一となる body_selectedを文字列を指定した場合は、文字色が赤色になることに注意 引数無しのブロックを渡せば、コマンド選択開始前に、決定判別・キャンセル判別に必要な前処理を施すことが出来る 選択中、update_innerメソッドを呼び出し、続けて、処理をYuki#startもしくはYuki#update呼び出し直後に戻す Yuki#updateが呼び出されても選択中の場合は、再び上記の処理を繰り返す

command_list

表示するコマンド群。各要素はCommand構造体/CommandEx構造体の配列

cancel_to

キャンセルボタンを押したときの結果。デフォルトはnil(キャンセル無効)

chain_block

コマンドの表示方法。TextBox#create_choices_chainメソッド参照

返却値

自分自身を返す

Raises:



1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
# File 'lib/Miyako/API/yuki.rb', line 1567

def command(command_list, cancel_to = Miyako::Yuki::Canceled, &chain_block)
  raise MiyakoValueError, "Yuki Error! Commandbox is not selected!" unless @command_box
  @cancel = cancel_to

  if command_list.kind_of?(Choices)
    @pre_command.each{|proc| proc.call}
    @pre_cancel.each{|proc| proc.call}
    @command_box_all.show if @command_box_all.object_id != @text_box_all.object_id
    @command_box.command(command_list)
  else
    choices = []
    command_list.each{|cm|
      if (cm[:condition] == nil || cm[:condition].call)
        cm_array = [cm[:body], cm[:body_selected], cm[:body_disable], cm[:enable], cm[:result]]
        methods = cm.methods
        cm_array << (methods.include?(:end_select_proc) ? cm[:end_select_proc] : nil)
        choices.push(cm_array)
      end
    }
    return self if choices.length == 0

    @pre_command.each{|proc| proc.call}
    @pre_cancel.each{|proc| proc.call}
    @command_box_all.show if @command_box_all.object_id != @text_box_all.object_id
    @command_box.command(@command_box.create_choices_chain(choices, &chain_block))
  end
  @result = nil
  @selecting = true
  while @selecting
    @update_inner.call(self)
    Fiber.yield
  end
  @post_cancel.each{|proc| proc.call}
  @post_command.each{|proc| proc.call}
  return self
end

#commandboxObject

コマンドボックスを取得する

[Yukiスクリプトとして利用可能]

コマンドボックスが登録されていないときはnilを返す

返却値

コマンドボックス



616
617
618
# File 'lib/Miyako/API/yuki.rb', line 616

def commandbox
  return @command_box
end

#commandbox_allObject

コマンドボックス全体を取得する

[Yukiスクリプトとして利用可能]

コマンドボックスが登録されていないときはnilを返す

返却値

コマンドボックス全体



632
633
634
# File 'lib/Miyako/API/yuki.rb', line 632

def commandbox_all
  return @command_box_all
end

#condition(&block) ⇒ Object

ブロックを条件として設定する

[Yukiスクリプトとして利用可能]

メソッドをMethodクラスのインスタンスに変換する

block

シナリオインスタンスに変換したいメソッド名(シンボル)

返却値

シナリオインスタンスに変換したメソッド



1228
1229
1230
# File 'lib/Miyako/API/yuki.rb', line 1228

def condition(&block)
  return block
end

#cr(tm = 1) ⇒ Object

改行を行う

[Yukiスクリプトとして利用可能]

開業後にupdate_crテンプレートメソッドが1回呼ばれる

tm

改行回数。デフォルトは1

返却値

自分自身を返す



1498
1499
1500
1501
1502
1503
1504
# File 'lib/Miyako/API/yuki.rb', line 1498

def cr(tm = 1)
  tm.times{|n|
    @text_box.cr
    @update_cr.call(self)
  }
  return self
end

#disable_mouseObject

マウスでの制御を不可にする

ゲームパッド・キーボードでのコマンド・ポーズ制御を行えるが、 マウスでの利用を制限する Yukiクラスインスタンス生成時はマウス利用可能

返却値

自分自身を返す



367
368
369
370
# File 'lib/Miyako/API/yuki.rb', line 367

def disable_mouse
  @mouse_enable = false
  return self
end

#disposeObject

インスタンスで使用しているオブジェクトを解放する



1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
# File 'lib/Miyako/API/yuki.rb', line 1736

def dispose
  @update_inner  = nil
  @update_text   = nil
  @update_cr     = nil
  @update_clear  = nil

  @executing_fiber = nil

  @parts.clear
  @parts = nil
  @visibles.clear
  @visibles = nil
  @vars.clear
  @vars = nil

  @is_outer_height = nil
end

#enable_mouseObject

マウスでの制御を可能にする

ゲームパッド・キーボードでのコマンド・ポーズ制御を行えるが、 それに加えて、マウスでもゲームパッド・キーボードでの制御が行える Yukiクラスインスタンス生成時はマウス利用可能

返却値

自分自身を返す



357
358
359
360
# File 'lib/Miyako/API/yuki.rb', line 357

def enable_mouse
  @mouse_enable = true
  return self
end

#executing?Boolean

プロット処理が実行中かどうかを確認する

返却値

プロット処理実行中の時はtrueを返す

Returns:

  • (Boolean)


1079
1080
1081
# File 'lib/Miyako/API/yuki.rb', line 1079

def executing?
  return @executing
end

#hide(*names) ⇒ Object

パーツで指定したオブジェクトを隠蔽する

[Yukiスクリプトとして利用可能]

描画時に、指定したパーツを描画させないよう指定する

names

パーツ名(シンボル)、複数指定可能

返却値

自分自身を返す



711
712
713
714
715
716
717
718
# File 'lib/Miyako/API/yuki.rb', line 711

def hide(*names)
  if names.length == 0
    @visibles.each_value{|sprite| sprite.hide}
    return self
  end
  names.each{|name| @visibles[name].hide }
  return self
end

#hide_commandboxObject

コマンドボックスを描画不可能にする

[Yukiスクリプトとして利用可能]
返却値

レシーバ



663
664
665
666
# File 'lib/Miyako/API/yuki.rb', line 663

def hide_commandbox
  @command_box_all.hide
  return self
end

#hide_textboxObject

テキストボックスを描画不可能にする

[Yukiスクリプトとして利用可能]
返却値

レシーバ



655
656
657
658
# File 'lib/Miyako/API/yuki.rb', line 655

def hide_textbox
  @text_box_all.hide
  return self
end

#initialize_copy(obj) ⇒ Object

:nodoc:



331
332
333
# File 'lib/Miyako/API/yuki.rb', line 331

def initialize_copy(obj) #:nodoc:
  raise MiyakoCopyError.not_copy("Yuki")
end

#is_scenario?(result) ⇒ Boolean

結果がシナリオかどうかを問い合わせる

[Yukiスクリプトとして利用可能]

結果がシナリオ(メソッド)のときはtrueを返す 対象の結果は、選択結果、プロット処理結果ともに有効

返却値

結果がシナリオかどうか(true/false)

Returns:

  • (Boolean)


1212
1213
1214
# File 'lib/Miyako/API/yuki.rb', line 1212

def is_scenario?(result)
  return (result.kind_of?(Proc) || result.kind_of?(Method))
end

#is_scene?(result) ⇒ Boolean

結果がシーンかどうかを問い合わせる

[Yukiスクリプトとして利用可能]

結果がシーン(シーンクラス名)のときはtrueを返す 対象の結果は、選択結果、プロット処理結果ともに有効

返却値

結果がシーンかどうか(true/false)

Returns:

  • (Boolean)


1203
1204
1205
# File 'lib/Miyako/API/yuki.rb', line 1203

def is_scene?(result)
  return (result.class == Class && result.include?(Story::Scene))
end

#italic(&block) ⇒ Object

斜体文字を描画する

[Yukiスクリプトとして利用可能]

ブロック内で指定した文字列を斜体で表示する (使用すると文字の端が切れてしまう場合あり!)

返却値

自分自身を返す



1479
1480
1481
1482
# File 'lib/Miyako/API/yuki.rb', line 1479

def italic(&block)
  @text_box.font_italic{ text block.call }
  return self
end

#load_bg(name, filename) ⇒ Object

背景を登録する

[Yukiスクリプトとして利用可能]

画面に表示する背景を登録する すでにshowメソッドで表示指定している場合は、先頭に表示させる

name

スプライト名(重複するときは上書き)

filename

読み込むファイル名

返却値

自分自身を返す



808
809
810
811
812
813
814
# File 'lib/Miyako/API/yuki.rb', line 808

def load_bg(name, filename)
  spr = Sprite.new(:file=>filename, :type=>:ac)
  @parts[name] = spr
  @parts[name].hide
  @bgs.add(name, @parts[name])
  return self
end

#load_bgm(name, filename) ⇒ Object

BGMを登録する

[Yukiスクリプトとして利用可能]

音声ファイルを読み込み、BGMとして登録する 登録したBGMはpartsメソッドを使って参照できる

name

スプライト名(重複するときは上書き)

filename

読み込むファイル名

返却値

自分自身を返す



823
824
825
826
# File 'lib/Miyako/API/yuki.rb', line 823

def load_bgm(name, filename)
  @parts[name] = Audio::BGM.new(filename)
  return self
end

#load_se(name, filename) ⇒ Object

効果音を登録する

[Yukiスクリプトとして利用可能]

音声ファイルを読み込み、効果音として登録する 登録した効果音はpartsメソッドを使って参照できる

name

スプライト名(重複するときは上書き)

filename

読み込むファイル名

返却値

自分自身を返す



835
836
837
838
# File 'lib/Miyako/API/yuki.rb', line 835

def load_se(name, filename)
  @parts[name] = Audio::SE.new(filename)
  return self
end

#load_sprite(name, filename, pre = false) ⇒ Object

ファイル名で指定したスプライトを登録する

[Yukiスクリプトとして利用可能]

画面に表示するスプライトを登録する すでにshowメソッドで表示指定している場合は、先頭に表示させる

name

スプライト名(重複するときは上書き)

filename

読み込むファイル名

pre

pre_visiblesに登録するときはtrue、visiblesに登録するときはfalseを渡す

省略時はfalse
返却値

自分自身を返す



793
794
795
796
797
798
799
# File 'lib/Miyako/API/yuki.rb', line 793

def load_sprite(name, filename, pre=false)
  spr = Sprite.new(:file=>filename, :type=>:ac)
  @parts[name] = spr
  @parts[name].hide
  pre ? @pre_visibles.add(name, @parts[name]) :  @visibles.add(name, @parts[name])
  return self
end

#mouse_enable?Boolean

マウスでの制御を可・不可を問い合わせる

マウスを利用できるときはtrue、利用できないときはfalseを返す

返却値

true/false

Returns:

  • (Boolean)


375
376
377
# File 'lib/Miyako/API/yuki.rb', line 375

def mouse_enable?
  @mouse_enable
end

#now_pageObject

シナリオ上の現在のページを返す

[Yukiスクリプトとして利用可能]

呼び出し当時、シナリオ上、pageメソッドでくくられていない場合は、nilを返す

返却値

ページ名



1710
1711
1712
# File 'lib/Miyako/API/yuki.rb', line 1710

def now_page
  return @now_page
end

#ok_checks_during(procs, pre_procs = [], post_procs = []) ⇒ Object

ブロック評価中、コマンド選択決定問い合わせメソッド配列を置き換える

同時に、コマンド選択開始時処理(Yuki#pre_command)、コマンド選択終了時処理(Yuki#post_command)を引数で設定できる。 ブロックの評価が終われば、メソッド配列・コマンド選択開始時処理・コマンド選択終了時処理を元に戻す

procs

置き換えるメソッド配列(callメソッドを持ち、true/falseを返すメソッドの配列)

pre_proc

コマンド選択開始時に実行させるProc(デフォルトは[](何もしない))

post_proc

コマンド選択決定時に実行させるProc(デフォルトは[](何もしない))

返却値

自分自身を返す

Raises:



1154
1155
1156
1157
1158
1159
1160
1161
# File 'lib/Miyako/API/yuki.rb', line 1154

def ok_checks_during(procs, pre_procs = [], post_procs = [])
  raise MiyakoProcError, "Can't find block!" unless block_given?
  backup = [@ok_checks, @pre_command, @post_command]
  @ok_checks, @pre_command, @post_command = procs, pre_proc, post_proc
  yield
  @ok_checks, @pre_command, @post_command = backup.pop(3)
  return self
end

#over_engineObject



335
336
337
# File 'lib/Miyako/API/yuki.rb', line 335

def over_engine
  @over_yuki
end

#over_engine=(engine) ⇒ Object



339
340
341
342
# File 'lib/Miyako/API/yuki.rb', line 339

def over_engine=(engine)
  @over_yuki = engine
  engine.under_engine = self
end

#over_exec(yuki = nil, plot = nil, *params) ⇒ Object

別のYukiエンジンを実行する

[Yukiスクリプトとして利用可能]

もう一つのYukiエンジンを実行させ、並行実行させることができる ウインドウの上にウインドウを表示したりするときに、このメソッドを使う renderメソッドで描画する際は、自分のインスタンスが描画した直後に描画される 自分自身を実行しようとするとMiyakoValueError例外が発生する

yuki

実行対象のYukiインスタンス(事前にsetupの呼び出しが必要)

plot

プロットインスタンス。すでにsetupなどで登録しているときはnilを渡す

params

プロット実行開始時に、プロットに渡す引数

返却値

自分自身を返す

Raises:



895
896
897
898
899
900
# File 'lib/Miyako/API/yuki.rb', line 895

def over_exec(yuki = nil, plot = nil, *params)
  raise MiyakoValueError, "This Yuki engine is same as self!" if yuki.eql?(self)
  self.over_engine = yuki if yuki
  @over_yuki.start_plot(plot, *params)
  return self
end

#page(name, use_pause = true) ⇒ Object

シナリオ上の括り(ページ)を実装する

[Yukiスクリプトとして利用可能]

シナリオ上、「このプロットの明示的な範囲」を示すために使用する(セーブ時の再現位置の指定など) Yuki#select_first_pageメソッドで開始位置が指定されている場合、以下の処理を行う。 (1)select_first_pageメソッドで指定されたページから処理する。それまでのページは無視される (2)開始ページを処理する前に、select_first_pageメソッドの内容をクリアする(nilに変更する) このメソッドはブロックが必須。ブロックがないと例外が発生する。

name

ページ名。select_first_pageメソッドは、この名前を検索する。また、now_pageメソッドの返却値でもある

use_pause::ページの処理が終了した後、必ずpauseメソッドを呼び出すかどうかのフラグ。デフォルトはtrue

返却値

select_first_pageメソッドで指定されていないページのときはnil、指定されているページの場合は引数nameの値

Raises:



1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
# File 'lib/Miyako/API/yuki.rb', line 1695

def page(name, use_pause = true)
  raise MiyakoProcError, "Yuki#page needs block!" unless block_given?
  return nil if (@first_page && name != @first_page)
  @first_page = nil
  @now_page = name
  yield
  pause if use_pause
  @now_page = nil
  return name
end

#partsObject

パーツを参照する

[Yukiスクリプトとして利用可能]

パーツの管理オブジェクトを、ハッシュとして参照する。 パーツ名nameを指定して、インスタンスを参照できる 未登録のパーツはnilが返る (例)parts

返却値

パーツ管理ハッシュ



501
502
503
# File 'lib/Miyako/API/yuki.rb', line 501

def parts
  @parts
end

#parts_namesObject

パーツ名の一覧を参照する

[Yukiスクリプトとして利用可能]

パーツ管理オブジェクトに登録されているパーツ名の一覧を配列として返す。 順番は登録順。 まだ何も登録されていないときは空の配列が返る。 (例)regist_parts :chr1, hoge

regist_parts :chr2, fuga
parts_names # => [:chr1, :chr2]
返却値

パーツ管理ハッシュ



515
516
517
# File 'lib/Miyako/API/yuki.rb', line 515

def parts_names
  @parts.keys
end

#pauseObject

ポーズを行う

[Yukiスクリプトとして利用可能]

ポーズが行われると、ポーズ用のカーソルが表示される 所定のボタンを押すとポーズが解除され、カーソルが消える 解除後は、プロットの続きを処理する 引数無しのブロックを渡せば、ポーズ開始前に行いたい処理を施すことが出来る ポーズ中、update_innerメソッドを呼び出し、続けて、処理をYuki#startもしくはYuki#update呼び出し直後に戻す Yuki#updateが呼び出されてもポーズ中の場合は、再び上記の処理を繰り返す (たとえば、一定時間後に自動的にポーズ解除する場合、そのタイマーを開始させるなど)

返却値

自分自身を返す



1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
# File 'lib/Miyako/API/yuki.rb', line 1526

def pause
  @pre_pause.each{|proc| proc.call}
  yield if block_given?
  @text_box.pause
  @pausing = true
  while @pausing
    @update_inner.call(self)
    Fiber.yield
  end
  @post_pause.each{|proc| proc.call}
  return self
end

#pause_and_clearObject

ポーズをかけて、テキストボックスの内容を消去する

[Yukiスクリプトとして利用可能]

ポーズをかけ、ポーズを解除するときにテキストボックスの内容を消去する

返却値

自分自身を返す



1550
1551
1552
# File 'lib/Miyako/API/yuki.rb', line 1550

def pause_and_clear
  return pause.clear
end

#pausingObject

:nodoc:



1539
1540
1541
1542
1543
1544
# File 'lib/Miyako/API/yuki.rb', line 1539

def pausing #:nodoc:
  return unless @pause_release
  @text_box.release
  @pausing = false
  @pause_release = false
end

#pausing?Boolean

メッセージ送り待ちの問い合わせメソッド

[Yukiスクリプトとして利用可能]
返却値

メッセージ送り待ちの時はtrueを返す

Returns:

  • (Boolean)


1249
1250
1251
# File 'lib/Miyako/API/yuki.rb', line 1249

def pausing?
  return @pausing
end

#play(name) ⇒ Object

パーツで指定したオブジェクトを再生する

[Yukiスクリプトとして利用可能]

nameで指定したパーツを再生(例:BGM)する。 (但し、パーツで指定したオブジェクトがplayメソッドを持つことが条件)

name

パーツ名(シンボル)

返却値

自分自身を返す



857
858
859
860
# File 'lib/Miyako/API/yuki.rb', line 857

def play(name)
  @parts[name].play
  return self
end

#plot_facade(plot_proc = nil, *params, &plot_block) ⇒ Object

:nodoc:



1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
# File 'lib/Miyako/API/yuki.rb', line 1026

def plot_facade(plot_proc = nil, *params, &plot_block) #:nodoc:
  @plot_result = nil
  @executing = true
  exec_plot = @exec_plot
  @plot_result = plot_proc ? self.instance_exec(*params, &plot_proc) :
                 block_given? ? self.instance_exec(*params, &plot_block) :
                 exec_plot ? self.instance_exec(*params, &exec_plot) :
                 raise(MiyakoProcError, "Cannot find plot!")
  @executing = false
end

#pre_hide(*names) ⇒ Object

パーツで指定したオブジェクトを隠蔽する

[Yukiスクリプトとして利用可能]

描画時に、指定したパーツを描画させないよう指定する

names

パーツ名(シンボル)、複数指定可能

返却値

自分自身を返す



743
744
745
746
747
748
749
750
# File 'lib/Miyako/API/yuki.rb', line 743

def pre_hide(*names)
  if names.length == 0
    @pre_visibles.each_value{|sprite| sprite.hide}
    return self
  end
  names.each{|name| @pre_visibles[name].hide }
  return self
end

#pre_show(*names) ⇒ Object

パーツで指定したオブジェクトを先頭に表示する

[Yukiスクリプトとして利用可能]

描画時に、指定したパーツを描画する すでにshowメソッドで表示指定している場合は、先頭に表示させる

names

パーツ名(シンボル)、複数指定可能(指定した順番に描画される)

返却値

自分自身を返す



726
727
728
729
730
731
732
733
734
735
736
# File 'lib/Miyako/API/yuki.rb', line 726

def pre_show(*names)
  if names.length == 0
    @pre_visibles.each_value{|sprite| sprite.show}
    return self
  end
  names.each{|name|
    @pre_visibles.add(name, @parts[name]) unless @pre_visibles.include?(name)
    @pre_visibles[name].show
  }
  return self
end

#pre_visibles_namesObject

現在描画対象のパーツ名のリストを取得する

[Yukiスクリプトとして利用可能]

現在描画しているパーツ名の配列を参照する。 実体のインスタンスは、partsメソッドで参照できるハッシュの値として格納されている。 Yuki#renderで描画する際、配列の先頭から順に、要素に対応するインスタンスを描画する(つまり、配列の後ろにある方が前に描画される (例):[:a, :b, :c]の順に並んでいたら、:cが指すインスタンスが一番前に描画される。

返却値

描画対象リスト



539
540
541
# File 'lib/Miyako/API/yuki.rb', line 539

def pre_visibles_names
  @pre_visibles.names
end

#process(*params) ⇒ Object

一旦処理をメインに戻す

[Yukiスクリプトとして利用可能]

Yukiスクリプト内で定義されているループ内処理から一旦抜け出し、メインループに戻る 追加したYukiスクリプトにループが含まれているとき、 ループを回すごとに画面更新やメイン処理を行いたいときに使う 但し、ページ名を指定しないときはnilを指定する。

params

メインループに返す引数

返却値

メインループから渡ってきた引数



1731
1732
1733
# File 'lib/Miyako/API/yuki.rb', line 1731

def process(*params)
  Fiber.yield *params
end

#regist_parts(name, parts) ⇒ Object

オブジェクトを登録する

[Yukiスクリプトとして利用可能]

オブジェクトをパーツnameとして登録する。 Yuki::partsで参照可能

name

パーツ名(シンボル)

parts

登録対象のインスタンス

返却値

自分自身を返す



563
564
565
566
# File 'lib/Miyako/API/yuki.rb', line 563

def regist_parts(name, parts)
  @parts[name] = parts
  return self
end

#release_checks_during(procs, pre_procs = [], post_procs = []) ⇒ Object

ブロック評価中、ポーズ解除問い合わせメソッド配列を置き換える

同時に、ポーズ時処理(Yuki#pre_pause)、ポーズ解除時処理(Yuki#post_pause)を引数で設定できる。 ブロックの評価が終われば、メソッド配列・ポーズ時処理・ポーズ解除時処理を元に戻す

procs

置き換えるメソッド配列(callメソッドを持ち、true/falseを返すメソッドの配列)

pre_proc

ポーズ開始時に実行させるProc(デフォルトは[](何もしない))

post_proc

ポーズ解除時に実行させるProc(デフォルトは[](何もしない))

返却値

自分自身を返す

Raises:



1138
1139
1140
1141
1142
1143
1144
1145
# File 'lib/Miyako/API/yuki.rb', line 1138

def release_checks_during(procs, pre_procs = [], post_procs = [])
  raise MiyakoProcError, "Can't find block!" unless block_given?
  backup = [@release_checks, @pre_pause, @post_pause]
  @release_checks, @pre_pause, @post_pause = procs, pre_proc, post_proc
  yield
  @release_checks, @pre_pause, @post_pause = backup.pop(3)
  return self
end

#remove_parts(name) ⇒ Object

オブジェクトの登録を解除する

[Yukiスクリプトとして利用可能]

パーツnameとして登録されているオブジェクトを登録から解除する。

name

パーツ名(シンボル)

返却値

自分自身を返す



683
684
685
686
# File 'lib/Miyako/API/yuki.rb', line 683

def remove_parts(name)
  @parts.delete(name)
  return self
end

#renderObject

Yuki#showで表示指定した画像を描画する

描画順は、showメソッドで指定した順に描画される(先に指定した画像は後ろに表示される) なお、visibleの値がfalseの時は描画されない。

返却値

自分自身を返す



383
384
385
386
# File 'lib/Miyako/API/yuki.rb', line 383

def render
  @over_yuki.render if @over_yuki && @over_yuki.executing?
  return self
end

#render_allObject



397
398
399
400
401
402
403
# File 'lib/Miyako/API/yuki.rb', line 397

def render_all
  self.bgs.render
  self.visibles.render
  self.textbox_all.render
  self.commandbox_all.render unless self.box_shared?
  self.pre_visibles.render
end

#render_to(dst) ⇒ Object

Yuki#showで表示指定した画像を描画する

描画順は、showメソッドで指定した順に描画される(先に指定した画像は後ろに表示される) なお、visibleの値がfalseの時は描画されない。

返却値

自分自身を返す



392
393
394
395
# File 'lib/Miyako/API/yuki.rb', line 392

def render_to(dst)
  @over_yuki.render_to(dst) if @over_yuki && @over_yuki.executing?
  return self
end

#render_to_all(dst) ⇒ Object



405
406
407
408
409
410
411
# File 'lib/Miyako/API/yuki.rb', line 405

def render_to_all(dst)
  self.bgs.render_to(dst)
  self.visibles.render_to(dst)
  self.textbox_all.render_to(dst)
  self.commandbox_all.render_to(dst) unless self.box_shared?
  self.pre_visibles.render_to(dst)
end

#reset_allObject



429
430
431
432
433
434
435
# File 'lib/Miyako/API/yuki.rb', line 429

def reset_all
  self.bgs.reset
  self.visibles.reset
  self.textbox_all.reset
  self.commandbox_all.reset unless self.box_shared?
  self.pre_visibles.reset
end

#reset_cancel_checksObject

コマンド選択キャンセル問い合わせメソッド配列を初期状態に戻す

返却値

自分自身を返す



1099
1100
1101
1102
# File 'lib/Miyako/API/yuki.rb', line 1099

def reset_cancel_checks
  @cancel_checks = @cancel_checks_default.dup
  return self
end

#reset_ok_checksObject

コマンド選択決定問い合わせメソッド配列を初期状態に戻す

返却値

自分自身を返す



1092
1093
1094
1095
# File 'lib/Miyako/API/yuki.rb', line 1092

def reset_ok_checks
  @ok_checks = @ok_checks_default.dup
  return self
end

#reset_pre_post_cancelObject

コマンド選択キャンセル前後処理メソッド配列を初期状態に戻す

pre_cancel/post_cancelの処理を初期状態([])に戻す

返却値

自分自身を返す



1125
1126
1127
1128
1129
# File 'lib/Miyako/API/yuki.rb', line 1125

def reset_pre_post_cancel
  @pre_acncel = []
  @post_cancel = []
  return self
end

#reset_pre_post_commandObject

コマンド選択前後処理メソッド配列を初期状態に戻す

pre_command/post_commandの処理を初期状態([])に戻す

返却値

自分自身を返す



1116
1117
1118
1119
1120
# File 'lib/Miyako/API/yuki.rb', line 1116

def reset_pre_post_command
  @pre_command = []
  @post_command = []
  return self
end

#reset_pre_post_releaseObject

ポーズ前後処理メソッド配列を初期状態に戻す

pre_pause/post_pauseの処理を初期状態([])に戻す

返却値

自分自身を返す



1107
1108
1109
1110
1111
# File 'lib/Miyako/API/yuki.rb', line 1107

def reset_pre_post_release
  @pre_pause = []
  @post_pause = []
  return self
end

#reset_release_checksObject

ポーズ解除問い合わせメソッド配列を初期状態に戻す

返却値

自分自身を返す



1085
1086
1087
1088
# File 'lib/Miyako/API/yuki.rb', line 1085

def reset_release_checks
  @release_checks = @release_checks_default.dup
  return self
end

#reset_selectingObject

:nodoc:



1646
1647
1648
1649
1650
# File 'lib/Miyako/API/yuki.rb', line 1646

def reset_selecting #:nodoc:
  @select_ok = false
  @select_cancel = false
  @select_amount = [0, 0]
end

#resultObject

プロットの処理結果を返す

[Yukiスクリプトとして利用可能]

プロット処理の結果を返す。 まだ結果が得られていない場合はnilを得る プロット処理が終了していないのに結果を得られるので注意!

返却値

プロットの処理結果



1185
1186
1187
# File 'lib/Miyako/API/yuki.rb', line 1185

def result
  return @plot_result
end

#result=(ret = nil) ⇒ Object

プロット処理の結果を設定する

[Yukiスクリプトとして利用可能]
ret

設定する結果。デフォルトはnil

返却値

自分自身を返す



1193
1194
1195
1196
# File 'lib/Miyako/API/yuki.rb', line 1193

def result=(ret = nil)
  @plot_result = ret
  return self
end

#select_commandbox(box, box_all = nil) ⇒ Object

表示・描画対象のコマンドボックスを選択する

第2引数として、テキストボックス全体を渡せる(省略可能) 第1引数が、PartsやSpriteListの1部分のときに、第2引数を渡すことで、 テキストボックス全体を制御可能 第2引数を省略時は、全バージョンに引き続いて、テキストボックス本体のみを制御する

[Yukiスクリプトとして利用可能]
box

テキストボックス本体

box_all

テキストボックス全体

返却値

自分自身を返す



598
599
600
601
602
# File 'lib/Miyako/API/yuki.rb', line 598

def select_commandbox(box, box_all = nil)
  @command_box = box
  @command_box_all = box_all || box
  return self
end

#select_first_page(name) ⇒ Object

プロット上の最初に実行するページを指定知る

[Yukiスクリプトとして利用可能]

但し、ページ名を指定しないときはnilを指定する。

name

最初に実行するページ名



1718
1719
1720
# File 'lib/Miyako/API/yuki.rb', line 1718

def select_first_page(name)
  @first_page = name
end

#select_plot(plot_proc) ⇒ Object

実行するプロットと登録する

plot_proc

プロットの実行部をインスタンス化したオブジェクト

返却値

自分自身を返す



952
953
954
955
# File 'lib/Miyako/API/yuki.rb', line 952

def select_plot(plot_proc)
  @exec_plot = plot_proc
  return self
end

#select_resultObject

コマンドの選択結果を返す

[Yukiスクリプトとして利用可能]

コマンド選択の結果を返す。 まだ結果が得られていない場合はnilを得る プロット処理・コマンド選択が終了していないのに結果を得られるので注意!

返却値

コマンドの選択結果



1658
1659
1660
# File 'lib/Miyako/API/yuki.rb', line 1658

def select_result
  return @result
end

#select_textbox(box, box_all = nil) ⇒ Object

表示・描画対象のテキストボックスを選択する

第2引数として、テキストボックス全体を渡せる(省略可能) 第1引数が、PartsやSpriteListの1部分のときに、第2引数を渡すことで、 テキストボックス全体を制御可能 第2引数を省略時は、全バージョンに引き続いて、テキストボックス本体のみを制御する

[Yukiスクリプトとして利用可能]
box

テキストボックス本体

box_all

テキストボックス全体

返却値

自分自身を返す



578
579
580
581
582
583
584
585
586
# File 'lib/Miyako/API/yuki.rb', line 578

def select_textbox(box, box_all = nil)
  @text_box = box
  @text_box_all = box_all || box
  unless @command_box
    @command_box = @text_box
    @command_box_all = @text_box_all
  end
  return self
end

#selectingObject

:nodoc:



1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
# File 'lib/Miyako/API/yuki.rb', line 1604

def selecting #:nodoc:
  return unless @selecting
  return unless @command_box.selecting?
  @selecting_procs.each{|sp|
    case sp.arity
    when 6
      sp.call(
        @select_ok, @select_cansel,
        @select_amount, @mouse_amount,
        @command_box.enable_choice?, @command_box.result
      )
    else
      sp.call(
        @select_ok, @select_cansel,
        @select_amount, @mouse_amount
      )
    end
  }
  if @select_ok
    return @on_disable.each{|proc| proc.call} unless @command_box.enable_choice?
    @result = @command_box.result
    @command_box.finish_command
    @command_box_all.hide if @command_box_all.object_id != @text_box_all.object_id
    @text_box.release
    @selecting = false
    reset_selecting
  elsif @select_cancel
    @result = @cancel
    @command_box.finish_command
    @command_box_all.hide if @command_box_all.object_id != @text_box_all.object_id
    @text_box.release
    @selecting = false
    reset_selecting
  elsif @select_amount != [0,0]
    @command_box.move_cursor(*@select_amount)
    reset_selecting
  elsif @mouse_amount
    @command_box.attach_cursor(*@mouse_amount.to_a) if @mouse_enable
    reset_selecting
  end
end

#selecting?Boolean

コマンド選択中の問い合わせメソッド

[Yukiスクリプトとして利用可能]
返却値

コマンド選択中の時はtrueを返す

Returns:

  • (Boolean)


1235
1236
1237
# File 'lib/Miyako/API/yuki.rb', line 1235

def selecting?
  return @selecting
end

#setup(*params, &proc) ⇒ Object

シーンのセットアップ時に実行する処理

ブロック引数として、テキストボックスの変更などの処理をブロック内に記述することが出来る。 引数の数とブロック引数の数が違っていれば例外が発生する

params

ブロックに渡す引数リスト(ブロックを渡しているときのみ)

返却値

自分自身を返す

Raises:



922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
# File 'lib/Miyako/API/yuki.rb', line 922

def setup(*params, &proc)
  @exec_plot = nil

  @executing = false

  @pausing = false
  @selecting = false
  @waiting = false

  @pause_release = false
  @select_ok = false
  @select_cancel = false
  @select_amount = [0, 0]
  @mouse_amount = nil

  @result = nil
  @plot_result = nil

  @now_page = nil
  @first_page = nil

  raise MiyakoProcError, "Argument count is not same block parameter count!" if proc && proc.arity.abs != params.length
  instance_exec(*params, &proc) if proc

  return self
end

#show(*names) ⇒ Object

パーツで指定したオブジェクトを先頭に表示する

[Yukiスクリプトとして利用可能]

描画時に、指定したパーツを描画する すでにshowメソッドで表示指定している場合は、先頭に表示させる

names

パーツ名(シンボル)、複数指定可能(指定した順番に描画される)

返却値

自分自身を返す



694
695
696
697
698
699
700
701
702
703
704
# File 'lib/Miyako/API/yuki.rb', line 694

def show(*names)
  if names.length == 0
    @visibles.each_value{|sprite| sprite.show}
    return self
  end
  names.each{|name|
    @visibles.add(name, @parts[name]) unless @visibles.include?(name)
    @visibles[name].show
  }
  return self
end

#show_commandboxObject

コマンドボックスを描画可能にする

[Yukiスクリプトとして利用可能]
返却値

レシーバ



647
648
649
650
# File 'lib/Miyako/API/yuki.rb', line 647

def show_commandbox
  @command_box_all.show
  return self
end

#show_textboxObject

テキストボックスを描画可能にする

[Yukiスクリプトとして利用可能]
返却値

レシーバ



639
640
641
642
# File 'lib/Miyako/API/yuki.rb', line 639

def show_textbox
  @text_box_all.show
  return self
end

#size(size, valign = @valign, &block) ⇒ Object

文字の大きさを変更する

[Yukiスクリプトとして利用可能]

ブロック内で指定した文字列を、指定の大きさで描画する

size

文字の大きさ(整数)

valign

文字の縦の位置(top, middle, bottom)。デフォルトは:middle(Yuki#valign=,Yuki#valign_duringで変更可能)

返却値

自分自身を返す



1457
1458
1459
1460
1461
1462
# File 'lib/Miyako/API/yuki.rb', line 1457

def size(size, valign = @valign, &block)
  @text_box.font_size_during(size){
    @text_box.margin_during(@text_box.margin_height(valign)){ text block.call }
  }
  return self
end

#start(name) ⇒ Object

パーツで指定したオブジェクトの処理を開始する

[Yukiスクリプトとして利用可能]

nameで指定したパーツが持つ処理(例:アニメーション)を開始する。 (但し、パーツで指定したオブジェクトがstartメソッドを持つことが条件)

name

パーツ名(シンボル)

返却値

自分自身を返す



846
847
848
849
# File 'lib/Miyako/API/yuki.rb', line 846

def start(name)
  @parts[name].start
  return self
end

#start_allObject



413
414
415
416
417
418
419
# File 'lib/Miyako/API/yuki.rb', line 413

def start_all
  self.bgs.start
  self.visibles.start
  self.textbox_all.start
  self.commandbox_all.start unless self.box_shared?
  self.pre_visibles.start
end

#start_plot(plot_proc = nil, *params, &plot_block) ⇒ Object

プロット処理を実行する(明示的に呼び出す必要がある場合)

引数もしくはブロックで指定したプロット処理を非同期に実行する。 呼び出し可能なプロットは以下の3種類。(上から優先度が高い順) プロットが見つからなければ例外が発生する

1)引数prot_proc(Procクラスのインスタンス)

2)引数として渡したブロック

3)select_plotメソッドで登録したブロック(Procクラスのインスタンス)

plot_proc

プロットの実行部をインスタンス化したオブジェクト。省略時はnil(paramsを指定するときは必ず設定すること)

params

プロットに引き渡す引数リスト

返却値

自分自身を返す

Raises:



971
972
973
974
975
976
977
978
979
# File 'lib/Miyako/API/yuki.rb', line 971

def start_plot(plot_proc = nil, *params, &plot_block)
  raise MiyakoValueError, "Yuki Error! Textbox is not selected!" unless @text_box
  raise MiyakoProcError, "Argument count is not same block parameter count!" if plot_proc && plot_proc.arity.abs != params.length
  raise MiyakoProcError, "Argument count is not same block parameter count!" if plot_block && plot_block.arity.abs != params.length
  raise MiyakoProcError, "Argument count is not same block parameter count!" if @exec_plot && @exec_plot.arity.abs != params.length
  @executing_fiber = Fiber.new{ plot_facade(plot_proc, *params, &plot_block) }
  @executing_fiber.resume
  return self
end

#stop(name) ⇒ Object

パーツで指定したオブジェクトの処理を停止する

[Yukiスクリプトとして利用可能]

nameで指定したパーツが持つ処理を停止する。 (但し、パーツで指定したオブジェクトがstopメソッドを持つことが条件)

name

パーツ名(シンボル)

返却値

自分自身を返す



868
869
870
871
# File 'lib/Miyako/API/yuki.rb', line 868

def stop(name)
  @parts[name].stop
  return self
end

#stop_allObject



421
422
423
424
425
426
427
# File 'lib/Miyako/API/yuki.rb', line 421

def stop_all
  self.bgs.stop
  self.visibles.stop
  self.textbox_all.stop
  self.commandbox_all.stop unless self.box_shared?
  self.pre_visibles.stop
end

#text(txt) ⇒ Object

テキストボックスに文字を表示する

[Yukiスクリプトとして利用可能]

テキストボックスとして用意している画像に文字を描画する。 描画する単位(文字単位、文字列単位)によって、挙動が違う。 (文字単位の時) Yuki#text_by_charメソッドと同じ挙動。 (文字列単位の時) Yuki#text_by_strメソッドと同じ挙動。 デフォルトは文字単位。 引数txtの値は、内部で1文字ずつ分割され、1文字描画されるごとに、 update_textメソッドが呼び出され、続けてYuki#start_plotもしくはYuki#updateメソッド呼び出し直後に戻る

txt

表示させるテキスト

返却値

自分自身を返す



1296
1297
1298
# File 'lib/Miyako/API/yuki.rb', line 1296

def text(txt)
  return @text_methods[@text_method_name].call(txt)
end

#text_by_char(txt) ⇒ Object

テキストボックスに文字を1文字ずつ表示する

[Yukiスクリプトとして利用可能]

引数txtの値は、内部で1文字ずつ分割され、1文字描画されるごとに、 update_textメソッドが呼び出され、続けてYuki#start_plotもしくはYuki#updateメソッド呼び出し直後に戻る 注意として、改行が文字列中にあれば改行、タブやフィードが文字列中にあれば、nilを返す。

txt

表示させるテキスト

返却値

自分自身を返す



1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
# File 'lib/Miyako/API/yuki.rb', line 1307

def text_by_char(txt)
  return self unless txt.class.method_defined?("chars")
  txt.chars{|ch|
    if ch == "\n" || ch == "\r"
      next wait_by_cond(@is_outer_height)
    elsif @text_box.locate.x + @text_box.font.text_size(ch)[0] >= @text_box.textarea.w
      wait_by_cond(@is_outer_height)
    elsif ch == "\t" || ch == "\f"
      next nil
    end
    @text_box.draw_text(ch)
    @update_text.call(self, ch)
    Fiber.yield
  }
  return self
end

#text_by_char_rapid(txt) ⇒ Object

テキストボックスに文字を1文字ずつ表示する

[Yukiスクリプトとして利用可能]

引数txtの値は、内部で1文字ずつ分割され、1文字描画されるごとに、 update_textメソッドが呼び出され、続けてYuki#start_plotもしくはYuki#updateメソッド呼び出し直後に戻る 注意として、改行が文字列中にあれば改行、タブやフィードが文字列中にあれば、nilを返す。

txt

表示させるテキスト

返却値

自分自身を返す



1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
# File 'lib/Miyako/API/yuki.rb', line 1331

def text_by_char_rapid(txt)
  return self unless txt.class.method_defined?("chars")
  txt.chars{|ch|
    if ch == "\n" || ch == "\r"
      next wait_by_cond(@is_outer_height)
    elsif @text_box.locate.x + @text_box.font.text_size(ch)[0] >= @text_box.textarea.w
      wait_by_cond(@is_outer_height)
    elsif ch == "\t" || ch == "\f"
      next nil
    end
    @text_box.draw_text(ch)
    @update_text.call(self, ch)
  }
  Fiber.yield
  return self
end

#text_by_str(txt) ⇒ Object

テキストボックスに文字を表示する

[Yukiスクリプトとして利用可能]

文字列が描画されるごとに、update_textメソッドが呼び出され、 続けてYuki#start_plotもしくはYuki#updateメソッド呼び出し直後に戻る 注意として、改行が文字列中にあれば改行、タブやフィードが文字列中にあれば、nilを返す。

txt

表示させるテキスト

返却値

自分自身を返す



1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
# File 'lib/Miyako/API/yuki.rb', line 1355

def text_by_str(txt)
  return self unless txt.class.method_defined?("chars")
  use_cr = false
  tw = @text_box.textarea.w
  until txt.empty? do
    if /[\n\r]/.match(txt)
      tmp = Regexp.last_match.pre_match
      txt = Regexp.last_match.post_match
      use_cr = true
    elsif @text_box.locate.x + @text_box.font.text_size(txt)[0] >= tw
      tmp = txt.slice!(0,(tw - @text_box.locate.x) / @text_box.font.size)
      use_cr = true
    elsif /[\t\f]/.match(txt)
      next nil
    else
      tmp = txt
      txt = ""
    end
    @text_box.draw_text(tmp)
    if use_cr
      self.cr
      use_cr = false
    end
    @update_text.call(self, tmp)
    Fiber.yield
  end
  return self
end

#text_by_str_rapid(txt) ⇒ Object

テキストボックスに文字を表示する

[Yukiスクリプトとして利用可能]

文字列が描画されるごとに、update_textメソッドが呼び出され、 続けてYuki#start_plotもしくはYuki#updateメソッド呼び出し直後に戻る 注意として、改行が文字列中にあれば改行、タブやフィードが文字列中にあれば、nilを返す。

txt

表示させるテキスト

返却値

自分自身を返す



1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
# File 'lib/Miyako/API/yuki.rb', line 1391

def text_by_str_rapid(txt)
  return self unless txt.class.method_defined?("chars")
  use_cr = false
  tw = @text_box.textarea.w
  until txt.empty? do
    if /[\n\r]/.match(txt)
      tmp = Regexp.last_match.pre_match
      txt = Regexp.last_match.post_match
      use_cr = true
    elsif @text_box.locate.x + @text_box.font.text_size(txt)[0] >= tw
      tmp = txt.slice!(0,(tw - @text_box.locate.x) / @text_box.font.size)
      use_cr = true
    elsif /[\t\f]/.match(txt)
      next nil
    else
      tmp = txt
      txt = ""
    end
    @text_box.draw_text(tmp)
    if use_cr
      self.cr
      use_cr = false
    end
  end
  @update_text.call(self, tmp)
  Fiber.yield
  return self
end

#text_method(mode) ⇒ Object

テキストボックスに文字を表示する方法を指定する

引数に、:charを渡すと1文字ごと、:stringを渡すと文字列ごとに表示される。それ以外を指定したときは例外が発生 ブロックを渡せば、ブロックの評価中のみ設定が有効になる。 ブロック評価終了後、呼び出し前の設定に戻る

mode

テキストの表示方法。:charのときは文字ごと、:stringのときは文字列ごとに表示される。それ以外を指定したときは例外が発生

返却値

自分自身を返す

Raises:



1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
# File 'lib/Miyako/API/yuki.rb', line 1272

def text_method(mode)
  raise MiyakoValueError, "undefined text_mode! #{mode}" unless @text_methods.keys.include?(mode)
  backup = @text_method_name
  @text_method_name = mode
  if block_given?
    yield
    @text_method_name = backup
  end
  return self
end

#textboxObject

テキストボックスを取得する

[Yukiスクリプトとして利用可能]

テキストボックスが登録されていないときはnilを返す

返却値

テキストボックス



608
609
610
# File 'lib/Miyako/API/yuki.rb', line 608

def textbox
  return @text_box
end

#textbox_allObject

テキストボックス全体を取得する

[Yukiスクリプトとして利用可能]

テキストボックスが登録されていないときはnilを返す

返却値

テキストボックス全体



624
625
626
# File 'lib/Miyako/API/yuki.rb', line 624

def textbox_all
  return @text_box_all
end

#to_plot(&plot) ⇒ Object

プロット用ブロックをYukiへ渡すためのインスタンスを作成する

プロット用に用意したブロック(ブロック引数無し)を、Yukiでの選択結果や移動先として利用できる インスタンスに変換する

返却値

ブロックをオブジェクトに変換したものを返す



1002
1003
1004
# File 'lib/Miyako/API/yuki.rb', line 1002

def to_plot(&plot)
  return plot
end

#under_engineObject



344
345
346
# File 'lib/Miyako/API/yuki.rb', line 344

def under_engine
  @under_yuki
end

#under_engine=(engine) ⇒ Object



348
349
350
# File 'lib/Miyako/API/yuki.rb', line 348

def under_engine=(engine)
  @under_yuki = engine
end

#under_line(&block) ⇒ Object

下線付き文字を描画する

[Yukiスクリプトとして利用可能]

ブロック内で指定した文字列を下線付きで表示する

返却値

自分自身を返す



1488
1489
1490
1491
# File 'lib/Miyako/API/yuki.rb', line 1488

def under_line(&block)
  @text_box.font_under_line{ text block.call }
  return self
end

#updateObject

プロット処理を更新する

ポーズ中、コマンド選択中、 Yuki#wait メソッドによるウェイトの状態確認を行う。 プロット処理の実行確認は出来ない



984
985
986
987
988
989
990
991
992
993
994
995
996
# File 'lib/Miyako/API/yuki.rb', line 984

def update
  return unless @executing
  return @over_yuki.update if @over_yuki && @over_yuki.executing? && !@over_exec
  update_plot_input
  pausing if @pausing
  selecting if @selecting
  waiting   if @waiting
  @pause_release = false
  @select_ok = false
  @select_cancel = false
  @select_amount = [0, 0]
  @executing_fiber.resume
end

#update_animationObject

Yuki#showで表示指定した画像のアニメーションを更新する

showメソッドで指定した画像のupdate_animationメソッドを呼び出す

返却値

描く画像のupdate_spriteメソッドを呼び出した結果を配列で返す



448
449
450
# File 'lib/Miyako/API/yuki.rb', line 448

def update_animation
  @over_yuki.update_animation if @over_yuki && @over_yuki.executing?
end

#update_plot_inputObject

プロット処理に使用する入力情報を更新する

ポーズ中、コマンド選択中に使用する入力デバイスの押下状態を更新する (但し、プロット処理の実行中にのみ更新する) Yuki#update メソッドをそのまま使う場合は呼び出す必要がないが、 Yuki#exec_plot メソッドを呼び出す プロット処理の場合は、メインスレッドから明示的に呼び出す必要がある

返却値

nil を返す



1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
# File 'lib/Miyako/API/yuki.rb', line 1012

def update_plot_input
  return nil if @over_yuki && @over_yuki.executing?
  return nil unless @executing
  if @pausing && @release_checks.inject(false){|r, c| r |= c.call }
    @pause_release = true
  elsif @selecting
    @select_ok = true if @ok_checks.inject(false){|r, c| r |= c.call }
    @select_cancel = true if @cancel && @cancel_checks.inject(false){|r, c| r |= c.call }
    @select_amount = @key_amount_proc.call
    @mouse_amount = @mouse_amount_proc.call
  end
  return nil
end

#valign_during(valign) ⇒ Object

ブロック評価中、行中の表示位置を変更する

[Yukiスクリプトとして利用可能]

ブロックを評価している間だけ、デフォルトの縦の表示位置を変更する 変更できる値は、:top、:middle、:bottomの3種類。 ブロックを渡していないときはエラーを返す

valign

文字の縦の位置(top, middle, bottom)

返却値

自分自身を返す

Raises:



1443
1444
1445
1446
1447
1448
1449
# File 'lib/Miyako/API/yuki.rb', line 1443

def valign_during(valign)
  raise MiyakoProcError, "Can't find block!" unless block_given?
  oalign, @valign = @valign, valign
  yield
  @valign = oalign
  return self
end

#varsObject

変数を参照する

[Yukiスクリプトとして利用可能]

変数の管理オブジェクトを、ハッシュとして参照する。 変数名nameを指定して、インスタンスを参照できる。 未登録の変数はnilが変える。 (例)vars = 2 # 変数への代入

vars[:b] = vars[:a] + 5
show vars[:my_name]
name

パーツ名(シンボル)

返却値

変数管理ハッシュ



473
474
475
# File 'lib/Miyako/API/yuki.rb', line 473

def vars
  @vars
end

#vars_namesObject

変数を参照する

[Yukiスクリプトとして利用可能]

変数の管理オブジェクトを、ハッシュとして参照する。 変数名nameを指定して、インスタンスを参照できる。 未登録の変数はnilが変える。 (例)vars = 2 # 変数への代入

vars[:b] = vars[:a] + 5
vars_names => [:a, :b]
name

パーツ名(シンボル)

返却値

変数管理ハッシュ



489
490
491
# File 'lib/Miyako/API/yuki.rb', line 489

def vars_names
  @vars.keys
end

#visibles_namesObject

現在描画対象のパーツ名のリストを取得する

[Yukiスクリプトとして利用可能]

現在描画しているパーツ名の配列を参照する。 実体のインスタンスは、partsメソッドで参照できるハッシュの値として格納されている。 Yuki#renderで描画する際、配列の先頭から順に、要素に対応するインスタンスを描画する(つまり、配列の後ろにある方が前に描画される (例):[:a, :b, :c]の順に並んでいたら、:cが指すインスタンスが一番前に描画される。

返却値

描画対象リスト



527
528
529
# File 'lib/Miyako/API/yuki.rb', line 527

def visibles_names
  @visibles.names
end

#wait(length) ⇒ Object

プロットの処理を待機する

[Yukiスクリプトとして利用可能]

指定の秒数(少数可)、プロットの処理を待機する。 待機中、update_innerメソッドを呼び出し、続けて、処理をYuki#startもしくはYuki#update呼び出し直後に戻す Yuki#updateが呼び出されても待機中の場合は、再び上記の処理を繰り返す

length

待機する長さ。単位は秒。少数可。

返却値

自分自身を返す



1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
# File 'lib/Miyako/API/yuki.rb', line 1669

def wait(length)
  @waiting_timer = WaitCounter.new(length)
  @waiting_timer.start
  @waiting = true
  while @waiting
    @update_inner.call(self)
    Fiber.yield
  end
  return self
end

#wait_by_cond(cond = nil) ⇒ Object

条件に合っていればポーズをかける

[Yukiスクリプトとして利用可能]

引数で設定した条件(Proc,メソッドインスタンス,ブロック)を評価した結果、trueのときはポーズを行い、 condの値がnilで、ブロックが渡されていないときは何もしない falseのときは改行してプロットの処理を継続する

cond

条件を示すオブジェクト(返却値はtrue/false)。デフォルトはnil(渡されたブロックを評価する)

返却値

自分自身を返す



1260
1261
1262
1263
1264
# File 'lib/Miyako/API/yuki.rb', line 1260

def wait_by_cond(cond = nil)
  return yield ? pause_and_clear : cr if block_given?
  return cond.call ? pause_and_clear : cr if cond
  return self
end

#wait_by_finish(name) ⇒ Object

遷移図の処理が終了するまで待つ

[Yukiスクリプトとして利用可能]

nameで指定した遷移図の処理が終了するまで、プロットを停止する name: 遷移図名(シンボル)

返却値

自分自身を返す



878
879
880
881
882
883
# File 'lib/Miyako/API/yuki.rb', line 878

def wait_by_finish(name)
  until @parts[name].finish?
    @update_inner.call(self)
  end
  return self
end

#wait_over_execObject

別のYukiエンジンの実行が終わるまで待つ

[Yukiスクリプトとして利用可能]

over_execを呼び出した時、処理がすぐに次の行へ移るため、 over_execの処理が終了するのを待たせるためのメソッド

返却値

自分自身を返す



907
908
909
910
911
912
913
914
# File 'lib/Miyako/API/yuki.rb', line 907

def wait_over_exec
  @over_exec = true
  while @over_yuki && @over_yuki.executing?
    @over_yuki.update
    Fiber.yield
  end
  return self
end

#waitingObject

:nodoc:



1680
1681
1682
1683
# File 'lib/Miyako/API/yuki.rb', line 1680

def waiting #:nodoc:
  return if @waiting_timer.waiting?
  @waiting = false
end

#waiting?Boolean

Yuki#waitメソッドによる処理待ちの問い合わせメソッド

[Yukiスクリプトとして利用可能]
返却値

処理待ちの時はtrueを返す

Returns:

  • (Boolean)


1242
1243
1244
# File 'lib/Miyako/API/yuki.rb', line 1242

def waiting?
  return @waiting
end