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 }

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:



222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
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
# File 'lib/Miyako/API/yuki.rb', line 222

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),
                  :string => self.method(:text_by_str) }
  @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

  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.



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

def bgs
  @bgs
end

#cancel_checksObject (readonly)

release_checks

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

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

ok_checks

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

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

cancel_checks

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

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



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

def cancel_checks
  @cancel_checks
end

#ok_checksObject (readonly)

release_checks

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

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

ok_checks

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

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

cancel_checks

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

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



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

def ok_checks
  @ok_checks
end

#on_disableObject (readonly)

Returns the value of attribute on_disable.



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

def on_disable
  @on_disable
end

#post_cancelObject (readonly)

Returns the value of attribute post_cancel.



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

def post_cancel
  @post_cancel
end

#post_commandObject (readonly)

Returns the value of attribute post_command.



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

def post_command
  @post_command
end

#post_pauseObject (readonly)

Returns the value of attribute post_pause.



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

def post_pause
  @post_pause
end

#pre_cancelObject (readonly)

Returns the value of attribute pre_cancel.



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

def pre_cancel
  @pre_cancel
end

#pre_commandObject (readonly)

Returns the value of attribute pre_command.



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

def pre_command
  @pre_command
end

#pre_pauseObject (readonly)

Returns the value of attribute pre_pause.



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

def pre_pause
  @pre_pause
end

#pre_visiblesObject (readonly)

Returns the value of attribute pre_visibles.



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

def pre_visibles
  @pre_visibles
end

#release_checksObject (readonly)

release_checks

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

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

ok_checks

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

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

cancel_checks

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

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



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

def release_checks
  @release_checks
end

#selecting_procsObject (readonly)

selecting_procs

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

ブロックは4つの引数を取る必要がある。 (1)コマンド決定ボタンを押した?(true/false) (2)キャンセルボタンを押した?(true/false) (3)キーパッドの移動量を示す配列() (4)マウスの位置を示す配列() callメソッドを持つブロックが使用可能。



185
186
187
# File 'lib/Miyako/API/yuki.rb', line 185

def selecting_procs
  @selecting_procs
end

#update_clear(yuki) ⇒ Object

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

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

yuki

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



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

def update_clear(yuki)
end

#update_cr(yuki) ⇒ Object

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

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

yuki

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



158
159
# File 'lib/Miyako/API/yuki.rb', line 158

def update_cr(yuki)
end

#update_inner(yuki) ⇒ Object

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

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

yuki

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



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

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文字)



152
153
# File 'lib/Miyako/API/yuki.rb', line 152

def update_text(yuki, ch)
end

#valignObject (readonly)

Returns the value of attribute valign.



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

def valign
  @valign
end

#visibleObject

Returns the value of attribute visible.



167
168
169
# File 'lib/Miyako/API/yuki.rb', line 167

def visible
  @visible
end

#visiblesObject (readonly)

Returns the value of attribute visibles.



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

def visibles
  @visibles
end

Class Method Details

.add_method(name, &block) ⇒ Object

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

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

name

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

block

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

Raises:



195
196
197
198
199
200
# File 'lib/Miyako/API/yuki.rb', line 195

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

#add_method(name, &block) ⇒ Object

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

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

name

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

block

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

Raises:



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

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



417
418
419
420
421
422
423
# File 'lib/Miyako/API/yuki.rb', line 417

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

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

返却値

自分自身を返す



746
747
748
749
750
751
752
753
# File 'lib/Miyako/API/yuki.rb', line 746

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

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

返却値

自分自身を返す



729
730
731
732
733
734
735
736
737
738
739
# File 'lib/Miyako/API/yuki.rb', line 729

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が指すインスタンスが一番前に描画される。

返却値

描画対象リスト



522
523
524
# File 'lib/Miyako/API/yuki.rb', line 522

def bgs_names
  @bgs.names
end

#bold(&block) ⇒ Object

太文字を描画する

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

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

返却値

自分自身を返す



1354
1355
1356
1357
# File 'lib/Miyako/API/yuki.rb', line 1354

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

#box_shared?Boolean

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

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

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

返却値

true/false

Returns:

  • (Boolean)


644
645
646
# File 'lib/Miyako/API/yuki.rb', line 644

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

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

