Class: Miyako::InitiativeYuki

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

Overview

主導権を持ったYuki本体クラス

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

Defined Under Namespace

Classes: Canceled, Command, CommandEX

Instance Attribute 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, #ow, #ox, #oy, #part_rect, #rect, #render_xy, #render_xy_to, #to_sprite, #to_unit, #visible, #visible=

Methods included from InitiativeYukiTemplate

#clear_inner, #cr_inner, #input_inner, #pausing_inner, #render_inner, #render_to_inner, #selecting_inner, #text_inner, #update_animation_inner, #update_inner, #waiting_inner

Constructor Details

#initialize(*params, &proc) ⇒ InitiativeYuki

Yukiを初期化する

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

params

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

Raises:



157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
# File 'lib/Miyako/API/i_yuki.rb', line 157

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

  @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

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

  @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

  @engine_stack = []

  raise MiyakoProcError, "Aagument 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

#baseObject (readonly)

Returns the value of attribute base.



98
99
100
# File 'lib/Miyako/API/i_yuki.rb', line 98

def base
  @base
end

#bgsObject (readonly)

Returns the value of attribute bgs.



98
99
100
# File 'lib/Miyako/API/i_yuki.rb', line 98

def bgs
  @bgs
end

#cancel_checksObject (readonly)

release_checks

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

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

ok_checks

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

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

cancel_checks

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

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



106
107
108
# File 'lib/Miyako/API/i_yuki.rb', line 106

def cancel_checks
  @cancel_checks
end

#engine_stackObject (readonly)

over_execを使用したシナリオエンジンのコールスタック over_execするエンジンを基準に、一番大本のエンジンから順に積み込まれる 自分自身(self)は含まない



120
121
122
# File 'lib/Miyako/API/i_yuki.rb', line 120

def engine_stack
  @engine_stack
end

#ok_checksObject (readonly)

release_checks

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

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

ok_checks

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

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

cancel_checks

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

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



106
107
108
# File 'lib/Miyako/API/i_yuki.rb', line 106

def ok_checks
  @ok_checks
end

#on_disableObject (readonly)

Returns the value of attribute on_disable.



107
108
109
# File 'lib/Miyako/API/i_yuki.rb', line 107

def on_disable
  @on_disable
end

#post_cancelObject (readonly)

Returns the value of attribute post_cancel.



107
108
109
# File 'lib/Miyako/API/i_yuki.rb', line 107

def post_cancel
  @post_cancel
end

#post_commandObject (readonly)

Returns the value of attribute post_command.



107
108
109
# File 'lib/Miyako/API/i_yuki.rb', line 107

def post_command
  @post_command
end

#post_pauseObject (readonly)

Returns the value of attribute post_pause.



107
108
109
# File 'lib/Miyako/API/i_yuki.rb', line 107

def post_pause
  @post_pause
end

#pre_cancelObject (readonly)

Returns the value of attribute pre_cancel.



107
108
109
# File 'lib/Miyako/API/i_yuki.rb', line 107

def pre_cancel
  @pre_cancel
end

#pre_commandObject (readonly)

Returns the value of attribute pre_command.



107
108
109
# File 'lib/Miyako/API/i_yuki.rb', line 107

def pre_command
  @pre_command
end

#pre_pauseObject (readonly)

Returns the value of attribute pre_pause.



107
108
109
# File 'lib/Miyako/API/i_yuki.rb', line 107

def pre_pause
  @pre_pause
end

#pre_visiblesObject (readonly)

Returns the value of attribute pre_visibles.



98
99
100
# File 'lib/Miyako/API/i_yuki.rb', line 98

def pre_visibles
  @pre_visibles
end

#release_checksObject (readonly)

release_checks

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

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

ok_checks

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

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

cancel_checks

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

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



106
107
108
# File 'lib/Miyako/API/i_yuki.rb', line 106

def release_checks
  @release_checks
end

#selecting_procsObject (readonly)

selecting_procs

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

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



115
116
117
# File 'lib/Miyako/API/i_yuki.rb', line 115

def selecting_procs
  @selecting_procs
end

#valignObject (readonly)

Returns the value of attribute valign.



99
100
101
# File 'lib/Miyako/API/i_yuki.rb', line 99

