Miyakoメインサイトへ
Yukiマニュアルへ
Miyako API リファレンスマニュアル

# 注意事項

本リファレンスマニュアルでは、Miyakoの基幹部分、「Miyako API」のリファレンスを扱っています。
MessageBox、Vars等の拡張機能のリファレンスは取り扱っておりませんのでご注意下さい。

# モジュール・クラス一覧

- (m)Miyako
  - (c)Point
  - (c)Rect
  - (c)Size
  - (c)Color
  - (c)SpriteList
  - (c)Font
  - (m)Screen
  - (c)Bitmap
  - (m)Input
  - (m)Audio
    - (c)BGM
    - (c)SE
  - (c)Sprite
  - (c)SpriteAnimation
  - (c)WaitCounter
  - (c)Shape
    - (c)ShapeParameter
  - (c)Effect
  - (c)Color
  - (c)Plane
  - (c)WindowParameter
  - (c)CursorParameter
  - (c)WindowParts
  - (c)CursorParts
  - (c)Window
  - (c)TextBox
  - (c)MParam
  - (c)Map
    - (c)MapLayer
  - (m)Story
    - (c)Scene
- (m)Yuki
  - (c)YukiError
  - (c)Director
  - (c)Compiler
  - (c)Plot
  - (c)Scenario
  - (c)Direction
  - (c)Commands
  - (c)Variables

# Miyakoモジュール

Miyakoで使用する全てのモジュール・クラスは全てMiyakoモジュールに属している
なお、特に説明していない限り、本モジュールで使われる単位は、
座標：ピクセル単位
時間：フレーム単位
となっている。

Miyako::getOSName

スクリプトを実行しているホストOSの名前を返す。
Windows系統の場合は"win"
その他の場合は"other"と返す

Miyako::setTitle(title)

ウィンドウのタイトルをtitleに変更する

Miyako::update

画面、入力デバイスを一括して更新する

MiyakoError

Miyako上で起こった例外クラス。どのような種類のエラーでもMiyakoErrorクラスの例外として返す

# Miyako::Pointクラス

座標情報を管理するクラス

Miyako::Point.new(x, y)

Miyako::Pointクラスのコンストラクタ
x, yはそれぞれX座標、Y座標を示す

Miyako::Point#x
Miyako::Point#y

座標x, yをそれぞれ返す

Miyako::Point#point

クラス内に格納している情報を[x,y]の配列として返す

Miyako::Point#to_s

クラス内に格納している情報を"x,y"の文字列として返す

# Miyako::Sizeクラス

サイズ情報を管理するクラス

Miyako::Size.new(w, h)

Miyako::Sizeクラスのコンストラクタ
w, hはそれぞれ幅、高を示す

Miyako::Size#w
Miyako::Size#h

幅w, 高さhをそれぞれ返す

Miyako::Size#size

クラス内に格納している情報を[w,h]の配列として返す

Miyako::Size#to_s

クラス内に格納している情報を"w,h"の文字列として返す

# Miyako::Rectクラス

矩形情報を管理するクラス

Miyako::Rect.new(x, y, w, h)

Miyako::Rectクラスのコンストラクタ
x, y, w, hはそれぞれX座標、Y座標、幅、高を示す

Miyako::Rect#x
Miyako::Rect#y
Miyako::Rect#w
Miyako::Rect#h

座標x、座標y、幅w, 高さhをそれぞれ返す

Miyako::Rect#rect

クラス内に格納している情報を[x,y,w,h]の配列として返す

Miyako::Rect#to_s

クラス内に格納している情報を"x,y,w,h"の文字列として返す

# Miyako::Colorクラス

色情報を格納するクラス。クラスメソッドのみのクラス
基本的に、色情報は[r,g,b]の配列で持つ。r,g,bはそれぞれ0〜255の整数

Colorクラスには、BLACK、WHITEなどの色定数が用意されている。
以下、用意されている定数と値の一覧を表示する

Color::BLACK = [ 0, 0, 0]
Color::WHITE = [255,255,255]
Color::BLUE = [ 0, 0,255]
Color::GREEN = [ 0,255, 0]
Color::RED = [255, 0, 0]
Color::CYAN = [ 0,255,255]
Color::PURPLE = [255, 0,255]
Color::YELLOW = [255,255, 0]
Color::LIGHT_GRAY = [200,200,200]
Color::HALF_GRAY = [128,128,128]
Color::HALF_BLUE = [ 0, 0,128]
Color::HALF_GREEN = [ 0,128, 0]
Color::HALF_RED = [128, 0, 0]
Color::HALF_CYAN = [ 0,128,128]
Color::HALF_PURPLE = [128, 0,128]
Color::HALF_YELLOW = [128,128, 0]
Color::DARK_GRAY = [ 80, 80, 80]
Color::DARK_BLUE = [ 0, 0, 80]
Color::DARK_GREEN = [ 0, 80, 0]
Color::DARK_RED = [ 80, 0, 0]
Color::DARK_CYAN = [ 0, 80, 80]
Color::DARK_PURPLE = [ 80, 0, 80]
Color::DARK_YELLOW = [ 80, 80, 0]

Miyako::to_rgb(v)

以下のパターンに対して引数vを[r,b,g]の配列(もしくはnil)に変換する

vの値 | 変換後の値
--- | ---
nil | nil
[r,g,b]の配列 | そのまま返す
色定数
"r,g,b"の文字列 | [r,g,b]の配列に変換して返す
"[r,g,b]"の文字列
"#rrggbb"の文字列(rr,gg,bbは16進数)
32ビット整数
"red","green"等、色定数に定義されている文字列 | 色定数に対応した[r,g,b]の配列
:red,:green等のシンボル

Miyako::cc2rgb(cc)

ccとして与えられたカラーコードを[r,b,g]の各要素の配列に変換する

Miyako::hex2rgb(string)

"#rrggbb"として与えられた16進で表されたカラーコード文字列を[r,g,b]の配列に変換する

Miyako::Size#to_s

クラス内に格納している情報を"r,g,b"の文字列として返す

# Miyako::SpriteListクラス

スプライト全体を管理するクラス
画面にスプライトを一括して描画する際に用いる
Miyako内部で使用するため説明は割愛する

# Miyako::Fontクラス

画面にテキストを描画する際に用いるフォントを管理するクラス
TrueTypeフォントが使える(注：v0.9よりBDFフォントのサポートをとりやめました)
内部では、各フォントを拡張子("ttf/ttc")で判別するため、
使用するフォントファイル名には気をつけること

なお、テキストには以下のマクロが使用できる
但し、マクロ名は必ず半角小文字とすること