返却値

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



1017
1018
1019
1020
# File 'lib/Miyako/API/yuki.rb', line 1017

def call_plot(plot_proc = nil, &plot_block)
  return plot_proc ? self.instance_exec(&plot_proc) :
                     self.instance_exec(&plot_block)
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:



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

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)


1164
1165
1166
# File 'lib/Miyako/API/yuki.rb', line 1164

def canceled?
  return @result == @cancel
end

#clearObject

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

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

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

返却値

自分自身を返す



1395
1396
1397
1398
1399
# File 'lib/Miyako/API/yuki.rb', line 1395

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

#color(color, &block) ⇒ Object

文字色を変更する

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

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

color

文字色

返却値

自分自身を返す



1316
1317
1318
1319
# File 'lib/Miyako/API/yuki.rb', line 1316

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:



1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
# File 'lib/Miyako/API/yuki.rb', line 1452

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を返す

返却値

コマンドボックス



587
588
589
# File 'lib/Miyako/API/yuki.rb', line 587

def commandbox
  return @command_box
end

#commandbox_allObject

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

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

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

返却値

コマンドボックス全体



603
604
605
# File 'lib/Miyako/API/yuki.rb', line 603

def commandbox_all
  return @command_box_all
end

#condition(&block) ⇒ Object

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

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

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

block

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

返却値

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



1173
1174
1175
# File 'lib/Miyako/API/yuki.rb', line 1173

def condition(&block)
  return block
end

#cr(tm = 1) ⇒ Object

改行を行う

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

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

tm

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

返却値

自分自身を返す



1383
1384
1385
1386
1387
1388
1389
# File 'lib/Miyako/API/yuki.rb', line 1383

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

#disable_mouseObject

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

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

返却値

自分自身を返す



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

def disable_mouse
  @mouse_enable = false
  return self
end

#disposeObject

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



1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
# File 'lib/Miyako/API/yuki.rb', line 1609

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クラスインスタンス生成時はマウス利用可能

返却値

自分自身を返す



337
338
339
340
# File 'lib/Miyako/API/yuki.rb', line 337

def enable_mouse
  @mouse_enable = true
  return self
end

#executing?Boolean

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

返却値

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

Returns:

  • (Boolean)


1024
1025
1026
# File 'lib/Miyako/API/yuki.rb', line 1024

def executing?
  return @executing
end

#hide(*names) ⇒ Object

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

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

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

names

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

返却値

自分自身を返す



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

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スクリプトとして利用可能]
返却値

レシーバ



634
635
636
637
# File 'lib/Miyako/API/yuki.rb', line 634

def hide_commandbox
  @command_box_all.hide
  return self
end

#hide_textboxObject

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

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

レシーバ



626
627
628
629
# File 'lib/Miyako/API/yuki.rb', line 626

def hide_textbox
  @text_box_all.hide
  return self
end

#initialize_copy(obj) ⇒ Object

:nodoc:



311
312
313
# File 'lib/Miyako/API/yuki.rb', line 311

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

#is_scenario?(result) ⇒ Boolean

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

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

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

返却値

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

Returns:

  • (Boolean)


1157
1158
1159
# File 'lib/Miyako/API/yuki.rb', line 1157

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

#is_scene?(result) ⇒ Boolean

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

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

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

返却値

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

Returns:

  • (Boolean)


1148
1149
1150
# File 'lib/Miyako/API/yuki.rb', line 1148

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

#italic(&block) ⇒ Object

斜体文字を描画する

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

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

返却値

自分自身を返す



1364
1365
1366
1367
# File 'lib/Miyako/API/yuki.rb', line 1364

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

#load_bg(name, filename) ⇒ Object

背景を登録する

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

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

name

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

filename

読み込むファイル名

返却値

自分自身を返す



779
780
781
782
783
784
785
# File 'lib/Miyako/API/yuki.rb', line 779

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

読み込むファイル名

返却値

自分自身を返す



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

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

#load_se(name, filename) ⇒ Object

効果音を登録する

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

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

name

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

filename

読み込むファイル名

返却値

自分自身を返す



806
807
808
809
# File 'lib/Miyako/API/yuki.rb', line 806

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
返却値

自分自身を返す



