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

# EGSRモジュール

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

EGSR::getOSName

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

EGSR::setTitle(title)

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

EGSR::update

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

EGSRError

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

# EGSR::Pointクラス

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

EGSR::Point.new(x, y)

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

EGSR::Point#x
EGSR::Point#y

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

EGSR::Point#point

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

# EGSR::Sizeクラス

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

EGSR::Size.new(w, h)

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

EGSR::Size#w
EGSR::Size#h

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

EGSR::Size#size

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

# EGSR::Rectクラス

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

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

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

EGSR::Rect#x
EGSR::Rect#y
EGSR::Rect#w
EGSR::Rect#h

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

EGSR::Rect#rect

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

# EGSR::Colorクラス

色情報を格納するクラス

EGSR::Color.new(r, g, b)
EGSR::Color.new(code)

Colorクラスのコンストラクタ
r,g,bは、赤、緑、青の各要素の値(0〜255)、
codeは、0x00rrggbbの各バイトの値を4バイトにまとめた値(以降、「カラーコード」とする)

EGSR::cc2rgb(cc)

ccとして与えられたカラーコードを赤、緑、青の各要素の配列に変換する

EGSR::rgb2cc(r, g, b)

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

EGSR::Color#r
EGSR::Color#g
EGSR::Color#b
EGSR::Color#ccode

Classクラスのオブジェクトに格納している赤、緑、青、コードの 値を返す

EGSR::Color#list

Classクラスのオブジェクトに格納している赤、緑、青の値を
[r, g, b]の配列として返す

# EGSR::SpriteListクラス

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

# EGSR::Fontクラス

画面にテキストを描画する際に用いるフォントを管理するクラス
TrueTypeフォント、BDFフォントが使える
内部では、各フォントを拡張子("ttf/ttc","bdf")で判別するため、
使用するフォントファイル名には気をつけること

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

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

EGSR::Font.systemFont

標準で使用するフォントを返す

EGSR::Font.systemFont=(font)

標準で使用するフォントを登録する
EGSR::systemFontメソッドを使用する際には必ず登録する必要がある

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

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

EGSR::Font#setCodingSystem(code)

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

EGSR::Font#add(fname)

登録しているフォントがBDFの場合、使用できるフォントを追加する

EGSR::Font#size

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

EGSR::Font#size=(sz)

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

EGSR::Font#textSize(str)

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

EGSR::Font#setColor(r, g, b)

登録しているフォントの描画色をr,g,bの3要素で設定する

EGSR::Font#getColor

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

EGSR::Font#setStyle(nm = true, bl = false, it = false, ul = false)

登録しているフォントがTrueTypeの場合、フォントのスタイルを設定する
nmでは標準スタイル、blではボールド、itでは斜体(イタリック)、ulでは下線(アンダーライン)を 使用するかどうか設定できる

EGSR::Font#getStyle

登録しているフォントのスタイルを、[nm, bl, it, ul]の4要素の配列として返す

EGSR::Font#drawMultiLineText(dst, str, x=0, y=0, sp=0, h=0)
EGSR::Font#drawMultiLineTextMild(dst, str, x=0, y=0)

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

# EGSR::Screenモジュール

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

EGSR::Screen.Width定数

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

EGSR::Screen.Height定数

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

EGSR::Screen.getFpsCnt

現在のFPS値を返す

EGSR::Screen.fps

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

EGSR::Screen.fps=(val)

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

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

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

EGSR::Screen.screen

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

EGSR::Screen.w

画面の横幅を返す。EGSR::Screen.Width定数の値と同じ

EGSR::Screen.h

画面の高さを返す。EGSR::Screen.Height定数の値と同じ

EGSR::Screen.update

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

EGSR::Screen.freeze

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

EGSR::Screen.freeze?

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

EGSR::Screen.trasition

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

EGSR::Screen.fadeIn(pat = 8, wait = 10)
EGSR::Screen.fadeOut(pat = 8, wait = 10)

画面をpatで示した段階、waitで与えた時間単位(フレーム数)で暗転・復帰させる

