トーク管理オブジェクト
内部フォーマットに関わる、トーク管理オブジェクトのクラス構造。
例によって健忘禄、且つ夢想なので、実際こうなるとは限りません(^^;
■インターフェース
・Talkインターフェース:dot_Talk
全てのTalkデータの実装はこのインターフェースを持つ
*要素を追加(任意のオペレーション):addTalk(dot_Talk $talk)
*スクリプトの再生時間を取得(単位ms):getTime()
*スクリプト取得:__toString()
--------------------------------
*取得パラメータのセット:setAI(dot_AI $ai)
*取得イベントのセット:setEvent(string $id ,string $param=NULL)
*乱数SEEDのセット:setRandSeed(string $seed)
*ウェイトに\_w[*]を使うか:isMsWait(bool $flug)
■クラス
・基底クラス:dot_talk_Base
・dot_Talkの配列を保持:dot_talk_List(dot_talk_Baseを継承)
・配列要素を順次再生[seq]:dot_talk_Seq(dot_talk_Listを継承)
・配列要素を同時再生[par]:dot_talk_Par(dot_talk_Listを継承)
・セッション(キャラクター・サーフェスが同じブロック):dot_talk_Session(dot_talk_Seqを継承)
・テキスト要素:dot_talk_Text(dot_talk_Baseを継承)
・ランダム選択:dot_talk_Rand(dot_talk_Baseを継承)
■クラスツリー
dot_talk_Base
*-dot_talk_List
| *-dot_talk_Seq
| | *-dot_talk_Session
| *-dot_talk_Par
*-dot_talk_RandSession
*-dot_talk_Text
*-dot_talk_RandText
■オブジェクトの相関「要素→含まれる要素 要素数」
[session] →(text) 0..*
[seq] →(seq,par) 0..*
[randsession] →(seq,par) 1(ランダム選択)
[randtext] →(text) 1(ランダム選択)
■属性
共通する属性
・repeat 繰り返し回数
・begin 再生開始までのウェイト
[par]要素の属性
・endsync どの再生要素の再生終了に合わせるか
[session]要素の属性
シンクロナイズドセッションに対応します。
・character :再生対象のキャラクタ。0-9まで。複数指定可能。
・surface :サーフェスID。
キャラクターが複数指定された場合、こちらも複数指定。
・nl :改行幅。キャラクターが複数指定の場合以下同文。
#この辺、データの持ち方、要整理。
・quick :指定された場合、このセッションはクイックセッションとする。
[randsession/randtext]要素の属性
・unique :指定された場合、同一キーワードの要素で同じ内容の
物は2回選択されない。
■その他
・インターフェースは膨らみ過ぎなので削る予感。
・オブジェクトの相関に合わせてインターフェース作るべきか?
・ランダム要素は、__toString()実行まで検索されない。
■ToDo
・dot_talk_Par、repeat要素の実装はβかRC1まで後回し。
ということで、週末までの目標はこの辺まで実装しきること。
‥‥まぁなんとか(^^;