def valign
  @valign
end

#visiblesObject (readonly)

Returns the value of attribute visibles.



98
99
100
# File 'lib/Miyako/API/i_yuki.rb', line 98

def visibles
  @visibles
end

Instance Method Details

#add_method(name, &block) ⇒ Object

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

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

name

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

block

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

Raises:



145
146
147
148
149
150
# File 'lib/Miyako/API/i_yuki.rb', line 145

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

#bg_hide(*names) ⇒ Object

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

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

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

names

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

返却値

自分自身を返す



645
646
647
648
649
650
651
652
# File 'lib/Miyako/API/i_yuki.rb', line 645

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

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

返却値

自分自身を返す



628
629
630
631
632
633
634
635
636
637
638
# File 'lib/Miyako/API/i_yuki.rb', line 628

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

返却値

描画対象リスト



421
422
423
# File 'lib/Miyako/API/i_yuki.rb', line 421

def bgs_names
  @bgs.names
end

#bold(&block) ⇒ Object

太文字を描画する

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

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

返却値

自分自身を返す



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

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

#box_shared?Boolean

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

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

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

返却値

true/false

Returns:

  • (Boolean)


543
544
545
# File 'lib/Miyako/API/i_yuki.rb', line 543

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

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

返却値

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



914
915
916
917
# File 'lib/Miyako/API/i_yuki.rb', line 914

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:



1006
1007
1008
1009
1010
1011
1012
1013
# File 'lib/Miyako/API/i_yuki.rb', line 1006

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)


1055
1056
1057
# File 'lib/Miyako/API/i_yuki.rb', line 1055

def canceled?
  return @result == @cancel
end

#clearObject

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

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

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

返却値

自分自身を返す



1268
1269
1270
1271
1272
# File 'lib/Miyako/API/i_yuki.rb', line 1268

def clear
  @text_box.clear
  @base.clear_inner(self) if @base
  return self
end

#color(color, &block) ⇒ Object

文字色を変更する

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

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

color

文字色

返却値

自分自身を返す



1189
1190
1191
1192
# File 'lib/Miyako/API/i_yuki.rb', line 1189

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

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

コマンドを表示する

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

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

command_list

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

cancel_to

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

chain_block

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

返却値

自分自身を返す

Raises:



1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
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
1383
1384
1385
# File 'lib/Miyako/API/i_yuki.rb', line 1321

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

  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}
  yield if block_given?
  @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))
  @result = nil
  selecting = true
  reset_selecting
  while selecting
    pre_process
    @base.selecting_inner(self) if @base
    @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
    @selecting_procs.each{|sp|
      sp.call(@select_ok, @select_cansel, @select_amount, @mouse_amount)
    }
    if @select_ok
      unless @command_box.enable_choice?
        @on_disable.each{|proc| proc.call}
        post_process
        next
      end
      @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
    post_process
  end
  @post_cancel.each{|proc| proc.call}
  @post_command.each{|proc| proc.call}
  return self
end

#commandboxObject

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

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

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

返却値

コマンドボックス



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

def commandbox
  return @command_box
end

#commandbox_allObject

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

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

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

返却値

コマンドボックス全体



502
503
504
# File 'lib/Miyako/API/i_yuki.rb', line 502

def commandbox_all
  return @command_box_all
end

#condition(&block) ⇒ Object

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

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

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

block

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

返却値

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



1064
1065
1066
# File 'lib/Miyako/API/i_yuki.rb', line 1064

def condition(&block)
  return block
end

#cr(tm = 1) ⇒ Object

改行を行う

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

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

tm

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

返却値

自分自身を返す



1256
1257
1258
1259
1260
1261
1262
# File 'lib/Miyako/API/i_yuki.rb', line 1256

def cr(tm = 1)
  tm.times{|n|
    @text_box.cr
    @base.cr_inner(self) if @base
  }
  return self
end

#create_engine_stack(base) ⇒ Object

エンジンスタックを生成する

base

over_exec呼び出し元のエンジン



237
238
239
240
# File 'lib/Miyako/API/i_yuki.rb', line 237

def create_engine_stack(base)
  return unless @engine_stack.empty?
  @engine_stack.push(*base.engine_stack, base)
