えちょ記

語らないブログ

トーク管理オブジェクト

内部フォーマットに関わる、トーク管理オブジェクトのクラス構造。
例によって健忘禄、且つ夢想なので、実際こうなるとは限りません(^^;

■インターフェース
 ・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まで後回し。



ということで、週末までの目標はこの辺まで実装しきること。
‥‥まぁなんとか(^^;