EGSR::Screen.whiteIn(pat = 8, wait = 10)
EGSR::Screen.whiteOut(pat = 8, wait = 10)

画面をpatで示した段階、waitで与えた時間単位(フレーム数)で白色に変化・復帰させる

EGSR::Screen.effecting?

画面にエフェクトが掛かっているか(fadeIn、fadeOut、whiteIn、whiteOut)を示すフラグ

# EGSR::Bitmapクラス

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

EGSR:Bitmap.create(w, h)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

EGSR::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くらいが普通。

EGSR::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くらいが普通。

# EGSR::Inputモジュール

EGSRで使用している入力デバイス情報を管理しているモジュール
入力デバイスはキーボードとジョイパッドを想定している
ジョイパッドの１〜６ボタンはキーボードのZ,X,C,A,S,Dキーに対応している
ジョイパッドの方向キーはテンキーの2,4,6,8に対応している
但し、キーボードのEscapeキー、Spaceキー、Enterキーはジョイパッドには対応していない

EGSR::Input.update

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

EGSR::Input.triggerDir

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

EGSR::Input.pushedDir

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

EGSR::Input.triggerBtn

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

EGSR::Input.pushedBtn

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

EGSR::Input.triggerSpc?

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

EGSR::Input.triggerEnter?

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

EGSR::Input.triggerEscape?

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

EGSR::Input.pushedSpc?

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

EGSR::Input.pushedEnter?

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

EGSR::Input.pushedEscape?

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

EGSR::Input.quit?

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

# EGSR::Audioモジュール

## EGSR::Audio::BGMクラス

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

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

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

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

BGMの音量を設定する

EGSR::Audio::BGM#play

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

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

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

EGSR::Audio::BGM#playing?

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

EGSR::Audio::BGM#pause

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

EGSR::Audio::BGM#resume

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

EGSR::Audio::BGM#stop

BGMの演奏を停止する

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

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

## EGSR::Audio::SEクラス

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

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

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

EGSR::Audio::SE#play

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

EGSR::Audio::SE#stop

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

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

オブジェクトが管理する効果音の大きさをvで指定する

# EGSR::Spriteクラス

スプライト全般を管理するクラス

EGSR::Sprite.new()

Spriteクラスのオブジェクトを作成する
但し、描画領域は作成しない
描画メソッドを追加したり後で描画領域を追加する際に使用する

EGSR::Sprite.create(w, h, px=0, py=0, alpha=255)

描画領域を作成し、それをもとにスプライトを作成する
幅はw、高さはhで設定する
px,pyを使って、透明色として指定する色が存在するビットマップ上の座標を指定する
どちらかが-1のときは透明色を指定しない
alphaを使って、描画時の透明度（アルファブレンディング）を0〜255の間で指定する
0だと完全に透明になる

EGSR::Sprite.createFromBitmap(bmp, px=0, py=0, alpha=255)

既存のEGSR::Bitmapクラスのオブジェクトからスプライトを作成する
px,pyを使って、透明色として指定する色が存在するビットマップ上の座標を指定する
どちらかが-1のときは透明色を指定しない
alphaを使って、描画時の透明度（アルファブレンディング）を0〜255の間で指定する
0だと完全に透明になる

EGSR::Sprite.createFromBitmapAA(bmp)

既存のEGSR::Bitmapクラスのオブジェクトからスプライトを作成する
ただし、createFromBitmapとの違いは、Bitmapオブジェクトがアンチエイリアスに対応していること
これを介して作られたオブジェクトは透明色や透明度は指定できない

EGSR::Sprite.createPlane(bmp, w, h, px=0, py=0, alpha=255)

既存のEGSR::Bitmapクラスのオブジェクトからプレーン形式のスプライトを作成する
「プレーン形式」は、後述のEGSR::Planeクラスを参照のこと
px,pyを使って、透明色として指定する色が存在するビットマップ上の座標を指定する
どちらかが-1のときは透明色を指定しない
alphaを使って、描画時の透明度（アルファブレンディング）を0〜255の間で指定する
0だと完全に透明になる

