本リファレンスマニュアルでは、Miyakoの基幹部分、「Miyako
API」のリファレンスを扱っています。
MessageBox、Vars等の拡張機能のリファレンスは取り扱っておりませんのでご注意下さい。
Miyakoで使用する全てのモジュール・クラスは全てMiyakoモジュールに属している
なお、特に説明していない限り、本モジュールで使われる単位は、
座標:ピクセル単位
時間:フレーム単位
となっている。
スクリプトを実行しているホストOSの名前を返す。
Windows系統の場合は"win"
その他の場合は"other"と返す
ウィンドウのタイトルをtitleに変更する
画面、入力デバイスを一括して更新する
Miyako上で起こった例外クラス。どのような種類のエラーでもMiyakoErrorクラスの例外として返す
座標情報を管理するクラス
Miyako::Pointクラスのコンストラクタ
x, yはそれぞれX座標、Y座標を示す
座標x, yをそれぞれ返す
クラス内に格納している情報を[x,y]の配列として返す
クラス内に格納している情報を"x,y"の文字列として返す
サイズ情報を管理するクラス
Miyako::Sizeクラスのコンストラクタ
w, hはそれぞれ幅、高を示す
幅w, 高さhをそれぞれ返す
クラス内に格納している情報を[w,h]の配列として返す
クラス内に格納している情報を"w,h"の文字列として返す
矩形情報を管理するクラス
Miyako::Rectクラスのコンストラクタ
x, y, w, hはそれぞれX座標、Y座標、幅、高を示す
座標x、座標y、幅w, 高さhをそれぞれ返す
クラス内に格納している情報を[x,y,w,h]の配列として返す
クラス内に格納している情報を"x,y,w,h"の文字列として返す
色情報を格納するクラス。クラスメソッドのみのクラス
基本的に、色情報は[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]
以下のパターンに対して引数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等のシンボル |
ccとして与えられたカラーコードを[r,b,g]の各要素の配列に変換する
"#rrggbb"として与えられた16進で表されたカラーコード文字列を[r,g,b]の配列に変換する
クラス内に格納している情報を"r,g,b"の文字列として返す
スプライト全体を管理するクラス
画面にスプライトを一括して描画する際に用いる
Miyako内部で使用するため説明は割愛する
画面にテキストを描画する際に用いるフォントを管理するクラス
TrueTypeフォントが使える(注:v0.9よりBDFフォントのサポートをとりやめました)
内部では、各フォントを拡張子("ttf/ttc")で判別するため、
使用するフォントファイル名には気をつけること
なお、テキストには以下のマクロが使用できる
但し、マクロ名は必ず半角小文字とすること
標準で使用するフォントのインスタンスを返す。Font.serifメソッドの値を返す
定義済みフォントのインスタンスを返す。OSにより、定義されているフォントが変わる
Windows:MS明朝
Linux:さざなみフォント(明朝)
その他:みかちゃんフォント
定義済みフォントのインスタンスを返す
Windows:MSゴシック
Linux:さざなみフォント(ゴシック)
その他:みかちゃんフォント
フォントファイル名fnameのフォントをサイズsize(デフォルトは16ピクセル)で使用できるように登録する
フォントに関しては、次のルールでファイルを検索する
登録しているフォントがBDFの場合、文字コードを登録する
使用できるのはSDL::SJIS、SDL::EUC、SDL::JIS
登録しているフォントの大きさを返す
登録しているフォントの大きさをszに変更する
文字列strを登録しているフォントで表示した時の横幅と高さを[w, h]の配列で返す
フォントの高さの理論値(フォント内で一番高い値)を返す
heightの値のうち、上部(アクセント記号など)の高さを返す
heightの値のうち、下部(アルファベットj,gの下部など)の高さを返す
上下の文字列同志が重ならない範囲でのフォントの高さの理論値を返す
v0.9以降はフォントの高さの計算は、sizeではなくline_skipで行っている
登録しているフォントの描画色を[r,g,b]の配列や"#rrggbb"といった文字列、色定数などで設定する
登録しているフォントの描画色を[r, g, b]の配列で返す
複数行の文字列strを、登録しているフォントで、dstで示しているビットマップ領域の指定領域に描画する
描画の始点はx,yで、行間のスペースをspで指定する
描画領域に描ききれなかった文字列を返す
drawMultiLineTextMildメソッドは、フォント描画する際にアンチエイリアスを行う
但し、フォントのサイズが24未満のときは何故かフォントが崩れるので、内部でdrawMultiLineTextを呼び出して回避している
描画し終わったときの右端の座標を[x,y]の配列で返す
Miyakoで表示する画面に関するモジュール
Miyakoで使用する画面の幅を示す(値は640)
Miyakoで使用する画面の高さを示す(値は480)
ウィンドウモードを示す定数。Screen.setModeメソッドで使う
フルスクリーンモードを示す定数。Screen.setModeメソッドで使う
現在のFPS値を返す
Miyakoで実行する際に設定している上限FPS値を返す
Miyakoで実行する時に上限となるFPS値をvalに変更する valが0のときは、MiyakoはFPS上限無しと認識する
画面左上にFPS値を表示するかを示すフラグを取得/設定する
Miyakoで使用している画面オブジェクトを取得する
Miyako内部で使用するために用意している
画面の横幅を返す。
画面の高さを返す。
左上座標から実際に表示される位置までのx座標のズレを取得・指定する
左上座標から実際に表示される位置までのy座標のズレを取得・指定する
スプライト描画や描画命令、テキスト描画命令、エフェクトを一括して行う
画面の描画を停止する
freezeしている間は画面の更新が行われない
後述のtrasitionをしない限り停止している
画面の描画を停止しているかを示すフラグ
freeze中の画面の描画を再開する
ウィンドウモードの切り替え。ウィンドウ←→フルスクリーンの切り替えを行う
ウィンドウモードの切り替え。
mには、Screen::WINDOW_MODE,Screen::FULLSCREEN_MODEを設定する
画面の解像度を変更する。
w,hには、新しく設定する画面の幅・高さをピクセル単位で設定する
対応していない解像度を設定して失敗したときは、解像度の変更は行わない
(注)解像度を設定したときは、Spriteクラスの全てのオブジェクトのviewPortプロパティは、全て新しい解像度の画面全体にリセットされる。
リセットされたくないときは、第3引数にfalseを渡す
画像領域を示すクラス。スプライトもこのBitmapを使用して貼り付ける
実際はSDL::Surfaceクラスを継承したものなので、SDL::Surfaceクラスで定義されている描画命令を全てサポートする
但し、実装は後述のMiyako::Sprite.drawBlockプロパティにブロックとして登録した方が危険性が少ない
Bitmapを指定した幅・高さで作成する
(ここ以降の描画命令は、Ruby/SDLリファレンスマニュアルで使用できる描画メソッドを抜粋・編集しています)
x,yの位置のピクセルの値を返す。
x,yの位置のピクセルの値をpixelにする。つまり、x,yの位置にpixelの色の点を打つ。
色がcolorの線を(x1,y1)から(x2,y2)まで描く。
色がcolorの長方形を描く。中はぬりつぶさない。
指定された長方形の領域をcolorでぬりつぶす。
色がcolorの円を描く。中はぬりつぶさない。
色がcolorの円を描き、中をぬりつぶす。
色がcolorの楕円を描く。中はぬりつぶさない。
色がcolorの楕円を描く。中をぬりつぶす。。
色がcolorのアンチエリアスした線を(x1,y1)から(x2,y2)まで描く。
色がcolorのアンチエリアスした円を描く。
色がcolorのアンチエリアスした円を描き、中をぬりつぶす。
色がcolorのアンチエリアスした楕円を描く。
アルファブレンドした直線を描く。
アルファブレンドした長方形を描く。
アルファブレンドした長方形を描き、中をぬりつぶす。
アルファブレンドした円を描く。
アルファブレンドした円を描き、中をぬりつぶす。
アルファブレンドした楕円を描く。
アルファブレンドした楕円を描き、中をぬりつぶす。
アルファブレンド、アンチエリアスした直線を描く。
アルファブレンド、アンチエリアスした円を描く。
アルファブレンド、アンチエリアスした楕円を描く。
(x1,y1)から(x4,y4)へのベジエ曲線を(x2,y2),(x3,y3)をコントロールポイントとしてcolorで指定した色で描く。levelは4から7くらいが普通。
(x1,y1)から(x4,y4)へのアンチエイリアスしたベジエ曲線を(x2,y2), (x3,y3)をコントロールポイントとしてcolorで指定した色で描く。 levelは4から7くらいが普通。
(x1,y1)から(x4,y4)へのベジエ曲線を(x2,y2), (x3,y3)をコントロールポイントとしてcolorで指定した色、alphaで指定したアルファ値で描く。levelは4から7くらいが普通。
(x1,y1)から(x4,y4)へのアンチエイリアスしたベジエ曲線を(x2,y2), (x3,y3)をコントロールポイントとしてcolorで指定した色、alphaで指定したアルファ値で描く。levelは4から7くらいが普通。
Miyakoで使用している入力デバイス情報を管理しているモジュール
入力デバイスはキーボードとジョイパッドを想定している
ゲームパッドの1〜12ボタンはキーボードの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キーは左右とも同じキーとして認識する
各方向ボタン・1〜12ボタンに対応する定数
trigger?やpushed?メソッドで使用する
入力デバイス情報を更新する
方向ボタン・キーを押している(triggerDirNum)/押した(pushedDirNum)方向を示す上記定数に対応した値を返す
何も押されていないときは-1を返す
引数として渡す定数に対応したボタン・キーが押している(trigger?)/押した(pushed?)ときにtrueを返す
引数には、Input::LEFT、Input::BTN1などの定数を与える
引数としてした可変個のシンボルに対応したボタン・キーを全て押している(trigger_all?)/押した(pushed_all?)ときにtrueを返す
引数として使用できるシンボル一覧を以下に示す
表中の[1](Z)は、ゲームパッド上の[1]や[A]ボタン、キーボードのZキーに該当する
引数を渡さなかったときは、全てのメソッドは「下記表にあるどれかのボタン・キーが押された時」にtrueを返す
シンボル | ボタン・キー |
---|---|
:down | ↓ |
:left | ← |
:right | → |
:up | ↑ |
:btn1 | [1](Z) |
:btn2 | [2](X) |
:btn3 | [3](C) |
:btn4 | [4](A) |
:btn5 | [5](S) |
:btn6 | [6](D) |
:btn7 | [7](Q) |
:btn8 | [8](W) |
:btn9 | [9](E) |
:btn10 | [10](V) |
:btn11 | [11](B) |
:btn12 | [12](N) |
:spc | スペースキー |
:ent | Enterキー (Returnキー) |
:esc | Escキー |
:alt | Altキー |
:ctl | Ctrlキー |
引数としてした可変個のシンボルに対応したボタンのどれかを押している(trigger_all?)/押した(pushed_all?)ときにtrueを返す
引数として使用できるシンボルは、上記trigger_all?/pushed_all?メソッドを参照のこと
引数を渡さなかったときは、全てのメソッドは「上記表にあるどれかのボタン・キーが押された時」にtrueを返す
引数として渡す定数に対応したボタンを押したときのX/Y座標での移動量を返す
単位量は1(つまり、1,0,-1を返す)
現在、ボタンを押している(triggerAmount)/押した(pushedAmount)ときのx,y座標での移動量を[x,y]の配列で返す
x,yそれぞれの単位量は1(つまり、1,0,-1を返す)
引数として渡す定数に対応したボタンが押している(trigger?)/押した(pushed?)ときにtrueを返す
引数には、Input::LEFT、Input::BTN1などの定数を与える
方向キーを押している方向を[下,左,右,上]の4要素の数値の配列で示す
それぞれ、押しているときは1、押していないときは0を示す
方向キーを押した方向を[下,左,右,上]の4要素の数値の配列で示す
それぞれ、押したときは1、既に押したままか押していないときは0を示す
キーを押している間、triggerはずっと1のままだが、pushedでは押した瞬間のみ1となる
ボタンを押している箇所を[1番,2番,...12番]の6要素の数値の配列で示す
それぞれ、押しているときは1、押していないときは0を示す
ボタンを押してた箇所を[1番,2番,...12番]の6要素の数値の配列で示す
それぞれ、押したときは1、既に押したままか押していないときは0を示す
スペースキーを押しているときはtrueを返す
エンターキーを押しているときはtrueを返す
エスケープキーを押しているときはtrueを返す
Altキーを押しているときはtrueを返す
Ctrlキーを押しているときはtrueを返す
Shiftキーを押しているときはtrueを返す
スペースキーを押したときはtrueを返す
エンターキーを押したときはtrueを返す
エスケープキーを押したときはtrueを返す
Altキーを押したときはtrueを返す
Ctrlキーを押したときはtrueを返す
Shiftキーを押したときはtrueを返す
ウィンドウの「x」ボタンを押した時などにtrueを返す
BGMを管理するクラス
ファイルはoggファイルの使用を奨励
mp3ファイルは使えない
fnameで指定したファイルをBGM用に登録する
loopsは、演奏をループするかどうかを示すフラグ
BGMの音量を設定する
値は0〜128の間
BGMの演奏を開始する
今まで演奏していたBGMは停止する
msecで指定したミリ秒でフェードインしながらBGMの再生を開始する
指定のオブジェクトのBGMを演奏しているかのフラグ
現在演奏中のBGMを一時停止する
演奏中の曲が一時停止状態ならば演奏を再開する
BGMの演奏を停止する
msecで指定したミリ秒でフェードアウトしながらBGMの再生を停止する
wmodeは、フェードアウトしている間はプログラムを停止するかを示すフラグ
効果音を管理するクラス
ファイルはwaveファイルのみ
fnameで指定したファイルを効果音用に登録する
オブジェクトが管理する効果音を演奏する
オブジェクトが管理する効果音の演奏を停止する
オブジェクトが管理する効果音の大きさをvで指定する
値は0〜128の間
スプライト全般を管理するクラス
(注:v0.9より、アルファブレンディングを持つ画像のサポートを取りやめました。
そのため、α情報を持つ画像を表示する際に、想定しない状態で表示されるおそれがございますのでご注意下さい)
スプライトのインスタンスを生成する
第1引数が幅・高さの配列[w,h]もしくはSizeクラスのインスタンスのときは、[w,h]の大きさの描画領域を作成し、それをもとにスプライトを作成する
第1引数がMiyako::Bitmapクラスのインスタンスのときは、そのインスタンスからスプライトを作成する
第1引数が文字列の時は、既存の画像ファイル(文字列はそのファイル名)からスプライトを作成する
tr_dataには、透明色を指定する。色を直接指定するときは[r,g,b]の配列で、
画像の指定座標上の色で指定するときはPointクラスのインスタンスで指定する
透明色を指定しないときはnilを渡す
alphaを使って、描画時の透明度(アルファブレンディング)を0〜255の間で指定する
0だと完全に透明になる
is_fillは、生成時に画像領域を透明色で塗りつぶすかを示すフラグ
既存のMiyako::Bitmapクラスのオブジェクトからプレーン形式のスプライトを作成する
「プレーン形式」は、後述のMiyako::Planeクラスを参照のこと
tr_dataには、透明色を指定する。色を直接指定するときは[r,g,b]の配列で、
画像の指定座標上の色で指定するときはPointクラスのインスタンスで指定する
透明色を指定しないときはnilを渡す
alphaを使って、描画時の透明度(アルファブレンディング)を0〜255の間で指定する
0だと完全に透明になる
今までに登録しているスプライトの一覧を返す
Miyakoが内部で利用している
スプライトを表示させる画面上のX,Y座標を取得・設定する
スプライト表示させる際に重ね合わせの基準となる深度を取得・設定する
深度が大きいほど手前に表示される
深度が同じスプライトが複数存在するときは、登録順に描画される
スプライトに登録している画像の幅と高さを取得する
スプライト画像中で、画面に表示させたい部分の左上を示すX,Y座標を取得・設定する
スプライト画像中で、画面に表示させたい部分の幅と高さを取得・設定する
スプライト表示の可否を示すフラグを取得・設定する
スプライトを表示/隠蔽する
スプライトを回転させるときの角度を取得・設定する
スプライトを拡大・縮小させるときのX,Y座標の倍率を取得・設定する
スプライトを回転・拡大・縮小させるときの中心のX,Y座標を取得・設定する
画面に文字を描画したいときのフォント(Miyako::Fontクラスのインスタンス)を取得・設定する
画面に文字を描画するかどうかのフラグを取得・設定する
画面に表示させる文字列を管理するMessageArrayクラスのオブジェクトを返す
このプロパティを介してメッセージデータを設定/取得する
メッセージ配列情報を取得・設定する
Miyako内部で使用
文字を描画する領域の範囲の幅(W)、高さ(H)を取得・設定する
後述のviewPortとは独立して設定する
文字列描画領域から実際に描画される場所までのマージンを設定する
マイナス値の指定が可能
描画領域中で描画を開始したい座標を設定する
スプライトに描画させる際のメソッドのブロック(Procクラスのインスタンス)を取得・設定する
color([r,g,b])で指定した(rect.x,rect.y)-(rect.x+rect.w,rect.y+rect.h)の範囲で直線を引く
attributeは:normalのみ
color([r,g,b])で指定した(rect.x,rect.y)-(rect.x+rect.w,rect.y+rect.h)の範囲で矩形を引く
attributeは:normalで外周のみ、:fillで塗りつぶして描画する
color([r,g,b])で指定した(point.x,point.y)の位置を中心に、半径rの円を描く
attributeは:normalで外周のみ、:fillで塗りつぶして描画する
color([r,g,b])で指定した(rect.x,rect.y)-(rect.x+rect.w,rect.y+rect.h)の範囲で楕円形を引く
attributeは:normalで外周のみ、:fillで塗りつぶして描画する
スプライト上に文字を描く
フォントは、fontプロパティのインスタンスを使用
x,yはスプライトの左上からの座標
スプライトを半透明にさせたいときの透明度を取得・設定する
0のときは完全に透明になり、255のときは完全に不透明になる
スプライトで指定している透明色を[r,g,b]の配列で返す
透明色が指定されていないときはnilを返す
スプライトで使用している画像領域を返す
スプライトで使用する画像領域を登録する
スプライトに対してエフェクト操作を行うEffectクラス(後述)の派生クラスのインスタンスを取得・設定するプロパティ
エフェクト実行中は、スプライト画像表示の代わりに、effectプロパティで設定されているエフェクト処理(表示)を行う
スプライトにタイする当たり判定の範囲を指定する
スプライトの左上から[x(左上X座標),y(左上Y座標),w(範囲の幅),h(範囲の高さ)]
として設定する
「画面上」の当たり判定の範囲をMiyako::Rectクラスのオブジェクトとして返す
画面上のスプライトの表示範囲をMiyako::Rectクラスのオブジェクトとして返す
画面上のスプライトの表示範囲をMiyako::Rectクラスのオブジェクトとして登録する<
キャラクターが(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 |
キャラクターが 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 |
キャラクターが 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 |
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 |
キャラクターが 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 |
キャラクターが 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 |
キャラクターが(dx,dy)の量で動いたときにviewPortプロパティの範囲外に移動しそうなときは、その上下限ぴったりに収める
但し、これらの値は、移動量のアライメントを考慮していないことに注意(たとえば、32x32ドットのキャラクタを(0,0)-(99,99)の範囲で表示させるとして、X,Yともに8ドットを移動単位とすると、(64,0)から右へ移動させると、右端が99を超えるのでroundの対象になるが、(64,0)で止まるわけではなく、右端にぴったりと収まる(68,0)へ移動する)
引数fの内容と返却値については、in_bounds_ex?メソッドを参照
キャラクターが X 方向に
dxの量で動いたときにviewPortプロパティの範囲外に移動しそうなときは、その上下限ぴったりに収める
但し、これらの値は、移動量のアライメントを考慮していないことに注意(roundメソッドを参照)
引数fの内容と返却値については、in_bounds_ex_x?メソッドを参照
キャラクターが Y 方向に
dyの量で動いたときにviewPortプロパティの範囲外に移動しそうなときは、その上下限ぴったりに収める
但し、これらの値は、移動量のアライメントを考慮していないことに注意(roundメソッドを参照)
引数fの内容と返却値については、in_bounds_ex_y?メソッドを参照
スプライトの表示サイズをMiyako::Rectクラスのオブジェクトとして返す
Miyako::Screen.updateメソッド内部で使用するスプライト更新・描画メソッド
Miyako::Sprite#update=メソッドにProcクラスのオブジェクトを渡すこともでき、
update=メソッドでupdateメソッドにブロックを直接渡すことも出来る
ブロックの引数はスプライトオブジェクト本体が渡される
updateメソッドで実行するProcクラスのインスタンスオブジェクトを渡す
スプライトを表示する位置を間接的に設定する
それぞれ、位置を示したシンボルか、それに加えて、実数値(0.0≦f≦1.0)や整数値との配列として構成される
また、それぞれマージンを取ることができ、実数値は、画面の幅・高さの割合からマージンとして取るために、
整数値は、その値をマージンとして取るために設定する(最後に設定されたものが有効なシンボル・実数値・実数値となる)
それぞれ求めた値の和を最終的なマージンとして画面に反映される
実際のマージンは、それぞれのマージンの和を
マージンを取る。整数値、実数値がともに設定されていればその和をマージンとする
x,yには、各座標に対するスプライト指定を行う(デフォルトは[:left,0.0,0],[:top,0.0,0])
Screen.setSizeメソッドで解像度を更新したり、
calcLayoutメソッドを明示的に呼び出すことにより、表示位置を更新することが出来る
詳しくは以下の図を参照
レイアウト情報を、デフォルト([:left.0.0,0],[:top,0.0,0])に戻す
スプライトを画面中央に設定する
setLayout(:center, :middle)を指定したのと同じ
スプライトに設定されているLayout情報を実際のピクセルに反映させる
計算した値は、Spriteクラスのx,yプロパティに上書きされる
位置情報の更新を許可する
位置情報の更新を禁止する
同じく、直接x,yプロパティを設定したときも更新が禁止される
X座標の位置情報を[シンボル,実数値,整数値]の配列で返す
Y座標の位置情報を[シンボル,実数値,整数値]の配列で返す
X,Y座標の位置情報を[[X座標シンボル,実数値,整数値], [Y座標シンボル,実数値,整数値]]の配列で返す
スプライトの位置計算の基準を、対象からの側として指定する
内側なら:inside、外側なら:outsideを指定する
デフォルトは[:inside,:inside]
スプライトのX座標の位置計算の基準を、対象からの側として指定する
スプライトのY座標の位置計算の基準を、対象からの側として指定する
スプライトの位置計算の基準を、対象からの側として指定する[x, y]の配列で返す
X,Y座標の位置計算の対象となる位置・サイズを設定する
デフォルト値は画面の位置・サイズ(0,0,Screen.w,Screen.h)となる
X,Y座標の位置計算の対象となる位置・サイズをデフォルト値(0,0,Screen.w,Screen.h)に戻す
X,Y座標の位置計算の対象となるサイズを設定する
X,Y座標の位置計算の対象となるサイズをデフォルト値(Screen.w,Screen.h)に戻す
X,Y座標の位置計算の対象となる位置を設定する
X,Y座標の位置計算の対象となる位置・サイズを[0,0,Screen.w,Screen.h]の配列で返す
引数のスプライトへ、位置情報のスナップを行う
引数が「スナップ先」、selfが「スナップ元」となる
スナップを行うと、いわゆる「親子関係」となり、スナップ先の位置情報が更新されれば、
自動的にスナップ元の位置情報も更新される
また、スナップ元は複数登録することが出来る
引数がnilの場合は、スナップ先のスプライトから位置情報の再取得を行う
スナップ関係を解消する
位置情報もリセットされる
スナップ元一覧に、スナップ元のスプライトを登録する
スナップ元一覧からスプライトを削除する
レイアウト補正値を設定する
以下のイメージのように、移動アニメーションなど、決定しているレイアウト値に対して、
頻繁に補正が必要な場合に使用する。
X座標のレイアウト補正値を設定する
Y座標のレイアウト補正値を設定する
レイアウト補正値をデフォルト値の[0,0]に戻す
レイアウト補正値を[x,y]の配列で返す
指定した値に応じた方向への移動を行う
但し、enable_layoutが設定されている場合はlayout_offset_x,layout_offset_yの値に、
disenable_layoutが設定されている場合はx,yの値に反映される
メソッドを実行するスプライトと引数として渡すスプライトとの
当たり判定が接触しているときはtrueを返す
スプライト領域を開放する
引数は、将来のための予約のため、考慮する必要はない
スプライトのアニメーションを管理するクラス
このクラスでは、1つの画像を以下のような番号で管理している
キャラクター・パターン1つのピクセル数はスプライトのow,ohを使用する
キャラクター番号・パターン番号に対応したキャラクターを表示するためにox,oyプロパティを更新する
SpriteAnimationクラスのインスタンスを作成する
spriteは、アニメーション対象のスプライトを指定する
(注)前もって、アニメーションするキャラクター・パターンの大きさをow,ohで指定しておくこと
waitは、アニメーション中、次のパターンを表示する際に指定するウェイト(フレーム数)を指す
パターン毎にウェイトを変えたい場合は、整数の配列を渡す(例:[4,8,4,8]等)
配列の要素数と画像からのパターン数が違う場合は、短い方を正式なパターン数とする
アニメーション開始時のパターン番号をpnumで指定する
現段階でのパターン番号を返す
キャラクター番号をcnumで指定する
キャラクター番号をdのぶんだけ移動させる
キャラクター番号はループするように変更される
現段階でのキャラクター番号を返す
スプライトを表示・隠蔽する
スプライトの表示状態を切り替える
アニメーションを開始・停止する
アニメーションの実行状態を切り替える
アニメーションのパターン番号を更新する
アニメーションのパターン番号を先頭に戻す
ウェイトを初期化する
スプライトの表示状態を示すフラグを返す
アニメーションの実行状態を示すフラグを返す
実時間をもとにウェイトを管理するクラス
WaitCounterクラスのインスタンスを作成する
waitでは実時間を秒単位で指定する(引数は実数可のため、1秒以下のときは小数を利用できる)
但し、必ずここで指定した時間通りにカウントが終了するわけではありません。これは、カウント終了チェックはフレーム毎に行われているためです。
ご了承をよろしくお願いします。
ウェイトを開始する
指定時間までのカウントを計測する
ウェイトを停止する
カウントはリセットされる
ウェイト中かどうかを返す
カウントが指定カウントを越えたときにこのメソッドを呼び出すと、カウントが終了する
カウントが終了したかどうかを返す
カウントが指定カウントを越えたときにこのメソッドを呼び出すと、カウントが終了する
ウェイトを行う
start/waiting?と違うのは、処理が全てウェイト作業に占有される
図形描画を行い、それをスプライトとして返すファクトリクラス
ShapeParameterクラスは、その情報を確保するためのクラスで、内部で使用するため説明は割愛する
図形を作成する
図形は塗りつぶしが基本で、枠線の描画のみは無い
(但し、後述の:edge節と:trcolor節を応用して描画することは可能)
methodは、作成した図形をシンボルで渡す。methodには以下のものがある
メソッド名 |
内容 |
必須パラメータ |
:text | 文字列を描画する |
text, font, size, [r, g, b], layout_x,
layout_y |
: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])だが、黒色の図形を描画するときに変更する
スプライトにエフェクト処理を行うクラスの基本クラス
通常は、Effectクラスからそれぞれの処理を行うクラスへ継承し、以下のメソッドを
オーバーライドして実装する(特にinitialize、start、update)
Effectクラスのオブジェクトを作成する
引数ssprには、効果を掛けたいスプライト(effectプロパティに渡すスプライト本体等)を指定する
dsprには、2つのスプライト間でトランスフォーム(例えば、キャラクターの変身など)を行いたい際に設定する
sspr、dsprは内部でインスタンス変数@src、@dstに設定される
Effectクラスのオブジェクトを作成する
引数wにはエフェクト処理を行う際のウェイト、paramにはエフェクト処理に関するパラメータのリストを設定する
w,paramの値はインスタンス変数@wait,@paramの値となる。また、カウンタとして@cntも定義されている
startメソッドを実行すると@effectingインスタンス変数の値をtrueにする(superキーワードを使用している場合は自動的に行われる)
現在エフェクト処理が行われているかを取得するフラグを取得する
エフェクト処理中ならばtrueを返す
エフェクト処理を実行する
@src・@dstで指定されているスプライトのビットマップや描画命令をscreenに対して行う
screenオブジェクトは、実際はbitmapクラスもしくはその派生クラスのオブジェクトを指定していると想定する
(Screen.updateメソッドでもEffect.updateメソッドは呼ばれるが、そのときはscreenそのものを引数としている)
エフェクト処理を終了するときは@effectingインスタンス変数の値をfalseにする必要がある(そうしないと永久ループに陥る)
エフェクト処理を強制的に終了する
クラス内部で実装した各オブジェクトを解放する
ビットマップイメージを敷き詰めたような表示を実装するクラス
x=メソッド、y=メソッドを使用することでスクロールする
プレーンを管理するインスタンスを作成する
fnameはプレーンを作成する画像ファイル名
px,pyは透明色を示すピクセルの座標
プレーン画像上で画面の左上に表示させる位置のX、Y座標の値を取得・設定する
プレーンに対して行う描画命令を記述したブロック(Procクラスのインスタンス)を取得・設定する
プレーン表示の可否を示すフラグを取得・設定する
プレーンを表示/隠蔽する
プレーン表示の深度を示す値を取得・設定する
プレーンに使用しているスプライトオブジェクトを解放する
ウィンドウ用に表示する書くグラフィックの範囲を格納するクラス
ウィンドウの窓枠・背景に使用する各パーツの領域の範囲やカーソル用のパーツのアニメーションパターン数を定義する
アニメーションが可能なカーソルパーツの領域範囲は、実際に表示するパーツの大きさを指定するが、アニメーションする他のパーツはその下に格納する仕様となっている
v0.9より、各要素の1〜9をWindowParameterが、10〜12をCurosorParameterが受け持つ。それぞれ使用する画像は別々でも同じでもよい
透明色は、画像の左上隅(0,0)の位置の色とする
構造体扱い
WindowParameter、CursorParameterクラスのインスタンスを生成する
各パラメータは、以下のlefttop〜pagepatの説明に対応している
Miyakoが標準で所持しているWindowParameter、CursorParameterクラスのインスタンスを返す
窓枠の各位置に描画するパーツの領域を示すMiyako::Rectクラスのインスタンス。位置は以下のシンボルのとおり
シンボル |
対応箇所 |
:lt |
左上 |
:t |
上 |
:rt |
右上 |
:l |
左 |
:r |
右 |
:lb |
左下 |
:b |
下 |
:rb |
右下 |
背景として描画するパーツの領域を示すMiyako::Rectクラスのインスタンス
ポーズカーソルとして描画するパーツの領域を示すMiyako::Rectクラスのインスタンス
ポーズカーソルのアニメーションパターン数
選択カーソルとして描画するパーツの領域を示すMiyako::Rectクラスのインスタンス(アニメーションパターン1つ分)
partで使用するシンボルは以下の表の通り
シンボル |
対応箇所 |
:u |
上向き |
:l |
左向き |
:r |
右向き |
:d |
下向き |
選択カーソルのアニメーションパターン数
ページカーソルとして描画するパーツの領域を示すMiyako::Rectクラスのインスタンス(アニメーションパターン1つ分)
シンボル |
対応箇所 |
:u |
上向き |
:l |
左向き |
:r |
右向き |
:d |
下向き |
ページカーソルのアニメーションパターン数
窓枠領域の幅を取得する
但し、各パーツの幅が同じときのみ有効
窓枠領域の高さを取得する
但し、各パーツの高さが同じときのみ有効
ポーズカーソルの幅を返す
ポーズカーソルの高さを返す
ウィンドウの左上からクライアント表示領域の左上までの幅を返す
但し、各パーツの幅が同じときのみ有効
ウィンドウの左上からクライアント表示領域の左上までの高さを返す
但し、各パーツの高さが同じときのみ有効
各パーツをスプライトとして管理するWindowParts、CurosorPartsクラスのインスタンスを返す
ウィンドウ用に表示する書くグラフィックをスプライトとして格納するクラス
ウィンドウの窓枠・背景に使用する各パーツの領域の範囲やカーソル用のパーツのアニメーションパターン数を定義する
アニメーションが可能なカーソルパーツの領域範囲は、実際に表示するパーツの大きさを指定するが、アニメーションする他のパーツはその下に格納する仕様となっている
このクラスのインスタンスは、WindowParameter、CurosorParameterクラスのget_partsのメソッドを介してのみ入手できる
各要素の1〜9をWindowPartsが、10〜12をCurosorPartsが受け持つ。それぞれ使用する画像は別々でも同じでもよい
透明色は、画像の左上隅(0,0)の位置の色とする
構造体扱い
WindowParts、CursorPartsクラスのインスタンスを生成する
窓枠の各位置に描画するパーツをスプライトとして返す。メソッドとその位置は以下の通り
メソッド名 |
対応箇所 |
frame_lt |
左上 |
frame_t |
上 |
frame_rt |
右上 |
frame_l |
左 |
frame_r |
右 |
frame_lb |
左下 |
frame_b |
下 |
frame_rb |
右下 |
背景として描画するパーツをスプライトとして返す
ポーズカーソルとして描画するパーツの領域を示すMiyako::Rectクラスのインスタンス
ポーズカーソルのアニメーションパターン数
選択・ページカーソルとして描画するパーツをスプライトとして返す(アニメーションパターン1つ分)
partで使用するシンボルは以下の表の通り
シンボル |
対応箇所 |
:u |
上向き |
:l |
左向き |
:r |
右向き |
:d |
下向き |
パーツ画像で使用する透明色を返す。透明色は、画像の[0,0]の位置の色
ウィンドウやテキストボックスを管理するクラス。メソッドは共通なので、Windowクラスを例にとって説明する
また、Window、TextBoxクラスでは、Spriteで使用するレイアウト関連メソッドが全て扱える
実際にウィンドウを描画するメソッド
クラス内部では、
・窓枠画像
・クライアント領域
・背景画像
の3つのスプライトが用意されている
窓枠と背景はインスタンス生成時に画像ファイル名とパラメータリスト(Miyako::WParamクラスのインスタンス)をもとに作成する
クライアント領域には、ユーザが作成したビットマップや、ウィンドウに表示する文字列、描画メソッドを格納する
ポーズカーソルは、文字の表示を待つ際に表示させるカーソルのことキーの入力があるまで待つ際に使う
選択カーソルは、コマンド選択などに利用するカーソル
ページカーソルは、クライアント領域が実際の領域から見て余っている場合に自動的に表示される複数ページ存在しているコマンドウィンドウを実現するときに使う
Miyako::update内部で呼ばれる
ウィンドウクラスのインスタンスを作成する
fnameはウィンドウの窓枠などを格納したファイル名、px,pyは透明色のピクセルの座標、balphaは背景を透過させる値(0〜255)
sizeはクライアント表示領域のサイズ、istitleには背景画像をタイル状に貼りつけるか拡大・縮小して貼りつけるかを示すフラグ、
wparams,cparamsには引数で渡す画像ファイルに対する、窓枠・背景などのパラメータ値を示すMiyako::WindowParameter,Miyako::CursorParameterクラスのインスタンスを指定する
fnameで指定する画像に透明度を持つ画像ファイルを使う場合、アンチエイリアス等は消えてしまいますのでご注意下さい
表示するウィンドウに属するスプライトの一覧を返す
ウィンドウに対するクライアント領域の表示開始位置のX,Y座標を返す/設定する
クライアント領域が実際の表示領域よりはみ出している場合はページカーソルを自動的に表示する
ウィンドウのクライアント表示領域の幅・高さを取得する
clientSizeメソッドは、[w,h]の配列として返す
ウィンドウから見たクライアント領域への長さを返す
実際は、窓枠の左上領域の幅と同じ
ウィンドウから見たクライアント領域への高さを返す
実際は、窓枠の左上領域の高さと同じ
クライアント領域を表示するための画像を登録する
px,pyには透明色となるピクセルの座標を渡す
ウィンドウのポーズ画像を表示させるときに、アニメーションするときの秒数(0以上の整数・実数)を設定する
ウィンドウ中の選択カーソルを表示の可否を示すフラグを取得・設定する
選択カーソルのアニメーションを行う際の秒数(0以上の整数・実数)設定する
選択カーソルを表示させるときの方向を取得・設定する
方向が左・上・右・下の順で値が0〜3になる
選択カーソルを表示する際のクライアント領域のX,Y座標を取得・設定する
ページカーソルのアニメーションを行う際の秒数(0以上の整数・実数)を設定する
文字描画のポーズを行うかどうかのフラグを取得・設定する
ウィンドウを表示させる画面上のX,Y座標を取得・設定する
ウィンドウを表示させる深度を取得・設定する
setDPsメソッドは背景・クライアント・窓枠それぞれの深度を設定する
dp=メソッドでは各スプライトの深度は同じ値になる
dpメソッドでは[窓枠,クライアント,背景]の各深度を返す
ウィンドウ表示の可否を示すフラグを取得・設定する
ウィンドウを表示/隠蔽する
但し、カーソルはその対象ではない
テキストボックスの文字表示側・クライアント側のそれぞれに対して
表示/隠蔽を指定する
ウィンドウの背景領域に対する透明度を取得・設定する
ウィンドウの文字領域に文字を描画するかどうかのフラグを取得・設定する
クライアント領域の表示を示すフラグを取得・設定する(Windowクラスのみ)
画面に表示するための文字列を管理するMessageArrayクラスのオブジェクトを返す
描画する際はこの配列クラスを介して文字列を取得・設定する
また、Fontクラスで説明したマクロも使用できる
ウィンドウの文字描画中に改行する
ウィンドウの文字描画領域を消去し、描画開始を文字描画領域の左上に戻す
描画領域中で描画を開始したい座標を設定する
ウィンドウに描画する命令のブロック(Procクラスのインスタンス)を取得・設定する
ウィンドウ・カーソルのパーツの領域を指定するパラメータ群(WindowParameter,CursorParameter)を返す
ウィンドウに使われる各種スプライトや画像領域を開放する
Mapクラスで使用するパラメータを管理するクラス。
マップに使用するコードナンバーとマップチップ画像との関連は、「Platinum」というフリーのWindows用マップエディタの形式を採用している
マップチップ名を設定する
マップチップのコードナンバーの単位を示す(16もしくは256)
tsizeの値は、マップチップの大きさに依らない
tsizeが16のときは0〜255、256のときは0〜65535がコードナンバーになる
マップチップ1枚のピクセル数を示す
特に指定は無いが、大抵は16ピクセルもしくは32ピクセルとなる
マップチップ画像状で透明色となるピクセルのX,Y座標を示す
alphaは、マップチップ画像状での透明度を設定する。nilのときはblistで指定したファイルを透明度付き画像と認識する
mnameは、マップに表示したいコードナンバーを収めたcsvファイル名を指定する
このとき、csvファイルに存在するレイヤはイベントレイヤが一番先頭になることに注意すること
blistには、各レイヤに表示するマップチップファイル名を指定するファイル名の代わりにnilを渡すと、イベントマップレイヤとして認識する
所定のマップチップとマップデータを元にマップ画像を作成するクラス
x=メソッド、y=メソッドを使用してマップをスクロールさせることができる
マップ内部には各レイヤが存在しており、そのレイヤを別々の深度で重ね合わせることが出来る
レイヤは配列として存在しており、Mapクラスのインスタンス作成時にマップチップファイル名を渡した順番に作成している
(各レイヤの深度が同じ時は、配列のインデックスの若い方が手前に表示される)なお、画像を作成しない(マップチップファイル名の代わりにnilを渡した)レイヤを「イベントレイヤ」と呼び、各種イベントを起こすためのコードナンバーを格納するレイヤとして機能する
MapFastクラスは、マップ上の画像を全て描画して、その一部を表示しているため、描画は速いがメモリ消費量がかなり大きくなる
Map,MapFastクラスの各メソッド名は共通のため、Mapクラスのものを代表に説明する
マップ画像に透明度を持つ画像ファイルを使う場合、アンチエイリアス等は消えてしまいますのでご注意下さい
なお、マップに使用するコードナンバーとマップチップ画像との関連は、「Platinum」というフリーのWindows用マップエディタの形式を採用している
実際のマップデータと表示画像(レイヤ)を扱うクラス
これらのクラスは、実際はMiyako::Mapクラス内部で使用しているため詳しい説明は割愛
マップ情報を格納するインスタンスを生成する
インスタンスに含まれるマップ名を返す
layersメソッドは、インスタンスに格納されているレイヤ情報の一覧を返す
layerメソッドは、idx番目のレイヤ情報を取得する(イベントレイヤ含む)
マップを画面に表示する際の左上X,Y座標を取得・設定する
マップ画像の幅・高さを取得する
但し、ピクセル単位ではなくマップチップ単位となる
各レイヤの深度を取得・設定する
dpメソッドは、各レイヤの深度を配列形式で返す
dp=メソッドは、各レイヤの深度を同一値で設定する
setDPsメソッドは、各レイヤの深度を別々に指定する
マップを表示されているかを示すフラグを取得・設定する
マップチップ単位の座標から、idxで示す対象のレイヤ上にあるマップチップコードを取得する
イベントの有無を判別するする際に使用する
マップチップ単位の座標から、idxで示す対象のレイヤ上にあるマップチップコードを取得する
イベントの有無を判別するする際に使用する
getCodeとの違いは、チップ単位ではなく、実座標の値を渡す
マップで使用されているマップチップのピクセル数を返す
キャラクターのマップチップ上の座標を求める際に使用する
マップを実現する際に使用するメモリ領域を開放する
Miyako上で実装できるフレームワークの本体
フレームワーク内で行いたい処理は、StoryモジュールをMix-inしたクラスを介して実装する。
以下の図のように、各画面を「シーンクラス」として定義し、StoryモジュールをMix-inしたクラスから
インスタンスを作成し、runメソッドを呼び出すことによって実行できる。
runメソッドの内部で台本クラスのインスタンスが作られ、メソッドの返却値をもとに台本クラス間の
移動を行っている
また、シーンはキャッシュされており、頻度の高いもの最大20個キャッシングできるように実装している。それを超えると、最後に参照してからのスパンが最長のシーンを削除する
各シーン・サブルーチンを定義するクラスのプリフィックスを取得・設定する
クラス登録前に実行されるように位置に気をつけること
class_prefixとsub_prefixに同じ名前を登録しないように注意する
ゲーム・プログラムの実行を開始する
nは、スクリプトのスタートを示すクラス名を示す
prev_labelは、現在実行しているものの前に実行していたシーンのラベルを返す
シーンが始まったときに更新される
next_labelは、次に実行されるシーンのラベルを返す
シーンクラスのupdateメソッドが終了したときに更新される
upper_labelは、サブルーチンの呼び元のラベルを返す
サブルーチン呼び出しの時に更新される
どこからもサブルーチン呼び出しされていないときはnilを返す
シーン・サブルーチンクラス名とその概要との一覧を出力するためのメソッド
基本的にはlistupメソッドと同じだが、csv形式のリストを引数で指定したファイル名で出力する
各画面(たとえば、シーンやステージ)を構成する各クラス(シーンクラス)の基本クラス
シーンクラスは、全てこのSceneクラスを継承する必要がある(そうしないと適切に画面間を移動できない)
また、派生クラス名はStory.class_prefixもしくはStory.sub_prefixプロパティに設定した接頭語にしなければならない
Sceneクラス内には以下の6つのメソッドが定義されており、以下の図のように実行される
また、@newインスタンスには現在処理しているシーンクラスのラベル
(クラス名の
@prevインスタンスには、直前に処理されていたシーンのラベルが、
@upperインスタンスには、サブルーチンの呼び元シーンのラベルが設定されている
以下のメソッドは、Story.run内で実行される
シーンクラスのインスタンスをを生成する。
派生クラスの概要を文字列として返すプロパティ
派生するときにこのメソッドをオーバーライドしておく
Author#listupが呼び出された際にクラスメイトこのnoticeプロパティを一覧として表示することが出来る
シーンインスタンスが生成されたときに1回だけ実行される処理
インスタンスの生成などに使用する
前処理。画面表示前のデータ設定などを行う。一通り終了した後は処理をview_inに移す
メインの処理を行う前に必要な画面表示を行うメソッド(たとえば、フェードイン)
返却値はtrue/falseで、trueを返し続けている間はview_inが繰り返し呼び出される
falseを返したときは、処理がupdateに移る
メインの画面更新処理を示すメソッド返却値として、@nowと同じ値を返すと、繰り返すupdateが実行される
@now以外の値かnilを返すと終了する(但し、nilを返した場合はプログラムの実行も終了する)
また、サブルーチンを使った移動の場合、返却値が"return"という文字列のときはサブルーチンの呼び出し元に戻る
(但し、サブルーチン呼び出しが無いときはnilを返すのと同じになる)
メインの処理を行なった後に必要な画面表示を行うメソッド(たとえば、フェードアウト)
返却値はtrue/falseで、trueを返し続けている間はview_outが繰り返し呼び出される
falseを返したときは、処理がfinalに移る
後始末。作成した領域を開放できるようにするなど、の手続きを行う
割り込み処理。シーン実行中にキー割り込みをするときに処理を追加する。移動するときはその移動先のラベル、そのまま戻るときはnilを戻り値として返す
Yukiで使用する全てのモジュール・クラスは全てYukiモジュールに属している。
Yuki上で起こった例外クラス。どのような種類のエラーでもYukiErrorクラスの例外として返す
メッセージマクロ内で使用するインスタンス(値)やフラグをアクセスするためのクラス内部でインスタンス・フラグを管理するハッシュを持っている
変数・フラグ管理インスタンスを生成する
変数・フラグの内容を消去する
インスタンス内で管理されているハッシュにアクセスする
フラグを管理するハッシュにアクセスする
exprで指定した式を評価する
評価したしたときの返却値をこのメソッドの返却値とする
コマンド情報管理クラス
コマンド情報は、別ファイルに記述する(command_reference.txt参照)
コマンド情報ファイルをCommandsクラスインスタンスに変換する
返還後は、[]メソッドで参照できる
現在登録されているコマンド情報にファイルの内容を追加する
同一名のコマンドが存在するときは追加した方を採用する
現在登録されているコマンド情報にファイルを消去する
labelで指定したコマンド情報を参照する。
シンボルによるハッシュとなっているため、以下のシンボルを使用してアクセスする
名称 |
内容 | ||||||||||
":title" |
コマンドのタイトル | ||||||||||
":cansel" | コマンドキャンセル時に移動するシナリオ名 シーンラベルは使用できない | ||||||||||
":list" | コマンドリスト 内容は以下のハッシュになっている
|
メッセージマクロ(文字列形式・ファイル形式)を読み込んで、MessageDataの内容に対応する処理を記述・実行・結果を格納するためのクラス
処理の内容は、このクラスを継承することで独自の処理を実装することが可能
(デフォルトの内容は、Miyako
ExtensionのMessageBoxクラスに準拠)
インスタンスを生成する
boxは、メッセージを表示するためのTextBox/Windowクラスのインスタンス
textで指定した文字列形式のメッセージマクロを単体のScenario(シナリオ名無し)オブジェクトインスタンスにコンパイルする
filenameで指定したプロットファイルを読み込みPlotオブジェクトインスタンスにコンパイルしておく
nameで指定したシナリオを実行シナリオとして採用する
引数を省略した場合は自動的に:Mainシナリオを採用する
com_fileで指定したコマンドファイルを読み込んで、Commandsオブジェクトインスタンスを生成する
既存のCommandsオブジェクトインスタンスにcom_fileで指定したコマンドファイルの内容を追加する
メッセージ処理を開始する
waitは、メッセージをWindow/TextBoxに表示する際のウェイトを秒単位(実数)で指定する
メッセージ処理を更新する
メッセージ処理の本体。updateメソッドの中で呼ばれる
メッセージ表示時に、1文字ずつ表示するかを示すフラグ
メッセージ処理中(eot?がtrueになるまで)かどうかを問い合わせるためのフラグ
コマンド選択中かどうかを問い合わせるためのフラグ
メッセージの表示をやり直す。
ウィンドウ内の文字は消去され、表示位置を文字描画領域の左上に戻る
選択中のコマンドを先頭に戻す
ウィンドウ内の文字を消去し、表示位置を文字描画領域の左上に戻る
メッセージのポーズ状態を解除する
ウィンドウを表示する
yes_noもしくはcommandメソッドでコマンド選択を可能にしている場合は、同時にコマンド選択を開始する
ウィンドウを隠蔽する
yes_noもしくはcommandメソッドでコマンド選択を可能にしている場合は、同時にコマンド選択を中止する
内部使用インスタンスを消去するメソッド
使用終了時に呼び出す
以下のメソッドは、Directionクラスの各定数(コード)に対応しており、
そのコードに対応する処理をメソッド内部に実装する
引数のdataは、そのコードに対応するDirectionクラスのdataプロパティと
同一となっている
コードがCHARのときの処理を実装するためのテンプレートメソッド
コードがFONTCOLORのときの処理を実装するためのテンプレートメソッド
コードがFONTSIZEのときの処理を実装するためのテンプレートメソッド
コードがPAUSEのときの処理を実装するためのテンプレートメソッド
コードがCLEARのときの処理を実装するためのテンプレートメソッド
コードがCRのときの処理を実装するためのテンプレートメソッド
コードがMESWAITのときの処理を実装するためのテンプレートメソッド
コードがSLEEPのときの処理を実装するためのテンプレートメソッド
コードがLOCATEのときの処理を実装するためのテンプレートメソッド
コードがPLOT_APPENDのときの処理を実装するためのテンプレートメソッド
コードがLABELのときの処理を実装するためのテンプレートメソッド
コードがSCENARIOのときの処理を実装するためのテンプレートメソッド
コードがEXPRのときの処理を実装するためのテンプレートメソッド
コードがSOUNDのときの処理を実装するためのテンプレートメソッド
コードがIMAGE_INITのときの処理を実装するためのテンプレートメソッド
コードがDPのときの処理を実装するためのテンプレートメソッド
コードがALPHAのときの処理を実装するためのテンプレートメソッド
コードがMOVEのときの処理を実装するためのテンプレートメソッド
コードがMOVE_TOのときの処理を実装するためのテンプレートメソッド
コードがLAYOUTのときの処理を実装するためのテンプレートメソッド
コードがSHOWのときの処理を実装するためのテンプレートメソッド
コードがHIDEのときの処理を実装するためのテンプレートメソッド
コードがCOMMAND_INITのときの処理を実装するためのテンプレートメソッド
コードがCOMMAND_APPENDのときの処理を実装するためのテンプレートメソッド
コードがCOMMANDのときの処理を実装するためのテンプレートメソッド
コードがYESNOのときの処理を実装するためのテンプレートメソッド
コードがEOTのときの処理を実装するためのテンプレートメソッド
テンプレートメソッド内部では、以下のインスタンス変数にアクセスすることが出来る
他にもインスタンス変数は存在するが、それらのオブジェクトにアクセスしたときの
動作の保証は持たない
変数名 |
内容 | ||||||||||||||||||||
@box | メッセージ表示対象のWindow/TextBoxクラスのインスタンス インスタンス自体は参照のみ可能 | ||||||||||||||||||||
@var | 変数・フラグを管理するVariablesクラスのインスタンス インスタンス自体は参照のみ可能 | ||||||||||||||||||||
@cmds | コマンドを管理するCommandsクラスのインスタンス インスタンス自体は参照のみ可能 | ||||||||||||||||||||
@event | イベントの結果を管理するハッシュ @eventが示すオブジェクトそのものを置き換えてはならない また、イベントの名称として、以下のシンボルを用意している また、下記予約語が示すインスタンスは、MessageDirector#updateメソッドが呼ばれる 度にnilにされることに注意すること
| ||||||||||||||||||||
@message | 処理しているMessageDataクラスのインスタンス インスタンス自体は参照のみ可能 | ||||||||||||||||||||
@wait | メッセージを1文字表示する際のウェイトを秒単位で指定するWaitCounterクラスのインスタンス | ||||||||||||||||||||
@sleep | 処理を停止する時間を秒単位で指定するWaitCounterクラスのインスタンス | ||||||||||||||||||||
@y | コマンド選択時の左上のy座標 | ||||||||||||||||||||
@res | コマンドの選択中の番号。 但し、先頭のコマンドは0となることに注意 | ||||||||||||||||||||
@eot | 現在使用しているシナリオのメッセージが終端に達したことを知らせるフラグ | ||||||||||||||||||||
@selecting | コマンド選択中を示すフラグ | ||||||||||||||||||||
@selects | コマンド選択中で、選択できるコマンドの数を示す 「はい/いいえ」型の場合は値は2となる | ||||||||||||||||||||
@title | 選択中のコマンドのタイトル。 指定しないときは空文字列("")を指定する | ||||||||||||||||||||
@cansel | コマンド選択中にキャンセルした際に選択できるシナリオ名。 キャンセル禁止のときはnilを格納する はい/いいえ型の場合は必ずnilにしておく | ||||||||||||||||||||
@select2num | 選択したコマンド番号とコマンドオブジェクトインスタンスでのコマンド番号に対応するハッシュ コマンド表示条件に合致しないコマンドが表示されないために用意している | ||||||||||||||||||||
@select2label | 選択したコマンド番号と移動先ラベルとに対応するハッシュ 定義されていないときはnilが格納されている | ||||||||||||||||||||
@select2scenario | 選択したコマンド番号とシナリオ名とに対応するハッシュ 定義されていないときはnilが格納されている | ||||||||||||||||||||
@yn2scenario | はい/いいえを選択した際に指定できるシナリオ名の配列 大きさは必ず2以上 |
以下のメソッドは、テンプレートメソッド内部でのみ使用できるメソッドを指す
Wndow/TextBoxに「はい/いいえ」コマンドを表示する
引数ynscenariosは、それぞれ選択したときに得られるシナリオ名の配列(0番目は「はい」のとき、1番目は「いいえ」のとき)
Wndow/TextBoxにclabelで指定したコマンドを表示する
結果は、コマンド番号は@var[:select_result]に、
ラベルは@var[:next_label]に格納される
特に何もする必要のないコードが渡ってきたときに、テンプレートメソッド内部で呼び出すメソッド
必要ではないコードに対応するテンプレートメソッドでは、このメソッドの呼び出しを記述しておく必要がある
画面に文字を表示する際に使われる表示単位を示すクラス
実際の構成はこのクラスの配列となる
この組み合わせで、文字の表示を制御する
また、Miyako::Font.textScrollプロパティをtrueにしたとき、
配列の構成が文字列単位から文字単位に変更される
dataプロパティ(後述)が文字列を示す定数
:execタイプ
dataプロパティが描画文字色を示す定数
:settingタイプ
dataプロパティが描画フォントサイズを示す定数
:settingタイプ
文字列表示にポーズを書けて、ポーズカーソルを表示する指示のための定数
実装はユーザが行う
:execタイプ
描画している文字列の消去を指示するための定数
実装はユーザが行う
:execタイプ
文字列の改行を指示する定数
配列中に組み込むと自動的に改行して描画する
:execタイプ
文字を表示する際のウェイト(秒単位、実数)を指定する定数
実装はユーザが行う
:execタイプ
表示を一定時間止める際にその値(秒単位、実数)を指示する定数
実装はユーザが行う
:execタイプ
表示位置を変更したい座標を指示する定数
座標として[x,y]の配列が格納されている
実装はユーザが行う
:settingタイプ
「はい・いいえ」コマンドを表示するための定数
はい・いいえのそれぞれが選択されたときに採用されるシナリオ名の配列が格納されている
実装はユーザが行う
:execタイプ
コマンド情報を生成するための定数
コマンド情報が格納されているファイル名がdataに格納されている
実装はユーザが行う
:execタイプ
現在のコマンド情報にコマンドを追加するための定数
コマンド情報が格納されているファイル名がdataに格納されている
実装はユーザが行う
:execタイプ
コマンド選択を実行するための定数
使用するコマンドリストのラベルがdataに格納されている
実装はユーザが行う
:execタイプ
シーン管理をしている際に、移動先ラベルを指示するための定数
実装はユーザが行う
:execタイプ
現在のプロットオブジェクトにプロットを追加するための定数
プロットファイル名がdataに格納されている
実装はユーザが行う
:execタイプ
シナリオを変更するための定数
シナリオ名がdataに格納されている
実装はユーザが行う
:execタイプ
文字列の評価を指示するための定数
実装はユーザが行う
:execタイプ
効果音の演奏を指示する定数
[音声ファイル名,音量,演奏が終わるまで待つかどうかのフラグ]形式の配列がdataに格納されている
実装はユーザが行う
:execタイプ
指定の画像をスプライトとして登録する
画像名(画像を指す名前)、画像のファイル名、透明色を指定するかのフラグがdataに格納されている
実装はユーザが行う
:execタイプ
指定の画像の深度を指定する
画像名と深度がdataに格納されている
実装はユーザが行う
:execタイプ
指定の画像の透明度を指定する
画像名と透明度(0〜255)がdataに格納されている
実装はユーザが行う
:execタイプ
指定の画像のレイアウトを指定する
画像名とx,y座標でのレイアウト指定がdataに格納されている
実装はユーザが行う
:execタイプ
指定の画像を移動する
画像名と移動量がdataに格納されている
実装はユーザが行う
:execタイプ
特定の画像を移動する
画像名と移動位置がdataに格納されている
実装はユーザが行う
:execタイプ
指定の画像を表示する
画像名がdataに格納されている
実装はユーザが行う
:execタイプ
特定の画像を表示する
画像名がdataに格納されている
実装はユーザが行う
:execタイプ
メッセージの最後尾を指示する定数
:execタイプ
新しいMessageDataクラスのインスタンスを返す
Miyako内部で使用する
codeプロパティが定数CRのMessageDataインスタンスを返す
codeプロパティが定数EOTのMessageDataインスタンスを返す
MessageDataインスタンスの機能を示す値を取得するプロパティ
上記定数のどれかが格納されている
codeプロパティに対応したデータを格納するプロパティ
内容は上記定数を参照
処理のタイプを格納するプロパティ。
タイプには、:setting(データ設定タイプ)、:exec(処理実行タイプ)がある
メッセージ配列を管理するクラス
nextmsgメソッドを使ってMessageDataクラスのオブジェクトを取り出し、配列に格納する
実際は、内部と外部との2つの配列が存在し、内部配列からオブジェクトを取り出し、
必要なら加工をしたうえで外部配列に設定する(する・しないは処理内容による)
Screen.update時に、そのメッセージデータを画面に表示する
配列の要素は操作可能
シナリオオブジェクトインスタンスを作成
メッセージ配列を作成するときに、文字列を1文字ずつ分割してDirectionインスタンスを作成するかどうかを示すフラグを取得・設定する
値が変わったときに自動的に配列を再作成する
メッセージ本体の文字列を返す
入力した文字列をメッセージ配列にコンパイルし、シナリオオブジェクトインスタンスとする
文字列はそのままtextプロパティの値になる
文字列は内部で自動的にUTF-8に変換される(標準出力を使うときにはtosjisメソッドなどを使う必要がある)
コンパイルしたシナリオオブジェクトインスタンスからDirectionインスタンスを取得する
終端まで返したときはEOTを返す
シナリオ表示対象の画像をクリアする
シナリオを最初からやりなおす
引数としてtrueを返すと、同時にシナリオ表示対象の画像もクリアする
シナリオに対して使用できるArrayクラスのメソッド
基本的にはpopメソッドと同じだが、配列の最後尾と引数が文字列の時は
引数の文字列を最後尾の要素の文字列に連結する。要素の個数は増えない
プロットファイル(旧メッセージマクロファイル)内のシナリオを一元管理するクラス
プロットファイルに使用できる内容は、別ファイル(stuff_reference.txt)を参照
プロットファイルをプロットオブジェクトのインスタンスを作成
:Mainシナリオも作成するプロットファイルの内容を現在のプロットオブジェクトのインスタンスに追加する
同一名のシナリオが存在する場合は、追加するシナリオに置き換えられる
追加するプロットファイル内に:Mainシナリオが存在するときは、それを無視する
start引数は、newメソッドで内部的に使用するため、説明は割愛する
nameで指定したシナリオ名(文字列もしくはシンボル)に対応するYuki::Scenarioクラスのインスタンスを返す
引数に存在しないシナリオを指定した場合はエラーを返す
メッセージコンパイラ本体
このコンパイラを使うと、メッセージ配列(MessageArrayクラスのインスタンス)を取得できる
但し、最後尾にEOTが含まれていないところに注意
メッセージ配列に変換するためのコンパイルを行う
Messageには、コンパイル対象の文字列を設定する
flagは、文字列を1文字ずつ分割して配列を形成するかを指定するフラグ