end

#disable_mouseObject

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

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

返却値

自分自身を返す



257
258
259
260
# File 'lib/Miyako/API/i_yuki.rb', line 257

def disable_mouse
  @mouse_enable = false
  return self
end

#disposeObject

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



1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
# File 'lib/Miyako/API/i_yuki.rb', line 1461

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

  @is_outer_height = nil
end

#enable_mouseObject

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

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

返却値

自分自身を返す



247
248
249
250
# File 'lib/Miyako/API/i_yuki.rb', line 247

def enable_mouse
  @mouse_enable = true
  return self
end

#hide(*names) ⇒ Object

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

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

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

names

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

返却値

自分自身を返す



581
582
583
584
585
586
587
588
# File 'lib/Miyako/API/i_yuki.rb', line 581

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

レシーバ



533
534
535
536
# File 'lib/Miyako/API/i_yuki.rb', line 533

def hide_commandbox
  @command_box_all.hide
  return self
end

#hide_textboxObject

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

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

レシーバ



525
526
527
528
# File 'lib/Miyako/API/i_yuki.rb', line 525

def hide_textbox
  @text_box_all.hide
  return self
end

#initialize_copy(obj) ⇒ Object

:nodoc:



231
232
233
# File 'lib/Miyako/API/i_yuki.rb', line 231

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

#is_scenario?(result) ⇒ Boolean

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

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

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

返却値

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

Returns:

  • (Boolean)


1048
1049
1050
# File 'lib/Miyako/API/i_yuki.rb', line 1048

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

#is_scene?(result) ⇒ Boolean

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

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

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

返却値

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

Returns:

  • (Boolean)


1039
1040
1041
# File 'lib/Miyako/API/i_yuki.rb', line 1039

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

#italic(&block) ⇒ Object

斜体文字を描画する

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

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

返却値

自分自身を返す



1237
1238
1239
1240
# File 'lib/Miyako/API/i_yuki.rb', line 1237

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

#load_bg(name, filename) ⇒ Object

背景を登録する

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

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

name

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

filename

読み込むファイル名

返却値

自分自身を返す



678
679
680
681
682
683
684
# File 'lib/Miyako/API/i_yuki.rb', line 678

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

読み込むファイル名

返却値

自分自身を返す



693
694
695
696
# File 'lib/Miyako/API/i_yuki.rb', line 693

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

#load_se(name, filename) ⇒ Object

効果音を登録する

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

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

name

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

filename

読み込むファイル名

返却値

自分自身を返す



705
706
707
708
# File 'lib/Miyako/API/i_yuki.rb', line 705

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

自分自身を返す



663
664
665
666
667
668
669
# File 'lib/Miyako/API/i_yuki.rb', line 663

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)


265
266
267
# File 'lib/Miyako/API/i_yuki.rb', line 265

def mouse_enable?
  @mouse_enable
end

#now_pageObject

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

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

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

返却値

ページ名



1448
1449
1450
# File 'lib/Miyako/API/i_yuki.rb', line 1448

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:



990
991
992
993
994
995
996
997
# File 'lib/Miyako/API/i_yuki.rb', line 990

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



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

def over_engine
  @over_yuki
end

#over_engine=(engine) ⇒ Object



844
845
846
847
848
849
# File 'lib/Miyako/API/i_yuki.rb', line 844

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

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

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

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

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

yuki

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

plot

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

params

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

返却値

自分自身を返す

Raises:



869
870
871
872
873
874
875
# File 'lib/Miyako/API/i_yuki.rb', line 869