EGSR::Sprite.load(fname, px=0, py=0, alpha=255)

既存の画像ファイルからスプライトを作成する
px,pyを使って、透明色として指定する色が存在するビットマップ上の座標を指定する
どちらかが-1のときは透明色を指定しない
alphaを使って、描画時の透明度（アルファブレンディング）を0〜255の間で指定する
0だと完全に透明になる
また、nilを指定するとα値を持つ画像として認識する画像と見なす

EGSR::Sprite#Sprite.getList

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

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

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

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

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

EGSR::Sprite#w
EGSR::Sprite#h

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

EGSR::Sprite#context
EGSR::Sprite#context=(v)

画面に文字を描画したいときの文字列を取得・設定する

EGSR::Sprite#contextVisible
EGSR::Sprite#contextVisible=(v)

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

EGSR::Sprite#viewContext

現在表示できるコンテキストを取得・設定する
ここではEGSR::ContextDataインスタンスの配列として構成され、
この配列にインスタンスを追加することによって描画する文字列を追加したり
文字色・フォントサイズの変更を指示する
この配列を使用しての描画はEGSR::Screen.updateメソッドで行われる

EGSR::Sprite#textScroll
EGSR::Sprite#textScroll=(v)

画面に文字を１文字ずつ表示したいために、EGSR::ContextDataクラスの
構成を変更するかどうか示すフラグを取得・設定する
trueにすると、ContextDataクラスのインスタンスは１文字ずつ格納される

EGSR::Sprite#nextContext

ContextDataインスタンス配列中に格納されている要素を返す
本メソッドを呼び出す度に配列の先頭から順に要素を返す

EGSR::Sprite#clearContext

viewContext配列の全ての要素を消去する

EGSR::Sprite#resetContext

nextContextメソッドで取り出す要素の順番を再び先頭に戻す

EGSR::Sprite#getContextData
EGSR::Sprite#getContextData(list)

コンテキスト配列情報を取得・設定する
EGSR内部で使用

EGSR::Sprite#textAreaX
EGSR::Sprite#textAreaX=(v)
EGSR::Sprite#textAreaY
EGSR::Sprite#textAreaY=(v)
EGSR::Sprite#textAreaW
EGSR::Sprite#textAreaW=(v)
EGSR::Sprite#textAreaH
EGSR::Sprite#textAreaH=(v)

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

EGSR::Sprite#setTextArea(x, y, w, h)

文字を描画する領域の範囲をまとめて設定する
引数はそれぞれtextAreaX, textAreaY, textAreaW, textAreaHに対応している

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

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

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

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

EGSR::Sprite#bitmap

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

EGSR::Sprite#bitmap=(bmp)

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

EGSR::Sprite#antiAlias?

スプライトオブジェクトがアンチエイリアスを使用して描画するかどうかを返す
trueならアンチエイリアスを使用した描画をするオブジェクト

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

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

EGSR::Sprite#getCollisionMargin

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

EGSR::Sprite#viewPort

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

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

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

EGSR::Sprite#rect

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

EGSR::Sprite#update

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

EGSR::Sprite#update=(u)

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

EGSR::Sprite#collision?(spr)

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

EGSR::Sprite#dispose

スプライト領域を開放する

# EGSR::ContextDataクラス

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

EGSR::ContextData::CHAR

dataプロパティ(後述)が文字列を示す定数
Stringクラスのインスタンスが格納されている

EGSR::ContextData::FONTCOLOR

dataプロパティが描画文字色を示す定数
[r,b,g]で構成される配列が格納されている

EGSR::ContextData::FONTSIZE

dataプロパティが描画フォントサイズを示す定数
数値が格納されている

EGSR::ContextData::PAUSE

文字列表示の一時停止を指示する定数
描画する文字列中に{pause}マクロが組み込まれているときに使われる
従うかどうかはユーザ次第

EGSR::ContextData::CLEAR

文字列表示の一時停止を指示する定数
描画する文字列中に{pause}マクロが組み込まれているときに使われる
従うかどうかはユーザ次第

EGSR::ContextData::CR

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

EGSR::ContextData::MESWAIT