764
765
766
767
768
769
770
# File 'lib/Miyako/API/yuki.rb', line 764

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)


355
356
357
# File 'lib/Miyako/API/yuki.rb', line 355

def mouse_enable?
  @mouse_enable
end

#now_pageObject

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

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

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

返却値

ページ名



1583
1584
1585
# File 'lib/Miyako/API/yuki.rb', line 1583

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:



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

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



315
316
317
# File 'lib/Miyako/API/yuki.rb', line 315

def over_engine
  @over_yuki
end

#over_engine=(engine) ⇒ Object



319
320
321
322
# File 'lib/Miyako/API/yuki.rb', line 319

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:



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

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:



1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
# File 'lib/Miyako/API/yuki.rb', line 1568

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

返却値

パーツ管理ハッシュ



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

def parts
  @parts
end

#parts_namesObject

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

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

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

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

パーツ管理ハッシュ



486
487
488
# File 'lib/Miyako/API/yuki.rb', line 486

def parts_names
  @parts.keys
end

#pauseObject

ポーズを行う

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

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

返却値

自分自身を返す



1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
# File 'lib/Miyako/API/yuki.rb', line 1411

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スクリプトとして利用可能]

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

返却値

自分自身を返す



1435
1436
1437
# File 'lib/Miyako/API/yuki.rb', line 1435

def pause_and_clear
  return pause.clear
end

#pausingObject

:nodoc:



1424
1425
1426
1427
1428
1429
# File 'lib/Miyako/API/yuki.rb', line 1424

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

#pausing?Boolean

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

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

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

Returns:

  • (Boolean)


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

def pausing?
  return @pausing
end

#play(name) ⇒ Object

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

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

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

name

パーツ名(シンボル)

返却値

自分自身を返す



828
829
830
831
# File 'lib/Miyako/API/yuki.rb', line 828

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

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

:nodoc:



997
998
999
1000
1001
1002
1003
1004
1005
1006
# File 'lib/Miyako/API/yuki.rb', line 997

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

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

返却値

自分自身を返す



714
715
716
717
718
719
720
721
# File 'lib/Miyako/API/yuki.rb', line 714

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

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

返却値

自分自身を返す



697
698
699
700
701
702
703
704
705
706
707
# File 'lib/Miyako/API/yuki.rb', line 697

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が指すインスタンスが一番前に描画される。

返却値

描画対象リスト



510
511
512
# File 'lib/Miyako/API/yuki.rb', line 510

def pre_visibles_names
  @pre_visibles.names
end

#process(*params) ⇒ Object

一旦処理をメインに戻す

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

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

params

メインループに返す引数

返却値

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



1604
1605
1606
# File 'lib/Miyako/API/yuki.rb', line 1604

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

#regist_parts(name, parts) ⇒ Object

オブジェクトを登録する

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

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

name

パーツ名(シンボル)

parts

登録対象のインスタンス

返却値

自分自身を返す



534
535
536
537
# File 'lib/Miyako/API/yuki.rb', line 534

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:



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

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

パーツ名(シンボル)

返却値

自分自身を返す



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

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

#renderObject

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

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

返却値

自分自身を返す



363
364
365
366
# File 'lib/Miyako/API/yuki.rb', line 363

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

#render_allObject



377
378
379
380
381
382
383
# File 'lib/Miyako/API/yuki.rb', line 377

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の時は描画されない。

返却値

自分自身を返す



372
373
374
375
# File 'lib/Miyako/API/yuki.rb', line 372

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

#render_to_all(dst) ⇒ Object



385
386
387
388
389
390
391
# File 'lib/Miyako/API/yuki.rb', line 385

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



409
410
411
412
413
414
415
# File 'lib/Miyako/API/yuki.rb', line 409

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

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

返却値

自分自身を返す



1044
1045
1046
1047
# File 'lib/Miyako/API/yuki.rb', line 1044

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

#reset_ok_checksObject

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

返却値

自分自身を返す



1037
1038
1039
1040
# File 'lib/Miyako/API/yuki.rb', line 1037

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

#reset_pre_post_cancelObject

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

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

返却値

自分自身を返す



1070
1071
1072
1073
1074
# File 'lib/Miyako/API/yuki.rb', line 1070

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