def over_exec(yuki = nil, base = 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(base ? base : @over_yuki, plot, *params)
  yuki.engine_stack.clear if yuki
  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:



1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
# File 'lib/Miyako/API/i_yuki.rb', line 1433

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

返却値

パーツ管理ハッシュ



371
372
373
# File 'lib/Miyako/API/i_yuki.rb', line 371

def parts
  @parts
end

#parts_namesObject

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

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

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

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

パーツ管理ハッシュ



385
386
387
# File 'lib/Miyako/API/i_yuki.rb', line 385

def parts_names
  @parts.keys
end

#pauseObject

ポーズを行う

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

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

返却値

自分自身を返す



1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
# File 'lib/Miyako/API/i_yuki.rb', line 1284

def pause
  @pre_pause.each{|proc| proc.call}
  yield if block_given?
  @text_box.pause
  pause_release = false
  until pause_release
    pre_process
    @base.pausing_inner(self) if @base
    pause_release = @release_checks.inject(false){|r, c| r |= c.call }
    post_process
  end
  @text_box.release
  @post_pause.each{|proc| proc.call}
  return self
end

#pause_and_clearObject

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

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

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

返却値

自分自身を返す



1304
1305
1306
# File 'lib/Miyako/API/i_yuki.rb', line 1304

def pause_and_clear
  return pause.clear
end

#play(name) ⇒ Object

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

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

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

name

パーツ名(シンボル)

返却値

自分自身を返す



728
729
730
731
732
# File 'lib/Miyako/API/i_yuki.rb', line 728

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

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

:nodoc:



896
897
898
899
900
901
902
903
# File 'lib/Miyako/API/i_yuki.rb', line 896

def plot_facade(plot_proc = nil, *params, &plot_block) #:nodoc:
  @plot_result = nil
  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!")
end

#post_processObject



773
774
775
776
777
778
# File 'lib/Miyako/API/i_yuki.rb', line 773

def post_process
  self.render
  WaitCounter.post_update
  Animation.update
  Screen.render
end

#pre_hide(*names) ⇒ Object

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

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

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

names

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

返却値

自分自身を返す



613
614
615
616
617
618
619
620
# File 'lib/Miyako/API/i_yuki.rb', line 613

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_process(is_clear = true) ⇒ Object



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

def pre_process(is_clear = true)
  Audio.update
  Input.update
  WaitCounter.update
  self.update_input
  self.update
  self.update_animation
  Screen.clear if is_clear
end

#pre_show(*names) ⇒ Object

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

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

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

names

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

返却値

自分自身を返す



596
597
598
599
600
601
602
603
604
605
606
# File 'lib/Miyako/API/i_yuki.rb', line 596

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

返却値

描画対象リスト



409
410
411
# File 'lib/Miyako/API/i_yuki.rb', line 409

def pre_visibles_names
  @pre_visibles.names
end

#process(is_clear = true) ⇒ Object



758
759
760
761
# File 'lib/Miyako/API/i_yuki.rb', line 758

def process(is_clear = true)
  pre_process(is_clear)
  post_process
end

#regist_parts(name, parts) ⇒ Object

オブジェクトを登録する

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

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

name

パーツ名(シンボル)

parts

登録対象のインスタンス

返却値

自分自身を返す



433
434
435
436
# File 'lib/Miyako/API/i_yuki.rb', line 433

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:



974
975
976
977
978
979
980
981
# File 'lib/Miyako/API/i_yuki.rb', line 974

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

パーツ名(シンボル)

返却値

自分自身を返す



553
554
555
556
# File 'lib/Miyako/API/i_yuki.rb', line 553

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

#renderObject

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

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

返却値

自分自身を返す



281
282
283
284
# File 'lib/Miyako/API/i_yuki.rb', line 281

def render
  return @base.render_inner(self) if @base
  return self
end

#render_allObject



269
270
271
272
273
274
275
# File 'lib/Miyako/API/i_yuki.rb', line 269

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

返却値

自分自身を返す



298
299
300
301
# File 'lib/Miyako/API/i_yuki.rb', line 298

def render_to(dst)
  return @base.render_to_inner(self, dst) if @base
  return self
end

#render_to_all(dst) ⇒ Object



286
287
288
289
290
291
292
# File 'lib/Miyako/API/i_yuki.rb', line 286

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_cancel_checksObject

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

返却値

自分自身を返す



935
936
937
938
# File 'lib/Miyako/API/i_yuki.rb', line 935

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

#reset_ok_checksObject

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

返却値

自分自身を返す



928
929
930
931
# File 'lib/Miyako/API/i_yuki.rb', line 928

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

#reset_pre_post_cancelObject

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

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

返却値

自分自身を返す



961
962
963
964
965
# File 'lib/Miyako/API/i_yuki.rb', line 961

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

#reset_pre_post_commandObject

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

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

返却値

自分自身を返す



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

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

#reset_pre_post_releaseObject

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

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

返却値

自分自身を返す



943
944
945
946
947
# File 'lib/Miyako/API/i_yuki.rb', line 943

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

#reset_release_checksObject

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

返却値

自分自身を返す



921
922
923
924
# File 'lib/Miyako/API/i_yuki.rb', line 921

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

#reset_selectingObject

:nodoc:



1387
1388
1389
1390
1391
# File 'lib/Miyako/API/i_yuki.rb', line 1387

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

#resultObject

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

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

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

返却値

プロットの処理結果



1021
1022
1023
# File 'lib/Miyako/API/i_yuki.rb', line 1021

def result
  return @plot_result
end

#result=(ret = nil) ⇒ Object

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

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

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

返却値

自分自身を返す



1029
1030
1031
1032
# File 'lib/Miyako/API/i_yuki.rb', line 1029

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

テキストボックス全体

返却値

自分自身を返す



468
469
470
471
472
# File 'lib/Miyako/API/i_yuki.rb', line 468

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

最初に実行するページ名



1456
1457
1458
# File 'lib/Miyako/API/i_yuki.rb', line 1456

def select_first_page(name)
  @first_page = name
end

#select_plot(plot_proc) ⇒ Object

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

plot_proc

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

返却値

自分自身を返す



810
811
812
813
# File 'lib/Miyako/API/i_yuki.rb', line 810

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

#select_resultObject

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

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

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

返却値

コマンドの選択結果



1399
1400
1401
# File 'lib/Miyako/API/i_yuki.rb', line 1399

def select_result
  return @result
end

#select_textbox(box, box_all = nil) ⇒ Object

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

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

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

テキストボックス本体

box_all

テキストボックス全体

返却値

自分自身を返す



448
449
450
451
452
453
454
455
456
# File 'lib/Miyako/API/i_yuki.rb', line 448

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

#setup(*params, &proc) ⇒ Object

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

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

params

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

返却値

自分自身を返す

Raises:



786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
# File 'lib/Miyako/API/i_yuki.rb', line 786

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

  @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, "Aagument 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

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

返却値

自分自身を返す



564
565
566
567
568
569
570
571
572
573
574
# File 'lib/Miyako/API/i_yuki.rb', line 564

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

レシーバ



517
518
519
520
# File 'lib/Miyako/API/i_yuki.rb', line 517

def show_commandbox
  @command_box_all.show
  return self
end

#show_textboxObject

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

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

レシーバ



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

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

返却値

自分自身を返す



1215
1216
1217
1218
1219
1220
# File 'lib/Miyako/API/i_yuki.rb', line 1215

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

パーツ名(シンボル)

返却値

自分自身を返す



716
717
718
719
720
# File 'lib/Miyako/API/i_yuki.rb', line 716

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

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

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

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

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

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

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

base

プロット

plot_proc

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

params

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

返却値

自分自身を返す

Raises:



830
831
832
833
834
835
836
837
838
# File 'lib/Miyako/API/i_yuki.rb', line 830

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

#stop(name) ⇒ Object

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

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

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

name

パーツ名(シンボル)

返却値

自分自身を返す



740
741
742
743
744
# File 'lib/Miyako/API/i_yuki.rb', line 740

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

#text(txt) ⇒ Object

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

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

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

txt

表示させるテキスト

返却値

自分自身を返す



1111
1112
1113
1114
1115
# File 'lib/Miyako/API/i_yuki.rb', line 1111

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

表示させるテキスト

返却値

自分自身を返す



1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
# File 'lib/Miyako/API/i_yuki.rb', line 1124

def text_by_char(txt)
  return self if txt.eql?(self)
  txt.chars{|ch|
    pre_process
    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)
    @base.text_inner(self, ch) if @base
    post_process
  }
  return self