{color=r, g, b}(r,g,bは0〜255の整数)
{color=#rrggbb} (rr,gg,bbは16進数)
このマクロ以降の描画色を[r,g,b]で与えた値で描画する
{size=s}
このマクロ以降のフォントサイズをsに変更して描画する
なお、サイズを変えた際に文字描画領域の範囲は考慮されていないことに注意する
{pause}
{pause}以降の文字列の描画を強制的に切り上げる
文字列の途中でポーズを出したい時に使う
{clear}
現在表示している文字列を消去する
{locate=x,y}
表示位置をx,yに変更する
\{
\}
"{","}"をそのまま描画する際に使用する

Miyako::Font.system_font

標準で使用するフォントのインスタンスを返す。Font.serifメソッドの値を返す

Miyako::Font.serif

定義済みフォントのインスタンスを返す。OSにより、定義されているフォントが変わる

Windows：MS明朝
Linux：さざなみフォント(明朝)
その他：みかちゃんフォント

Miyako::Font.sans_serif

定義済みフォントのインスタンスを返す

Windows：MSゴシック
Linux：さざなみフォント(ゴシック)
その他：みかちゃんフォント

Miyako::Font.new(fname, size=16)

フォントファイル名fnameのフォントをサイズsize(デフォルトは16ピクセル)で使用できるように登録する
フォントに関しては、次のルールでファイルを検索する

- カレントディレクトリ
- (OSがWindowsの場合)システムドライブのWindows\fontsディレクトリ
- (OSがLinuxの場合)/usr/share/fonts/, /usr/X11R6/lib/X11/fonts/のディレクトリ

Miyako::Font#setCodingSystem(code)

登録しているフォントがBDFの場合、文字コードを登録する
使用できるのはSDL::SJIS、SDL::EUC、SDL::JIS

Miyako::Font#size

登録しているフォントの大きさを返す

Miyako::Font#size=(sz)

登録しているフォントの大きさをszに変更する

Miyako::Font#textSize(str)

文字列strを登録しているフォントで表示した時の横幅と高さを[w, h]の配列で返す

Miyako::Font#height

フォントの高さの理論値(フォント内で一番高い値)を返す

Miyako::Font#ascent

heightの値のうち、上部(アクセント記号など)の高さを返す

Miyako::Font#descent

heightの値のうち、下部(アルファベットj,gの下部など)の高さを返す

Miyako::Font#line_skip

上下の文字列同志が重ならない範囲でのフォントの高さの理論値を返す
v0.9以降はフォントの高さの計算は、sizeではなくline_skipで行っている

Miyako::Font#setColor(color)

登録しているフォントの描画色を[r,g,b]の配列や"#rrggbb"といった文字列、色定数などで設定する

Miyako::Font#getColor

登録しているフォントの描画色を[r, g, b]の配列で返す

Miyako::Font#drawText(dst, str, x=0, y=0, sp=0)
Miyako::Font#drawTextMild(dst, str, x=0, y=0, sp=0)

複数行の文字列strを、登録しているフォントで、dstで示しているビットマップ領域の指定領域に描画する
描画の始点はx,yで、行間のスペースをspで指定する
描画領域に描ききれなかった文字列を返す
drawMultiLineTextMildメソッドは、フォント描画する際にアンチエイリアスを行う
但し、フォントのサイズが24未満のときは何故かフォントが崩れるので、内部でdrawMultiLineTextを呼び出して回避している
描画し終わったときの右端の座標を[x,y]の配列で返す

# Miyako::Screenモジュール

Miyakoで表示する画面に関するモジュール

Miyako::Screen.DefaultWidth定数

Miyakoで使用する画面の幅を示す(値は640)

Miyako::Screen.DefaultHeight定数

Miyakoで使用する画面の高さを示す(値は480)

Miyako::Screen.WINDOW_MODE定数

ウィンドウモードを示す定数。Screen.setModeメソッドで使う

Miyako::Screen.FULLSCREEN_MODE定数

フルスクリーンモードを示す定数。Screen.setModeメソッドで使う

Miyako::Screen.getFpsCnt

現在のFPS値を返す

Miyako::Screen.fps

Miyakoで実行する際に設定している上限FPS値を返す

Miyako::Screen.fps=(val)

Miyakoで実行する時に上限となるFPS値をvalに変更する valが0のときは、MiyakoはFPS上限無しと認識する

Miyako::Screen.fpsView
Miyako::Screen.fpsView=(val)

画面左上にFPS値を表示するかを示すフラグを取得/設定する

Miyako::Screen.screen

Miyakoで使用している画面オブジェクトを取得する
Miyako内部で使用するために用意している

Miyako::Screen.w

画面の横幅を返す。

Miyako::Screen.h

画面の高さを返す。

Miyako::Screen.x
Miyako::Screen.x=(v)

左上座標から実際に表示される位置までのx座標のズレを取得・指定する

Miyako::Screen.y
Miyako::Screen.y=(v)

左上座標から実際に表示される位置までのy座標のズレを取得・指定する

Miyako::Screen.update

スプライト描画や描画命令、テキスト描画命令、エフェクトを一括して行う

Miyako::Screen.freeze

画面の描画を停止する
freezeしている間は画面の更新が行われない
後述のtrasitionをしない限り停止している

Miyako::Screen.freeze?

画面の描画を停止しているかを示すフラグ

Miyako::Screen.trasition

freeze中の画面の描画を再開する

Miyako::Screen.toggleMode

ウィンドウモードの切り替え。ウィンドウ←→フルスクリーンの切り替えを行う

Miyako::Screen.setMode(m)

ウィンドウモードの切り替え。
mには、Screen::WINDOW_MODE,Screen::FULLSCREEN_MODEを設定する

Miyako::Screen.setSize(w, h, f=true)

画面の解像度を変更する。
w,hには、新しく設定する画面の幅・高さをピクセル単位で設定する
対応していない解像度を設定して失敗したときは、解像度の変更は行わない
(注)解像度を設定したときは、Spriteクラスの全てのオブジェクトのviewPortプロパティは、全て新しい解像度の画面全体にリセットされる。
リセットされたくないときは、第3引数にfalseを渡す

# Miyako::Bitmapクラス

画像領域を示すクラス。スプライトもこのBitmapを使用して貼り付ける
実際はSDL::Surfaceクラスを継承したものなので、SDL::Surfaceクラスで定義されている描画命令を全てサポートする
但し、実装は後述のMiyako::Sprite.drawBlockプロパティにブロックとして登録した方が危険性が少ない

Miyako:Bitmap.create(w, h)

Bitmapを指定した幅・高さで作成する

（ここ以降の描画命令は、Ruby/SDLリファレンスマニュアルで使用できる描画メソッドを抜粋・編集しています）

Miyako::Bitamp#getPixel(x,y)
Miyako::Bitamp#[x,y]

x,yの位置のピクセルの値を返す。

Miyako::Bitamp#putPixel(x,y,color)
Miyako::Bitamp#[x, y] = color

x,yの位置のピクセルの値をpixelにする。つまり、x,yの位置にpixelの色の点を打つ。

Miyako::Bitamp#drawLine(x1,y1,x2,y2,color)

色がcolorの線を(x1,y1)から(x2,y2)まで描く。

Miyako::Bitamp#drawRect(x,y,w,h,color)

色がcolorの長方形を描く。中はぬりつぶさない。

Miyako::Bitamp#fillRect(x,y,w,h,color)

指定された長方形の領域をcolorでぬりつぶす。

Miyako::Bitamp#drawCircle(x,y,r,color)

色がcolorの円を描く。中はぬりつぶさない。

Miyako::Bitampe#drawFilledCircle(x,y,r,color)

色がcolorの円を描き、中をぬりつぶす。

Miyako::Bitamp#drawEllipse(x,y,rx,ry,color)

色がcolorの楕円を描く。中はぬりつぶさない。

Miyako::Bitamp#drawFilledEllipse(x,y,rx,ry,color)

色がcolorの楕円を描く。中をぬりつぶす。。

Miyako::Bitamp#drawAALine(x1,y1,x2,y2,color)

色がcolorのアンチエリアスした線を(x1,y1)から(x2,y2)まで描く。

Miyako::Bitamp#drawAACircle(x,y,r,color)

色がcolorのアンチエリアスした円を描く。

Miyako::Bitamp#drawAAFilledCircle(x,y,r,color)

色がcolorのアンチエリアスした円を描き、中をぬりつぶす。

Miyako::Bitamp#drawAAEllipse(x,y,rx,ry,color)

色がcolorのアンチエリアスした楕円を描く。

Miyako::Bitamp#drawLineAlpha(x1,y1,x2,y2,color,alpha)

アルファブレンドした直線を描く。

Miyako::Bitamp#drawRectAlpha(x,y,w,h,color,alpha)

アルファブレンドした長方形を描く。

Miyako::Bitamp#drawFilledRectAlpha(x,y,w,h,color,alpha)

アルファブレンドした長方形を描き、中をぬりつぶす。

Miyako::Bitamp#drawCircleAlpha(x,y,r,color,alpha)

アルファブレンドした円を描く。

Miyako::Bitamp#drawFilledCircleAlpha(x,y,r,color,alpha)

アルファブレンドした円を描き、中をぬりつぶす。

Miyako::Bitamp#drawEllipseAlpha(x,y,rx,ry,color,alpha)

アルファブレンドした楕円を描く。

Miyako::Bitamp#drawFilledEllipseAlpha(x,y,rx,ry,color,alpha)

アルファブレンドした楕円を描き、中をぬりつぶす。

Miyako::Bitamp#drawAALineAlpha(x1,y1,x2,y2,color,alpha)

アルファブレンド、アンチエリアスした直線を描く。

Miyako::Bitamp#drawAACircleAlpha(x,y,r,color,alpha)

アルファブレンド、アンチエリアスした円を描く。

Miyako::Bitamp#drawAAEllipseAlpha(x,y,rx,ry,color,alpha)

アルファブレンド、アンチエリアスした楕円を描く。

Miyako::Bitamp#drawBezier(x1,y1,x2,y2,x3,y3,x4,y4,level,color)

(x1,y1)から(x4,y4)へのベジエ曲線を(x2,y2),(x3,y3)をコントロールポイントとしてcolorで指定した色で描く。levelは4から7くらいが普通。

Miyako::Bitamp#drawAABezier(x1,y1,x2,y2,x3,y3,x4,y4,level,color)

(x1,y1)から(x4,y4)へのアンチエイリアスしたベジエ曲線を(x2,y2), (x3,y3)をコントロールポイントとしてcolorで指定した色で描く。 levelは4から7くらいが普通。

Miyako::Bitamp#drawBezierAlpha(x1,y1,x2,y2,x3,y3,x4,y4,level,color,alpha)

(x1,y1)から(x4,y4)へのベジエ曲線を(x2,y2), (x3,y3)をコントロールポイントとしてcolorで指定した色、alphaで指定したアルファ値で描く。levelは4から7くらいが普通。

Miyako::Bitamp#drawAABezierAlpha(x1,y1,x2,y2,x3,y3,x4,y4,level,color,alpha)

(x1,y1)から(x4,y4)へのアンチエイリアスしたベジエ曲線を(x2,y2), (x3,y3)をコントロールポイントとしてcolorで指定した色、alphaで指定したアルファ値で描く。levelは4から7くらいが普通。

# Miyako::Inputモジュール

Miyakoで使用している入力デバイス情報を管理しているモジュール
入力デバイスはキーボードとジョイパッドを想定している
ゲームパッドの１〜１２ボタンはキーボードのZ,X,C,A,S,D,Q,W,E,V,B,Nキーに対応している
ゲームパッドの方向キーはテンキーの2,4,6,8とカーソルキーに対応している
但し、キーボードのEscapeキー、Spaceキー、Enterキー、Altキー、Ctrlキー、Shiftキーはゲームパッドには対応していない
Altキー、Ctrlキー、Shiftキーは左右とも同じキーとして認識する

Miyako::Input::LEFT
Miyako::Input::RIGHT
Miyako::Input::UP
Miyako::Input::DOWN
Miyako::Input::BTN1/2/3/4/5/6/7/8/9/10/11/12

各方向ボタン・１〜１２ボタンに対応する定数
trigger?やpushed?メソッドで使用する

Miyako::Input.update

入力デバイス情報を更新する

Miyako::Input.triggerDirNum
Miyako::Input.pushedDirNum

方向ボタン・キーを押している(triggerDirNum)／押した(pushedDirNum)方向を示す上記定数に対応した値を返す
何も押されていないときは-1を返す

Miyako::Input.trigger?(b)
Miyako::Input.pushed?(b)

引数として渡す定数に対応したボタン・キーが押している(trigger?)／押した(pushed?)ときにtrueを返す
引数には、Input::LEFT、Input::BTN1などの定数を与える

Miyako::Input.trigger_all?(b1[,b2...])
Miyako::Input.pushed_all?(b1[,b2...])

引数としてした可変個のシンボルに対応したボタン・キーを全て押している(trigger_all?)／押した(pushed_all?)ときにtrueを返す
引数として使用できるシンボル一覧を以下に示す
表中の［１］(Z)は、ゲームパッド上の［１］や［Ａ］ボタン、キーボードのZキーに該当する
引数を渡さなかったときは、全てのメソッドは「下記表にあるどれかのボタン・キーが押された時」にtrueを返す

シンボル | ボタン・キー
--- | ---
:down | ↓
:left | ←
:right | →
:up | ↑
:btn1 | ［１](Z)
:btn2 | ［２](X)
:btn3 | ［３](C)
:btn4 | ［４](A)
:btn5 | ［５](S)
:btn6 | ［６](D)
:btn7 | ［７](Q)
:btn8 | ［８](W)
:btn9 | ［９](E)
:btn10 | ［１０](V)
:btn11 | ［１１](B)
:btn12 | ［１２](N)
:spc | スペースキー
:ent | Enterキー (Returnキー)
:esc | Escキー
:alt | Altキー
:ctl | Ctrlキー

Miyako::Input.trigger_any?(b1[,b2...])
Miyako::Input.pushed_any?(b1[,b2...])

引数としてした可変個のシンボルに対応したボタンのどれかを押している(trigger_all?)／押した(pushed_all?)ときにtrueを返す
引数として使用できるシンボルは、上記trigger_all?/pushed_all?メソッドを参照のこと
引数を渡さなかったときは、全てのメソッドは「上記表にあるどれかのボタン・キーが押された時」にtrueを返す

Miyako::Input.amountX(dir)
Miyako::Input.amountY(dir)

引数として渡す定数に対応したボタンを押したときのX/Y座標での移動量を返す
単位量は1(つまり、1,0,-1を返す)

引数には、Input::LEFT、Input::UPなどの定数を与える

Miyako::Input.triggerAmount
Miyako::Input.pushedAmount

現在、ボタンを押している(triggerAmount)／押した(pushedAmount)ときのx,y座標での移動量を[x,y]の配列で返す
x,yそれぞれの単位量は1(つまり、1,0,-1を返す)

Miyako::Input.trigger?(b)
Miyako::Input.pushed?(b)

引数として渡す定数に対応したボタンが押している(trigger?)／押した(pushed?)ときにtrueを返す
引数には、Input::LEFT、Input::BTN1などの定数を与える

Miyako::Input.triggerDir

方向キーを押している方向を[下,左,右,上]の4要素の数値の配列で示す
それぞれ、押しているときは1、押していないときは0を示す

Miyako::Input.pushedDir

方向キーを押した方向を[下,左,右,上]の4要素の数値の配列で示す
それぞれ、押したときは1、既に押したままか押していないときは0を示す
キーを押している間、triggerはずっと1のままだが、pushedでは押した瞬間のみ1となる

Miyako::Input.triggerBtn

ボタンを押している箇所を[1番,2番,...12番]の6要素の数値の配列で示す
それぞれ、押しているときは1、押していないときは0を示す

Miyako::Input.pushedBtn

ボタンを押してた箇所を[1番,2番,...12番]の6要素の数値の配列で示す
それぞれ、押したときは1、既に押したままか押していないときは0を示す

Miyako::Input.triggerSpc?

スペースキーを押しているときはtrueを返す

Miyako::Input.triggerEnter?

エンターキーを押しているときはtrueを返す

Miyako::Input.triggerEscape?

エスケープキーを押しているときはtrueを返す

Miyako::Input.triggerAlt?

Altキーを押しているときはtrueを返す

Miyako::Input.triggerCtrl?

Ctrlキーを押しているときはtrueを返す

Miyako::Input.triggerShift?

Shiftキーを押しているときはtrueを返す

Miyako::Input.pushedSpc?

スペースキーを押したときはtrueを返す

Miyako::Input.pushedEnter?

エンターキーを押したときはtrueを返す

Miyako::Input.pushedEscape?

エスケープキーを押したときはtrueを返す

Miyako::Input.pushedAlt?

Altキーを押したときはtrueを返す

Miyako::Input.pushedCtrl?

Ctrlキーを押したときはtrueを返す

Miyako::Input.pushedShift?

Shiftキーを押したときはtrueを返す

Miyako::Input.quit?

ウィンドウの「ｘ」ボタンを押した時などにtrueを返す

# Miyako::Audioモジュール

## Miyako::Audio::BGMクラス

BGMを管理するクラス
ファイルはoggファイルの使用を奨励
mp3ファイルは使えない

Miyako::Audio::BGM.new(fname, loops = true)

fnameで指定したファイルをBGM用に登録する
loopsは、演奏をループするかどうかを示すフラグ

