kinugasa.ui
クラス MessageWindow

java.lang.Object
  上位を拡張 kinugasa.object.Sprite
      上位を拡張 kinugasa.object.BasicSprite
          上位を拡張 kinugasa.ui.MessageWindow
すべての実装されたインタフェース:
java.io.Serializable, java.lang.Cloneable, java.lang.Comparable<Sprite>, Controllable, Drawable, Shapeable
直系の既知のサブクラス:
InputMessageWindow, SelectableMessageWindow

public class MessageWindow
extends BasicSprite

kinugasa : MessageWindow : 複数のテキストラベルを表示するためのコンポーネントです.

メッセージウインドウは専用の描画アルゴリズムによって複数の(0個以上の)ラベルを適切な位置に描画します.
ウインドウ内のすべてのラベルは設定されているタイムカウンタによって1行ずつ表示させることができます.

ウインドウのインスタンスは表示する分だけ必要です.
通常は、メッセージを表示するためのウインドウを一つ用意し、 内部のテキストを置き換えて表示します.

ウインドウのサイズやウインドウ内に含まれる(含むことができる)ラベルの数は任意です.これらの値は 自動調節されません.ウインドウの領域から出た行のラベルはウインドウの外に表示されます。

ウインドウは一つの「アイコン」をSpriteインスタンスとして持つことができます.
アイコンはisAllTextViibleがtrueを返すときだけ このクラス内で自動的に描画されます.ただしウインドウモデルによってアイコンに適切なパラメータが 設定されている場合に限ります.
ウインドウにアイコンを設定すると、モデルのinitIconメソッドが自動的に呼び出されます.
アイコンの表示状態を変更したい場合は、オーバーライドできます.

ラベルの実際の描画位置はウインドウモデルによって決められます.


ウインドウ内に表示するテキストは、単一のStringインスタンスから構築することができます.
各行はこのクラスのseparatorフィールドによって分割された部分文字列が使用されます.
separatorはデフォルトでは"\n"が設定されています.
しかし、"\n"はファイルから読み込めないため、ファイルから読み込んだデータをもとにウインドウを構築する場合は 置換した文字列を使用するか、セパレータ文字を変更してください.
このクラスのクローニングではラベルの配列をクローンしません(シャローコピー).

バージョン:
1.0.0 - 2012/07/16_15:36:35.
作成者:
Dra0211
関連項目:
直列化された形式

フィールドの概要
private  Sprite icon
          テキスト送りアイコン.
protected  TextLabel[] labels
          ウインドウが管理するラベル.
private static java.lang.String separator
          単一のStringインスタンスからメッセージを構築する場合に、行を区切る文字です.
private static long serialVersionUID
           
private  MessageWindowModel windowModel
          ウインドウの描画アルゴリズム.
 
コンストラクタの概要
MessageWindow(float x, float y, float width, float height, MessageWindowModel wm, LabelModel lm, java.lang.String text)
          Stringインスタンスをseparatorで分割した文字列を使用して適当なラベルを構築し、 メッセージウインドウに設定します.
MessageWindow(float x, float y, float width, float height, MessageWindowModel wm, LabelModel lm, TimeCounter tc, java.lang.String text)
          Stringインスタンスをseparatorで分割した文字列を使用して適当なラベルを構築し、 メッセージウインドウに設定します.
MessageWindow(float x, float y, float width, float height, MessageWindowModel wm, TextLabel... label)
          テキストラベルを指定して、新しいメッセージウインドウを構築します.
 
メソッドの概要
 void allText()
          ウインドウ内のすべてのラベルのallCharをコールします.
 MessageWindow clone()
          このスプライトの複製を作成します.
 void draw(java.awt.Graphics2D g)
          メッセージウインドウを描画します.
 Sprite getIcon()
          このウインドウに設定されているアイコンを取得します.
 TextLabel getLabel(int idx)
          このウインドウ内の指定したインデックスを持つラベルを取得します.
 TextLabel[] getLabels()
          このウインドウに含まれるすべてのラベルを取得します.
static java.lang.String getSeparator()
          区切り文字を取得します.
 MessageWindowModel getWindowModel()
          このウインドウが使用しているモデルを取得します.
 boolean isAllTextVisible()
          このウインドウに含まれる全てのラベルのisAllVisibleがtrueを返すかどうかを調べます.
 void move()
          オブジェクトに設定されているパラメータおよびアルゴリズムを使用して移動します.
 boolean move(float xValue, float yValue, java.awt.Shape s)
          入力デバイスからの値によって、オブジェクトを移動します.
 void move(MovingModel m)
          指定のアルゴリズムを使用して移動します.
 boolean move(java.awt.geom.Point2D.Float p, java.awt.Shape s)
          入力デバイスからの値によって、オブジェクトを移動します.
 MessageWindow setIcon(Sprite icon)
          このウインドウに新しいアイコンを設定します.
 void setLabels(TextLabel[] labels)
          新しいラベルを設定し、それらの初期設定を行います.