#reset_pre_post_commandObject

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

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

返却値

自分自身を返す



1061
1062
1063
1064
1065
# File 'lib/Miyako/API/yuki.rb', line 1061

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

#reset_pre_post_releaseObject

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

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

返却値

自分自身を返す



1052
1053
1054
1055
1056
# File 'lib/Miyako/API/yuki.rb', line 1052

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

#reset_release_checksObject

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

返却値

自分自身を返す



1030
1031
1032
1033
# File 'lib/Miyako/API/yuki.rb', line 1030

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

#reset_selectingObject

:nodoc:



1519
1520
1521
1522
1523
# File 'lib/Miyako/API/yuki.rb', line 1519

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

#resultObject

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

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

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

返却値

プロットの処理結果



1130
1131
1132
# File 'lib/Miyako/API/yuki.rb', line 1130

def result
  return @plot_result
end

#result=(ret = nil) ⇒ Object

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

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

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

返却値

自分自身を返す



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

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

テキストボックス全体

返却値

自分自身を返す



569
570
571
572
573
# File 'lib/Miyako/API/yuki.rb', line 569

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

最初に実行するページ名



1591
1592
1593
# File 'lib/Miyako/API/yuki.rb', line 1591

def select_first_page(name)
  @first_page = name
end

#select_plot(plot_proc) ⇒ Object

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

plot_proc

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

返却値

自分自身を返す



923
924
925
926
# File 'lib/Miyako/API/yuki.rb', line 923

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

#select_resultObject

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

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

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

返却値

コマンドの選択結果



1531
1532
1533
# File 'lib/Miyako/API/yuki.rb', line 1531

def select_result
  return @result
end

#select_textbox(box, box_all = nil) ⇒ Object

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

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

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

テキストボックス本体

box_all

テキストボックス全体

返却値

自分自身を返す



549
550
551
552
553
554
555
556
557
# File 'lib/Miyako/API/yuki.rb', line 549

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:



1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
# File 'lib/Miyako/API/yuki.rb', line 1489

def selecting #:nodoc:
  return unless @selecting
  return unless @command_box.selecting?
  @selecting_procs.each{|sp|
    sp.call(@select_ok, @select_cansel, @select_amount, @mouse_amount)
  }
  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)


1180
1181
1182
# File 'lib/Miyako/API/yuki.rb', line 1180

def selecting?
  return @selecting
end

#setup(*params, &proc) ⇒ Object

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

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

params

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

返却値

自分自身を返す

Raises:



893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
# File 'lib/Miyako/API/yuki.rb', line 893

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

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

返却値

自分自身を返す



665
666
667
668
669
670
671
672
673
674
675
# File 'lib/Miyako/API/yuki.rb', line 665

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スクリプトとして利用可能]
返却値

レシーバ



618
619
620
621
# File 'lib/Miyako/API/yuki.rb', line 618

def show_commandbox
  @command_box_all.show
  return self
end

#show_textboxObject

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

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

レシーバ



610
611
612
613
# File 'lib/Miyako/API/yuki.rb', line 610

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で変更可能)

返却値

自分自身を返す



1342
1343
1344
1345
1346
1347
# File 'lib/Miyako/API/yuki.rb', line 1342

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

パーツ名(シンボル)

返却値

自分自身を返す



817
818
819
820
# File 'lib/Miyako/API/yuki.rb', line 817

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

#start_allObject



393
394
395
396
397
398
399
# File 'lib/Miyako/API/yuki.rb', line 393

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:



942
943
944
945
946
947
948
949
950
# File 'lib/Miyako/API/yuki.rb', line 942

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

パーツ名(シンボル)

返却値

自分自身を返す



839
840
841
842
# File 'lib/Miyako/API/yuki.rb', line 839

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

#stop_allObject



401
402
403
404
405
406
407
# File 'lib/Miyako/API/yuki.rb', line 401

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

表示させるテキスト

返却値

自分自身を返す



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

def text(txt)
  return self if txt.eql?(self)
  return self if txt.empty?
  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

表示させるテキスト

返却値

自分自身を返す



1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
# File 'lib/Miyako/API/yuki.rb', line 1254