Miyako::Audio::BGM#setVolume(v)

BGMの音量を設定する
値は0〜128の間

Miyako::Audio::BGM#play

BGMの演奏を開始する
今まで演奏していたBGMは停止する

Miyako::Audio::BGM#fadeIn(msec=5000)

msecで指定したミリ秒でフェードインしながらBGMの再生を開始する

Miyako::Audio::BGM#playing?

指定のオブジェクトのBGMを演奏しているかのフラグ

Miyako::Audio::BGM#pause

現在演奏中のBGMを一時停止する

Miyako::Audio::BGM#resume

演奏中の曲が一時停止状態ならば演奏を再開する

Miyako::Audio::BGM#stop

BGMの演奏を停止する

Miyako::Audio::BGM#fadeOut(msec = 5000, wmode = false)

msecで指定したミリ秒でフェードアウトしながらBGMの再生を停止する
wmodeは、フェードアウトしている間はプログラムを停止するかを示すフラグ

## Miyako::Audio::SEクラス

効果音を管理するクラス
ファイルはwaveファイルのみ

Miyako::Audio::SE.new(fname)

fnameで指定したファイルを効果音用に登録する

Miyako::Audio::SE#play

オブジェクトが管理する効果音を演奏する

Miyako::Audio::SE#stop

オブジェクトが管理する効果音の演奏を停止する

Miyako::Audio::SE#setVolume(v)

オブジェクトが管理する効果音の大きさをvで指定する
値は0〜128の間

# Miyako::Spriteクラス

スプライト全般を管理するクラス
(注：v0.9より、アルファブレンディングを持つ画像のサポートを取りやめました。
そのため、α情報を持つ画像を表示する際に、想定しない状態で表示されるおそれがございますのでご注意下さい)

Miyako::Sprite.new([w, h], tr_data=Color::BLACK, alpha=255,is_fill=false)
Miyako::Sprite.new(Size, tr_data=Color::BLACK, alpha=255,is_fill=false)
Miyako::Sprite.new(bmp, tr_data=Color::BLACK. alpha=255,is_fill=false)
Miyako::Sprite.new(fname, tr_data=Point.new(0,0), alpha=255,is_fill=false)

スプライトのインスタンスを生成する
第1引数が幅・高さの配列[w,h]もしくはSizeクラスのインスタンスのときは、[w,h]の大きさの描画領域を作成し、それをもとにスプライトを作成する
第1引数がMiyako::Bitmapクラスのインスタンスのときは、そのインスタンスからスプライトを作成する
第1引数が文字列の時は、既存の画像ファイル(文字列はそのファイル名)からスプライトを作成する
tr_dataには、透明色を指定する。色を直接指定するときは[r,g,b]の配列で、
画像の指定座標上の色で指定するときはPointクラスのインスタンスで指定する
透明色を指定しないときはnilを渡す
alphaを使って、描画時の透明度（アルファブレンディング）を0〜255の間で指定する
0だと完全に透明になる
is_fillは、生成時に画像領域を透明色で塗りつぶすかを示すフラグ

Miyako::Sprite.create_plane(bmp, w, h, tr_data=[0,0,0], alpha=255)

既存のMiyako::Bitmapクラスのオブジェクトからプレーン形式のスプライトを作成する
「プレーン形式」は、後述のMiyako::Planeクラスを参照のこと
tr_dataには、透明色を指定する。色を直接指定するときは[r,g,b]の配列で、
画像の指定座標上の色で指定するときはPointクラスのインスタンスで指定する
透明色を指定しないときはnilを渡す
alphaを使って、描画時の透明度（アルファブレンディング）を0〜255の間で指定する
0だと完全に透明になる

Miyako::Sprite#Sprite.getList

今までに登録しているスプライトの一覧を返す
Miyakoが内部で利用している

Miyako::Sprite#x
Miyako::Sprite#x=(v)
Miyako::Sprite#y
Miyako::Sprite#y=(v)

スプライトを表示させる画面上のX,Y座標を取得・設定する

Miyako::Sprite#dp
Miyako::Sprite#dp=(v)

スプライト表示させる際に重ね合わせの基準となる深度を取得・設定する
深度が大きいほど手前に表示される
深度が同じスプライトが複数存在するときは、登録順に描画される

Miyako::Sprite#w
Miyako::Sprite#h

スプライトに登録している画像の幅と高さを取得する

Miyako::Sprite#ox
Miyako::Sprite#ox=(v)
Miyako::Sprite#oy
Miyako::Sprite#oy=(v)

スプライト画像中で、画面に表示させたい部分の左上を示すX,Y座標を取得・設定する

Miyako::Sprite#ow
Miyako::Sprite#ow=(v)
Miyako::Sprite#oh
Miyako::Sprite#oh=(v)

スプライト画像中で、画面に表示させたい部分の幅と高さを取得・設定する

Miyako::Sprite#visible
Miyako::Sprite#visible=(v)

スプライト表示の可否を示すフラグを取得・設定する

Miyako::Sprite#show
Miyako::Sprite#hide

スプライトを表示／隠蔽する

Miyako::Sprite#angle
Miyako::Sprite#angle=(v)

スプライトを回転させるときの角度を取得・設定する

Miyako::Sprite#scaleX
Miyako::Sprite#scaleX=(v)
Miyako::Sprite#scaleY
Miyako::Sprite#scaleY=(v)

スプライトを拡大・縮小させるときのX,Y座標の倍率を取得・設定する

Miyako::Sprite#centerX
Miyako::Sprite#centerX=(v)
Miyako::Sprite#centerY
Miyako::Sprite#centerY=(v)

スプライトを回転・拡大・縮小させるときの中心のX,Y座標を取得・設定する

Miyako::Sprite#font
Miyako::Sprite#font=(v)

画面に文字を描画したいときのフォント(Miyako::Fontクラスのインスタンス)を取得・設定する

Miyako::Sprite#textVisible
Miyako::Sprite#textVisible=(v)

画面に文字を描画するかどうかのフラグを取得・設定する

Miyako::Sprite#msg

画面に表示させる文字列を管理するMessageArrayクラスのオブジェクトを返す
このプロパティを介してメッセージデータを設定／取得する

Miyako::Sprite#getMessageData
Miyako::Sprite#getMessageData(list)

メッセージ配列情報を取得・設定する
Miyako内部で使用

Miyako::Sprite#textAreaW
Miyako::Sprite#textAreaW=(v)
Miyako::Sprite#textAreaH
Miyako::Sprite#textAreaH=(v)
Miyako::Sprite#setTextArea(w, h)

文字を描画する領域の範囲の幅(W)、高さ(H)を取得・設定する
後述のviewPortとは独立して設定する

Miyako::Sprite#textMarginLeft
Miyako::Sprite#textMarginLeft=(v)
Miyako::Sprite#textMarginTop
Miyako::Sprite#textMarginTop=(v)
Miyako::Sprite#textMarginRight
Miyako::Sprite#textMarginRight=(v)
Miyako::Sprite#textMarginBottom
Miyako::Sprite#textMarginBottom=(v)
Miyako::Sprite#setTextMargin(l,t,r,b)

文字列描画領域から実際に描画される場所までのマージンを設定する
マイナス値の指定が可能

Miyako::Sprite#locateX=(v)
Miyako::Sprite#locateY=(v)
Miyako::Sprite#locate(x, y)

描画領域中で描画を開始したい座標を設定する

Miyako::Sprite#drawBlock
Miyako::Sprite#drawBlock=(v)

スプライトに描画させる際のメソッドのブロック(Procクラスのインスタンス)を取得・設定する

Miyako::Sprite#draw_line(rect,color,attribute=:normal)

color([r,g,b])で指定した(rect.x,rect.y)-(rect.x+rect.w,rect.y+rect.h)の範囲で直線を引く
attributeは:normalのみ

Miyako::Sprite#draw_rect(rect,color,attribute=:normal)

color([r,g,b])で指定した(rect.x,rect.y)-(rect.x+rect.w,rect.y+rect.h)の範囲で矩形を引く
attributeは:normalで外周のみ、:fillで塗りつぶして描画する

Miyako::Sprite#draw_circle(point,r,color,attribute=:normal)

color([r,g,b])で指定した(point.x,point.y)の位置を中心に、半径rの円を描く
attributeは:normalで外周のみ、:fillで塗りつぶして描画する

Miyako::Sprite#draw_ellipse(rect,color,attribute=:normal)

color([r,g,b])で指定した(rect.x,rect.y)-(rect.x+rect.w,rect.y+rect.h)の範囲で楕円形を引く
attributeは:normalで外周のみ、:fillで塗りつぶして描画する

Miyako::Sprite#draw_text(str, x, y)

スプライト上に文字を描く
フォントは、fontプロパティのインスタンスを使用
x,yはスプライトの左上からの座標

Miyako::Sprite#alpha
Miyako::Sprite#alpha=(v)

スプライトを半透明にさせたいときの透明度を取得・設定する
0のときは完全に透明になり、255のときは完全に不透明になる

Miyako::Sprite#tr_color

スプライトで指定している透明色を[r,g,b]の配列で返す
透明色が指定されていないときはnilを返す

Miyako::Sprite#bitmap

スプライトで使用している画像領域を返す

Miyako::Sprite#bitmap=(bmp)

スプライトで使用する画像領域を登録する

Miyako::Sprite#effect
Miyako::Sprite#effect=(e)

スプライトに対してエフェクト操作を行うEffectクラス(後述)の派生クラスのインスタンスを取得・設定するプロパティ
エフェクト実行中は、スプライト画像表示の代わりに、effectプロパティで設定されているエフェクト処理(表示)を行う

Miyako::Sprite#setCollisionMargin(x, y, w, h)

スプライトにタイする当たり判定の範囲を指定する
スプライトの左上から［x(左上X座標),y(左上Y座標),w(範囲の幅),h(範囲の高さ)］
として設定する

Miyako::Sprite#getCollisionMargin

「画面上」の当たり判定の範囲をMiyako::Rectクラスのオブジェクトとして返す

Miyako::Sprite#viewPort

画面上のスプライトの表示範囲をMiyako::Rectクラスのオブジェクトとして返す

Miyako::Sprite#setViewPort(x, y, w, h)

画面上のスプライトの表示範囲をMiyako::Rectクラスのオブジェクトとして登録する<

Miyako::Sprite#in_bounds?(dx, dy, f=true)

キャラクターが(dx,dy)の量で動いたときにviewPortプロパティの範囲内にあるかどうかをチェックする
返却値として、X,Y軸で、範囲内にあるかどうかを示すフラグを、[fx,fy]の配列で返す
fx,fyの値は以下の通り。
範囲が(l,t)-(r,b)として、スプライトの表示サイズが(w,h)、移動したときの座標を(nx,ny)とすると、

引数fの値 | 条件 | 返却値
--- | --- | ---
true | nx>l and nx+w<r | fx | true
nx<=l or nx+w>=r | false
ny>t and ny+h<b | fy | true
ny<=t or ny+h>=b | false
false | nx>=l and nx+w<=r | fx | true
nx<l or nx+w>r | false
ny>=t and ny+h<=b | fy | true
ny<t or ny+h>b | false

となる。

Miyako::Sprite#in_bounds_x?(dx, f=true)

キャラクターが X 方向に dx の量で動いたときにviewPortプロパティの範囲内にあるかどうかをチェックする
返却値は以下の通り。
範囲が(l,t)-(r,b)として、スプライトの表示サイズが(w,h)、移動したときの座標を(nx,ny)とすると、

引数fの値 | 条件 | 返却値
--- | --- | ---
true | nx>l and nx+w<r | true
nx<=l or nx+w>=r | false
false | nx>=l and nx+w<=r | true
nx<l or nx+w>r | false

となる。

Miyako::Sprite#in_bounds_y?(dy, f=true)

キャラクターが Y 方向に dy の量で動いたときにviewPortプロパティの範囲内にあるかどうかをチェックする
返却値は以下の通り。
範囲が(l,t)-(r,b)として、スプライトの表示サイズが(w,h)、移動したときの座標を(nx,ny)とすると、

