TOP概要>CGレイヤ
 [基本文法]  [変数]  [システム変数]  [マクロ]  [CGレイヤ]  [タスク]  [入力]
■CGレイヤ


CGレイヤは無限に(メモリが許す限り)生成することが出来ます。


■■レイヤID


従来の2次元レイヤ構造を排除し、レイヤIDによる管理になりました。

例1:
	CG[ID="背景" Z=1 FILE="cg/bg.jpg"]

レイヤ生成時に、ID(名前)を付けることができます。
上記の例1では、「背景」というID(名前)のレイヤを生成しています。
IDが明らかに文字列であれば(数値表現でなければ)、
「”」ダブルクォーテーションを省略して、例2のように書けます。

例2:
	CG[ID=背景 Z=1 FILE=cg/bg.jpg]



■■優先度


レイヤには優先度という概念があり、優先度の値が大きいほど、手前に表示されます。
レイヤの優先度の設定はZキーワードで行います。

例3:
	CG[ID=背景 Z=10] // ←「背景」という名前のレイヤ優先度を 10 に設定.

もし、複数のレイヤで同じ優先度(Z値)のものが存在した場合、
そのレイヤ同士の重なり具合(優先度)は不確定となります。



■■複数レイヤ一括処理、従来仕様との互換


文字列(ID)による管理は、直感的に分かりやすくなる反面、
それだけだと、いろいろと不都合なこともあります。
例えば、雪の画像をレイヤ100枚分ロードして、降雪処理を行いたい場合、従来は、

例4:
	LOOP[SET=100]
		CG[NO=@_LC FILE=snow.png]
	LOOPEND[]

のように記述できましたが、IDの場合だと、

例5:
	LOOP[SET=100]
		CG[ID=@_LC FILE=snow.png] //←エラー.
	LOOPEND[]

文字列設定キーワードに数値変数は指定できない仕様のため、エラーとなって出来ません。

そこで、従来通り、NO キーワードを残し、

例6:(※例4と全く同じです)
	LOOP[SET=100]
		CG[NO=@_LC FILE=snow.png]
	LOOPEND[]

という従来の記述でも通るようにしました。

これにより、IDとNOの両方によるレイヤ管理が可能となったわけですが、
内部的には、NO値を文字列に変換し、IDの末尾にピリオドと一緒にくっつけているだけです。

例えば以下のような記述をした場合、

例7:
	CG[NO=10 FILE=btn1.bmp]

「NO=10」の部分は、内部で「.10」という文字列に変換されて、IDの末尾にくっつきます。
で、この場合IDの指定はないので、そのまま「.10」というIDのレイヤが生成されることとなります。

例8:
	CG[ID=chara NO=1 FILE=chara_player.bmp]

と、IDとNOの両方を指定した記述をすれば、内部で「.1」という文字列に変換され、
「chara」というIDの末尾にくっつき、「chara.1」というIDのレイヤが生成されます。


そして、従来の仕様の、レイヤ番号が優先度を兼ねていたメリットを継承するため、

例9:
	CG[NO=5 FILE=chara_player.bmp]

上の例9のように、NO指定のみのレイヤ生成の場合、
自動的に優先度も同じ値(上の場合は5)が設定されるようになっています。

つまり、例9は、

例10:
	CG[NO=5 Z=5 FILE=chara_player.bmp]

例10の記述をしたのと同じことになります。
もちろん、

例11:
	CG[NO=5 Z=8 FILE=chara_player.bmp]

上のように明示的にZ値を設定変更することもできます。
これで、従来の仕様とほぼ変わらない記述が可能になります。



■■レイヤセット機能


一見、レイヤに名前が付けられるようになったのと、
レイヤ優先度をリアルタイムに操作できるようになっただけで、
現状ではあまりメリットを感じられないかも知れません。

ですが、レイヤセット機能というのを利用することにより、
レイヤID管理にかなりの利便性が生まれてきます。

フォトショップのレイヤセット、もしくは
Windows のフォルダ構造を思い浮かべて頂ければ分かりやすいと思いますが、
例えば、フォルダの一括操作(描画モード変更、レイヤ削除)
フォルダ自体にマスクを設定したり、フォルダのスクリーンショットを取得することもできます。

例12:
	CG[ID=ABC/ Z=1 SX=640 SY=480]

という感じで、レイヤIDの最後に「/」を記述するとレイヤセット指定となり、この場合、
「ABC」という名前の 640x480 のサイズのレイヤセット(フォルダ)を生成します。

例13:
	CG[ID=ABC/CG1 FILE="cg1.png"]

生成した後、CG 命令を使って上のように記述すると、ABCフォルダの下に「CG1」というIDの
レイヤを生成することになります。

IDの指定の仕方も、フォルダのパス指定とほぼ同じで、
「/」「.」「:」などを利用でき、「./ABC/DEF/../GHI」とか、
「:/TEMP」(←「:」はルート指定になります)のように記述できます。

現在の YU-RIS では、ルートに「W0」というレイヤセットが用意されています。
起動時はカレントパスもその場所に設定されているため、
例えばレイヤセット指定をせずにIDを指定して、

	CG[ID=ABC FILE="ABC.BMP"]

のように記述すると、「W0」セット内に「ABC」レイヤが作られることになり、
「ABC」レイヤのフルパスは「:/W0/ABC」となります。

これを利用して、例えばスクリーンショット機能を利用できます。

	CGACT[COPY2=1 ID=:/W0/ ID2=TMP]

上のように記述すると、「W0」セット内にあるレイヤのスクリーンショットを、
レイヤ「TMP」にコピーします。
つまり、メインウィンドウに表示されている画面イメージを、TMPレイヤに
コピーできるという事になります。
これを応用すれば、ノベルなら「背景画面」「立ち絵」「メッセージウィンドウ」
「チップアイコン」それぞれにレイヤセットを生成し、
それぞれ独立したスクリーンショットを撮る事も可能です。



■■内部マスク指定と外部マスク指定


※時間がないのでひとまず走り書きです。すみません…。近いうちに追記します。

内部マスク指定と外部マスク指定の両方に対応するようになりました。

[内部マスク]→レイヤに自動的にかけられるマスク。透過付画像をロードした時など
[外部マスク]→従来のように、マスク画像を別レイヤにロードし、それとリンクさせる形式

近い将来、内部マスク←→外部マスクの切替機能などの機能が利用できるようになります。