end

#text_by_str(txt) ⇒ Object

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

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

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

txt

表示させるテキスト

返却値

自分自身を返す



1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
# File 'lib/Miyako/API/i_yuki.rb', line 1149

def text_by_str(txt)
  return self if txt.eql?(self)
  use_cr = false
  until txt.empty? do
    pre_process
    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)
      post_process
      next nil
    else
      tmp = txt
      txt = ""
    end
    @text_box.draw_text(tmp)
    self.cr if use_cr
    @base.text_inner(self, tmp) if @base
    use_cr = false
    post_process
  end
  return self
end

#text_method(mode) ⇒ Object

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

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

mode

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

返却値

自分自身を返す

Raises:



1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
# File 'lib/Miyako/API/i_yuki.rb', line 1087

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

返却値

テキストボックス



478
479
480
# File 'lib/Miyako/API/i_yuki.rb', line 478

def textbox
  return @text_box
end

#textbox_allObject

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

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

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

返却値

テキストボックス全体



494
495
496
# File 'lib/Miyako/API/i_yuki.rb', line 494

def textbox_all
  return @text_box_all
end

#to_plot(&plot) ⇒ Object

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

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

返却値

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



881
882
883
# File 'lib/Miyako/API/i_yuki.rb', line 881

def to_plot(&plot)
  return plot