def text_by_char(txt)
  return self if txt.eql?(self)
  txt.chars{|ch|
    if /[\n\r]/.match(ch)
      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 /[\t\f]/.match(ch)
      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

表示させるテキスト

返却値

自分自身を返す



1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
# File 'lib/Miyako/API/yuki.rb', line 1278

def text_by_str(txt)
  return self if txt.eql?(self)
  use_cr = false
  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] >= @text_box.textarea.w
      w = (@text_box.textarea.w - @text_box.locate.x) / @text_box.font.size
      tmp = txt.slice!(0,w)
      use_cr = true
    elsif /[\t\f]/.match(txt)
      next nil
    else
      tmp = txt
      txt = ""
    end
    @text_box.draw_text(tmp)
    self.cr if use_cr
    @update_text.call(self, tmp)
    Fiber.yield
    use_cr = false
  end
  return self
end

#text_method(mode) ⇒ Object

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

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

mode

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

返却値

自分自身を返す

Raises:



1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
# File 'lib/Miyako/API/yuki.rb', line 1217

def text_method(mode)
  raise MiyakoValueError, "undefined text_mode! #{mode}" unless [:char,:string].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を返す

返却値

テキストボックス



579
580
581
# File 'lib/Miyako/API/yuki.rb', line 579

def textbox
  return @text_box
end

#textbox_allObject

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

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

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

返却値

テキストボックス全体



595
596
597
# File 'lib/Miyako/API/yuki.rb', line 595

def textbox_all
  return @text_box_all
end

#to_plot(&plot) ⇒ Object

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

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

返却値

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



973
974
975
# File 'lib/Miyako/API/yuki.rb', line 973

def to_plot(&plot)
  return plot
end

#under_engineObject



324
325
326
# File 'lib/Miyako/API/yuki.rb', line 324

def under_engine
  @under_yuki
end

#under_engine=(engine) ⇒ Object



328
329
330
# File 'lib/Miyako/API/yuki.rb', line 328

def under_engine=(engine)
  @under_yuki = engine
end

#under_line(&block) ⇒ Object

下線付き文字を描画する

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

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

返却値

自分自身を返す



1373
1374
1375
1376
# File 'lib/Miyako/API/yuki.rb', line 1373

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

#updateObject

プロット処理を更新する

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



955
956
957
958
959
960
961
962
963
964
965
966
967
# File 'lib/Miyako/API/yuki.rb', line 955

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メソッドを呼び出した結果を配列で返す



428
429
430
# File 'lib/Miyako/API/yuki.rb', line 428

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

#update_plot_inputObject

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

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

返却値

nil を返す



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

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:



1328
1329
1330
1331
1332
1333
1334
# File 'lib/Miyako/API/yuki.rb', line 1328

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

パーツ名(シンボル)

返却値

変数管理ハッシュ



444
445
446
# File 'lib/Miyako/API/yuki.rb', line 444

def vars
  @vars
end

#vars_namesObject

変数を参照する

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

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

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

パーツ名(シンボル)

返却値

変数管理ハッシュ



460
461
462
# File 'lib/Miyako/API/yuki.rb', line 460

def vars_names
  @vars.keys
end

#visibles_namesObject

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

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

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

返却値

描画対象リスト



498
499
500
# File 'lib/Miyako/API/yuki.rb', line 498

def visibles_names
  @visibles.names
end

#wait(length) ⇒ Object

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

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

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

length

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

返却値

自分自身を返す



1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
# File 'lib/Miyako/API/yuki.rb', line 1542

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(渡されたブロックを評価する)

返却値

自分自身を返す



1205
1206
1207
1208
1209
# File 'lib/Miyako/API/yuki.rb', line 1205

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: 遷移図名(シンボル)

返却値

自分自身を返す



849
850
851
852
853
854
# File 'lib/Miyako/API/yuki.rb', line 849

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の処理が終了するのを待たせるためのメソッド

返却値

自分自身を返す



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

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

#waitingObject

:nodoc:



1553
1554
1555
1556
# File 'lib/Miyako/API/yuki.rb', line 1553

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

#waiting?Boolean

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

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

処理待ちの時はtrueを返す

Returns:

  • (Boolean)


1187
1188
1189
# File 'lib/Miyako/API/yuki.rb', line 1187

def waiting?
  return @waiting
end