引数fの値 | 条件 | 返却値
--- | --- | ---
true | ny>t and ny+h<b | true
ny<=t or ny+h>=b | false
false | ny>=t and ny+h<=b | true
ny<t or ny+h>b | false

となる。

Miyako::Sprite#in_bounds_ex?(dx, dy, f=true)

in_bound?と同じだが、キャラクターが(dx,dy)の量で動いたときにviewPortプロパティの範囲内にあるかどうかをチェックし、位置によって
返却値として、X,Y軸で、範囲内にあるかどうかを示す値を、[vx,vy]の配列で返す
vx,vyの値は以下の通り。
範囲が(l,t)-(r,b)として、スプライトの表示サイズが(w,h)、移動したときの座標を(nx,ny)とすると、

引数fの値 | 条件 | 返却値
--- | --- | ---
true | nx<=l | vx | -1
nx>l and nx+w<r | 0
nx+w>=r | 1
ny<=t | vy | -1
ny>t and ny+h<b | 0
ny+h>=b | 1
false | nx<l | vx | -1
nx>=l and nx+w<=r | 0
nx+w>r | 1
ny<t | vy | -1
ny>=t and ny+h<=b | 0
ny+h>b | 1

となる。

Miyako::Sprite#in_bounds_ex_x?(dx, f=true)

キャラクターが X 方向に dx の量で動いたときにviewPortプロパティの範囲内にあるかどうかをチェックする
返却値は以下の通り。
範囲が(l,t)-(r,b)として、スプライトの表示サイズが(w,h)、移動したときの座標を(nx,ny)とすると、

引数fの値 | 条件 | 返却値
--- | --- | ---
true | nx<=l | -1
nx>l and nx+w<r | 0
nx+w>=r | 1
false | nx<l | -1
nx>=l and nx+w<=r | 0
nx+w>r | 1

となる。

Miyako::Sprite#in_bounds_ex_y?(dy, f=true)

キャラクターが Y 方向に dy の量で動いたときにviewPortプロパティの範囲内にあるかどうかをチェックする
返却値は以下の通り。
範囲が(l,t)-(r,b)として、スプライトの表示サイズが(w,h)、移動したときの座標を(nx,ny)とすると、

引数fの値 | 条件 | 返却値
--- | --- | ---
true | ny<=t | -1
ny>t and ny+h<b | 0
ny+h>=b | 1
false | ny<t | -1
ny>=t and ny+h<=b | 0
ny+h>b | 1

となる。

Miyako::Sprite#round(dx, dy, f=true)

キャラクターが(dx,dy)の量で動いたときにviewPortプロパティの範囲外に移動しそうなときは、その上下限ぴったりに収める
但し、これらの値は、移動量のアライメントを考慮していないことに注意（たとえば、32x32ドットのキャラクタを(0,0)-(99,99)の範囲で表示させるとして、X,Yともに8ドットを移動単位とすると、(64,0)から右へ移動させると、右端が99を超えるのでroundの対象になるが、(64,0)で止まるわけではなく、右端にぴったりと収まる(68,0)へ移動する）
引数fの内容と返却値については、in_bounds_ex?メソッドを参照

Miyako::Sprite#round_x(dx, f=true)

キャラクターが X 方向に dxの量で動いたときにviewPortプロパティの範囲外に移動しそうなときは、その上下限ぴったりに収める
但し、これらの値は、移動量のアライメントを考慮していないことに注意(roundメソッドを参照)
引数fの内容と返却値については、in_bounds_ex_x?メソッドを参照

Miyako::Sprite#round_y(dy, f=true)

キャラクターが Y 方向に dyの量で動いたときにviewPortプロパティの範囲外に移動しそうなときは、その上下限ぴったりに収める
但し、これらの値は、移動量のアライメントを考慮していないことに注意(roundメソッドを参照)
引数fの内容と返却値については、in_bounds_ex_y?メソッドを参照

Miyako::Sprite#rect

スプライトの表示サイズをMiyako::Rectクラスのオブジェクトとして返す

Miyako::Sprite#update

Miyako::Screen.updateメソッド内部で使用するスプライト更新・描画メソッド
Miyako::Sprite#update=メソッドにProcクラスのオブジェクトを渡すこともでき、
update=メソッドでupdateメソッドにブロックを直接渡すことも出来る
ブロックの引数はスプライトオブジェクト本体が渡される

Miyako::Sprite#update=(u)

updateメソッドで実行するProcクラスのインスタンスオブジェクトを渡す

Miyako::Sprite#set_layout(x, y)

スプライトを表示する位置を間接的に設定する
それぞれ、位置を示したシンボルか、それに加えて、実数値(0.0≦f≦1.0)や整数値との配列として構成される
また、それぞれマージンを取ることができ、実数値は、画面の幅・高さの割合からマージンとして取るために、
整数値は、その値をマージンとして取るために設定する(最後に設定されたものが有効なシンボル・実数値・実数値となる)
それぞれ求めた値の和を最終的なマージンとして画面に反映される
実際のマージンは、それぞれのマージンの和を
マージンを取る。整数値、実数値がともに設定されていればその和をマージンとする
x,yには、各座標に対するスプライト指定を行う(デフォルトは[:left,0.0,0],[:top,0.0,0])
Screen.setSizeメソッドで解像度を更新したり、
calcLayoutメソッドを明示的に呼び出すことにより、表示位置を更新することが出来る
詳しくは以下の図を参照

Miyako::Sprite#reset_layout

レイアウト情報を、デフォルト([:left.0.0,0],[:top,0.0,0])に戻す

Miyako::Sprite#centering

スプライトを画面中央に設定する
setLayout(:center, :middle)を指定したのと同じ

Miyako::Sprite#calc_layout(x, y)

スプライトに設定されているLayout情報を実際のピクセルに反映させる
計算した値は、Spriteクラスのx,yプロパティに上書きされる

Miyako::Sprite#enable_layout

位置情報の更新を許可する

Miyako::Sprite#disenable_layout

位置情報の更新を禁止する
同じく、直接x,yプロパティを設定したときも更新が禁止される

Miyako::Sprite#get_layout_x

X座標の位置情報を[シンボル,実数値,整数値]の配列で返す

Miyako::Sprite#get_layout_y

Y座標の位置情報を[シンボル,実数値,整数値]の配列で返す

Miyako::Sprite#get_layout

X,Y座標の位置情報を[[X座標シンボル,実数値,整数値], [Y座標シンボル,実数値,整数値]]の配列で返す

Miyako::Sprite#set_side(xside,yside)

スプライトの位置計算の基準を、対象からの側として指定する
内側なら:inside、外側なら:outsideを指定する
デフォルトは[:inside,:inside]

Miyako::Sprite#set_side_x(xside)

スプライトのX座標の位置計算の基準を、対象からの側として指定する

Miyako::Sprite#set_side_y(yside)

スプライトのY座標の位置計算の基準を、対象からの側として指定する

Miyako::Sprite#get_side

スプライトの位置計算の基準を、対象からの側として指定する[x, y]の配列で返す

Miyako::Sprite#set_base(x, y, w, h)

X,Y座標の位置計算の対象となる位置・サイズを設定する
デフォルト値は画面の位置・サイズ(0,0,Screen.w,Screen.h)となる

Miyako::Sprite#reset_base

X,Y座標の位置計算の対象となる位置・サイズをデフォルト値(0,0,Screen.w,Screen.h)に戻す

Miyako::Sprite#set_base_size(w, h)

X,Y座標の位置計算の対象となるサイズを設定する

Miyako::Sprite#reset_base_size

X,Y座標の位置計算の対象となるサイズをデフォルト値(Screen.w,Screen.h)に戻す

Miyako::Sprite#set_base_point(x, y)

X,Y座標の位置計算の対象となる位置を設定する

Miyako::Sprite#get_base

X,Y座標の位置計算の対象となる位置・サイズを[0,0,Screen.w,Screen.h]の配列で返す

Miyako::Sprite#snap(spr = nil)

引数のスプライトへ、位置情報のスナップを行う
引数が「スナップ先」、selfが「スナップ元」となる
スナップを行うと、いわゆる「親子関係」となり、スナップ先の位置情報が更新されれば、
自動的にスナップ元の位置情報も更新される
また、スナップ元は複数登録することが出来る
引数がnilの場合は、スナップ先のスプライトから位置情報の再取得を行う

Miyako::Sprite#reset_snap

スナップ関係を解消する
位置情報もリセットされる

Miyako::Sprite#add_snap_child(spr)

スナップ元一覧に、スナップ元のスプライトを登録する

Miyako::Sprite#delete_snap_child(spr)

スナップ元一覧からスプライトを削除する

Miyako::Sprite#set_offset(x,y)

レイアウト補正値を設定する
以下のイメージのように、移動アニメーションなど、決定しているレイアウト値に対して、
頻繁に補正が必要な場合に使用する。

Miyako::Sprite#set_offset_x(x)

X座標のレイアウト補正値を設定する

Miyako::Sprite#set_offset_y(y)

Y座標のレイアウト補正値を設定する

Miyako::Sprite#reset_offset

レイアウト補正値をデフォルト値の[0,0]に戻す

Miyako::Sprite#get_offset

レイアウト補正値を[x,y]の配列で返す

Miyako::Sprite#move(x, y)

指定した値に応じた方向への移動を行う
但し、enable_layoutが設定されている場合はlayout_offset_x,layout_offset_yの値に、
disenable_layoutが設定されている場合はx,yの値に反映される

Miyako::Sprite#collision?(spr)

メソッドを実行するスプライトと引数として渡すスプライトとの
当たり判定が接触しているときはtrueを返す

Miyako::Sprite#dispose(flag=false)

スプライト領域を開放する
引数は、将来のための予約のため、考慮する必要はない

# Miyako::SpriteAnimationクラス

スプライトのアニメーションを管理するクラス
このクラスでは、１つの画像を以下のような番号で管理している
キャラクター・パターン１つのピクセル数はスプライトのow,ohを使用する
キャラクター番号・パターン番号に対応したキャラクターを表示するためにox,oyプロパティを更新する

Miyako::SpriteAnimation.new(sprite,wait=0)

SpriteAnimationクラスのインスタンスを作成する
spriteは、アニメーション対象のスプライトを指定する
(注)前もって、アニメーションするキャラクター・パターンの大きさをow,ohで指定しておくこと
waitは、アニメーション中、次のパターンを表示する際に指定するウェイト(フレーム数)を指す
パターン毎にウェイトを変えたい場合は、整数の配列を渡す(例：[4,8,4,8]等)
配列の要素数と画像からのパターン数が違う場合は、短い方を正式なパターン数とする

Miyako::SpriteAnimation#pattern(pnum)

アニメーション開始時のパターン番号をpnumで指定する

Miyako::SpriteAnimation#get_pattern

現段階でのパターン番号を返す

Miyako::SpriteAnimation#character(cnum)

キャラクター番号をcnumで指定する

Miyako::SpriteAnimation#move_character(d)

キャラクター番号をdのぶんだけ移動させる
キャラクター番号はループするように変更される

Miyako::SpriteAnimation#get_character

現段階でのキャラクター番号を返す

Miyako::SpriteAnimation#show/hide

スプライトを表示・隠蔽する

Miyako::SpriteAnimation#toggle_visible

スプライトの表示状態を切り替える

Miyako::SpriteAnimation#start/stop

アニメーションを開始・停止する

Miyako::SpriteAnimation#toggle_exec

アニメーションの実行状態を切り替える

Miyako::SpriteAnimation#update

アニメーションのパターン番号を更新する

Miyako::SpriteAnimation#reset

アニメーションのパターン番号を先頭に戻す
ウェイトを初期化する

Miyako::SpriteAnimation#visible?

スプライトの表示状態を示すフラグを返す

Miyako::SpriteAnimation#exec?

アニメーションの実行状態を示すフラグを返す

# Miyako::WaitCounterクラス

実時間をもとにウェイトを管理するクラス

Miyako::WaitCounter.new(wait)