static void setSeparator(java.lang.String separator)
          区切り文字を設定します.
 void setSound(Sound a)
          このメッセージウインドウが持つすべてのラベルにサウンドを設定します.
 void setText(java.lang.String text)
          現在表示中のラベルと同じ設定でsetText(String, TimeCounter, LabelModel)を呼び出す簡易メソッドです.
 void setText(java.lang.String text, LabelModel lm)
          ウインドウ内のテキストを更新します.
 void setText(java.lang.String text, TimeCounter tc)
          ウインドウ内のテキストを更新します.
 void setText(java.lang.String text, TimeCounter tc, LabelModel lm)
          ウインドウ内のテキストを更新します.
 void setWindowModel(MessageWindowModel windowModel)
          ウインドウのモデルを変更します.
 boolean skip()
          このウインドウが「テキストを表示中」であって「表示が完了していない」場合に全ての文字列を表示します.
 
クラス kinugasa.object.BasicSprite から継承されたメソッド
getAngle, getMovingModel, getMovingModel, getNextCenter, getNextLocation, getSpeed, getVector, setAngle, setMovingModel, setSpeed, setVector, toString
 
クラス kinugasa.object.Sprite から継承されたメソッド
compareTo, contains, getBounds, getCenter, getCenterX, getCenterY, getHeight, getHitBounds, getLocation, getPersonalCenter, getPersonalCenterX, getPersonalCenterY, getSize, getStatus, getWidth, getX, getY, getZ, isExist, isVisible, setBounds, setBounds, setBounds, setExist, setHeight, setLocation, setLocation, setSize, setSize, setStatus, setVisible, setWidth, setX, setY, setZ, update, updateCenter, updatePersonalCenter
 
クラス java.lang.Object から継承されたメソッド
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

separator

private static java.lang.String separator
単一のStringインスタンスからメッセージを構築する場合に、行を区切る文字です. デフォルトでは"\n"に設定されています.


serialVersionUID

private static final long serialVersionUID
関連項目:
定数フィールド値

labels

protected TextLabel[] labels
ウインドウが管理するラベル.


windowModel

private MessageWindowModel windowModel
ウインドウの描画アルゴリズム.


icon

private Sprite icon
テキスト送りアイコン.

コンストラクタの詳細

MessageWindow

public MessageWindow(float x,
                     float y,
                     float width,
                     float height,
                     MessageWindowModel wm,
                     TextLabel... label)
              throws java.lang.NullPointerException
テキストラベルを指定して、新しいメッセージウインドウを構築します. このコンストラクタでは、ラベルに設定されているパラメータを(一般的には)遵守します.
ただし、ウインドウモデルによって ラベルの座標などの初期設定が行われる点に注意してください.
このコンストラクタは、いくつかのラベルがそれぞれ別の ラベルモデルやタイムカウンタを使用している際に、それらの 設定を使用してメッセージウインドウを表示する際に使用します.

パラメータ:
x - ウインドウのX座標.
y - ウインドウのY座標.
width - ウインドウの幅.
height - ウインドウの高さ.
wm - ウインドウのモデル.
label - ラベルの実装.
例外:
java.lang.NullPointerException - ラベルがnullの場合に投げられる. 空のウインドウを表示するには空の文字列""をもとに空のラベルを作成する必要があります.

MessageWindow

public MessageWindow(float x,
                     float y,
                     float width,
                     float height,
                     MessageWindowModel wm,
                     LabelModel lm,
                     java.lang.String text)
              throws java.lang.NullPointerException
Stringインスタンスをseparatorで分割した文字列を使用して適当なラベルを構築し、 メッセージウインドウに設定します. このコンストラクタで設定されたラベルの可視文字インデックスには文字IDX=文字列の長さが設定されます. したがって、ウインドウ内のすべてのテキストは 最初から表示されています.

パラメータ:
x - ウインドウのX座標.
y - ウインドウのY座標.
width - ウインドウの幅.
height - ウインドウの高さ.
wm - ウインドウのモデル.
lm - ラベルに適用するラベルモデル.
text - ウインドウに設定する文字列.separatorによって分割される.
例外:
java.lang.NullPointerException - ラベルがnullの場合に投げられる. 空のウインドウを表示するには空の文字列""をもとに空のラベルを作成する必要があります.

