


2Dレイアウトマネージャリファレンス

							Jun 15, 2001 Ver.0.0.1
							吉良 理人




* Index

1.0   概要

2.0   レイアウトマネージャリファレンス

  2.1  マクロ、定数
    2.1.1   L2D_STAT_*			レイアウトマネージャのステータス

  2.2  データのロード、開放
    2.2.1   L2D_LoadLayout()		レイアウトデータのロード
    2.2.2   L2D_LoadLayout2()		レイアウトデータのロード(特殊モード用)
    2.2.3   L2D_SetupLayout()		レイアウトデータの使用
    2.2.4   L2D_SetupLayout2()		レイアウトデータの使用(特殊モード用)
    2.2.5   L2D_ReleaseLayout()		レイアウトデータの開放

  2.3  アクション

    2.3.1   L2D_EvokeAction()		名前によるアクションの起動
    2.3.2   L2D_EvokeActionByNumber()	番号によるアクションの起動
    2.3.3   L2D_BreakAction()		アクションの強制停止
    2.3.4   L2D_GetActionNumber()	収録アクション数の取得
    2.3.5   L2D_ActionStatus()		アクション再生状態の取得

  2.4  プログラムインタフェース

    2.4.1   L2D_GetObject()		オブジェクトの取得
    2.4.2   L2D_GetParts()		オブジェクト管理領域の取得
    2.4.3   L2D_MorfObject()		プログラムによるオブジェクトの状態補間
    2.4.4   L2D_SetSignalHandle()	シグナルハンドラの登録


------------------------------------------------------------------------------

1.0   概要

  2Dレイアウトマネージャは、.l2d という suffix を持つレイアウトデータを、
  PlayStation2 実機上で表示、再生するためのモジュールである。

  .l2d を扱うためのインタフェースとなる関数が用意されており、これを使うことで
  ユーザは .l2d のレイアウトとアクションを使用することができる。

  このモジュールは、レイアウトデータスクリプト .l2d ならびに、実機上に
  搭載するためのバイナリフォーマット .o2d 、2D描画モジュールに依存する。

  これらの詳細については、下記ドキュメントを参照のこと。

	2D表示系モジュール	2d_sprite.txt
	フォーマット詳細(.l2d)	form_l2d.txt
	フォーマット詳細(.o2d)	form_o2d.txt


------------------------------------------------------------------------------