WaitCounterクラスのインスタンスを作成する
waitでは実時間を秒単位で指定する(引数は実数可のため、1秒以下のときは小数を利用できる)
但し、必ずここで指定した時間通りにカウントが終了するわけではありません。これは、カウント終了チェックはフレーム毎に行われているためです。
ご了承をよろしくお願いします。

Miyako::SpriteAnimation#start

ウェイトを開始する
指定時間までのカウントを計測する

Miyako::SpriteAnimation#stop

ウェイトを停止する
カウントはリセットされる

Miyako::SpriteAnimation#waiting?

ウェイト中かどうかを返す
カウントが指定カウントを越えたときにこのメソッドを呼び出すと、カウントが終了する

Miyako::SpriteAnimation#finish?

カウントが終了したかどうかを返す
カウントが指定カウントを越えたときにこのメソッドを呼び出すと、カウントが終了する

Miyako::SpriteAnimation#wait

ウェイトを行う
start/waiting?と違うのは、処理が全てウェイト作業に占有される

# Miyako::Shapeクラス

# Miyako::ShapeParameterクラス

図形描画を行い、それをスプライトとして返すファクトリクラス
ShapeParameterクラスは、その情報を確保するためのクラスで、内部で使用するため説明は割愛する

Miyako::Shape#create(method,params)

図形を作成する
図形は塗りつぶしが基本で、枠線の描画のみは無い
(但し、後述の:edge節と:trcolor節を応用して描画することは可能)
methodは、作成した図形をシンボルで渡す。methodには以下のものがある

メソッド名 | 内容 | 必須パラメータ
:text | 文字列を描画する | text, font, size, [r, g, b], layout_x, layout_y text:描画する文字列 (マクロ{cr}{color}{size}が使用可能) font:描画するフォントオブジェクト size:描画する文字のサイズ 0を渡すとfontに設定されている サイズで描画 [r,g,b]:描画色 []を渡すとfontに設定されている 色で描画 layout_x:描画位置を指定 :leftで左寄せ :centerでセンタリング :rightで右寄せ layout_y:描画位置を指定(1行中) :topで上寄せ :middleでセンタリング :bottomで下寄せ
:box | 長方形を描画する | w,h,[r,g,b] w:長方形幅 h:長方形の高さ
:roundbox | 角が丸い長方形を描画する | w,h,r.[r,g,b] w:長方形幅 h:長方形の高さ r:丸みの幅
:circle | 円を描画する | r,[r,g,b] r:円の半径
:ellipse | 楕円を描画する | rx,ry,[r,g,b] rx:X軸側の半径 ry:Y軸側の半径

paramsは、以下のような書式となっている
[必須パラメータ(,:edge,edge_thin,[r,g,b])(,:trcolor,[r,g,b])]
(括弧内は省略可)
「必須パラメータ」は、図形の描画に最低限必要なパラメータを指す
:edge節では、図形の縁取りを指定する
edge_thinで、縁の太さを指定する
このとき、描画する図形の内側に縁取りを行うことに注意
:trcolor節では、透過色を指定する
デフォルトでは黒([0,0,0])だが、黒色の図形を描画するときに変更する

# Miyako::Effectクラス

スプライトにエフェクト処理を行うクラスの基本クラス
通常は、Effectクラスからそれぞれの処理を行うクラスへ継承し、以下のメソッドを
オーバーライドして実装する(特にinitialize、start、update)

Miyako::Effect.new(sspr,dspr=nil)

Effectクラスのオブジェクトを作成する
引数ssprには、効果を掛けたいスプライト(effectプロパティに渡すスプライト本体等)を指定する
dsprには、２つのスプライト間でトランスフォーム(例えば、キャラクターの変身など)を行いたい際に設定する
sspr、dsprは内部でインスタンス変数@src、@dstに設定される

Miyako::Effect.start(w, *param)

Effectクラスのオブジェクトを作成する
引数wにはエフェクト処理を行う際のウェイト、paramにはエフェクト処理に関するパラメータのリストを設定する
w,paramの値はインスタンス変数@wait,@paramの値となる。また、カウンタとして@cntも定義されている
startメソッドを実行すると@effectingインスタンス変数の値をtrueにする(superキーワードを使用している場合は自動的に行われる)

Miyako::Effect.effecting?

現在エフェクト処理が行われているかを取得するフラグを取得する
エフェクト処理中ならばtrueを返す

Miyako::Effect.update(screen)

エフェクト処理を実行する
@src・@dstで指定されているスプライトのビットマップや描画命令をscreenに対して行う
screenオブジェクトは、実際はbitmapクラスもしくはその派生クラスのオブジェクトを指定していると想定する
（Screen.updateメソッドでもEffect.updateメソッドは呼ばれるが、そのときはscreenそのものを引数としている）
エフェクト処理を終了するときは@effectingインスタンス変数の値をfalseにする必要がある（そうしないと永久ループに陥る）

Miyako::Effect.stop

エフェクト処理を強制的に終了する

Miyako::Effect.dispose

クラス内部で実装した各オブジェクトを解放する

# Miyako::Planeクラス

ビットマップイメージを敷き詰めたような表示を実装するクラス
x=メソッド、y=メソッドを使用することでスクロールする

Miyako::Plane.new(fname, px = 0, py = 0)

プレーンを管理するインスタンスを作成する
fnameはプレーンを作成する画像ファイル名
px,pyは透明色を示すピクセルの座標

Miyako::Plane#x
Miyako::Plane#x=(v)
Miyako::Plane#y
Miyako::Plane#y=(v)

プレーン画像上で画面の左上に表示させる位置のX、Y座標の値を取得・設定する

Miyako::Plane#drawBlock
Miyako::Plane#drawBlock=(b)

プレーンに対して行う描画命令を記述したブロック(Procクラスのインスタンス)を取得・設定する

Miyako::Plane#visible
Miyako::Plane#visible=(v)

プレーン表示の可否を示すフラグを取得・設定する

Miyako::Plane#show
Miyako::Plane#hide

プレーンを表示／隠蔽する

Miyako::Plane#dp
Miyako::Plane#dp=(v)

プレーン表示の深度を示す値を取得・設定する

Miyako::Plane#dispose

プレーンに使用しているスプライトオブジェクトを解放する

# Miyako::WindowParameterクラス

# Miyako::CursorParameterクラス

ウィンドウ用に表示する書くグラフィックの範囲を格納するクラス
ウィンドウの窓枠・背景に使用する各パーツの領域の範囲やカーソル用のパーツのアニメーションパターン数を定義する
アニメーションが可能なカーソルパーツの領域範囲は、実際に表示するパーツの大きさを指定するが、アニメーションする他のパーツはその下に格納する仕様となっている
v0.9より、各要素の1〜9をWindowParameterが、10〜12をCurosorParameterが受け持つ。それぞれ使用する画像は別々でも同じでもよい
透明色は、画像の左上隅(0,0)の位置の色とする
構造体扱い

Miyako::WindowParameter.new(fn, lt, top, rt, left, right, lb, bottom, rb, client)
Miyako::CursorParameter.new(wait, wp, cr, cp, pg, pp)

WｉｎｄｏｗParameter、CursorParameterクラスのインスタンスを生成する
各パラメータは、以下のlefttop〜pagepatの説明に対応している

Miyako::WindowParameter.default
Miyako::CursorParameter.default

Miyakoが標準で所持しているWindowParameter、CursorParameterクラスのインスタンスを返す

Miyako::WindowParametere#[]

窓枠の各位置に描画するパーツの領域を示すMiyako::Rectクラスのインスタンス。位置は以下のシンボルのとおり

シンボル | 対応箇所
:lt | 左上
:t | 上
:rt | 右上
:l | 左
:r | 右
:lb | 左下
:b | 下
:rb | 右下

Miyako::WindowParameter#client

背景として描画するパーツの領域を示すMiyako::Rectクラスのインスタンス

Miyako::CursorParameter#wait

ポーズカーソルとして描画するパーツの領域を示すMiyako::Rectクラスのインスタンス

Miyako::CursorParameter#waitpat

ポーズカーソルのアニメーションパターン数

Miyako::CursorParameter#select_cursor[part]

選択カーソルとして描画するパーツの領域を示すMiyako::Rectクラスのインスタンス(アニメーションパターン１つ分)
partで使用するシンボルは以下の表の通り

シンボル | 対応箇所
:u | 上向き
:l | 左向き
:r | 右向き
:d | 下向き

Miyako::CursorParameter#cursorpat

選択カーソルのアニメーションパターン数

Miyako::WParam#scroll_cursor[part]

ページカーソルとして描画するパーツの領域を示すMiyako::Rectクラスのインスタンス(アニメーションパターン１つ分)

シンボル | 対応箇所
:u | 上向き
:l | 左向き
:r | 右向き
:d | 下向き

Miyako::WParam#pagepat

ページカーソルのアニメーションパターン数

Miyako::WParam#w

窓枠領域の幅を取得する
但し、各パーツの幅が同じときのみ有効

Miyako::WParam#h

窓枠領域の高さを取得する
但し、各パーツの高さが同じときのみ有効

Miyako::CursorParameter#ww

ポーズカーソルの幅を返す

Miyako::CursorParameter#wh

ポーズカーソルの高さを返す

Miyako::CursorParameter#cw

ウィンドウの左上からクライアント表示領域の左上までの幅を返す
但し、各パーツの幅が同じときのみ有効

Miyako::CursorParameter#ch

ウィンドウの左上からクライアント表示領域の左上までの高さを返す
但し、各パーツの高さが同じときのみ有効

Miyako::WindowParameter#get_parts
Miyako::CursorParameter#get_parts

各パーツをスプライトとして管理するWindowParts、CurosorPartsクラスのインスタンスを返す

# Miyako::WindowPartsクラス

# Miyako::CursorPartsクラス

ウィンドウ用に表示する書くグラフィックをスプライトとして格納するクラス
ウィンドウの窓枠・背景に使用する各パーツの領域の範囲やカーソル用のパーツのアニメーションパターン数を定義する
アニメーションが可能なカーソルパーツの領域範囲は、実際に表示するパーツの大きさを指定するが、アニメーションする他のパーツはその下に格納する仕様となっている
このクラスのインスタンスは、WindowParameter、CurosorParameterクラスのget_partsのメソッドを介してのみ入手できる
各要素の1〜9をWindowPartsが、10〜12をCurosorPartsが受け持つ。それぞれ使用する画像は別々でも同じでもよい
透明色は、画像の左上隅(0,0)の位置の色とする
構造体扱い

Miyako::WindowParts.new(param)
Miyako::CursorParts.new(param)

WindowParts、CursorPartsクラスのインスタンスを生成する

Miyako::WindowParts#...

窓枠の各位置に描画するパーツをスプライトとして返す。メソッドとその位置は以下の通り

メソッド名 | 対応箇所
frame_lt | 左上
frame_t | 上
frame_rt | 右上
frame_l | 左
frame_r | 右
frame_lb | 左下
frame_b | 下
frame_rb | 右下

Miyako::WindowParts#client

背景として描画するパーツをスプライトとして返す

Miyako::CursorParameter#wait

ポーズカーソルとして描画するパーツの領域を示すMiyako::Rectクラスのインスタンス

Miyako::CursorParameter#waitpat

ポーズカーソルのアニメーションパターン数

Miyako::CursorParts#select_cursor[part]
Miyako::CursorParts#scroll_cursor[part]

選択・ページカーソルとして描画するパーツをスプライトとして返す(アニメーションパターン１つ分)
partで使用するシンボルは以下の表の通り

シンボル | 対応箇所
:u | 上向き
:l | 左向き
:r | 右向き
:d | 下向き

Miyako::WindowParameter#tr_color
Miyako::CursorParameter#tr_color

パーツ画像で使用する透明色を返す。透明色は、画像の[0,0]の位置の色

# Miyako::Windowクラス

# Miyako::TextBoxクラス

ウィンドウやテキストボックスを管理するクラス。メソッドは共通なので、Windowクラスを例にとって説明する
また、Window、TextBoxクラスでは、Spriteで使用するレイアウト関連メソッドが全て扱える

Miyako::Window#drawWindow