MessageWindow

public MessageWindow(float x,
                     float y,
                     float width,
                     float height,
                     MessageWindowModel wm,
                     LabelModel lm,
                     TimeCounter tc,
                     java.lang.String text)
              throws java.lang.NullPointerException
Stringインスタンスをseparatorで分割した文字列を使用して適当なラベルを構築し、 メッセージウインドウに設定します. このコンストラクタで設定されたラベルの可視文字インデックスは0に設定されます.
したがって、ウインドウ内のすべてのテキストは 指定したタイムカウンタを使用して一文字ずつ表示させることができます.

パラメータ:
x - ウインドウのX座標.
y - ウインドウのY座標.
width - ウインドウの幅.
height - ウインドウの高さ.
wm - ウインドウのモデル.
lm - ラベルに適用するラベルモデル.
tc - 全てのラベルに適用されるタイムカウンタ.実際にはこのインスタンスのクローンが使用される.
text - ウインドウに設定する文字列.separatorによって分割される.
例外:
java.lang.NullPointerException - ラベルがnullの場合に投げられる. 空のウインドウを表示するには空の文字列""をもとに空のラベルを作成する必要があります.
メソッドの詳細

getSeparator

public static java.lang.String getSeparator()
区切り文字を取得します. この値はデフォルトでは"\n"を返します.

戻り値:
ラベル構築時に使用されるセパレータ.

setSeparator

public static void setSeparator(java.lang.String separator)
区切り文字を設定します.

パラメータ:
separator - ラベル構築時に使用されるセパレータ.

draw

public void draw(java.awt.Graphics2D g)
メッセージウインドウを描画します. 描画では、まず、ウインドウ自体の可視状態の判定が行われます.
次にウインドウモデルによってウインドウの下地およびラベルが描画されます.
最後にアイコンが設定されている場合はアイコンを描画します.

定義:
インタフェース Drawable 内の draw
定義:
クラス BasicSprite 内の draw
パラメータ:
g - 書き込むグラフィックスコンテキスト.

setText

public void setText(java.lang.String text,
                    TimeCounter tc)
ウインドウ内のテキストを更新します. このメソッドでは、このウインドウにラベルが存在する場合には、そのラベルのモデルを使用して 新しいテキストを作成します.
ラベルが存在しない場合にはSTANDARD_MODELが使用されます.

このメソッドはsetText(String, TimeCounter, LabelModel)を使用します。

パラメータ:
text - 設定する文字列.separatorによって分割される.
tc - 全てのラベルに設定するタイムカウンタのマスタ.実際にはクローンが使用される.

setText

public void setText(java.lang.String text,
                    LabelModel lm)
ウインドウ内のテキストを更新します. このメソッドでは、新しいラベルのタイムカウンタにはTRUE_MODELが可視文字IDXには文字列の長さが設定されます.
したがって、このメソッドで新しい文字列を設定すると、それらのテキストは最初からすべてが表示されています.

パラメータ:
text - 設定する文字列.separatorによって分割される.
lm - 新しいラベルに設定するモデル.

setText

public void setText(java.lang.String text,
                    TimeCounter tc,
                    LabelModel lm)
ウインドウ内のテキストを更新します. このメソッドでは、新しいラベルの可視文字IDXには0が設定されます.
したがって、このメソッドで新しい文字列を設定すると、タイムカウンタtcおよびモデルlmを使用して 一文字ずつテキストを表示させることができます.

パラメータ:
text - 設定する文字列.separatorによって分割される.
tc - 全てのラベルに設定するタイムカウンタのマスタ.実際にはクローンが使用される.
lm - 新しいラベルに設定するモデル.

setText

public void setText(java.lang.String text)
現在表示中のラベルと同じ設定でsetText(String, TimeCounter, LabelModel)を呼び出す簡易メソッドです.

パラメータ:
text - 次に表示するテキストを指定します。

setLabels

public final void setLabels(TextLabel[] labels)
新しいラベルを設定し、それらの初期設定を行います. 初期設定はウインドウモデルによって行われます.

パラメータ:
labels - 新しいラベルのインスタンス.

getLabels

public TextLabel[] getLabels()
このウインドウに含まれるすべてのラベルを取得します. このメソッドで取得したラベルに行われた操作は、ウインドウに反映されます.

戻り値:
このウインドウに含まれるラベル.

getLabel

public TextLabel getLabel(int idx)
                   throws java.lang.ArrayIndexOutOfBoundsException
