WSN追加案: メッセージの新書式
Issue #714
new
既存のメッセージの書式は柔軟性に欠けており、拡張すると容易に前方互換性を壊してしまいます。また、#M
や&R
等、簡単には表示できない文字列があります。
これらの問題は小手先で仕様をいじっても改善できません。新しい書式を設け、メッセージ・セリフコンテントのオプションで既存の書式と新書式とを切り替えられるようにするべきです。
新書式は充分に柔軟・簡単・強力なものである必要があります。今のところ.NET風に{ }
で囲った部分に諸々の指定を行う事で特殊な表示を指定するというような形を考えていますが({File:<パス>}
でイメージファイルの表示等)、それがベターかは充分な議論・検証を経なければ分かりません。
以下に、新書式に最低限必要な要件をまとめておきます。
- 全ての文字列が容易に表示できる。
- 任意の状態変数値を表示できる。
- 選択メンバ名等、既存の書式と同等のシステム文字列を表示できる。
- 部分的に文字色の変更ができる。
- 任意のイメージファイルを表示できる。
- 透過色の使用・不使用を選択できる。
- ふりがな・傍点を振る事ができる。
- 後方互換性がある。仕様を拡張しても過去のデータが壊れない。
- 分かりやすく覚えやすい。
- できれば既存の書式と似たような感覚で使えるとよいが、無理はしない。
以下のような機能も考えられますが、これは当面実現しなくてもよいと私は考えています。
- 部分的にフォントを変更できる。
- 部分的に文字サイズを変更できる。
- PCのイメージを表示できる。
既存の議論、issue #151,#152,#455,#713及びcwxeditorのissue 260も参照してください。
Comments (6)
-
reporter -
reporter File
ですが、絶対座標を指定して表示できるようにした方がいいかもしれません。以下のような感じではどうでしょうか。- 例:
{File.bmp:Mask:X=100:Y=150}
で、X座標がメッセージウィンドウの左端から100px、Y座標顔が上端から150pxとなります。 TopLeft
等の位置指定子と競合した場合は、あとから指定されたものが有効となります。
- 例:
-
お疲れ様です。
話を膨らませてしまって恐縮ですが、イメージの表示で、PC画像も表示できたら1コマ上で掛け合いが出来るなぁとか思ったりもします。今ですと、1001以上のレイヤでメッセージ上に表示するしかなく、そうなるとバックログに表示されません。
-
reporter ご提案ありがとうございます。その件は#720ですでに提案済みです。
-
っと。失礼しました。精査不足でした。
他に表示できればというものがあるか考えてみます。
-
reporter Issue
#152was marked as a duplicate of this issue. - Log in to comment
具体的な仕様を1つ、叩き台として挙げておきます。
$...$
・%...%
による状態変数値の表示。#M
・#T
などによるキャラクター名等の表示。#*
によるスキン・シナリオ内イメージ表示。&
ではじまる色指定。{Command:Value}
あるいは{Command:Value1:Value2}
という書式で、特殊な値を表示できます。\
の次の文字は、特殊な意味を持たない普通の文字として扱います。これをエスケープといいます。{
を使いたい場合は\{
と記述できます。同様に&
や#
も\&
・\#
と記述できます。\
そのものは\\
です。Commandには次のものが使えるようにします。存在しなかったり、値の記述が不完全なコマンドは
{}
内が全て無視されて空文字列になります。\
によるエスケープは無効です。イメージファイルはカードイメージ等と同様のアルゴリズムで検索され、見つからなかった場合は表示されません。Windows以外でも、パスの大文字・小文字は区別されません。,
区切りで1つないし複数のオプションを指定できます。{File:Image1.png}
で、Image1.png
を左上寄せで表示します。マスク色は無効です。{File:Material/Image2.png:Mask,Center}
で、Material/Image2.png
を中央寄せで表示します。マスク色は有効です。\
によるエスケープは無効です。状態変数が見つからなかった場合は空文字列になります。パスの大文字・小文字は区別されます。#FFFFFF
という形式でRGB値を指定します。色指定が不正な場合は何もしません。色指定では大文字・小文字をどちらでも使えます。{Color:#FF0000}
で以降の文字を赤くします。Commandの記述では大文字・小文字は区別されません。
:
について。この記号はコマンドの値やオプションを区切るために使用されます。将来は3つ以上のValueを持つコマンドが現れるかもしれません。その場合の記法は{Command:Value1:Value2:Value3}
のようになるでしょう。上記のコマンドも暗黙のうちにValue3以降を持っており、それが無視されていると仮定する事ができます。従って、区切りの:
がいくつ連なっていても、それは無視される空の値がいくつか存在しているだけという事になります。要するに、{Color:#000000::}
のような記述は文法エラーにはなりません。コマンドが文字列の終わりまで
}
で閉じられなかった場合は、まるごと空文字列になります。