実際にウィンドウを描画するメソッド
クラス内部では、
・窓枠画像
・クライアント領域
・背景画像
の３つのスプライトが用意されている
窓枠と背景はインスタンス生成時に画像ファイル名とパラメータリスト（Miyako::WParamクラスのインスタンス）をもとに作成する
クライアント領域には、ユーザが作成したビットマップや、ウィンドウに表示する文字列、描画メソッドを格納する

ポーズカーソルは、文字の表示を待つ際に表示させるカーソルのことキーの入力があるまで待つ際に使う
選択カーソルは、コマンド選択などに利用するカーソル
ページカーソルは、クライアント領域が実際の領域から見て余っている場合に自動的に表示される複数ページ存在しているコマンドウィンドウを実現するときに使う

Miyako::update内部で呼ばれる

Miyako::Window.new(size = Size.new(256, 256), wparams = WindowParameter::default, cparams = CursorParameter::default, balpha = 255, istile = true, margin = 0.5)
Miyako::TextBox.new(size = Size.new(256, 256), cparams = CursorParameter::default, balpha = 255, istile = true, margin = 0.5)

ウィンドウクラスのインスタンスを作成する
fnameはウィンドウの窓枠などを格納したファイル名、px,pyは透明色のピクセルの座標、balphaは背景を透過させる値(0〜255)
sizeはクライアント表示領域のサイズ、istitleには背景画像をタイル状に貼りつけるか拡大・縮小して貼りつけるかを示すフラグ、
wparams,cparamsには引数で渡す画像ファイルに対する、窓枠・背景などのパラメータ値を示すMiyako::WindowParameter,Miyako::CursorParameterクラスのインスタンスを指定する

fnameで指定する画像に透明度を持つ画像ファイルを使う場合、アンチエイリアス等は消えてしまいますのでご注意下さい

Miyako::Window.getList

表示するウィンドウに属するスプライトの一覧を返す

Miyako::Window#clientX
Miyako::Window#clientX=(v)
Miyako::Window#clientY
Miyako::Window#clientY=(v)

ウィンドウに対するクライアント領域の表示開始位置のX,Y座標を返す/設定する
クライアント領域が実際の表示領域よりはみ出している場合はページカーソルを自動的に表示する

Miyako::Window#clientW
Miyako::Window#clientH
Miyako::Window#clientSize

ウィンドウのクライアント表示領域の幅・高さを取得する
clientSizeメソッドは、[w,h]の配列として返す

Miyako::Window#clientLeft

ウィンドウから見たクライアント領域への長さを返す
実際は、窓枠の左上領域の幅と同じ

Miyako::Window#clientTop

ウィンドウから見たクライアント領域への高さを返す
実際は、窓枠の左上領域の高さと同じ

Miyako::Window#setClient(img, px = 0, py = 0)

クライアント領域を表示するための画像を登録する
px,pyには透明色となるピクセルの座標を渡す

Miyako::Window#pauseWait=(v)

ウィンドウのポーズ画像を表示させるときに、アニメーションするときの秒数（0以上の整数・実数）を設定する

Miyako::Window#cursorVisible
Miyako::Window#cursorVisible=(v)

ウィンドウ中の選択カーソルを表示の可否を示すフラグを取得・設定する

Miyako::Window#cursorWait=(v)

選択カーソルのアニメーションを行う際の秒数（0以上の整数・実数）設定する

Miyako::Window#cursorDir
Miyako::Window#cursorDir=(v)

選択カーソルを表示させるときの方向を取得・設定する
方向が左・上・右・下の順で値が0〜3になる

Miyako::Window#cursorX
Miyako::Window#cursorX=(v)
Miyako::Window#cursorY
Miyako::Window#cursorY=(v)

選択カーソルを表示する際のクライアント領域のX,Y座標を取得・設定する

Miyako::Window#pageWait=(v)

ページカーソルのアニメーションを行う際の秒数（0以上の整数・実数）を設定する

Miyako::Window#pause?
Miyako::Window#pause=(v)

文字描画のポーズを行うかどうかのフラグを取得・設定する

Miyako::Window#x
Miyako::Window#x=(v)
Miyako::Window#y
Miyako::Window#y=(v)

ウィンドウを表示させる画面上のX,Y座標を取得・設定する

Miyako::Window#dp
Miyako::Window#dp=(v)
Miyako::Window#setDPs(*v)

ウィンドウを表示させる深度を取得・設定する
setDPsメソッドは背景・クライアント・窓枠それぞれの深度を設定する
dp=メソッドでは各スプライトの深度は同じ値になる
dpメソッドでは[窓枠,クライアント,背景]の各深度を返す

Miyako::Window#visible
Miyako::Window#visible=(f)

ウィンドウ表示の可否を示すフラグを取得・設定する

Miyako::Window#show
Miyako::Window#hide

ウィンドウを表示／隠蔽する
但し、カーソルはその対象ではない

Miyako::TextBox#show_text
Miyako::TextBox#hide_text
Miyako::TextBox#show_client
Miyako::TextBox#hide_client

テキストボックスの文字表示側・クライアント側のそれぞれに対して
表示／隠蔽を指定する

Miyako::Window#bgAlpha
Miyako::Window#bgAlpha=(v)

ウィンドウの背景領域に対する透明度を取得・設定する

Miyako::Window#textVisible
Miyako::Window#textVisible=(v)

ウィンドウの文字領域に文字を描画するかどうかのフラグを取得・設定する

Miyako::Window#clientVisible
Miyako::Window#clientVisible=(v)

クライアント領域の表示を示すフラグを取得・設定する(Windowクラスのみ)

Miyako::Window#msg

画面に表示するための文字列を管理するMessageArrayクラスのオブジェクトを返す
描画する際はこの配列クラスを介して文字列を取得・設定する
また、Fontクラスで説明したマクロも使用できる

Miyako::Window#cr

ウィンドウの文字描画中に改行する

Miyako::Window#clear

ウィンドウの文字描画領域を消去し、描画開始を文字描画領域の左上に戻す

Miyako::Window#font
Miyako::Window#font=(f)

Miyako::Window#locateX=(v)
Miyako::Window#locateY=(v)
Miyako::Window#locate(x, y)

描画領域中で描画を開始したい座標を設定する

Miyako::Window#drawBlock
Miyako::Window#drawBlock=(b)

ウィンドウに描画する命令のブロック(Procクラスのインスタンス)を取得・設定する

Miyako::Window#window_params
Miyako::Window#cursor_params
Miyako::TextBox#cursor_params

ウィンドウ・カーソルのパーツの領域を指定するパラメータ群(WindowParameter,CursorParameter)を返す

Miyako::Window#dispose

ウィンドウに使われる各種スプライトや画像領域を開放する

# Miyako::MParamクラス

Mapクラスで使用するパラメータを管理するクラス。
マップに使用するコードナンバーとマップチップ画像との関連は、「Platinum」というフリーのWindows用マップエディタの形式を採用している

Miyako::MParam#name

マップチップ名を設定する

Miyako::MParam#tsize

マップチップのコードナンバーの単位を示す(16もしくは256)
tsizeの値は、マップチップの大きさに依らない
tsizeが16のときは0〜255、256のときは0〜65535がコードナンバーになる

Miyako::MParam#tpixels

マップチップ１枚のピクセル数を示す
特に指定は無いが、大抵は16ピクセルもしくは32ピクセルとなる

Miyako::MParam#px
Miyako::MParam#py

マップチップ画像状で透明色となるピクセルのX,Y座標を示す

Miyako::MParam#alpha

alphaは、マップチップ画像状での透明度を設定する。nilのときはblistで指定したファイルを透明度付き画像と認識する

Miyako::MParam#csv

mnameは、マップに表示したいコードナンバーを収めたcsvファイル名を指定する
このとき、csvファイルに存在するレイヤはイベントレイヤが一番先頭になることに注意すること

Miyako::MParam#blist

blistには、各レイヤに表示するマップチップファイル名を指定するファイル名の代わりにnilを渡すと、イベントマップレイヤとして認識する

# Miyako::Mapクラス

所定のマップチップとマップデータを元にマップ画像を作成するクラス
x=メソッド、y=メソッドを使用してマップをスクロールさせることができる
マップ内部には各レイヤが存在しており、そのレイヤを別々の深度で重ね合わせることが出来る
レイヤは配列として存在しており、Mapクラスのインスタンス作成時にマップチップファイル名を渡した順番に作成している
（各レイヤの深度が同じ時は、配列のインデックスの若い方が手前に表示される）なお、画像を作成しない(マップチップファイル名の代わりにnilを渡した)レイヤを「イベントレイヤ」と呼び、各種イベントを起こすためのコードナンバーを格納するレイヤとして機能する
MapFastクラスは、マップ上の画像を全て描画して、その一部を表示しているため、描画は速いがメモリ消費量がかなり大きくなる
Map,MapFastクラスの各メソッド名は共通のため、Mapクラスのものを代表に説明する

マップ画像に透明度を持つ画像ファイルを使う場合、アンチエイリアス等は消えてしまいますのでご注意下さい

なお、マップに使用するコードナンバーとマップチップ画像との関連は、「Platinum」というフリーのWindows用マップエディタの形式を採用している

# Miyako::MapLayerクラス

実際のマップデータと表示画像(レイヤ)を扱うクラス
これらのクラスは、実際はMiyako::Mapクラス内部で使用しているため詳しい説明は割愛

Miyako::Map.new(param)

マップ情報を格納するインスタンスを生成する

Miyako::Map#name

インスタンスに含まれるマップ名を返す

Miyako::Map#layers
Miyako::Map#layer(idx)

layersメソッドは、インスタンスに格納されているレイヤ情報の一覧を返す
layerメソッドは、idx番目のレイヤ情報を取得する(イベントレイヤ含む)

Miyako::Map#x
Miyako::Map#x=(v)
Miyako::Map#y
Miyako::Map#y=(v)

マップを画面に表示する際の左上X,Y座標を取得・設定する

Miyako::Map#w
Miyako::Map#h

マップ画像の幅・高さを取得する
但し、ピクセル単位ではなくマップチップ単位となる

Miyako::Map#dp
Miyako::Map#dp=(d)
Miyako::Map#setDPs(*dl)

各レイヤの深度を取得・設定する
dpメソッドは、各レイヤの深度を配列形式で返す
dp=メソッドは、各レイヤの深度を同一値で設定する
setDPsメソッドは、各レイヤの深度を別々に指定する

Miyako::Map#visible
Miyako::Map#visible=(f)

マップを表示されているかを示すフラグを取得・設定する

Miyako::Map#getCode(idx, x, y)

マップチップ単位の座標から、idxで示す対象のレイヤ上にあるマップチップコードを取得する
イベントの有無を判別するする際に使用する

Miyako::Map#getCodeReal(idx, x, y)

マップチップ単位の座標から、idxで示す対象のレイヤ上にあるマップチップコードを取得する
イベントの有無を判別するする際に使用する
getCodeとの違いは、チップ単位ではなく、実座標の値を渡す

Miyako::Map#chipSize

マップで使用されているマップチップのピクセル数を返す
キャラクターのマップチップ上の座標を求める際に使用する

Miyako::Map#dispose

マップを実現する際に使用するメモリ領域を開放する

# Miyako::Storyモジュール

Miyako上で実装できるフレームワークの本体
フレームワーク内で行いたい処理は、StoryモジュールをMix-inしたクラスを介して実装する。
以下の図のように、各画面を「シーンクラス」として定義し、StoryモジュールをMix-inしたクラスから
インスタンスを作成し、runメソッドを呼び出すことによって実行できる。
runメソッドの内部で台本クラスのインスタンスが作られ、メソッドの返却値をもとに台本クラス間の
移動を行っている
また、シーンはキャッシュされており、頻度の高いもの最大20個キャッシングできるように実装している。それを超えると、最後に参照してからのスパンが最長のシーンを削除する

Miyako::Story.class_prefix
Miyako::Story.class_prefix=(v)
Miyako::Story.sub_prefix
Miyako::Story.sub_prefix=(v)