文字を表示する際のウェイト(フレーム単位)を指定する定数
数値が格納されている
従うかどうかはユーザ次第

EGSR::ContextData::SLEEP

表示を一定時間止める際にその値(フレーム単位)を指示する定数
数値が格納されている
従うかどうかはユーザ次第

EGSR::ContextData::EOT

コンテキストの最後尾を指示する定数

EGSR::ContextData.new(c, d)

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

EGSR::ContextData.cr

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

EGSR::ContextData.eot

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

EGSR::ContextData#code

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

EGSR::ContextData#data

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

# EGSR::ContextCompilerクラス

コンテキストコンパイラ本体
このコンパイラを使うと、コンテキスト配列を取得できる
但し、最後尾にEOTが含まれていないところに注意

EGSR::ContextCompiler.compile(context, flag)

コンテキスト配列に変換するためのコンパイルを行う
contextには、コンパイル対象の文字列を設定する
flagは、文字列を１文字ずつ分割して配列を形成するかを指定するフラグ

# EGSR::Planeクラス

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

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

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

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

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

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

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

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

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

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

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

EGSR::Plane#dispose

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

# EGSR::WindowParamクラス

ウィンドウ用に表示する書くグラフィックの範囲を格納するクラス
ウィンドウの窓枠・背景に使用する各パーツの領域の範囲やカーソル用のパーツのアニメーションパターン数を定義する
アニメーションが可能なカーソルパーツの領域範囲は、実際に表示するパーツの大きさを指定するが、アニメーションする他のパーツはその下に格納する仕様となっている
構造体扱い

EGSR::WindowParam.new(lt, top, rt, left, right, lb, bottom, rb, client, wait, wp, cl, ct, cr, cb, cp, pl, pt, pr, pb, pp)

WindowParamクラスのインスタンスを生成する
各パラメータは、以下のlefttop〜pagepatの説明に対応している

EGSR::WindowParam.default

EGSRが標準で所持しているWindowParamクラスのインスタンスを返す

EGSR::WindowParam#lefttop

窓枠の左上に描画するパーツの領域を示すEGSR::Rectクラスのインスタンス

EGSR::WindowParam#top

窓枠の上に描画するパーツの領域を示すEGSR::Rectクラスのインスタンス

EGSR::WindowParam#righttop

窓枠の右上に描画するパーツの領域を示すEGSR::Rectクラスのインスタンス

EGSR::WindowParam#left

窓枠の左に描画するパーツの領域を示すEGSR::Rectクラスのインスタンス

EGSR::WindowParam#right

窓枠の右に描画するパーツの領域を示すEGSR::Rectクラスのインスタンス

EGSR::WindowParam#leftbottom

窓枠の左下に描画するパーツの領域を示すEGSR::Rectクラスのインスタンス

EGSR::WindowParam#bottom

窓枠の下に描画するパーツの領域を示すEGSR::Rectクラスのインスタンス

EGSR::WindowParam#rightbottom

窓枠の右下に描画するパーツの領域を示すEGSR::Rectクラスのインスタンス

EGSR::WindowParam#client

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

EGSR::WindowParam#wait

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

EGSR::WindowParam#waitpat

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

EGSR::WindowParam#cursorleft

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

EGSR::WindowParam#cursortop

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

EGSR::WindowParam#cursorright

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

EGSR::WindowParam#cursorbottom

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

EGSR::WindowParam#cursorpat

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

EGSR::WindowParam#pageleft

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

EGSR::WindowParam#pagetop

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

EGSR::WindowParam#pageright

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

EGSR::WindowParam#pagebottom

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

EGSR::WindowParam#pagepat

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

EGSR::WindowParam#w

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

EGSR::WindowParam#h

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

EGSR::WindowParam#ww

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

EGSR::WindowParam#wh

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

EGSR::WindowParam#cw

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

EGSR::WindowParam#ch

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

# EGSR::Windowクラス

EGSR::Window#drawWindow

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

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

EGSR::update内部で呼ばれる