2.0   レイアウトマネージャリファレンス

  2.1  マクロ、定数

    2.1.1   L2D_STAT_*			レイアウトマネージャのステータス


	L2D_STAT_ACT_NOT_FOUND	指定されたアクションが見付からない
	L2D_STAT_BAD_HANDLE	ハンドル値が不正である
	L2D_STAT_BUSY		処理を実行中
	L2D_STAT_UNLOAD		指定されたハンドルには
				データがロードされていない
	L2D_STAT_NOT_ENOUGH	レイアウトマネージャが起動されていない
	L2D_STAT_ACK		正常終了、もしくは待機中


      レイアウトマネージャの各関数を実行した際に返されるステータス値の定数を
      定義したもの。定義されている値は、L2D_STAT_ACK 以外は全て負の値である。

      


  2.2  データのロード、開放

    2.2.1   L2D_LoadLayout()		レイアウトデータのロード

	int L2D_LoadLayout(int strcode, int chanl, int base_pri, int add_flag)

	    strcode	       .o2d データのファイル名
	    chanl	       レイアウトを表示する描画チャネル
	    base_pri	       基底プライオリティ
	    add_flag	       追加フラグ


      レイアウトデータをロードし、必要なオブジェクトを展開して、その
      レイアウトハンドルを返す。戻り値が負の場合の結果は L2D_STAT_* マクロ
      [2.1.1] の項を参照。
      



    2.2.2   L2D_LoadLayout2()		レイアウトデータのロード(特殊モード用)

	int L2D_LoadLayout2(int strcode, int chanl, int base_pri,
				int add_flag, int pause_level)

	    strcode	       .o2d データのファイル名
	    chanl	       レイアウトを表示する描画チャネル
	    base_pri	       基底プライオリティ
	    add_flag	       追加フラグ
	    pause_level	       アクションを一時停止するポーズのレベル


      基本的に役割は L2D_LoadLayout() [2.2.1] と同様。ただし、ポーズ状態に
      おけるアクションの一時停止について、止まって欲しいポーズ状態を指定する
      ことができる(通常の L2D_LoadLayout() は、pause_level に GV_PAUSE_PAUSE を
      指定した場合と等価)。




    2.2.3   L2D_SetupLayout()		レイアウトデータの使用

	int L2D_LoadLayout(void * entry_ptr, int chanl,
			   int base_pri, int add_flag)

	    entry_ptr	       .o2d データのポインタ
	    chanl	       レイアウトを表示する描画チャネル
	    base_pri	       基底プライオリティ
	    add_flag	       追加フラグ


      .o2d データをファイル名 StrCode ではなくポインタで指定する以外は
      L2D_LoadLayout() [2.2.1] と全く同じ機能を持つ。詳細については
      2.2.1 を参照のこと。




    2.2.4   L2D_SetupLayout2()		レイアウトデータの使用(特殊モード用)

	int L2D_LoadLayout2(void * entry_ptr, int chanl,
			   int base_pri, int add_flag, pause_level)

	    entry_ptr	       .o2d データのポインタ
	    chanl	       レイアウトを表示する描画チャネル
	    base_pri	       基底プライオリティ
	    add_flag	       追加フラグ
	    pause_level	       アクションを一時停止するポーズのレベル


      .o2d データをファイル名 StrCode ではなくポインタで指定する以外は
      L2D_LoadLayout2() [2.2.2] と全く同じ機能を持つ。詳細については
      2.2.2 を参照のこと。




    2.2.5   L2D_ReleaseLayout()		レイアウトデータの開放

        int L2D_ReleaseLayout(int handle)

	    handle		開放するレイアウトのハンドル


      指定されたハンドルにロードされているレイアウトデータに使用されている
      メモリ領域と、そのハンドルを開放する。使用済のレイアウトについては、
      必ずこの関数を用いて領域を開放する必要がある。





  2.3  アクション

    2.3.1   L2D_EvokeAction()		名前によるアクションの起動

        int L2D_EvokeAction(int handle, int strcode)

	    handle		レイアウトハンドル
	    strcode		起動するアクション名の StrCode


      レイアウトデータ中に存在する、指定された名称のアクショントラックを
      再生する。戻り値の内容については L2D_STAT_* マクロ[2.1.1] の項参照。

      基本的に L2D_STAT_ACK 以外の結果はエラーであり、アクションは再生
      されない。




    2.3.2   L2D_EvokeActionByNumber()	番号によるアクションの起動

        int L2D_EvokeActionByNumber(int handle, int actnum)

	    handle		レイアウトハンドル
	    actnum		起動アクションの番号


      ハンドルで指定されたレイアウトデータ中に存在するアクションの
      うち、先頭を 0 番として actnum で指定された番号のアクションを再生する。
      特定のアクションと番号が一致していることは保証されていないので、      
      ゲーム中で使用するプログラムで用いるのは望ましくない。主にプレビュー
      環境で使用する。

      戻り値の内容については L2D_STAT_* マクロ[2.1.1] の項参照。
      基本的に L2D_STAT_ACK 以外の結果はエラーであり、アクションは再生
      されない。
      



    2.3.3   L2D_BreakAction()		アクションの強制停止

	int L2D_BreakAction(int handle)

	    handle		レイアウトハンドル


      ハンドルで指定されたレイアウトがアクションを再生中である場合、
      強制的にその再生を中断する。中断後は、途中の状態で停止する。

      レイアウトのアクション再生が待機中である場合は何もしない。

      戻り値の内容については L2D_STAT_* マクロ[2.1.1] の項参照。
      結果が L2D_STAT_ACK 以外はエラー。




    2.3.4   L2D_GetActionNumber()	収録アクション数の取得

	int L2D_GetActionNumber(int handle)

	    handle		レイアウトハンドル


      ハンドルで指定されたレイアウトデータ中に存在するアクションの数を
      取得する。

      結果が 0 以上である場合はアクションの個数、負である場合はエラー。
      エラーの際の戻り値の内容については L2D_STAT_* マクロ[2.1.1] の項参照。


    2.3.5   L2D_ActionStatus()		 アクション再生状態の取得

        int L2D_ActionStatus(int handle)

	    handle		レイアウトハンドル


      ハンドルで指定されたレイアウトデータのアクション再生状態を取得する。
      戻り値の内容については L2D_STAT_* マクロ[2.1.1] の項参照。
   



  2.4  プログラムインタフェース


    2.4.1   L2D_GetObject()		オブジェクトの取得

	SPR_OBJ * L2D_GetObject(int handle, int strcode)

	    handle		レイアウトハンドル
	    strcode		取得するオブジェクトの名称 StrCode


      ハンドルで指定されているレイアウトデータ中から、strcode で指定された
      名称をもつオブジェクトのポインタを取得する。ここで得られたポインタは、
      レイアウトマネージャが描画に使用している 2D表示系モジュールで用いられる
      2D オブジェクトのポインタである。この詳細については 2d_sprite.txt の
      [4.1.20] 参照。

      指定された名称のオブジェクトが存在しない場合は NULL を返す。



    2.4.2   L2D_GetParts()		オブジェクト管理領域の取得

	void * L2D_GetParts(int handle, int strcode)

	    handle		レイアウトハンドル
	    strcode		取得するオブジェクトの名称 StrCode


      ハンドルで指定されているレイアウトデータ中から、strcode で指定された
      名称をもつオブジェクトの管理領域のポインタを取得する。ここで得られた
      ポインタは、アクションに伴うそのオブジェクトの状態変化を管理するために
      2Dレイアウトマネージャが用意した領域を指す。

      この領域の内容を直接ユーザが操作することは許可していないが、
      L2D_MorfObject() [2.4.3] などで、オブジェクトの状態をプログラムから
      変更するために使用する。

      指定された名称のオブジェクトが存在しない場合は NULL を返す。




    2.4.3   L2D_MorfObject()		プログラムによるオブジェクトの状態補間

	int L2D_MorfObject(void * parts,
			   int strcode1, int strcode2, float rate)

	    parts		状態を設定するオブジェクトの管理領域
	    strcode1		状態1 の名称
	    strcode2		状態2 の名称
	    rate		補間レート

      parts で指定された管理領域を持つオブジェクトの表示状態を変更する。

      表示状態は、.l2d の status～endstat 中で指定される mode セクションの
      名称を strcode1 と strcode2 で指定し、その間の補間レートを rate で指定
      する。.l2d の表示状態定義については、form_l2d.txt の [3.2] を参照。

      rate の値は 0.0F ～ 1.0F の間で与え、0.0F に近いほど strcode1,
      1.0F に近いほど strcode2 で指定された状態に近くなる。

      特定の状態に確定したい場合は、strcode1, strcode2 に同じ名称を与えれば
      良い。rate は 0.0F ～ 1.0F の間であればどのような値でも構わない。

      現時点では必ず 0 を返す。




    2.4.4   L2D_SetSignalHandle()	シグナルハンドラの登録

	int L2D_SetSignalHandle(int handle, void (*func)(int sign, int value))

	    handle		レイアウトハンドル
	    func		シグナルハンドラ関数のポインタ


      レイアウトにシグナルハンドラ関数を関連づける。
      レイアウトの各アクションには、シグナルトラックを埋め込むことができ、
      ここで登録した関数はシグナルトラック中のシグナルが起動される度に
      呼び出される。

      .l2d のシグナルトラック定義については、form_l2d.txt の [3.3.3][3.3.7]
      を参照。

      シグナルハンドラは、一つのレイアウトハンドルにつき一つのみの登録とする。
      複数回設定された場合は、新しいものが有効となる。

      シグナルハンドラ関数のポインタとして NULL を与えると、呼び出しは
      行われなくなる。      


      シグナルハンドラは以下のプロトタイプを持つ関数である必要がある。

	void SignalHandler(int sign, int value);

      呼び出される際に、sign にはシグナルに設定された名称の StrCode, value
      にはそのシグナルの引数の値が与えられ、シグナルハンドラ側ではこれらの
      値をもとに処理を分岐させる必要がある。


以上。