このウインドウ内の指定したインデックスを持つラベルを取得します.

パラメータ:
idx - インデックス.通常は0ベースの行番号となる.
戻り値:
指定したインデックスのラベル.
例外:
java.lang.ArrayIndexOutOfBoundsException - 不正な要素数の場合に投げられる.

setWindowModel

public void setWindowModel(MessageWindowModel windowModel)
ウインドウのモデルを変更します. ウインドウのモデルを変更すると、アイコンおよびラベルの初期設定が行われます.

パラメータ:
windowModel - 新しいモデル.

getWindowModel

public MessageWindowModel getWindowModel()
このウインドウが使用しているモデルを取得します.

戻り値:
ウインドウのモデル.

isAllTextVisible

public boolean isAllTextVisible()
このウインドウに含まれる全てのラベルのisAllVisibleがtrueを返すかどうかを調べます. このメソッドは「テキスト変更のタイミング検査」に使用できます.

戻り値:
全てのラベルのすべての文字が表示されている場合にtrueを返す.

skip

public boolean skip()
このウインドウが「テキストを表示中」であって「表示が完了していない」場合に全ての文字列を表示します. このメソッドは一文字ずつ表示中のテキストをプレイヤーの操作によってすべて表示するために使用します.

戻り値:
このメソッドの操作によってすべての文字が表示された場合はtrueを返す.

allText

public void allText()
ウインドウ内のすべてのラベルのallCharをコールします.


getIcon

public Sprite getIcon()
このウインドウに設定されているアイコンを取得します.

戻り値:
このウインドウに設定されているアイコン.設定されていない場合はnullを返す.

setIcon

public MessageWindow setIcon(Sprite icon)
このウインドウに新しいアイコンを設定します. アイコンを設定するとウインドウモデルのinitIconメソッドがコールされます.
このメソッドはウインドウのインスタンス化と同時に使用できるようになっています.

パラメータ:
icon - 設定するアイコン.
戻り値:
このウインドウのインスタンスが返る.

clone

public MessageWindow clone()
クラス BasicSprite の記述:
このスプライトの複製を作成します. このメソッドでは、全てのフィールドをクローニングします.
このメソッドはサブクラスで適切にオーバーライドしてください.

オーバーライド:
クラス BasicSprite 内の clone
戻り値:
このスプライトと同じ設定の新しいインスタンス.

setSound

public void setSound(Sound a)
このメッセージウインドウが持つすべてのラベルにサウンドを設定します.

パラメータ:
a - 1文字表示するたびにこのサウンドファイルが再生されます。

move

public void move()
クラス BasicSprite の記述:
オブジェクトに設定されているパラメータおよびアルゴリズムを使用して移動します.

オーバーライド:
クラス BasicSprite 内の move

move

public void move(MovingModel m)
クラス BasicSprite の記述:
指定のアルゴリズムを使用して移動します.

オーバーライド:
クラス BasicSprite 内の move
パラメータ:
m - 移動方法.

move

public boolean move(java.awt.geom.Point2D.Float p,
                    java.awt.Shape s)
インタフェース Controllable の記述:
入力デバイスからの値によって、オブジェクトを移動します.

定義:
インタフェース Controllable 内の move
オーバーライド:
クラス BasicSprite 内の move
パラメータ:
p - -1.0~1.0の間のXおよびY軸の入力値.キー操作では-1.0または1.0、ゲームパッドを使用すると可変の値が送信される.
s - このオブジェクトが移動可能な領域.nullでない場合はこの領域から出てはならない.
戻り値:
移動後のオブジェクトがs内に存在する場合はtrueを、sから出る(contains()がfalse)ため、移動できなかった場合はfalseを返す.

move

public boolean move(float xValue,
                    float yValue,
                    java.awt.Shape s)
インタフェース Controllable の記述:
入力デバイスからの値によって、オブジェクトを移動します.

定義:
インタフェース Controllable 内の move
オーバーライド:
クラス BasicSprite 内の move
パラメータ:
xValue - -1.0~1.0の間の入力値.キー操作では-1.0または1.0、ゲームパッドを使用すると可変の値が送信される.
yValue - -1.0~1.0の間の入力値.キー操作では-1.0または1.0、ゲームパッドを使用すると可変の値が送信される.
s - このオブジェクトが移動可能な領域.nullでない場合はこの領域から出てはならない.
戻り値:
移動後のオブジェクトがs内に存在する場合はtrueを、sから出る(contains()がfalse)ため、移動できなかった場合はfalseを返す.