EGSR::Window.new(fname, px = 0, py = 0, balpha = 255, cw = 128, ch = 128, istile = true, params = WindowParam::default)

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

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

EGSR::Window.getList

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

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

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

EGSR::Window#clientW
EGSR::Window#clientW=(w)
EGSR::Window#clientH
EGSR::Window#clientH=(h)
EGSR::Window#clientSize
EGSR::Window#setClientSize(w, h)

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

EGSR::Window#clientLeft

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

EGSR::Window#clientTop

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

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

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

EGSR::Window#pauseWait
EGSR::Window#pauseWait=(v)

ウィンドウのポーズ画像を表示させるときに、アニメーションするときのフレーム数を取得・設定する

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

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

EGSR::Window#cursorWait
EGSR::Window#cursorWait=(v)

選択カーソルのアニメーションを行う際のフレーム数を取得・設定する

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

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

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

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

EGSR::Window#pageWait
EGSR::Window#pageWait=(v)

ページカーソルのアニメーションを行う際のフレーム数を取得・設定する

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

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

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

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

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

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

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

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

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

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

EGSR::Window#context
EGSR::Window#context=(c)

ウィンドウに描画する文字列を取得・設定する
また、Fontクラスで説明したマクロも使用できる

EGSR::Window#contextVisible
EGSR::Window#contextVisible=(v)

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

EGSR::Window#viewContext

現在表示できるコンテキストを取得・設定する
ここではEGSR::ContextDataインスタンスの配列として構成され、
この配列にインスタンスを追加することによって描画する文字列を追加したり
文字色・フォントサイズの変更を指示する
この配列を使用しての描画はEGSR::Screen.updateメソッドで行われる

EGSR::Window#textScroll
EGSR::Window#textScroll=(v)

画面に文字を１文字ずつ表示したいために、EGSR::ContextDataクラスの
構成を変更するかどうか示すフラグを取得・設定する
trueにすると、ContextDataクラスのインスタンスは１文字ずつ格納される

EGSR::Window#nextContext

ContextDataインスタンス配列中に格納されている要素を返す
本メソッドを呼び出す度に配列の先頭から順に要素を返す

EGSR::Window#clearContext

viewContext配列の全ての要素を消去する

EGSR::Window#resetContext

nextContextメソッドで取り出す要素の順番を再び先頭に戻す

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

ウィンドウに描画する際に使うフォント(EGSR::Fontクラスのインスタンス)を取得・設定する

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

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

EGSR::Window#dispose

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

# EGSR::Mapクラス

# EGSR::MapFastクラス

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

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

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

# EGSR::MapLayerクラス

# EGSR::MapLayerFastクラス

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

EGSR::Map.new(name, tsize, tpixels, px, py, alpha, loopx, loopy, mname, *blist)

マップ情報を格納するインスタンスを生成する
nameには、マップチップ名を設定する
tsizeはマップチップのコードナンバーの単位を示す(16もしくは256、標準は256)
tsizeの値は、マップチップの大きさに依らない
tsizeが16のときは0〜255、256のときは0〜65535がコードナンバーになる
tpixelsはマップチップ１枚のピクセル数を示す
特に指定は無いが、大抵は16ピクセルもしくは32ピクセルとなる
px,pyは、マップチップ画像状で透明色となるピクセルのX,Y座標を示す
alphaは、マップチップ画像状での透明度を設定する。nilのときはblistで指定したファイルを透明度付き画像と認識する
loopx,loopyは、X軸方向、Y軸方向にマップを無限スクロールさせるかを示すフラグ
falseの場合、マップが各端に到達するとスクロールが止まる
mnameは、マップに表示したいコードナンバーを収めたcsvファイル名を指定する
このとき、csvファイルに存在するレイヤはイベントレイヤが一番先頭になることに注意すること blistには、各レイヤに表示するマップチップファイル名を指定する ファイル名の代わりにnilを渡すと、イベントマップレイヤとして認識する

EGSR::Map#name

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

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

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

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

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

EGSR::Map#w
EGSR::Map#h

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

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

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

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

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

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

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

EGSR::Map#chipSize

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

EGSR::Map#dispose

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

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