end

#under_engineObject



851
852
853
# File 'lib/Miyako/API/i_yuki.rb', line 851

def under_engine
  @under_yuki
end

#under_engine=(engine) ⇒ Object



855
856
857
# File 'lib/Miyako/API/i_yuki.rb', line 855

def under_engine=(engine)
  @under_yuki = engine
end

#under_line(&block) ⇒ Object

下線付き文字を描画する

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

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

返却値

自分自身を返す



1246
1247
1248
1249
# File 'lib/Miyako/API/i_yuki.rb', line 1246

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

#updateObject

プロット処理を更新する

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



306
307
308
309
310
311
312
313
# File 'lib/Miyako/API/i_yuki.rb', line 306

def update
  @base.update_inner(self) if @base
  @pause_release = false
  @select_ok = false
  @select_cancel = false
  @select_amount = [0, 0]
  return nil
end

#update_animationObject

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

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

返却値

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



326
327
328
329
# File 'lib/Miyako/API/i_yuki.rb', line 326

def update_animation
  return @base.update_animation_inner(self) if @base
  return false
end

#update_animation_allObject



315
316
317
318
319
320
321
# File 'lib/Miyako/API/i_yuki.rb', line 315

def update_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

#update_inputObject

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

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

返却値

nil を返す



891
892
893
894
# File 'lib/Miyako/API/i_yuki.rb', line 891

def update_input
  @base.input_inner(self) if @base
  return nil
end

#valign_during(valign) ⇒ Object

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

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

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

valign

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

返却値

自分自身を返す

Raises:



1201
1202
1203
1204
1205
1206
1207
# File 'lib/Miyako/API/i_yuki.rb', line 1201

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

パーツ名(シンボル)

返却値

変数管理ハッシュ



343
344
345
# File 'lib/Miyako/API/i_yuki.rb', line 343

def vars
  @vars
end

#vars_namesObject

変数を参照する

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

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

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

パーツ名(シンボル)

返却値

変数管理ハッシュ



359
360
361
# File 'lib/Miyako/API/i_yuki.rb', line 359

def vars_names
  @vars.keys
end

#visibles_namesObject

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

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

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

返却値

描画対象リスト



397
398
399
# File 'lib/Miyako/API/i_yuki.rb', line 397

def visibles_names
  @visibles.names
end

#wait(length) ⇒ Object

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

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

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

length

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

返却値

自分自身を返す



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

def wait(length)
  @waiting_timer = WaitCounter.new(length)
  @waiting_timer.start
  waiting = true
  while waiting
    pre_process
    @base.waiting_inner(self) if @base
    waiting = @waiting_timer.waiting?
    post_process
  end
  return self
end

#wait_by_cond(cond = nil) ⇒ Object

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

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

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

cond

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

返却値

自分自身を返す



1075
1076
1077
1078
1079
# File 'lib/Miyako/API/i_yuki.rb', line 1075

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, is_clear = true) ⇒ Object

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

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

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

返却値

自分自身を返す



751
752
753
754
755
756
# File 'lib/Miyako/API/i_yuki.rb', line 751

def wait_by_finish(name, is_clear = true)
  until @parts[name].finish?
    process(is_clear)
  end
  return self
end