各シーン・サブルーチンを定義するクラスのプリフィックスを取得・設定する
クラス登録前に実行されるように位置に気をつけること
class_prefixとsub_prefixに同じ名前を登録しないように注意する

Miyako::Story.run(n)

ゲーム・プログラムの実行を開始する
nは、スクリプトのスタートを示すクラス名を示す

Miyako::Story.prev_label
Miyako::Story.next_label
Miyako::Story.upper_label

prev_labelは、現在実行しているものの前に実行していたシーンのラベルを返す
シーンが始まったときに更新される
next_labelは、次に実行されるシーンのラベルを返す
シーンクラスのupdateメソッドが終了したときに更新される
upper_labelは、サブルーチンの呼び元のラベルを返す
サブルーチン呼び出しの時に更新される
どこからもサブルーチン呼び出しされていないときはnilを返す

Miyako::Story#listup

シーン・サブルーチンクラス名とその概要との一覧を出力するためのメソッド

Miyako::Story#listup2ccsv

基本的にはlistupメソッドと同じだが、csv形式のリストを引数で指定したファイル名で出力する

# Miyako::Story::Sceneクラス

各画面(たとえば、シーンやステージ)を構成する各クラス（シーンクラス）の基本クラス
シーンクラスは、全てこのSceneクラスを継承する必要がある（そうしないと適切に画面間を移動できない）
また、派生クラス名はStory.class_prefixもしくはStory.sub_prefixプロパティに設定した接頭語にしなければならない
Sceneクラス内には以下の６つのメソッドが定義されており、以下の図のように実行される
また、@newインスタンスには現在処理しているシーンクラスのラベル
(クラス名の以降の文字列もしくは数値)が、
@prevインスタンスには、直前に処理されていたシーンのラベルが、
@upperインスタンスには、サブルーチンの呼び元シーンのラベルが設定されている
以下のメソッドは、Story.run内で実行される

Miyako::Story.Scene.new(n)

シーンクラスのインスタンスをを生成する。

Miyako::Story.Scene.notice

派生クラスの概要を文字列として返すプロパティ
派生するときにこのメソッドをオーバーライドしておく
Author#listupが呼び出された際にクラスメイトこのnoticeプロパティを一覧として表示することが出来る

Miyako::Story.Scene#init

シーンインスタンスが生成されたときに１回だけ実行される処理
インスタンスの生成などに使用する

Miyako::Story.Scene#setup

前処理。画面表示前のデータ設定などを行う。一通り終了した後は処理をview_inに移す

Miyako::Story.Scene#view_in

メインの処理を行う前に必要な画面表示を行うメソッド（たとえば、フェードイン）
返却値はtrue/falseで、trueを返し続けている間はview_inが繰り返し呼び出される
falseを返したときは、処理がupdateに移る

Miyako::Story.Scene#update

メインの画面更新処理を示すメソッド返却値として、@nowと同じ値を返すと、繰り返すupdateが実行される
@now以外の値かnilを返すと終了する（但し、nilを返した場合はプログラムの実行も終了する）
また、サブルーチンを使った移動の場合、返却値が"return"という文字列のときはサブルーチンの呼び出し元に戻る
(但し、サブルーチン呼び出しが無いときはnilを返すのと同じになる)

Miyako::Story.Scene#view_out

メインの処理を行なった後に必要な画面表示を行うメソッド（たとえば、フェードアウト）
返却値はtrue/falseで、trueを返し続けている間はview_outが繰り返し呼び出される
falseを返したときは、処理がfinalに移る

Miyako::Story.Scene#final

後始末。作成した領域を開放できるようにするなど、の手続きを行う

Miyako::Story.Scene#interrupt

割り込み処理。シーン実行中にキー割り込みをするときに処理を追加する。移動するときはその移動先のラベル、そのまま戻るときはnilを戻り値として返す

# Yukiモジュール

Yukiで使用する全てのモジュール・クラスは全てYukiモジュールに属している。

YukiError

Yuki上で起こった例外クラス。どのような種類のエラーでもYukiErrorクラスの例外として返す

# Yuki::Variablesクラス
(旧Miyako::Vars)

メッセージマクロ内で使用するインスタンス(値)やフラグをアクセスするためのクラス内部でインスタンス・フラグを管理するハッシュを持っている

Yuki::Variables.new

変数・フラグ管理インスタンスを生成する

Yuki::Variables#reset

変数・フラグの内容を消去する

Yuki::Variables#var
Yuki::Variables#[]
Yuki::Variables#[]=v

インスタンス内で管理されているハッシュにアクセスする

Yuki::Variables#flag

フラグを管理するハッシュにアクセスする

Yuki::Variables#exec(expr)

exprで指定した式を評価する
評価したしたときの返却値をこのメソッドの返却値とする

# Yuki::Commandsクラス
(旧Miyako::Cmds)

コマンド情報管理クラス
コマンド情報は、別ファイルに記述する(command_reference.txt参照)

Yuki::Commands#new(filename)

コマンド情報ファイルをCommandsクラスインスタンスに変換する
返還後は、[]メソッドで参照できる

Yuki::Commands.append(filename)

現在登録されているコマンド情報にファイルの内容を追加する
同一名のコマンドが存在するときは追加した方を採用する

Yuki::Commands.reset

現在登録されているコマンド情報にファイルを消去する

Yuki::Commands#[](label)

labelで指定したコマンド情報を参照する。
シンボルによるハッシュとなっているため、以下のシンボルを使用してアクセスする

名称 | 内容
":title" | コマンドのタイトル ”どうする？”,”何をする？”等
":cansel" | コマンドキャンセル時に移動するシナリオ名 シーンラベルは使用できない
":list" | コマンドリスト 内容は以下のハッシュになっている
名称 | 内容
"name" | コマンド名 ”移動する”,”調べる”等
"condition" | 表示条件 条件を示す式(Ruby記法)を文字列で 変数・フラグ(var,flagが使用可能)
"label" | 選択時に返すシーンラベル
"scenario" | 選択時に返すシナリオ名

# Yuki::Directorクラス
(旧Miyako::MessageDirector)

メッセージマクロ(文字列形式・ファイル形式)を読み込んで、MessageDataの内容に対応する処理を記述・実行・結果を格納するためのクラス
処理の内容は、このクラスを継承することで独自の処理を実装することが可能
(デフォルトの内容は、Miyako ExtensionのMessageBoxクラスに準拠)

Yuki::Director.new(box)

インスタンスを生成する
boxは、メッセージを表示するためのTextBox/Windowクラスのインスタンス

Yuki::Director#set_text(text)

textで指定した文字列形式のメッセージマクロを単体のScenario(シナリオ名無し)オブジェクトインスタンスにコンパイルする

Yuki::Director#set_plot(filename)

filenameで指定したプロットファイルを読み込みPlotオブジェクトインスタンスにコンパイルしておく

Yuki::Director#scenario(name=:Main)

nameで指定したシナリオを実行シナリオとして採用する
引数を省略した場合は自動的に:Mainシナリオを採用する

Yuki::Director#set_commands(com_file)

com_fileで指定したコマンドファイルを読み込んで、Commandsオブジェクトインスタンスを生成する

Yuki::Director#append_commands(com_file)

既存のCommandsオブジェクトインスタンスにcom_fileで指定したコマンドファイルの内容を追加する

Yuki::Director#start(wait=0)

メッセージ処理を開始する
waitは、メッセージをWindow/TextBoxに表示する際のウェイトを秒単位(実数)で指定する

Yuki::Director#update

メッセージ処理を更新する

Yuki::Director#message_loop

メッセージ処理の本体。updateメソッドの中で呼ばれる

Yuki::Director#text_separate?
Yuki::Director#text_separate=(f)

メッセージ表示時に、１文字ずつ表示するかを示すフラグ

Yuki::Director#execute?

メッセージ処理中(eot?がtrueになるまで)かどうかを問い合わせるためのフラグ

Yuki::Director#selecting?

コマンド選択中かどうかを問い合わせるためのフラグ

Yuki::Director#reset

メッセージの表示をやり直す。
ウィンドウ内の文字は消去され、表示位置を文字描画領域の左上に戻る

Yuki::Director#reset_select

選択中のコマンドを先頭に戻す

Yuki::Director#clear

ウィンドウ内の文字を消去し、表示位置を文字描画領域の左上に戻る

Yuki::Director#cansel_pause

メッセージのポーズ状態を解除する

Yuki::Director#show

ウィンドウを表示する
yes_noもしくはcommandメソッドでコマンド選択を可能にしている場合は、同時にコマンド選択を開始する

Yuki::Director#hide

ウィンドウを隠蔽する
yes_noもしくはcommandメソッドでコマンド選択を可能にしている場合は、同時にコマンド選択を中止する

Yuki::Director#dispose

内部使用インスタンスを消去するメソッド
使用終了時に呼び出す

<<テンプレートメソッド>>

以下のメソッドは、Directionクラスの各定数(コード)に対応しており、
そのコードに対応する処理をメソッド内部に実装する
引数のdataは、そのコードに対応するDirectionクラスのdataプロパティと
同一となっている

Yuki::Director#process_char(data)

コードがCHARのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_fontcolor(data)

コードがFONTCOLORのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_fontsize(data)

コードがFONTSIZEのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_pause(data)

コードがPAUSEのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_clear(data)

コードがCLEARのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_cr(data)

コードがCRのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_meswait(data)

コードがMESWAITのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_sleep(data)

コードがSLEEPのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_locate(data)

コードがLOCATEのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_plot_append(data)

コードがPLOT_APPENDのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_label(data)

コードがLABELのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_scenario(data)

コードがSCENARIOのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_expr(data)

コードがEXPRのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_sound(data)

コードがSOUNDのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_image_init(data)

コードがIMAGE_INITのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_dp(data)

コードがDPのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_alpha(data)

コードがALPHAのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_move(data)

コードがMOVEのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_move_to(data)

コードがMOVE_TOのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_layout(data)

コードがLAYOUTのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_show(data)

コードがSHOWのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_hide(data)

コードがHIDEのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_command_init(data)

コードがCOMMAND_INITのときの処理を実装するためのテンプレートメソッド

Yuki::Director#rocess_command_append(data)

コードがCOMMAND_APPENDのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_command(data)

コードがCOMMANDのときの処理を実装するためのテンプレートメソッド

Yuki::Director#process_yesno(data)

コードがYESNOのときの処理を実装するためのテンプレートメソッド

Yuki::Director#rocess_eot(data)

コードがEOTのときの処理を実装するためのテンプレートメソッド

<<インスタンス変数>>

テンプレートメソッド内部では、以下のインスタンス変数にアクセスすることが出来る
他にもインスタンス変数は存在するが、それらのオブジェクトにアクセスしたときの
動作の保証は持たない

変数名 | 内容
@box | メッセージ表示対象のWindow/TextBoxクラスのインスタンス インスタンス自体は参照のみ可能
@var | 変数・フラグを管理するVariablesクラスのインスタンス インスタンス自体は参照のみ可能
@cmds | コマンドを管理するCommandsクラスのインスタンス インスタンス自体は参照のみ可能
@event | イベントの結果を管理するハッシュ @eventが示すオブジェクトそのものを置き換えてはならない また、イベントの名称として、以下のシンボルを用意している また、下記予約語が示すインスタンスは、MessageDirector#updateメソッドが呼ばれる 度にnilにされることに注意すること
シンボル名 | 内容
:select_result | yesno,commandマクロで行ったコマンド選択の結果 yesnoの場合は[0(はい)/1(いいえ)]、 commandの場合は、Cmdクラスインスタンス上の コマンド選択選択結果となる。上から0,1,2,...となる 結果は、コマンドファイルで指定したコマンドの並び上での値であり、 決して画面に表示しているコマンドの選択した結果ではないことに注意する
:next_label | label,commandマクロで指定したラベル commandの場合は、選択したときのラベルを格納している
:select_scenario | commandマクロを使用したときに選択したコマンドに対応して得られるシナリオ名
:expr_result | exprマクロで指定した式の結果を格納する
:pause | ポーズに入った瞬間trueになる
:pause_cansel | ポーズから復帰した瞬間trueになる
:cansel | コマンド選択から何らかの理由でキャンセルされたときにtrueになる
:cansel_scenario | コマンドをキャンセルした際に得られるシナリオ名を取得する
:yn_scenario | YESNOマクロで選択した際に得られるシナリオ名を取得する
@message | 処理しているMessageDataクラスのインスタンス インスタンス自体は参照のみ可能
@wait | メッセージを１文字表示する際のウェイトを秒単位で指定するWaitCounterクラスのインスタンス
@sleep | 処理を停止する時間を秒単位で指定するWaitCounterクラスのインスタンス
@y | コマンド選択時の左上のy座標
@res | コマンドの選択中の番号。 但し、先頭のコマンドは０となることに注意
@eot | 現在使用しているシナリオのメッセージが終端に達したことを知らせるフラグ
@selecting | コマンド選択中を示すフラグ
@selects | コマンド選択中で、選択できるコマンドの数を示す 「はい／いいえ」型の場合は値は２となる
@title | 選択中のコマンドのタイトル。 指定しないときは空文字列("")を指定する
@cansel | コマンド選択中にキャンセルした際に選択できるシナリオ名。 キャンセル禁止のときはnilを格納する はい／いいえ型の場合は必ずnilにしておく
@select2num | 選択したコマンド番号とコマンドオブジェクトインスタンスでのコマンド番号に対応するハッシュ コマンド表示条件に合致しないコマンドが表示されないために用意している
@select2label | 選択したコマンド番号と移動先ラベルとに対応するハッシュ 定義されていないときはnilが格納されている
@select2scenario | 選択したコマンド番号とシナリオ名とに対応するハッシュ 定義されていないときはnilが格納されている
@yn2scenario | はい／いいえを選択した際に指定できるシナリオ名の配列 大きさは必ず２以上

<<その他メソッド>>

以下のメソッドは、テンプレートメソッド内部でのみ使用できるメソッドを指す

Yuki::Director#yesno(ynscenarios)

Wndow/TextBoxに「はい／いいえ」コマンドを表示する
引数ynscenariosは、それぞれ選択したときに得られるシナリオ名の配列(0番目は「はい」のとき、1番目は「いいえ」のとき)

Yuki::Director#command(clabel)

Wndow/TextBoxにclabelで指定したコマンドを表示する
結果は、コマンド番号は@var[:select_result]に、
ラベルは@var[:next_label]に格納される

Yuki::Director#process_default

特に何もする必要のないコードが渡ってきたときに、テンプレートメソッド内部で呼び出すメソッド
必要ではないコードに対応するテンプレートメソッドでは、このメソッドの呼び出しを記述しておく必要がある

# Yuki::Directionクラス
(旧Miyako::MessageData)

画面に文字を表示する際に使われる表示単位を示すクラス
実際の構成はこのクラスの配列となる
この組み合わせで、文字の表示を制御する
また、Miyako::Font.textScrollプロパティをtrueにしたとき、
配列の構成が文字列単位から文字単位に変更される

Yuki::Direction::CHAR

dataプロパティ(後述)が文字列を示す定数
:execタイプ

Yuki::Direction::FONTCOLOR

dataプロパティが描画文字色を示す定数
:settingタイプ

Yuki::Direction::FONTSIZE

dataプロパティが描画フォントサイズを示す定数
:settingタイプ

Yuki::Direction::PAUSE

文字列表示にポーズを書けて、ポーズカーソルを表示する指示のための定数
実装はユーザが行う
:execタイプ

Yuki::Direction::CLEAR

描画している文字列の消去を指示するための定数
実装はユーザが行う
:execタイプ

Yuki::Direction::CR

文字列の改行を指示する定数
配列中に組み込むと自動的に改行して描画する
:execタイプ

Yuki::Direction::MESWAIT

文字を表示する際のウェイト(秒単位、実数)を指定する定数
実装はユーザが行う
:execタイプ

Yuki::Direction::SLEEP

表示を一定時間止める際にその値(秒単位、実数)を指示する定数
実装はユーザが行う
:execタイプ

Yuki::Direction::LOCATE

表示位置を変更したい座標を指示する定数
座標として[x,y]の配列が格納されている
実装はユーザが行う
:settingタイプ

Yuki::Direction::YESNO

「はい・いいえ」コマンドを表示するための定数
はい・いいえのそれぞれが選択されたときに採用されるシナリオ名の配列が格納されている
実装はユーザが行う
:execタイプ

Yuki::Direction::COMMAND_INIT

コマンド情報を生成するための定数
コマンド情報が格納されているファイル名がdataに格納されている
実装はユーザが行う
:execタイプ

Yuki::Direction::COMMAND_APPEND

現在のコマンド情報にコマンドを追加するための定数
コマンド情報が格納されているファイル名がdataに格納されている
実装はユーザが行う
:execタイプ

Yuki::Direction::COMMAND

コマンド選択を実行するための定数
使用するコマンドリストのラベルがdataに格納されている
実装はユーザが行う
:execタイプ

Yuki::Direction::LABEL

シーン管理をしている際に、移動先ラベルを指示するための定数
実装はユーザが行う
:execタイプ

Yuki::Direction::PLOT_APPEND

現在のプロットオブジェクトにプロットを追加するための定数
プロットファイル名がdataに格納されている
実装はユーザが行う
:execタイプ

Yuki::Direction::SCENARIO

シナリオを変更するための定数
シナリオ名がdataに格納されている
実装はユーザが行う
:execタイプ

Yuki::Direction::EXPR

文字列の評価を指示するための定数
実装はユーザが行う
:execタイプ

Yuki::Direction::SOUND

効果音の演奏を指示する定数
[音声ファイル名,音量,演奏が終わるまで待つかどうかのフラグ]形式の配列がdataに格納されている
実装はユーザが行う
:execタイプ

Yuki::Direction::IMAGE_INIT

指定の画像をスプライトとして登録する
画像名(画像を指す名前)、画像のファイル名、透明色を指定するかのフラグがdataに格納されている
実装はユーザが行う
:execタイプ

Yuki::Direction::DP

指定の画像の深度を指定する
画像名と深度がdataに格納されている
実装はユーザが行う
:execタイプ

Yuki::Direction::ALPHA

指定の画像の透明度を指定する
画像名と透明度(0〜255)がdataに格納されている
実装はユーザが行う
:execタイプ

Yuki::Direction::LAYOUT

指定の画像のレイアウトを指定する
画像名とx,y座標でのレイアウト指定がdataに格納されている
実装はユーザが行う
:execタイプ

Yuki::Direction::MOVE

指定の画像を移動する
画像名と移動量がdataに格納されている
実装はユーザが行う
:execタイプ

Yuki::Direction::MOVE_TO

特定の画像を移動する
画像名と移動位置がdataに格納されている
実装はユーザが行う
:execタイプ

Yuki::Direction::SHOW

指定の画像を表示する
画像名がdataに格納されている
実装はユーザが行う
:execタイプ

Yuki::Direction::HIDE

特定の画像を表示する
画像名がdataに格納されている
実装はユーザが行う
:execタイプ

Yuki::Direction::EOT

メッセージの最後尾を指示する定数
:execタイプ

Yuki::Direction.new(c, d, t)

新しいMessageDataクラスのインスタンスを返す
Miyako内部で使用する

Yuki::Direction.cr

codeプロパティが定数CRのMessageDataインスタンスを返す

Yuki::Direction.eot

codeプロパティが定数EOTのMessageDataインスタンスを返す

Yuki::Direction#code

MessageDataインスタンスの機能を示す値を取得するプロパティ
上記定数のどれかが格納されている

Yuki::Direction#data

codeプロパティに対応したデータを格納するプロパティ
内容は上記定数を参照

Yuki::Direction#type

処理のタイプを格納するプロパティ。
タイプには、:setting(データ設定タイプ)、:exec(処理実行タイプ)がある

# Yuki::Scenarioクラス
(旧Miyako::MessageArray)

メッセージ配列を管理するクラス
nextmsgメソッドを使ってMessageDataクラスのオブジェクトを取り出し、配列に格納する
実際は、内部と外部との２つの配列が存在し、内部配列からオブジェクトを取り出し、
必要なら加工をしたうえで外部配列に設定する(する・しないは処理内容による)
Screen.update時に、そのメッセージデータを画面に表示する
配列の要素は操作可能

Yuki::Scenario.new

シナリオオブジェクトインスタンスを作成

Yuki::Scenario#separate
Yuki::Scenario#separate=(f)

メッセージ配列を作成するときに、文字列を１文字ずつ分割してDirectionインスタンスを作成するかどうかを示すフラグを取得・設定する
値が変わったときに自動的に配列を再作成する

Yuki::Scenario#text

メッセージ本体の文字列を返す

Yuki::Scenario#text=(str)
Yuki::Scenario#compile(str)

入力した文字列をメッセージ配列にコンパイルし、シナリオオブジェクトインスタンスとする
文字列はそのままtextプロパティの値になる
文字列は内部で自動的にUTF-8に変換される(標準出力を使うときにはtosjisメソッドなどを使う必要がある)

Yuki::Scenario#nextmsg

コンパイルしたシナリオオブジェクトインスタンスからDirectionインスタンスを取得する
終端まで返したときはEOTを返す

Yuki::Scenario#clear

シナリオ表示対象の画像をクリアする

Yuki::Scenario#reset(f=true)

シナリオを最初からやりなおす
引数としてtrueを返すと、同時にシナリオ表示対象の画像もクリアする

Yuki::Scenario#[]
Yuki::Scenario#[]=
Yuki::Scenario#first
Yuki::Scenario#last
Yuki::Scenario#push
Yuki::Scenario#pop
Yuki::Scenario#delete
Yuki::Scenario#delete_at
Yuki::Scenario#shift
Yuki::Scenario#unshift
Yuki::Scenario#concat
Yuki::Scenario#length
Yuki::Scenario#size
Yuki::Scenario#empty?
Yuki::Scenario#each
Yuki::Scenario#collect
Yuki::Scenario#map
Yuki::Scenario#select
Yuki::Scenario#inject
Yuki::Scenario#reject

シナリオに対して使用できるArrayクラスのメソッド

Yuki::Scenario#append(v)

基本的にはpopメソッドと同じだが、配列の最後尾と引数が文字列の時は
引数の文字列を最後尾の要素の文字列に連結する。要素の個数は増えない

（注意！）Miyao v0.6以降のWindow,TextBoxクラスでは、appendメソッドを使うと表示が崩れますので、
pushメソッドをお使い下さい！

# Yuki::Plotクラス

プロットファイル(旧メッセージマクロファイル)内のシナリオを一元管理するクラス
プロットファイルに使用できる内容は、別ファイル(stuff_reference.txt)を参照

Yuki::Plot.new(plot_file)

プロットファイルをプロットオブジェクトのインスタンスを作成

:Mainシナリオも作成する

Yuki::Plot#append(plot_file, start=nil)

プロットファイルの内容を現在のプロットオブジェクトのインスタンスに追加する
同一名のシナリオが存在する場合は、追加するシナリオに置き換えられる
追加するプロットファイル内に:Mainシナリオが存在するときは、それを無視する
start引数は、newメソッドで内部的に使用するため、説明は割愛する

Yuki::Plot#[](name)

nameで指定したシナリオ名(文字列もしくはシンボル)に対応するYuki::Scenarioクラスのインスタンスを返す
引数に存在しないシナリオを指定した場合はエラーを返す

# Yuki::Compilerクラス
(旧Miyako::MessageCompiler)

メッセージコンパイラ本体
このコンパイラを使うと、メッセージ配列(MessageArrayクラスのインスタンス)を取得できる
但し、最後尾にEOTが含まれていないところに注意

Yuki::Compiler.compile(Message, flag)

メッセージ配列に変換するためのコンパイルを行う
Messageには、コンパイル対象の文字列を設定する
flagは、文字列を１文字ずつ分割して配列を形成するかを指定するフラグ

(c)2006 Cyross Makoto
Miyakoメインサイトへ